40.1 MB
/srv/reproducible-results/rbuild-debian/r-b-build.1GGK21iX/b1/erlang_27.2.2+dfsg-1_armhf.changes vs.
/srv/reproducible-results/rbuild-debian/r-b-build.1GGK21iX/b2/erlang_27.2.2+dfsg-1_armhf.changes
2.98 KB
Files
    
Offset 4, 27 lines modifiedOffset 4, 27 lines modified
4 ·5a173a9429f13f58574560b49dbaeaee·7331424·debug·optional·erlang-base-dbgsym_27.2.2+dfsg-1_armhf.deb4 ·5a173a9429f13f58574560b49dbaeaee·7331424·debug·optional·erlang-base-dbgsym_27.2.2+dfsg-1_armhf.deb
5 ·f78c48ef65b1da02be1c7d8021dcbdcb·10856016·interpreters·optional·erlang-base_27.2.2+dfsg-1_armhf.deb5 ·f78c48ef65b1da02be1c7d8021dcbdcb·10856016·interpreters·optional·erlang-base_27.2.2+dfsg-1_armhf.deb
6 ·1e9aaa2c5cccdfcca2bc7a54b4b96251·41984·debug·optional·erlang-common-test-dbgsym_27.2.2+dfsg-1_armhf.deb6 ·1e9aaa2c5cccdfcca2bc7a54b4b96251·41984·debug·optional·erlang-common-test-dbgsym_27.2.2+dfsg-1_armhf.deb
7 ·da85c689baa701c83e8401ddf5fd8ebb·1310636·interpreters·optional·erlang-common-test_27.2.2+dfsg-1_armhf.deb7 ·da85c689baa701c83e8401ddf5fd8ebb·1310636·interpreters·optional·erlang-common-test_27.2.2+dfsg-1_armhf.deb
8 ·49d027bdae58565d0d3cac9ea2d45242·121048·debug·optional·erlang-crypto-dbgsym_27.2.2+dfsg-1_armhf.deb8 ·49d027bdae58565d0d3cac9ea2d45242·121048·debug·optional·erlang-crypto-dbgsym_27.2.2+dfsg-1_armhf.deb
9 ·98746d86b5e5e379a0797363ad2e96e8·175060·interpreters·optional·erlang-crypto_27.2.2+dfsg-1_armhf.deb9 ·98746d86b5e5e379a0797363ad2e96e8·175060·interpreters·optional·erlang-crypto_27.2.2+dfsg-1_armhf.deb
10 ·ee6b766919a19d4d9f6e410e273069ad·479200·interpreters·optional·erlang-debugger_27.2.2+dfsg-1_armhf.deb10 ·ee6b766919a19d4d9f6e410e273069ad·479200·interpreters·optional·erlang-debugger_27.2.2+dfsg-1_armhf.deb
11 ·36e86e720bec77e69b4f1bb471c4453b·287512·interpreters·optional·erlang-dev_27.2.2+dfsg-1_armhf.deb11 ·de22f64f40e630503709aed59416de57·287484·interpreters·optional·erlang-dev_27.2.2+dfsg-1_armhf.deb
12 ·62bc4f2ac47f424a567e977cdbaddeb5·78620·debug·optional·erlang-dialyzer-dbgsym_27.2.2+dfsg-1_armhf.deb12 ·62bc4f2ac47f424a567e977cdbaddeb5·78620·debug·optional·erlang-dialyzer-dbgsym_27.2.2+dfsg-1_armhf.deb
13 ·df94b069cf74db6ef1427b92f3866544·1073224·interpreters·optional·erlang-dialyzer_27.2.2+dfsg-1_armhf.deb13 ·df94b069cf74db6ef1427b92f3866544·1073224·interpreters·optional·erlang-dialyzer_27.2.2+dfsg-1_armhf.deb
14 ·681e953e5e614bee54b40d5f2b2f711a·812176·interpreters·optional·erlang-diameter_27.2.2+dfsg-1_armhf.deb14 ·681e953e5e614bee54b40d5f2b2f711a·812176·interpreters·optional·erlang-diameter_27.2.2+dfsg-1_armhf.deb
15 ·78f5eb27823a8fb085edf0ac7d861dae·16765604·doc·optional·erlang-doc_27.2.2+dfsg-1_all.deb15 ·1b7af7f884692f8a9a897bd66a69dccd·16768908·doc·optional·erlang-doc_27.2.2+dfsg-1_all.deb
16 ·dcb6ee4fcc0bb0b8ae6396760c640d5c·459504·interpreters·optional·erlang-edoc_27.2.2+dfsg-1_armhf.deb16 ·dcb6ee4fcc0bb0b8ae6396760c640d5c·459504·interpreters·optional·erlang-edoc_27.2.2+dfsg-1_armhf.deb
17 ·43601b44f4cca4fec0845920c637be7c·137992·interpreters·optional·erlang-eldap_27.2.2+dfsg-1_armhf.deb17 ·43601b44f4cca4fec0845920c637be7c·137992·interpreters·optional·erlang-eldap_27.2.2+dfsg-1_armhf.deb
18 ·613dbd393e5b633ef0702cff14483397·184996·interpreters·optional·erlang-et_27.2.2+dfsg-1_armhf.deb18 ·613dbd393e5b633ef0702cff14483397·184996·interpreters·optional·erlang-et_27.2.2+dfsg-1_armhf.deb
19 ·a9cdc6cedf4da73984cc1cafb935badd·171720·interpreters·optional·erlang-eunit_27.2.2+dfsg-1_armhf.deb19 ·a9cdc6cedf4da73984cc1cafb935badd·171720·interpreters·optional·erlang-eunit_27.2.2+dfsg-1_armhf.deb
20 ·7e8fc3df14f92a680b82d8a103c4e4d3·963400·interpreters·optional·erlang-examples_27.2.2+dfsg-1_all.deb20 ·7e8fc3df14f92a680b82d8a103c4e4d3·963400·interpreters·optional·erlang-examples_27.2.2+dfsg-1_all.deb
21 ·10bb05d887132f6f7cf058cf492020b4·106188·interpreters·optional·erlang-ftp_27.2.2+dfsg-1_armhf.deb21 ·10bb05d887132f6f7cf058cf492020b4·106188·interpreters·optional·erlang-ftp_27.2.2+dfsg-1_armhf.deb
22 ·c8e45ae006e2cc0195b906d14b53e90f·671144·interpreters·optional·erlang-inets_27.2.2+dfsg-1_armhf.deb22 ·c8e45ae006e2cc0195b906d14b53e90f·671144·interpreters·optional·erlang-inets_27.2.2+dfsg-1_armhf.deb
23 ·58372724df75c4f39168bf90238b65a0·113476·interpreters·optional·erlang-jinterface_27.2.2+dfsg-1_all.deb23 ·a7def5c6ea3fa316ff5b373f1aaf304c·113540·interpreters·optional·erlang-jinterface_27.2.2+dfsg-1_all.deb
24 ·6ea71a5c4594fdb24af5e433413e332a·64856·debug·optional·erlang-megaco-dbgsym_27.2.2+dfsg-1_armhf.deb24 ·6ea71a5c4594fdb24af5e433413e332a·64856·debug·optional·erlang-megaco-dbgsym_27.2.2+dfsg-1_armhf.deb
25 ·e020d440fcc356b72991a165af026718·3686284·interpreters·optional·erlang-megaco_27.2.2+dfsg-1_armhf.deb25 ·e020d440fcc356b72991a165af026718·3686284·interpreters·optional·erlang-megaco_27.2.2+dfsg-1_armhf.deb
26 ·6a72ed9eaffdc0e32b2e034bfbe3eeab·897752·interpreters·optional·erlang-mnesia_27.2.2+dfsg-1_armhf.deb26 ·6a72ed9eaffdc0e32b2e034bfbe3eeab·897752·interpreters·optional·erlang-mnesia_27.2.2+dfsg-1_armhf.deb
27 ·654ce952c7b04555e82f6dbfa98a8849·93140·interpreters·optional·erlang-mode_27.2.2+dfsg-1_all.deb27 ·654ce952c7b04555e82f6dbfa98a8849·93140·interpreters·optional·erlang-mode_27.2.2+dfsg-1_all.deb
28 ·6929047d1e833f3219f7393d94c70629·14768·interpreters·optional·erlang-nox_27.2.2+dfsg-1_all.deb28 ·6929047d1e833f3219f7393d94c70629·14768·interpreters·optional·erlang-nox_27.2.2+dfsg-1_all.deb
29 ·010dc9368b4808adf6df48f601255bf4·1028416·interpreters·optional·erlang-observer_27.2.2+dfsg-1_armhf.deb29 ·010dc9368b4808adf6df48f601255bf4·1028416·interpreters·optional·erlang-observer_27.2.2+dfsg-1_armhf.deb
30 ·47b1643e640b0ba851b726b52dcc5b33·59984·debug·optional·erlang-odbc-dbgsym_27.2.2+dfsg-1_armhf.deb30 ·47b1643e640b0ba851b726b52dcc5b33·59984·debug·optional·erlang-odbc-dbgsym_27.2.2+dfsg-1_armhf.deb
18.8 KB
erlang-dev_27.2.2+dfsg-1_armhf.deb
367 B
file list
    
Offset 1, 3 lines modifiedOffset 1, 3 lines modified
1 -rw-r--r--···0········0········0········4·2025-02-10·08:38:21.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-02-10·08:38:21.000000·debian-binary
2 -rw-r--r--···0········0········0·····3644·2025-02-10·08:38:21.000000·control.tar.xz2 -rw-r--r--···0········0········0·····3644·2025-02-10·08:38:21.000000·control.tar.xz
3 -rw-r--r--···0········0········0···283676·2025-02-10·08:38:21.000000·data.tar.xz3 -rw-r--r--···0········0········0···283648·2025-02-10·08:38:21.000000·data.tar.xz
98.0 B
control.tar.xz
70.0 B
control.tar
48.0 B
./md5sums
30.0 B
./md5sums
Files differ
18.3 KB
data.tar.xz
18.3 KB
data.tar
18.3 KB
./usr/bin/erlang-depends
    
Offset 7, 308 lines modifiedOffset 7, 308 lines modified
7 -define(VERSION,·"1:27.2.2+dfsg").7 -define(VERSION,·"1:27.2.2+dfsg").
8 -define(ABI_VERSION,·"17.0").8 -define(ABI_VERSION,·"17.0").
9 -define(PCRE_VERSION,·"8.44").9 -define(PCRE_VERSION,·"8.44").
  
10 %·Since·all·packages·required·built·application·to·run·may·be·unavailable10 %·Since·all·packages·required·built·application·to·run·may·be·unavailable
11 %·on·build·stage·it's·necessary·to·list·all·module-package·relationships11 %·on·build·stage·it's·necessary·to·list·all·module-package·relationships
12 %·explicitly:12 %·explicitly:
13 -define(MODULES,·[{"win32reg",·"erlang-base"},13 -define(MODULES,·[{"beam_opcodes",·"erlang-base"},
14 {"erl_stdlib_errors",·"erlang-base"}, 
15 {"rand",·"erlang-base"}, 
16 {"dets_v9",·"erlang-base"}, 
17 {"shell_default",·"erlang-base"}, 
18 {"re",·"erlang-base"}, 
19 {"timer",·"erlang-base"}, 
20 {"json",·"erlang-base"}, 
21 {"io_lib_pretty",·"erlang-base"}, 
22 {"random",·"erlang-base"}, 
23 {"erl_compile",·"erlang-base"}, 
24 {"dict",·"erlang-base"}, 
25 {"maps",·"erlang-base"}, 
26 {"digraph",·"erlang-base"}, 
27 {"sys",·"erlang-base"}, 
28 {"gb_trees",·"erlang-base"}, 
29 {"gen_event",·"erlang-base"}, 
30 {"io_lib_fread",·"erlang-base"}, 
31 {"ms_transform",·"erlang-base"}, 
32 {"sofs",·"erlang-base"}, 
33 {"proc_lib",·"erlang-base"}, 
34 {"digraph_utils",·"erlang-base"}, 
35 {"erl_eval",·"erlang-base"}, 
36 {"lists",·"erlang-base"}, 
37 {"error_logger_tty_h",·"erlang-base"}, 
38 {"queue",·"erlang-base"}, 
39 {"erl_anno",·"erlang-base"}, 
40 {"log_mf_h",·"erlang-base"}, 
41 {"gen",·"erlang-base"}, 
42 {"gb_sets",·"erlang-base"}, 
43 {"unicode",·"erlang-base"}, 
44 {"shell_docs_markdown",·"erlang-base"}, 
45 {"zip",·"erlang-base"}, 
46 {"io",·"erlang-base"}, 
47 {"string",·"erlang-base"}, 
48 {"edlin",·"erlang-base"}, 
49 {"binary",·"erlang-base"}, 
50 {"array",·"erlang-base"}, 
51 {"io_lib",·"erlang-base"}, 
52 {"erl_internal",·"erlang-base"}, 
53 {"uri_string",·"erlang-base"}, 
54 {"dets_utils",·"erlang-base"}, 
55 {"gen_statem",·"erlang-base"}, 
56 {"erl_abstract_code",·"erlang-base"}, 
57 {"erl_scan",·"erlang-base"}, 
58 {"peer",·"erlang-base"}, 
59 {"edlin_key",·"erlang-base"}, 
60 {"edlin_context",·"erlang-base"}, 
61 {"erl_tar",·"erlang-base"}, 
62 {"shell_docs",·"erlang-base"}, 
63 {"dets",·"erlang-base"}, 
64 {"erl_parse",·"erlang-base"}, 
65 {"erl_error",·"erlang-base"}, 
66 {"beam_lib",·"erlang-base"}, 
67 {"epp",·"erlang-base"},14 {"core_pp",·"erlang-base"},
68 {"gen_fsm",·"erlang-base"}, 
69 {"dets_sup",·"erlang-base"}, 
70 {"ordsets",·"erlang-base"}, 
71 {"erl_pp",·"erlang-base"}, 
72 {"edlin_type_suggestion",·"erlang-base"}, 
73 {"calendar",·"erlang-base"}, 
74 {"error_logger_file_h",·"erlang-base"}, 
75 {"unicode_util",·"erlang-base"}, 
76 {"c",·"erlang-base"}, 
77 {"eval_bits",·"erlang-base"}, 
78 {"argparse",·"erlang-base"}, 
79 {"io_lib_format",·"erlang-base"}, 
80 {"file_sorter",·"erlang-base"}, 
81 {"filelib",·"erlang-base"}, 
82 {"edlin_expand",·"erlang-base"}, 
83 {"erl_features",·"erlang-base"}, 
84 {"filename",·"erlang-base"}, 
85 {"erl_bits",·"erlang-base"}, 
86 {"otp_internal",·"erlang-base"}, 
87 {"gen_server",·"erlang-base"}, 
88 {"supervisor",·"erlang-base"}, 
89 {"proplists",·"erlang-base"}, 
90 {"qlc_pt",·"erlang-base"}, 
91 {"sets",·"erlang-base"}, 
92 {"shell",·"erlang-base"}, 
93 {"escript",·"erlang-base"}, 
94 {"erl_expand_records",·"erlang-base"}, 
95 {"dets_server",·"erlang-base"}, 
96 {"erl_lint",·"erlang-base"}, 
97 {"qlc",·"erlang-base"}, 
98 {"slave",·"erlang-base"}, 
99 {"math",·"erlang-base"}, 
100 {"erl_posix_msg",·"erlang-base"}, 
101 {"supervisor_bridge",·"erlang-base"}, 
102 {"base64",·"erlang-base"}, 
103 {"pool",·"erlang-base"}, 
104 {"ets",·"erlang-base"}, 
105 {"orddict",·"erlang-base"}, 
106 {"systools_relup",·"erlang-base"}, 
107 {"release_handler_1",·"erlang-base"}, 
108 {"sasl_report_file_h",·"erlang-base"}, 
109 {"release_handler",·"erlang-base"}, 
110 {"systools_rc",·"erlang-base"}, 
111 {"sasl_report",·"erlang-base"}, 
112 {"alarm_handler",·"erlang-base"}, 
113 {"misc_supp",·"erlang-base"}, 
114 {"rb",·"erlang-base"}, 
115 {"rb_format_supp",·"erlang-base"}, 
116 {"systools",·"erlang-base"}, 
117 {"sasl",·"erlang-base"}, 
118 {"systools_lib",·"erlang-base"}, 
119 {"format_lib_supp",·"erlang-base"}, 
120 {"systools_make",·"erlang-base"}, 
121 {"sasl_report_tty_h",·"erlang-base"}, 
122 {"erlsrv",·"erlang-base"}, 
123 {"target_system",·"erlang-base"}, 
124 {"beam_opcodes",·"erlang-base"}, 
125 {"core_parse",·"erlang-base"}, 
126 {"beam_ssa_lint",·"erlang-base"}, 
127 {"beam_utils",·"erlang-base"}, 
128 {"beam_ssa_pp",·"erlang-base"}, 
129 {"sys_coverage",·"erlang-base"}, 
130 {"beam_bounds",·"erlang-base"},15 {"beam_bounds",·"erlang-base"},
 16 {"cerl_clauses",·"erlang-base"},
 17 {"beam_ssa_ss",·"erlang-base"},
Max diff block lines reached; 14077/18664 bytes (75.42%) of diff not shown.
40.0 MB
erlang-doc_27.2.2+dfsg-1_all.deb
452 B
file list
    
Offset 1, 3 lines modifiedOffset 1, 3 lines modified
1 -rw-r--r--···0········0········0········4·2025-02-10·08:38:21.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-02-10·08:38:21.000000·debian-binary
2 -rw-r--r--···0········0········0····39572·2025-02-10·08:38:21.000000·control.tar.xz2 -rw-r--r--···0········0········0····39604·2025-02-10·08:38:21.000000·control.tar.xz
3 -rw-r--r--···0········0········0·16725840·2025-02-10·08:38:21.000000·data.tar.xz3 -rw-r--r--···0········0········0·16729112·2025-02-10·08:38:21.000000·data.tar.xz
7.3 KB
control.tar.xz
7.28 KB
control.tar
475 B
./control
    
Offset 1, 13 lines modifiedOffset 1, 13 lines modified
1 Package:·erlang-doc1 Package:·erlang-doc
2 Source:·erlang2 Source:·erlang
3 Version:·1:27.2.2+dfsg-13 Version:·1:27.2.2+dfsg-1
4 Architecture:·all4 Architecture:·all
5 Maintainer:·Debian·Erlang·Packagers·<pkg-erlang-devel@lists.alioth.debian.org>5 Maintainer:·Debian·Erlang·Packagers·<pkg-erlang-devel@lists.alioth.debian.org>
6 Installed-Size:·958506 Installed-Size:·95900
7 Depends:·libjs-jquery,·libjs-jquery-ui7 Depends:·libjs-jquery,·libjs-jquery-ui
8 Suggests:·erlang:any8 Suggests:·erlang:any
9 Conflicts:·erlang-base:any·(<<·1:13.b.4),·erlang-base-hipe:any,·erlang-doc-html9 Conflicts:·erlang-base:any·(<<·1:13.b.4),·erlang-base-hipe:any,·erlang-doc-html
10 Replaces:·erlang-doc-html10 Replaces:·erlang-doc-html
11 Provides:·erlang-doc-html11 Provides:·erlang-doc-html
12 Section:·doc12 Section:·doc
13 Priority:·optional13 Priority:·optional
6.79 KB
./md5sums
30.0 B
./md5sums
Files differ
6.74 KB
line order
Max HTML report size reached
39.9 MB
data.tar.xz
39.9 MB
data.tar
103 KB
file list
    
Offset 66, 25 lines modifiedOffset 66, 25 lines modified
66 -rw-r--r--···0·root·········(0)·root·········(0)·····4219·2025-02-06·11:55:14.000000·./usr/share/doc/erlang-doc/README.md66 -rw-r--r--···0·root·········(0)·root·········(0)·····4219·2025-02-06·11:55:14.000000·./usr/share/doc/erlang-doc/README.md
67 -rw-r--r--···0·root·········(0)·root·········(0)·····4664·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/changelog.Debian.gz67 -rw-r--r--···0·root·········(0)·root·········(0)·····4664·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/changelog.Debian.gz
68 -rw-r--r--···0·root·········(0)·root·········(0)·····8970·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/copyright68 -rw-r--r--···0·root·········(0)·root·········(0)·····8970·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/copyright
69 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/69 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/
70 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/70 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/
71 -rw-r--r--···0·root·········(0)·root·········(0)·····1590·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/.build71 -rw-r--r--···0·root·········(0)·root·········(0)·····1590·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/.build
72 -rw-r--r--···0·root·········(0)·root·········(0)·····5306·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/404.html72 -rw-r--r--···0·root·········(0)·root·········(0)·····5306·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/404.html
73 -rw-r--r--···0·root·········(0)·root·········(0)·····6042·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/asn1.html73 -rw-r--r--···0·root·········(0)·root·········(0)·····6324·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/asn1.html
74 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/assets/74 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/assets/
75 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/assets/logo.png75 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/assets/logo.png
76 -rw-r--r--···0·root·········(0)·root·········(0)·····6068·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/common_test.html76 -rw-r--r--···0·root·········(0)·root·········(0)·····6359·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/common_test.html
77 -rw-r--r--···0·root·········(0)·root·········(0)·····6077·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/compiler.html77 -rw-r--r--···0·root·········(0)·root·········(0)·····6349·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/compiler.html
78 -rw-r--r--···0·root·········(0)·root·········(0)·····6054·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/crypto.html78 -rw-r--r--···0·root·········(0)·root·········(0)·····6341·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/crypto.html
79 -rw-r--r--···0·root·········(0)·root·········(0)·····6057·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/debugger.html79 -rw-r--r--···0·root·········(0)·root·········(0)·····6343·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/debugger.html
80 -rw-r--r--···0·root·········(0)·root·········(0)····28515·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/deprecations.html80 -rw-r--r--···0·root·········(0)·root·········(0)····28515·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/deprecations.html
81 -rw-r--r--···0·root·········(0)·root·········(0)·····6138·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/design_principles.html81 -rw-r--r--···0·root·········(0)·root·········(0)·····6419·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/design_principles.html
82 -rw-r--r--···0·root·········(0)·root·········(0)·····6053·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dialyzer.html82 -rw-r--r--···0·root·········(0)·root·········(0)·····6338·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dialyzer.html
83 -rw-r--r--···0·root·········(0)·root·········(0)·····6060·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/diameter.html83 -rw-r--r--···0·root·········(0)·root·········(0)·····6349·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/diameter.html
84 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/84 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/
85 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/handlebars.runtime-CFQAK6SD.js85 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/handlebars.runtime-CFQAK6SD.js
86 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/handlebars.templates-K7URE6B4.js86 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/handlebars.templates-K7URE6B4.js
87 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/html-55NP3CS6.js87 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/html-55NP3CS6.js
88 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/html-erlang-WGRVP7UZ.css88 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/html-erlang-WGRVP7UZ.css
89 -rw-r--r--···0·root·········(0)·root·········(0)····17732·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/inconsolata-latin-400-normal-OXLHDACS.woff289 -rw-r--r--···0·root·········(0)·root·········(0)····17732·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/inconsolata-latin-400-normal-OXLHDACS.woff2
90 -rw-r--r--···0·root·········(0)·root·········(0)····17976·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/inconsolata-latin-700-normal-S55P5GAG.woff290 -rw-r--r--···0·root·········(0)·root·········(0)····17976·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/inconsolata-latin-700-normal-S55P5GAG.woff2
Offset 95, 57 lines modifiedOffset 95, 57 lines modified
95 -rw-r--r--···0·root·········(0)·root·········(0)····23236·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-300-normal-YUMVEFOL.woff295 -rw-r--r--···0·root·········(0)·root·········(0)····23236·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-300-normal-YUMVEFOL.woff2
96 -rw-r--r--···0·root·········(0)·root·········(0)····23580·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-400-normal-W7754I4D.woff296 -rw-r--r--···0·root·········(0)·root·········(0)····23580·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-400-normal-W7754I4D.woff2
97 -rw-r--r--···0·root·········(0)·root·········(0)····23040·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-700-normal-2XVSBPG4.woff297 -rw-r--r--···0·root·········(0)·root·········(0)····23040·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-700-normal-2XVSBPG4.woff2
98 -rw-r--r--···0·root·········(0)·root·········(0)·····5624·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-ext-300-normal-VPGGJKJL.woff298 -rw-r--r--···0·root·········(0)·root·········(0)·····5624·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
99 -rw-r--r--···0·root·········(0)·root·········(0)·····5472·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-ext-400-normal-N27NCBWW.woff299 -rw-r--r--···0·root·········(0)·root·········(0)·····5472·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-ext-400-normal-N27NCBWW.woff2
100 -rw-r--r--···0·root·········(0)·root·········(0)·····5368·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2100 -rw-r--r--···0·root·········(0)·root·········(0)·····5368·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
101 -rw-r--r--···0·root·········(0)·root·········(0)·····1956·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/remixicon-NKANDIL5.woff2101 -rw-r--r--···0·root·········(0)·root·········(0)·····1956·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/remixicon-NKANDIL5.woff2
102 -rw-r--r--···0·root·········(0)·root·········(0)···114359·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/search_data-1CD15961.js102 -rw-r--r--···0·root·········(0)·root·········(0)···118336·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/search_data-858E7357.js
103 -rw-r--r--···0·root·········(0)·root·········(0)·····5081·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/sidebar_items-712764E3.js103 -rw-r--r--···0·root·········(0)·root·········(0)·····8968·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/dist/sidebar_items-FA8819B1.js
104 -rw-r--r--···0·root·········(0)·root·········(0)·····5840·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/edoc.html104 -rw-r--r--···0·root·········(0)·root·········(0)·····6037·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/edoc.html
105 -rw-r--r--···0·root·········(0)·root·········(0)·····6124·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/efficiency_guide.html105 -rw-r--r--···0·root·········(0)·root·········(0)·····6391·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/efficiency_guide.html
106 -rw-r--r--···0·root·········(0)·root·········(0)·····6069·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/eldap.html106 -rw-r--r--···0·root·········(0)·root·········(0)·····6365·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/eldap.html
107 -rw-r--r--···0·root·········(0)·root·········(0)·····6111·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/embedded.html107 -rw-r--r--···0·root·········(0)·root·········(0)·····6376·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/embedded.html
108 -rw-r--r--···0·root·········(0)·root·········(0)·····6074·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/erl_interface.html108 -rw-r--r--···0·root·········(0)·root·········(0)·····6365·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/erl_interface.html
109 -rw-r--r--···0·root·········(0)·root·········(0)·····6041·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/erts.html109 -rw-r--r--···0·root·········(0)·root·········(0)·····6326·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/erts.html
110 -rw-r--r--···0·root·········(0)·root·········(0)·····6041·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/et.html110 -rw-r--r--···0·root·········(0)·root·········(0)·····6327·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/et.html
111 -rw-r--r--···0·root·········(0)·root·········(0)·····6053·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/eunit.html111 -rw-r--r--···0·root·········(0)·root·········(0)·····6343·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/eunit.html
112 -rw-r--r--···0·root·········(0)·root·········(0)·····6054·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/ftp.html112 -rw-r--r--···0·root·········(0)·root·········(0)·····6344·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/ftp.html
113 -rw-r--r--···0·root·········(0)·root·········(0)·····6142·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/getting_started.html113 -rw-r--r--···0·root·········(0)·root·········(0)·····6419·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/getting_started.html
114 -rw-r--r--···0·root·········(0)·root·········(0)······262·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/index.html114 -rw-r--r--···0·root·········(0)·root·········(0)······262·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/index.html
115 -rw-r--r--···0·root·········(0)·root·········(0)·····6052·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/inets.html115 -rw-r--r--···0·root·········(0)·root·········(0)·····6340·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/inets.html
116 -rw-r--r--···0·root·········(0)·root·········(0)·····6164·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/installation_guide.html116 -rw-r--r--···0·root·········(0)·root·········(0)·····6357·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/installation_guide.html
117 -rw-r--r--···0·root·········(0)·root·········(0)·····6069·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/jinterface.html117 -rw-r--r--···0·root·········(0)·root·········(0)·····6358·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/jinterface.html
118 -rw-r--r--···0·root·········(0)·root·········(0)·····6041·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/kernel.html118 -rw-r--r--···0·root·········(0)·root·········(0)·····6322·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/kernel.html
119 -rw-r--r--···0·root·········(0)·root·········(0)···191560·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/man_index.html119 -rw-r--r--···0·root·········(0)·root·········(0)···191560·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/man_index.html
120 -rw-r--r--···0·root·········(0)·root·········(0)·····6068·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/megaco.html120 -rw-r--r--···0·root·········(0)·root·········(0)·····6363·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/megaco.html
121 -rw-r--r--···0·root·········(0)·root·········(0)·····6049·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/mnesia.html121 -rw-r--r--···0·root·········(0)·root·········(0)·····6332·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/mnesia.html
122 -rw-r--r--···0·root·········(0)·root·········(0)·····6056·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/observer.html122 -rw-r--r--···0·root·········(0)·root·········(0)·····6342·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/observer.html
123 -rw-r--r--···0·root·········(0)·root·········(0)·····6043·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/odbc.html123 -rw-r--r--···0·root·········(0)·root·········(0)·····6329·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/odbc.html
124 -rw-r--r--···0·root·········(0)·root·········(0)·····6040·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/os_mon.html124 -rw-r--r--···0·root·········(0)·root·········(0)·····6322·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/os_mon.html
125 -rw-r--r--···0·root·········(0)·root·········(0)·····6069·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/parsetools.html125 -rw-r--r--···0·root·········(0)·root·········(0)·····6360·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/parsetools.html
126 -rw-r--r--···0·root·········(0)·root·········(0)·····6145·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/programming_examples.html126 -rw-r--r--···0·root·········(0)·root·········(0)·····6425·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/programming_examples.html
127 -rw-r--r--···0·root·········(0)·root·········(0)·····6065·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/public_key.html127 -rw-r--r--···0·root·········(0)·root·········(0)·····6352·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/public_key.html
128 -rw-r--r--···0·root·········(0)·root·········(0)·····8604·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/readme.html128 -rw-r--r--···0·root·········(0)·root·········(0)·····8604·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/readme.html
129 -rw-r--r--···0·root·········(0)·root·········(0)·····6138·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/reference_manual.html129 -rw-r--r--···0·root·········(0)·root·········(0)·····6417·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/reference_manual.html
130 -rw-r--r--···0·root·········(0)·root·········(0)·····6075·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/reltool.html130 -rw-r--r--···0·root·········(0)·root·········(0)·····6372·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/reltool.html
131 -rw-r--r--···0·root·········(0)·root·········(0)····28237·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/removed.html131 -rw-r--r--···0·root·········(0)·root·········(0)····28237·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/removed.html
132 -rw-r--r--···0·root·········(0)·root·········(0)·····6091·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/runtime_tools.html132 -rw-r--r--···0·root·········(0)·root·········(0)·····6392·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/runtime_tools.html
133 -rw-r--r--···0·root·········(0)·root·········(0)·····6040·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/sasl.html133 -rw-r--r--···0·root·········(0)·root·········(0)·····6324·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/sasl.html
134 -rw-r--r--···0·root·········(0)·root·········(0)·····9571·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/scheduled_for_removal.html134 -rw-r--r--···0·root·········(0)·root·········(0)·····9571·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/scheduled_for_removal.html
135 -rw-r--r--···0·root·········(0)·root·········(0)·····5290·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/search.html135 -rw-r--r--···0·root·········(0)·root·········(0)·····5290·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/search.html
136 -rw-r--r--···0·root·········(0)·root·········(0)·····6034·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/snmp.html136 -rw-r--r--···0·root·········(0)·root·········(0)·····6317·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/snmp.html
137 -rw-r--r--···0·root·········(0)·root·········(0)·····6044·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/ssh.html137 -rw-r--r--···0·root·········(0)·root·········(0)·····6331·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/ssh.html
138 -rw-r--r--···0·root·········(0)·root·········(0)·····6033·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/ssl.html138 -rw-r--r--···0·root·········(0)·root·········(0)·····6313·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/ssl.html
139 -rw-r--r--···0·root·········(0)·root·········(0)·····6042·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/stdlib.html139 -rw-r--r--···0·root·········(0)·root·········(0)·····6326·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/stdlib.html
140 -rw-r--r--···0·root·········(0)·root·········(0)·····6085·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/syntax_tools.html140 -rw-r--r--···0·root·········(0)·root·········(0)·····6384·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/syntax_tools.html
141 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/141 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/
142 -rw-r--r--···0·root·········(0)·root·········(0)·····2286·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/.build142 -rw-r--r--···0·root·········(0)·root·········(0)·····2286·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/.build
143 -rw-r--r--···0·root·········(0)·root·········(0)·····5524·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/404.html143 -rw-r--r--···0·root·········(0)·root·········(0)·····5524·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/404.html
144 -rw-r--r--···0·root·········(0)·root·········(0)···654389·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/Erlang·System·Documentation.epub144 -rw-r--r--···0·root·········(0)·root·········(0)···654423·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/Erlang·System·Documentation.epub
145 -rw-r--r--···0·root·········(0)·root·········(0)····53392·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/applications.html145 -rw-r--r--···0·root·········(0)·root·········(0)····53392·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/applications.html
146 -rw-r--r--···0·root·········(0)·root·········(0)····97333·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/appup_cookbook.html146 -rw-r--r--···0·root·········(0)·root·········(0)····97333·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/appup_cookbook.html
147 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/147 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/
148 -rw-r--r--···0·root·········(0)·root·········(0)·····7982·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/ballpoint-pen.svg148 -rw-r--r--···0·root·········(0)·root·········(0)·····7982·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/ballpoint-pen.svg
149 -rw-r--r--···0·root·········(0)·root·········(0)·····2284·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist1.gif149 -rw-r--r--···0·root·········(0)·root·········(0)·····2284·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist1.gif
150 -rw-r--r--···0·root·········(0)·root·········(0)·····5214·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist2.gif150 -rw-r--r--···0·root·········(0)·root·········(0)·····5214·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist2.gif
151 -rw-r--r--···0·root·········(0)·root·········(0)·····5007·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist3.gif151 -rw-r--r--···0·root·········(0)·root·········(0)·····5007·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist3.gif
Offset 244, 21 lines modifiedOffset 244, 21 lines modified
244 -rw-r--r--···0·root·········(0)·root·········(0)····12903·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/system_limits.html244 -rw-r--r--···0·root·········(0)·root·········(0)····12903·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/system_limits.html
245 -rw-r--r--···0·root·········(0)·root·········(0)····18043·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/system_principles.html245 -rw-r--r--···0·root·········(0)·root·········(0)····18043·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/system_principles.html
246 -rw-r--r--···0·root·········(0)·root·········(0)····51894·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/tablesdatabases.html246 -rw-r--r--···0·root·········(0)·root·········(0)····51894·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/tablesdatabases.html
247 -rw-r--r--···0·root·········(0)·root·········(0)·····7744·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/tutorial.html247 -rw-r--r--···0·root·········(0)·root·········(0)·····7744·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/tutorial.html
248 -rw-r--r--···0·root·········(0)·root·········(0)····58860·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/typespec.html248 -rw-r--r--···0·root·········(0)·root·········(0)····58860·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/typespec.html
249 -rw-r--r--···0·root·········(0)·root·········(0)····10290·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/upgrade.html249 -rw-r--r--···0·root·········(0)·root·········(0)····10290·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/upgrade.html
250 -rw-r--r--···0·root·········(0)·root·········(0)····23546·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/versions.html250 -rw-r--r--···0·root·········(0)·root·········(0)····23546·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system/versions.html
251 -rw-r--r--···0·root·········(0)·root·········(0)·····6136·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system_principles.html251 -rw-r--r--···0·root·········(0)·root·········(0)·····6412·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/system_principles.html
252 -rw-r--r--···0·root·········(0)·root·········(0)·····6032·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/tftp.html252 -rw-r--r--···0·root·········(0)·root·········(0)·····6311·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/tftp.html
253 -rw-r--r--···0·root·········(0)·root·········(0)·····6067·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/tools.html253 -rw-r--r--···0·root·········(0)·root·········(0)·····6365·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/tools.html
254 -rw-r--r--···0·root·········(0)·root·········(0)·····6123·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/tutorial.html254 -rw-r--r--···0·root·········(0)·root·········(0)·····6382·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/tutorial.html
255 -rw-r--r--···0·root·········(0)·root·········(0)····26312·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/upcoming_incompatibilities.html255 -rw-r--r--···0·root·········(0)·root·········(0)····26397·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/upcoming_incompatibilities.html
256 -rw-r--r--···0·root·········(0)·root·········(0)·····6032·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/wx.html256 -rw-r--r--···0·root·········(0)·root·········(0)·····6310·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/wx.html
257 -rw-r--r--···0·root·········(0)·root·········(0)·····6044·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/xmerl.html257 -rw-r--r--···0·root·········(0)·root·········(0)·····6324·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/doc/xmerl.html
258 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/258 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/
259 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/259 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/
260 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/260 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/
261 -rw-r--r--···0·root·········(0)·root·········(0)·····2019·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/.build261 -rw-r--r--···0·root·········(0)·root·········(0)·····2019·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/.build
262 -rw-r--r--···0·root·········(0)·root·········(0)·····5775·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/404.html262 -rw-r--r--···0·root·········(0)·root·········(0)·····5775·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/404.html
263 -rw-r--r--···0·root·········(0)·root·········(0)····51149·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/absform.html263 -rw-r--r--···0·root·········(0)·root·········(0)····51149·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/absform.html
264 -rw-r--r--···0·root·········(0)·root·········(0)····10169·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/alt_disco.html264 -rw-r--r--···0·root·········(0)·root·········(0)····10169·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/alt_disco.html
Offset 351, 15 lines modifiedOffset 351, 15 lines modified
351 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/351 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/
352 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/352 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/
353 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/353 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/
354 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/354 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/
355 -rw-r--r--···0·root·········(0)·root·········(0)·····1060·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/.build355 -rw-r--r--···0·root·········(0)·root·········(0)·····1060·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/.build
356 -rw-r--r--···0·root·········(0)·root·········(0)·····5886·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/404.html356 -rw-r--r--···0·root·········(0)·root·········(0)·····5886·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/404.html
357 -rw-r--r--···0·root·········(0)·root·········(0)·····6566·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/api-reference.html357 -rw-r--r--···0·root·········(0)·root·········(0)·····6566·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/api-reference.html
358 -rw-r--r--···0·root·········(0)·root·········(0)····94596·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1.epub358 -rw-r--r--···0·root·········(0)·root·········(0)····94592·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1.epub
359 -rw-r--r--···0·root·········(0)·root·········(0)···134296·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_getting_started.html359 -rw-r--r--···0·root·········(0)·root·········(0)···134296·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_getting_started.html
360 -rw-r--r--···0·root·········(0)·root·········(0)·····9204·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_introduction.html360 -rw-r--r--···0·root·········(0)·root·········(0)·····9204·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_introduction.html
361 -rw-r--r--···0·root·········(0)·root·········(0)·····7330·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_overview.html361 -rw-r--r--···0·root·········(0)·root·········(0)·····7330·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_overview.html
362 -rw-r--r--···0·root·········(0)·root·········(0)····78676·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_spec.html362 -rw-r--r--···0·root·········(0)·root·········(0)····78676·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_spec.html
363 -rw-r--r--···0·root·········(0)·root·········(0)····35297·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1ct.html363 -rw-r--r--···0·root·········(0)·root·········(0)····35297·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1ct.html
364 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/assets/364 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/assets/
365 -rw-r--r--···0·root·········(0)·root·········(0)·····1340·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/assets/exclusive_Win_But.gif365 -rw-r--r--···0·root·········(0)·root·········(0)·····1340·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/assets/exclusive_Win_But.gif
Offset 397, 15 lines modifiedOffset 397, 15 lines modified
397 -rw-r--r--···0·root·········(0)·root·········(0)····10554·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/api-reference.html397 -rw-r--r--···0·root·········(0)·root·········(0)····10554·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/api-reference.html
398 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/398 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/
399 -rw-r--r--···0·root·········(0)·root·········(0)·····4963·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/config.gif399 -rw-r--r--···0·root·········(0)·root·········(0)·····4963·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/config.gif
400 -rw-r--r--···0·root·········(0)·root·········(0)····10726·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/html_logs.gif400 -rw-r--r--···0·root·········(0)·root·········(0)····10726·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/html_logs.gif
401 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/logo.png401 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-02-10·08:38:21.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/assets/logo.png
Max diff block lines reached; 80655/105481 bytes (76.46%) of diff not shown.
630 B
./usr/share/doc/erlang-doc/html/doc/.build
    
Offset 22, 16 lines modifiedOffset 22, 16 lines modified
22 dist/lato-latin-300-normal-YUMVEFOL.woff222 dist/lato-latin-300-normal-YUMVEFOL.woff2
23 dist/lato-latin-400-normal-W7754I4D.woff223 dist/lato-latin-400-normal-W7754I4D.woff2
24 dist/lato-latin-700-normal-2XVSBPG4.woff224 dist/lato-latin-700-normal-2XVSBPG4.woff2
25 dist/lato-latin-ext-300-normal-VPGGJKJL.woff225 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
26 dist/lato-latin-ext-400-normal-N27NCBWW.woff226 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
27 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff227 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
28 dist/remixicon-NKANDIL5.woff228 dist/remixicon-NKANDIL5.woff2
29 dist/search_data-1CD15961.js29 dist/search_data-858E7357.js
30 dist/sidebar_items-712764E3.js30 dist/sidebar_items-FA8819B1.js
31 edoc.html31 edoc.html
32 efficiency_guide.html32 efficiency_guide.html
33 eldap.html33 eldap.html
34 embedded.html34 embedded.html
35 erl_interface.html35 erl_interface.html
36 erts.html36 erts.html
37 et.html37 et.html
657 B
./usr/share/doc/erlang-doc/html/doc/404.html
    
Offset 12, 15 lines modifiedOffset 12, 15 lines modified
  
12 ····<title>404··Erlang/OTP·v27.2.2</title>12 ····<title>404··Erlang/OTP·v27.2.2</title>
13 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>13 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
14 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>14 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
15 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>15 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
16 ····<script·src="dist/sidebar_items-712764E3.js"></script>16 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
17 ····<script·src="docs_config.js"></script>17 ····<script·src="docs_config.js"></script>
18 ····<script·async·src="dist/html-55NP3CS6.js"></script>18 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
19 ··</head>19 ··</head>
20 ··<body·data-type="extras"·class="page-extra">20 ··<body·data-type="extras"·class="page-extra">
21 ····<script>21 ····<script>
  
3.38 KB
./usr/share/doc/erlang-doc/html/doc/asn1.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>asn1··Erlang/OTP·v27.2.2</title>9 ····<title>asn1\n\n<script>window.location.replace("../lib/asn1-5.3.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/asn1.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/asn1.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>asn1</span>112 ····<span>asn1\n\n&lt;script&gt;window.location.replace(&quot;../lib/asn1-5.3.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/asn1-5.3.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="snmp.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="snmp.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 snmp122 snmp\n\n<script>window.location.replace("../lib/snmp-5.18/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="crypto.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="crypto.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 crypto132 crypto\n\n<script>window.location.replace("../lib/crypto-5.5.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.0 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 a\x8as\x8sn\x8n1\x819 a\x8as\x8sn\x8n1\x81\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./a.as.sn.n1.1-.-5.5...3.3...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8n_\x8m_\x8p11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8n_\x8m_\x8p_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8c_\x8r_\x8y_\x8p_\x8t_\x8o12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8c_\x8r_\x8y_\x8p_\x8t_\x8o_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.51 KB
./usr/share/doc/erlang-doc/html/doc/common_test.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>common_test··Erlang/OTP·v27.2.2</title>9 ····<title>common_test\n\n<script>window.location.replace("../lib/common_test-1.27.6/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/testing/common_test.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/testing/common_test.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>common_test</span>112 ····<span>common_test\n\n&lt;script&gt;window.location.replace(&quot;../lib/common_test-1.27.6/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/common_test-1.27.6/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="tools.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="tools.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 tools122 tools\n\n<script>window.location.replace("../lib/tools-4.1.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="eunit.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="eunit.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 eunit132 eunit\n\n<script>window.location.replace("../lib/eunit-2.9.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.07 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 c\x8co\x8om\x8mm\x8mo\x8on\x8n_\x8_t\x8te\x8es\x8st\x8t9 c\x8co\x8om\x8mm\x8mo\x8on\x8n_\x8_t\x8te\x8es\x8st\x8t\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./c.co.om.mm.mo.on.n_._t.te.es.st.t-.-1.1...2.27.7...6.6/./d.do.oc.c/./
 10 h\x8ht\x8tm\x8ml\x8l/\x8/i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8t_\x8o_\x8o_\x8l_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8u_\x8n_\x8i_\x8t12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8u_\x8n_\x8i_\x8t_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.62 KB
./usr/share/doc/erlang-doc/html/doc/compiler.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>compiler··Erlang/OTP·v27.2.2</title>9 ····<title>compiler\n\n<script>window.location.replace("../lib/compiler-8.5.5/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/compiler.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/compiler.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>compiler</span>112 ····<span>compiler\n\n&lt;script&gt;window.location.replace(&quot;../lib/compiler-8.5.5/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/compiler-8.5.5/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="embedded.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="embedded.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 Embedded·Systems·User's·Guide122 Embedded·Systems·User's·Guide\n\n<script>window.location.replace("../doc/system/embedded.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="erts.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="erts.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 erts132 erts\n\n<script>window.location.replace("../erts-15.2.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.17 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 c\x8co\x8om\x8mp\x8pi\x8il\x8le\x8er\x8r9 c\x8co\x8om\x8mp\x8pi\x8il\x8le\x8er\x8r\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./c.co.om.mp.pi.il.le.er.r-.-8.8...5.5...5.5/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8E_\x8m_\x8b_\x8e_\x8d_\x8d_\x8e_\x8d_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8s_\x8·_\x8U_\x8s_\x8e_\x8r_\x8'_\x8s_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8E_\x8m_\x8b_\x8e_\x8d_\x8d_\x8e_\x8d_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8s_\x8·_\x8U_\x8s_\x8e_\x8r_\x8'_\x8s_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8r_\x8t_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8r_\x8t_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.44 KB
./usr/share/doc/erlang-doc/html/doc/crypto.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>crypto··Erlang/OTP·v27.2.2</title>9 ····<title>crypto\n\n<script>window.location.replace("../lib/crypto-5.5.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/crypto.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/crypto.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>crypto</span>112 ····<span>crypto\n\n&lt;script&gt;window.location.replace(&quot;../lib/crypto-5.5.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/crypto-5.5.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="asn1.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="asn1.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 asn1122 asn1\n\n<script>window.location.replace("../lib/asn1-5.3.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="diameter.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="diameter.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 diameter132 diameter\n\n<script>window.location.replace("../lib/diameter-2.4.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.03 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 c\x8cr\x8ry\x8yp\x8pt\x8to\x8o9 c\x8cr\x8ry\x8yp\x8pt\x8to\x8o\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./c.cr.ry.yp.pt.to.o-.-5.5...5.5...2.2/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8a_\x8s_\x8n_\x8111 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8a_\x8s_\x8n_\x81_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8d_\x8i_\x8a_\x8m_\x8e_\x8t_\x8e_\x8r12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8d_\x8i_\x8a_\x8m_\x8e_\x8t_\x8e_\x8r_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.46 KB
./usr/share/doc/erlang-doc/html/doc/debugger.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>debugger··Erlang/OTP·v27.2.2</title>9 ····<title>debugger\n\n<script>window.location.replace("../lib/debugger-5.5/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/debugger.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/debugger.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>debugger</span>112 ····<span>debugger\n\n&lt;script&gt;window.location.replace(&quot;../lib/debugger-5.5/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/debugger-5.5/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="xmerl.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="xmerl.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 xmerl122 xmerl\n\n<script>window.location.replace("../lib/xmerl-2.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="dialyzer.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="dialyzer.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 dialyzer132 dialyzer\n\n<script>window.location.replace("../lib/dialyzer-5.3.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.05 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 d\x8de\x8eb\x8bu\x8ug\x8gg\x8ge\x8er\x8r9 d\x8de\x8eb\x8bu\x8ug\x8gg\x8ge\x8er\x8r\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./d.de.eb.bu.ug.gg.ge.er.r-.-5.5...5.5/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8x_\x8m_\x8e_\x8r_\x8l11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8x_\x8m_\x8e_\x8r_\x8l_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8d_\x8i_\x8a_\x8l_\x8y_\x8z_\x8e_\x8r12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8d_\x8i_\x8a_\x8l_\x8y_\x8z_\x8e_\x8r_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
684 B
./usr/share/doc/erlang-doc/html/doc/deprecations.html
    
Offset 10, 15 lines modifiedOffset 10, 15 lines modified
  
10 ····<title>Deprecations··Erlang/OTP·v27.2.2</title>10 ····<title>Deprecations··Erlang/OTP·v27.2.2</title>
11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
14 ····<script·src="dist/sidebar_items-712764E3.js"></script>14 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
15 ····<script·src="docs_config.js"></script>15 ····<script·src="docs_config.js"></script>
16 ····<script·async·src="dist/html-55NP3CS6.js"></script>16 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
17 ··</head>17 ··</head>
18 ··<body·data-type="extras"·class="page-extra">18 ··<body·data-type="extras"·class="page-extra">
19 ····<script>19 ····<script>
  
3.8 KB
./usr/share/doc/erlang-doc/html/doc/design_principles.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>OTP·Design·Principles··Erlang/OTP·v27.2.2</title>9 ····<title>OTP·Design·Principles\n\n<script>window.location.replace("../doc/system/design_principles.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/design_principles.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/design_principles.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>OTP·Design·Principles</span>112 ····<span>OTP·Design·Principles\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/design_principles.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/design_principles.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="system_principles.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="system_principles.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 System·Principles122 System·Principles\n\n<script>window.location.replace("../doc/system/system_principles.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="programming_examples.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="programming_examples.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 Programming·Examples132 Programming·Examples\n\n<script>window.location.replace("../doc/system/programming_examples.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.25 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 O\x8OT\x8TP\x8P·D\x8De\x8es\x8si\x8ig\x8gn\x8n·P\x8Pr\x8ri\x8in\x8nc\x8ci\x8ip\x8pl\x8le\x8es\x8s9 O\x8OT\x8TP\x8P·D\x8De\x8es\x8si\x8ig\x8gn\x8n·P\x8Pr\x8ri\x8in\x8nc\x8ci\x8ip\x8pl\x8le\x8es\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 d\x8de\x8es\x8si\x8ig\x8gn\x8n_\x8_p\x8pr\x8ri\x8in\x8nc\x8ci\x8ip\x8pl\x8le\x8es\x8s.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8P_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8E_\x8x_\x8a_\x8m_\x8p_\x8l_\x8e_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8P_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8E_\x8x_\x8a_\x8m_\x8p_\x8l_\x8e_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.45 KB
./usr/share/doc/erlang-doc/html/doc/dialyzer.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>dialyzer··Erlang/OTP·v27.2.2</title>9 ····<title>dialyzer\n\n<script>window.location.replace("../lib/dialyzer-5.3.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/dialyzer.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/dialyzer.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>dialyzer</span>112 ····<span>dialyzer\n\n&lt;script&gt;window.location.replace(&quot;../lib/dialyzer-5.3.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/dialyzer-5.3.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="debugger.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="debugger.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 debugger122 debugger\n\n<script>window.location.replace("../lib/debugger-5.5/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="et.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="et.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 et132 et\n\n<script>window.location.replace("../lib/et-1.7.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.04 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 d\x8di\x8ia\x8al\x8ly\x8yz\x8ze\x8er\x8r9 d\x8di\x8ia\x8al\x8ly\x8yz\x8ze\x8er\x8r\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./d.di.ia.al.ly.yz.ze.er.r-.-5.5...3.3...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8d_\x8e_\x8b_\x8u_\x8g_\x8g_\x8e_\x8r11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8d_\x8e_\x8b_\x8u_\x8g_\x8g_\x8e_\x8r_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8t12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8t_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.46 KB
./usr/share/doc/erlang-doc/html/doc/diameter.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>diameter··Erlang/OTP·v27.2.2</title>9 ····<title>diameter\n\n<script>window.location.replace("../lib/diameter-2.4.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/diameter.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/diameter.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>diameter</span>112 ····<span>diameter\n\n&lt;script&gt;window.location.replace(&quot;../lib/diameter-2.4.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/diameter-2.4.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="crypto.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="crypto.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 crypto122 crypto\n\n<script>window.location.replace("../lib/crypto-5.5.2/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="eldap.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="eldap.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 eldap132 eldap\n\n<script>window.location.replace("../lib/eldap-1.2.14/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.04 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 d\x8di\x8ia\x8am\x8me\x8et\x8te\x8er\x8r9 d\x8di\x8ia\x8am\x8me\x8et\x8te\x8er\x8r\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./d.di.ia.am.me.et.te.er.r-.-2.2...4.4...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8c_\x8r_\x8y_\x8p_\x8t_\x8o11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8c_\x8r_\x8y_\x8p_\x8t_\x8o_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8l_\x8d_\x8a_\x8p12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8l_\x8d_\x8a_\x8p_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
2.92 KB
./usr/share/doc/erlang-doc/html/doc/edoc.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>edoc··Erlang/OTP·v27.2.2</title>9 ····<title>edoc\n\n<script>window.location.replace("../lib/edoc-1.3.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 29 lines modifiedOffset 108, 29 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/documentation/edoc.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/documentation/edoc.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>edoc</span>112 ····<span>edoc\n\n&lt;script&gt;window.location.replace(&quot;../lib/edoc-1.3.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/edoc-1.3.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="eunit.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="eunit.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 eunit122 eunit\n\n<script>window.location.replace("../lib/eunit-2.9.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ··</div>127 ··</div>
908 B
html2text {}
    
Offset 1, 12 lines modifiedOffset 1, 14 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 e\x8ed\x8do\x8oc\x8c9 e\x8ed\x8do\x8oc\x8c\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./e.ed.do.oc.c-.-1.1...3.3...2.2/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8u_\x8n_\x8i_\x8t11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8u_\x8n_\x8i_\x8t_.\_.n_.\_.n
10 Search·HexDocs12 Search·HexDocs
11 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e13 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
12 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B14 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.81 KB
./usr/share/doc/erlang-doc/html/doc/efficiency_guide.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>Efficiency·Guide··Erlang/OTP·v27.2.2</title>9 ····<title>Efficiency·Guide\n\n<script>window.location.replace("../doc/system/efficiency_guide.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/efficiency_guide.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/efficiency_guide.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>Efficiency·Guide</span>112 ····<span>Efficiency·Guide\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/efficiency_guide.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/efficiency_guide.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="reference_manual.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="reference_manual.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 Erlang·Reference·Manual122 Erlang·Reference·Manual\n\n<script>window.location.replace("../doc/system/reference_manual.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="tutorial.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="tutorial.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 Interoperability·Tutorial132 Interoperability·Tutorial\n\n<script>window.location.replace("../doc/system/tutorial.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.29 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 E\x8Ef\x8ff\x8fi\x8ic\x8ci\x8ie\x8en\x8nc\x8cy\x8y·G\x8Gu\x8ui\x8id\x8de\x8e9 E\x8Ef\x8ff\x8fi\x8ic\x8ci\x8ie\x8en\x8nc\x8cy\x8y·G\x8Gu\x8ui\x8id\x8de\x8e\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 e\x8ef\x8ff\x8fi\x8ic\x8ci\x8ie\x8en\x8nc\x8cy\x8y_\x8_g\x8gu\x8ui\x8id\x8de\x8e.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8R_\x8e_\x8f_\x8e_\x8r_\x8e_\x8n_\x8c_\x8e_\x8·_\x8M_\x8a_\x8n_\x8u_\x8a_\x8l11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8R_\x8e_\x8f_\x8e_\x8r_\x8e_\x8n_\x8c_\x8e_\x8·_\x8M_\x8a_\x8n_\x8u_\x8a_\x8l_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8I_\x8n_\x8t_\x8e_\x8r_\x8o_\x8p_\x8e_\x8r_\x8a_\x8b_\x8i_\x8l_\x8i_\x8t_\x8y_\x8·_\x8T_\x8u_\x8t_\x8o_\x8r_\x8i_\x8a_\x8l12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8I_\x8n_\x8t_\x8e_\x8r_\x8o_\x8p_\x8e_\x8r_\x8a_\x8b_\x8i_\x8l_\x8i_\x8t_\x8y_\x8·_\x8T_\x8u_\x8t_\x8o_\x8r_\x8i_\x8a_\x8l_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.51 KB
./usr/share/doc/erlang-doc/html/doc/eldap.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>eldap··Erlang/OTP·v27.2.2</title>9 ····<title>eldap\n\n<script>window.location.replace("../lib/eldap-1.2.14/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/eldap.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/eldap.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>eldap</span>112 ····<span>eldap\n\n&lt;script&gt;window.location.replace(&quot;../lib/eldap-1.2.14/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/eldap-1.2.14/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="diameter.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="diameter.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 diameter122 diameter\n\n<script>window.location.replace("../lib/diameter-2.4.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="erl_interface.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="erl_interface.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 erl_interface132 erl_interface\n\n<script>window.location.replace("../lib/erl_interface-5.5.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.08 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 e\x8el\x8ld\x8da\x8ap\x8p9 e\x8el\x8ld\x8da\x8ap\x8p\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./e.el.ld.da.ap.p-.-1.1...2.2...1.14.4/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8d_\x8i_\x8a_\x8m_\x8e_\x8t_\x8e_\x8r11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8d_\x8i_\x8a_\x8m_\x8e_\x8t_\x8e_\x8r_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8r_\x8l_\x8__\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8r_\x8l_\x8__\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.74 KB
./usr/share/doc/erlang-doc/html/doc/embedded.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>Embedded·Systems·User's·Guide··Erlang/OTP·v27.2.2</title>9 ····<title>Embedded·Systems·User's·Guide\n\n<script>window.location.replace("../doc/system/embedded.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/embedded.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/embedded.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>Embedded·Systems·User's·Guide</span>112 ····<span>Embedded·Systems·User's·Guide\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/embedded.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/embedded.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="tutorial.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="tutorial.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 Interoperability·Tutorial122 Interoperability·Tutorial\n\n<script>window.location.replace("../doc/system/tutorial.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="compiler.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="compiler.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 compiler132 compiler\n\n<script>window.location.replace("../lib/compiler-8.5.5/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.24 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 E\x8Em\x8mb\x8be\x8ed\x8dd\x8de\x8ed\x8d·S\x8Sy\x8ys\x8st\x8te\x8em\x8ms\x8s·U\x8Us\x8se\x8er\x8r'\x8's\x8s·G\x8Gu\x8ui\x8id\x8de\x8e9 E\x8Em\x8mb\x8be\x8ed\x8dd\x8de\x8ed\x8d·S\x8Sy\x8ys\x8st\x8te\x8em\x8ms\x8s·U\x8Us\x8se\x8er\x8r'\x8's\x8s·G\x8Gu\x8ui\x8id\x8de\x8e\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./
 10 s\x8sy\x8ys\x8st\x8te\x8em\x8m/\x8/e\x8em\x8mb\x8be\x8ed\x8dd\x8de\x8ed\x8d.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8I_\x8n_\x8t_\x8e_\x8r_\x8o_\x8p_\x8e_\x8r_\x8a_\x8b_\x8i_\x8l_\x8i_\x8t_\x8y_\x8·_\x8T_\x8u_\x8t_\x8o_\x8r_\x8i_\x8a_\x8l11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8I_\x8n_\x8t_\x8e_\x8r_\x8o_\x8p_\x8e_\x8r_\x8a_\x8b_\x8i_\x8l_\x8i_\x8t_\x8y_\x8·_\x8T_\x8u_\x8t_\x8o_\x8r_\x8i_\x8a_\x8l_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8c_\x8o_\x8m_\x8p_\x8i_\x8l_\x8e_\x8r12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8c_\x8o_\x8m_\x8p_\x8i_\x8l_\x8e_\x8r_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.53 KB
./usr/share/doc/erlang-doc/html/doc/erl_interface.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>erl_interface··Erlang/OTP·v27.2.2</title>9 ····<title>erl_interface\n\n<script>window.location.replace("../lib/erl_interface-5.5.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/erl_interface.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/erl_interface.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>erl_interface</span>112 ····<span>erl_interface\n\n&lt;script&gt;window.location.replace(&quot;../lib/erl_interface-5.5.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/erl_interface-5.5.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="eldap.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="eldap.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 eldap122 eldap\n\n<script>window.location.replace("../lib/eldap-1.2.14/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="ftp.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="ftp.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 ftp132 ftp\n\n<script>window.location.replace("../lib/ftp-1.2.3/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.07 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 e\x8er\x8rl\x8l_\x8_i\x8in\x8nt\x8te\x8er\x8rf\x8fa\x8ac\x8ce\x8e9 e\x8er\x8rl\x8l_\x8_i\x8in\x8nt\x8te\x8er\x8rf\x8fa\x8ac\x8ce\x8e\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./e.er.rl.l_._i.in.nt.te.er.rf.fa.ac.ce.e-.-5.5...5.5...2.2/./
 10 d\x8do\x8oc\x8c/\x8/h\x8ht\x8tm\x8ml\x8l/\x8/i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8l_\x8d_\x8a_\x8p11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8l_\x8d_\x8a_\x8p_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8f_\x8t_\x8p12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8f_\x8t_\x8p_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.4 KB
./usr/share/doc/erlang-doc/html/doc/erts.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>erts··Erlang/OTP·v27.2.2</title>9 ····<title>erts\n\n<script>window.location.replace("../erts-15.2.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/erts.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/erts.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>erts</span>112 ····<span>erts\n\n&lt;script&gt;window.location.replace(&quot;../erts-15.2.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../erts-15.2.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="compiler.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="compiler.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 compiler122 compiler\n\n<script>window.location.replace("../lib/compiler-8.5.5/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="kernel.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="kernel.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 kernel132 kernel\n\n<script>window.location.replace("../lib/kernel-10.2.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.02 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 e\x8er\x8rt\x8ts\x8s9 e\x8er\x8rt\x8ts\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././e.er.rt.ts.s-.-1.15.5...2.2...2.2/./d.do.oc.c/./h.ht.tm.ml.l/./i.in.nd.de.ex.x...h.ht.tm.ml.l".").)<.</./
 10 s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8c_\x8o_\x8m_\x8p_\x8i_\x8l_\x8e_\x8r11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8c_\x8o_\x8m_\x8p_\x8i_\x8l_\x8e_\x8r_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8k_\x8e_\x8r_\x8n_\x8e_\x8l12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8k_\x8e_\x8r_\x8n_\x8e_\x8l_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.4 KB
./usr/share/doc/erlang-doc/html/doc/et.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>et··Erlang/OTP·v27.2.2</title>9 ····<title>et\n\n<script>window.location.replace("../lib/et-1.7.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/et.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/et.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>et</span>112 ····<span>et\n\n&lt;script&gt;window.location.replace(&quot;../lib/et-1.7.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/et-1.7.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="dialyzer.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="dialyzer.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 dialyzer122 dialyzer\n\n<script>window.location.replace("../lib/dialyzer-5.3.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="observer.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="observer.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 observer132 observer\n\n<script>window.location.replace("../lib/observer-2.17/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.02 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 e\x8et\x8t9 e\x8et\x8t\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./e.et.t-.-1.1...7.7...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./i.in.nd.de.ex.x...h.ht.tm.ml.l".").)<.</./
 10 s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8d_\x8i_\x8a_\x8l_\x8y_\x8z_\x8e_\x8r11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8d_\x8i_\x8a_\x8l_\x8y_\x8z_\x8e_\x8r_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8o_\x8b_\x8s_\x8e_\x8r_\x8v_\x8e_\x8r12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8o_\x8b_\x8s_\x8e_\x8r_\x8v_\x8e_\x8r_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.45 KB
./usr/share/doc/erlang-doc/html/doc/eunit.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>eunit··Erlang/OTP·v27.2.2</title>9 ····<title>eunit\n\n<script>window.location.replace("../lib/eunit-2.9.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/testing/eunit.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/testing/eunit.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>eunit</span>112 ····<span>eunit\n\n&lt;script&gt;window.location.replace(&quot;../lib/eunit-2.9.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/eunit-2.9.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="common_test.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="common_test.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 common_test122 common_test\n\n<script>window.location.replace("../lib/common_test-1.27.6/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="edoc.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="edoc.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 edoc132 edoc\n\n<script>window.location.replace("../lib/edoc-1.3.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.04 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 e\x8eu\x8un\x8ni\x8it\x8t9 e\x8eu\x8un\x8ni\x8it\x8t\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./e.eu.un.ni.it.t-.-2.2...9.9...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8c_\x8o_\x8m_\x8m_\x8o_\x8n_\x8__\x8t_\x8e_\x8s_\x8t11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8c_\x8o_\x8m_\x8m_\x8o_\x8n_\x8__\x8t_\x8e_\x8s_\x8t_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8d_\x8o_\x8c12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8e_\x8d_\x8o_\x8c_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.44 KB
./usr/share/doc/erlang-doc/html/doc/ftp.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>ftp··Erlang/OTP·v27.2.2</title>9 ····<title>ftp\n\n<script>window.location.replace("../lib/ftp-1.2.3/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/ftp.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/ftp.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>ftp</span>112 ····<span>ftp\n\n&lt;script&gt;window.location.replace(&quot;../lib/ftp-1.2.3/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/ftp-1.2.3/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="erl_interface.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="erl_interface.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 erl_interface122 erl_interface\n\n<script>window.location.replace("../lib/erl_interface-5.5.2/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="inets.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="inets.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 inets132 inets\n\n<script>window.location.replace("../lib/inets-9.3.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.04 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 f\x8ft\x8tp\x8p9 f\x8ft\x8tp\x8p\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./f.ft.tp.p-.-1.1...2.2...3.3/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8r_\x8l_\x8__\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8r_\x8l_\x8__\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8i_\x8n_\x8e_\x8t_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8i_\x8n_\x8e_\x8t_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.82 KB
./usr/share/doc/erlang-doc/html/doc/getting_started.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>Getting·Started·With·Erlang··Erlang/OTP·v27.2.2</title>9 ····<title>Getting·Started·With·Erlang\n\n<script>window.location.replace("../doc/system/getting_started.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/getting_started.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/getting_started.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>Getting·Started·With·Erlang</span>112 ····<span>Getting·Started·With·Erlang\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/getting_started.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/getting_started.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="installation_guide.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="installation_guide.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 Installation·Guide122 Installation·Guide\n\n<script>window.location.replace("../doc/system/installation_guide.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="system_principles.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="system_principles.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 System·Principles132 System·Principles\n\n<script>window.location.replace("../doc/system/system_principles.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.26 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 G\x8Ge\x8et\x8tt\x8ti\x8in\x8ng\x8g·S\x8St\x8ta\x8ar\x8rt\x8te\x8ed\x8d·W\x8Wi\x8it\x8th\x8h·E\x8Er\x8rl\x8la\x8an\x8ng\x8g9 G\x8Ge\x8et\x8tt\x8ti\x8in\x8ng\x8g·S\x8St\x8ta\x8ar\x8rt\x8te\x8ed\x8d·W\x8Wi\x8it\x8th\x8h·E\x8Er\x8rl\x8la\x8an\x8ng\x8g\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 g\x8ge\x8et\x8tt\x8ti\x8in\x8ng\x8g_\x8_s\x8st\x8ta\x8ar\x8rt\x8te\x8ed\x8d.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8I_\x8n_\x8s_\x8t_\x8a_\x8l_\x8l_\x8a_\x8t_\x8i_\x8o_\x8n_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8I_\x8n_\x8s_\x8t_\x8a_\x8l_\x8l_\x8a_\x8t_\x8i_\x8o_\x8n_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.43 KB
./usr/share/doc/erlang-doc/html/doc/inets.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>inets··Erlang/OTP·v27.2.2</title>9 ····<title>inets\n\n<script>window.location.replace("../lib/inets-9.3.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/inets.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/inets.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>inets</span>112 ····<span>inets\n\n&lt;script&gt;window.location.replace(&quot;../lib/inets-9.3.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/inets-9.3.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="ftp.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="ftp.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 ftp122 ftp\n\n<script>window.location.replace("../lib/ftp-1.2.3/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="jinterface.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="jinterface.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 jinterface132 jinterface\n\n<script>window.location.replace("../lib/jinterface-1.14.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.03 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 i\x8in\x8ne\x8et\x8ts\x8s9 i\x8in\x8ne\x8et\x8ts\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./i.in.ne.et.ts.s-.-9.9...3.3...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8f_\x8t_\x8p11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8f_\x8t_\x8p_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8j_\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8j_\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.58 KB
./usr/share/doc/erlang-doc/html/doc/installation_guide.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>Installation·Guide··Erlang/OTP·v27.2.2</title>9 ····<title>Installation·Guide\n\n<script>window.location.replace("../doc/system/installation_guide.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 18 lines modifiedOffset 108, 18 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/installation_guide.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/installation_guide.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>Installation·Guide</span>112 ····<span>Installation·Guide\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/installation_guide.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/installation_guide.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="upcoming_incompatibilities.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="upcoming_incompatibilities.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
Offset 134, 15 lines modifiedOffset 134, 15 lines modified
134 ··<div·class="bottom-actions-item">134 ··<div·class="bottom-actions-item">
  
135 ······<a·href="getting_started.html"·class="bottom-actions-button"·rel="next">135 ······<a·href="getting_started.html"·class="bottom-actions-button"·rel="next">
136 ········<span·class="subheader">136 ········<span·class="subheader">
137 ··········Next·Page·137 ··········Next·Page·
138 ········</span>138 ········</span>
139 ········<span·class="title">139 ········<span·class="title">
140 Getting·Started·With·Erlang140 Getting·Started·With·Erlang\n\n<script>window.location.replace("../doc/system/getting_started.html")</script>
141 ········</span>141 ········</span>
142 ······</a>142 ······</a>
  
143 ··</div>143 ··</div>
144 </div>144 </div>
145 ····<footer·class="footer">145 ····<footer·class="footer">
146 ······<p>146 ······<p>
1.22 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 I\x8In\x8ns\x8st\x8ta\x8al\x8ll\x8la\x8at\x8ti\x8io\x8on\x8n·G\x8Gu\x8ui\x8id\x8de\x8e9 I\x8In\x8ns\x8st\x8ta\x8al\x8ll\x8la\x8at\x8ti\x8io\x8on\x8n·G\x8Gu\x8ui\x8id\x8de\x8e\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 i\x8in\x8ns\x8st\x8ta\x8al\x8ll\x8la\x8at\x8ti\x8io\x8on\x8n_\x8_g\x8gu\x8ui\x8id\x8de\x8e.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8U_\x8p_\x8c_\x8o_\x8m_\x8i_\x8n_\x8g_\x8·_\x8P_\x8o_\x8t_\x8e_\x8n_\x8t_\x8i_\x8a_\x8l_\x8·_\x8I_\x8n_\x8c_\x8o_\x8m_\x8p_\x8a_\x8t_\x8i_\x8b_\x8i_\x8l_\x8i_\x8t_\x8i_\x8e_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8U_\x8p_\x8c_\x8o_\x8m_\x8i_\x8n_\x8g_\x8·_\x8P_\x8o_\x8t_\x8e_\x8n_\x8t_\x8i_\x8a_\x8l_\x8·_\x8I_\x8n_\x8c_\x8o_\x8m_\x8p_\x8a_\x8t_\x8i_\x8b_\x8i_\x8l_\x8i_\x8t_\x8i_\x8e_\x8s
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8G_\x8e_\x8t_\x8t_\x8i_\x8n_\x8g_\x8·_\x8S_\x8t_\x8a_\x8r_\x8t_\x8e_\x8d_\x8·_\x8W_\x8i_\x8t_\x8h_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8G_\x8e_\x8t_\x8t_\x8i_\x8n_\x8g_\x8·_\x8S_\x8t_\x8a_\x8r_\x8t_\x8e_\x8d_\x8·_\x8W_\x8i_\x8t_\x8h_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.5 KB
./usr/share/doc/erlang-doc/html/doc/jinterface.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>jinterface··Erlang/OTP·v27.2.2</title>9 ····<title>jinterface\n\n<script>window.location.replace("../lib/jinterface-1.14.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/jinterface.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/jinterface.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>jinterface</span>112 ····<span>jinterface\n\n&lt;script&gt;window.location.replace(&quot;../lib/jinterface-1.14.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/jinterface-1.14.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="inets.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="inets.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 inets122 inets\n\n<script>window.location.replace("../lib/inets-9.3.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="megaco.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="megaco.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 megaco132 megaco\n\n<script>window.location.replace("../lib/megaco-4.7/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.06 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 j\x8ji\x8in\x8nt\x8te\x8er\x8rf\x8fa\x8ac\x8ce\x8e9 j\x8ji\x8in\x8nt\x8te\x8er\x8rf\x8fa\x8ac\x8ce\x8e\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./j.ji.in.nt.te.er.rf.fa.ac.ce.e-.-1.1...1.14.4...1.1/./d.do.oc.c/./
 10 h\x8ht\x8tm\x8ml\x8l/\x8/i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8i_\x8n_\x8e_\x8t_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8i_\x8n_\x8e_\x8t_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8m_\x8e_\x8g_\x8a_\x8c_\x8o12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8m_\x8e_\x8g_\x8a_\x8c_\x8o_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.39 KB
./usr/share/doc/erlang-doc/html/doc/kernel.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>kernel··Erlang/OTP·v27.2.2</title>9 ····<title>kernel\n\n<script>window.location.replace("../lib/kernel-10.2.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/kernel.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/kernel.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>kernel</span>112 ····<span>kernel\n\n&lt;script&gt;window.location.replace(&quot;../lib/kernel-10.2.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/kernel-10.2.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="erts.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="erts.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 erts122 erts\n\n<script>window.location.replace("../erts-15.2.2/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="sasl.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="sasl.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 sasl132 sasl\n\n<script>window.location.replace("../lib/sasl-4.2.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.01 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 k\x8ke\x8er\x8rn\x8ne\x8el\x8l9 k\x8ke\x8er\x8rn\x8ne\x8el\x8l\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./k.ke.er.rn.ne.el.l-.-1.10.0...2.2...2.2/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8r_\x8t_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8r_\x8t_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8a_\x8s_\x8l12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8a_\x8s_\x8l_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
678 B
./usr/share/doc/erlang-doc/html/doc/man_index.html
    
Offset 10, 15 lines modifiedOffset 10, 15 lines modified
  
10 ····<title>Module·Index··Erlang/OTP·v27.2.2</title>10 ····<title>Module·Index··Erlang/OTP·v27.2.2</title>
11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
14 ····<script·src="dist/sidebar_items-712764E3.js"></script>14 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
15 ····<script·src="docs_config.js"></script>15 ····<script·src="docs_config.js"></script>
16 ····<script·async·src="dist/html-55NP3CS6.js"></script>16 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
17 ··</head>17 ··</head>
18 ··<body·data-type="extras"·class="page-extra">18 ··<body·data-type="extras"·class="page-extra">
19 ····<script>19 ····<script>
  
3.5 KB
./usr/share/doc/erlang-doc/html/doc/megaco.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>megaco··Erlang/OTP·v27.2.2</title>9 ····<title>megaco\n\n<script>window.location.replace("../lib/megaco-4.7/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/megaco.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/megaco.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>megaco</span>112 ····<span>megaco\n\n&lt;script&gt;window.location.replace(&quot;../lib/megaco-4.7/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/megaco-4.7/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="jinterface.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="jinterface.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 jinterface122 jinterface\n\n<script>window.location.replace("../lib/jinterface-1.14.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="public_key.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="public_key.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 public_key132 public_key\n\n<script>window.location.replace("../lib/public_key-1.17.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.07 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 m\x8me\x8eg\x8ga\x8ac\x8co\x8o9 m\x8me\x8eg\x8ga\x8ac\x8co\x8o\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./m.me.eg.ga.ac.co.o-.-4.4...7.7/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8j_\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8j_\x8i_\x8n_\x8t_\x8e_\x8r_\x8f_\x8a_\x8c_\x8e_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8p_\x8u_\x8b_\x8l_\x8i_\x8c_\x8__\x8k_\x8e_\x8y12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8p_\x8u_\x8b_\x8l_\x8i_\x8c_\x8__\x8k_\x8e_\x8y_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.42 KB
./usr/share/doc/erlang-doc/html/doc/mnesia.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>mnesia··Erlang/OTP·v27.2.2</title>9 ····<title>mnesia\n\n<script>window.location.replace("../lib/mnesia-4.23.3/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/database/mnesia.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/database/mnesia.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>mnesia</span>112 ····<span>mnesia\n\n&lt;script&gt;window.location.replace(&quot;../lib/mnesia-4.23.3/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/mnesia-4.23.3/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="stdlib.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="stdlib.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 stdlib122 stdlib\n\n<script>window.location.replace("../lib/stdlib-6.2/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="odbc.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="odbc.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 odbc132 odbc\n\n<script>window.location.replace("../lib/odbc-2.15/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.02 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 m\x8mn\x8ne\x8es\x8si\x8ia\x8a9 m\x8mn\x8ne\x8es\x8si\x8ia\x8a\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./m.mn.ne.es.si.ia.a-.-4.4...2.23.3...3.3/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8t_\x8d_\x8l_\x8i_\x8b11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8t_\x8d_\x8l_\x8i_\x8b_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8o_\x8d_\x8b_\x8c12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8o_\x8d_\x8b_\x8c_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.46 KB
./usr/share/doc/erlang-doc/html/doc/observer.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>observer··Erlang/OTP·v27.2.2</title>9 ····<title>observer\n\n<script>window.location.replace("../lib/observer-2.17/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/observer.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/observer.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>observer</span>112 ····<span>observer\n\n&lt;script&gt;window.location.replace(&quot;../lib/observer-2.17/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/observer-2.17/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="et.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="et.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 et122 et\n\n<script>window.location.replace("../lib/et-1.7.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="parsetools.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="parsetools.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 parsetools132 parsetools\n\n<script>window.location.replace("../lib/parsetools-2.6/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.05 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 o\x8ob\x8bs\x8se\x8er\x8rv\x8ve\x8er\x8r9 o\x8ob\x8bs\x8se\x8er\x8rv\x8ve\x8er\x8r\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./o.ob.bs.se.er.rv.ve.er.r-.-2.2...1.17.7/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8t11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8e_\x8t_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8p_\x8a_\x8r_\x8s_\x8e_\x8t_\x8o_\x8o_\x8l_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8p_\x8a_\x8r_\x8s_\x8e_\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.39 KB
./usr/share/doc/erlang-doc/html/doc/odbc.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>odbc··Erlang/OTP·v27.2.2</title>9 ····<title>odbc\n\n<script>window.location.replace("../lib/odbc-2.15/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/database/odbc.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/database/odbc.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>odbc</span>112 ····<span>odbc\n\n&lt;script&gt;window.location.replace(&quot;../lib/odbc-2.15/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/odbc-2.15/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="mnesia.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="mnesia.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 mnesia122 mnesia\n\n<script>window.location.replace("../lib/mnesia-4.23.3/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="os_mon.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="os_mon.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 os_mon132 os_mon\n\n<script>window.location.replace("../lib/os_mon-2.10.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.01 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 o\x8od\x8db\x8bc\x8c9 o\x8od\x8db\x8bc\x8c\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./o.od.db.bc.c-.-2.2...1.15.5/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8m_\x8n_\x8e_\x8s_\x8i_\x8a11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8m_\x8n_\x8e_\x8s_\x8i_\x8a_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8o_\x8s_\x8__\x8m_\x8o_\x8n12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8o_\x8s_\x8__\x8m_\x8o_\x8n_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.39 KB
./usr/share/doc/erlang-doc/html/doc/os_mon.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>os_mon··Erlang/OTP·v27.2.2</title>9 ····<title>os_mon\n\n<script>window.location.replace("../lib/os_mon-2.10.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/oam/os_mon.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/oam/os_mon.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>os_mon</span>112 ····<span>os_mon\n\n&lt;script&gt;window.location.replace(&quot;../lib/os_mon-2.10.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/os_mon-2.10.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="odbc.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="odbc.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 odbc122 odbc\n\n<script>window.location.replace("../lib/odbc-2.15/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="snmp.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="snmp.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 snmp132 snmp\n\n<script>window.location.replace("../lib/snmp-5.18/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.01 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 o\x8os\x8s_\x8_m\x8mo\x8on\x8n9 o\x8os\x8s_\x8_m\x8mo\x8on\x8n\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./o.os.s_._m.mo.on.n-.-2.2...1.10.0...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8o_\x8d_\x8b_\x8c11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8o_\x8d_\x8b_\x8c_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8n_\x8m_\x8p12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8n_\x8m_\x8p_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.52 KB
./usr/share/doc/erlang-doc/html/doc/parsetools.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>parsetools··Erlang/OTP·v27.2.2</title>9 ····<title>parsetools\n\n<script>window.location.replace("../lib/parsetools-2.6/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/parsetools.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/parsetools.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>parsetools</span>112 ····<span>parsetools\n\n&lt;script&gt;window.location.replace(&quot;../lib/parsetools-2.6/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/parsetools-2.6/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="observer.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="observer.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 observer122 observer\n\n<script>window.location.replace("../lib/observer-2.17/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="reltool.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="reltool.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 reltool132 reltool\n\n<script>window.location.replace("../lib/reltool-1.0.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.08 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 p\x8pa\x8ar\x8rs\x8se\x8et\x8to\x8oo\x8ol\x8ls\x8s9 p\x8pa\x8ar\x8rs\x8se\x8et\x8to\x8oo\x8ol\x8ls\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./p.pa.ar.rs.se.et.to.oo.ol.ls.s-.-2.2...6.6/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8o_\x8b_\x8s_\x8e_\x8r_\x8v_\x8e_\x8r11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8o_\x8b_\x8s_\x8e_\x8r_\x8v_\x8e_\x8r_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8r_\x8e_\x8l_\x8t_\x8o_\x8o_\x8l12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8r_\x8e_\x8l_\x8t_\x8o_\x8o_\x8l_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.87 KB
./usr/share/doc/erlang-doc/html/doc/programming_examples.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>Programming·Examples··Erlang/OTP·v27.2.2</title>9 ····<title>Programming·Examples\n\n<script>window.location.replace("../doc/system/programming_examples.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/programming_examples.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/programming_examples.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>Programming·Examples</span>112 ····<span>Programming·Examples\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/programming_examples.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/programming_examples.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="design_principles.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="design_principles.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 OTP·Design·Principles122 OTP·Design·Principles\n\n<script>window.location.replace("../doc/system/design_principles.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="reference_manual.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="reference_manual.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 Erlang·Reference·Manual132 Erlang·Reference·Manual\n\n<script>window.location.replace("../doc/system/reference_manual.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.3 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 P\x8Pr\x8ro\x8og\x8gr\x8ra\x8am\x8mm\x8mi\x8in\x8ng\x8g·E\x8Ex\x8xa\x8am\x8mp\x8pl\x8le\x8es\x8s9 P\x8Pr\x8ro\x8og\x8gr\x8ra\x8am\x8mm\x8mi\x8in\x8ng\x8g·E\x8Ex\x8xa\x8am\x8mp\x8pl\x8le\x8es\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 p\x8pr\x8ro\x8og\x8gr\x8ra\x8am\x8mm\x8mi\x8in\x8ng\x8g_\x8_e\x8ex\x8xa\x8am\x8mp\x8pl\x8le\x8es\x8s.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8O_\x8T_\x8P_\x8·_\x8D_\x8e_\x8s_\x8i_\x8g_\x8n_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8O_\x8T_\x8P_\x8·_\x8D_\x8e_\x8s_\x8i_\x8g_\x8n_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8R_\x8e_\x8f_\x8e_\x8r_\x8e_\x8n_\x8c_\x8e_\x8·_\x8M_\x8a_\x8n_\x8u_\x8a_\x8l12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8R_\x8e_\x8f_\x8e_\x8r_\x8e_\x8n_\x8c_\x8e_\x8·_\x8M_\x8a_\x8n_\x8u_\x8a_\x8l_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.49 KB
./usr/share/doc/erlang-doc/html/doc/public_key.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>public_key··Erlang/OTP·v27.2.2</title>9 ····<title>public_key\n\n<script>window.location.replace("../lib/public_key-1.17.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/public_key.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/public_key.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>public_key</span>112 ····<span>public_key\n\n&lt;script&gt;window.location.replace(&quot;../lib/public_key-1.17.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/public_key-1.17.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="megaco.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="megaco.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 megaco122 megaco\n\n<script>window.location.replace("../lib/megaco-4.7/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="ssh.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="ssh.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 ssh132 ssh\n\n<script>window.location.replace("../lib/ssh-5.2.6/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.05 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 p\x8pu\x8ub\x8bl\x8li\x8ic\x8c_\x8_k\x8ke\x8ey\x8y9 p\x8pu\x8ub\x8bl\x8li\x8ic\x8c_\x8_k\x8ke\x8ey\x8y\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./p.pu.ub.bl.li.ic.c_._k.ke.ey.y-.-1.1...1.17.7...1.1/./d.do.oc.c/./
 10 h\x8ht\x8tm\x8ml\x8l/\x8/i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8m_\x8e_\x8g_\x8a_\x8c_\x8o11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8m_\x8e_\x8g_\x8a_\x8c_\x8o_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8s_\x8h12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8s_\x8h_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
677 B
./usr/share/doc/erlang-doc/html/doc/readme.html
    
Offset 10, 15 lines modifiedOffset 10, 15 lines modified
  
10 ····<title>Erlang/OTP·27.2.2··Erlang/OTP·v27.2.2</title>10 ····<title>Erlang/OTP·27.2.2··Erlang/OTP·v27.2.2</title>
11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
14 ····<script·src="dist/sidebar_items-712764E3.js"></script>14 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
15 ····<script·src="docs_config.js"></script>15 ····<script·src="docs_config.js"></script>
16 ····<script·async·src="dist/html-55NP3CS6.js"></script>16 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
17 ··</head>17 ··</head>
18 ··<body·data-type="extras"·class="page-extra">18 ··<body·data-type="extras"·class="page-extra">
19 ····<script>19 ····<script>
  
3.8 KB
./usr/share/doc/erlang-doc/html/doc/reference_manual.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>Erlang·Reference·Manual··Erlang/OTP·v27.2.2</title>9 ····<title>Erlang·Reference·Manual\n\n<script>window.location.replace("../doc/system/reference_manual.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/reference_manual.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/reference_manual.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>Erlang·Reference·Manual</span>112 ····<span>Erlang·Reference·Manual\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/reference_manual.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/reference_manual.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="programming_examples.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="programming_examples.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 Programming·Examples122 Programming·Examples\n\n<script>window.location.replace("../doc/system/programming_examples.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="efficiency_guide.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="efficiency_guide.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 Efficiency·Guide132 Efficiency·Guide\n\n<script>window.location.replace("../doc/system/efficiency_guide.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.25 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 E\x8Er\x8rl\x8la\x8an\x8ng\x8g·R\x8Re\x8ef\x8fe\x8er\x8re\x8en\x8nc\x8ce\x8e·M\x8Ma\x8an\x8nu\x8ua\x8al\x8l9 E\x8Er\x8rl\x8la\x8an\x8ng\x8g·R\x8Re\x8ef\x8fe\x8er\x8re\x8en\x8nc\x8ce\x8e·M\x8Ma\x8an\x8nu\x8ua\x8al\x8l\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 r\x8re\x8ef\x8fe\x8er\x8re\x8en\x8nc\x8ce\x8e_\x8_m\x8ma\x8an\x8nu\x8ua\x8al\x8l.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8P_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8E_\x8x_\x8a_\x8m_\x8p_\x8l_\x8e_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8P_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8E_\x8x_\x8a_\x8m_\x8p_\x8l_\x8e_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8E_\x8f_\x8f_\x8i_\x8c_\x8i_\x8e_\x8n_\x8c_\x8y_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8E_\x8f_\x8f_\x8i_\x8c_\x8i_\x8e_\x8n_\x8c_\x8y_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.56 KB
./usr/share/doc/erlang-doc/html/doc/reltool.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>reltool··Erlang/OTP·v27.2.2</title>9 ····<title>reltool\n\n<script>window.location.replace("../lib/reltool-1.0.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/reltool.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/reltool.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>reltool</span>112 ····<span>reltool\n\n&lt;script&gt;window.location.replace(&quot;../lib/reltool-1.0.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/reltool-1.0.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="parsetools.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="parsetools.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 parsetools122 parsetools\n\n<script>window.location.replace("../lib/parsetools-2.6/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="runtime_tools.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="runtime_tools.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 runtime_tools132 runtime_tools\n\n<script>window.location.replace("../lib/runtime_tools-2.1.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.1 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 r\x8re\x8el\x8lt\x8to\x8oo\x8ol\x8l9 r\x8re\x8el\x8lt\x8to\x8oo\x8ol\x8l\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./r.re.el.lt.to.oo.ol.l-.-1.1...0.0...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8p_\x8a_\x8r_\x8s_\x8e_\x8t_\x8o_\x8o_\x8l_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8p_\x8a_\x8r_\x8s_\x8e_\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8r_\x8u_\x8n_\x8t_\x8i_\x8m_\x8e_\x8__\x8t_\x8o_\x8o_\x8l_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8r_\x8u_\x8n_\x8t_\x8i_\x8m_\x8e_\x8__\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
683 B
./usr/share/doc/erlang-doc/html/doc/removed.html
    
Offset 10, 15 lines modifiedOffset 10, 15 lines modified
  
10 ····<title>Removed·Functionality··Erlang/OTP·v27.2.2</title>10 ····<title>Removed·Functionality··Erlang/OTP·v27.2.2</title>
11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
14 ····<script·src="dist/sidebar_items-712764E3.js"></script>14 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
15 ····<script·src="docs_config.js"></script>15 ····<script·src="docs_config.js"></script>
16 ····<script·async·src="dist/html-55NP3CS6.js"></script>16 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
17 ··</head>17 ··</head>
18 ··<body·data-type="extras"·class="page-extra">18 ··<body·data-type="extras"·class="page-extra">
19 ····<script>19 ····<script>
  
3.63 KB
./usr/share/doc/erlang-doc/html/doc/runtime_tools.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>runtime_tools··Erlang/OTP·v27.2.2</title>9 ····<title>runtime_tools\n\n<script>window.location.replace("../lib/runtime_tools-2.1.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/runtime_tools.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/runtime_tools.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>runtime_tools</span>112 ····<span>runtime_tools\n\n&lt;script&gt;window.location.replace(&quot;../lib/runtime_tools-2.1.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/runtime_tools-2.1.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="reltool.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="reltool.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 reltool122 reltool\n\n<script>window.location.replace("../lib/reltool-1.0.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="syntax_tools.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="syntax_tools.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 syntax_tools132 syntax_tools\n\n<script>window.location.replace("../lib/syntax_tools-3.2.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.13 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 r\x8ru\x8un\x8nt\x8ti\x8im\x8me\x8e_\x8_t\x8to\x8oo\x8ol\x8ls\x8s9 r\x8ru\x8un\x8nt\x8ti\x8im\x8me\x8e_\x8_t\x8to\x8oo\x8ol\x8ls\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./r.ru.un.nt.ti.im.me.e_._t.to.oo.ol.ls.s-.-2.2...1.1...1.1/./
 10 d\x8do\x8oc\x8c/\x8/h\x8ht\x8tm\x8ml\x8l/\x8/i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8r_\x8e_\x8l_\x8t_\x8o_\x8o_\x8l11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8r_\x8e_\x8l_\x8t_\x8o_\x8o_\x8l_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8y_\x8n_\x8t_\x8a_\x8x_\x8__\x8t_\x8o_\x8o_\x8l_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8y_\x8n_\x8t_\x8a_\x8x_\x8__\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.39 KB
./usr/share/doc/erlang-doc/html/doc/sasl.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>sasl··Erlang/OTP·v27.2.2</title>9 ····<title>sasl\n\n<script>window.location.replace("../lib/sasl-4.2.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/sasl.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/sasl.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>sasl</span>112 ····<span>sasl\n\n&lt;script&gt;window.location.replace(&quot;../lib/sasl-4.2.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/sasl-4.2.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="kernel.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="kernel.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 kernel122 kernel\n\n<script>window.location.replace("../lib/kernel-10.2.2/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="stdlib.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="stdlib.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 stdlib132 stdlib\n\n<script>window.location.replace("../lib/stdlib-6.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.01 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 s\x8sa\x8as\x8sl\x8l9 s\x8sa\x8as\x8sl\x8l\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./s.sa.as.sl.l-.-4.4...2.2...2.2/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8k_\x8e_\x8r_\x8n_\x8e_\x8l11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8k_\x8e_\x8r_\x8n_\x8e_\x8l_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8t_\x8d_\x8l_\x8i_\x8b12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8t_\x8d_\x8l_\x8i_\x8b_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
711 B
./usr/share/doc/erlang-doc/html/doc/scheduled_for_removal.html
    
Offset 10, 15 lines modifiedOffset 10, 15 lines modified
  
10 ····<title>Scheduled·for·Removal··Erlang/OTP·v27.2.2</title>10 ····<title>Scheduled·for·Removal··Erlang/OTP·v27.2.2</title>
11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
14 ····<script·src="dist/sidebar_items-712764E3.js"></script>14 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
15 ····<script·src="docs_config.js"></script>15 ····<script·src="docs_config.js"></script>
16 ····<script·async·src="dist/html-55NP3CS6.js"></script>16 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
17 ··</head>17 ··</head>
18 ··<body·data-type="extras"·class="page-extra">18 ··<body·data-type="extras"·class="page-extra">
19 ····<script>19 ····<script>
  
1.13 KB
./usr/share/doc/erlang-doc/html/doc/search.html
    
Offset 12, 15 lines modifiedOffset 12, 15 lines modified
  
12 ····<title>Search··Erlang/OTP·v27.2.2</title>12 ····<title>Search··Erlang/OTP·v27.2.2</title>
13 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>13 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
14 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>14 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
15 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>15 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
16 ····<script·src="dist/sidebar_items-712764E3.js"></script>16 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
17 ····<script·src="docs_config.js"></script>17 ····<script·src="docs_config.js"></script>
18 ····<script·async·src="dist/html-55NP3CS6.js"></script>18 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
19 ··</head>19 ··</head>
20 ··<body·data-type="search"·class="page-search">20 ··<body·data-type="search"·class="page-search">
21 ····<script>21 ····<script>
  
Offset 108, 15 lines modifiedOffset 108, 15 lines modified
108 <div·id="search">108 <div·id="search">
109 ··<h1>109 ··<h1>
110 ····<span></span>110 ····<span></span>
111 ··</h1>111 ··</h1>
  
112 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>112 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>
113 </div>113 </div>
114 <script·src="dist/search_data-1CD15961.js"></script>114 <script·src="dist/search_data-858E7357.js"></script>
115 ····<footer·class="footer">115 ····<footer·class="footer">
116 ······<p>116 ······<p>
  
117 ········<span·class="line">117 ········<span·class="line">
118 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">118 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">
119 ············Search·HexDocs119 ············Search·HexDocs
120 ··········</button>120 ··········</button>
3.37 KB
./usr/share/doc/erlang-doc/html/doc/snmp.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>snmp··Erlang/OTP·v27.2.2</title>9 ····<title>snmp\n\n<script>window.location.replace("../lib/snmp-5.18/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/oam/snmp.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/oam/snmp.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>snmp</span>112 ····<span>snmp\n\n&lt;script&gt;window.location.replace(&quot;../lib/snmp-5.18/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/snmp-5.18/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="os_mon.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="os_mon.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 os_mon122 os_mon\n\n<script>window.location.replace("../lib/os_mon-2.10.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="asn1.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="asn1.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 asn1132 asn1\n\n<script>window.location.replace("../lib/asn1-5.3.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1020 B
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 s\x8sn\x8nm\x8mp\x8p9 s\x8sn\x8nm\x8mp\x8p\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./s.sn.nm.mp.p-.-5.5...1.18.8/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8o_\x8s_\x8__\x8m_\x8o_\x8n11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8o_\x8s_\x8__\x8m_\x8o_\x8n_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8a_\x8s_\x8n_\x8112 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8a_\x8s_\x8n_\x81_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.39 KB
./usr/share/doc/erlang-doc/html/doc/ssh.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>ssh··Erlang/OTP·v27.2.2</title>9 ····<title>ssh\n\n<script>window.location.replace("../lib/ssh-5.2.6/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/ssh.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/ssh.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>ssh</span>112 ····<span>ssh\n\n&lt;script&gt;window.location.replace(&quot;../lib/ssh-5.2.6/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/ssh-5.2.6/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="public_key.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="public_key.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 public_key122 public_key\n\n<script>window.location.replace("../lib/public_key-1.17.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="ssl.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="ssl.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 ssl132 ssl\n\n<script>window.location.replace("../lib/ssl-11.2.7/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.01 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 s\x8ss\x8sh\x8h9 s\x8ss\x8sh\x8h\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./s.ss.sh.h-.-5.5...2.2...6.6/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8p_\x8u_\x8b_\x8l_\x8i_\x8c_\x8__\x8k_\x8e_\x8y11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8p_\x8u_\x8b_\x8l_\x8i_\x8c_\x8__\x8k_\x8e_\x8y_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8s_\x8l12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8s_\x8s_\x8l_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.34 KB
./usr/share/doc/erlang-doc/html/doc/ssl.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>ssl··Erlang/OTP·v27.2.2</title>9 ····<title>ssl\n\n<script>window.location.replace("../lib/ssl-11.2.7/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/ssl.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/ssl.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>ssl</span>112 ····<span>ssl\n\n&lt;script&gt;window.location.replace(&quot;../lib/ssl-11.2.7/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/ssl-11.2.7/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="ssh.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="ssh.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 ssh122 ssh\n\n<script>window.location.replace("../lib/ssh-5.2.6/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="tftp.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="tftp.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 tftp132 tftp\n\n<script>window.location.replace("../lib/tftp-1.2.2/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1000 B
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 s\x8ss\x8sl\x8l9 s\x8ss\x8sl\x8l\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./s.ss.sl.l-.-1.11.1...2.2...7.7/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8s_\x8h11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8s_\x8h_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8t_\x8f_\x8t_\x8p12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8t_\x8f_\x8t_\x8p_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.4 KB
./usr/share/doc/erlang-doc/html/doc/stdlib.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>stdlib··Erlang/OTP·v27.2.2</title>9 ····<title>stdlib\n\n<script>window.location.replace("../lib/stdlib-6.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/stdlib.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/core/stdlib.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>stdlib</span>112 ····<span>stdlib\n\n&lt;script&gt;window.location.replace(&quot;../lib/stdlib-6.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/stdlib-6.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="sasl.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="sasl.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 sasl122 sasl\n\n<script>window.location.replace("../lib/sasl-4.2.2/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="mnesia.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="mnesia.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 mnesia132 mnesia\n\n<script>window.location.replace("../lib/mnesia-4.23.3/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.01 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 s\x8st\x8td\x8dl\x8li\x8ib\x8b9 s\x8st\x8td\x8dl\x8li\x8ib\x8b\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./s.st.td.dl.li.ib.b-.-6.6...2.2/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8a_\x8s_\x8l11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8a_\x8s_\x8l_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8m_\x8n_\x8e_\x8s_\x8i_\x8a12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8m_\x8n_\x8e_\x8s_\x8i_\x8a_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.6 KB
./usr/share/doc/erlang-doc/html/doc/syntax_tools.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>syntax_tools··Erlang/OTP·v27.2.2</title>9 ····<title>syntax_tools\n\n<script>window.location.replace("../lib/syntax_tools-3.2.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/syntax_tools.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/syntax_tools.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>syntax_tools</span>112 ····<span>syntax_tools\n\n&lt;script&gt;window.location.replace(&quot;../lib/syntax_tools-3.2.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/syntax_tools-3.2.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="runtime_tools.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="runtime_tools.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 runtime_tools122 runtime_tools\n\n<script>window.location.replace("../lib/runtime_tools-2.1.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="tools.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="tools.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 tools132 tools\n\n<script>window.location.replace("../lib/tools-4.1.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.12 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 s\x8sy\x8yn\x8nt\x8ta\x8ax\x8x_\x8_t\x8to\x8oo\x8ol\x8ls\x8s9 s\x8sy\x8yn\x8nt\x8ta\x8ax\x8x_\x8_t\x8to\x8oo\x8ol\x8ls\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./s.sy.yn.nt.ta.ax.x_._t.to.oo.ol.ls.s-.-3.3...2.2...1.1/./d.do.oc.c/./
 10 h\x8ht\x8tm\x8ml\x8l/\x8/i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8r_\x8u_\x8n_\x8t_\x8i_\x8m_\x8e_\x8__\x8t_\x8o_\x8o_\x8l_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8r_\x8u_\x8n_\x8t_\x8i_\x8m_\x8e_\x8__\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8t_\x8o_\x8o_\x8l_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
4.36 MB
./usr/share/doc/erlang-doc/html/doc/system/Erlang System Documentation.epub
14.2 KB
zipinfo {}
Max HTML report size reached
528 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:53:46,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:37:32,·uncompressed·size·20,·method=store
68.7 KB
OEBPS/typespec.xhtml
Max HTML report size reached
69.8 KB
OEBPS/tablesdatabases.xhtml
Max HTML report size reached
63.7 KB
OEBPS/sup_princ.xhtml
Max HTML report size reached
368 KB
OEBPS/statem.xhtml
Max HTML report size reached
196 KB
OEBPS/spec_proc.xhtml
Max HTML report size reached
426 KB
OEBPS/seq_prog.xhtml
Max HTML report size reached
113 KB
OEBPS/robustness.xhtml
Max HTML report size reached
18.0 KB
OEBPS/release_structure.xhtml
Max HTML report size reached
67.3 KB
OEBPS/release_handling.xhtml
Max HTML report size reached
30.3 KB
OEBPS/ref_man_records.xhtml
Max HTML report size reached
5.29 KB
OEBPS/ref_man_processes.xhtml
    
Offset 30, 18 lines modifiedOffset 30, 18 lines modified
30 (grow·and·shrink·dynamically)·with·small·memory·footprint,·fast·to·create·and30 (grow·and·shrink·dynamically)·with·small·memory·footprint,·fast·to·create·and
31 terminate,·and·the·scheduling·overhead·is·low.</p><h2·id="process-creation"·class="section-heading">31 terminate,·and·the·scheduling·overhead·is·low.</p><h2·id="process-creation"·class="section-heading">
32 ··<a·href="#process-creation"·class="hover-link">32 ··<a·href="#process-creation"·class="hover-link">
33 ····<i·class="ri-link-m"·aria-hidden="true"></i>33 ····<i·class="ri-link-m"·aria-hidden="true"></i>
34 ··</a>34 ··</a>
35 ··<span·class="text">Process·Creation</span>35 ··<span·class="text">Process·Creation</span>
36 </h2>36 </h2>
37 <p>A·process·is·created·by·calling·<a·href="../../../lib/../erts/doc/html/erlang.html#spawn/3"><code·class="inline">spawn()</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="8595798392-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="8595798392-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·8ca38b2df009df3fa2cd6bdcacd48fdb28da2887b9cd97dc1f55a1631e402e35·...·]-2">)</span><span·class="w">37 <p>A·process·is·created·by·calling·<a·href="../../../lib/../erts/doc/html/erlang.html#spawn/3"><code·class="inline">spawn()</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="6744360961-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="6744360961-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·68323792413dba459700325ca9af44c55f3ed21b47a5de2cc7f8a3340296f256·...·]-2">)</span><span·class="w">
38 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="8595798392-3">(</span><span·class="p"·data-group-id="8595798392-3">)</span><span·class="w">38 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="6744360961-3">(</span><span·class="p"·data-group-id="6744360961-3">)</span><span·class="w">
39 ··</span><span·class="n">Args</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8595798392-4">[</span><span·class="n">Arg1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ArgN</span><span·class="p"·data-group-id="8595798392-4">]</span><span·class="w">39 ··</span><span·class="n">Args</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6744360961-4">[</span><span·class="n">Arg1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ArgN</span><span·class="p"·data-group-id="6744360961-4">]</span><span·class="w">
40 ····</span><span·class="n">ArgI</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="8595798392-5">(</span><span·class="p"·data-group-id="8595798392-5">)</span></code></pre><p><code·class="inline">spawn()</code>·creates·a·new·process·and·returns·the·pid.</p><p>The·new·process·starts·executing·in·<code·class="inline">Module:Name(Arg1,...,ArgN)</code>·where·the40 ····</span><span·class="n">ArgI</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="6744360961-5">(</span><span·class="p"·data-group-id="6744360961-5">)</span></code></pre><p><code·class="inline">spawn()</code>·creates·a·new·process·and·returns·the·pid.</p><p>The·new·process·starts·executing·in·<code·class="inline">Module:Name(Arg1,...,ArgN)</code>·where·the
41 arguments·are·the·elements·of·the·(possible·empty)·<code·class="inline">Args</code>·argument·list.</p><p>There·exist·a·number·of·different·<code·class="inline">spawn</code>·BIFs:</p><ul><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_link/4"><code·class="inline">spawn_link/1,2,3,4</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_monitor/4"><code·class="inline">spawn_monitor/1,2,3,4</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_opt/5"><code·class="inline">spawn_opt/2,3,4,5</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_request/5"><code·class="inline">spawn_request/1,2,3,4,5</code></a></li></ul><h2·id="registered-processes"·class="section-heading">41 arguments·are·the·elements·of·the·(possible·empty)·<code·class="inline">Args</code>·argument·list.</p><p>There·exist·a·number·of·different·<code·class="inline">spawn</code>·BIFs:</p><ul><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_link/4"><code·class="inline">spawn_link/1,2,3,4</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_monitor/4"><code·class="inline">spawn_monitor/1,2,3,4</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_opt/5"><code·class="inline">spawn_opt/2,3,4,5</code></a></li><li><a·href="../../../lib/../erts/doc/html/erlang.html#spawn_request/5"><code·class="inline">spawn_request/1,2,3,4,5</code></a></li></ul><h2·id="registered-processes"·class="section-heading">
42 ··<a·href="#registered-processes"·class="hover-link">42 ··<a·href="#registered-processes"·class="hover-link">
43 ····<i·class="ri-link-m"·aria-hidden="true"></i>43 ····<i·class="ri-link-m"·aria-hidden="true"></i>
44 ··</a>44 ··</a>
45 ··<span·class="text">Registered·Processes</span>45 ··<span·class="text">Registered·Processes</span>
46 </h2>46 </h2>
47 <p>Besides·addressing·a·process·by·using·its·pid,·there·are·also·BIFs·for47 <p>Besides·addressing·a·process·by·using·its·pid,·there·are·also·BIFs·for
20.9 KB
OEBPS/ref_man_functions.xhtml
Max HTML report size reached
84.0 KB
OEBPS/records_macros.xhtml
Max HTML report size reached
69.8 KB
OEBPS/prog_ex_records.xhtml
Max HTML report size reached
3.69 KB
OEBPS/patterns.xhtml
    
Offset 33, 16 lines modifiedOffset 33, 16 lines modified
33 succeeds,·any·unbound·variables·in·the·pattern·become·bound.·If·the·matching33 succeeds,·any·unbound·variables·in·the·pattern·become·bound.·If·the·matching
34 fails,·an·exception·is·raised.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">X</span><span·class="p">.</span><span·class="w">34 fails,·an·exception·is·raised.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">X</span><span·class="p">.</span><span·class="w">
35 </span><span·class="gt">**·1:1:·variable·&#39;X&#39;·is·unbound·**</span><span·class="gp·unselectable">35 </span><span·class="gt">**·1:1:·variable·&#39;X&#39;·is·unbound·**</span><span·class="gp·unselectable">
36 2&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">.</span><span·class="w">36 2&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">.</span><span·class="w">
37 </span><span·class="mi">2</span><span·class="gp·unselectable">37 </span><span·class="mi">2</span><span·class="gp·unselectable">
38 3&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">38 3&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
39 </span><span·class="mi">3</span><span·class="gp·unselectable">39 </span><span·class="mi">3</span><span·class="gp·unselectable">
40 4&gt;·</span><span·class="p"·data-group-id="4986364125-1">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="4986364125-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·fba5a2ace5cf0dcf1db0fc0852da628097a7cb1808845788362460a80d92462e·...·]-2">}</span><span·class="p">.</span><span·class="w">40 4&gt;·</span><span·class="p"·data-group-id="6481351127-1">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="6481351127-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·e675f41ccc4a381f7fff309040f31ab63a23eaf73191f67f5e0e736dff8d8123·...·]-2">}</span><span·class="p">.</span><span·class="w">
41 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·{1,2}</span><span·class="gp·unselectable">41 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·{1,2}</span><span·class="gp·unselectable">
42 5&gt;·</span><span·class="p"·data-group-id="4986364125-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="4986364125-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·13da8f1b73eaebe5f9dca24d3c52859626d3f75694922354d08f606a56459514·...·]-4">}</span><span·class="p">.</span><span·class="w">42 5&gt;·</span><span·class="p"·data-group-id="6481351127-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="6481351127-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·3bbfa256bc01faf7ad7dcbbf26294416989f9332e8ad2927ab269063003d628f·...·]-4">}</span><span·class="p">.</span><span·class="w">
43 </span><span·class="p"·data-group-id="4986364125-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4986364125-5">}</span><span·class="gp·unselectable">43 </span><span·class="p"·data-group-id="6481351127-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6481351127-5">}</span><span·class="gp·unselectable">
44 6&gt;·</span><span·class="n">Y</span><span·class="p">.</span><span·class="w">44 6&gt;·</span><span·class="n">Y</span><span·class="p">.</span><span·class="w">
45 </span><span·class="mi">3</span></code></pre>45 </span><span·class="mi">3</span></code></pre>
  
46 ··</body>46 ··</body>
47 </html>47 </html>
1.47 KB
OEBPS/otp-patch-apply.xhtml
    
Offset 106, 13 lines modifiedOffset 106, 13 lines modified
106 ··</a>106 ··</a>
107 ··<span·class="text">Sanity·check</span>107 ··<span·class="text">Sanity·check</span>
108 </h2>108 </h2>
109 <p>The·application·dependencies·can·be·checked·using·the·Erlang·shell.109 <p>The·application·dependencies·can·be·checked·using·the·Erlang·shell.
110 Application·dependencies·are·verified·among·installed·applications·by110 Application·dependencies·are·verified·among·installed·applications·by
111 <code·class="inline">otp_patch_apply</code>,·but·these·are·not·necessarily·those·actually·loaded.111 <code·class="inline">otp_patch_apply</code>,·but·these·are·not·necessarily·those·actually·loaded.
112 By·calling·<code·class="inline">system_information:sanity_check()</code>·one·can·validate112 By·calling·<code·class="inline">system_information:sanity_check()</code>·one·can·validate
113 dependencies·among·applications·actually·loaded.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">system_information</span><span·class="p">:</span><span·class="nf">sanity_check</span><span·class="p"·data-group-id="6069504998-1">(</span><span·class="p"·data-group-id="6069504998-1">)</span><span·class="p">.</span><span·class="w">113 dependencies·among·applications·actually·loaded.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">system_information</span><span·class="p">:</span><span·class="nf">sanity_check</span><span·class="p"·data-group-id="5544126385-1">(</span><span·class="p"·data-group-id="5544126385-1">)</span><span·class="p">.</span><span·class="w">
114 </span><span·class="ss">ok</span></code></pre><p>Please·take·a·look·at·the·reference·of·<a·href="../../../lib/runtime_tools/doc/html/system_information.html#sanity_check/0"·title="">sanity_check()</a>·for·more114 </span><span·class="ss">ok</span></code></pre><p>Please·take·a·look·at·the·reference·of·<a·href="../../../lib/runtime_tools/doc/html/system_information.html#sanity_check/0"·title="">sanity_check()</a>·for·more
115 information.</p>115 information.</p>
  
116 ··</body>116 ··</body>
117 </html>117 </html>
9.2 KB
OEBPS/opaques.xhtml
Max HTML report size reached
15.9 KB
OEBPS/nif.xhtml
Max HTML report size reached
23.9 KB
OEBPS/modules.xhtml
Max HTML report size reached
34.7 KB
OEBPS/maps.xhtml
Max HTML report size reached
58.2 KB
OEBPS/macros.xhtml
Max HTML report size reached
55.3 KB
OEBPS/listhandling.xhtml
Max HTML report size reached
76.8 KB
OEBPS/list_comprehensions.xhtml
Max HTML report size reached
6.1 KB
OEBPS/install-win32.xhtml
Max HTML report size reached
32.9 KB
OEBPS/included_applications.xhtml
Max HTML report size reached
48.0 KB
OEBPS/gen_server_concepts.xhtml
Max HTML report size reached
213 KB
OEBPS/funs.xhtml
Max HTML report size reached
350 KB
OEBPS/expressions.xhtml
Max HTML report size reached
1.63 KB
OEBPS/example.xhtml
    
Offset 36, 14 lines modifiedOffset 36, 14 lines modified
  
36 int·bar(int·y)·{36 int·bar(int·y)·{
37 ··return·y*2;37 ··return·y*2;
38 }</code></pre><p>The·functions·are·deliberately·kept·as·simple·as·possible,·for·readability38 }</code></pre><p>The·functions·are·deliberately·kept·as·simple·as·possible,·for·readability
39 reasons.</p><p>From·an·Erlang·perspective,·it·is·preferable·to·be·able·to·call·<code·class="inline">foo</code>·and·<code·class="inline">bar</code>39 reasons.</p><p>From·an·Erlang·perspective,·it·is·preferable·to·be·able·to·call·<code·class="inline">foo</code>·and·<code·class="inline">bar</code>
40 without·having·to·bother·about·that·they·are·C·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·Erlang·code</span><span·class="w">40 without·having·to·bother·about·that·they·are·C·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·Erlang·code</span><span·class="w">
41 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">41 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
42 </span><span·class="n">Res</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">complex</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="8243568311-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="8243568311-1">)</span><span·class="p">,</span><span·class="w">42 </span><span·class="n">Res</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">complex</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="1278777138-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="1278777138-1">)</span><span·class="p">,</span><span·class="w">
43 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Here,·the·communication·with·C·is·hidden·in·the·implementation·of·<code·class="inline">complex.erl</code>.43 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Here,·the·communication·with·C·is·hidden·in·the·implementation·of·<code·class="inline">complex.erl</code>.
44 In·the·following·sections,·it·is·shown·how·this·module·can·be·implemented·using44 In·the·following·sections,·it·is·shown·how·this·module·can·be·implemented·using
45 the·different·interoperability·mechanisms.</p>45 the·different·interoperability·mechanisms.</p>
  
46 ··</body>46 ··</body>
47 </html>47 </html>
40.5 KB
OEBPS/events.xhtml
Max HTML report size reached
9.93 KB
OEBPS/errors.xhtml
Max HTML report size reached
17.6 KB
OEBPS/error_logging.xhtml
Max HTML report size reached
70.9 KB
OEBPS/erl_interface.xhtml
Max HTML report size reached
65.6 KB
OEBPS/eff_guide_processes.xhtml
Max HTML report size reached
33.3 KB
OEBPS/eff_guide_functions.xhtml
Max HTML report size reached
7.09 KB
OEBPS/drivers.xhtml
Max HTML report size reached
64.9 KB
OEBPS/documentation.xhtml
Max HTML report size reached
16.2 KB
OEBPS/distributed_applications.xhtml
Max HTML report size reached
5.64 KB
OEBPS/distributed.xhtml
    
Offset 47, 25 lines modifiedOffset 47, 25 lines modified
47 </h2>47 </h2>
48 <p>A·<em>node</em>·is·an·executing·Erlang·runtime·system·that·has·been·given·a·name,·using48 <p>A·<em>node</em>·is·an·executing·Erlang·runtime·system·that·has·been·given·a·name,·using
49 the·command-line·flag·<a·href="../../../lib/../erts/doc/html/erl_cmd.xhtml#name"><code·class="inline">-name</code></a>·(long·names)·or49 the·command-line·flag·<a·href="../../../lib/../erts/doc/html/erl_cmd.xhtml#name"><code·class="inline">-name</code></a>·(long·names)·or
50 <a·href="../../../lib/../erts/doc/html/erl_cmd.xhtml#sname"><code·class="inline">-sname</code></a>·(short·names).</p><p>The·format·of·the·node·name·is·an·atom·<code·class="inline">name@host</code>.·<code·class="inline">name</code>·is·the·name·given·by50 <a·href="../../../lib/../erts/doc/html/erl_cmd.xhtml#sname"><code·class="inline">-sname</code></a>·(short·names).</p><p>The·format·of·the·node·name·is·an·atom·<code·class="inline">name@host</code>.·<code·class="inline">name</code>·is·the·name·given·by
51 the·user.·<code·class="inline">host</code>·is·the·full·host·name·if·long·names·are·used,·or·the·first·part51 the·user.·<code·class="inline">host</code>·is·the·full·host·name·if·long·names·are·used,·or·the·first·part
52 of·the·host·name·if·short·names·are·used.·Function·<a·href="../../../lib/../erts/doc/html/erlang.html#node/0"><code·class="inline">node()</code></a>52 of·the·host·name·if·short·names·are·used.·Function·<a·href="../../../lib/../erts/doc/html/erlang.html#node/0"><code·class="inline">node()</code></a>
53 returns·the·name·of·the·node.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-name·dilbert</span><span·class="w">53 returns·the·name·of·the·node.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-name·dilbert</span><span·class="w">
54 </span><span·class="p"·data-group-id="5271611951-1">(</span><span·class="ss">dilbert@uab</span><span·class="p">.</span><span·class="ss">ericsson</span><span·class="p">.</span><span·class="ss">se</span><span·class="p"·data-group-id="5271611951-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·f087afbc6517fd07abcf478b10f45d4d42881eb45f78245fece637065a05e91e·...·]-2">)</span><span·class="p">.</span><span·class="w">54 </span><span·class="p"·data-group-id="7565825467-1">(</span><span·class="ss">dilbert@uab</span><span·class="p">.</span><span·class="ss">ericsson</span><span·class="p">.</span><span·class="ss">se</span><span·class="p"·data-group-id="7565825467-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·f589be167bd5b867cd0dc26de80aaf3b7a4fd19053c37f426d9643f6d7141517·...·]-2">)</span><span·class="p">.</span><span·class="w">
55 </span><span·class="ss">&#39;dilbert@uab.ericsson.se&#39;</span><span·class="w">55 </span><span·class="ss">&#39;dilbert@uab.ericsson.se&#39;</span><span·class="w">
  
56 </span><span·class="c1">%·erl·-sname·dilbert</span><span·class="gp·unselectable">56 </span><span·class="c1">%·erl·-sname·dilbert</span><span·class="gp·unselectable">
57 (dilbert@uab)1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="5271611951-3">(</span><span·class="p"·data-group-id="5271611951-3">)</span><span·class="p">.</span><span·class="w">57 (dilbert@uab)1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="7565825467-3">(</span><span·class="p"·data-group-id="7565825467-3">)</span><span·class="p">.</span><span·class="w">
58 </span><span·class="ss">dilbert@uab</span></code></pre><p>The·node·name·can·also·be·given·in·runtime·by·calling·<a·href="../../../lib/kernel/doc/html/net_kernel.html#start/1"><code·class="inline">net_kernel:start/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl</span><span·class="gp·unselectable">58 </span><span·class="ss">dilbert@uab</span></code></pre><p>The·node·name·can·also·be·given·in·runtime·by·calling·<a·href="../../../lib/kernel/doc/html/net_kernel.html#start/1"><code·class="inline">net_kernel:start/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl</span><span·class="gp·unselectable">
59 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="1788562551-1">(</span><span·class="p"·data-group-id="1788562551-1">)</span><span·class="p">.</span><span·class="w">59 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="3281150678-1">(</span><span·class="p"·data-group-id="3281150678-1">)</span><span·class="p">.</span><span·class="w">
60 </span><span·class="ss">nonode@nohost</span><span·class="gp·unselectable">60 </span><span·class="ss">nonode@nohost</span><span·class="gp·unselectable">
61 2&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1788562551-2">(</span><span·class="p"·data-group-id="1788562551-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="1788562551-3">]</span><span·class="p"·data-group-id="17885625[·...·truncated·by·diffoscope;·len:·2,·SHA:·031b4af5197ec30a926f48cf40e11a7dbc470048a21e4003b7a3c07c5dab1baa·...·]-2">)</span><span·class="p">.</span><span·class="w">61 2&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3281150678-2">(</span><span·class="p"·data-group-id="3281150678-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="3281150678-3">]</span><span·class="p"·data-group-id="32811506[·...·truncated·by·diffoscope;·len:·2,·SHA:·349c41201b62db851192665c504b350ff98c6b45fb62a8a2161f78b6534d8de9·...·]-2">)</span><span·class="p">.</span><span·class="w">
62 </span><span·class="p"·data-group-id="1788562551-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.102</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1788562551-4">}</span><span·class="gp·unselectable">62 </span><span·class="p"·data-group-id="3281150678-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.102</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3281150678-4">}</span><span·class="gp·unselectable">
63 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="1788562551-5">(</span><span·class="p"·data-group-id="1788562551-5">)</span><span·class="p">.</span><span·class="w">63 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="3281150678-5">(</span><span·class="p"·data-group-id="3281150678-5">)</span><span·class="p">.</span><span·class="w">
64 </span><span·class="ss">dilbert@uab</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·node·with·a·long·node·name·cannot·communicate·with·a·node·with·a·short·node64 </span><span·class="ss">dilbert@uab</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·node·with·a·long·node·name·cannot·communicate·with·a·node·with·a·short·node
65 name.</p></section><h2·id="node-connections"·class="section-heading">65 name.</p></section><h2·id="node-connections"·class="section-heading">
66 ··<a·href="#node-connections"·class="hover-link">66 ··<a·href="#node-connections"·class="hover-link">
67 ····<i·class="ri-link-m"·aria-hidden="true"></i>67 ····<i·class="ri-link-m"·aria-hidden="true"></i>
68 ··</a>68 ··</a>
69 ··<span·class="text">Node·Connections</span>69 ··<span·class="text">Node·Connections</span>
70 </h2>70 </h2>
58.3 KB
OEBPS/design_principles.xhtml
Max HTML report size reached
77.0 KB
OEBPS/data_types.xhtml
Max HTML report size reached
184 KB
OEBPS/create_target.xhtml
Max HTML report size reached
2.99 KB
OEBPS/content.opf
2.96 KB
OEBPS/content.opf
Max HTML report size reached
208 KB
OEBPS/conc_prog.xhtml
Max HTML report size reached
51.5 KB
OEBPS/commoncaveats.xhtml
Max HTML report size reached
13.7 KB
OEBPS/code_loading.xhtml
Max HTML report size reached
63.5 KB
OEBPS/c_portdriver.xhtml
Max HTML report size reached
58.5 KB
OEBPS/c_port.xhtml
Max HTML report size reached
48.0 KB
OEBPS/bit_syntax.xhtml
Max HTML report size reached
79.2 KB
OEBPS/binaryhandling.xhtml
Max HTML report size reached
4.43 KB
OEBPS/benchmarking.xhtml
    
Offset 49, 16 lines modifiedOffset 49, 16 lines modified
49 fast·as·possible,·what·can·we·do?·One·way·could·be·to·generate·more49 fast·as·possible,·what·can·we·do?·One·way·could·be·to·generate·more
50 than·two·bytes·at·the·time.</p><pre><code·class="text">%·erlperf·'rand:bytes(100).'·'crypto:strong_rand_bytes(100).'50 than·two·bytes·at·the·time.</p><pre><code·class="text">%·erlperf·'rand:bytes(100).'·'crypto:strong_rand_bytes(100).'
51 Code···································||········QPS·······Time···Rel51 Code···································||········QPS·······Time···Rel
52 rand:bytes(100).························1····2124·Ki·····470·ns··100%52 rand:bytes(100).························1····2124·Ki·····470·ns··100%
53 crypto:strong_rand_bytes(100).··········1····1915·Ki·····522·ns···90%</code></pre><p><a·href="../../../lib/stdlib/doc/html/rand.html#bytes/1"><code·class="inline">rand:bytes/1</code></a>·is·still·faster·when·we·generate·100·bytes·at·the·time,53 crypto:strong_rand_bytes(100).··········1····1915·Ki·····522·ns···90%</code></pre><p><a·href="../../../lib/stdlib/doc/html/rand.html#bytes/1"><code·class="inline">rand:bytes/1</code></a>·is·still·faster·when·we·generate·100·bytes·at·the·time,
54 but·the·relative·difference·is·smaller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlperf·&#39;rand:bytes(1000).&#39;·&#39;crypto:strong_rand_bytes(1000).&#39;</span><span·class="w">54 but·the·relative·difference·is·smaller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlperf·&#39;rand:bytes(1000).&#39;·&#39;crypto:strong_rand_bytes(1000).&#39;</span><span·class="w">
55 </span><span·class="n">Code</span><span·class="w">····································</span><span·class="p">||</span><span·class="w">········</span><span·class="n">QPS</span><span·class="w">·······</span><span·class="n">Time</span><span·class="w">···</span><span·class="n">Rel</span><span·class="w">55 </span><span·class="n">Code</span><span·class="w">····································</span><span·class="p">||</span><span·class="w">········</span><span·class="n">QPS</span><span·class="w">·······</span><span·class="n">Time</span><span·class="w">···</span><span·class="n">Rel</span><span·class="w">
56 </span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">strong_rand_bytes</span><span·class="p"·data-group-id="7088574595-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="7088574595-1">)</span><span·class="p">.</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">····</span><span·class="mi">1518</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">·····</span><span·class="mi">658</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">··</span><span·class="mi">100</span><span·class="c1">%</span><span·class="w">56 </span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">strong_rand_bytes</span><span·class="p"·data-group-id="6628092197-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="6628092197-1">)</span><span·class="p">.</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">····</span><span·class="mi">1518</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">·····</span><span·class="mi">658</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">··</span><span·class="mi">100</span><span·class="c1">%</span><span·class="w">
57 </span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">bytes</span><span·class="p"·data-group-id="7088574595-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="7088574595-2">)</span><span·class="p">.</span><span·class="w">························</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">284</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">····</span><span·class="mi">3521</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">···</span><span·class="mi">19</span><span·class="c1">%</span></code></pre><p>When·we·generate·1000·bytes·at·the·time,·<a·href="../../../lib/crypto/doc/html/crypto.html#strong_rand_bytes/1"><code·class="inline">crypto:strong_rand_bytes/1</code></a>·is57 </span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">bytes</span><span·class="p"·data-group-id="6628092197-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="6628092197-2">)</span><span·class="p">.</span><span·class="w">························</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">284</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">····</span><span·class="mi">3521</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">···</span><span·class="mi">19</span><span·class="c1">%</span></code></pre><p>When·we·generate·1000·bytes·at·the·time,·<a·href="../../../lib/crypto/doc/html/crypto.html#strong_rand_bytes/1"><code·class="inline">crypto:strong_rand_bytes/1</code></a>·is
58 now·the·fastest.</p><h2·id="benchmarking-using-erlang-otp-functionality"·class="section-heading">58 now·the·fastest.</p><h2·id="benchmarking-using-erlang-otp-functionality"·class="section-heading">
59 ··<a·href="#benchmarking-using-erlang-otp-functionality"·class="hover-link">59 ··<a·href="#benchmarking-using-erlang-otp-functionality"·class="hover-link">
60 ····<i·class="ri-link-m"·aria-hidden="true"></i>60 ····<i·class="ri-link-m"·aria-hidden="true"></i>
61 ··</a>61 ··</a>
62 ··<span·class="text">Benchmarking·using·Erlang/OTP·functionality</span>62 ··<span·class="text">Benchmarking·using·Erlang/OTP·functionality</span>
63 </h2>63 </h2>
64 <p>Benchmarks·can·measure·wall-clock·time·or·CPU·time.</p><ul><li><p><a·href="../../../lib/stdlib/doc/html/timer.html#tc/3"><code·class="inline">timer:tc/3</code></a>·measures·wall-clock·time.·The·advantage·with·wall-clock·time·is64 <p>Benchmarks·can·measure·wall-clock·time·or·CPU·time.</p><ul><li><p><a·href="../../../lib/stdlib/doc/html/timer.html#tc/3"><code·class="inline">timer:tc/3</code></a>·measures·wall-clock·time.·The·advantage·with·wall-clock·time·is
149 KB
OEBPS/appup_cookbook.xhtml
Max HTML report size reached
56.1 KB
OEBPS/applications.xhtml
Max HTML report size reached
56.2 KB
./usr/share/doc/erlang-doc/html/doc/system/applications.html
    
Offset 135, 34 lines modifiedOffset 135, 34 lines modified
135 <a·href="applications.html#app_dir">directory·structure</a>.</p><p><a·href=""·id="callback_module"></a></p><h2·id="application-callback-module"·class="section-heading">135 <a·href="applications.html#app_dir">directory·structure</a>.</p><p><a·href=""·id="callback_module"></a></p><h2·id="application-callback-module"·class="section-heading">
136 ··<a·href="#application-callback-module"·class="hover-link">136 ··<a·href="#application-callback-module"·class="hover-link">
137 ····<i·class="ri-link-m"·aria-hidden="true"></i>137 ····<i·class="ri-link-m"·aria-hidden="true"></i>
138 ··</a>138 ··</a>
139 ··<span·class="text">Application·Callback·Module</span>139 ··<span·class="text">Application·Callback·Module</span>
140 </h2>140 </h2>
141 <p>How·to·start·and·stop·the·code·for·the·application,·including·its·supervision141 <p>How·to·start·and·stop·the·code·for·the·application,·including·its·supervision
142 tree,·is·described·by·two·callback·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start</span><span·class="p"·data-group-id="3892706357-1">(</span><span·class="n">StartType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="3892706357-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3892706357-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="3892706357-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="3892706357-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3892706357-3">}</span><span·class="w"> 
143 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3892706357-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="3892706357-4">)</span></code></pre><ul><li><code·class="inline">start/2</code>·is·called·when·starting·the·ap[·...·truncated·by·diffoscope;·len:·30,·SHA:·e1e51cf208e8b479c99ec5ac74636ae6d670d0591b55b4bb7dda9657bce79190·...·]142 tree,·is·described·by·two·callback·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start</span><span·class="p"·data-group-id="4013898115-1">(</span><span·class="n">StartType</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·740,·SHA:·25c94780501db3728a627760692517a248c858efea9408a49b2ec1b2bb8fbe6c·...·]
 143 </span><span·class="nf">stop</span><span·class="p"·data-group-id="4013898115-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="4013898115-4">)</span></code></pre><ul><li><code·class="inline">start/2</code>·is·called·when·starting·the·application·and·is·to·create·the
144 supervision·tree·by·starting·the·top·supervisor.·It·is·expected·to·return·the144 supervision·tree·by·starting·the·top·supervisor.·It·is·expected·to·return·the
145 pid·of·the·top·supervisor·and·an·optional·term,·<code·class="inline">State</code>,·which·defaults·to145 pid·of·the·top·supervisor·and·an·optional·term,·<code·class="inline">State</code>,·which·defaults·to
146 <code·class="inline">[]</code>.·This·term·is·passed·as·is·to·<code·class="inline">stop/1</code>.</li><li><code·class="inline">StartType</code>·is·usually·the·atom·<code·class="inline">normal</code>.·It·has·other·values·only·in·the·case146 <code·class="inline">[]</code>.·This·term·is·passed·as·is·to·<code·class="inline">stop/1</code>.</li><li><code·class="inline">StartType</code>·is·usually·the·atom·<code·class="inline">normal</code>.·It·has·other·values·only·in·the·case
147 of·a·takeover·or·failover;·see147 of·a·takeover·or·failover;·see
148 <a·href="distributed_applications.html">Distributed·Applications</a>.</li><li><code·class="inline">StartArgs</code>·is·defined·by·the·key·<code·class="inline">mod</code>·in·the148 <a·href="distributed_applications.html">Distributed·Applications</a>.</li><li><code·class="inline">StartArgs</code>·is·defined·by·the·key·<code·class="inline">mod</code>·in·the
149 <a·href="applications.html#appl_res_file">application·resource·file</a>.</li><li><code·class="inline">stop/1</code>·is·called·<em>after</em>·the·application·has·been·stopped·and·is·to·do·any149 <a·href="applications.html#appl_res_file">application·resource·file</a>.</li><li><code·class="inline">stop/1</code>·is·called·<em>after</em>·the·application·has·been·stopped·and·is·to·do·any
150 necessary·cleaning·up.·The·actual·stopping·of·the·application,·that·is,150 necessary·cleaning·up.·The·actual·stopping·of·the·application,·that·is,
151 shutting·down·the·supervision·tree,·is·handled·automatically·as·described·in151 shutting·down·the·supervision·tree,·is·handled·automatically·as·described·in
152 <a·href="applications.html#stopping">Starting·and·Stopping·Applications</a>.</li></ul><p><a·href=""·id="ch_app"></a></p><p>Example·of·an·application·callback·module·for·packaging·the·supervision·tree152 <a·href="applications.html#stopping">Starting·and·Stopping·Applications</a>.</li></ul><p><a·href=""·id="ch_app"></a></p><p>Example·of·an·application·callback·module·for·packaging·the·supervision·tree
153 from·<a·href="sup_princ.html#ex">Supervisor·Behaviour</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9566172307-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="9566172307-1">)</span><span·class="p">.</span><span·class="w">153 from·<a·href="sup_princ.html#ex">Supervisor·Behaviour</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0010758420-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="0010758420-1">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="9566172307-2">(</span><span·class="ss">application</span><span·class="p"·data-group-id="9566172307-2">)</span><span·class="p">.</span><span·class="w">154 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="0010758420-2">(</span><span·class="ss">application</span><span·class="p"·data-group-id="0010758420-2">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="w">155 </span><span·class="w">
156 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9566172307-3">(</span><span·class="p"·data-group-id="9566172307-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·7540805dec47ba071c46ab02370dfb5b825aa6aa697420af432a5e3e559b0761·...·]-3">)</span><span·class="p">.</span><span·class="w">156 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0010758420-3">(</span><span·class="p"·data-group-id="0010758420-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·ba54bd104c2799822c5b7ed6b2571be93c801ccb4661d7a09161503448312a53·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">start</span><span·class="p"·data-group-id="9566172307-5">(</span><span·class="p">_</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="9566172307-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">start</span><span·class="p"·data-group-id="0010758420-5">(</span><span·class="p">_</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="0010758420-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="nc">ch_sup</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="9566172307-6">(</span><span·class="p"·data-group-id="9566172307-6">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nc">ch_sup</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="0010758420-6">(</span><span·class="p"·data-group-id="0010758420-6">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">stop</span><span·class="p"·data-group-id="9566172307-7">(</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="9566172307-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 </span><span·class="nf">stop</span><span·class="p"·data-group-id="0010758420-7">(</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="0010758420-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>A·library·application·that·cannot·be·started·or·stopped·does·not·need·any160 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>A·library·application·that·cannot·be·started·or·stopped·does·not·need·any
161 application·callback·module.</p><p><a·href=""·id="appl_res_file"></a></p><h2·id="application-resource-file"·class="section-heading">161 application·callback·module.</p><p><a·href=""·id="appl_res_file"></a></p><h2·id="application-resource-file"·class="section-heading">
162 ··<a·href="#application-resource-file"·class="hover-link">162 ··<a·href="#application-resource-file"·class="hover-link">
163 ····<i·class="ri-link-m"·aria-hidden="true"></i>163 ····<i·class="ri-link-m"·aria-hidden="true"></i>
164 ··</a>164 ··</a>
165 ··<span·class="text">Application·Resource·File</span>165 ··<span·class="text">Application·Resource·File</span>
166 </h2>166 </h2>
Offset 173, 22 lines modifiedOffset 173, 22 lines modified
173 keys.</li></ul><p>The·contents·of·a·minimal·<code·class="inline">.app</code>·file·for·a·library·application·<code·class="inline">libapp</code>·looks173 keys.</li></ul><p>The·contents·of·a·minimal·<code·class="inline">.app</code>·file·for·a·library·application·<code·class="inline">libapp</code>·looks
174 as·follows:</p><pre><code·class="text">{application,·libapp,·[]}.</code></pre><p>The·contents·of·a·minimal·<code·class="inline">.app</code>·file·<code·class="inline">ch_app.app</code>·for·a·supervision·tree174 as·follows:</p><pre><code·class="text">{application,·libapp,·[]}.</code></pre><p>The·contents·of·a·minimal·<code·class="inline">.app</code>·file·<code·class="inline">ch_app.app</code>·for·a·supervision·tree
175 application·like·<code·class="inline">ch_app</code>·looks·as·follows:</p><pre><code·class="text">{application,·ch_app,175 application·like·<code·class="inline">ch_app</code>·looks·as·follows:</p><pre><code·class="text">{application,·ch_app,
176 ·[{mod,·{ch_app,[]}}]}.</code></pre><p>The·key·<code·class="inline">mod</code>·defines·the·callback·module·and·start·argument·of·the·application,176 ·[{mod,·{ch_app,[]}}]}.</code></pre><p>The·key·<code·class="inline">mod</code>·defines·the·callback·module·and·start·argument·of·the·application,
177 in·this·case·<code·class="inline">ch_app</code>·and·<code·class="inline">[]</code>,·respectively.·This·means·that·the·following·is177 in·this·case·<code·class="inline">ch_app</code>·and·<code·class="inline">[]</code>,·respectively.·This·means·that·the·following·is
178 called·when·the·application·is·to·be·started:</p><pre><code·class="text">ch_app:start(normal,·[])</code></pre><p>The·following·is·called·when·the·application·is·stopped:</p><pre><code·class="text">ch_app:stop([])</code></pre><p>When·using·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>,·the·Erlang/OTP·tools·for·packaging·code·(see·Section178 called·when·the·application·is·to·be·started:</p><pre><code·class="text">ch_app:start(normal,·[])</code></pre><p>The·following·is·called·when·the·application·is·stopped:</p><pre><code·class="text">ch_app:stop([])</code></pre><p>When·using·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>,·the·Erlang/OTP·tools·for·packaging·code·(see·Section
179 <a·href="release_structure.html">Releases</a>),·the·keys·<code·class="inline">description</code>,·<code·class="inline">vsn</code>,·<code·class="inline">modules</code>,179 <a·href="release_structure.html">Releases</a>),·the·keys·<code·class="inline">description</code>,·<code·class="inline">vsn</code>,·<code·class="inline">modules</code>,
180 <code·class="inline">registered</code>,·and·<code·class="inline">applications</code>·are·also·to·be·specified:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5273693613-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">180 <code·class="inline">registered</code>,·and·<code·class="inline">applications</code>·are·also·to·be·specified:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5353402531-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">
181 ·</span><span·class="p"·data-group-id="5273693613-2">[</span><span·class="p"·data-group-id="5273693613-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="5273693613-3">}</span><span·class="p">,</span><span·class="w">181 ·</span><span·class="p"·data-group-id="5353402531-2">[</span><span·class="p"·data-group-id="5353402531-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="5353402531-3">}</span><span·class="p">,</span><span·class="w">
182 ··</span><span·class="p"·data-group-id="5273693613-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="5273693613-4">}</span><span·class="p">,</span><span·class="w">182 ··</span><span·class="p"·data-group-id="5353402531-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="5353402531-4">}</span><span·class="p">,</span><span·class="w">
183 ··</span><span·class="p"·data-group-id="5273693613-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5273693613-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup</[·...·truncated·by·diffoscope;·len:·174,·SHA:·21cbd6e2940aa0b8a5aad90d069b878c8bd3ebed7df60edfa93d696ae5e480ba·...·]-5">}</span><span·class="p">,</span><span·class="w">183 ··</span><span·class="p"·data-group-id="5353402531-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5353402531-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup</[·...·truncated·by·diffoscope;·len:·174,·SHA:·2d9b8eafc0121ccedfe91069a34378ac17f1d901054ee6ef299887c143dc8621·...·]-5">}</span><span·class="p">,</span><span·class="w">
184 ··</span><span·class="p"·data-group-id="5273693613-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5273693613-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="5273693613-8">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·231c015e346550ff3e1b0806996f33e1398a640b9b35fc06b81b1194c9487014·...·]-7">}</span><span·class="p">,</span><span·class="w">184 ··</span><span·class="p"·data-group-id="5353402531-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5353402531-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="5353402531-8">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a5309f92a1b372de3367a32e96a3e51d8a0f094808ea47db213b37718e636213·...·]-7">}</span><span·class="p">,</span><span·class="w">
185 ··</span><span·class="p"·data-group-id="5273693613-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5273693613-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">st[·...·truncated·by·diffoscope;·len:·182,·SHA:·18df7d5025d26972f1b54966db4179d4812cda76178e7344c6561a770229a911·...·]-9">}</span><span·class="p">,</span><span·class="w">185 ··</span><span·class="p"·data-group-id="5353402531-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5353402531-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">st[·...·truncated·by·diffoscope;·len:·182,·SHA:·fd4c890662a381fa6c89c5f161c84f298ec9a0320fd1e39d32df562844dcbc19·...·]-9">}</span><span·class="p">,</span><span·class="w">
186 ··</span><span·class="p"·data-group-id="5273693613-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5273693613-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="5273693613-13">[</sp[·...·truncated·by·diffoscope;·len:·152,·SHA:·70b554b1748a4746444b0d7adc05bd52cb3e822ca1b644f80da3e456e51ec32b·...·]-11">}</span><span·class="w">186 ··</span><span·class="p"·data-group-id="5353402531-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5353402531-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="5353402531-13">[</sp[·...·truncated·by·diffoscope;·len:·152,·SHA:·14237ddcfcda7839e9111ed3dc963a58c60d62069a683fcd960ae08ea37ad76d·...·]-11">}</span><span·class="w">
187 ·</span><span·class="p"·data-group-id="5273693613-2">]</span><span·class="p"·data-group-id="5273693613-1">}</span><span·class="p">.</span></code></pre><ul><li><code·class="inline">description</code>·-·A·short·description,·a·string.·Defaults·to·<code·class="inline">&quot;&quot;</code>.</li><li><code·class="inline">vsn</code>·-·Version·number,·a·string.·Defaults·to·<code·class="inline">&quot;&quot;</code>.</li><li><code·class="inline">modules</code>·-·All·modules·<em>introduced</em>·by·this·application.·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·uses187 ·</span><span·class="p"·data-group-id="5353402531-2">]</span><span·class="p"·data-group-id="5353402531-1">}</span><span·class="p">.</span></code></pre><ul><li><code·class="inline">description</code>·-·A·short·description,·a·string.·Defaults·to·<code·class="inline">&quot;&quot;</code>.</li><li><code·class="inline">vsn</code>·-·Version·number,·a·string.·Defaults·to·<code·class="inline">&quot;&quot;</code>.</li><li><code·class="inline">modules</code>·-·All·modules·<em>introduced</em>·by·this·application.·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·uses
188 this·list·when·generating·boot·scripts·and·tar·files.·A·module·must·only188 this·list·when·generating·boot·scripts·and·tar·files.·A·module·must·only
189 be·included·in·one·application.·Defaults·to·<code·class="inline">[]</code>.</li><li><code·class="inline">registered</code>·-·All·names·of·registered·processes·in·the·application.189 be·included·in·one·application.·Defaults·to·<code·class="inline">[]</code>.</li><li><code·class="inline">registered</code>·-·All·names·of·registered·processes·in·the·application.
190 <a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·uses·this·list·to·detect·name·clashes·between·applications.190 <a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·uses·this·list·to·detect·name·clashes·between·applications.
191 Defaults·to·<code·class="inline">[]</code>.</li><li><code·class="inline">applications</code>·-·All·applications·that·must·be·started·before·this191 Defaults·to·<code·class="inline">[]</code>.</li><li><code·class="inline">applications</code>·-·All·applications·that·must·be·started·before·this
192 application·is·started.·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·uses·this·list·to·generate·correct·boot192 application·is·started.·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·uses·this·list·to·generate·correct·boot
193 scripts.·Defaults·to·<code·class="inline">[]</code>.·Notice·that·all·applications·have·dependencies·to193 scripts.·Defaults·to·<code·class="inline">[]</code>.·Notice·that·all·applications·have·dependencies·to
194 at·least·Kernel·and·STDLIB.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>For·details·about·the·syntax·and·contents·of·the·application·resource·file,194 at·least·Kernel·and·STDLIB.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>For·details·about·the·syntax·and·contents·of·the·application·resource·file,
Offset 300, 38 lines modifiedOffset 300, 38 lines modified
300 stop·applications.</p><h2·id="loading-and-unloading-applications"·class="section-heading">300 stop·applications.</p><h2·id="loading-and-unloading-applications"·class="section-heading">
301 ··<a·href="#loading-and-unloading-applications"·class="hover-link">301 ··<a·href="#loading-and-unloading-applications"·class="hover-link">
302 ····<i·class="ri-link-m"·aria-hidden="true"></i>302 ····<i·class="ri-link-m"·aria-hidden="true"></i>
303 ··</a>303 ··</a>
304 ··<span·class="text">Loading·and·Unloading·Applications</span>304 ··<span·class="text">Loading·and·Unloading·Applications</span>
305 </h2>305 </h2>
306 <p>Before·an·application·can·be·started,·it·must·be·<em>loaded</em>.·The·application306 <p>Before·an·application·can·be·started,·it·must·be·<em>loaded</em>.·The·application
307 controller·reads·and·stores·the·information·from·the·<code·class="inline">.app</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">load</span><span·class="p"·data-group-id="3160934287-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="3160934287-1">)</span><span·class="p">.</span><span·class="w">307 controller·reads·and·stores·the·information·from·the·<code·class="inline">.app</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">load</span><span·class="p"·data-group-id="0427108621-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="0427108621-1">)</span><span·class="p">.</span><span·class="w">
308 </span><span·class="ss">ok</span><span·class="gp·unselectable">308 </span><span·class="ss">ok</span><span·class="gp·unselectable">
309 2&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">loaded_applications</span><span·class="p"·data-group-id="3160934287-2">(</span><span·class="p"·data-group-id="3160934287-2">)</span><span·class="p">.</span><span·class="w">309 2&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">loaded_applications</span><span·class="p"·data-group-id="0427108621-2">(</span><span·class="p"·data-group-id="0427108621-2">)</span><span·class="p">.</span><span·class="w">
310 </span><span·class="p"·data-group-id="3160934287-3">[</span><span·class="p"·data-group-id="3160934287-4">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;2.8.1.3&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·7f0a2124e2beeaa4a450133c63078e7197eaf56b3a168ce718101a9dd0311002·...·]-4">}</span><span·class="p">,</span><span·class="w">310 </span><span·class="p"·data-group-id="0427108621-3">[</span><span·class="p"·data-group-id="0427108621-4">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;2.8.1.3&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·e9426c57a42af112bb1b050e055327606c4e175768425d7f9b87176530832e26·...·]-4">}</span><span·class="p">,</span><span·class="w">
311 ·</span><span·class="p"·data-group-id="3160934287-5">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;1.11.4.3&quot;</span><span·class="p"·data-group-id="3160934287-5">}</span><span·class="p">,</span><span·class="w">311 ·</span><span·class="p"·data-group-id="0427108621-5">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;1.11.4.3&quot;</span><span·class="p"·data-group-id="0427108621-5">}</span><span·class="p">,</span><span·class="w">
312 ·</span><span·class="p"·data-group-id="3160934287-6">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="3160934287-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·3a7300edc92e60db9ef67274973e04e17e9d8bda3ce31f8b62dc9ca9a7119da1·...·]-3">]</span></code></pre><p>An·application·that·has·been·stopped,·or·has·never·been·started,·can·be312 ·</span><span·class="p"·data-group-id="0427108621-6">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="0427108621-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·ea3c8de6d2d504752037ef54139aac46401d9ba4b6427947e15aacccbfc21a55·...·]-3">]</span></code></pre><p>An·application·that·has·been·stopped,·or·has·never·been·started,·can·be
313 unloaded.·The·information·about·the·application·is·erased·from·the·internal313 unloaded.·The·information·about·the·application·is·erased·from·the·internal
314 database·of·the·application·controller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">unload</span><span·class="p"·data-group-id="1493122844-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="1493122844-1">)</span><span·class="p">.</span><span·class="w">314 database·of·the·application·controller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">unload</span><span·class="p"·data-group-id="1380993773-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="1380993773-1">)</span><span·class="p">.</span><span·class="w">
315 </span><span·class="ss">ok</span><span·class="gp·unselectable">315 </span><span·class="ss">ok</span><span·class="gp·unselectable">
316 4&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">loaded_applications</span><span·class="p"·data-group-id="1493122844-2">(</span><span·class="p"·data-group-id="1493122844-2">)</span><span·class="p">.</span><span·class="w">316 4&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">loaded_applications</span><span·class="p"·data-group-id="1380993773-2">(</span><span·class="p"·data-group-id="1380993773-2">)</span><span·class="p">.</span><span·class="w">
317 </span><span·class="p"·data-group-id="1493122844-3">[</span><span·class="p"·data-group-id="1493122844-4">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;2.8.1.3&quot;</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·b4082175af2ceb509784537127ee0f0f54f220f709ab09623ffeadfce082697c·...·]-4">}</span><span·class="p">,</span><span·class="w">317 </span><span·class="p"·data-group-id="1380993773-3">[</span><span·class="p"·data-group-id="1380993773-4">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;2.8.1.3&quot;</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·37796d86ce087e0ce2e60f772cde25f123ff411f258c008b3eaca4b2070f4cf0·...·]-4">}</span><span·class="p">,</span><span·class="w">
318 ·</span><span·class="p"·data-group-id="1493122844-5">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;1.11.4.3&quot;</span><span·class="p"·data-group-id="1493122844-5">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·4dcf3e2baf92c1029b7ef4c87cb0411a48e4f1a72b9f772bf1ed464dcd2d54eb·...·]-3">]</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Loading/unloading·an·application·does·not·load/unload·the·code·used·by·the318 ·</span><span·class="p"·data-group-id="1380993773-5">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;1.11.4.3&quot;</span><span·class="p"·data-group-id="1380993773-5">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·7d862385b1d1fb23b7532621528f3c32a4ba8550ac6d2ca41617372d3c8e1a4d·...·]-3">]</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Loading/unloading·an·application·does·not·load/unload·the·code·used·by·the
319 application.·Code·loading·is·handled·in·the·usual·way·by·the·code·server.</p></section><p><a·href=""·id="stopping"></a></p><h2·id="starting-and-stopping-applications"·class="section-heading">319 application.·Code·loading·is·handled·in·the·usual·way·by·the·code·server.</p></section><p><a·href=""·id="stopping"></a></p><h2·id="starting-and-stopping-applications"·class="section-heading">
320 ··<a·href="#starting-and-stopping-applications"·class="hover-link">320 ··<a·href="#starting-and-stopping-applications"·class="hover-link">
321 ····<i·class="ri-link-m"·aria-hidden="true"></i>321 ····<i·class="ri-link-m"·aria-hidden="true"></i>
322 ··</a>322 ··</a>
323 ··<span·class="text">Starting·and·Stopping·Applications</span>323 ··<span·class="text">Starting·and·Stopping·Applications</span>
324 </h2>324 </h2>
325 <p>An·application·is·started·by·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9885869973-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="9885869973-1">)</span><span·class="p">.</span><span·class="w">325 <p>An·application·is·started·by·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4301828059-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="4301828059-1">)</span><span·class="p">.</span><span·class="w">
326 </span><span·class="ss">ok</span><span·class="gp·unselectable">326 </span><span·class="ss">ok</span><span·class="gp·unselectable">
327 6&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">which_applications</span><span·class="p"·data-group-id="9885869973-2">(</span><span·class="p"·data-group-id="9885869973-2">)</span><span·class="p">.</span><span·class="w">327 6&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">which_applications</span><span·class="p"·data-group-id="4301828059-2">(</span><span·class="p"·data-group-id="4301828059-2">)</span><span·class="p">.</span><span·class="w">
328 </span><span·class="p"·data-group-id="9885869973-3">[</span><span·class="p"·data-group-id="9885869973-4">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;2.8.1.3&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·688cda4214ebecd33fc3874a8d52ce8b5639b85bbc760ef68b1a21bd996c6493·...·]-4">}</span><span·class="p">,</span><span·class="w">328 </span><span·class="p"·data-group-id="4301828059-3">[</span><span·class="p"·data-group-id="4301828059-4">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;2.8.1.3&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·fd84910fcfb9c02ada99ff98d510cb5f3dc6494259cf736b94f4e401ee3d2b6c·...·]-4">}</span><span·class="p">,</span><span·class="w">
329 ·</span><span·class="p"·data-group-id="9885869973-5">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;1.11.4.3&quot;</span><span·class="p"·data-group-id="9885869973-5">}</span><span·class="p">,</span><span·class="w">329 ·</span><span·class="p"·data-group-id="4301828059-5">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;1.11.4.3&quot;</span><span·class="p"·data-group-id="4301828059-5">}</span><span·class="p">,</span><span·class="w">
330 ·</span><span·class="p"·data-group-id="9885869973-6">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="9885869973-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·047962b9dcb3183c6e1711658e818b54e1dddf8595bd667747fc5bb166fe104a·...·]-3">]</span></code></pre><p>If·the·application·is·not·already·loaded,·the·application·controller·first·loads330 ·</span><span·class="p"·data-group-id="4301828059-6">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="4301828059-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f00e87f2eceec0302b760ccf86eb74d7bbd886910ba50d8407819a14526aef1a·...·]-3">]</span></code></pre><p>If·the·application·is·not·already·loaded,·the·application·controller·first·loads
331 it·using·<a·href="../../lib/kernel-10.2.2/doc/html/application.html#load/1"><code·class="inline">application:load/1</code></a>.·It·checks·the·value·of·the·<code·class="inline">applications</code>·key·to331 it·using·<a·href="../../lib/kernel-10.2.2/doc/html/application.html#load/1"><code·class="inline">application:load/1</code></a>.·It·checks·the·value·of·the·<code·class="inline">applications</code>·key·to
332 ensure·that·all·applications·that·are·to·be·started·before·this·application·are332 ensure·that·all·applications·that·are·to·be·started·before·this·application·are
333 running.</p><p><a·href=""·id="application_master"></a></p><p>Following·that,·the·application·controller·creates·an·<em>application·master</em>·for333 running.</p><p><a·href=""·id="application_master"></a></p><p>Following·that,·the·application·controller·creates·an·<em>application·master</em>·for
334 the·application.</p><p>The·application·master·establishes·itself·as·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#group_leader/0">group334 the·application.</p><p>The·application·master·establishes·itself·as·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#group_leader/0">group
335 leader</a>·of·all·processes·in·the·application335 leader</a>·of·all·processes·in·the·application
336 and·will·forward·I/O·to·the·previous·group·leader.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·purpose·of·the·application·master·being·the·group·leader·is·to·easily336 and·will·forward·I/O·to·the·previous·group·leader.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·purpose·of·the·application·master·being·the·group·leader·is·to·easily
337 keep·track·of·which·processes·that·belong·to·the·application.·That·is·needed337 keep·track·of·which·processes·that·belong·to·the·application.·That·is·needed
Offset 347, 55 lines modifiedOffset 347, 55 lines modified
347 defined·by·the·<code·class="inline">mod</code>·key.</p><h2·id="configuring-an-application"·class="section-heading">347 defined·by·the·<code·class="inline">mod</code>·key.</p><h2·id="configuring-an-application"·class="section-heading">
348 ··<a·href="#configuring-an-application"·class="hover-link">348 ··<a·href="#configuring-an-application"·class="hover-link">
349 ····<i·class="ri-link-m"·aria-hidden="true"></i>349 ····<i·class="ri-link-m"·aria-hidden="true"></i>
350 ··</a>350 ··</a>
351 ··<span·class="text">Configuring·an·Application</span>351 ··<span·class="text">Configuring·an·Application</span>
352 </h2>352 </h2>
353 <p>An·application·can·be·configured·using·<em>configuration·parameters</em>.·These·are·a353 <p>An·application·can·be·configured·using·<em>configuration·parameters</em>.·These·are·a
354 list·of·<code·class="inline">{Par,Val}</code>·tuples·specified·by·a·key·<code·class="inline">env</code>·in·the·<code·class="inline">.app</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1831682311-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">354 list·of·<code·class="inline">{Par,Val}</code>·tuples·specified·by·a·key·<code·class="inline">env</code>·in·the·<code·class="inline">.app</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8823897374-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">
355 ·</span><span·class="p"·data-group-id="1831682311-2">[</span><span·class="p"·data-group-id="1831682311-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="1831682311-3">}</span><span·class="p">,</span><span·class="w">355 ·</span><span·class="p"·data-group-id="8823897374-2">[</span><span·class="p"·data-group-id="8823897374-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="8823897374-3">}</span><span·class="p">,</span><span·class="w">
356 ··</span><span·class="p"·data-group-id="1831682311-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="1831682311-4">}</span><span·class="p">,</span><span·class="w">356 ··</span><span·class="p"·data-group-id="8823897374-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="8823897374-4">}</span><span·class="p">,</span><span·class="w">
357 ··</span><span·class="p"·data-group-id="1831682311-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1831682311-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup<[·...·truncated·by·diffoscope;·len:·175,·SHA:·5591088b86594a4d4147b4a53d4120c800b796e6189409e9956ddbbca43a0b35·...·]-5">}</span><span·class="p">,</span><span·class="w">357 ··</span><span·class="p"·data-group-id="8823897374-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8823897374-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup<[·...·truncated·by·diffoscope;·len:·175,·SHA:·a4b5eeb14414f27526ff4e26bf54f6d15d5cc4b108ab1077fe6cd0b1417aca54·...·]-5">}</span><span·class="p">,</span><span·class="w">
358 ··</span><span·class="p"·data-group-id="1831682311-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1831682311-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="1831682311-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·c675397cfeb677fd3bbfae83142ea6dd1d130578349c3732f2d8a0fd01f88f2d·...·]-7">}</span><span·class="p">,</span><span·class="w">358 ··</span><span·class="p"·data-group-id="8823897374-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8823897374-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="8823897374-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1d0b5cd4423d65a8b5aa40bae824f294e496d1847cb6ddfcee40a08c6575aa5b·...·]-7">}</span><span·class="p">,</span><span·class="w">
359 ··</span><span·class="p"·data-group-id="1831682311-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1831682311-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·c02ef678af01d51da456d79efe0ef2a761e28fcac7626c2a21cd121eec3efffa·...·]-9">}</span><span·class="p">,</span><span·class="w">359 ··</span><span·class="p"·data-group-id="8823897374-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8823897374-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·057e35392b26f0ebde16d062210971cb310dc0eff9641fb07e965f78dedd02ec·...·]-9">}</span><span·class="p">,</span><span·class="w">
360 ··</span><span·class="p"·data-group-id="1831682311-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1831682311-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="1831682311-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·6748e668744b48361ea26c65824dca96bcbf5eaa2b2bc46f3f653e4e521f6eb5·...·]-11">}</span><span·class="p">,</span><span·class="w">360 ··</span><span·class="p"·data-group-id="8823897374-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8823897374-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="8823897374-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·a59b9a1de69f487663546a3d1e3d3ce957aaa2fa350363ce3694f32408ce9fbc·...·]-11">}</span><span·class="p">,</span><span·class="w">
361 ··</span><span·class="p"·data-group-id="1831682311-14">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1831682311-15">[</span><span·class="p"·data-group-id="1831682311-16">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·eda1f9d86ded58f90ffbf98bf0955977fd3d6b638b250a118c3c288e0da8fe99·...·]-14">}</span><span·class="w">361 ··</span><span·class="p"·data-group-id="8823897374-14">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8823897374-15">[</span><span·class="p"·data-group-id="8823897374-16">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·12d013a2f062b8017ae9bca84ca7c85b2bdb6aaa32966a726e3b05597427b29d·...·]-14">}</span><span·class="w">
362 ·</span><span·class="p"·data-group-id="1831682311-2">]</span><span·class="p"·data-group-id="1831682311-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">Par</code>·is·to·be·an·atom.·<code·class="inline">Val</code>·is·any·term.·The·application·can·retrieve·the362 ·</span><span·class="p"·data-group-id="8823897374-2">]</span><span·class="p"·data-group-id="8823897374-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">Par</code>·is·to·be·an·atom.·<code·class="inline">Val</code>·is·any·term.·The·application·can·retrieve·the
363 value·of·a·configuration·parameter·by·calling·<code·class="inline">application:get_env(App,·Par)</code>·or363 value·of·a·configuration·parameter·by·calling·<code·class="inline">application:get_env(App,·Par)</code>·or
364 a·number·of·similar·functions.·For·more·information,·see·module·<a·href="../../lib/kernel-10.2.2/doc/html/application.html"><code·class="inline">application</code></a>364 a·number·of·similar·functions.·For·more·information,·see·module·<a·href="../../lib/kernel-10.2.2/doc/html/application.html"><code·class="inline">application</code></a>
365 in·Kernel.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl</span><span·class="w">365 in·Kernel.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl</span><span·class="w">
366 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="5629438469-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="5629438469-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·415,·SHA:·b3295f0d6cbb26d32722b89da56df825b9e812fe2ead5fd6a2a9088c8defa4e6·...·]-3">]</span><span·class="w">366 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="3970223896-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="3970223896-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·415,·SHA:·f7d0739efba814283632983b3e3884e72c2a3347089f7191c942ce2353622879·...·]-3">]</span><span·class="w">
  
367 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">2.3</span><span·class="p">.</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="5629438469-4">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="5629438469-4">)</span><span·class="gp·unselectable">367 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">2.3</span><span·class="p">.</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="3970223896-4">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="3970223896-4">)</span><span·class="gp·unselectable">
368 1&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5629438469-5">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="5629438469-5">)</span><span·class="p">.</span><span·class="w">368 1&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3970223896-5">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="3970223896-5">)</span><span·class="p">.</span><span·class="w">
369 </span><span·class="ss">ok</span><span·class="gp·unselectable">369 </span><span·class="ss">ok</span><span·class="gp·unselectable">
370 2&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">get_env</span><span·class="p"·data-group-id="5629438469-6">(</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</span><span·class="p"·data-group-id="5629438469-6">)</span><span·class="p">.</span><span·class="w">370 2&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">get_env</span><span·class="p"·data-group-id="3970223896-6">(</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</span><span·class="p"·data-group-id="3970223896-6">)</span><span·class="p">.</span><span·class="w">
371 </span><span·class="p"·data-group-id="5629438469-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="s">&quot;/usr/local/log&quot;</span><span·class="p"·data-group-id="5629438469-7">}</span></code></pre><p>The·values·in·the·<code·class="inline">.app</code>·file·can·be·overridden·by·values·in·a·<em>system371 </span><span·class="p"·data-group-id="3970223896-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="s">&quot;/usr/local/log&quot;</span><span·class="p"·data-group-id="3970223896-7">}</span></code></pre><p>The·values·in·the·<code·class="inline">.app</code>·file·can·be·overridden·by·values·in·a·<em>system
372 configuration·file</em>.·This·is·a·file·that·contains·configuration·parameters·for372 configuration·file</em>.·This·is·a·file·that·contains·configuration·parameters·for
373 relevant·applications:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9416958031-1">[</span><span·class="p"·data-group-id="9416958031-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9416958031-3">[</span><span·class="p"·data-group-id="9416958031-4">[·...·truncated·by·diffoscope;·len:·331,·SHA:·7ea39e4ff94a8fa4a5f26584937bc98945112dceba9804e18c7a34fd5a4fe345·...·]-2">}</span><span·class="p">,</span><span·class="w">373 relevant·applications:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7970288317-1">[</span><span·class="p"·data-group-id="7970288317-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7970288317-3">[</span><span·class="p"·data-group-id="7970288317-4">[·...·truncated·by·diffoscope;·len:·331,·SHA:·d2cb351c64cec06430ed55ede5ccf6e828155ea5443d0e0f7ebf97841affa305·...·]-2">}</span><span·class="p">,</span><span·class="w">
374 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">374 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 10651/57406 bytes (18.55%) of diff not shown.
149 KB
./usr/share/doc/erlang-doc/html/doc/system/appup_cookbook.html
    
Offset 120, 18 lines modifiedOffset 120, 18 lines modified
120 ··<a·href="#changing-a-functional-module"·class="hover-link">120 ··<a·href="#changing-a-functional-module"·class="hover-link">
121 ····<i·class="ri-link-m"·aria-hidden="true"></i>121 ····<i·class="ri-link-m"·aria-hidden="true"></i>
122 ··</a>122 ··</a>
123 ··<span·class="text">Changing·a·Functional·Module</span>123 ··<span·class="text">Changing·a·Functional·Module</span>
124 </h2>124 </h2>
125 <p>When·a·functional·module·has·been·changed,·for·example,·if·a·new·function·has125 <p>When·a·functional·module·has·been·changed,·for·example,·if·a·new·function·has
126 been·added·or·a·bug·has·been·corrected,·simple·code·replacement·is·sufficient,126 been·added·or·a·bug·has·been·corrected,·simple·code·replacement·is·sufficient,
127 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5498256414-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">127 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5052332311-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
128 ·</span><span·class="p"·data-group-id="5498256414-2">[</span><span·class="p"·data-group-id="5498256414-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5498256414-4">[</span><span·class="p"·data-group-id="5498256414-5">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">m</span><span·class="p"·data-group-id="5498256414-5">}</span><span·class="p"·data-group-id="5498256414-4">]</span><span·class="p"·data-group-id="5498256414-3">}</span><span·class="p"·data-group-id="5498256414-2">]</span><span·class="p">,</span><span·class="w"> 
129 ·</span><span·class="p"·data-group-id="5498256414-6">[</span><span·class="p"·data-group-id="5498256414-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5498256414-8">[</span><span·class="p"·data-group-id="5498256414-9">[·...·truncated·by·diffoscope;·len:·321,·SHA:·da581cb53380f1ffdfaf5602d4c95e1cfd2955352a091c16a18b0fb188ece9bd·...·]</span><span·class="w">128 ·</span><span·class="p"·data-group-id="5052332311-2">[</span><span·class="p"·data-group-id="5052332311-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5052332311-4">[</span><span·class="p"·data-group-id="5052332311-5">[·...·truncated·by·diffoscope;·len:·345,·SHA:·d74127d7038cd4f1aace8b69032977c3fb248c7079c0b1d7277c50ab44a250ed·...·]</span><span·class="w">
 129 ·</span><span·class="p"·data-group-id="5052332311-6">[</span><span·class="p"·data-group-id="5052332311-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5052332311-8">[</span><span·class="p"·data-group-id="5052332311-9">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">m</span><span·class="p"·data-group-id="5052332311-9">}</span><span·class="p"·data-group-id="5052332311-8">]</span><span·class="p"·data-group-id="5052332311-7">}</span><span·class="p"·data-group-id="5052332311-6">]</span><span·class="w">
130 </span><span·class="p"·data-group-id="5498256414-1">}</span><span·class="p">.</span></code></pre><h2·id="changing-a-residence-module"·class="section-heading">130 </span><span·class="p"·data-group-id="5052332311-1">}</span><span·class="p">.</span></code></pre><h2·id="changing-a-residence-module"·class="section-heading">
131 ··<a·href="#changing-a-residence-module"·class="hover-link">131 ··<a·href="#changing-a-residence-module"·class="hover-link">
132 ····<i·class="ri-link-m"·aria-hidden="true"></i>132 ····<i·class="ri-link-m"·aria-hidden="true"></i>
133 ··</a>133 ··</a>
134 ··<span·class="text">Changing·a·Residence·Module</span>134 ··<span·class="text">Changing·a·Residence·Module</span>
135 </h2>135 </h2>
136 <p>In·a·system·implemented·according·to·the·OTP·design·principles,·all·processes,136 <p>In·a·system·implemented·according·to·the·OTP·design·principles,·all·processes,
137 except·system·processes·and·special·processes,·reside·in·one·of·the·behaviours137 except·system·processes·and·special·processes,·reside·in·one·of·the·behaviours
Offset 142, 46 lines modifiedOffset 142, 46 lines modified
142 ··<a·href="#changing-a-callback-module"·class="hover-link">142 ··<a·href="#changing-a-callback-module"·class="hover-link">
143 ····<i·class="ri-link-m"·aria-hidden="true"></i>143 ····<i·class="ri-link-m"·aria-hidden="true"></i>
144 ··</a>144 ··</a>
145 ··<span·class="text">Changing·a·Callback·Module</span>145 ··<span·class="text">Changing·a·Callback·Module</span>
146 </h2>146 </h2>
147 <p>A·callback·module·is·a·functional·module,·and·for·code·extensions·simple·code147 <p>A·callback·module·is·a·functional·module,·and·for·code·extensions·simple·code
148 replacement·is·sufficient.</p><p><em>Example</em></p><p>When·adding·a·function·to·<code·class="inline">ch3</code>,·as·described·in·the·example·in148 replacement·is·sufficient.</p><p><em>Example</em></p><p>When·adding·a·function·to·<code·class="inline">ch3</code>,·as·described·in·the·example·in
149 <a·href="release_handling.html#appup">Release·Handling</a>,·<code·class="inline">ch_app.appup</code>·looks·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3611268988-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">149 <a·href="release_handling.html#appup">Release·Handling</a>,·<code·class="inline">ch_app.appup</code>·looks·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9846826499-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
150 ·</span><span·class="p"·data-group-id="3611268988-2">[</span><span·class="p"·data-group-id="3611268988-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3611268988-4">[</span><span·class="p"·data-group-id="3611268988-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·abf2ba20ea2bb7bb4c60123199d562e345ed283ad6e16c4a7a516b39edaff74c·...·]-2">]</span><span·class="p">,</span><span·class="w">150 ·</span><span·class="p"·data-group-id="9846826499-2">[</span><span·class="p"·data-group-id="9846826499-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9846826499-4">[</span><span·class="p"·data-group-id="9846826499-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·2342cb6c46b03ee5b6466ce8f334c9feb46f067ff28f8fe71bb9963de626c6f9·...·]-2">]</span><span·class="p">,</span><span·class="w">
151 ·</span><span·class="p"·data-group-id="3611268988-6">[</span><span·class="p"·data-group-id="3611268988-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3611268988-8">[</span><span·class="p"·data-group-id="3611268988-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·904074bc7cfd441e4ddac2940f2c8b3b4ce44f59145bd34742247468ea33261b·...·]-6">]</span><span·class="w">151 ·</span><span·class="p"·data-group-id="9846826499-6">[</span><span·class="p"·data-group-id="9846826499-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9846826499-8">[</span><span·class="p"·data-group-id="9846826499-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·671fe1fc4e7b6c9279989a2ecad493eb66b284e70202030aadaf399f4c4ecaad·...·]-6">]</span><span·class="w">
152 </span><span·class="p"·data-group-id="3611268988-1">}</span><span·class="p">.</span></code></pre><p>OTP·also·supports·changing·the·internal·state·of·behaviour·processes;·see152 </span><span·class="p"·data-group-id="9846826499-1">}</span><span·class="p">.</span></code></pre><p>OTP·also·supports·changing·the·internal·state·of·behaviour·processes;·see
153 <a·href="appup_cookbook.html#int_state">Changing·Internal·State</a>.</p><p><a·href=""·id="int_state"></a></p><h2·id="changing-internal-state"·class="section-heading">153 <a·href="appup_cookbook.html#int_state">Changing·Internal·State</a>.</p><p><a·href=""·id="int_state"></a></p><h2·id="changing-internal-state"·class="section-heading">
154 ··<a·href="#changing-internal-state"·class="hover-link">154 ··<a·href="#changing-internal-state"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">Changing·Internal·State</span>157 ··<span·class="text">Changing·Internal·State</span>
158 </h2>158 </h2>
159 <p>In·this·case,·simple·code·replacement·is·not·sufficient.·The·process·must159 <p>In·this·case,·simple·code·replacement·is·not·sufficient.·The·process·must
160 explicitly·transform·its·state·using·the·callback·function·<code·class="inline">code_change/3</code>·before160 explicitly·transform·its·state·using·the·callback·function·<code·class="inline">code_change/3</code>·before
161 switching·to·the·new·version·of·the·callback·module.·Thus,·synchronized·code161 switching·to·the·new·version·of·the·callback·module.·Thus,·synchronized·code
162 replacement·is·used.</p><p><em>Example</em></p><p>Consider·the·<code·class="inline">ch3</code>·module·from162 replacement·is·used.</p><p><em>Example</em></p><p>Consider·the·<code·class="inline">ch3</code>·module·from
163 <a·href="gen_server_concepts.html#ex">gen_server·Behaviour</a>.·The·internal·state·is·a·term163 <a·href="gen_server_concepts.html#ex">gen_server·Behaviour</a>.·The·internal·state·is·a·term
164 <code·class="inline">Chs</code>·representing·the·available·channels.·Assume·you·want·to·add·a·counter·<code·class="inline">N</code>,164 <code·class="inline">Chs</code>·representing·the·available·channels.·Assume·you·want·to·add·a·counter·<code·class="inline">N</code>,
165 which·keeps·track·of·the·number·of·<code·class="inline">alloc</code>·requests·so·far.·This·means·that·the165 which·keeps·track·of·the·number·of·<code·class="inline">alloc</code>·requests·so·far.·This·means·that·the
166 format·must·be·changed·to·<code·class="inline">{Chs,N}</code>.</p><p>The·<code·class="inline">.appup</code>·file·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6939647489-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">166 format·must·be·changed·to·<code·class="inline">{Chs,N}</code>.</p><p>The·<code·class="inline">.appup</code>·file·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2824908780-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
167 ·</span><span·class="p"·data-group-id="6939647489-2">[</span><span·class="p"·data-group-id="6939647489-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6939647489-4">[</span><span·class="p"·data-group-id="6939647489-5">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6939647489-6">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6939647489-7">[</span><span·class="p"·data-group-id="6939647489-7">]</span><span·class="p"·data-group-id="6939647489-6">}</span><span·class="p"·data-group-id="6939647489-5">}</span><span·class="p"·data-group-id="6939647489-4">]</span><span·class="p"·data-group-id="6939647489-3">}</span><span·class="p"·data-group-id="6939647489-2">]</span><span·class="p">,</span><span·class="w"> 
168 ·</span><span·class="p"·data-group-id="6939647489-8">[</span><span·class="p"·data-group-id="6939647489-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6939647489-10">[</span><span·class="p"·data-group-id="6939647489-1[·...·truncated·by·diffoscope;·len:·667,·SHA:·def60cb78d026a3aae808d43400d3713a5a4a4aac8f04973841190e66ac400f9·...·]</span><span·class="w">167 ·</span><span·class="p"·data-group-id="2824908780-2">[</span><span·class="p"·data-group-id="2824908780-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2824908780-4">[</span><span·class="p"·data-group-id="2824908780-5"[·...·truncated·by·diffoscope;·len:·683,·SHA:·40195a7b9180fd0d10dcefe33aca16d2550afb524bea35ac4de34af92da9e3d6·...·]</span><span·class="w">
 168 ·</span><span·class="p"·data-group-id="2824908780-8">[</span><span·class="p"·data-group-id="2824908780-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2824908780-10">[</span><span·class="p"·data-group-id="2824908780-11">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2824908780-12">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2824908780-13">[</span><span·class="p"·data-group-id="2824908780-13">]</span><span·class="p"·data-group-id="2824908780-12">}</span><span·class="p"·data-group-id="2824908780-11">}</span><span·class="p"·data-group-id="2824908780-10">]</span><span·class="p"·data-group-id="2824908780-9">}</span><span·class="p"·data-group-id="2824908780-8">]</span><span·class="w">
169 </span><span·class="p"·data-group-id="6939647489-1">}</span><span·class="p">.</span></code></pre><p>The·third·element·of·the·<code·class="inline">update</code>·instruction·is·a·tuple·<code·class="inline">{advanced,Extra}</code>,169 </span><span·class="p"·data-group-id="2824908780-1">}</span><span·class="p">.</span></code></pre><p>The·third·element·of·the·<code·class="inline">update</code>·instruction·is·a·tuple·<code·class="inline">{advanced,Extra}</code>,
170 which·says·that·the·affected·processes·are·to·do·a·state·transformation·before170 which·says·that·the·affected·processes·are·to·do·a·state·transformation·before
171 loading·the·new·version·of·the·module.·This·is·done·by·the·processes·calling·the171 loading·the·new·version·of·the·module.·This·is·done·by·the·processes·calling·the
172 callback·function·<code·class="inline">code_change/3</code>·(see·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>·in·STDLIB).172 callback·function·<code·class="inline">code_change/3</code>·(see·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>·in·STDLIB).
173 The·term·<code·class="inline">Extra</code>,·in·this·case·<code·class="inline">[]</code>,·is·passed·as·is·to·the·function:</p><p><a·href=""·id="code_change"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4615677731-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4615677731-1">)</span><span·class="p">.</span><span·class="w">173 The·term·<code·class="inline">Extra</code>,·in·this·case·<code·class="inline">[]</code>,·is·passed·as·is·to·the·function:</p><p><a·href=""·id="code_change"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2587988727-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2587988727-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">174 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4615677731-2">(</span><span·class="p"·data-group-id="4615677731-3">[</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="4615677731-3">]</span><span·class="p"·data-group-id="4615677731-2">)</span><span·class="p">.</span><span·class="w">175 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2587988727-2">(</span><span·class="p"·data-group-id="2587988727-3">[</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="2587988727-3">]</span><span·class="p"·data-group-id="2587988727-2">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">176 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
177 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="4615677731-4">(</span><span·class="p"·data-group-id="4615677731-5">{</span><span·class="ss">down</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p"·data-group-id="4615677731-5">}</span><s[·...·truncated·by·diffoscope;·len:·391,·SHA:·7b97d2249834a06f9c28a19c9c9cda8e05abefc50f70054a8509948876720d9b·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">177 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="2587988727-4">(</span><span·class="p"·data-group-id="2587988727-5">{</span><span·class="ss">down</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p"·data-group-id="2587988727-5">}</span><s[·...·truncated·by·diffoscope;·len:·391,·SHA:·d36f6358da20d5a69dc54b090b73bf802a8a936dd7534659f14aaf2c7bf13549·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ····</span><span·class="p"·data-group-id="4615677731-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="4615677731-7">}</span><span·class="p">;</span><span·class="w">178 ····</span><span·class="p"·data-group-id="2587988727-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="2587988727-7">}</span><span·class="p">;</span><span·class="w">
179 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="4615677731-8">(</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Extra</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·725ef2c7fafe02d345f7361b0e5aa0640a5caffee03030ba8580e6c402477876·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="2587988727-8">(</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Extra</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·c55235f7c8581384003df33975030dce8191311274bdc2605580913b56823f5d·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="4615677731-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4615677731-10">{</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·88,·SHA:·e35332b0bc0c563e6a4ec43b5c44c38706b8be22f7eb6535d935df432ea86843·...·]-9">}</span><span·class="p">.</span></code></pre><p>The·first·argument·is·<code·class="inline">{down,Vsn}</code>·if·there·is·a·downgrade,·or·<code·class="inline">Vsn</code>·if·there·is180 ····</span><span·class="p"·data-group-id="2587988727-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2587988727-10">{</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·88,·SHA:·e8b4dea941dcbe473172b9dd232f2e2bbb20d558d264521286190153b7c4e9ac·...·]-9">}</span><span·class="p">.</span></code></pre><p>The·first·argument·is·<code·class="inline">{down,Vsn}</code>·if·there·is·a·downgrade,·or·<code·class="inline">Vsn</code>·if·there·is
181 a·upgrade.·The·term·<code·class="inline">Vsn</code>·is·fetched·from·the·'original'·version·of·the·module,181 a·upgrade.·The·term·<code·class="inline">Vsn</code>·is·fetched·from·the·'original'·version·of·the·module,
182 that·is,·the·version·you·are·upgrading·from,·or·downgrading·to.</p><p>The·version·is·defined·by·the·module·attribute·<code·class="inline">vsn</code>,·if·any.·There·is·no·such182 that·is,·the·version·you·are·upgrading·from,·or·downgrading·to.</p><p>The·version·is·defined·by·the·module·attribute·<code·class="inline">vsn</code>,·if·any.·There·is·no·such
183 attribute·in·<code·class="inline">ch3</code>,·so·in·this·case·the·version·is·the·checksum·(a·huge·integer)183 attribute·in·<code·class="inline">ch3</code>,·so·in·this·case·the·version·is·the·checksum·(a·huge·integer)
184 of·the·beam·file,·an·uninteresting·value,·which·is·ignored.</p><p>The·other·callback·functions·of·<code·class="inline">ch3</code>·must·also·be·modified·and·perhaps·a·new184 of·the·beam·file,·an·uninteresting·value,·which·is·ignored.</p><p>The·other·callback·functions·of·<code·class="inline">ch3</code>·must·also·be·modified·and·perhaps·a·new
185 interface·function·must·be·added,·but·this·is·not·shown·here.</p><h2·id="module-dependencies"·class="section-heading">185 interface·function·must·be·added,·but·this·is·not·shown·here.</p><h2·id="module-dependencies"·class="section-heading">
186 ··<a·href="#module-dependencies"·class="hover-link">186 ··<a·href="#module-dependencies"·class="hover-link">
187 ····<i·class="ri-link-m"·aria-hidden="true"></i>187 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 190, 67 lines modifiedOffset 190, 67 lines modified
190 </h2>190 </h2>
191 <p>Assume·that·a·module·is·extended·by·adding·an·interface·function,·as·in·the191 <p>Assume·that·a·module·is·extended·by·adding·an·interface·function,·as·in·the
192 example·in·<a·href="release_handling.html#appup">Release·Handling</a>,·where·a·function192 example·in·<a·href="release_handling.html#appup">Release·Handling</a>,·where·a·function
193 <code·class="inline">available/0</code>·is·added·to·<code·class="inline">ch3</code>.</p><p>If·a·call·is·added·to·this·function,·say·in·module·<code·class="inline">m1</code>,·a·runtime·error·could193 <code·class="inline">available/0</code>·is·added·to·<code·class="inline">ch3</code>.</p><p>If·a·call·is·added·to·this·function,·say·in·module·<code·class="inline">m1</code>,·a·runtime·error·could
194 can·occur·during·release·upgrade·if·the·new·version·of·<code·class="inline">m1</code>·is·loaded·first·and194 can·occur·during·release·upgrade·if·the·new·version·of·<code·class="inline">m1</code>·is·loaded·first·and
195 calls·<code·class="inline">ch3:available/0</code>·before·the·new·version·of·<code·class="inline">ch3</code>·is·loaded.</p><p>Thus,·<code·class="inline">ch3</code>·must·be·loaded·before·<code·class="inline">m1</code>,·in·the·upgrade·case,·and·conversely·in195 calls·<code·class="inline">ch3:available/0</code>·before·the·new·version·of·<code·class="inline">ch3</code>·is·loaded.</p><p>Thus,·<code·class="inline">ch3</code>·must·be·loaded·before·<code·class="inline">m1</code>,·in·the·upgrade·case,·and·conversely·in
196 the·downgrade·case.·<code·class="inline">m1</code>·is·said·to·be·<em>dependent·on</em>·<code·class="inline">ch3</code>.·In·a·release196 the·downgrade·case.·<code·class="inline">m1</code>·is·said·to·be·<em>dependent·on</em>·<code·class="inline">ch3</code>.·In·a·release
197 handling·instruction,·this·is·expressed·by·the·<code·class="inline">DepMods</code>·element:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4746081211-1">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="4746081211-1">}</span><span·class="w">197 handling·instruction,·this·is·expressed·by·the·<code·class="inline">DepMods</code>·element:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9249748147-1">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="9249748147-1">}</span><span·class="w">
198 </span><span·class="p"·data-group-id="4746081211-2">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4746081211-3">{</span><span·class="ss">advanced<[·...·truncated·by·diffoscope;·len:·254,·SHA:·9d0ebb96e3243f6fadbd5404a4a7bf73913859b59835b19e304c3dfb0b8aa2a8·...·]-2">}</span></code></pre><p><code·class="inline">DepMods</code>·is·a·list·of·modules,·on·which·<code·class="inline">Module</code>·is·dependent.</p><p><em>Example</em></p><p>The·module·<code·class="inline">m1</code>·in·application·<code·class="inline">myapp</code>·is·dependent·on·<code·class="inline">ch3</code>·when198 </span><span·class="p"·data-group-id="9249748147-2">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9249748147-3">{</span><span·class="ss">advanced<[·...·truncated·by·diffoscope;·len:·254,·SHA:·d115ce75824bea41d4298df9be63b92917e900fbde4cb7848e8e6e552c2b1b8d·...·]-2">}</span></code></pre><p><code·class="inline">DepMods</code>·is·a·list·of·modules,·on·which·<code·class="inline">Module</code>·is·dependent.</p><p><em>Example</em></p><p>The·module·<code·class="inline">m1</code>·in·application·<code·class="inline">myapp</code>·is·dependent·on·<code·class="inline">ch3</code>·when
199 upgrading·from·&quot;1&quot;·to·&quot;2&quot;,·or·downgrading·from·&quot;2&quot;·to·&quot;1&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">myapp</span><span·class="p">.</span><span·class="nc">appup</span><span·class="p">:</span><span·class="w">199 upgrading·from·&quot;1&quot;·to·&quot;2&quot;,·or·downgrading·from·&quot;2&quot;·to·&quot;1&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">myapp</span><span·class="p">.</span><span·class="nc">appup</span><span·class="p">:</span><span·class="w">
  
200 </span><span·class="p"·data-group-id="7203288639-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">200 </span><span·class="p"·data-group-id="7269641534-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
201 ·</span><span·class="p"·data-group-id="7203288639-2">[</span><span·class="p"·data-group-id="7203288639-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7203288639-4">[</span><span·class="p"·data-group-id="7203288639-5">{[·...·truncated·by·diffoscope;·len:·497,·SHA:·a85c566eb5f5b6346e743fa5f2316199f7455ee0e1ed2274edece6ab906b833f·...·]-2">]</span><span·class="p">,</span><span·class="w">201 ·</span><span·class="p"·data-group-id="7269641534-2">[</span><span·class="p"·data-group-id="7269641534-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7269641534-4">[</span><span·class="p"·data-group-id="7269641534-5">{[·...·truncated·by·diffoscope;·len:·497,·SHA:·19be7dc1bcd0759e624b186ec4f0967410a31713008dc64d444541379cb0a6f9·...·]-2">]</span><span·class="p">,</span><span·class="w">
202 ·</span><span·class="p"·data-group-id="7203288639-7">[</span><span·class="p"·data-group-id="7203288639-8">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7203288639-9">[</span><span·class="p"·data-group-id="7203288639-10">[·...·truncated·by·diffoscope;·len:·501,·SHA:·1fe1e2c1ab4f707cfc28e88ab0436eabaf62a2d548ef71db998029d87b4f47a7·...·]-7">]</span><span·class="w">202 ·</span><span·class="p"·data-group-id="7269641534-7">[</span><span·class="p"·data-group-id="7269641534-8">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7269641534-9">[</span><span·class="p"·data-group-id="7269641534-10">[·...·truncated·by·diffoscope;·len:·501,·SHA:·2f4f648bf535f19ba8ebac04b237939015aec494aecd4673c42b6e003b6fa941·...·]-7">]</span><span·class="w">
203 </span><span·class="p"·data-group-id="7203288639-1">}</span><span·class="p">.</span><span·class="w">203 </span><span·class="p"·data-group-id="7269641534-1">}</span><span·class="p">.</span><span·class="w">
  
204 </span><span·class="ss">ch_app</span><span·class="p">.</span><span·class="nc">appup</span><span·class="p">:</span><span·class="w">204 </span><span·class="ss">ch_app</span><span·class="p">.</span><span·class="nc">appup</span><span·class="p">:</span><span·class="w">
  
205 </span><span·class="p"·data-group-id="7203288639-12">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">205 </span><span·class="p"·data-group-id="7269641534-12">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
206 ·</span><span·class="p"·data-group-id="7203288639-13">[</span><span·class="p"·data-group-id="7203288639-14">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7203288639-15">[</span><span·class="p"·data-group-id="7203288639-1[·...·truncated·by·diffoscope;·len:·324,·SHA:·4210db3b147c0f9bcf4f44398467cc1e57f8e1af25d86f0ad980193e20f804ef·...·]-13">]</span><span·class="p">,</span><span·class="w">206 ·</span><span·class="p"·data-group-id="7269641534-13">[</span><span·class="p"·data-group-id="7269641534-14">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7269641534-15">[</span><span·class="p"·data-group-id="7269641534-1[·...·truncated·by·diffoscope;·len:·324,·SHA:·1c5aeba8adc46efb0b50d6f62227973de9d8b32492d68986fba5b4240639d679·...·]-13">]</span><span·class="p">,</span><span·class="w">
207 ·</span><span·class="p"·data-group-id="7203288639-17">[</span><span·class="p"·data-group-id="7203288639-18">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7203288639-19">[</span><span·class="p"·data-group-id="7203288639-2[·...·truncated·by·diffoscope;·len:·324,·SHA:·50c8dda9f79aa32ea5010641265ce295fba021b43451e87a10af7c88d19682a4·...·]-17">]</span><span·class="w">207 ·</span><span·class="p"·data-group-id="7269641534-17">[</span><span·class="p"·data-group-id="7269641534-18">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7269641534-19">[</span><span·class="p"·data-group-id="7269641534-2[·...·truncated·by·diffoscope;·len:·324,·SHA:·798b41a9aabc37c7e5a6e604450040cd6747b3b3ad257ee8257683ec79fe88c5·...·]-17">]</span><span·class="w">
208 </span><span·class="p"·data-group-id="7203288639-12">}</span><span·class="p">.</span></code></pre><p>If·instead·<code·class="inline">m1</code>·and·<code·class="inline">ch3</code>·belong·to·the·same·application,·the·<code·class="inline">.appup</code>·file·can208 </span><span·class="p"·data-group-id="7269641534-12">}</span><span·class="p">.</span></code></pre><p>If·instead·<code·class="inline">m1</code>·and·<code·class="inline">ch3</code>·belong·to·the·same·application,·the·<code·class="inline">.appup</code>·file·can
209 look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2952650938-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">209 look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4868049317-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
210 ·</span><span·class="p"·data-group-id="2952650938-2">[</span><span·class="p"·data-group-id="2952650938-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">210 ·</span><span·class="p"·data-group-id="4868049317-2">[</span><span·class="p"·data-group-id="4868049317-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">
211 ···</span><span·class="p"·data-group-id="2952650938-4">[</span><span·class="p"·data-group-id="2952650938-5">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2952650938-5">}</span><span·class="p">,</span><span·class="w">211 ···</span><span·class="p"·data-group-id="4868049317-4">[</span><span·class="p"·data-group-id="4868049317-5">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4868049317-5">}</span><span·class="p">,</span><span·class="w">
212 ····</span><span·class="p"·data-group-id="2952650938-6">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">m1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2952650938-7">[</span><span·class="ss">ch3</sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·76bddec419262eafb0b6b50d2017fbc0758908b1b9b91a94696196372ceaf726·...·]-2">]</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="p"·data-group-id="4868049317-6">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">m1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4868049317-7">[</span><span·class="ss">ch3</sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·5f762119f0480f429b3bef1ac8a27cc5a17dd308082d344492b85f8e6c503b0a·...·]-2">]</span><span·class="p">,</span><span·class="w">
213 ·</span><span·class="p"·data-group-id="2952650938-8">[</span><span·class="p"·data-group-id="2952650938-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">213 ·</span><span·class="p"·data-group-id="4868049317-8">[</span><span·class="p"·data-group-id="4868049317-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">
214 ···</span><span·class="p"·data-group-id="2952650938-10">[</span><span·class="p"·data-group-id="2952650938-11">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2952650938-11">}</span><span·class="p">,</span><span·class="w">214 ···</span><span·class="p"·data-group-id="4868049317-10">[</span><span·class="p"·data-group-id="4868049317-11">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4868049317-11">}</span><span·class="p">,</span><span·class="w">
215 ····</span><span·class="p"·data-group-id="2952650938-12">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">m1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2952650938-13">[</span><span·class="ss">ch3</[·...·truncated·by·diffoscope;·len:·261,·SHA:·58e54e62fd70a2032e7e200c90955b30eacfb8a5f66222e6db7118e0d3924eda·...·]-8">]</span><span·class="w">215 ····</span><span·class="p"·data-group-id="4868049317-12">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">m1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4868049317-13">[</span><span·class="ss">ch3</[·...·truncated·by·diffoscope;·len:·261,·SHA:·1066de3f6b22e10717341a9438b59b0f531f4f673bd8342cb73d0e6178c554ee·...·]-8">]</span><span·class="w">
216 </span><span·class="p"·data-group-id="2952650938-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">m1</code>·is·dependent·on·<code·class="inline">ch3</code>·also·when·downgrading.·<code·class="inline">systools</code>·knows·the216 </span><span·class="p"·data-group-id="4868049317-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">m1</code>·is·dependent·on·<code·class="inline">ch3</code>·also·when·downgrading.·<code·class="inline">systools</code>·knows·the
217 difference·between·up-·and·downgrading·and·generates·a·correct·<code·class="inline">relup</code>,·where217 difference·between·up-·and·downgrading·and·generates·a·correct·<code·class="inline">relup</code>,·where
218 <code·class="inline">ch3</code>·is·loaded·before·<code·class="inline">m1</code>·when·upgrading,·but·<code·class="inline">m1</code>·is·loaded·before·<code·class="inline">ch3</code>·when218 <code·class="inline">ch3</code>·is·loaded·before·<code·class="inline">m1</code>·when·upgrading,·but·<code·class="inline">m1</code>·is·loaded·before·<code·class="inline">ch3</code>·when
219 downgrading.</p><p><a·href=""·id="spec"></a></p><h2·id="changing-code-for-a-special-process"·class="section-heading">219 downgrading.</p><p><a·href=""·id="spec"></a></p><h2·id="changing-code-for-a-special-process"·class="section-heading">
220 ··<a·href="#changing-code-for-a-special-process"·class="hover-link">220 ··<a·href="#changing-code-for-a-special-process"·class="hover-link">
221 ····<i·class="ri-link-m"·aria-hidden="true"></i>221 ····<i·class="ri-link-m"·aria-hidden="true"></i>
222 ··</a>222 ··</a>
223 ··<span·class="text">Changing·Code·for·a·Special·Process</span>223 ··<span·class="text">Changing·Code·for·a·Special·Process</span>
224 </h2>224 </h2>
225 <p>In·this·case,·simple·code·replacement·is·not·sufficient.·When·a·new·version·of·a225 <p>In·this·case,·simple·code·replacement·is·not·sufficient.·When·a·new·version·of·a
226 residence·module·for·a·special·process·is·loaded,·the·process·must·make·a·fully226 residence·module·for·a·special·process·is·loaded,·the·process·must·make·a·fully
227 qualified·call·to·its·loop·function·to·switch·to·the·new·code.·Thus,227 qualified·call·to·its·loop·function·to·switch·to·the·new·code.·Thus,
228 synchronized·code·replacement·must·be·used.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·name(s)·of·the·user-defined·residence·module(s)·must·be·listed·in·the228 synchronized·code·replacement·must·be·used.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·name(s)·of·the·user-defined·residence·module(s)·must·be·listed·in·the
229 <code·class="inline">Modules</code>·part·of·the·child·specification·for·the·special·process.·Otherwise229 <code·class="inline">Modules</code>·part·of·the·child·specification·for·the·special·process.·Otherwise
230 the·release·handler·cannot·find·the·process.</p></section><p><em>Example</em></p><p>Consider·the·example·<code·class="inline">ch4</code>·in·<a·href="spec_proc.html#ex">sys·and·proc_lib</a>.230 the·release·handler·cannot·find·the·process.</p></section><p><em>Example</em></p><p>Consider·the·example·<code·class="inline">ch4</code>·in·<a·href="spec_proc.html#ex">sys·and·proc_lib</a>.
231 When·started·by·a·supervisor,·the·child·specification·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3411232396-1">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3411232396-2">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</sp[·...·truncated·by·diffoscope;·len:·198,·SHA:·42611c19ef962811c9b79d312b21e9e7542eb85a88d3ecb9d280f45a60a0a2d5·...·]-2">}</span><span·class="p">,</span><span·class="w">231 When·started·by·a·supervisor,·the·child·specification·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5208505422-1">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5208505422-2">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</sp[·...·truncated·by·diffoscope;·len:·198,·SHA:·1a00c8ce9152fe58b764bd01f1ee9e5db19fbf70cf2a8cf8333c05888b9cacc8·...·]-2">}</span><span·class="p">,</span><span·class="w">
232 ·</span><span·class="ss">permanent</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">worker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3411232396-4">[</span><span·class="ss">ch4</span><span·class="p"·data-group-id="3411232396-4">]</span><span·class="p"·data-group-id="3411232396-1">}</span></code></pre><p>If·<code·class="inline">ch4</code>·is·part·of·the·application·<code·class="inline">sp_app</code>·and·a·new·version·of·the·module·is232 ·</span><span·class="ss">permanent</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">worker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5208505422-4">[</span><span·class="ss">ch4</span><span·class="p"·data-group-id="5208505422-4">]</span><span·class="p"·data-group-id="5208505422-1">}</span></code></pre><p>If·<code·class="inline">ch4</code>·is·part·of·the·application·<code·class="inline">sp_app</code>·and·a·new·version·of·the·module·is
233 to·be·loaded·when·upgrading·from·version·&quot;1&quot;·to·&quot;2&quot;·of·this·application,233 to·be·loaded·when·upgrading·from·version·&quot;1&quot;·to·&quot;2&quot;·of·this·application,
234 <code·class="inline">sp_app.appup</code>·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4900625894-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">234 <code·class="inline">sp_app.appup</code>·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4290721107-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
235 ·</span><span·class="p"·data-group-id="4900625894-2">[</span><span·class="p"·data-group-id="4900625894-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4900625894-4">[</span><span·class="p"·data-group-id="4900625894-5">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4900625894-6">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4900625894-7">[</span><span·class="p"·data-group-id="4900625894-7">]</span><span·class="p"·data-group-id="4900625894-6">}</span><span·class="p"·data-group-id="4900625894-5">}</span><span·class="p"·data-group-id="4900625894-4">]</span><span·class="p"·data-group-id="4900625894-3">}</span><span·class="p"·data-group-id="4900625894-2">]</span><span·class="p">,</span><span·class="w"> 
236 ·</span><span·class="p"·data-group-id="4900625894-8">[</span><span·class="p"·data-group-id="4900625894-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4900625894-10">[</span><span·class="p"·data-group-id="4900625894-11[·...·truncated·by·diffoscope;·len:·666,·SHA:·2e280de85234bed000556f1b4398d38ccf5446dd97fb83302ba2400604dcb4ef·...·]</span><span·class="w">235 ·</span><span·class="p"·data-group-id="4290721107-2">[</span><span·class="p"·data-group-id="4290721107-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4290721107-4">[</span><span·class="p"·data-group-id="4290721107-5">[·...·truncated·by·diffoscope;·len:·682,·SHA:·6e38317cc9ed978835d2ee155e10fa39d2ca2f55676eb4f9d6c37658e7ae8bc4·...·]</span><span·class="w">
 236 ·</span><span·class="p"·data-group-id="4290721107-8">[</span><span·class="p"·data-group-id="4290721107-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4290721107-10">[</span><span·class="p"·data-group-id="4290721107-11">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4290721107-12">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4290721107-13">[</span><span·class="p"·data-group-id="4290721107-13">]</span><span·class="p"·data-group-id="4290721107-12">}</span><span·class="p"·data-group-id="4290721107-11">}</span><span·class="p"·data-group-id="4290721107-10">]</span><span·class="p"·data-group-id="4290721107-9">}</span><span·class="p"·data-group-id="4290721107-8">]</span><span·class="w">
237 </span><span·class="p"·data-group-id="4900625894-1">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">update</code>·instruction·must·contain·the·tuple·<code·class="inline">{advanced,Extra}</code>.·The237 </span><span·class="p"·data-group-id="4290721107-1">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">update</code>·instruction·must·contain·the·tuple·<code·class="inline">{advanced,Extra}</code>.·The
238 instruction·makes·the·special·process·call·the·callback·function238 instruction·makes·the·special·process·call·the·callback·function
239 <code·class="inline">system_code_change/4</code>,·a·function·the·user·must·implement.·The·term·<code·class="inline">Extra</code>,·in239 <code·class="inline">system_code_change/4</code>,·a·function·the·user·must·implement.·The·term·<code·class="inline">Extra</code>,·in
240 this·case·<code·class="inline">[]</code>,·is·passed·as·is·to·<code·class="inline">system_code_change/4</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5788672888-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="5788672888-1">)</span><span·class="p">.</span><span·class="w">240 this·case·<code·class="inline">[]</code>,·is·passed·as·is·to·<code·class="inline">system_code_change/4</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2263246078-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="2263246078-1">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">241 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
242 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5788672888-2">(</span><span·class="p"·data-group-id="5788672888-3">[</span><span·class="ss">system_code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="5788672888-3">]</span><span·class="p"·data-group-id="578867[·...·truncated·by·diffoscope;·len:·3,·SHA:·23c657f2efda7731a3c1990b25f318fa2eb1332208f97ab9cc2a7eac70ab5a76·...·]8-2">)</span><span·class="p">.</span><span·class="w">242 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2263246078-2">(</span><span·class="p"·data-group-id="2263246078-3">[</span><span·class="ss">system_code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="2263246078-3">]</span><span·class="p"·data-group-id="226324[·...·truncated·by·diffoscope;·len:·3,·SHA:·67eab6db6703cdf9acf656bbb09640fcde2ff197786adbd9ae9c14936fc8d159·...·]8-2">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">243 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
  
Max diff block lines reached; 101733/152512 bytes (66.70%) of diff not shown.
4.51 KB
./usr/share/doc/erlang-doc/html/doc/system/benchmarking.html
    
Offset 144, 16 lines modifiedOffset 144, 16 lines modified
144 fast·as·possible,·what·can·we·do?·One·way·could·be·to·generate·more144 fast·as·possible,·what·can·we·do?·One·way·could·be·to·generate·more
145 than·two·bytes·at·the·time.</p><pre><code·class="text">%·erlperf·'rand:bytes(100).'·'crypto:strong_rand_bytes(100).'145 than·two·bytes·at·the·time.</p><pre><code·class="text">%·erlperf·'rand:bytes(100).'·'crypto:strong_rand_bytes(100).'
146 Code···································||········QPS·······Time···Rel146 Code···································||········QPS·······Time···Rel
147 rand:bytes(100).························1····2124·Ki·····470·ns··100%147 rand:bytes(100).························1····2124·Ki·····470·ns··100%
148 crypto:strong_rand_bytes(100).··········1····1915·Ki·····522·ns···90%</code></pre><p><a·href="../../lib/stdlib-6.2/doc/html/rand.html#bytes/1"><code·class="inline">rand:bytes/1</code></a>·is·still·faster·when·we·generate·100·bytes·at·the·time,148 crypto:strong_rand_bytes(100).··········1····1915·Ki·····522·ns···90%</code></pre><p><a·href="../../lib/stdlib-6.2/doc/html/rand.html#bytes/1"><code·class="inline">rand:bytes/1</code></a>·is·still·faster·when·we·generate·100·bytes·at·the·time,
149 but·the·relative·difference·is·smaller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlperf·&#39;rand:bytes(1000).&#39;·&#39;crypto:strong_rand_bytes(1000).&#39;</span><span·class="w">149 but·the·relative·difference·is·smaller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlperf·&#39;rand:bytes(1000).&#39;·&#39;crypto:strong_rand_bytes(1000).&#39;</span><span·class="w">
150 </span><span·class="n">Code</span><span·class="w">····································</span><span·class="p">||</span><span·class="w">········</span><span·class="n">QPS</span><span·class="w">·······</span><span·class="n">Time</span><span·class="w">···</span><span·class="n">Rel</span><span·class="w">150 </span><span·class="n">Code</span><span·class="w">····································</span><span·class="p">||</span><span·class="w">········</span><span·class="n">QPS</span><span·class="w">·······</span><span·class="n">Time</span><span·class="w">···</span><span·class="n">Rel</span><span·class="w">
151 </span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">strong_rand_bytes</span><span·class="p"·data-group-id="4005770598-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="4005770598-1">)</span><span·class="p">.</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">····</span><span·class="mi">1518</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">·····</span><span·class="mi">658</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">··</span><span·class="mi">100</span><span·class="c1">%</span><span·class="w">151 </span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">strong_rand_bytes</span><span·class="p"·data-group-id="3946326650-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="3946326650-1">)</span><span·class="p">.</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">····</span><span·class="mi">1518</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">·····</span><span·class="mi">658</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">··</span><span·class="mi">100</span><span·class="c1">%</span><span·class="w">
152 </span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">bytes</span><span·class="p"·data-group-id="4005770598-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="4005770598-2">)</span><span·class="p">.</span><span·class="w">························</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">284</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">····</span><span·class="mi">3521</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">···</span><span·class="mi">19</span><span·class="c1">%</span></code></pre><p>When·we·generate·1000·bytes·at·the·time,·<a·href="../../lib/crypto-5.5.2/doc/html/crypto.html#strong_rand_bytes/1"><code·class="inline">crypto:strong_rand_bytes/1</code></a>·is152 </span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">bytes</span><span·class="p"·data-group-id="3946326650-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="3946326650-2">)</span><span·class="p">.</span><span·class="w">························</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">284</span><span·class="w">·</span><span·class="n">Ki</span><span·class="w">····</span><span·class="mi">3521</span><span·class="w">·</span><span·class="ss">ns</span><span·class="w">···</span><span·class="mi">19</span><span·class="c1">%</span></code></pre><p>When·we·generate·1000·bytes·at·the·time,·<a·href="../../lib/crypto-5.5.2/doc/html/crypto.html#strong_rand_bytes/1"><code·class="inline">crypto:strong_rand_bytes/1</code></a>·is
153 now·the·fastest.</p><h2·id="benchmarking-using-erlang-otp-functionality"·class="section-heading">153 now·the·fastest.</p><h2·id="benchmarking-using-erlang-otp-functionality"·class="section-heading">
154 ··<a·href="#benchmarking-using-erlang-otp-functionality"·class="hover-link">154 ··<a·href="#benchmarking-using-erlang-otp-functionality"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">Benchmarking·using·Erlang/OTP·functionality</span>157 ··<span·class="text">Benchmarking·using·Erlang/OTP·functionality</span>
158 </h2>158 </h2>
159 <p>Benchmarks·can·measure·wall-clock·time·or·CPU·time.</p><ul><li><p><a·href="../../lib/stdlib-6.2/doc/html/timer.html#tc/3"><code·class="inline">timer:tc/3</code></a>·measures·wall-clock·time.·The·advantage·with·wall-clock·time·is159 <p>Benchmarks·can·measure·wall-clock·time·or·CPU·time.</p><ul><li><p><a·href="../../lib/stdlib-6.2/doc/html/timer.html#tc/3"><code·class="inline">timer:tc/3</code></a>·measures·wall-clock·time.·The·advantage·with·wall-clock·time·is
79.4 KB
./usr/share/doc/erlang-doc/html/doc/system/binaryhandling.html
    
Offset 114, 43 lines modifiedOffset 114, 43 lines modified
  
114 ····<span>Constructing·and·Matching·Binaries</span>114 ····<span>Constructing·and·Matching·Binaries</span>
115 ··</h1>115 ··</h1>
  
116 <p>This·section·gives·a·few·examples·on·how·to·handle·binaries·in·an·efficient·way.116 <p>This·section·gives·a·few·examples·on·how·to·handle·binaries·in·an·efficient·way.
117 The·sections·that·follow·take·an·in-depth·look·at·how·binaries·are·implemented117 The·sections·that·follow·take·an·in-depth·look·at·how·binaries·are·implemented
118 and·how·to·best·take·advantages·of·the·optimizations·done·by·the·compiler·and118 and·how·to·best·take·advantages·of·the·optimizations·done·by·the·compiler·and
119 runtime·system.</p><p>Binaries·can·be·efficiently·<em>built</em>·in·the·following·way:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="8025143542-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="8025143542-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">119 runtime·system.</p><p>Binaries·can·be·efficiently·<em>built</em>·in·the·following·way:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="2959425592-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="2959425592-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
120 ····</span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="8025143542-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8025143542-3">&lt;&lt;</span><span·class="p"·data-group-id="8025143542-3">&gt;&gt;</span><span·class="p"·data-group-id="80251435[·...·truncated·by·diffoscope;·len:·1,·SHA:·4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a·...·]2-2">)</span><span·class="p">.</span><span·class="w">120 ····</span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="2959425592-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2959425592-3">&lt;&lt;</span><span·class="p"·data-group-id="2959425592-3">&gt;&gt;</span><span·class="p"·data-group-id="29594255[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]2-2">)</span><span·class="p">.</span><span·class="w">
  
121 </span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="8025143542-4">(</span><span·class="p"·data-group-id="8025143542-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8025143542-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·58,·SHA:·15ec0aaa384af5d616581b2184052351eda879548e7eb722c8774a5c663414d4·...·]2-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">121 </span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="2959425592-4">(</span><span·class="p"·data-group-id="2959425592-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2959425592-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·58,·SHA:·d35b3fe83d887f71c9cfb3feb7790164e32507923f5257b2cafe11f9f9000fc6·...·]2-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
122 ····</span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="8025143542-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8025143542-7">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·126,·SHA:·f65f8bb75490a8add6413bbb31044317e1ce8b0a26e5aa746fbc55e0850fc81c·...·]2-6">)</span><span·class="p">;</span><span·class="w">122 ····</span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="2959425592-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2959425592-7">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·126,·SHA:·c8084e815158b430466086565ad55fba8dbdbcc6d776ad0019c7da7bad289fc1·...·]2-6">)</span><span·class="p">;</span><span·class="w">
123 </span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="8025143542-8">(</span><span·class="p"·data-group-id="8025143542-9">[</span><span·class="p"·data-group-id="8025143542-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="8025143542-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">123 </span><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="2959425592-8">(</span><span·class="p"·data-group-id="2959425592-9">[</span><span·class="p"·data-group-id="2959425592-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2959425592-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
124 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>Appending·data·to·a·binary·as·in·the·example·is·efficient·because·it·is124 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>Appending·data·to·a·binary·as·in·the·example·is·efficient·because·it·is
125 specially·optimized·by·the·runtime·system·to·avoid·copying·the·<code·class="inline">Acc</code>·binary125 specially·optimized·by·the·runtime·system·to·avoid·copying·the·<code·class="inline">Acc</code>·binary
126 every·time.</p><p>Prepending·data·to·a·binary·in·a·loop·is·not·efficient:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="8083910113-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="8083910113-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">126 every·time.</p><p>Prepending·data·to·a·binary·in·a·loop·is·not·efficient:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="5648796658-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="5648796658-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
127 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="8083910113-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8083910113-3">&lt;&lt;</span><span·class="p"·data-group-id="8083910113-3">&gt;&gt;</span><span·class="p"·data-group-id="80839101[·...·truncated·by·diffoscope;·len:·2,·SHA:·3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278·...·]-2">)</span><span·class="p">.</span><span·class="w">127 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="5648796658-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648796658-3">&lt;&lt;</span><span·class="p"·data-group-id="5648796658-3">&gt;&gt;</span><span·class="p"·data-group-id="56487966[·...·truncated·by·diffoscope;·len:·2,·SHA:·6208ef0f7750c111548cf90b6ea1d0d0a66f6bff40dbef07cb45ec436263c7d6·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
128 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="8083910113-4">(</span><span·class="p"·data-group-id="8083910113-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8083910113-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·bce049023a8ab4141f38c36e6c3d595693e3141ad5215535079e2e6ff8c0ad11·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">128 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="5648796658-4">(</span><span·class="p"·data-group-id="5648796658-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5648796658-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·f5831e8adcf8306644fd4d56e842a2490b1c16b1e72443a9bdd8dbb471ebc9ae·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
129 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="8083910113-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8083910113-7">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">Acc</span><span·class="o">/</span><spa[·...·truncated·by·diffoscope;·len:·127,·SHA:·274f93c4ad824388e31f7f1ced690063c01dbcf5c2c3d5051c441c7332f542a0·...·]-6">)</span><span·class="p">;</span><span·class="w">129 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="5648796658-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648796658-7">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">Acc</span><span·class="o">/</span><spa[·...·truncated·by·diffoscope;·len:·127,·SHA:·f1960fe33c64f946266e71b8b208af4d3dabbf728592538531734e66556abbdc·...·]-6">)</span><span·class="p">;</span><span·class="w">
130 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="8083910113-8">(</span><span·class="p"·data-group-id="8083910113-9">[</span><span·class="p"·data-group-id="8083910113-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="8083910113-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">130 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="5648796658-8">(</span><span·class="p"·data-group-id="5648796658-9">[</span><span·class="p"·data-group-id="5648796658-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="5648796658-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
131 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>This·is·not·efficient·for·long·lists·because·the·<code·class="inline">Acc</code>·binary·is·copied·every131 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>This·is·not·efficient·for·long·lists·because·the·<code·class="inline">Acc</code>·binary·is·copied·every
132 time.·One·way·to·make·the·function·more·efficient·is·like·this:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="9119977937-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="9119977937-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">132 time.·One·way·to·make·the·function·more·efficient·is·like·this:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="0118005444-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="0118005444-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
133 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="9119977937-2">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="9119977937-3">(</span><span·class="n">List</span><span·class="p"·data-group-id="9119977937-3">)</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·192,·SHA:·68a4ded8c26e402cf7cd914ff27c32ea44b8a639bf1f9976641878bdd92a24a0·...·]-2">)</span><span·class="p">.</span><span·class="w">133 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="0118005444-2">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="0118005444-3">(</span><span·class="n">List</span><span·class="p"·data-group-id="0118005444-3">)</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·192,·SHA:·cc1ab2036ff0e0d7a4ac65f42f27ed6ca4d86fdcf6052b79bd2e31fe0799f0a9·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="9119977937-5">(</span><span·class="p"·data-group-id="9119977937-6">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9119977937-6">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·d21f89124d3a97a7dcc7ccc1ba8daa0d433b7fda85e84f5d5e77f29f7d3122f6·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">134 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="0118005444-5">(</span><span·class="p"·data-group-id="0118005444-6">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0118005444-6">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·2fd889bf33ad7ec31aebb69e29eb3fa07a410133ea63b4723e8328ed9b17fce8·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
135 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="9119977937-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9119977937-8">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·127,·SHA:·926ee54213ceced1a776101b3920ddbd2ea773b08f2d47d75092e5c42e120c5f·...·]-7">)</span><span·class="p">;</span><span·class="w">135 ····</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="0118005444-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0118005444-8">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·127,·SHA:·c5e3a54f8a3b72a5343c1db71fe54eb04246479ecc017b0126e824ee7414e026·...·]-7">)</span><span·class="p">;</span><span·class="w">
136 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="9119977937-9">(</span><span·class="p"·data-group-id="9119977937-10">[</span><span·class="p"·data-group-id="9119977937-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="9119977937-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">136 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="0118005444-9">(</span><span·class="p"·data-group-id="0118005444-10">[</span><span·class="p"·data-group-id="0118005444-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0118005444-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>Another·way·to·avoid·copying·the·binary·each·time·is·like·this:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="2794014329-1">(</span><span·class="p"·data-group-id="2794014329-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2794014329-2">]</span><span·class="p"·data-group-id="2794014329-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">137 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>Another·way·to·avoid·copying·the·binary·each·time·is·like·this:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="3253623259-1">(</span><span·class="p"·data-group-id="3253623259-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3253623259-2">]</span><span·class="p"·data-group-id="3253623259-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
138 ····</span><span·class="n">RevTail</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="2794014329-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="2794014329-3">)</span><span·class="p">,</span><span·class="w">138 ····</span><span·class="n">RevTail</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="3253623259-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="3253623259-3">)</span><span·class="p">,</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="2794014329-4">&lt;&lt;</span><span·class="n">RevTail</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">H</span><span·class="p"·data-group-id="2794014329-4">&gt;&gt;</span><span·class="p">;</span><span·class="w">139 ····</span><span·class="p"·data-group-id="3253623259-4">&lt;&lt;</span><span·class="n">RevTail</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">H</span><span·class="p"·data-group-id="3253623259-4">&gt;&gt;</span><span·class="p">;</span><span·class="w">
140 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="2794014329-5">(</span><span·class="p"·data-group-id="2794014329-6">[</span><span·class="p"·data-group-id="2794014329-6">]</span><span·class="p"·data-group-id="2794014329-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 </span><span·class="nf">rev_list_to_binary</span><span·class="p"·data-group-id="3253623259-5">(</span><span·class="p"·data-group-id="3253623259-6">[</span><span·class="p"·data-group-id="3253623259-6">]</span><span·class="p"·data-group-id="3253623259-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="p"·data-group-id="2794014329-7">&lt;&lt;</span><span·class="p"·data-group-id="2794014329-7">&gt;&gt;</span><span·class="p">.</span></code></pre><p>Note·that·in·each·of·the·<strong>DO</strong>·examples,·the·binary·to·be·appended·to·is·always141 ····</span><span·class="p"·data-group-id="3253623259-7">&lt;&lt;</span><span·class="p"·data-group-id="3253623259-7">&gt;&gt;</span><span·class="p">.</span></code></pre><p>Note·that·in·each·of·the·<strong>DO</strong>·examples,·the·binary·to·be·appended·to·is·always
142 given·as·the·first·segment.</p><p>Binaries·can·be·efficiently·<em>matched</em>·in·the·following·way:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_binary_to_list</span><span·class="p"·data-group-id="9798330754-1">(</span><span·class="p"·data-group-id="9798330754-2">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="9798330754-2">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·db453388c2cdf8d35ff9022168ef4b27f1e2a4e45d4d90560c4a6e75bcf52f87·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">142 given·as·the·first·segment.</p><p>Binaries·can·be·efficiently·<em>matched</em>·in·the·following·way:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_binary_to_list</span><span·class="p"·data-group-id="9103258319-1">(</span><span·class="p"·data-group-id="9103258319-2">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="9103258319-2">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·1d0c51f269c683b5e3e146a53be13e56f649153116e76c5242316c64cc70e95f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
143 ····</span><span·class="p"·data-group-id="9798330754-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_binary_to_list</span><span·class="p"·data-group-id="9798330754-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="9798330754-4">)</span><span·class="p"·data-group-id="9798330754-3">]</span><span·class="p">;</span><span·class="w"> 
144 </span><span·class="nf">my_binary_to_list</span><span·class="p"·data-group-id="9798330754-5">(</span><span·class="p"·data-group-id="9798330754-6">&lt;&lt;</span><span·class="p"·data-group-id="9798330754-6">&gt;&gt;</span><span·class="p"·data-group-id="9798[·...·truncated·by·diffoscope;·len:·297,·SHA:·ddaa13cdf29fd7509a17a89fc4e6ac3c11bd83b2bd57a2f9163e4d08acd85c34·...·]">143 ····</span><span·class="p"·data-group-id="9103258319-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_binary_to_list</span><span·class="p"·data-group-id="9103258319-4">(</span><span·class="n">T</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·118,·SHA:·157f69610eb788f77bbb889c43f86e81dbf4f9fcaf7d5688ca234cdabe61299b·...·]">
 144 </span><span·class="nf">my_binary_to_list</span><span·class="p"·data-group-id="9103258319-5">(</span><span·class="p"·data-group-id="9103258319-6">&lt;&lt;</span><span·class="p"·data-group-id="9103258319-6">&gt;&gt;</span><span·class="p"·data-group-id="9103258319-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9103258319-7">[</span><span·class="p"·data-group-id="9103258319-7">]</span><span·class="p">.</span></code></pre><h2·id="how-binaries-are-implemented"·class="section-heading">
145 ··<a·href="#how-binaries-are-implemented"·class="hover-link">145 ··<a·href="#how-binaries-are-implemented"·class="hover-link">
146 ····<i·class="ri-link-m"·aria-hidden="true"></i>146 ····<i·class="ri-link-m"·aria-hidden="true"></i>
147 ··</a>147 ··</a>
148 ··<span·class="text">How·Binaries·are·Implemented</span>148 ··<span·class="text">How·Binaries·are·Implemented</span>
149 </h2>149 </h2>
150 <p>Internally,·binaries·and·bitstrings·are·implemented·in·the·same·way.·In·this150 <p>Internally,·binaries·and·bitstrings·are·implemented·in·the·same·way.·In·this
151 section,·they·are·called·<em>binaries</em>·because·that·is·what·they·are·called·in·the151 section,·they·are·called·<em>binaries</em>·because·that·is·what·they·are·called·in·the
Offset 205, 29 lines modifiedOffset 205, 29 lines modified
205 called·referential·transparency)·of·Erlang·would·break.</p><h2·id="constructing-binaries"·class="section-heading">205 called·referential·transparency)·of·Erlang·would·break.</p><h2·id="constructing-binaries"·class="section-heading">
206 ··<a·href="#constructing-binaries"·class="hover-link">206 ··<a·href="#constructing-binaries"·class="hover-link">
207 ····<i·class="ri-link-m"·aria-hidden="true"></i>207 ····<i·class="ri-link-m"·aria-hidden="true"></i>
208 ··</a>208 ··</a>
209 ··<span·class="text">Constructing·Binaries</span>209 ··<span·class="text">Constructing·Binaries</span>
210 </h2>210 </h2>
211 <p>Appending·to·a·binary·or·bitstring·in·the·following·way·is·specially·optimized211 <p>Appending·to·a·binary·or·bitstring·in·the·following·way·is·specially·optimized
212 to·avoid·copying·the·binary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5313122093-1">&lt;&lt;</span><span·class="n">Binary</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·d0346231150fd115ffd38fb1b767a9f8c87c5644b1c173070bc2834b8c90ddbc·...·]-1">&gt;&gt;</span><span·class="w">212 to·avoid·copying·the·binary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0094328651-1">&lt;&lt;</span><span·class="n">Binary</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·f38af24471c7bf45038451bf1cc4d13a3082a3cdde087e0300e1cabf3315cb8a·...·]-1">&gt;&gt;</span><span·class="w">
213 </span><span·class="c1">%%·-·OR·-</span><span·class="w">213 </span><span·class="c1">%%·-·OR·-</span><span·class="w">
214 </span><span·class="p"·data-group-id="5313122093-2">&lt;&lt;</span><span·class="n">Binary</span><span·class="o">/</span><span·class="ss">bitstring</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·2920c4b9df0f4ffbdceca214e59a22e0dd611564956434f23d9e619eb224dfe4·...·]-2">&gt;&gt;</span></code></pre><p>This·optimization·is·applied·by·the·runtime·system·in·a·way·that·makes·it214 </span><span·class="p"·data-group-id="0094328651-2">&lt;&lt;</span><span·class="n">Binary</span><span·class="o">/</span><span·class="ss">bitstring</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·66e0e756d94c9138650213cbf1721a5b6ec687e1b846f061f347dabcc3a4f023·...·]-2">&gt;&gt;</span></code></pre><p>This·optimization·is·applied·by·the·runtime·system·in·a·way·that·makes·it
215 effective·in·most·circumstances·(for·exceptions,·see215 effective·in·most·circumstances·(for·exceptions,·see
216 <a·href="binaryhandling.html#forced_copying">Circumstances·That·Force·Copying</a>).·The216 <a·href="binaryhandling.html#forced_copying">Circumstances·That·Force·Copying</a>).·The
217 optimization·in·its·basic·form·does·not·need·any·help·from·the·compiler.217 optimization·in·its·basic·form·does·not·need·any·help·from·the·compiler.
218 However,·the·compiler·add·hints·to·the·runtime·system·when·it·is·safe·to·apply218 However,·the·compiler·add·hints·to·the·runtime·system·when·it·is·safe·to·apply
219 the·optimization·in·a·more·efficient·way.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>The·compiler·support·for·making·the·optimization·more·efficient·was·added·in219 the·optimization·in·a·more·efficient·way.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>The·compiler·support·for·making·the·optimization·more·efficient·was·added·in
220 Erlang/OTP·26.</p></section><p>To·explain·how·the·basic·optimization·works,·let·us·examine·the·following·code220 Erlang/OTP·26.</p></section><p>To·explain·how·the·basic·optimization·works,·let·us·examine·the·following·code
221 line·by·line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3528233746-1">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="3528233746-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">····················</span><span·class="c1">%%·1</span><span·class="w">221 line·by·line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9013987185-1">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="9013987185-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">····················</span><span·class="c1">%%·1</span><span·class="w">
222 </span><span·class="n">Bin1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3528233746-2">&lt;&lt;</span><span·class="n">Bin0</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·32a1ae736d70ffc3ff3b9fe6287361c0a5adbef759ae8d18d3d3fba0ac84e176·...·]-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%%·2</span><span·class="w">222 </span><span·class="n">Bin1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9013987185-2">&lt;&lt;</span><span·class="n">Bin0</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·90de45131b5136d0c98f46478293920a0406c6a0f248d16e4148c744e8a67879·...·]-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%%·2</span><span·class="w">
223 </span><span·class="n">Bin2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3528233746-3">&lt;&lt;</span><span·class="n">Bin1</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·32a1ae736d70ffc3ff3b9fe6287361c0a5adbef759ae8d18d3d3fba0ac84e176·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%%·3</span><span·class="w">223 </span><span·class="n">Bin2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9013987185-3">&lt;&lt;</span><span·class="n">Bin1</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·90de45131b5136d0c98f46478293920a0406c6a0f248d16e4148c744e8a67879·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%%·3</span><span·class="w">
224 </span><span·class="n">Bin3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3528233746-4">&lt;&lt;</span><span·class="n">Bin2</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">9</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·32a1ae736d70ffc3ff3b9fe6287361c0a5adbef759ae8d18d3d3fba0ac84e176·...·]-4">&gt;&gt;</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%%·4</span><span·class="w">224 </span><span·class="n">Bin3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9013987185-4">&lt;&lt;</span><span·class="n">Bin2</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">9</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·90de45131b5136d0c98f46478293920a0406c6a0f248d16e4148c744e8a67879·...·]-4">&gt;&gt;</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%%·4</span><span·class="w">
225 </span><span·class="n">Bin4</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3528233746-5">&lt;&lt;</span><span·class="n">Bin1</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="3528233746-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%%·5·!!!</span><span·class="w">225 </span><span·class="n">Bin4</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9013987185-5">&lt;&lt;</span><span·class="n">Bin1</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="9013987185-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%%·5·!!!</span><span·class="w">
226 </span><span·class="p"·data-group-id="3528233746-6">{</span><span·class="n">Bin4</span><span·class="p">,</span><span·class="n">Bin3</span><span·class="p"·data-group-id="3528233746-6">}</span><span·class="w">······················</span><span·class="c1">%%·6</span></code></pre><ul><li><p>Line·1·(marked·with·the·<code·class="inline">%%·1</code>·comment),·assigns·a226 </span><span·class="p"·data-group-id="9013987185-6">{</span><span·class="n">Bin4</span><span·class="p">,</span><span·class="n">Bin3</span><span·class="p"·data-group-id="9013987185-6">}</span><span·class="w">······················</span><span·class="c1">%%·6</span></code></pre><ul><li><p>Line·1·(marked·with·the·<code·class="inline">%%·1</code>·comment),·assigns·a
227 <a·href="binaryhandling.html#heap_binary">heap·binary</a>·to·the·<code·class="inline">Bin0</code>·variable.</p></li><li><p>Line·2·is·an·append·operation.·As·<code·class="inline">Bin0</code>·has·not·been·involved·in·an·append227 <a·href="binaryhandling.html#heap_binary">heap·binary</a>·to·the·<code·class="inline">Bin0</code>·variable.</p></li><li><p>Line·2·is·an·append·operation.·As·<code·class="inline">Bin0</code>·has·not·been·involved·in·an·append
228 operation,·a·new·<a·href="binaryhandling.html#refc_binary">refc·binary</a>·is·created·and228 operation,·a·new·<a·href="binaryhandling.html#refc_binary">refc·binary</a>·is·created·and
229 the·contents·of·<code·class="inline">Bin0</code>·is·copied·into·it.·The·<em>ProcBin</em>·part·of·the·refc229 the·contents·of·<code·class="inline">Bin0</code>·is·copied·into·it.·The·<em>ProcBin</em>·part·of·the·refc
230 binary·has·its·size·set·to·the·size·of·the·data·stored·in·the·binary,·while230 binary·has·its·size·set·to·the·size·of·the·data·stored·in·the·binary,·while
231 the·binary·object·has·extra·space·allocated.·The·size·of·the·binary·object·is231 the·binary·object·has·extra·space·allocated.·The·size·of·the·binary·object·is
232 either·twice·the·size·of·<code·class="inline">Bin1</code>·or·256,·whichever·is·larger.·In·this·case·it232 either·twice·the·size·of·<code·class="inline">Bin1</code>·or·256,·whichever·is·larger.·In·this·case·it
233 is·256.</p></li><li><p>Line·3·is·more·interesting.·<code·class="inline">Bin1</code>·<em>has</em>·been·used·in·an·append·operation,·and233 is·256.</p></li><li><p>Line·3·is·more·interesting.·<code·class="inline">Bin1</code>·<em>has</em>·been·used·in·an·append·operation,·and
Offset 253, 23 lines modifiedOffset 253, 23 lines modified
253 handle·an·append·operation·to·a·heap·binary·by·copying·it·to·a·refc·binary·(line253 handle·an·append·operation·to·a·heap·binary·by·copying·it·to·a·refc·binary·(line
254 2),·and·also·handle·an·append·operation·to·a·previous·version·of·the·binary·by254 2),·and·also·handle·an·append·operation·to·a·previous·version·of·the·binary·by
255 copying·it·(line·5).·The·support·for·doing·that·does·not·come·for·free.·For255 copying·it·(line·5).·The·support·for·doing·that·does·not·come·for·free.·For
256 example,·to·make·it·possible·to·know·when·it·is·necessary·to·copy·the·binary,256 example,·to·make·it·possible·to·know·when·it·is·necessary·to·copy·the·binary,
257 for·every·append·operation,·the·runtime·system·must·create·a·sub·binary.</p><p>When·the·compiler·can·determine·that·none·of·those·situations·need·to·be·handled257 for·every·append·operation,·the·runtime·system·must·create·a·sub·binary.</p><p>When·the·compiler·can·determine·that·none·of·those·situations·need·to·be·handled
258 and·that·the·append·operation·cannot·possibly·fail,·the·compiler·generates·code258 and·that·the·append·operation·cannot·possibly·fail,·the·compiler·generates·code
259 that·causes·the·runtime·system·to·apply·a·more·efficient·variant·of·the259 that·causes·the·runtime·system·to·apply·a·more·efficient·variant·of·the
260 optimization.</p><p><strong>Example:</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2914999698-1">(</span><span·class="ss">repack</span><span·class="p"·data-group-id="2914999698-1">)</span><span·class="p">.</span><span·class="w"> 
261 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2914999698-2">(</span><span·class="p"·data-group-id="2914999698-3">[</span><span·class="ss">repack</span><span·class="p">/</span><span·class="mi">1</span><span·clas[·...·truncated·by·diffoscope;·len:·86,·SHA:·72eb6ba0f26859907b82e08eb65dbafc234ed39d887793c83ff925a3a4886fe8·...·]">)</span><span·class="p">.</span><span·class="w">260 optimization.</p><p><strong>Example:</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3086433932-1">(</span><span·class="ss">repack</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·21,·SHA:·abeab91c732a1e7e9c58a569eae71bc5b1d5945cb8b76901860efcc5887fd06e·...·]">)</span><span·class="p">.</span><span·class="w">
 261 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3086433932-2">(</span><span·class="p"·data-group-id="3086433932-3">[</span><span·class="ss">repack</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3086433932-3">]</span><span·class="p"·data-group-id="3086433932-2">)</span><span·class="p">.</span><span·class="w">
  
262 </span><span·class="nf">repack</span><span·class="p"·data-group-id="2914999698-4">(</span><span·class="n">Bin</span><span·class="p"·data-group-id="2914999698-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="2914999698-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·d8a7e8e484c50751449fb238fed3669121ef4578bd0f292b67f282d980ed2c81·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">262 </span><span·class="nf">repack</span><span·class="p"·data-group-id="3086433932-4">(</span><span·class="n">Bin</span><span·class="p"·data-group-id="3086433932-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="3086433932-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·861b90fe4a2250369d7cf83e88e1bfc2fdadb15d7c303d8930d8af5c90076dcd·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
263 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="2914999698-6">(</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2914999698-7">&lt;&lt;</span><span·class="p"·data-group-id="2914999698-7">&gt;&gt;</span><span·class="p"·data-group-id="291499969[·...·truncated·by·diffoscope;·len:·1,·SHA:·2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3·...·]-6">)</span><span·class="p">.</span><span·class="w">263 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="3086433932-6">(</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3086433932-7">&lt;&lt;</span><span·class="p"·data-group-id="3086433932-7">&gt;&gt;</span><span·class="p"·data-group-id="308643393[·...·truncated·by·diffoscope;·len:·1,·SHA:·d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
264 </span><span·class="nf">repack</span><span·class="p"·data-group-id="2914999698-8">(</span><span·class="p"·data-group-id="2914999698-9">&lt;&lt;</span><span·class="n">C</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·033001349fe544aa8286c5e2a48860928042ccfb17747da80b8bb36f401e44c4·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">264 </span><span·class="nf">repack</span><span·class="p"·data-group-id="3086433932-8">(</span><span·class="p"·data-group-id="3086433932-9">&lt;&lt;</span><span·class="n">C</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·a493c9a54d99ffee14572f3d7fe6f7a1b4d741dc6c8b223f836206cceb9a1176·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
265 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="2914999698-10">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2914999698-11">&lt;&lt;</span><span·class="n">Result</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·183,·SHA:·aedd06f5a7add40062e8c17d24c2ae5d595748786618fede02bc982af984b482·...·]-10">)</span><span·class="p">;</span><span·class="w">265 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="3086433932-10">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3086433932-11">&lt;&lt;</span><span·class="n">Result</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·183,·SHA:·d112df6e1a330496c534c7eb0782cde1e796395b241a6a2714fb699282b62a39·...·]-10">)</span><span·class="p">;</span><span·class="w">
266 </span><span·class="nf">repack</span><span·class="p"·data-group-id="2914999698-12">(</span><span·class="p"·data-group-id="2914999698-13">&lt;&lt;</span><span·class="p"·data-group-id="2914999698-13">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="291[·...·truncated·by·diffoscope;·len:·7,·SHA:·0586d35f85879bd65d1e39a112c1d4be6715b62e517d43e8e8fd15ca963722ae·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">266 </span><span·class="nf">repack</span><span·class="p"·data-group-id="3086433932-12">(</span><span·class="p"·data-group-id="3086433932-13">&lt;&lt;</span><span·class="p"·data-group-id="3086433932-13">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="308[·...·truncated·by·diffoscope;·len:·7,·SHA:·2e66681e555cd9e1ffdd67e6110c551acf0b4817ea93ec9da4e437fe89f07f35·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 ····</span><span·class="n">Result</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">repack/2</code>·function·only·keeps·a·single·version·of·the·binary,·so·there·is267 ····</span><span·class="n">Result</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">repack/2</code>·function·only·keeps·a·single·version·of·the·binary,·so·there·is
268 never·any·need·to·copy·the·binary.·The·compiler·rewrites·the·creation·of·the268 never·any·need·to·copy·the·binary.·The·compiler·rewrites·the·creation·of·the
269 empty·binary·in·<code·class="inline">repack/1</code>·to·instead·create·a·refc·binary·with·256·bytes269 empty·binary·in·<code·class="inline">repack/1</code>·to·instead·create·a·refc·binary·with·256·bytes
270 already·reserved;·thus,·the·append·operation·in·<code·class="inline">repack/2</code>·never·needs·to·handle270 already·reserved;·thus,·the·append·operation·in·<code·class="inline">repack/2</code>·never·needs·to·handle
271 a·binary·not·prepared·for·appending.</p><p><a·href=""·id="forced_copying"></a></p><h3·id="circumstances-that-force-copying"·class="section-heading">271 a·binary·not·prepared·for·appending.</p><p><a·href=""·id="forced_copying"></a></p><h3·id="circumstances-that-force-copying"·class="section-heading">
272 ··<a·href="#circumstances-that-force-copying"·class="hover-link">272 ··<a·href="#circumstances-that-force-copying"·class="hover-link">
273 ····<i·class="ri-link-m"·aria-hidden="true"></i>273 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 281, 72 lines modifiedOffset 281, 72 lines modified
281 reason·is·that·the·binary·object·can·be·moved·(reallocated)·during·an·append281 reason·is·that·the·binary·object·can·be·moved·(reallocated)·during·an·append
282 operation,·and·when·that·happens,·the·pointer·in·the·ProcBin·must·be·updated.·If282 operation,·and·when·that·happens,·the·pointer·in·the·ProcBin·must·be·updated.·If
283 there·would·be·more·than·one·ProcBin·pointing·to·the·binary·object,·it·would·not283 there·would·be·more·than·one·ProcBin·pointing·to·the·binary·object,·it·would·not
284 be·possible·to·find·and·update·all·of·them.</p><p>Therefore,·certain·operations·on·a·binary·mark·it·so·that·any·future·append284 be·possible·to·find·and·update·all·of·them.</p><p>Therefore,·certain·operations·on·a·binary·mark·it·so·that·any·future·append
285 operation·will·be·forced·to·copy·the·binary.·In·most·cases,·the·binary·object285 operation·will·be·forced·to·copy·the·binary.·In·most·cases,·the·binary·object
286 will·be·shrunk·at·the·same·time·to·reclaim·the·extra·space·allocated·for286 will·be·shrunk·at·the·same·time·to·reclaim·the·extra·space·allocated·for
287 growing.</p><p>When·appending·to·a·binary·as·follows,·only·the·binary·returned·from·the·latest287 growing.</p><p>When·appending·to·a·binary·as·follows,·only·the·binary·returned·from·the·latest
288 append·operation·will·support·further·cheap·append·operations:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7198895695-1">&lt;&lt;</span><span·class="n">Bin0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7198895695-1">&gt;&gt;</span></code></pre><p>In·the·code·fragment·in·the·beginning·of·this·section,·appending·to·<code·class="inline">Bin</code>·will288 append·operation·will·support·further·cheap·append·operations:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4992867890-1">&lt;&lt;</span><span·class="n">Bin0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4992867890-1">&gt;&gt;</span></code></pre><p>In·the·code·fragment·in·the·beginning·of·this·section,·appending·to·<code·class="inline">Bin</code>·will
289 be·cheap,·while·appending·to·<code·class="inline">Bin0</code>·will·force·the·creation·of·a·new·binary·and289 be·cheap,·while·appending·to·<code·class="inline">Bin0</code>·will·force·the·creation·of·a·new·binary·and
290 copying·of·the·contents·of·<code·class="inline">Bin0</code>.</p><p>If·a·binary·is·sent·as·a·message·to·a·process·or·port,·the·binary·will·be·shrunk290 copying·of·the·contents·of·<code·class="inline">Bin0</code>.</p><p>If·a·binary·is·sent·as·a·message·to·a·process·or·port,·the·binary·will·be·shrunk
291 and·any·further·append·operation·will·copy·the·binary·data·into·a·new·binary.291 and·any·further·append·operation·will·copy·the·binary·data·into·a·new·binary.
292 For·example,·in·the·following·code·fragment·<code·class="inline">Bin1</code>·will·be·copied·in·the·third292 For·example,·in·the·following·code·fragment·<code·class="inline">Bin1</code>·will·be·copied·in·the·third
293 line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5008347814-1">&lt;&lt;</span><span·class="n">Bin0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5008347814-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">293 line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4350097548-1">&lt;&lt;</span><span·class="n">Bin0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4350097548-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">
294 </span><span·class="n">PortOrPid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="w">294 </span><span·class="n">PortOrPid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="w">
295 </span><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5008347814-2">&lt;&lt;</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5008347814-2">&gt;&gt;</span><span·class="w">··</span><span·class="c1">%%·Bin1·will·be·COPIED</span></code></pre><p>The·same·happens·if·you·insert·a·binary·into·an·Ets·table,·send·it·to·a·port295 </span><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4350097548-2">&lt;&lt;</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4350097548-2">&gt;&gt;</span><span·class="w">··</span><span·class="c1">%%·Bin1·will·be·COPIED</span></code></pre><p>The·same·happens·if·you·insert·a·binary·into·an·Ets·table,·send·it·to·a·port
296 using·<a·href="../../erts-15.2.2/doc/html/erlang.html#port_command/2"><code·class="inline">erlang:port_command/2</code></a>,·or·pass·it·to296 using·<a·href="../../erts-15.2.2/doc/html/erlang.html#port_command/2"><code·class="inline">erlang:port_command/2</code></a>,·or·pass·it·to
297 <a·href="../../erts-15.2.2/doc/html/erl_nif.html#enif_inspect_binary">enif_inspect_binary</a>·in·a·NIF.</p><p>Matching·a·binary·will·also·cause·it·to·shrink·and·the·next·append·operation297 <a·href="../../erts-15.2.2/doc/html/erl_nif.html#enif_inspect_binary">enif_inspect_binary</a>·in·a·NIF.</p><p>Matching·a·binary·will·also·cause·it·to·shrink·and·the·next·append·operation
298 will·copy·the·binary·data:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7362799631-1">&lt;&lt;</span><span·class="n">Bin0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7362799631-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">298 will·copy·the·binary·data:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1396725050-1">&lt;&lt;</span><span·class="n">Bin0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1396725050-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">
299 </span><span·class="p"·data-group-id="7362799631-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·78d3fededcc1aba8f43805be412e6f702cd016882d1166fa33d6be212af748cd·...·]-2">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="w">299 </span><span·class="p"·data-group-id="1396725050-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·59077fcd54173cc277e7d076f7689f0c04d1bfcd3c427cbe6886a314d6963a89·...·]-2">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="w">
300 </span><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7362799631-3">&lt;&lt;</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7362799631-3">&gt;&gt;</span><span·class="w">··</span><span·class="c1">%%·Bin1·will·be·COPIED</span></code></pre><p>The·reason·is·that·a·<a·href="binaryhandling.html#match_context">match·context</a>·contains·a300 </span><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1396725050-3">&lt;&lt;</span><span·class="n">Bin1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1396725050-3">&gt;&gt;</span><span·class="w">··</span><span·class="c1">%%·Bin1·will·be·COPIED</span></code></pre><p>The·reason·is·that·a·<a·href="binaryhandling.html#match_context">match·context</a>·contains·a
301 direct·pointer·to·the·binary·data.</p><p>If·a·process·simply·keeps·binaries·(either·in·&quot;loop·data&quot;·or·in·the·process301 direct·pointer·to·the·binary·data.</p><p>If·a·process·simply·keeps·binaries·(either·in·&quot;loop·data&quot;·or·in·the·process
302 dictionary),·the·garbage·collector·can·eventually·shrink·the·binaries.·If·only302 dictionary),·the·garbage·collector·can·eventually·shrink·the·binaries.·If·only
303 one·such·binary·is·kept,·it·will·not·be·shrunk.·If·the·process·later·appends·to303 one·such·binary·is·kept,·it·will·not·be·shrunk.·If·the·process·later·appends·to
304 a·binary·that·has·been·shrunk,·the·binary·object·will·be·reallocated·to·make304 a·binary·that·has·been·shrunk,·the·binary·object·will·be·reallocated·to·make
305 place·for·the·data·to·be·appended.</p><h2·id="matching-binaries"·class="section-heading">305 place·for·the·data·to·be·appended.</p><h2·id="matching-binaries"·class="section-heading">
306 ··<a·href="#matching-binaries"·class="hover-link">306 ··<a·href="#matching-binaries"·class="hover-link">
307 ····<i·class="ri-link-m"·aria-hidden="true"></i>307 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Max diff block lines reached; 34375/81178 bytes (42.35%) of diff not shown.
48.2 KB
./usr/share/doc/erlang-doc/html/doc/system/bit_syntax.html
    
Offset 119, 48 lines modifiedOffset 119, 48 lines modified
119 ··<a·href="#introduction"·class="hover-link">119 ··<a·href="#introduction"·class="hover-link">
120 ····<i·class="ri-link-m"·aria-hidden="true"></i>120 ····<i·class="ri-link-m"·aria-hidden="true"></i>
121 ··</a>121 ··</a>
122 ··<span·class="text">Introduction</span>122 ··<span·class="text">Introduction</span>
123 </h2>123 </h2>
124 <p>The·complete·specification·for·the·bit·syntax·appears·in·the124 <p>The·complete·specification·for·the·bit·syntax·appears·in·the
125 <a·href="../../doc/system/expressions.html#bit-syntax-expressions">Reference·Manual</a>.</p><p>In·Erlang,·a·Bin·is·used·for·constructing·binaries·and·matching·binary·patterns.125 <a·href="../../doc/system/expressions.html#bit-syntax-expressions">Reference·Manual</a>.</p><p>In·Erlang,·a·Bin·is·used·for·constructing·binaries·and·matching·binary·patterns.
126 A·Bin·is·written·with·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7269584251-1">&lt;&lt;</span><span·class="n">E1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E2</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·81,·SHA:·3528146b2c82a309298e3632ce24b784b645e41fc1fd7c8db280b457673c85b6·...·]-1">&gt;&gt;</span></code></pre><p>A·Bin·is·a·low-level·sequence·of·bits·or·bytes.·The·purpose·of·a·Bin·is·to126 A·Bin·is·written·with·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3462256172-1">&lt;&lt;</span><span·class="n">E1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E2</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·81,·SHA:·86b8a02222257a8050504436bf2a369f8e2780e3b33fa3382593cfcc7a10a35f·...·]-1">&gt;&gt;</span></code></pre><p>A·Bin·is·a·low-level·sequence·of·bits·or·bytes.·The·purpose·of·a·Bin·is·to
127 enable·construction·of·binaries:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9138664512-1">&lt;&lt;</span><span·class="n">E1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E2</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·582,·SHA:·6ef335e427cec18d32372c97538dfd81a5e94ada9b08a3b1812f8fe7faa431c7·...·]-1">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin</span></code></pre><p>Here,·<code·class="inline">Bin</code>·is·bound·and·the·elements·are·bound·or·unbound,·as·in·any·match.</p><p>A·Bin·does·not·need·to·consist·of·a·whole·number·of·bytes.</p><p>A·<em>bitstring</em>·is·a·sequence·of·zero·or·more·bits,·where·the·number·of·bits·does127 enable·construction·of·binaries:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5437504586-1">&lt;&lt;</span><span·class="n">E1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E2</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·582,·SHA:·294f079e9135c85e05497789d61790710ab40618d12eed5d8d15f2ada7378023·...·]-1">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin</span></code></pre><p>Here,·<code·class="inline">Bin</code>·is·bound·and·the·elements·are·bound·or·unbound,·as·in·any·match.</p><p>A·Bin·does·not·need·to·consist·of·a·whole·number·of·bytes.</p><p>A·<em>bitstring</em>·is·a·sequence·of·zero·or·more·bits,·where·the·number·of·bits·does
128 not·need·to·be·divisible·by·8.·If·the·number·of·bits·is·divisible·by·8,·the128 not·need·to·be·divisible·by·8.·If·the·number·of·bits·is·divisible·by·8,·the
129 bitstring·is·also·a·binary.</p><p>Each·element·specifies·a·certain·<em>segment</em>·of·the·bitstring.·A·segment·is·a·set129 bitstring·is·also·a·binary.</p><p>Each·element·specifies·a·certain·<em>segment</em>·of·the·bitstring.·A·segment·is·a·set
130 of·contiguous·bits·of·the·binary·(not·necessarily·on·a·byte·boundary).·The·first130 of·contiguous·bits·of·the·binary·(not·necessarily·on·a·byte·boundary).·The·first
131 element·specifies·the·initial·segment,·the·second·element·specifies·the131 element·specifies·the·initial·segment,·the·second·element·specifies·the
132 following·segment,·and·so·on.</p><p>The·following·examples·illustrate·how·binaries·are·constructed,·or·matched,·and132 following·segment,·and·so·on.</p><p>The·following·examples·illustrate·how·binaries·are·constructed,·or·matched,·and
133 how·elements·and·tails·are·specified.</p><h3·id="examples"·class="section-heading">133 how·elements·and·tails·are·specified.</p><h3·id="examples"·class="section-heading">
134 ··<a·href="#examples"·class="hover-link">134 ··<a·href="#examples"·class="hover-link">
135 ····<i·class="ri-link-m"·aria-hidden="true"></i>135 ····<i·class="ri-link-m"·aria-hidden="true"></i>
136 ··</a>136 ··</a>
137 ··<span·class="text">Examples</span>137 ··<span·class="text">Examples</span>
138 </h3>138 </h3>
139 <p><em>Example·1:</em>·A·binary·can·be·constructed·from·a·set·of·constants·or·a·string139 <p><em>Example·1:</em>·A·binary·can·be·constructed·from·a·set·of·constants·or·a·string
140 literal:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin11</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5212378171-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="5212378171-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">140 literal:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bin11</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3256560648-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="3256560648-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">
141 </span><span·class="n">Bin12</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5212378171-2">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="5212378171-2">&gt;&gt;</span></code></pre><p>This·gives·two·binaries·of·size·3,·with·the·following·evaluations:</p><ul><li><a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list(Bin11)</code></a>·evaluates·to·<code·class="inline">[1,·17,·42]</code>.</li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list(Bin12)</code></a>·evaluates·to·<code·class="inline">[97,·98,·99]</code>.</li></ul><p><em>Example·2:</em>Similarly,·a·binary·can·be·constructed·from·a·set·of·bound141 </span><span·class="n">Bin12</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3256560648-2">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="3256560648-2">&gt;&gt;</span></code></pre><p>This·gives·two·binaries·of·size·3,·with·the·following·evaluations:</p><ul><li><a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list(Bin11)</code></a>·evaluates·to·<code·class="inline">[1,·17,·42]</code>.</li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list(Bin12)</code></a>·evaluates·to·<code·class="inline">[97,·98,·99]</code>.</li></ul><p><em>Example·2:</em>Similarly,·a·binary·can·be·constructed·from·a·set·of·bound
142 variables:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">142 variables:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">
143 </span><span·class="n">Bin2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3046240595-1">&lt;&lt;</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p">,</span><span·class="w">·</span><span·class="n">C</span><span·class="p">:</span><span·class="mi">16</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·de62605508cb6962050e5f912cbd038ba111862abf02c74410a59ce76c4c0a37·...·]-1">&gt;&gt;</span></code></pre><p>This·gives·a·binary·of·size·4.·Here,·a·<em>size·expression</em>·is·used·for·the143 </span><span·class="n">Bin2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4430659114-1">&lt;&lt;</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p">,</span><span·class="w">·</span><span·class="n">C</span><span·class="p">:</span><span·class="mi">16</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·eb557688280d0fc24279db800deed7c2763d3d1077f07f6452ece5b70fce2105·...·]-1">&gt;&gt;</span></code></pre><p>This·gives·a·binary·of·size·4.·Here,·a·<em>size·expression</em>·is·used·for·the
144 variable·<code·class="inline">C</code>·to·specify·a·16-bits·segment·of·<code·class="inline">Bin2</code>.</p><p><a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list(Bin2)</code></a>·evaluates·to·<code·class="inline">[1,·17,·00,·42]</code>.</p><p><em>Example·3:</em>·A·Bin·can·also·be·used·for·matching.·<code·class="inline">D</code>,·<code·class="inline">E</code>,·and·<code·class="inline">F</code>·are·unbound144 variable·<code·class="inline">C</code>·to·specify·a·16-bits·segment·of·<code·class="inline">Bin2</code>.</p><p><a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list(Bin2)</code></a>·evaluates·to·<code·class="inline">[1,·17,·00,·42]</code>.</p><p><em>Example·3:</em>·A·Bin·can·also·be·used·for·matching.·<code·class="inline">D</code>,·<code·class="inline">E</code>,·and·<code·class="inline">F</code>·are·unbound
145 variables,·and·<code·class="inline">Bin2</code>·is·bound,·as·in·Example·2:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4446470800-1">&lt;&lt;</span><span·class="n">D</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cla[·...·truncated·by·diffoscope;·len:·86,·SHA:·fa9bbaf2d0bcfde838eebda4e06304695d56c8433880d962030448f5960697a4·...·]-1">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin2</span></code></pre><p>This·gives·<code·class="inline">D·=·273</code>,·<code·class="inline">E·=·00</code>,·and·F·binds·to·a·binary·of·size·1:145 variables,·and·<code·class="inline">Bin2</code>·is·bound,·as·in·Example·2:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5494965631-1">&lt;&lt;</span><span·class="n">D</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cla[·...·truncated·by·diffoscope;·len:·86,·SHA:·10d497dbeb184b96d5fdc59a47cb92e1a64fa349ad217c6c7b4e190a0e5d0c0b·...·]-1">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin2</span></code></pre><p>This·gives·<code·class="inline">D·=·273</code>,·<code·class="inline">E·=·00</code>,·and·F·binds·to·a·binary·of·size·1:
146 <code·class="inline">binary_to_list(F)·=·[42]</code>.</p><p><em>Example·4:</em>·The·following·is·a·more·elaborate·example·of·matching.·Here,146 <code·class="inline">binary_to_list(F)·=·[42]</code>.</p><p><em>Example·4:</em>·The·following·is·a·more·elaborate·example·of·matching.·Here,
147 <code·class="inline">Dgram</code>·is·bound·to·the·consecutive·bytes·of·an·IP·datagram·of·IP·protocol147 <code·class="inline">Dgram</code>·is·bound·to·the·consecutive·bytes·of·an·IP·datagram·of·IP·protocol
148 version·4.·The·ambition·is·to·extract·the·header·and·the·data·of·the·datagram:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4447370905-1">(</span><span·class="n">IP_VERSION</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="4447370905-1">)</span><span·class="p">.</span><span·class="w">148 version·4.·The·ambition·is·to·extract·the·header·and·the·data·of·the·datagram:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3693079327-1">(</span><span·class="n">IP_VERSION</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="3693079327-1">)</span><span·class="p">.</span><span·class="w">
149 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4447370905-2">(</span><span·class="n">IP_MIN_HDR_LEN</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="4447370905-2">)</span><span·class="p">.</span><span·class="w">149 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3693079327-2">(</span><span·class="n">IP_MIN_HDR_LEN</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="3693079327-2">)</span><span·class="p">.</span><span·class="w">
  
150 </span><span·class="n">DgramSize</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">byte_size</span><span·class="p"·data-group-id="4447370905-3">(</span><span·class="n">Dgram</span><span·class="p"·data-group-id="4447370905-3">)</span><span·class="p">,</span><span·class="w">150 </span><span·class="n">DgramSize</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">byte_size</span><span·class="p"·data-group-id="3693079327-3">(</span><span·class="n">Dgram</span><span·class="p"·data-group-id="3693079327-3">)</span><span·class="p">,</span><span·class="w">
151 </span><span·class="k">case</span><span·class="w">·</span><span·class="n">Dgram</span><span·class="w">·</span><span·class="k">of</span><span·class="w">151 </span><span·class="k">case</span><span·class="w">·</span><span·class="n">Dgram</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
152 ····</span><span·class="p"·data-group-id="4447370905-4">&lt;&lt;</span><span·class="o">?</span><span·class="n">IP_VERSION</span><span·class="p">:</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HLen</span><span·class="p">:</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SrvcType</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TotLen</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">152 ····</span><span·class="p"·data-group-id="3693079327-4">&lt;&lt;</span><span·class="o">?</span><span·class="n">IP_VERSION</span><span·class="p">:</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HLen</span><span·class="p">:</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SrvcType</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TotLen</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">
153 ······</span><span·class="n">ID</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Flgs</span><span·class="p">:</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FragOff</span><span·class="p">:</span><span·class="mi">13</span><span·class="p">,</span><span·class="w">153 ······</span><span·class="n">ID</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Flgs</span><span·class="p">:</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FragOff</span><span·class="p">:</span><span·class="mi">13</span><span·class="p">,</span><span·class="w">
154 ······</span><span·class="n">TTL</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Proto</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HdrChkSum</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">154 ······</span><span·class="n">TTL</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Proto</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HdrChkSum</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">
155 ······</span><span·class="n">SrcIP</span><span·class="p">:</span><span·class="mi">32</span><span·class="p">,</span><span·class="w">155 ······</span><span·class="n">SrcIP</span><span·class="p">:</span><span·class="mi">32</span><span·class="p">,</span><span·class="w">
156 ······</span><span·class="n">DestIP</span><span·class="p">:</span><span·class="mi">32</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RestDgram</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="4447370905-4">&gt;&gt;</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">HLen</span><span·class="o">&gt;=</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">*</span><span·class="n">HLen</span><span·class="o">=&lt;</span><span·class="n">DgramSize</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 ······</span><span·class="n">DestIP</span><span·class="p">:</span><span·class="mi">32</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RestDgram</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="3693079327-4">&gt;&gt;</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">HLen</span><span·class="o">&gt;=</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">*</span><span·class="n">HLen</span><span·class="o">=&lt;</span><span·class="n">DgramSize</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ········</span><span·class="n">OptsLen</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">*</span><span·class="p"·data-group-id="4447370905-5">(</span><span·class="n">HLen</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">?</span><span·class="n">IP_MIN_HDR_LEN</span><span·class="p"·data-group-id="4447370905-5">)</span><span·class="p">,</span><span·class="w">157 ········</span><span·class="n">OptsLen</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">*</span><span·class="p"·data-group-id="3693079327-5">(</span><span·class="n">HLen</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">?</span><span·class="n">IP_MIN_HDR_LEN</span><span·class="p"·data-group-id="3693079327-5">)</span><span·class="p">,</span><span·class="w">
158 ········</span><span·class="p"·data-group-id="4447370905-6">&lt;&lt;</span><span·class="n">Opts</span><span·class="p">:</span><span·class="n">OptsLen</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">/</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·54,·SHA:·8702375af3638d56f3c07165438883025c875d2c31ff13df3fef933271c546e3·...·]-6">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RestDgram</span><span·class="p">,</span><span·class="w">158 ········</span><span·class="p"·data-group-id="3693079327-6">&lt;&lt;</span><span·class="n">Opts</span><span·class="p">:</span><span·class="n">OptsLen</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">/</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·54,·SHA:·9e6d87d3a380861f64022c9092bc19f260a75384939f2525fc8ef02131216df3·...·]-6">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RestDgram</span><span·class="p">,</span><span·class="w">
159 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">159 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
160 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Here,·the·segment·corresponding·to·the·<code·class="inline">Opts</code>·variable·has·a·<em>type·modifier</em>,160 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Here,·the·segment·corresponding·to·the·<code·class="inline">Opts</code>·variable·has·a·<em>type·modifier</em>,
161 specifying·that·<code·class="inline">Opts</code>·is·to·bind·to·a·binary.·All·other·variables·have·the161 specifying·that·<code·class="inline">Opts</code>·is·to·bind·to·a·binary.·All·other·variables·have·the
162 default·type·equal·to·unsigned·integer.</p><p>An·IP·datagram·header·is·of·variable·length.·This·length·is·measured·in·the162 default·type·equal·to·unsigned·integer.</p><p>An·IP·datagram·header·is·of·variable·length.·This·length·is·measured·in·the
163 number·of·32-bit·words·and·is·given·in·the·segment·corresponding·to·<code·class="inline">HLen</code>.·The163 number·of·32-bit·words·and·is·given·in·the·segment·corresponding·to·<code·class="inline">HLen</code>.·The
164 minimum·value·of·<code·class="inline">HLen</code>·is·5.·It·is·the·segment·corresponding·to·<code·class="inline">Opts</code>·that·is164 minimum·value·of·<code·class="inline">HLen</code>·is·5.·It·is·the·segment·corresponding·to·<code·class="inline">Opts</code>·that·is
165 variable,·so·if·<code·class="inline">HLen</code>·is·equal·to·5,·<code·class="inline">Opts</code>·becomes·an·empty·binary.</p><p>The·tail·variables·<code·class="inline">RestDgram</code>·and·<code·class="inline">Data</code>·bind·to·binaries,·as·all·tail165 variable,·so·if·<code·class="inline">HLen</code>·is·equal·to·5,·<code·class="inline">Opts</code>·becomes·an·empty·binary.</p><p>The·tail·variables·<code·class="inline">RestDgram</code>·and·<code·class="inline">Data</code>·bind·to·binaries,·as·all·tail
Offset 218, 80 lines modifiedOffset 218, 80 lines modified
218 <p>This·section·describes·the·rules·for·constructing·binaries·using·the·bit·syntax.218 <p>This·section·describes·the·rules·for·constructing·binaries·using·the·bit·syntax.
219 Unlike·when·constructing·lists·or·tuples,·the·construction·of·a·binary·can·fail219 Unlike·when·constructing·lists·or·tuples,·the·construction·of·a·binary·can·fail
220 with·a·<code·class="inline">badarg</code>·exception.</p><p>There·can·be·zero·or·more·segments·in·a·binary·to·be·constructed.·The·expression220 with·a·<code·class="inline">badarg</code>·exception.</p><p>There·can·be·zero·or·more·segments·in·a·binary·to·be·constructed.·The·expression
221 <code·class="inline">&lt;&lt;&gt;&gt;</code>·constructs·a·zero·length·binary.</p><p>Each·segment·in·a·binary·can·consist·of·zero·or·more·bits.·There·are·no221 <code·class="inline">&lt;&lt;&gt;&gt;</code>·constructs·a·zero·length·binary.</p><p>Each·segment·in·a·binary·can·consist·of·zero·or·more·bits.·There·are·no
222 alignment·rules·for·individual·segments·of·type·<code·class="inline">integer</code>·and·<code·class="inline">float</code>.·For222 alignment·rules·for·individual·segments·of·type·<code·class="inline">integer</code>·and·<code·class="inline">float</code>.·For
223 binaries·and·bitstrings·without·size,·the·unit·specifies·the·alignment.·Since223 binaries·and·bitstrings·without·size,·the·unit·specifies·the·alignment.·Since
224 the·default·alignment·for·the·<code·class="inline">binary</code>·type·is·8,·the·size·of·a·binary·segment224 the·default·alignment·for·the·<code·class="inline">binary</code>·type·is·8,·the·size·of·a·binary·segment
225 must·be·a·multiple·of·8·bits,·that·is,·only·whole·bytes.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9720920262-1">&lt;&lt;</span><span·class="n">Bin</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">Bitstring</span><span·class="o">/</span><span·class="ss">bitstring</span><span·class="p"·data-group-id="972[·...·truncated·by·diffoscope;·len:·7,·SHA:·1f405b8fff0149fe4fad862e6e3137327443a289759a3ee9bd2c4bbf8b679f1d·...·]-1">&gt;&gt;</span></code></pre><p>The·variable·<code·class="inline">Bin</code>·must·contain·a·whole·number·of·bytes,·because·the·<code·class="inline">binary</code>225 must·be·a·multiple·of·8·bits,·that·is,·only·whole·bytes.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0546977081-1">&lt;&lt;</span><span·class="n">Bin</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">Bitstring</span><span·class="o">/</span><span·class="ss">bitstring</span><span·class="p"·data-group-id="054[·...·truncated·by·diffoscope;·len:·7,·SHA:·7378da3d1ae2c69793e20b47929ae0f6e637135c4100cb5efb050b630cc9c5a0·...·]-1">&gt;&gt;</span></code></pre><p>The·variable·<code·class="inline">Bin</code>·must·contain·a·whole·number·of·bytes,·because·the·<code·class="inline">binary</code>
226 type·defaults·to·<code·class="inline">unit:8</code>.·A·<code·class="inline">badarg</code>·exception·is·generated·if·<code·class="inline">Bin</code>·consist226 type·defaults·to·<code·class="inline">unit:8</code>.·A·<code·class="inline">badarg</code>·exception·is·generated·if·<code·class="inline">Bin</code>·consist
227 of,·for·example,·17·bits.</p><p>The·<code·class="inline">Bitstring</code>·variable·can·consist·of·any·number·of·bits,·for·example,·0,·1,227 of,·for·example,·17·bits.</p><p>The·<code·class="inline">Bitstring</code>·variable·can·consist·of·any·number·of·bits,·for·example,·0,·1,
228 8,·11,·17,·42,·and·so·on.·This·is·because·the·default·<code·class="inline">unit</code>·for·bitstrings228 8,·11,·17,·42,·and·so·on.·This·is·because·the·default·<code·class="inline">unit</code>·for·bitstrings
229 is·1.</p><p>For·clarity,·it·is·recommended·not·to·change·the·unit·size·for·binaries.229 is·1.</p><p>For·clarity,·it·is·recommended·not·to·change·the·unit·size·for·binaries.
230 Instead,·use·<code·class="inline">binary</code>·when·you·need·byte·alignment·and·<code·class="inline">bitstring</code>·when·you·need230 Instead,·use·<code·class="inline">binary</code>·when·you·need·byte·alignment·and·<code·class="inline">bitstring</code>·when·you·need
231 bit·alignment.</p><p>The·following·example·successfully·constructs·a·bitstring·of·7·bits,·provided231 bit·alignment.</p><p>The·following·example·successfully·constructs·a·bitstring·of·7·bits,·provided
232 that·all·of·X·and·Y·are·integers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7114614215-1">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">:</span><span·class="mi">6</span><span·class="p"·data-group-id="7114614215-1">&gt;&gt;</span></code></pre><p>As·mentioned·earlier,·segments·have·the·following·general·syntax:</p><p><code·class="inline">Value:Size/TypeSpecifierList</code></p><p>When·constructing·binaries,·<code·class="inline">Value</code>·and·<code·class="inline">Size</code>·can·be·any·Erlang·expression.232 that·all·of·X·and·Y·are·integers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5747096287-1">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">:</span><span·class="mi">6</span><span·class="p"·data-group-id="5747096287-1">&gt;&gt;</span></code></pre><p>As·mentioned·earlier,·segments·have·the·following·general·syntax:</p><p><code·class="inline">Value:Size/TypeSpecifierList</code></p><p>When·constructing·binaries,·<code·class="inline">Value</code>·and·<code·class="inline">Size</code>·can·be·any·Erlang·expression.
233 However,·for·syntactical·reasons,·both·<code·class="inline">Value</code>·and·<code·class="inline">Size</code>·must·be·enclosed·in233 However,·for·syntactical·reasons,·both·<code·class="inline">Value</code>·and·<code·class="inline">Size</code>·must·be·enclosed·in
234 parenthesis·if·the·expression·consists·of·anything·more·than·a·single·literal·or234 parenthesis·if·the·expression·consists·of·anything·more·than·a·single·literal·or
235 a·variable.·The·following·gives·a·compiler·syntax·error:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3346572792-1">&lt;&lt;</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">8</span><span·class="p"·data-group-id="3346572792-1">&gt;&gt;</span></code></pre><p>This·expression·must·be·rewritten·into·the·following,·to·be·accepted·by·the235 a·variable.·The·following·gives·a·compiler·syntax·error:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4092012063-1">&lt;&lt;</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">8</span><span·class="p"·data-group-id="4092012063-1">&gt;&gt;</span></code></pre><p>This·expression·must·be·rewritten·into·the·following,·to·be·accepted·by·the
236 compiler:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9998283606-1">&lt;&lt;</span><span·class="p"·data-group-id="9998283606-2">(</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="9998283606-2">)</span><span·class="p">:</span><span·class="mi">8</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·57971ef5cf9d29250cc42bfdaa4660986bcdcc000b2b175526936617e12878eb·...·]-1">&gt;&gt;</span></code></pre><h3·id="including-literal-strings"·class="section-heading">236 compiler:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7458155237-1">&lt;&lt;</span><span·class="p"·data-group-id="7458155237-2">(</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="7458155237-2">)</span><span·class="p">:</span><span·class="mi">8</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·2763d6daab532bc8a1519883815f9968301ca9eaf577ba2a61eab214860bff20·...·]-1">&gt;&gt;</span></code></pre><h3·id="including-literal-strings"·class="section-heading">
237 ··<a·href="#including-literal-strings"·class="hover-link">237 ··<a·href="#including-literal-strings"·class="hover-link">
238 ····<i·class="ri-link-m"·aria-hidden="true"></i>238 ····<i·class="ri-link-m"·aria-hidden="true"></i>
239 ··</a>239 ··</a>
240 ··<span·class="text">Including·Literal·Strings</span>240 ··<span·class="text">Including·Literal·Strings</span>
241 </h3>241 </h3>
242 <p>A·literal·string·can·be·written·instead·of·an·element:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0395778895-1">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="0395778895-1">&gt;&gt;</span></code></pre><p>This·is·syntactic·sugar·for·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·d[·...·truncated·by·diffoscope;·len:·310,·SHA:·f69ea9d245bbe8e092249c8b6891eb35c9f3722ebd20839b4011a5c97988cacf·...·]-1">&gt;&gt;</span></code></pre><h2·id="matching-binaries"·class="section-heading">242 <p>A·literal·string·can·be·written·instead·of·an·element:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9872390040-1">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="9872390040-1">&gt;&gt;</span></code></pre><p>This·is·syntactic·sugar·for·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·d[·...·truncated·by·diffoscope;·len:·310,·SHA:·3fe5f115f5d0c3bab4c792962fc4600156e937cfc2553e87d543ebff3cc0e1c8·...·]-1">&gt;&gt;</span></code></pre><h2·id="matching-binaries"·class="section-heading">
243 ··<a·href="#matching-binaries"·class="hover-link">243 ··<a·href="#matching-binaries"·class="hover-link">
244 ····<i·class="ri-link-m"·aria-hidden="true"></i>244 ····<i·class="ri-link-m"·aria-hidden="true"></i>
245 ··</a>245 ··</a>
246 ··<span·class="text">Matching·Binaries</span>246 ··<span·class="text">Matching·Binaries</span>
247 </h2>247 </h2>
248 <p>This·section·describes·the·rules·for·matching·binaries,·using·the·bit·syntax.</p><p>There·can·be·zero·or·more·segments·in·a·binary·pattern.·A·binary·pattern·can248 <p>This·section·describes·the·rules·for·matching·binaries,·using·the·bit·syntax.</p><p>There·can·be·zero·or·more·segments·in·a·binary·pattern.·A·binary·pattern·can
249 occur·wherever·patterns·are·allowed,·including·inside·other·patterns.·Binary249 occur·wherever·patterns·are·allowed,·including·inside·other·patterns.·Binary
250 patterns·cannot·be·nested.·The·pattern·<code·class="inline">&lt;&lt;&gt;&gt;</code>·matches·a·zero·length·binary.</p><p>Each·segment·in·a·binary·can·consist·of·zero·or·more·bits.·A·segment·of·type250 patterns·cannot·be·nested.·The·pattern·<code·class="inline">&lt;&lt;&gt;&gt;</code>·matches·a·zero·length·binary.</p><p>Each·segment·in·a·binary·can·consist·of·zero·or·more·bits.·A·segment·of·type
251 <code·class="inline">binary</code>·must·have·a·size·evenly·divisible·by·8·(or·divisible·by·the·unit·size,251 <code·class="inline">binary</code>·must·have·a·size·evenly·divisible·by·8·(or·divisible·by·the·unit·size,
252 if·the·unit·size·has·been·changed).·A·segment·of·type·<code·class="inline">bitstring</code>·has·no252 if·the·unit·size·has·been·changed).·A·segment·of·type·<code·class="inline">bitstring</code>·has·no
253 restrictions·on·the·size.·A·segment·of·type·<code·class="inline">float</code>·must·have·size·64·or·32.</p><p>As·mentioned·earlier,·segments·have·the·following·general·syntax:</p><p><code·class="inline">Value:Size/TypeSpecifierList</code></p><p>When·matching·<code·class="inline">Value</code>,·value·must·be·either·a·variable·or·an·integer,·or·a253 restrictions·on·the·size.·A·segment·of·type·<code·class="inline">float</code>·must·have·size·64·or·32.</p><p>As·mentioned·earlier,·segments·have·the·following·general·syntax:</p><p><code·class="inline">Value:Size/TypeSpecifierList</code></p><p>When·matching·<code·class="inline">Value</code>,·value·must·be·either·a·variable·or·an·integer,·or·a
254 floating·point·literal.·Expressions·are·not·allowed.</p><p><code·class="inline">Size</code>·must·be·a254 floating·point·literal.·Expressions·are·not·allowed.</p><p><code·class="inline">Size</code>·must·be·a
255 <a·href="../../doc/system/expressions.html#guard-expressions">guard·expression</a>,·which·can·use255 <a·href="../../doc/system/expressions.html#guard-expressions">guard·expression</a>,·which·can·use
256 literals·and·previously·bound·variables.·The·following·is·not·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="8732347973-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8732347973-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">N</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·5cd2367931e7135c771f70d9cbb21fb6bb2f635c7f5f3e6647d895c8027c0033·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">256 literals·and·previously·bound·variables.·The·following·is·not·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="7049183485-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7049183485-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">N</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·8954f1fa4d942446dcb1fd4f50780458c4c26dd170559aa1a6c5c2bd045bc168·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
257 ···</span><span·class="p"·data-group-id="8732347973-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="8732347973-3">}</span><span·class="p">.</span></code></pre><p>The·two·occurrences·of·<code·class="inline">N</code>·are·not·related.·The·compiler·will·complain·that·the257 ···</span><span·class="p"·data-group-id="7049183485-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="7049183485-3">}</span><span·class="p">.</span></code></pre><p>The·two·occurrences·of·<code·class="inline">N</code>·are·not·related.·The·compiler·will·complain·that·the
258 <code·class="inline">N</code>·in·the·size·field·is·unbound.</p><p>The·correct·way·to·write·this·example·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="0713306377-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="0713306377-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 <code·class="inline">N</code>·in·the·size·field·is·unbound.</p><p>The·correct·way·to·write·this·example·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="2827738244-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="2827738244-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ···</span><span·class="p"·data-group-id="0713306377-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">N</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="0713306377-2">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">259 ···</span><span·class="p"·data-group-id="2827738244-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">N</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="2827738244-2">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">
260 ···</span><span·class="p"·data-group-id="0713306377-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="0713306377-3">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Before·OTP·23,·<code·class="inline">Size</code>·was·restricted·to·be·an·integer·or·a·variable·bound·to260 ···</span><span·class="p"·data-group-id="2827738244-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="2827738244-3">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Before·OTP·23,·<code·class="inline">Size</code>·was·restricted·to·be·an·integer·or·a·variable·bound·to
261 an·integer.</p></section><h3·id="binding-and-using-a-size-variable"·class="section-heading">261 an·integer.</p></section><h3·id="binding-and-using-a-size-variable"·class="section-heading">
262 ··<a·href="#binding-and-using-a-size-variable"·class="hover-link">262 ··<a·href="#binding-and-using-a-size-variable"·class="hover-link">
263 ····<i·class="ri-link-m"·aria-hidden="true"></i>263 ····<i·class="ri-link-m"·aria-hidden="true"></i>
264 ··</a>264 ··</a>
265 ··<span·class="text">Binding·and·Using·a·Size·Variable</span>265 ··<span·class="text">Binding·and·Using·a·Size·Variable</span>
266 </h3>266 </h3>
267 <p>There·is·one·exception·to·the·rule·that·a·variable·that·is·used·as·size·must·be267 <p>There·is·one·exception·to·the·rule·that·a·variable·that·is·used·as·size·must·be
268 previously·bound.·It·is·possible·to·match·and·bind·a·variable,·and·use·it·as·a268 previously·bound.·It·is·possible·to·match·and·bind·a·variable,·and·use·it·as·a
269 size·within·the·same·binary·pattern.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bar</span><span·class="p"·data-group-id="8227691548-1">(</span><span·class="p"·data-group-id="8227691548-2">&lt;&lt;</span><span·class="n">Sz</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">Payload</span><span·class="p">:</span><span·class="n">Sz</sp[·...·truncated·by·diffoscope;·len:·364,·SHA:·05c2fad8ce96443c141ed584deb233a533a8c887451b175d32456d5b21b75c54·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">269 size·within·the·same·binary·pattern.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bar</span><span·class="p"·data-group-id="5987232831-1">(</span><span·class="p"·data-group-id="5987232831-2">&lt;&lt;</span><span·class="n">Sz</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">Payload</span><span·class="p">:</span><span·class="n">Sz</sp[·...·truncated·by·diffoscope;·len:·364,·SHA:·78c427e2b75e3a79e1481d3233f01b9756dac61f33f356732aab74a68a902108·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ···</span><span·class="p"·data-group-id="8227691548-3">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="8227691548-3">}</span><span·class="p">.</span></code></pre><p>Here·<code·class="inline">Sz</code>·is·bound·to·the·value·in·the·first·byte·of·the·binary.·<code·class="inline">Sz</code>·is·then 
271 used·at·the·number·of·bytes·to·match·out·as·a·binary.</p><p>Starting·in·OTP·23,·the·size·can·be·a·guard·expression:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bar</span><span·class="p"·data-group-id="3323289542-1">(</span><span·class="p"·data-group-id="3323289542-2">&lt;&lt;</span><span·class="n">Sz</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">Payload</span><span·class="p">:</span><span·class="p"·data-group-id="3323289542-3">(</span><span·class="p"·data-group-id="3323289542-4">(</span><span·class="n">Sz</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="3323289542-4">)</span><span·class="o">*</span><span·class="mi">8</span><span·class="p"·data-group-id="3323289542-3">)</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">Rest</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="3323289542-2">&gt;&gt;</span><span·class="p"·data-group-id="3323289542-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
272 ···</span><span·class="p"·data-group-id="3323289542-5">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="3323289542-5">}</span><span·class="p">.</span></code></pre><p>Here·<code·class="inline">Sz</code>·is·the·combined·size·of·[·...·truncated·by·diffoscope;·len:·46,·SHA:·d0b6d114708e778d0e39df8bdf4348dbe99c13881c34a8eaa4857ce97f752e5a·...·]270 ···</span><span·class="p"·data-group-id="5987232831-3">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="5987232831-3">}</span><span·class="p">.</span></code></pre><p>Here·<code·class="inline">Sz</code>·is·bound·to·the·value·in[·...·truncated·by·diffoscope;·len:·69,·SHA:·1083f3582748578c46c3ce7c90260d1ad254ccef243b474a07b0e4eba11c7f49·...·]
 271 used·at·the·number·of·bytes·to·match·out·as·a·binary.</p><p>Starting·in·OTP·23,·the·size·can·be·a·guard·expression:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bar</span><span·class="p"·data-group-id="8575340188-1">(</span><span·class="p"·data-group-id="8575340188-2">&lt;&lt;</span><span·class="n">Sz</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">Payload</span><span·class="p">:</span><span·class="p"·data-group-id="8575340188-3">(</span><span·class="p"·data-group-id="8575340188-4">(</span><span·class="n">Sz</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="8575340188-4">)</span><span·class="o">*</span><span·class="mi">8</span><span·class="p"·data-group-id="8575340188-3">)</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">Rest</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p"·data-group-id="8575340188-2">&gt;&gt;</span><span·class="p"·data-group-id="8575340188-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 272 ···</span><span·class="p"·data-group-id="8575340188-5">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="8575340188-5">}</span><span·class="p">.</span></code></pre><p>Here·<code·class="inline">Sz</code>·is·the·combined·size·of·the·header·and·the·payload,·so·we·will·need·to
273 subtract·one·byte·to·get·the·size·of·the·payload.</p><h3·id="getting-the-rest-of-the-binary-or-bitstring"·class="section-heading">273 subtract·one·byte·to·get·the·size·of·the·payload.</p><h3·id="getting-the-rest-of-the-binary-or-bitstring"·class="section-heading">
274 ··<a·href="#getting-the-rest-of-the-binary-or-bitstring"·class="hover-link">274 ··<a·href="#getting-the-rest-of-the-binary-or-bitstring"·class="hover-link">
275 ····<i·class="ri-link-m"·aria-hidden="true"></i>275 ····<i·class="ri-link-m"·aria-hidden="true"></i>
276 ··</a>276 ··</a>
277 ··<span·class="text">Getting·the·Rest·of·the·Binary·or·Bitstring</span>277 ··<span·class="text">Getting·the·Rest·of·the·Binary·or·Bitstring</span>
278 </h3>278 </h3>
279 <p>To·match·out·the·rest·of·a·binary,·specify·a·binary·field·without·size:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="5417085789-1">(</span><span·class="p"·data-group-id="5417085789-2">&lt;&lt;</span><span·class="n">A</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">Rest</span><span·class="o">/</span><span·class="ss">binary</s[·...·truncated·by·diffoscope;·len:·784,·SHA:·3bbf5851b31e1ebc457ab89195ac858e24b78250d56a038080271c83e99d0aa5·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span></code></pre><p>There·are·no·restrictions·on·the·number·of·bits·in·the·tail.</p><h2·id="appending-to-a-binary"·class="section-heading">279 <p>To·match·out·the·rest·of·a·binary,·specify·a·binary·field·without·size:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="7261455680-1">(</span><span·class="p"·data-group-id="7261455680-2">&lt;&lt;</span><span·class="n">A</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">Rest</span><span·class="o">/</span><span·class="ss">binary</s[·...·truncated·by·diffoscope;·len:·784,·SHA:·cb807ae6b2a64a726e6a33cca3cc7ab2d800bde393ddd8575dabd5fd84dad94f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span></code></pre><p>There·are·no·restrictions·on·the·number·of·bits·in·the·tail.</p><h2·id="appending-to-a-binary"·class="section-heading">
280 ··<a·href="#appending-to-a-binary"·class="hover-link">280 ··<a·href="#appending-to-a-binary"·class="hover-link">
281 ····<i·class="ri-link-m"·aria-hidden="true"></i>281 ····<i·class="ri-link-m"·aria-hidden="true"></i>
282 ··</a>282 ··</a>
283 ··<span·class="text">Appending·to·a·Binary</span>283 ··<span·class="text">Appending·to·a·Binary</span>
284 </h2>284 </h2>
285 <p>Appending·to·a·binary·in·an·efficient·way·can·be·done·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="4483393291-1">(</span><span·class="n">T</span><span·class="p"·data-group-id="4483393291-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">285 <p>Appending·to·a·binary·in·an·efficient·way·can·be·done·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="1530253296-1">(</span><span·class="n">T</span><span·class="p"·data-group-id="1530253296-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
286 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="4483393291-2">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4483393291-3">&lt;&lt;</span><span·class="p"·data-group-id="4483393291-3">&gt;&gt;</span><span·class="p"·data-group-id="4483393291-2">)</span><span·class="p">.</span><span·class="w">286 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="1530253296-2">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1530253296-3">&lt;&lt;</span><span·class="p"·data-group-id="1530253296-3">&gt;&gt;</span><span·class="p"·data-group-id="1530253296-2">)</span><span·class="p">.</span><span·class="w">
  
287 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="4483393291-4">(</span><span·class="p"·data-group-id="4483393291-5">[</span><span·class="p"·data-group-id="4483393291-6">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Z</span><span·cl[·...·truncated·by·diffoscope;·len:·309,·SHA:·a34b6fc1f68ad8f2498b1615bc823fe3fd241b63e59407788f54cf0f99fad0cd·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">287 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="1530253296-4">(</span><span·class="p"·data-group-id="1530253296-5">[</span><span·class="p"·data-group-id="1530253296-6">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Z</span><span·cl[·...·truncated·by·diffoscope;·len:·309,·SHA:·8f6cda6c74c0d54126ab51b3ee2086c141b47f0d4baeb05fb48d7a7f72fc0685·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
288 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="4483393291-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4483393291-8">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·373,·SHA:·fccfb459a7941350cb04b4a794db8fdfe0e300f589285ae68eca93cbaa24b6e7·...·]-7">)</span><span·class="p">;</span><span·class="w">288 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="1530253296-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1530253296-8">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·373,·SHA:·f2de26947a0d3efac6259ab27a91e2fca463b86f98d3e47fd1f907d951985719·...·]-7">)</span><span·class="p">;</span><span·class="w">
289 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="4483393291-9">(</span><span·class="p"·data-group-id="4483393291-10">[</span><span·class="p"·data-group-id="4483393291-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="4483393291-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">289 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="1530253296-9">(</span><span·class="p"·data-group-id="1530253296-10">[</span><span·class="p"·data-group-id="1530253296-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="1530253296-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
290 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre>290 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre>
291 </div>291 </div>
  
Max diff block lines reached; 123/49198 bytes (0.25%) of diff not shown.
58.7 KB
./usr/share/doc/erlang-doc/html/doc/system/c_port.html
    
Offset 148, 101 lines modifiedOffset 148, 101 lines modified
148 external·program,·if·it·is·written·properly).</p><p>The·port·is·created·using·the·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>·with148 external·program,·if·it·is·written·properly).</p><p>The·port·is·created·using·the·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>·with
149 <code·class="inline">{spawn,ExtPrg}</code>·as·the·first·argument.·The·string·<code·class="inline">ExtPrg</code>·is·the·name·of·the149 <code·class="inline">{spawn,ExtPrg}</code>·as·the·first·argument.·The·string·<code·class="inline">ExtPrg</code>·is·the·name·of·the
150 external·program,·including·any·command·line·arguments.·The·second·argument·is·a150 external·program,·including·any·command·line·arguments.·The·second·argument·is·a
151 list·of·options,·in·this·case·only·<code·class="inline">{packet,2}</code>.·This·option·says·that·a·2·byte151 list·of·options,·in·this·case·only·<code·class="inline">{packet,2}</code>.·This·option·says·that·a·2·byte
152 length·indicator·is·to·be·used·to·simplify·the·communication·between·C·and152 length·indicator·is·to·be·used·to·simplify·the·communication·between·C·and
153 Erlang.·The·Erlang·port·automatically·adds·the·length·indicator,·but·this·must153 Erlang.·The·Erlang·port·automatically·adds·the·length·indicator,·but·this·must
154 be·done·explicitly·in·the·external·C·program.</p><p>The·process·is·also·set·to·trap·exits,·which·enables·detection·of·failure·of·the154 be·done·explicitly·in·the·external·C·program.</p><p>The·process·is·also·set·to·trap·exits,·which·enables·detection·of·failure·of·the
155 external·program:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4325891175-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="4325891175-1">)</span><span·class="p">.</span><span·class="w">155 external·program:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4035676415-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="4035676415-1">)</span><span·class="p">.</span><span·class="w">
156 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4325891175-2">(</span><span·class="p"·data-group-id="4325891175-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·114,·SHA:·361fe3a61a40136df43dc3c5f0b735bf992ce50c1578075ed0a018edb52ebeaa·...·]5-2">)</span><span·class="p">.</span><span·class="w">156 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4035676415-2">(</span><span·class="p"·data-group-id="4035676415-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·114,·SHA:·1717cb087e002b274ecc1f37ad56b1558ef6c03882953938a1fcabeeb89bf449·...·]5-2">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">start</span><span·class="p"·data-group-id="4325891175-4">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="4325891175-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">start</span><span·class="p"·data-group-id="4035676415-4">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="4035676415-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4325891175-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4325891175-6">[</span><span[·...·truncated·by·diffoscope;·len:·117,·SHA:·d3a1f54c5bb505087448d0887397de1a0d5702c522a3656b72c08d36ef0f8b2b·...·]5-5">)</span><span·class="p">.</span><span·class="w">158 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4035676415-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4035676415-6">[</span><span[·...·truncated·by·diffoscope;·len:·117,·SHA:·0b3c858b9563a68955e2e06013aae878e7f35f73d8f68aa4ed144312b005ef21·...·]5-5">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">init</span><span·class="p"·data-group-id="4325891175-7">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="4325891175-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 </span><span·class="nf">init</span><span·class="p"·data-group-id="4035676415-7">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="4035676415-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="4325891175-8">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="4325891175-9">(</span><span·class="p"·data-group-id="4325891175-9">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·18,·SHA:·a45f02ab543c950be27dcfd75f1e556efa809369235e9bd8b834fd8fc636bc9e·...·]5-8">)</span><span·class="p">,</span><span·class="w">160 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="4035676415-8">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="4035676415-9">(</span><span·class="p"·data-group-id="4035676415-9">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·18,·SHA:·d986f0b17e298f5a3e860e95d8cbe9a9b70c48dca666645d8eb8c796f33b6d04·...·]5-8">)</span><span·class="p">,</span><span·class="w">
161 ··</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="4325891175-10">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="4325891175-10">)</span><span·class="p">,</span><span·class="w">161 ··</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="4035676415-10">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="4035676415-10">)</span><span·class="p">,</span><span·class="w">
162 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="4325891175-11">(</span><span·class="p"·data-group-id="4325891175-12">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="4325891175-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·387,·SHA:·e8487fbeabd9e41c85960e5206b3808094843cc6429a647428a405e3150a65f3·...·]5-11">)</span><span·class="p">,</span><span·class="w">162 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="4035676415-11">(</span><span·class="p"·data-group-id="4035676415-12">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="4035676415-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·387,·SHA:·7ad461af6531e4aeefe941a12d11041cb4adab95685057bfe6545bb5687a5c85·...·]5-11">)</span><span·class="p">,</span><span·class="w">
163 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="4325891175-15">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4325891175-15">)</span><span·class="p">.</span></code></pre><p>Now·<code·class="inline">complex1:foo/1</code>·and·<code·class="inline">complex1:bar/1</code>·can·be·implemented.·Both·send·a163 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="4035676415-15">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4035676415-15">)</span><span·class="p">.</span></code></pre><p>Now·<code·class="inline">complex1:foo/1</code>·and·<code·class="inline">complex1:bar/1</code>·can·be·implemented.·Both·send·a
164 message·to·the·<code·class="inline">complex</code>·process·and·receive·the·following·replies:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="9383041287-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="9383041287-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">164 message·to·the·<code·class="inline">complex</code>·process·and·receive·the·following·replies:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="4351825894-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4351825894-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
165 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="9383041287-2">(</span><span·class="p"·data-group-id="9383041287-3">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="9383041287-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·07aa9f2dbff03f82118a829ac44412bef704d09a587f432d1a3e55c5e99622e1·...·]-2">)</span><span·class="p">.</span><span·class="w">165 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="4351825894-2">(</span><span·class="p"·data-group-id="4351825894-3">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="4351825894-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·fe7600bb8d5e66a4c9dd61c49df8b47371cebcb289f606580a1d5ff21c66447b·...·]-2">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9383041287-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="9383041287-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">166 </span><span·class="nf">bar</span><span·class="p"·data-group-id="4351825894-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="4351825894-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
167 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="9383041287-5">(</span><span·class="p"·data-group-id="9383041287-6">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="9383041287-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·07aa9f2dbff03f82118a829ac44412bef704d09a587f432d1a3e55c5e99622e1·...·]-5">)</span><span·class="p">.</span><span·class="w">167 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="4351825894-5">(</span><span·class="p"·data-group-id="4351825894-6">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="4351825894-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·fe7600bb8d5e66a4c9dd61c49df8b47371cebcb289f606580a1d5ff21c66447b·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
168 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="9383041287-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="9383041287-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="4351825894-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="4351825894-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
169 ··</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9383041287-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9383041287-9">(</span><span·class="p"·data-group-id="9383041287-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·86720cbfbdf10134874a4b8345ce570d0e40641ff61bab6aad47c79907d2e908·...·]-8">}</span><span·class="p">,</span><span·class="w">169 ··</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4351825894-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="4351825894-9">(</span><span·class="p"·data-group-id="4351825894-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·cf6dc3994c3b65ce8fa02f282b2467599c9382e8dc92b144bb1b160a12f6c7a9·...·]-8">}</span><span·class="p">,</span><span·class="w">
170 ··</span><span·class="k">receive</span><span·class="w">170 ··</span><span·class="k">receive</span><span·class="w">
171 ····</span><span·class="p"·data-group-id="9383041287-10">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="9383041287-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 ····</span><span·class="p"·data-group-id="4351825894-10">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="4351825894-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ······</span><span·class="n">Result</span><span·class="w">172 ······</span><span·class="n">Result</span><span·class="w">
173 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">complex</code>·process·does·the·following:</p><ul><li>Encodes·the·message·into·a·sequence·of·bytes.</li><li>Sends·it·to·the·port.</li><li>Waits·for·a·reply.</li><li>Decodes·the·reply.</li><li>Sends·it·back·to·the·caller:</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="7162474616-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7162474616-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">complex</code>·process·does·the·following:</p><ul><li>Encodes·the·message·into·a·sequence·of·bytes.</li><li>Sends·it·to·the·port.</li><li>Waits·for·a·reply.</li><li>Decodes·the·reply.</li><li>Sends·it·back·to·the·caller:</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="4872858702-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4872858702-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ··</span><span·class="k">receive</span><span·class="w">174 ··</span><span·class="k">receive</span><span·class="w">
175 ····</span><span·class="p"·data-group-id="7162474616-2">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7162474616-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ····</span><span·class="p"·data-group-id="4872858702-2">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="4872858702-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ······</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7162474616-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7162474616-4">(</span><span·class="p"·data-group-id="7162474616-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7162474616-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·7bfcd9ea2a04dde7db02f2361e47f24a8dd7c9a06390aa4c04bdc2c5ba7e671e·...·]-3">}</span><span·class="p">,</span><span·class="w">176 ······</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4872858702-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4872858702-4">(</span><span·class="p"·data-group-id="4872858702-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4872858702-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·010f8b0ed42321622de208e4dfebe8dbb6623748f9de751dc546106a906784a0·...·]-3">}</span><span·class="p">,</span><span·class="w">
177 ······</span><span·class="k">receive</span><span·class="w">177 ······</span><span·class="k">receive</span><span·class="w">
178 ········</span><span·class="p"·data-group-id="7162474616-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7162474616-8">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·a1f7e0f531d58cf3896f30c3fb86ef45bd9dea7db4608975ff486474e9713b35·...·]-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 ········</span><span·class="p"·data-group-id="4872858702-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4872858702-8">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·07c062f87c02535ac86504999fc55a103d55bc0e21715204beb36ad54c325750·...·]-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ··········</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7162474616-9">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="7162474616-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="7162474616-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·4ce2e5202d1b3d1992a1afa75f3ece81d09216f68e80ab0bc75e675f8374b928·...·]-9">}</span><span·class="w">179 ··········</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4872858702-9">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="4872858702-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="4872858702-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·dacb03d5764887a9e4eb14addca5ffef901faa8106c4138d950f7fd13d5a0499·...·]-9">}</span><span·class="w">
180 ······</span><span·class="k">end</span><span·class="p">,</span><span·class="w">180 ······</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
181 ······</span><span·class="nf">loop</span><span·class="p"·data-group-id="7162474616-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7162474616-11">)</span><span·class="w">181 ······</span><span·class="nf">loop</span><span·class="p"·data-group-id="4872858702-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4872858702-11">)</span><span·class="w">
182 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Assuming·that·both·the·arguments·and·the·results·from·the·C·functions·are·less182 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Assuming·that·both·the·arguments·and·the·results·from·the·C·functions·are·less
183 than·256,·a·simple·encoding/decoding·scheme·is·employed.·In·this·scheme,·<code·class="inline">foo</code>183 than·256,·a·simple·encoding/decoding·scheme·is·employed.·In·this·scheme,·<code·class="inline">foo</code>
184 is·represented·by·byte·1,·<code·class="inline">bar</code>·is·represented·by·2,·and·the·argument/result·is184 is·represented·by·byte·1,·<code·class="inline">bar</code>·is·represented·by·2,·and·the·argument/result·is
185 represented·by·a·single·byte·as·well:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">encode</span><span·class="p"·data-group-id="3411289663-1">(</span><span·class="p"·data-group-id="3411289663-2">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="3411289663-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·4774e5bc44d1c2d12c86e43e1f55c46c4938c756d6a3c92ced47e2f1d0e01377·...·]-3">]</span><span·class="p">;</span><span·class="w">185 represented·by·a·single·byte·as·well:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">encode</span><span·class="p"·data-group-id="7743592126-1">(</span><span·class="p"·data-group-id="7743592126-2">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="7743592126-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·d4c13df85b15f37e2a1776b3bcb5c84f1745a49cd2dbe9a76846abc71d0b5d67·...·]-3">]</span><span·class="p">;</span><span·class="w">
186 </span><span·class="nf">encode</span><span·class="p"·data-group-id="3411289663-4">(</span><span·class="p"·data-group-id="3411289663-5">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="3411289663-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·f87d744fb980cb3870ec4bcef83fcf2424ae5e9dcc0a0bcebe308f7a1bf896c6·...·]-6">]</span><span·class="p">.</span><span·class="w">186 </span><span·class="nf">encode</span><span·class="p"·data-group-id="7743592126-4">(</span><span·class="p"·data-group-id="7743592126-5">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="7743592126-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·edb9c06e7081dfd315d3e86aab8559c7e502bf48a766b97c8b062a3564e6155f·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">decode</span><span·class="p"·data-group-id="3411289663-7">(</span><span·class="p"·data-group-id="3411289663-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="3411289663-8">]</span><span·class="p"·data-group-id="3411289663-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>The·resulting·Erlang·program,·including·functionality·for·stopping·the·port·and187 </span><span·class="nf">decode</span><span·class="p"·data-group-id="7743592126-7">(</span><span·class="p"·data-group-id="7743592126-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="7743592126-8">]</span><span·class="p"·data-group-id="7743592126-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>The·resulting·Erlang·program,·including·functionality·for·stopping·the·port·and
188 detecting·port·failures,·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0140554171-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="0140554171-1">)</span><span·class="p">.</span><span·class="w">188 detecting·port·failures,·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1258975971-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="1258975971-1">)</span><span·class="p">.</span><span·class="w">
189 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0140554171-2">(</span><span·class="p"·data-group-id="0140554171-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·239,·SHA:·a95960782acc83addb4e4f9a455d2506cafdc57e517d9e3b0ad30144d2a738b8·...·]71-2">)</span><span·class="p">.</span><span·class="w">189 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1258975971-2">(</span><span·class="p"·data-group-id="1258975971-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·239,·SHA:·04ba8cfd580ede6982316267d07321e70f022284cc2c6df619696ab52ea9e796·...·]71-2">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0140554171-4">(</span><span·class="p"·data-group-id="0140554171-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·111,·SHA:·ce9d2ee666975fdba8357ed7454d85841f943e371898b3ef9173f98109ee90c2·...·]71-4">)</span><span·class="p">.</span><span·class="w">190 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1258975971-4">(</span><span·class="p"·data-group-id="1258975971-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·111,·SHA:·e22a4566b49d41aa3eab5302815f812327d9a4b4a67646121c5a0e12b22cb8bc·...·]71-4">)</span><span·class="p">.</span><span·class="w">
  
191 </span><span·class="nf">start</span><span·class="p"·data-group-id="0140554171-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0140554171-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 </span><span·class="nf">start</span><span·class="p"·data-group-id="1258975971-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1258975971-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0140554171-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0140554171-8">[</span><spa[·...·truncated·by·diffoscope;·len:·117,·SHA:·38e0e9558cf0b81180e9c39ca78bf80a42c3a2dd64979758c7fca24cfe16ba2e·...·]71-7">)</span><span·class="p">.</span><span·class="w">192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1258975971-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1258975971-8">[</span><spa[·...·truncated·by·diffoscope;·len:·117,·SHA:·7d413c554c375a0c5c7cde32771023f66b761554a8f31a468f837db0cf74434a·...·]71-7">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="nf">stop</span><span·class="p"·data-group-id="0140554171-9">(</span><span·class="p"·data-group-id="0140554171-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 </span><span·class="nf">stop</span><span·class="p"·data-group-id="1258975971-9">(</span><span·class="p"·data-group-id="1258975971-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">194 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">
  
195 </span><span·class="nf">foo</span><span·class="p"·data-group-id="0140554171-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="0140554171-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 </span><span·class="nf">foo</span><span·class="p"·data-group-id="1258975971-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="1258975971-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0140554171-11">(</span><span·class="p"·data-group-id="0140554171-12">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="0140554171-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·13,·SHA:·aea32d3fd1384635ec595fef4651c92f8efc8d93981ac3e69998dad0d0ebdb16·...·]71-11">)</span><span·class="p">.</span><span·class="w">196 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="1258975971-11">(</span><span·class="p"·data-group-id="1258975971-12">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="1258975971-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·13,·SHA:·45aa820bca833bb34f30619fecf663f5c0d69417234a39b573329837599639a5·...·]71-11">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0140554171-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="0140554171-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">197 </span><span·class="nf">bar</span><span·class="p"·data-group-id="1258975971-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="1258975971-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
198 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0140554171-14">(</span><span·class="p"·data-group-id="0140554171-15">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="0140554171-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·13,·SHA:·aea32d3fd1384635ec595fef4651c92f8efc8d93981ac3e69998dad0d0ebdb16·...·]71-14">)</span><span·class="p">.</span><span·class="w">198 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="1258975971-14">(</span><span·class="p"·data-group-id="1258975971-15">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="1258975971-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·13,·SHA:·45aa820bca833bb34f30619fecf663f5c0d69417234a39b573329837599639a5·...·]71-14">)</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="0140554171-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="0140554171-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">199 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="1258975971-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="1258975971-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
200 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0140554171-17">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0140554171-18">(</span><span·class="p"·data-group-id="0140554171-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·5ac3f28822a1aee3088abb0722e808a900c5145e6cde45c049fdaa2ad1d10fa9·...·]71-17">}</span><span·class="p">,</span><span·class="w">200 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1258975971-17">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="1258975971-18">(</span><span·class="p"·data-group-id="1258975971-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·e4096b5beab2738890f2e37986a665d2ca3a9108b095e94f034c99d52bebf113·...·]71-17">}</span><span·class="p">,</span><span·class="w">
201 ····</span><span·class="k">receive</span><span·class="w">201 ····</span><span·class="k">receive</span><span·class="w">
202 »       </span><span·class="p"·data-group-id="0140554171-19">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="0140554171-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 »       </span><span·class="p"·data-group-id="1258975971-19">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="1258975971-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 »       ····</span><span·class="n">Result</span><span·class="w">203 »       ····</span><span·class="n">Result</span><span·class="w">
204 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">204 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="nf">init</span><span·class="p"·data-group-id="0140554171-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0140554171-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 </span><span·class="nf">init</span><span·class="p"·data-group-id="1258975971-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1258975971-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="0140554171-21">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0140554171-22">(</span><span·class="p"·data-group-id="0140554171-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·21,·SHA:·4274dc854a69fee8942523a1c3fd98f7f1a5f540d27dc6214f89f5993d7c2dce·...·]71-21">)</span><span·class="p">,</span><span·class="w">206 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="1258975971-21">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="1258975971-22">(</span><span·class="p"·data-group-id="1258975971-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·21,·SHA:·88bbd14f486b580fd5f69ed512380750ced42dc23b5253424d4a429c703b26db·...·]71-21">)</span><span·class="p">,</span><span·class="w">
207 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="0140554171-23">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="0140554171-23">)</span><span·class="p">,</span><span·class="w">207 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="1258975971-23">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1258975971-23">)</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="0140554171-24">(</span><span·class="p"·data-group-id="0140554171-25">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0140554171-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·387,·SHA:·cd7fe93b5ffe2d40ec0e5a5588c09f26d8cef2a51a38f09c47de71251b159e77·...·]71-24">)</span><span·class="p">,</span><span·class="w">208 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="1258975971-24">(</span><span·class="p"·data-group-id="1258975971-25">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1258975971-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·387,·SHA:·d9f232a046f5ff812d8246b80001bce6696b8d6f8ab278e464f3289ce22b8249·...·]71-24">)</span><span·class="p">,</span><span·class="w">
209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0140554171-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0140554171-28">)</span><span·class="p">.</span><span·class="w">209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1258975971-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1258975971-28">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">loop</span><span·class="p"·data-group-id="0140554171-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0140554171-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 </span><span·class="nf">loop</span><span·class="p"·data-group-id="1258975971-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1258975971-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="k">receive</span><span·class="w">211 ····</span><span·class="k">receive</span><span·class="w">
212 »       </span><span·class="p"·data-group-id="0140554171-30">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0140554171-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 »       </span><span·class="p"·data-group-id="1258975971-30">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="1258975971-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0140554171-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0140554171-32">(</span><span·class="p"·data-group-id="0140554171-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0140554171-33">{</[·...·truncated·by·diffoscope;·len:·341,·SHA:·5ce50c623d43af2b925cc6bc8ee87d66748234cc164042d306d7eb25a2090845·...·]71-31">}</span><span·class="p">,</span><span·class="w">213 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1258975971-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1258975971-32">(</span><span·class="p"·data-group-id="1258975971-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1258975971-33">{</[·...·truncated·by·diffoscope;·len:·341,·SHA:·78dca1cff40f1c8694281c90b853c768f48a9d2b5d7b516477e0b9b713f6ed02·...·]71-31">}</span><span·class="p">,</span><span·class="w">
214 »       ····</span><span·class="k">receive</span><span·class="w">214 »       ····</span><span·class="k">receive</span><span·class="w">
215 »       »       </span><span·class="p"·data-group-id="0140554171-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0140554171-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·78177c5f4efd2d934dee44130aaa1b7709a5bdecde2362820feae14a16ce85a5·...·]71-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 »       »       </span><span·class="p"·data-group-id="1258975971-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1258975971-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·87aa44742c0f93994a0907b2e348f8e8e43a6669ad16bd400a44bc8277ea7406·...·]71-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
216 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0140554171-37">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="0140554171-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="0140554171-3[·...·truncated·by·diffoscope;·len:·50,·SHA:·6e0841370684f224ca72621a136234137367e14703c116c9602bcf9cd1eced24·...·]71-37">}</span><span·class="w">216 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1258975971-37">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="1258975971-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="1258975971-3[·...·truncated·by·diffoscope;·len:·50,·SHA:·1bd3a9647b1ff2a3ddb497004b091da08d9a69d9c4c058523536de42630fb09e·...·]71-37">}</span><span·class="w">
217 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">217 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
218 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0140554171-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0140554171-39">)</span><span·class="p">;</span><span·class="w">218 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1258975971-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1258975971-39">)</span><span·class="p">;</span><span·class="w">
219 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0140554171-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0140554171-41">(</span><span·class="p"·data-group-id="0140554171-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·19,·SHA:·57240175c5cecca86692a1fd837e84e066d07cbf2e867c7979f68dbe51bde2d7·...·]71-40">}</span><span·class="p">,</span><span·class="w">220 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1258975971-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1258975971-41">(</span><span·class="p"·data-group-id="1258975971-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·19,·SHA:·e44925cade0694ffc866fc757112612ded248f42dd102664a6d813bc61a4b7e5·...·]71-40">}</span><span·class="p">,</span><span·class="w">
221 »       ····</span><span·class="k">receive</span><span·class="w">221 »       ····</span><span·class="k">receive</span><span·class="w">
222 »       »       </span><span·class="p"·data-group-id="0140554171-42">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="0140554171-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 »       »       </span><span·class="p"·data-group-id="1258975971-42">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="1258975971-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0140554171-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="0140554171-43">)</span><span·class="w">223 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="1258975971-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="1258975971-43">)</span><span·class="w">
224 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">224 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
225 »       </span><span·class="p"·data-group-id="0140554171-44">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0140554171-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 »       </span><span·class="p"·data-group-id="1258975971-44">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="1258975971-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0140554171-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="0140554171-45">)</span><span·class="w">226 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="1258975971-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="1258975971-45">)</span><span·class="w">
227 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">227 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
228 </span><span·class="nf">encode</span><span·class="p"·data-group-id="0140554171-46">(</span><span·class="p"·data-group-id="0140554171-47">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="0140554171-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·294,·SHA:·7ee9594ff6996ff966633c30a6010b325b734e14b1b0f5e723e8a57c7ba48b65·...·]71-48">]</span><span·class="p">;</span><span·class="w">228 </span><span·class="nf">encode</span><span·class="p"·data-group-id="1258975971-46">(</span><span·class="p"·data-group-id="1258975971-47">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="1258975971-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·294,·SHA:·377731ef2d3303b4b2d7b13efa0d5acd004b04447ff2bfdee8db10e57b5502d4·...·]71-48">]</span><span·class="p">;</span><span·class="w">
229 </span><span·class="nf">encode</span><span·class="p"·data-group-id="0140554171-49">(</span><span·class="p"·data-group-id="0140554171-50">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="0140554171-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·294,·SHA:·0ed189874702e5c81fcdfa22bb1d0ec28f21da4340e37f8705760e3a34c5ff1c·...·]71-51">]</span><span·class="p">.</span><span·class="w">229 </span><span·class="nf">encode</span><span·class="p"·data-group-id="1258975971-49">(</span><span·class="p"·data-group-id="1258975971-50">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="1258975971-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·294,·SHA:·40a207aabc27a059e3a78988701cbbb93aa8593f5632f7af89c0f29b59c55335·...·]71-51">]</span><span·class="p">.</span><span·class="w">
  
230 </span><span·class="nf">decode</span><span·class="p"·data-group-id="0140554171-52">(</span><span·class="p"·data-group-id="0140554171-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="0140554171-53">]</span><span·class="p"·data-group-id="0140554171-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><h2·id="c-program"·class="section-heading">230 </span><span·class="nf">decode</span><span·class="p"·data-group-id="1258975971-52">(</span><span·class="p"·data-group-id="1258975971-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="1258975971-53">]</span><span·class="p"·data-group-id="1258975971-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><h2·id="c-program"·class="section-heading">
231 ··<a·href="#c-program"·class="hover-link">231 ··<a·href="#c-program"·class="hover-link">
232 ····<i·class="ri-link-m"·aria-hidden="true"></i>232 ····<i·class="ri-link-m"·aria-hidden="true"></i>
233 ··</a>233 ··</a>
234 ··<span·class="text">C·Program</span>234 ··<span·class="text">C·Program</span>
235 </h2>235 </h2>
236 <p>On·the·C·side,·it·is·necessary·to·write·functions·for·receiving·and·sending·data236 <p>On·the·C·side,·it·is·necessary·to·write·functions·for·receiving·and·sending·data
237 with·2·byte·length·indicators·from/to·Erlang.·By·default,·the·C·program·is·to237 with·2·byte·length·indicators·from/to·Erlang.·By·default,·the·C·program·is·to
Offset 333, 25 lines modifiedOffset 333, 25 lines modified
333 and·terminates.</p><h2·id="running-the-example"·class="section-heading">333 and·terminates.</p><h2·id="running-the-example"·class="section-heading">
334 ··<a·href="#running-the-example"·class="hover-link">334 ··<a·href="#running-the-example"·class="hover-link">
335 ····<i·class="ri-link-m"·aria-hidden="true"></i>335 ····<i·class="ri-link-m"·aria-hidden="true"></i>
336 ··</a>336 ··</a>
337 ··<span·class="text">Running·the·Example</span>337 ··<span·class="text">Running·the·Example</span>
338 </h2>338 </h2>
339 <p><em>Step·1.</em>·Compile·the·C·code:</p><pre><code·class="text">$·gcc·-o·extprg·complex.c·erl_comm.c·port.c</code></pre><p><em>Step·2.</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">339 <p><em>Step·1.</em>·Compile·the·C·code:</p><pre><code·class="text">$·gcc·-o·extprg·complex.c·erl_comm.c·port.c</code></pre><p><em>Step·2.</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">
340 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="p"·data-group-id="7348137607-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="7348137607-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7348137607-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·1c8f52f87dc88cecd9313363fc0bc022f3c900957de7e473841f221e2f1ef6e6·...·]-7">]</span><span·class="w">340 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="p"·data-group-id="0758682264-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="0758682264-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="0758682264-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·834a46a358219c86b733bbbec8fc9abce5d0faec2fa4bd310d0debc96427b6bc·...·]-7">]</span><span·class="w">
  
341 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V14</span><span·class="p">.</span><span·class="mi">2</span><span·class="w">·</span><span·class="p"·data-group-id="7348137607-8">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·a3ffe220d28f032cfa2d63a1e822d60f35882148e827fc906fe8f2b5fc0c1a74·...·]-8">)</span><span·class="gp·unselectable">341 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V14</span><span·class="p">.</span><span·class="mi">2</span><span·class="w">·</span><span·class="p"·data-group-id="0758682264-8">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·06af0a1fdf406796b9d7f8d3516667056f2bcd25018fd132447a9c143402a1d1·...·]-8">)</span><span·class="gp·unselectable">
342 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="7348137607-10">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="7348137607-10">)</span><span·class="p">.</span><span·class="w">342 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="0758682264-10">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="0758682264-10">)</span><span·class="p">.</span><span·class="w">
343 </span><span·class="p"·data-group-id="7348137607-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex1</span><span·class="p"·data-group-id="7348137607-11">}</span></code></pre><p><em>Step·3.</em>·Run·the·example:</p><pre><code·class="makeup·erlang"·translate="[·...·truncated·by·diffoscope;·len:·269,·SHA:·cbf3b00692eb827de063a0241bbdd8d5b123d0fa5d27e1553c4550219608f958·...·]-1">)</span><span·class="p">.</span><span·class="w">343 </span><span·class="p"·data-group-id="0758682264-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex1</span><span·class="p"·data-group-id="0758682264-11">}</span></code></pre><p><em>Step·3.</em>·Run·the·example:</p><pre><code·class="makeup·erlang"·translate="[·...·truncated·by·diffoscope;·len:·269,·SHA:·ab97ea8aaf7fc26493b5e2da74caaec5b7e17568a99ae9caaab592bf75ecdf9e·...·]-1">)</span><span·class="p">.</span><span·class="w">
344 </span><span·class="o">&lt;</span><span·class="mf">0.34</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">344 </span><span·class="o">&lt;</span><span·class="mf">0.34</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
345 3&gt;·</span><span·class="nc">complex1</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="8893979405-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="8893979405-2">)</span><span·class="p">.</span><span·class="w">345 3&gt;·</span><span·class="nc">complex1</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="5688319597-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="5688319597-2">)</span><span·class="p">.</span><span·class="w">
346 </span><span·class="mi">4</span><span·class="gp·unselectable">346 </span><span·class="mi">4</span><span·class="gp·unselectable">
347 4&gt;·</span><span·class="nc">complex1</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="8893979405-3">(</span><span·class="mi">5</span><span·class="p"·data-group-id="8893979405-3">)</span><span·class="p">.</span><span·class="w">347 4&gt;·</span><span·class="nc">complex1</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="5688319597-3">(</span><span·class="mi">5</span><span·class="p"·data-group-id="5688319597-3">)</span><span·class="p">.</span><span·class="w">
348 </span><span·class="mi">10</span><span·class="gp·unselectable">348 </span><span·class="mi">10</span><span·class="gp·unselectable">
349 5&gt;·</span><span·class="nc">complex1</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="8893979405-4">(</span><span·class="p"·data-group-id="8893979405-4">)</span><span·class="p">.</span><span·class="w">349 5&gt;·</span><span·class="nc">complex1</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="5688319597-4">(</span><span·class="p"·data-group-id="5688319597-4">)</span><span·class="p">.</span><span·class="w">
350 </span><span·class="ss">stop</span></code></pre>350 </span><span·class="ss">stop</span></code></pre>
351 </div>351 </div>
  
352 <div·class="bottom-actions"·id="bottom-actions">352 <div·class="bottom-actions"·id="bottom-actions">
353 ··<div·class="bottom-actions-item">353 ··<div·class="bottom-actions-item">
  
354 ······<a·href="example.html"·class="bottom-actions-button"·rel="prev">354 ······<a·href="example.html"·class="bottom-actions-button"·rel="prev">
Max diff block lines reached; -1/60004 bytes (-0.00%) of diff not shown.
63.7 KB
./usr/share/doc/erlang-doc/html/doc/system/c_portdriver.html
    
Offset 151, 112 lines modifiedOffset 151, 112 lines modified
151 <p>Like·a·port·program,·the·port·communicates·with·an·Erlang·process.·All151 <p>Like·a·port·program,·the·port·communicates·with·an·Erlang·process.·All
152 communication·goes·through·one·Erlang·process·that·is·the·<em>connected·process</em>·of152 communication·goes·through·one·Erlang·process·that·is·the·<em>connected·process</em>·of
153 the·port·driver.·Terminating·this·process·closes·the·port·driver.</p><p>Before·the·port·is·created,·the·driver·must·be·loaded.·This·is·done·with·the153 the·port·driver.·Terminating·this·process·closes·the·port·driver.</p><p>Before·the·port·is·created,·the·driver·must·be·loaded.·This·is·done·with·the
154 function·<a·href="../../lib/kernel-10.2.2/doc/html/erl_ddll.html#load_driver/2"><code·class="inline">erl_ddll:load_driver/2</code></a>,·with·the·name·of·the·shared·library·as154 function·<a·href="../../lib/kernel-10.2.2/doc/html/erl_ddll.html#load_driver/2"><code·class="inline">erl_ddll:load_driver/2</code></a>,·with·the·name·of·the·shared·library·as
155 argument.</p><p>The·port·is·then·created·using·the·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>,·with·the155 argument.</p><p>The·port·is·then·created·using·the·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>,·with·the
156 tuple·<code·class="inline">{spawn,·DriverName}</code>·as·the·first·argument.·The·string·<code·class="inline">SharedLib</code>·is·the156 tuple·<code·class="inline">{spawn,·DriverName}</code>·as·the·first·argument.·The·string·<code·class="inline">SharedLib</code>·is·the
157 name·of·the·port·driver.·The·second·argument·is·a·list·of·options,·none·in·this157 name·of·the·port·driver.·The·second·argument·is·a·list·of·options,·none·in·this
158 case:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1810707931-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="1810707931-1">)</span><span·class="p">.</span><span·class="w">158 case:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8073592187-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="8073592187-1">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1810707931-2">(</span><span·class="p"·data-group-id="1810707931-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·287059674f6f1643a0ecc2f34ae9ef6a1abf0066dbbdd8ef0c56f31fc5e86a7f·...·]-2">)</span><span·class="p">.</span><span·class="w">159 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8073592187-2">(</span><span·class="p"·data-group-id="8073592187-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·8d4c742edced7da5b514c8fd484181c843d8f51e0a1900ebdfd3e674eed0e8bc·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">start</span><span·class="p"·data-group-id="1810707931-4">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="1810707931-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">160 </span><span·class="nf">start</span><span·class="p"·data-group-id="8073592187-4">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="8073592187-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
161 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="1810707931-5">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="1810707931-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">161 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="8073592187-5">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="8073592187-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
162 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">162 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
163 ········</span><span·class="p"·data-group-id="1810707931-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="1810707931-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">163 ········</span><span·class="p"·data-group-id="8073592187-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="8073592187-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
164 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="1810707931-7">(</span><span·class="p"·data-group-id="1810707931-8">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">could_not_load_driver</span><span·class="p"·data-group-id="1810707931-8">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·f7f2add565c70aa391db5260c55b6823bf150734cb0c08e420f17e1f4b83c615·...·]-7">)</span><span·class="w">164 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="8073592187-7">(</span><span·class="p"·data-group-id="8073592187-8">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">could_not_load_driver</span><span·class="p"·data-group-id="8073592187-8">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·574a9f6cb8765d152914d6ac81ec46755494b48a6cd5d8f6e85cfc27b479810d·...·]-7">)</span><span·class="w">
165 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">165 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
166 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1810707931-9">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1810707931-10">[</span><sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·3d4fd30405871cf0494225d2632ea539f502ee41d495bf015806bb7ef6baa1dd·...·]-9">)</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8073592187-9">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8073592187-10">[</span><sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·496923164cf90936ae430af345b142659c84dd8873e2d6b07101ed0dbf37377e·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">init</span><span·class="p"·data-group-id="1810707931-11">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="1810707931-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 </span><span·class="nf">init</span><span·class="p"·data-group-id="8073592187-11">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="8073592187-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="1810707931-12">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="1810707931-13">(</span><span·class="p"·data-group-id="1810707931-13">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·ce2abeb7e751b1020affc79db9d5d0ef03b0c198d199e92772abe97df22a2ad5·...·]-12">)</span><span·class="p">,</span><span·class="w">168 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="8073592187-12">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="8073592187-13">(</span><span·class="p"·data-group-id="8073592187-13">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·a2059910db13799a4910a929985a1fb6ef50e4e973b621d6f41ca409a9f7fe72·...·]-12">)</span><span·class="p">,</span><span·class="w">
169 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="1810707931-14">(</span><span·class="p"·data-group-id="1810707931-15">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="1810707931-15">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·173e55ec3febf8ffabee2a30e18f9cb65e57caa9a4fc89ae24832917be84b248·...·]-14">)</span><span·class="p">,</span><span·class="w">169 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="8073592187-14">(</span><span·class="p"·data-group-id="8073592187-15">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="8073592187-15">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·9bdc61efaf0da52ea9deb2767ee7f1cabcaf552c6587067d34bc92137415fdb7·...·]-14">)</span><span·class="p">,</span><span·class="w">
170 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="1810707931-17">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1810707931-17">)</span><span·class="p">.</span></code></pre><p>Now·<code·class="inline">complex5:foo/1</code>·and·<code·class="inline">complex5:bar/1</code>·can·be·implemented.·Both·send·a170 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="8073592187-17">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8073592187-17">)</span><span·class="p">.</span></code></pre><p>Now·<code·class="inline">complex5:foo/1</code>·and·<code·class="inline">complex5:bar/1</code>·can·be·implemented.·Both·send·a
171 message·to·the·<code·class="inline">complex</code>·process·and·receive·the·following·reply:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="4189159006-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4189159006-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 message·to·the·<code·class="inline">complex</code>·process·and·receive·the·following·reply:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="2194081961-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2194081961-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="4189159006-2">(</span><span·class="p"·data-group-id="4189159006-3">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="4189159006-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·8bb967fb34939dd6f947bf22b95a42c9061001f8a5a2bfad47e9a7eae38903f8·...·]-2">)</span><span·class="p">.</span><span·class="w">172 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2194081961-2">(</span><span·class="p"·data-group-id="2194081961-3">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="2194081961-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·9a396f92a97721d22fb1d8f27043653edbf67b0cb48ec9224909fa5a6a9aadec·...·]-2">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="nf">bar</span><span·class="p"·data-group-id="4189159006-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="4189159006-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2194081961-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2194081961-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="4189159006-5">(</span><span·class="p"·data-group-id="4189159006-6">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="4189159006-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·8bb967fb34939dd6f947bf22b95a42c9061001f8a5a2bfad47e9a7eae38903f8·...·]-5">)</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2194081961-5">(</span><span·class="p"·data-group-id="2194081961-6">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2194081961-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·9a396f92a97721d22fb1d8f27043653edbf67b0cb48ec9224909fa5a6a9aadec·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="4189159006-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="4189159006-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="2194081961-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2194081961-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4189159006-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="4189159006-9">(</span><span·class="p"·data-group-id="4189159006-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·562ec2c48323122f6d6a00803a0ac3d24992497775aac765501304c499a8bdf3·...·]-8">}</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2194081961-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2194081961-9">(</span><span·class="p"·data-group-id="2194081961-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·580d4ebe00f99624a3b8f7d176c10b79a089e11e0056c5cebcce1ab5a83c2c54·...·]-8">}</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="k">receive</span><span·class="w">177 ····</span><span·class="k">receive</span><span·class="w">
178 ········</span><span·class="p"·data-group-id="4189159006-10">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="4189159006-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 ········</span><span·class="p"·data-group-id="2194081961-10">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="2194081961-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ············</span><span·class="n">Result</span><span·class="w">179 ············</span><span·class="n">Result</span><span·class="w">
180 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">complex</code>·process·performs·the·following:</p><ul><li>Encodes·the·message·into·a·sequence·of·bytes.</li><li>Sends·it·to·the·port.</li><li>Waits·for·a·reply.</li><li>Decodes·the·reply.</li><li>Sends·it·back·to·the·caller:</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="9940816510-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9940816510-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">complex</code>·process·performs·the·following:</p><ul><li>Encodes·the·message·into·a·sequence·of·bytes.</li><li>Sends·it·to·the·port.</li><li>Waits·for·a·reply.</li><li>Decodes·the·reply.</li><li>Sends·it·back·to·the·caller:</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="1199447733-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1199447733-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="k">receive</span><span·class="w">181 ····</span><span·class="k">receive</span><span·class="w">
182 ········</span><span·class="p"·data-group-id="9940816510-2">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="9940816510-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 ········</span><span·class="p"·data-group-id="1199447733-2">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="1199447733-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ············</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9940816510-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9940816510-4">(</span><span·class="p"·data-group-id="9940816510-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9940816510-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·d0e77c04df334f302364079b8cf8a4d9a9ec908a013280cf4acaf83079f8dcc4·...·]-3">}</span><span·class="p">,</span><span·class="w">183 ············</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1199447733-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1199447733-4">(</span><span·class="p"·data-group-id="1199447733-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1199447733-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·8467fc7abec777c9e95b0487189d05a7ea4b92f95976c0c04b210c8991a138df·...·]-3">}</span><span·class="p">,</span><span·class="w">
184 ············</span><span·class="k">receive</span><span·class="w">184 ············</span><span·class="k">receive</span><span·class="w">
185 ················</span><span·class="p"·data-group-id="9940816510-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9940816510-8">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·2ab4e960315d05dad4946bbe2f2b5be44536cf7f9074161a60b4c3094e84dd3f·...·]-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">185 ················</span><span·class="p"·data-group-id="1199447733-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1199447733-8">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·6aff180131e255ac42d216a981e7c85627a89c6f9181b955c56ff639615d9e78·...·]-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
186 ····················</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9940816510-9">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="9940816510-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9940816510-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·3f9805a9d84b58981187734080b90c4bea29f83ae871beefcef2418038f06ef6·...·]-9">}</span><span·class="w">186 ····················</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1199447733-9">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="1199447733-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="1199447733-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·41aaea8c84088932b01e9b42c16d953131470e767211e408dec370352708cc9e·...·]-9">}</span><span·class="w">
187 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">187 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
188 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="9940816510-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9940816510-11">)</span><span·class="w">188 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1199447733-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1199447733-11">)</span><span·class="w">
189 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Assuming·that·both·the·arguments·and·the·results·from·the·C·functions·are·less189 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Assuming·that·both·the·arguments·and·the·results·from·the·C·functions·are·less
190 than·256,·a·simple·encoding/decoding·scheme·is·employed.·In·this·scheme,·<code·class="inline">foo</code>190 than·256,·a·simple·encoding/decoding·scheme·is·employed.·In·this·scheme,·<code·class="inline">foo</code>
191 is·represented·by·byte·1,·<code·class="inline">bar</code>·is·represented·by·2,·and·the·argument/result·is191 is·represented·by·byte·1,·<code·class="inline">bar</code>·is·represented·by·2,·and·the·argument/result·is
192 represented·by·a·single·byte·as·well:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">encode</span><span·class="p"·data-group-id="1130530403-1">(</span><span·class="p"·data-group-id="1130530403-2">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="1130530403-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·aaa581e0c5a693902bf10aa484d702be0c2f524ec5b91738fb4e05dc03837bb3·...·]-3">]</span><span·class="p">;</span><span·class="w">192 represented·by·a·single·byte·as·well:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">encode</span><span·class="p"·data-group-id="9443663090-1">(</span><span·class="p"·data-group-id="9443663090-2">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="9443663090-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·6fd3ebac4220a864ea708bfc20dec8840e20acb762b2c6a0c5315f9816873bc6·...·]-3">]</span><span·class="p">;</span><span·class="w">
193 </span><span·class="nf">encode</span><span·class="p"·data-group-id="1130530403-4">(</span><span·class="p"·data-group-id="1130530403-5">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="1130530403-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·6877a766f08f2ee2433f960c38606fa82867e08cb638a98ef40ba91b098f9822·...·]-6">]</span><span·class="p">.</span><span·class="w">193 </span><span·class="nf">encode</span><span·class="p"·data-group-id="9443663090-4">(</span><span·class="p"·data-group-id="9443663090-5">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="9443663090-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·8544e63f5e42e56dd25ccc474f4f267b460e7621cef5f5007d06574c19218c0b·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
194 </span><span·class="nf">decode</span><span·class="p"·data-group-id="1130530403-7">(</span><span·class="p"·data-group-id="1130530403-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="1130530403-8">]</span><span·class="p"·data-group-id="1130530403-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>The·resulting·Erlang·program,·including·functions·for·stopping·the·port·and194 </span><span·class="nf">decode</span><span·class="p"·data-group-id="9443663090-7">(</span><span·class="p"·data-group-id="9443663090-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="9443663090-8">]</span><span·class="p"·data-group-id="9443663090-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>The·resulting·Erlang·program,·including·functions·for·stopping·the·port·and
195 detecting·port·failures,·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">195 detecting·port·failures,·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
196 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5627860149-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="5627860149-1">)</span><span·class="p">.</span><span·class="w">196 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2899530722-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="2899530722-1">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5627860149-2">(</span><span·class="p"·data-group-id="5627860149-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·422057ed692522832de67b67234a1116d09309bc5019eb387a9638befef5aa45·...·]-2">)</span><span·class="p">.</span><span·class="w">197 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2899530722-2">(</span><span·class="p"·data-group-id="2899530722-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·b6d151295898780487a3aeb4a48b0a38bac867dd76404b37248b210586d38eb9·...·]-2">)</span><span·class="p">.</span><span·class="w">
198 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5627860149-4">(</span><span·class="p"·data-group-id="5627860149-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·43292d19ed7184143007a956acf37906f1297cbb5a71b3d44c7461c44ab29b73·...·]-4">)</span><span·class="p">.</span><span·class="w">198 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2899530722-4">(</span><span·class="p"·data-group-id="2899530722-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·68714015f253d705aa06eae8b905ffaa1f262cf5fa83fa760c7b3ce13a338812·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">start</span><span·class="p"·data-group-id="5627860149-6">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="5627860149-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">199 </span><span·class="nf">start</span><span·class="p"·data-group-id="2899530722-6">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="2899530722-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
200 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="5627860149-7">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="5627860149-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">200 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="2899530722-7">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="2899530722-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
201 »       </span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">201 »       </span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
202 »       </span><span·class="p"·data-group-id="5627860149-8">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="5627860149-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">202 »       </span><span·class="p"·data-group-id="2899530722-8">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="2899530722-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
203 »       </span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="5627860149-9">(</span><span·class="p"·data-group-id="5627860149-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">could_not_load_driver</span><span·class="p"·data-group-id="5627860149-10">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·7d52a8823ffb5c58d91e6d99ad483f5dc78ee7881a760ccd9c0e14d38d7cac0e·...·]-9">)</span><span·class="w">203 »       </span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="2899530722-9">(</span><span·class="p"·data-group-id="2899530722-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">could_not_load_driver</span><span·class="p"·data-group-id="2899530722-10">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·9f8263cfbbc2cfef20cb11da96c21109a2cd274ea6ad42178fb4c9c692eacb49·...·]-9">)</span><span·class="w">
204 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5627860149-11">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-12">[</span><s[·...·truncated·by·diffoscope;·len:·125,·SHA:·f4c1607145d91576867f881c1cf74e7e05a09c795b21f8f54a6335f792baed46·...·]-11">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2899530722-11">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-12">[</span><s[·...·truncated·by·diffoscope;·len:·125,·SHA:·25e07b178cfaba596e2c1ddfe14080789e658920c09584855f4b6be38ed922a7·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">init</span><span·class="p"·data-group-id="5627860149-13">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="5627860149-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 </span><span·class="nf">init</span><span·class="p"·data-group-id="2899530722-13">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="2899530722-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="5627860149-14">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="5627860149-15">(</span><span·class="p"·data-group-id="5627860149-15">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·dbd51722e1b8c0812843b16f3709476b90cf066b297883071ad24ec3fb99650f·...·]-14">)</span><span·class="p">,</span><span·class="w">207 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="2899530722-14">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2899530722-15">(</span><span·class="p"·data-group-id="2899530722-15">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·919aac9bb4970581f126027cf1fa3bb544fe29e915dd71c7965b4e4f0bb97dce·...·]-14">)</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="5627860149-16">(</span><span·class="p"·data-group-id="5627860149-17">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="5627860149-17">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·6f64fb82896be6e03a3fe9204014ac7f910a52d1af2841542b20803f0643ae10·...·]-16">)</span><span·class="p">,</span><span·class="w">208 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="2899530722-16">(</span><span·class="p"·data-group-id="2899530722-17">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="2899530722-17">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·81b9e46a44b30cabb9199d759022610059fe8f3ed1969f732d8449dcba771e48·...·]-16">)</span><span·class="p">,</span><span·class="w">
209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5627860149-19">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5627860149-19">)</span><span·class="p">.</span><span·class="w">209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2899530722-19">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2899530722-19">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">stop</span><span·class="p"·data-group-id="5627860149-20">(</span><span·class="p"·data-group-id="5627860149-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 </span><span·class="nf">stop</span><span·class="p"·data-group-id="2899530722-20">(</span><span·class="p"·data-group-id="2899530722-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">211 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">foo</span><span·class="p"·data-group-id="5627860149-21">(</span><span·class="n">X</span><span·class="p"·data-group-id="5627860149-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 </span><span·class="nf">foo</span><span·class="p"·data-group-id="2899530722-21">(</span><span·class="n">X</span><span·class="p"·data-group-id="2899530722-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="5627860149-22">(</span><span·class="p"·data-group-id="5627860149-23">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="5627860149-23">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·5df3ec443a9d00406af0048cd6c4c9b50835f2967b8e7df7cdc226704bb6ad6e·...·]-22">)</span><span·class="p">.</span><span·class="w">213 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2899530722-22">(</span><span·class="p"·data-group-id="2899530722-23">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="2899530722-23">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·336cd36ea0df62e82b4a50bc66c944adb6c1f75f1c75792527fd522f0a322ffd·...·]-22">)</span><span·class="p">.</span><span·class="w">
214 </span><span·class="nf">bar</span><span·class="p"·data-group-id="5627860149-24">(</span><span·class="n">Y</span><span·class="p"·data-group-id="5627860149-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2899530722-24">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2899530722-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="5627860149-25">(</span><span·class="p"·data-group-id="5627860149-26">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="5627860149-26">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·5df3ec443a9d00406af0048cd6c4c9b50835f2967b8e7df7cdc226704bb6ad6e·...·]-25">)</span><span·class="p">.</span><span·class="w">215 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2899530722-25">(</span><span·class="p"·data-group-id="2899530722-26">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2899530722-26">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·336cd36ea0df62e82b4a50bc66c944adb6c1f75f1c75792527fd522f0a322ffd·...·]-25">)</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="5627860149-27">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="5627860149-27">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="2899530722-27">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2899530722-27">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
217 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-28">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="5627860149-29">(</span><span·class="p"·data-group-id="5627860149-29">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·5354df3239d1e633f7e04c4bdcc98226cf560ebdfd276c00d33d5e12b7a3357e·...·]-28">}</span><span·class="p">,</span><span·class="w">217 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-28">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2899530722-29">(</span><span·class="p"·data-group-id="2899530722-29">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·e815d17f4af477d3cd3b2f1761a403c65f2839c2e611613e41ec8c82d8d72ae9·...·]-28">}</span><span·class="p">,</span><span·class="w">
218 ····</span><span·class="k">receive</span><span·class="w">218 ····</span><span·class="k">receive</span><span·class="w">
219 »       </span><span·class="p"·data-group-id="5627860149-30">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="5627860149-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 »       </span><span·class="p"·data-group-id="2899530722-30">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="2899530722-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 »       ····</span><span·class="n">Result</span><span·class="w">220 »       ····</span><span·class="n">Result</span><span·class="w">
221 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">221 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
222 </span><span·class="nf">loop</span><span·class="p"·data-group-id="5627860149-31">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5627860149-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 </span><span·class="nf">loop</span><span·class="p"·data-group-id="2899530722-31">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2899530722-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ····</span><span·class="k">receive</span><span·class="w">223 ····</span><span·class="k">receive</span><span·class="w">
224 »       </span><span·class="p"·data-group-id="5627860149-32">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="5627860149-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 »       </span><span·class="p"·data-group-id="2899530722-32">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="2899530722-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-33">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5627860149-34">(</span><span·class="p"·data-group-id="5627860149-34">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-35">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·748770698677b770a9773e8decde7ac45db88d8079e128a6fe084aa238d0081b·...·]-33">}</span><span·class="p">,</span><span·class="w">225 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-33">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2899530722-34">(</span><span·class="p"·data-group-id="2899530722-34">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-35">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·deeb1b1c06e676dd3aa922329a7428a4f5287f4277350561c30fcbcd34a7b269·...·]-33">}</span><span·class="p">,</span><span·class="w">
226 »       ····</span><span·class="k">receive</span><span·class="w">226 »       ····</span><span·class="k">receive</span><span·class="w">
227 »       »       </span><span·class="p"·data-group-id="5627860149-37">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-38">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·93a8eeb33cf0809e8b2c77347396f06d736a5dd9146540b69045e4eebde1cceb·...·]-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 »       »       </span><span·class="p"·data-group-id="2899530722-37">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-38">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·397cd3f4243a190bff17c4f60484f927b9b3eea10241a966960f71fb1f4dc51e·...·]-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-39">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="5627860149-40">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5627860149-4[·...·truncated·by·diffoscope;·len:·52,·SHA:·281a69ce3965c73e5132ab6c16bfe81548e5021611ce003c7a550903a558cef6·...·]-39">}</span><span·class="w">228 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-39">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="2899530722-40">(</span><span·class="n">Data</span><span·class="p"·data-group-id="2899530722-4[·...·truncated·by·diffoscope;·len:·52,·SHA:·764b84172b4ada4656ef23f1d01012d4ea36baca5e62d5f7abcce6a10f169511·...·]-39">}</span><span·class="w">
229 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">229 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
230 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5627860149-41">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5627860149-41">)</span><span·class="p">;</span><span·class="w">230 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2899530722-41">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2899530722-41">)</span><span·class="p">;</span><span·class="w">
231 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-42">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5627860149-43">(</span><span·class="p"·data-group-id="5627860149-43">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·6620092f6cdb48339f63cdde349306bc83fa470916e58c380439bf8f31988f89·...·]-42">}</span><span·class="p">,</span><span·class="w">232 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-42">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2899530722-43">(</span><span·class="p"·data-group-id="2899530722-43">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·196da1c324b11e4d70a0afe80c2e84eaad533af50245689aecd25bb1dec056f4·...·]-42">}</span><span·class="p">,</span><span·class="w">
233 »       ····</span><span·class="k">receive</span><span·class="w">233 »       ····</span><span·class="k">receive</span><span·class="w">
234 »       »       </span><span·class="p"·data-group-id="5627860149-44">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="5627860149-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 »       »       </span><span·class="p"·data-group-id="2899530722-44">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="2899530722-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
235 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="5627860149-45">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="5627860149-45">)</span><span·class="w">235 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="2899530722-45">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2899530722-45">)</span><span·class="w">
236 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">236 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
237 »       </span><span·class="p"·data-group-id="5627860149-46">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5627860149-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">237 »       </span><span·class="p"·data-group-id="2899530722-46">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="2899530722-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 »       ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5627860149-47">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5627860149-48">[</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·f47855e208972dc17a03edebde40c177f03be25f61381fa992994617b6a778c2·...·]-47">)</span><span·class="p">,</span><span·class="w">238 »       ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2899530722-47">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2899530722-48">[</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·c961e4f31a8839ddb537d07bb32360f864377485a173e20b75e86b1a2ce39a7e·...·]-47">)</span><span·class="p">,</span><span·class="w">
239 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="5627860149-49">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="5627860149-49">)</span><span·class="w">239 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="2899530722-49">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="2899530722-49">)</span><span·class="w">
240 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">240 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
241 </span><span·class="nf">encode</span><span·class="p"·data-group-id="5627860149-50">(</span><span·class="p"·data-group-id="5627860149-51">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="5627860149-51">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·18aa2502ef4012594daacc4660c098744033424af354d3a54bd9afbd67cf4043·...·]-52">]</span><span·class="p">;</span><span·class="w">241 </span><span·class="nf">encode</span><span·class="p"·data-group-id="2899530722-50">(</span><span·class="p"·data-group-id="2899530722-51">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="2899530722-51">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·03d3e8d906d4f55db9299a147b3c689931fffec60e6a2eaf1048516164e5d757·...·]-52">]</span><span·class="p">;</span><span·class="w">
242 </span><span·class="nf">encode</span><span·class="p"·data-group-id="5627860149-53">(</span><span·class="p"·data-group-id="5627860149-54">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="5627860149-54">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·d56f2bca4a79058db01844c071f752fd97d2f37031753e85c2d13a22ba863a1f·...·]-55">]</span><span·class="p">.</span><span·class="w">242 </span><span·class="nf">encode</span><span·class="p"·data-group-id="2899530722-53">(</span><span·class="p"·data-group-id="2899530722-54">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2899530722-54">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·d72e55a6abdb3fa14d86834438108fa60f37f017492850b743debeba626aeefb·...·]-55">]</span><span·class="p">.</span><span·class="w">
  
243 </span><span·class="nf">decode</span><span·class="p"·data-group-id="5627860149-56">(</span><span·class="p"·data-group-id="5627860149-57">[</span><span·class="n">Int</span><span·class="p"·data-group-id="5627860149-57">]</span><span·class="p"·data-group-id="5627860149-56">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><h2·id="c-driver"·class="section-heading">243 </span><span·class="nf">decode</span><span·class="p"·data-group-id="2899530722-56">(</span><span·class="p"·data-group-id="2899530722-57">[</span><span·class="n">Int</span><span·class="p"·data-group-id="2899530722-57">]</span><span·class="p"·data-group-id="2899530722-56">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><h2·id="c-driver"·class="section-heading">
244 ··<a·href="#c-driver"·class="hover-link">244 ··<a·href="#c-driver"·class="hover-link">
245 ····<i·class="ri-link-m"·aria-hidden="true"></i>245 ····<i·class="ri-link-m"·aria-hidden="true"></i>
246 ··</a>246 ··</a>
247 ··<span·class="text">C·Driver</span>247 ··<span·class="text">C·Driver</span>
248 </h2>248 </h2>
249 <p>The·C·driver·is·a·module·that·is·compiled·and·linked·into·a·shared·library.·It249 <p>The·C·driver·is·a·module·that·is·compiled·and·linked·into·a·shared·library.·It
250 uses·a·driver·structure·and·includes·the·header·file·<code·class="inline">erl_driver.h</code>.</p><p>The·driver·structure·is·filled·with·the·driver·name·and·function·pointers.·It·is250 uses·a·driver·structure·and·includes·the·header·file·<code·class="inline">erl_driver.h</code>.</p><p>The·driver·structure·is·filled·with·the·driver·name·and·function·pointers.·It·is
Offset 347, 25 lines modifiedOffset 347, 25 lines modified
347 ··<a·href="#running-the-example"·class="hover-link">347 ··<a·href="#running-the-example"·class="hover-link">
348 ····<i·class="ri-link-m"·aria-hidden="true"></i>348 ····<i·class="ri-link-m"·aria-hidden="true"></i>
349 ··</a>349 ··</a>
350 ··<span·class="text">Running·the·Example</span>350 ··<span·class="text">Running·the·Example</span>
351 </h2>351 </h2>
352 <p><em>Step·1.</em>·Compile·the·C·code:</p><pre><code·class="text">unix&gt;·gcc·-o·example_drv.so·-fpic·-shared·complex.c·port_driver.c352 <p><em>Step·1.</em>·Compile·the·C·code:</p><pre><code·class="text">unix&gt;·gcc·-o·example_drv.so·-fpic·-shared·complex.c·port_driver.c
353 windows&gt;·cl·-LD·-MD·-Fe·example_drv.dll·complex.c·port_driver.c</code></pre><p><em>Step·2.</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="ss">erl</span><span·class="w">353 windows&gt;·cl·-LD·-MD·-Fe·example_drv.dll·complex.c·port_driver.c</code></pre><p><em>Step·2.</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="ss">erl</span><span·class="w">
354 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="p"·data-group-id="9845832339-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="9845832339-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="9845832339-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·d1756dc9f53ccca52ba8b2ee1a1134a6be89aab03390cbd1194a43a7d559afb6·...·]-7">]</span><span·class="w">354 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="p"·data-group-id="4368129810-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="4368129810-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="4368129810-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·5aa82d1bd6f079866b0a223c669c2761cc7f0fe779083e1e26fa0cd1a7aa7476·...·]-7">]</span><span·class="w">
  
355 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V14</span><span·class="p">.</span><span·class="mi">2</span><span·class="w">·</span><span·class="p"·data-group-id="9845832339-8">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·7c63c0cc421ace89940d3df28b217516077ba65a9fe29acb41b90744df755a81·...·]-8">)</span><span·class="gp·unselectable">355 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V14</span><span·class="p">.</span><span·class="mi">2</span><span·class="w">·</span><span·class="p"·data-group-id="4368129810-8">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·adce1c040060c6f6e052d4d666e75f5becd7556a78e67444451df9e92c555bab·...·]-8">)</span><span·class="gp·unselectable">
356 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="9845832339-10">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="9845832339-10">)</span><span·class="p">.</span><span·class="w">356 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="4368129810-10">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="4368129810-10">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="p"·data-group-id="9845832339-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex5</span><span·class="p"·data-group-id="9845832339-11">}</span></code></pre><p><em>Step·3.</em>·Run·the·example:</p><pre><code·class="makeup·erlang"·translate="[·...·truncated·by·diffoscope;·len:·272,·SHA:·75260f182a69203630d57494e2868c2bc2557e68abad593669c8778fff173ed6·...·]-1">)</span><span·class="p">.</span><span·class="w">357 </span><span·class="p"·data-group-id="4368129810-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex5</span><span·class="p"·data-group-id="4368129810-11">}</span></code></pre><p><em>Step·3.</em>·Run·the·example:</p><pre><code·class="makeup·erlang"·translate="[·...·truncated·by·diffoscope;·len:·272,·SHA:·c6f6df3a15573227d455706920db7be829a90fccce4a29f1ba7636ccbcd1521f·...·]-1">)</span><span·class="p">.</span><span·class="w">
358 </span><span·class="o">&lt;</span><span·class="mf">0.34</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">358 </span><span·class="o">&lt;</span><span·class="mf">0.34</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
359 3&gt;·</span><span·class="nc">complex5</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="3156111747-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="3156111747-2">)</span><span·class="p">.</span><span·class="w">359 3&gt;·</span><span·class="nc">complex5</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="0396464486-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="0396464486-2">)</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 1320/65149 bytes (2.03%) of diff not shown.
13.9 KB
./usr/share/doc/erlang-doc/html/doc/system/code_loading.html
    
Offset 122, 16 lines modifiedOffset 122, 16 lines modified
122 ····<i·class="ri-link-m"·aria-hidden="true"></i>122 ····<i·class="ri-link-m"·aria-hidden="true"></i>
123 ··</a>123 ··</a>
124 ··<span·class="text">Compilation</span>124 ··<span·class="text">Compilation</span>
125 </h2>125 </h2>
126 <p>Erlang·programs·must·be·<em>compiled</em>·to·object·code.·The·compiler·can·generate·a126 <p>Erlang·programs·must·be·<em>compiled</em>·to·object·code.·The·compiler·can·generate·a
127 new·file·that·contains·the·object·code.·The·current·abstract·machine,·which·runs127 new·file·that·contains·the·object·code.·The·current·abstract·machine,·which·runs
128 the·object·code,·is·called·BEAM,·therefore·the·object·files·get·the·suffix128 the·object·code,·is·called·BEAM,·therefore·the·object·files·get·the·suffix
129 <code·class="inline">.beam</code>.·The·compiler·can·also·generate·a·binary·which·can·be·loaded·directly.</p><p>The·compiler·is·located·in·the·module·<a·href="../../lib/compiler-8.5.5/doc/html/compile.html"><code·class="inline">compile</code></a>·in·Compiler.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="6426682484-1">(</span><span·class="n">Module</span><span·class="p"·data-group-id="6426682484-1">)</span><span·class="w">129 <code·class="inline">.beam</code>.·The·compiler·can·also·generate·a·binary·which·can·be·loaded·directly.</p><p>The·compiler·is·located·in·the·module·<a·href="../../lib/compiler-8.5.5/doc/html/compile.html"><code·class="inline">compile</code></a>·in·Compiler.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="5536302558-1">(</span><span·class="n">Module</span><span·class="p"·data-group-id="5536302558-1">)</span><span·class="w">
130 </span><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="6426682484-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Options</span><span·class="p"·data-group-id="6426682484-2">)</span></code></pre><p>The·Erlang·shell·understands·the·command·<code·class="inline">c(Module)</code>,·which·both·compiles·and130 </span><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="5536302558-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Options</span><span·class="p"·data-group-id="5536302558-2">)</span></code></pre><p>The·Erlang·shell·understands·the·command·<code·class="inline">c(Module)</code>,·which·both·compiles·and
131 loads·<code·class="inline">Module</code>.</p><p>There·is·also·a·module·<code·class="inline">make</code>,·which·provides·a·set·of·functions·similar·to·the131 loads·<code·class="inline">Module</code>.</p><p>There·is·also·a·module·<code·class="inline">make</code>,·which·provides·a·set·of·functions·similar·to·the
132 UNIX·type·Make·functions,·see·module·<a·href="../../lib/tools-4.1.1/doc/html/make.html"><code·class="inline">make</code></a>·in·Tools.</p><p>The·compiler·can·also·be·accessed·from·the·OS·prompt·using·the132 UNIX·type·Make·functions,·see·module·<a·href="../../lib/tools-4.1.1/doc/html/make.html"><code·class="inline">make</code></a>·in·Tools.</p><p>The·compiler·can·also·be·accessed·from·the·OS·prompt·using·the
133 <a·href="../../erts-15.2.2/doc/html/erl_cmd.html">erl</a>·executable·in·ERTS.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-compile·Module1...ModuleN</span><span·class="w">133 <a·href="../../erts-15.2.2/doc/html/erl_cmd.html">erl</a>·executable·in·ERTS.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-compile·Module1...ModuleN</span><span·class="w">
134 </span><span·class="c1">%·erl·-make</span></code></pre><p>The·<code·class="inline">erlc</code>·program·provides·way·to·compile·modules·from·the·OS134 </span><span·class="c1">%·erl·-make</span></code></pre><p>The·<code·class="inline">erlc</code>·program·provides·way·to·compile·modules·from·the·OS
135 shell,·see·the·<a·href="../../erts-15.2.2/doc/html/erlc_cmd.html">erlc</a>·executable·in·ERTS.·It135 shell,·see·the·<a·href="../../erts-15.2.2/doc/html/erlc_cmd.html">erlc</a>·executable·in·ERTS.·It
136 understands·a·number·of·flags·that·can·be·used·to·define·macros,·add·search136 understands·a·number·of·flags·that·can·be·used·to·define·macros,·add·search
137 paths·for·include·files,·and·more.</p><pre><code·class="text">%·erlc·&lt;flags&gt;·File1.erl...FileN.erl</code></pre><p><a·href=""·id="loading"></a></p><h2·id="code-loading"·class="section-heading">137 paths·for·include·files,·and·more.</p><pre><code·class="text">%·erlc·&lt;flags&gt;·File1.erl...FileN.erl</code></pre><p><a·href=""·id="loading"></a></p><h2·id="code-loading"·class="section-heading">
Offset 156, 54 lines modifiedOffset 156, 54 lines modified
156 When·a·module·is·loaded·into·the·system·for·the·first·time,·the·code·becomes156 When·a·module·is·loaded·into·the·system·for·the·first·time,·the·code·becomes
157 'current'.·If·then·a·new·instance·of·the·module·is·loaded,·the·code·of·the157 'current'.·If·then·a·new·instance·of·the·module·is·loaded,·the·code·of·the
158 previous·instance·becomes·'old'·and·the·new·instance·becomes·'current'.</p><p>Both·old·and·current·code·is·valid,·and·can·be·evaluated·concurrently.·Fully158 previous·instance·becomes·'old'·and·the·new·instance·becomes·'current'.</p><p>Both·old·and·current·code·is·valid,·and·can·be·evaluated·concurrently.·Fully
159 qualified·function·calls·always·refer·to·current·code.·Old·code·can·still·be159 qualified·function·calls·always·refer·to·current·code.·Old·code·can·still·be
160 evaluated·because·of·processes·lingering·in·the·old·code.</p><p>If·a·third·instance·of·the·module·is·loaded,·the·code·server·removes·(purges)160 evaluated·because·of·processes·lingering·in·the·old·code.</p><p>If·a·third·instance·of·the·module·is·loaded,·the·code·server·removes·(purges)
161 the·old·code·and·any·processes·lingering·in·it·is·terminated.·Then·the·third161 the·old·code·and·any·processes·lingering·in·it·is·terminated.·Then·the·third
162 instance·becomes·'current'·and·the·previously·current·code·becomes·'old'.</p><p>To·change·from·old·code·to·current·code,·a·process·must·make·a·fully·qualified162 instance·becomes·'current'·and·the·previously·current·code·becomes·'old'.</p><p>To·change·from·old·code·to·current·code,·a·process·must·make·a·fully·qualified
163 function·call.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4823129329-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="4823129329-1">)</span><span·class="p">.</span><span·class="w"> 
164 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4823129329-2">(</span><span·class="p"·data-group-id="4823129329-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·84,·SHA:·85d48b84eb3b8f5635ec3bb56d3f10c6595b8c4eb174f6a429aae81daf38f46d·...·]">)</span><span·class="p">.</span><span·class="w">163 function·call.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1785433080-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="178[·...·truncated·by·diffoscope;·len:·9,·SHA:·0d6be5afa5e534de0ea8e6fc20a4792ee1e9fff166476cbc09ce6ca402394adf·...·]">)</span><span·class="p">.</span><span·class="w">
 164 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1785433080-2">(</span><span·class="p"·data-group-id="1785433080-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1785433080-3">]</span><span·class="p"·data-group-id="1785433080-2">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4823129329-4">(</span><span·class="p"·data-group-id="4823129329-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">165 </span><span·class="nf">loop</span><span·class="p"·data-group-id="1785433080-4">(</span><span·class="p"·data-group-id="1785433080-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</span><span·class="k">receive</span><span·class="w">166 ····</span><span·class="k">receive</span><span·class="w">
167 ········</span><span·class="ss">code_switch</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 ········</span><span·class="ss">code_switch</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ············</span><span·class="nc">m</span><span·class="p">:</span><span·class="nf">loop</span><span·class="p"·data-group-id="4823129329-5">(</span><span·class="p"·data-group-id="4823129329-5">)</span><span·class="p">;</span><span·class="w">168 ············</span><span·class="nc">m</span><span·class="p">:</span><span·class="nf">loop</span><span·class="p"·data-group-id="1785433080-5">(</span><span·class="p"·data-group-id="1785433080-5">)</span><span·class="p">;</span><span·class="w">
169 ········</span><span·class="n">Msg</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">169 ········</span><span·class="n">Msg</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">170 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
171 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="4823129329-6">(</span><span·class="p"·data-group-id="4823129329-6">)</span><span·class="w">171 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1785433080-6">(</span><span·class="p"·data-group-id="1785433080-6">)</span><span·class="w">
172 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>To·make·the·process·change·code,·send·the·message·<code·class="inline">code_switch</code>·to·it.·The172 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>To·make·the·process·change·code,·send·the·message·<code·class="inline">code_switch</code>·to·it.·The
173 process·then·makes·a·fully·qualified·call·to·<code·class="inline">m:loop()</code>·and·changes·to·current173 process·then·makes·a·fully·qualified·call·to·<code·class="inline">m:loop()</code>·and·changes·to·current
174 code.·Notice·that·<code·class="inline">m:loop/0</code>·must·be·exported.</p><p>For·code·replacement·of·funs·to·work,·use·the·syntax174 code.·Notice·that·<code·class="inline">m:loop/0</code>·must·be·exported.</p><p>For·code·replacement·of·funs·to·work,·use·the·syntax
175 <code·class="inline">fun·Module:FunctionName/Arity</code>.</p><p><a·href=""·id="on_load"></a></p><h2·id="running-a-function-when-a-module-is-loaded"·class="section-heading">175 <code·class="inline">fun·Module:FunctionName/Arity</code>.</p><p><a·href=""·id="on_load"></a></p><h2·id="running-a-function-when-a-module-is-loaded"·class="section-heading">
176 ··<a·href="#running-a-function-when-a-module-is-loaded"·class="hover-link">176 ··<a·href="#running-a-function-when-a-module-is-loaded"·class="hover-link">
177 ····<i·class="ri-link-m"·aria-hidden="true"></i>177 ····<i·class="ri-link-m"·aria-hidden="true"></i>
178 ··</a>178 ··</a>
179 ··<span·class="text">Running·a·Function·When·a·Module·is·Loaded</span>179 ··<span·class="text">Running·a·Function·When·a·Module·is·Loaded</span>
180 </h2>180 </h2>
181 <p>The·<code·class="inline">-on_load()</code>·directive·names·a·function·that·is·to·be·run·automatically·when181 <p>The·<code·class="inline">-on_load()</code>·directive·names·a·function·that·is·to·be·run·automatically·when
182 a·module·is·loaded.</p><p>Its·syntax·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="1340323057-1">(</span><span·class="n">Name</span><span·class="o">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1340323057-1">)</span><span·class="p">.</span></code></pre><p>It·is·not·necessary·to·export·the·function.·It·is·called·in·a·freshly·spawned182 a·module·is·loaded.</p><p>Its·syntax·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="8639661569-1">(</span><span·class="n">Name</span><span·class="o">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8639661569-1">)</span><span·class="p">.</span></code></pre><p>It·is·not·necessary·to·export·the·function.·It·is·called·in·a·freshly·spawned
183 process·(which·terminates·as·soon·as·the·function·returns).</p><p>The·function·must·return·<code·class="inline">ok</code>·if·the·module·is·to·become·the·new·current·code183 process·(which·terminates·as·soon·as·the·function·returns).</p><p>The·function·must·return·<code·class="inline">ok</code>·if·the·module·is·to·become·the·new·current·code
184 for·the·module·and·become·callable.</p><p>Returning·any·other·value·or·generating·an·exception·causes·the·new·code·to·be184 for·the·module·and·become·callable.</p><p>Returning·any·other·value·or·generating·an·exception·causes·the·new·code·to·be
185 unloaded.·If·the·return·value·is·not·an·atom,·a·warning·error·report·is·sent·to185 unloaded.·If·the·return·value·is·not·an·atom,·a·warning·error·report·is·sent·to
186 the·error·logger.</p><p>If·there·already·is·current·code·for·the·module,·that·code·will·remain·current186 the·error·logger.</p><p>If·there·already·is·current·code·for·the·module,·that·code·will·remain·current
187 and·can·be·called·until·the·<code·class="inline">on_load</code>·function·has·returned.·If·the·<code·class="inline">on_load</code>187 and·can·be·called·until·the·<code·class="inline">on_load</code>·function·has·returned.·If·the·<code·class="inline">on_load</code>
188 function·fails,·the·current·code·(if·any)·will·remain·current.·If·there·is·no188 function·fails,·the·current·code·(if·any)·will·remain·current.·If·there·is·no
189 current·code·for·a·module,·any·process·that·makes·an·external·call·to·the·module189 current·code·for·a·module,·any·process·that·makes·an·external·call·to·the·module
190 before·the·<code·class="inline">on_load</code>·function·has·finished·will·be·suspended·until·the·<code·class="inline">on_load</code>190 before·the·<code·class="inline">on_load</code>·function·has·finished·will·be·suspended·until·the·<code·class="inline">on_load</code>
191 function·have·finished.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·19,·if·the·<code·class="inline">on_load</code>·function·failed,·any·previously·current191 function·have·finished.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·19,·if·the·<code·class="inline">on_load</code>·function·failed,·any·previously·current
192 code·would·become·old,·essentially·leaving·the·system·without·any·working·and192 code·would·become·old,·essentially·leaving·the·system·without·any·working·and
193 reachable·instance·of·the·module.</p></section><p>In·embedded·mode,·first·all·modules·are·loaded.·Then·all·<code·class="inline">on_load</code>·functions·are193 reachable·instance·of·the·module.</p></section><p>In·embedded·mode,·first·all·modules·are·loaded.·Then·all·<code·class="inline">on_load</code>·functions·are
194 called.·The·system·is·terminated·unless·all·of·the·<code·class="inline">on_load</code>·functions·return194 called.·The·system·is·terminated·unless·all·of·the·<code·class="inline">on_load</code>·functions·return
195 <code·class="inline">ok</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3083842579-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="3083842579-1">)</span><span·class="p">.</span><span·class="w">195 <code·class="inline">ok</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9022653242-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9022653242-1">)</span><span·class="p">.</span><span·class="w">
196 </span><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="3083842579-2">(</span><span·class="ss">load_my_nifs</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3083842579-2">)</span><span·class="p">.</span><span·class="w">196 </span><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="9022653242-2">(</span><span·class="ss">load_my_nifs</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9022653242-2">)</span><span·class="p">.</span><span·class="w">
  
197 </span><span·class="nf">load_my_nifs</span><span·class="p"·data-group-id="3083842579-3">(</span><span·class="p"·data-group-id="3083842579-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">197 </span><span·class="nf">load_my_nifs</span><span·class="p"·data-group-id="9022653242-3">(</span><span·class="p"·data-group-id="9022653242-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
198 ····</span><span·class="n">NifPath</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%Set·up·the·path·to·the·NIF·library.</span><span·class="w">198 ····</span><span·class="n">NifPath</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%Set·up·the·path·to·the·NIF·library.</span><span·class="w">
199 ····</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%Initialize·the·Info·term</span><span·class="w">199 ····</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%Initialize·the·Info·term</span><span·class="w">
200 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="3083842579-4">(</span><span·class="n">NifPath</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="3083842579-4">)</span><span·class="p">.</span></code></pre><p>If·the·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#load_nif/2"><code·class="inline">erlang:load_nif/2</code></a>·fails,·the·module·is·unloaded·and·a·warning200 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="9022653242-4">(</span><span·class="n">NifPath</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="9022653242-4">)</span><span·class="p">.</span></code></pre><p>If·the·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#load_nif/2"><code·class="inline">erlang:load_nif/2</code></a>·fails,·the·module·is·unloaded·and·a·warning
201 report·is·sent·to·the·error·loader.</p>201 report·is·sent·to·the·error·loader.</p>
202 </div>202 </div>
  
203 <div·class="bottom-actions"·id="bottom-actions">203 <div·class="bottom-actions"·id="bottom-actions">
204 ··<div·class="bottom-actions-item">204 ··<div·class="bottom-actions-item">
  
205 ······<a·href="distributed.html"·class="bottom-actions-button"·rel="prev">205 ······<a·href="distributed.html"·class="bottom-actions-button"·rel="prev">
51.5 KB
./usr/share/doc/erlang-doc/html/doc/system/commoncaveats.html
    
Offset 118, 31 lines modifiedOffset 118, 31 lines modified
118 <p>This·section·lists·a·few·constructs·to·watch·out·for.</p><h2·id="operator"·class="section-heading">118 <p>This·section·lists·a·few·constructs·to·watch·out·for.</p><h2·id="operator"·class="section-heading">
119 ··<a·href="#operator"·class="hover-link">119 ··<a·href="#operator"·class="hover-link">
120 ····<i·class="ri-link-m"·aria-hidden="true"></i>120 ····<i·class="ri-link-m"·aria-hidden="true"></i>
121 ··</a>121 ··</a>
122 ··<span·class="text">Operator·<code·class="inline">++</code></span>122 ··<span·class="text">Operator·<code·class="inline">++</code></span>
123 </h2>123 </h2>
124 <p>The·<code·class="inline">++</code>·operator·copies·its·left-hand·side·operand.·That·is·clearly124 <p>The·<code·class="inline">++</code>·operator·copies·its·left-hand·side·operand.·That·is·clearly
125 seen·if·we·do·our·own·implementation·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="1007328480-1">(</span><span·class="p"·data-group-id="1007328480-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1007328480-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·a3338a28703ec06b542f4ebc96f0d600a24cdfa31ac452ce234db56ec8541d00·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">125 seen·if·we·do·our·own·implementation·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="8420780333-1">(</span><span·class="p"·data-group-id="8420780333-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8420780333-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·adb627f70a30ca96875aff9ffc35315c5e0e3fbc3890dbe52e2ce2df6bdbf7bd·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
126 ····</span><span·class="p"·data-group-id="1007328480-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="1007328480-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·e14a764590c375d11982555108189705346315a858b8a09e9a4b2a3eaad917f3·...·]-3">]</span><span·class="p">;</span><span·class="w">126 ····</span><span·class="p"·data-group-id="8420780333-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="8420780333-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·3eda506107d195e7d2be36fdf2aabffc797a39b8d1fdb8caaea84ed53c6ac53a·...·]-3">]</span><span·class="p">;</span><span·class="w">
127 </span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="1007328480-5">(</span><span·class="p"·data-group-id="1007328480-6">[</span><span·class="p"·data-group-id="1007328480-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="1007328480-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">127 </span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="8420780333-5">(</span><span·class="p"·data-group-id="8420780333-6">[</span><span·class="p"·data-group-id="8420780333-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="8420780333-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
128 ····</span><span·class="n">Tail</span><span·class="p">.</span></code></pre><p>We·must·be·careful·how·we·use·<code·class="inline">++</code>·in·a·loop.·First·is·how·not·to·use·it:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="5535333730-1">(</span><span·class="p"·data-group-id="5535333730-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5535333730-2">]</span><span·class="p"·data-group-id="5535333730-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">128 ····</span><span·class="n">Tail</span><span·class="p">.</span></code></pre><p>We·must·be·careful·how·we·use·<code·class="inline">++</code>·in·a·loop.·First·is·how·not·to·use·it:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="1054835266-1">(</span><span·class="p"·data-group-id="1054835266-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1054835266-2">]</span><span·class="p"·data-group-id="1054835266-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
129 ····</span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="5535333730-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="5535333730-3">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="5535333730-4">[</span><span·class="n">H</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·e7ac7200ffe6941e3c057d37110926f6901d749ce9fcc5d682fc334d55a6b0c0·...·]-4">]</span><span·class="p">;</span><span·class="w">129 ····</span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="1054835266-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="1054835266-3">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="1054835266-4">[</span><span·class="n">H</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·64836ab0bbf5362862aa43fd660a7d35259cbdb7af38d6d17baa8d55cd4a2336·...·]-4">]</span><span·class="p">;</span><span·class="w">
130 </span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="5535333730-5">(</span><span·class="p"·data-group-id="5535333730-6">[</span><span·class="p"·data-group-id="5535333730-6">]</span><span·class="p"·data-group-id="5535333730-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">130 </span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="1054835266-5">(</span><span·class="p"·data-group-id="1054835266-6">[</span><span·class="p"·data-group-id="1054835266-6">]</span><span·class="p"·data-group-id="1054835266-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
131 ····</span><span·class="p"·data-group-id="5535333730-7">[</span><span·class="p"·data-group-id="5535333730-7">]</span><span·class="p">.</span></code></pre><p>As·the·<code·class="inline">++</code>·operator·copies·its·left-hand·side·operand,·the·growing131 ····</span><span·class="p"·data-group-id="1054835266-7">[</span><span·class="p"·data-group-id="1054835266-7">]</span><span·class="p">.</span></code></pre><p>As·the·<code·class="inline">++</code>·operator·copies·its·left-hand·side·operand,·the·growing
132 result·is·copied·repeatedly,·leading·to·quadratic·complexity.</p><p>On·the·other·hand,·using·<code·class="inline">++</code>·in·loop·like·this·is·perfectly·fine:</p><p><strong>OK</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="7141526309-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="7141526309-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">132 result·is·copied·repeatedly,·leading·to·quadratic·complexity.</p><p>On·the·other·hand,·using·<code·class="inline">++</code>·in·loop·like·this·is·perfectly·fine:</p><p><strong>OK</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="4665199870-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="4665199870-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
133 ····</span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="7141526309-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7141526309-3">[</span><span·class="p"·data-group-id="7141526309-3">]</span><span·class="p"·data-group-id="7141526309-2">)</span><span·class="p">.</span><span·class="w">133 ····</span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="4665199870-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4665199870-3">[</span><span·class="p"·data-group-id="4665199870-3">]</span><span·class="p"·data-group-id="4665199870-2">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="7141526309-4">(</span><span·class="p"·data-group-id="7141526309-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="7141526309-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·7ea983454559d6cdf839919844697fe41d3398730d2f509a7d16caa229f8d8ee·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">134 </span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="4665199870-4">(</span><span·class="p"·data-group-id="4665199870-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4665199870-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·549a6a21286c60fd505420877b3c05d8659503f11e6798c23ed88960cef6885e·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
135 ····</span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="7141526309-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7141526309-7">[</span><span·class="n">H</span><span·class="p"·data-group-id="7141526309-7">]</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·81c14145add4f8d98cb8413568e0a67df3fc4caecd2e76e915863e13a5a64b47·...·]-6">)</span><span·class="p">;</span><span·class="w">135 ····</span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="4665199870-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4665199870-7">[</span><span·class="n">H</span><span·class="p"·data-group-id="4665199870-7">]</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·60ec4aafae57fbf492e61640f5f0ee4bb5829ab3f65f79d8fc198b4ee50e8b58·...·]-6">)</span><span·class="p">;</span><span·class="w">
136 </span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="7141526309-8">(</span><span·class="p"·data-group-id="7141526309-9">[</span><span·class="p"·data-group-id="7141526309-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="7141526309-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">136 </span><span·class="nf">naive_but_ok_reverse</span><span·class="p"·data-group-id="4665199870-8">(</span><span·class="p"·data-group-id="4665199870-9">[</span><span·class="p"·data-group-id="4665199870-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="4665199870-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>Each·list·element·is·copied·only·once.·The·growing·result·<code·class="inline">Acc</code>·is·the·right-hand137 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>Each·list·element·is·copied·only·once.·The·growing·result·<code·class="inline">Acc</code>·is·the·right-hand
138 side·operand,·which·it·is·<em>not</em>·copied.</p><p>Experienced·Erlang·programmers·would·probably·write·as·follows:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="3455071264-1">(</span><span·class="p"·data-group-id="3455071264-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3455071264-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·c819e81cfc813fd223556b8402ae77fcde15fe8e412e97f444e44852844abe5b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 side·operand,·which·it·is·<em>not</em>·copied.</p><p>Experienced·Erlang·programmers·would·probably·write·as·follows:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="0745050205-1">(</span><span·class="p"·data-group-id="0745050205-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0745050205-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·fc6b3687c84856be3412f957503a15c0d1de14db8a3093091c8dbef420ff6236·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="3455071264-3">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3455071264-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="3455[·...·truncated·by·diffoscope;·len:·59,·SHA:·8f1f767d4bbf43f2cf2bc89bd8c04259a9cac3633102e0c55638901e8b14afd3·...·]-3">)</span><span·class="p">;</span><span·class="w">139 ····</span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="0745050205-3">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0745050205-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="0745[·...·truncated·by·diffoscope;·len:·59,·SHA:·abaf513ba356be4bf96c6a17caf2b580658d22d584b0d8a236ab07dda20ff87e·...·]-3">)</span><span·class="p">;</span><span·class="w">
140 </span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="3455071264-5">(</span><span·class="p"·data-group-id="3455071264-6">[</span><span·class="p"·data-group-id="3455071264-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="3455071264-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 </span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="0745050205-5">(</span><span·class="p"·data-group-id="0745050205-6">[</span><span·class="p"·data-group-id="0745050205-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0745050205-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>In·principle,·this·is·slightly·more·efficient·because·the·list·element·<code·class="inline">[H]</code>141 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre><p>In·principle,·this·is·slightly·more·efficient·because·the·list·element·<code·class="inline">[H]</code>
142 is·not·built·before·being·copied·and·discarded.·In·practice,·the·compiler142 is·not·built·before·being·copied·and·discarded.·In·practice,·the·compiler
143 rewrites·<code·class="inline">[H]·++·Acc</code>·to·<code·class="inline">[H|Acc]</code>.</p><h2·id="timer-module"·class="section-heading">143 rewrites·<code·class="inline">[H]·++·Acc</code>·to·<code·class="inline">[H|Acc]</code>.</p><h2·id="timer-module"·class="section-heading">
144 ··<a·href="#timer-module"·class="hover-link">144 ··<a·href="#timer-module"·class="hover-link">
145 ····<i·class="ri-link-m"·aria-hidden="true"></i>145 ····<i·class="ri-link-m"·aria-hidden="true"></i>
146 ··</a>146 ··</a>
147 ··<span·class="text">Timer·Module</span>147 ··<span·class="text">Timer·Module</span>
Offset 160, 77 lines modifiedOffset 160, 77 lines modified
160 therefore·harmless.</p><h2·id="accidental-copying-and-loss-of-sharing"·class="section-heading">160 therefore·harmless.</p><h2·id="accidental-copying-and-loss-of-sharing"·class="section-heading">
161 ··<a·href="#accidental-copying-and-loss-of-sharing"·class="hover-link">161 ··<a·href="#accidental-copying-and-loss-of-sharing"·class="hover-link">
162 ····<i·class="ri-link-m"·aria-hidden="true"></i>162 ····<i·class="ri-link-m"·aria-hidden="true"></i>
163 ··</a>163 ··</a>
164 ··<span·class="text">Accidental·Copying·and·Loss·of·Sharing</span>164 ··<span·class="text">Accidental·Copying·and·Loss·of·Sharing</span>
165 </h2>165 </h2>
166 <p>When·spawning·a·new·process·using·a·fun,·one·can·accidentally·copy·more·data·to166 <p>When·spawning·a·new·process·using·a·fun,·one·can·accidentally·copy·more·data·to
167 the·process·than·intended.·For·example:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">accidental1</span><span·class="p"·data-group-id="5637883063-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="5637883063-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 the·process·than·intended.·For·example:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">accidental1</span><span·class="p"·data-group-id="6152639340-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="6152639340-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5637883063-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5637883063-3">(</span><span·class="p"·data-group-id="5637883063-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6152639340-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6152639340-3">(</span><span·class="p"·data-group-id="6152639340-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
169 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5637883063-4">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5637883063-5">[</span><span·class="n">State</span><span·class="o">#</[·...·truncated·by·diffoscope;·len:·180,·SHA:·741e7a3a5f0d3522832d9948a4531cbdf84c96909804d400338a1de0a8a44007·...·]-4">)</span><span·class="w">169 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6152639340-4">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6152639340-5">[</span><span·class="n">State</span><span·class="o">#</[·...·truncated·by·diffoscope;·len:·180,·SHA:·daff2ca1acb46a8f844ad03c76a1eae9514327755141c23fa2f99d21ba66889d·...·]-4">)</span><span·class="w">
170 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="5637883063-2">)</span><span·class="p">.</span></code></pre><p>The·code·in·the·fun·will·extract·one·element·from·the·record·and·print·it.·The170 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="6152639340-2">)</span><span·class="p">.</span></code></pre><p>The·code·in·the·fun·will·extract·one·element·from·the·record·and·print·it.·The
171 rest·of·the·<code·class="inline">state</code>·record·is·not·used.·However,·when·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/1"><code·class="inline">spawn/1</code></a>171 rest·of·the·<code·class="inline">state</code>·record·is·not·used.·However,·when·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/1"><code·class="inline">spawn/1</code></a>
172 function·is·executed,·the·entire·record·is·copied·to·the·newly·created·process.</p><p>The·same·kind·of·problem·can·happen·with·a·map:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">accidental2</span><span·class="p"·data-group-id="2583411178-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="2583411178-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 function·is·executed,·the·entire·record·is·copied·to·the·newly·created·process.</p><p>The·same·kind·of·problem·can·happen·with·a·map:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">accidental2</span><span·class="p"·data-group-id="0095134426-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="0095134426-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
173 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2583411178-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2583411178-3">(</span><span·class="p"·data-group-id="2583411178-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0095134426-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0095134426-3">(</span><span·class="p"·data-group-id="0095134426-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2583411178-4">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2583411178-5">[</span><span·class="nf">map_get</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·288,·SHA:·ce6943828cc1a1a63a50c82ea40030db4b811c94eb9146fc470aedab32934823·...·]-4">)</span><span·class="w">174 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0095134426-4">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0095134426-5">[</span><span·class="nf">map_get</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·288,·SHA:·437a17b264aa1c2133c609e7b9b23fa28c44663efc39768e5d231f505abbf29f·...·]-4">)</span><span·class="w">
175 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="2583411178-2">)</span><span·class="p">.</span></code></pre><p>In·the·following·example·(part·of·a·module·implementing·the·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>175 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="0095134426-2">)</span><span·class="p">.</span></code></pre><p>In·the·following·example·(part·of·a·module·implementing·the·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>
176 behavior)·the·created·fun·is·sent·to·another·process:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_call</span><span·class="p"·data-group-id="4464872785-1">(</span><span·class="ss">give_me_a_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·ab125e01fd0fd205c6738c8dca503079ed79ccd6c854a993ea2b79ee15712b4f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 behavior)·the·created·fun·is·sent·to·another·process:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_call</span><span·class="p"·data-group-id="8461913283-1">(</span><span·class="ss">give_me_a_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·3923cbb4226f834e6352c5a6088b1c524c4799d0148baf6528e0dfbf1d7bc5fa·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4464872785-2">(</span><span·class="p"·data-group-id="4464872785-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="nb">size</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">177 ····</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="8461913283-2">(</span><span·class="p"·data-group-id="8461913283-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="nb">size</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
178 ····</span><span·class="p"·data-group-id="4464872785-3">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="4464872785-3">}</span><span·class="p">.</span></code></pre><p>How·bad·that·unnecessary·copy·is·depends·on·the·contents·of·the·record·or·the178 ····</span><span·class="p"·data-group-id="8461913283-3">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="8461913283-3">}</span><span·class="p">.</span></code></pre><p>How·bad·that·unnecessary·copy·is·depends·on·the·contents·of·the·record·or·the
179 map.</p><p>For·example,·if·the·<code·class="inline">state</code>·record·is·initialized·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init1</span><span·class="p"·data-group-id="3959691488-1">(</span><span·class="p"·data-group-id="3959691488-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 map.</p><p>For·example,·if·the·<code·class="inline">state</code>·record·is·initialized·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init1</span><span·class="p"·data-group-id="1549999200-1">(</span><span·class="p"·data-group-id="1549999200-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="3959691488-2">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="3959691488-3">(</span><span·class="mi">1</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·526bd462f0cbf71062e4cad4ca41919b76f9ec7fa837cecc3791eb7e1780495b·...·]-2">}</span><span·class="p">.</span></code></pre><p>a·list·with·10000·elements·(or·about·20000·heap·words)·will·be·copied·to·the180 ····</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="1549999200-2">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="1549999200-3">(</span><span·class="mi">1</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·e235d54a84d98409333de3d2d8a3e70b14bba832050fbc9d3307272d34874be3·...·]-2">}</span><span·class="p">.</span></code></pre><p>a·list·with·10000·elements·(or·about·20000·heap·words)·will·be·copied·to·the
181 newly·created·process.</p><p>An·unnecessary·copy·of·10000·element·list·can·be·bad·enough,·but·it·can·get·even181 newly·created·process.</p><p>An·unnecessary·copy·of·10000·element·list·can·be·bad·enough,·but·it·can·get·even
182 worse·if·the·<code·class="inline">state</code>·record·contains·<em>shared·subterms</em>.·Here·is·a·simple·example182 worse·if·the·<code·class="inline">state</code>·record·contains·<em>shared·subterms</em>.·Here·is·a·simple·example
183 of·a·term·with·a·shared·subterm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4155497171-1">{</span><span·class="n">SubTerm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SubTerm</span><span·class="p"·data-group-id="4155497171-1">}</span></code></pre><p>When·a·term·is·copied·to·another·process,·sharing·of·subterms·will·be·lost·and183 of·a·term·with·a·shared·subterm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1495808693-1">{</span><span·class="n">SubTerm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SubTerm</span><span·class="p"·data-group-id="1495808693-1">}</span></code></pre><p>When·a·term·is·copied·to·another·process,·sharing·of·subterms·will·be·lost·and
184 the·copied·term·can·be·many·times·larger·than·the·original·term.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init2</span><span·class="p"·data-group-id="8917089998-1">(</span><span·class="p"·data-group-id="8917089998-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 the·copied·term·can·be·many·times·larger·than·the·original·term.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init2</span><span·class="p"·data-group-id="5189105466-1">(</span><span·class="p"·data-group-id="5189105466-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="n">SharedSubTerms</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="8917089998-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8917089998-3">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="8917089998-3">)</span><span[·...·truncated·by·diffoscope;·len:·852,·SHA:·1605e19a71324a4dd2f98f0bf3bf0810797231eec2638b756a112dec86bb6e8e·...·]-2">)</span><span·class="p">,</span><span·class="w">185 ····</span><span·class="n">SharedSubTerms</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="5189105466-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5189105466-3">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="5189105466-3">)</span><span[·...·truncated·by·diffoscope;·len:·852,·SHA:·f7da33f4aa77b7a1be9d72b48db3a60b3729c87066e8f0a6289a834cd46b7c81·...·]-2">)</span><span·class="p">,</span><span·class="w">
186 ····</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="8917089998-7">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="n">Shared</span><span·class="p"·data-group-id="8917089998-7">}</span><span·class="p">.</span></code></pre><p>In·the·process·that·calls·<code·class="inline">init2/0</code>,·the·size·of·the·<code·class="inline">data</code>·field·in·the·<code·class="inline">state</code>186 ····</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="5189105466-7">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="n">Shared</span><span·class="p"·data-group-id="5189105466-7">}</span><span·class="p">.</span></code></pre><p>In·the·process·that·calls·<code·class="inline">init2/0</code>,·the·size·of·the·<code·class="inline">data</code>·field·in·the·<code·class="inline">state</code>
187 record·will·be·32·heap·words.·When·the·record·is·copied·to·the·newly·created187 record·will·be·32·heap·words.·When·the·record·is·copied·to·the·newly·created
188 process,·sharing·will·be·lost·and·the·size·of·the·copied·<code·class="inline">data</code>·field·will·be188 process,·sharing·will·be·lost·and·the·size·of·the·copied·<code·class="inline">data</code>·field·will·be
189 131070·heap·words.·More·details·about189 131070·heap·words.·More·details·about
190 <a·href="eff_guide_processes.html#loss-of-sharing">loss·off·sharing</a>·are·found·in·a·later190 <a·href="eff_guide_processes.html#loss-of-sharing">loss·off·sharing</a>·are·found·in·a·later
191 section.</p><p>To·avoid·the·problem,·outside·of·the·fun·extract·only·the·fields·of·the·record191 section.</p><p>To·avoid·the·problem,·outside·of·the·fun·extract·only·the·fields·of·the·record
192 that·are·actually·used:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fixed_accidental1</span><span·class="p"·data-group-id="7112092556-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="7112092556-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 that·are·actually·used:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fixed_accidental1</span><span·class="p"·data-group-id="9349947627-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="9349947627-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">
194 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7112092556-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7112092556-3">(</span><span·class="p"·data-group-id="7112092556-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9349947627-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9349947627-3">(</span><span·class="p"·data-group-id="9349947627-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7112092556-4">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7112092556-5">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·2dda2c887a894538e4e8962c38318a6193a364875e22da068110a15bd8ccb86b·...·]-4">)</span><span·class="w">195 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9349947627-4">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9349947627-5">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·d8a87c4c3463af4515fba9b41a7cee8dbdb2b4c8dbf9a9678d930b91ccf743ec·...·]-4">)</span><span·class="w">
196 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="7112092556-2">)</span><span·class="p">.</span></code></pre><p>Similarly,·outside·of·the·fun·extract·only·the·map·elements·that·are·actually196 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="9349947627-2">)</span><span·class="p">.</span></code></pre><p>Similarly,·outside·of·the·fun·extract·only·the·map·elements·that·are·actually
197 used:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fixed_accidental2</span><span·class="p"·data-group-id="5617423495-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="5617423495-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">197 used:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fixed_accidental2</span><span·class="p"·data-group-id="0845640263-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="0845640263-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
198 ····</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">map_get</span><span·class="p"·data-group-id="5617423495-2">(</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="5617423495-2">)</span><span·class="p">,</span><span·class="w">198 ····</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">map_get</span><span·class="p"·data-group-id="0845640263-2">(</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="0845640263-2">)</span><span·class="p">,</span><span·class="w">
199 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5617423495-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5617423495-4">(</span><span·class="p"·data-group-id="5617423495-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">199 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0845640263-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0845640263-4">(</span><span·class="p"·data-group-id="0845640263-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
200 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5617423495-5">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5617423495-6">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·9fc694d28abbceec8c94df9c152f9f2788462cab8300c9e6974a6fd8c7997235·...·]-5">)</span><span·class="w">200 ··················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0845640263-5">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0845640263-6">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·c2da802137bc64a1cf453a483211689ca87a373894ef9cf27cc7c91cccbac67e·...·]-5">)</span><span·class="w">
201 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="5617423495-3">)</span><span·class="p">.</span></code></pre><h2·id="list_to_atom-1"·class="section-heading">201 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="0845640263-3">)</span><span·class="p">.</span></code></pre><h2·id="list_to_atom-1"·class="section-heading">
202 ··<a·href="#list_to_atom-1"·class="hover-link">202 ··<a·href="#list_to_atom-1"·class="hover-link">
203 ····<i·class="ri-link-m"·aria-hidden="true"></i>203 ····<i·class="ri-link-m"·aria-hidden="true"></i>
204 ··</a>204 ··</a>
205 ··<span·class="text">list_to_atom/1</span>205 ··<span·class="text">list_to_atom/1</span>
206 </h2>206 </h2>
207 <p>Atoms·are·not·garbage-collected.·Once·an·atom·is·created,·it·is·never·removed.207 <p>Atoms·are·not·garbage-collected.·Once·an·atom·is·created,·it·is·never·removed.
208 The·emulator·terminates·if·the·limit·for·the·number·of·atoms·(1,048,576·by208 The·emulator·terminates·if·the·limit·for·the·number·of·atoms·(1,048,576·by
209 default)·is·reached.</p><p>Therefore,·converting·arbitrary·input·strings·to·atoms·can·be·dangerous·in·a209 default)·is·reached.</p><p>Therefore,·converting·arbitrary·input·strings·to·atoms·can·be·dangerous·in·a
210 system·that·runs·continuously.·If·only·certain·well-defined·atoms·are·allowed·as210 system·that·runs·continuously.·If·only·certain·well-defined·atoms·are·allowed·as
211 input,·<a·href="../../erts-15.2.2/doc/html/erlang.html#list_to_existing_atom/1"><code·class="inline">list_to_existing_atom/1</code></a>·or211 input,·<a·href="../../erts-15.2.2/doc/html/erlang.html#list_to_existing_atom/1"><code·class="inline">list_to_existing_atom/1</code></a>·or
212 <a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_existing_atom/1"><code·class="inline">binary_to_existing_atom/1</code></a>·can·be·used212 <a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_existing_atom/1"><code·class="inline">binary_to_existing_atom/1</code></a>·can·be·used
213 to·guard·against·a·denial-of-service·attack.·(All·atoms·that·are·allowed·must213 to·guard·against·a·denial-of-service·attack.·(All·atoms·that·are·allowed·must
214 have·been·created·earlier,·for·example,·by·using·all·of·them·in·a·module214 have·been·created·earlier,·for·example,·by·using·all·of·them·in·a·module
215 and·loading·that·module.)</p><p>Using·<a·href="../../erts-15.2.2/doc/html/erlang.html#list_to_atom/1"><code·class="inline">list_to_atom/1</code></a>·to·construct·an·atom·that215 and·loading·that·module.)</p><p>Using·<a·href="../../erts-15.2.2/doc/html/erlang.html#list_to_atom/1"><code·class="inline">list_to_atom/1</code></a>·to·construct·an·atom·that
216 is·passed·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply/3</code></a>·is·quite·expensive.</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">apply</span><span·class="p"·data-group-id="4263876187-1">(</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="4263876187-2">(</span><span·class="s">&quot;some_prefix&quot;</span><span·class="o">++</span><span·class="n">Var</span><span·class="p"·data-group-id="4263876187-2">)</[·...·truncated·by·diffoscope;·len:·196,·SHA:·c000b6348da84d1289c7b2bcf821a439d50b05537a6e6b58ae848620c6622a6c·...·]-1">)</span></code></pre><h2·id="length-1"·class="section-heading">216 is·passed·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply/3</code></a>·is·quite·expensive.</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">apply</span><span·class="p"·data-group-id="9150273179-1">(</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="9150273179-2">(</span><span·class="s">&quot;some_prefix&quot;</span><span·class="o">++</span><span·class="n">Var</span><span·class="p"·data-group-id="9150273179-2">)</[·...·truncated·by·diffoscope;·len:·196,·SHA:·91d3f2f5b606e2887127b61372e66abf25c15f6841223625532a99708ff1cc54·...·]-1">)</span></code></pre><h2·id="length-1"·class="section-heading">
217 ··<a·href="#length-1"·class="hover-link">217 ··<a·href="#length-1"·class="hover-link">
218 ····<i·class="ri-link-m"·aria-hidden="true"></i>218 ····<i·class="ri-link-m"·aria-hidden="true"></i>
219 ··</a>219 ··</a>
220 ··<span·class="text">length/1</span>220 ··<span·class="text">length/1</span>
221 </h2>221 </h2>
222 <p>The·time·for·calculating·the·length·of·a·list·is·proportional·to·the·length·of222 <p>The·time·for·calculating·the·length·of·a·list·is·proportional·to·the·length·of
223 the·list,·as·opposed·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#tuple_size/1"><code·class="inline">tuple_size/1</code></a>,223 the·list,·as·opposed·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#tuple_size/1"><code·class="inline">tuple_size/1</code></a>,
224 <a·href="../../erts-15.2.2/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>,·and·<a·href="../../erts-15.2.2/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>,·which·all224 <a·href="../../erts-15.2.2/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>,·and·<a·href="../../erts-15.2.2/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>,·which·all
225 execute·in·constant·time.</p><p>Normally,·there·is·no·need·to·worry·about·the·speed·of·<a·href="../../erts-15.2.2/doc/html/erlang.html#length/1"><code·class="inline">length/1</code></a>,225 execute·in·constant·time.</p><p>Normally,·there·is·no·need·to·worry·about·the·speed·of·<a·href="../../erts-15.2.2/doc/html/erlang.html#length/1"><code·class="inline">length/1</code></a>,
226 because·it·is·efficiently·implemented·in·C.·In·time-critical·code,·you·might226 because·it·is·efficiently·implemented·in·C.·In·time-critical·code,·you·might
227 want·to·avoid·it·if·the·input·list·could·potentially·be·very·long.</p><p>Some·uses·of·<a·href="../../erts-15.2.2/doc/html/erlang.html#length/1"><code·class="inline">length/1</code></a>·can·be·replaced·by·matching.·For·example,227 want·to·avoid·it·if·the·input·list·could·potentially·be·very·long.</p><p>Some·uses·of·<a·href="../../erts-15.2.2/doc/html/erlang.html#length/1"><code·class="inline">length/1</code></a>·can·be·replaced·by·matching.·For·example,
228 the·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="5635945659-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="5635945659-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">length</span><span·class="p"·data-group-id="5635945659-2">(</span[·...·truncated·by·diffoscope;·len:·66,·SHA:·ea58acab328219572d3eb0236f231b0de21a150ceb07aefa9b69cb05d70c8513·...·]-2">)</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">228 the·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="8458637575-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="8458637575-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">length</span><span·class="p"·data-group-id="8458637575-2">(</span[·...·truncated·by·diffoscope;·len:·66,·SHA:·60668344c715a56fab2d48499f5f2ef332b609dd9ba2c91aa9131ef85c08e06e·...·]-2">)</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>can·be·rewritten·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="2500032283-1">(</span><span·class="p"·data-group-id="2500032283-2">[</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p[·...·truncated·by·diffoscope;·len:·128,·SHA:·6c04af68e08d86543ac970fdab1b3137501fcf41c32a1ee57db729ef19ca0e16·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>can·be·rewritten·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="2116926557-1">(</span><span·class="p"·data-group-id="2116926557-2">[</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p[·...·truncated·by·diffoscope;·len:·128,·SHA:·c0391bea615603ac3119427a92772f544e34ef7c23df918378b96f62222be720·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ···</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>One·slight·difference·is·that·<a·href="../../erts-15.2.2/doc/html/erlang.html#length/1"><code·class="inline">length(L)</code></a>·fails·if·<code·class="inline">L</code>·is·an230 ···</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>One·slight·difference·is·that·<a·href="../../erts-15.2.2/doc/html/erlang.html#length/1"><code·class="inline">length(L)</code></a>·fails·if·<code·class="inline">L</code>·is·an
231 improper·list,·while·the·pattern·in·the·second·code·fragment·accepts·an·improper231 improper·list,·while·the·pattern·in·the·second·code·fragment·accepts·an·improper
232 list.</p><h2·id="setelement-3"·class="section-heading">232 list.</p><h2·id="setelement-3"·class="section-heading">
233 ··<a·href="#setelement-3"·class="hover-link">233 ··<a·href="#setelement-3"·class="hover-link">
234 ····<i·class="ri-link-m"·aria-hidden="true"></i>234 ····<i·class="ri-link-m"·aria-hidden="true"></i>
235 ··</a>235 ··</a>
236 ··<span·class="text">setelement/3</span>236 ··<span·class="text">setelement/3</span>
Offset 238, 18 lines modifiedOffset 238, 18 lines modified
238 <p><a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·copies·the·tuple·it·modifies.·Therefore,238 <p><a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·copies·the·tuple·it·modifies.·Therefore,
239 updating·a·tuple·in·a·loop·using·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·creates·a·new239 updating·a·tuple·in·a·loop·using·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·creates·a·new
240 copy·of·the·tuple·every·time.</p><p>There·is·one·exception·to·the·rule·that·the·tuple·is·copied.·If·the·compiler240 copy·of·the·tuple·every·time.</p><p>There·is·one·exception·to·the·rule·that·the·tuple·is·copied.·If·the·compiler
241 clearly·can·see·that·destructively·updating·the·tuple·would·give·the·same·result241 clearly·can·see·that·destructively·updating·the·tuple·would·give·the·same·result
242 as·if·the·tuple·was·copied,·the·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·is242 as·if·the·tuple·was·copied,·the·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·is
243 replaced·with·a·special·destructive·<code·class="inline">setelement</code>·instruction.·In·the·following243 replaced·with·a·special·destructive·<code·class="inline">setelement</code>·instruction.·In·the·following
244 code·sequence,·the·first·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·call·copies·the·tuple244 code·sequence,·the·first·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·call·copies·the·tuple
245 and·modifies·the·ninth·element:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">multiple_setelement</span><span·class="p"·data-group-id="4882569370-1">(</span><span·class="n">T0</span><span·class="p"·data-group-id="4882569370-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="4882569370-2">(<[·...·truncated·by·diffoscope;·len:·72,·SHA:·d83b5a0a09786aa75c2f229ffec5d23395a21a60c0509dbab06a81f5cea7861f·...·]-2">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">9</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">245 and·modifies·the·ninth·element:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">multiple_setelement</span><span·class="p"·data-group-id="3630377026-1">(</span><span·class="n">T0</span><span·class="p"·data-group-id="3630377026-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="3630377026-2">(<[·...·truncated·by·diffoscope;·len:·72,·SHA:·3e335a8339be0083e5be57e11a752b21d1e0529185af63afd6ff6ce03b30ef2a·...·]-2">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">9</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
246 ····</span><span·class="n">T1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">setelement</span><span·class="p"·data-group-id="4882569370-3">(</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p"·data-group-id="4882569370-3">)</span><span·class="p">,</span><span·class="w">246 ····</span><span·class="n">T1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">setelement</span><span·class="p"·data-group-id="3630377026-3">(</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p"·data-group-id="3630377026-3">)</span><span·class="p">,</span><span·class="w">
247 ····</span><span·class="n">T2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">setelement</span><span·class="p"·data-group-id="4882569370-4">(</span><span·class="mi">7</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foobar</span><span·class="p"·data-group-id="4882569370-4">)</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="n">T2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">setelement</span><span·class="p"·data-group-id="3630377026-4">(</span><span·class="mi">7</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foobar</span><span·class="p"·data-group-id="3630377026-4">)</span><span·class="p">,</span><span·class="w">
248 ····</span><span·class="nf">setelement</span><span·class="p"·data-group-id="4882569370-5">(</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new_value</span><span·class="p"·data-group-id="4882569370-5">)</span><span·class="p">.</span></code></pre><p>The·two·following·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·calls·modify·the·tuple·in248 ····</span><span·class="nf">setelement</span><span·class="p"·data-group-id="3630377026-5">(</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new_value</span><span·class="p"·data-group-id="3630377026-5">)</span><span·class="p">.</span></code></pre><p>The·two·following·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·calls·modify·the·tuple·in
249 place.</p><p>For·the·optimization·to·be·applied,·<em>all</em>·the·following·conditions·must·be·true:</p><ul><li>The·tuple·argument·must·be·known·to·be·a·tuple·of·a·known·size.</li><li>The·indices·must·be·integer·literals,·not·variables·or·expressions.</li><li>The·indices·must·be·given·in·descending·order.</li><li>There·must·be·no·calls·to·another·function·in·between·the·calls·to249 place.</p><p>For·the·optimization·to·be·applied,·<em>all</em>·the·following·conditions·must·be·true:</p><ul><li>The·tuple·argument·must·be·known·to·be·a·tuple·of·a·known·size.</li><li>The·indices·must·be·integer·literals,·not·variables·or·expressions.</li><li>The·indices·must·be·given·in·descending·order.</li><li>There·must·be·no·calls·to·another·function·in·between·the·calls·to
250 <a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>.</li><li>The·tuple·returned·from·one·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·call·must·only·be250 <a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>.</li><li>The·tuple·returned·from·one·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·call·must·only·be
251 used·in·the·subsequent·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>.</li></ul><p>If·the·code·cannot·be·structured·as·in·the·<code·class="inline">multiple_setelement/1</code>·example,·the251 used·in·the·subsequent·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>.</li></ul><p>If·the·code·cannot·be·structured·as·in·the·<code·class="inline">multiple_setelement/1</code>·example,·the
252 best·way·to·modify·multiple·elements·in·a·large·tuple·is·to·convert·the·tuple·to252 best·way·to·modify·multiple·elements·in·a·large·tuple·is·to·convert·the·tuple·to
253 a·list,·modify·the·list,·and·convert·it·back·to·a·tuple.</p><h2·id="size-1"·class="section-heading">253 a·list,·modify·the·list,·and·convert·it·back·to·a·tuple.</p><h2·id="size-1"·class="section-heading">
254 ··<a·href="#size-1"·class="hover-link">254 ··<a·href="#size-1"·class="hover-link">
Max diff block lines reached; 0/52578 bytes (0.00%) of diff not shown.
208 KB
./usr/share/doc/erlang-doc/html/doc/system/conc_prog.html
    
Offset 132, 107 lines modifiedOffset 132, 107 lines modified
132 threads·of·execution·in·an·Erlang·program·and·to·allow·these·threads·to132 threads·of·execution·in·an·Erlang·program·and·to·allow·these·threads·to
133 communicate·with·each·other.·In·Erlang,·each·thread·of·execution·is·called·a133 communicate·with·each·other.·In·Erlang,·each·thread·of·execution·is·called·a
134 <em>process</em>.</p><p>(Aside:·the·term·&quot;process&quot;·is·usually·used·when·the·threads·of·execution·share134 <em>process</em>.</p><p>(Aside:·the·term·&quot;process&quot;·is·usually·used·when·the·threads·of·execution·share
135 no·data·with·each·other·and·the·term·&quot;thread&quot;·when·they·share·data·in·some·way.135 no·data·with·each·other·and·the·term·&quot;thread&quot;·when·they·share·data·in·some·way.
136 Threads·of·execution·in·Erlang·share·no·data,·that·is·why·they·are·called136 Threads·of·execution·in·Erlang·share·no·data,·that·is·why·they·are·called
137 processes).</p><p>The·Erlang·BIF·<code·class="inline">spawn</code>·is·used·to·create·a·new·process:137 processes).</p><p>The·Erlang·BIF·<code·class="inline">spawn</code>·is·used·to·create·a·new·process:
138 <code·class="inline">spawn(Module,·Exported_Function,·List·of·Arguments)</code>.·Consider·the·following138 <code·class="inline">spawn(Module,·Exported_Function,·List·of·Arguments)</code>.·Consider·the·following
139 module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9079464190-1">(</span><span·class="ss">tut14</span><span·class="p"·data-group-id="9079464190-1">)</span><span·class="p">.</span><span·class="w">139 module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2268936934-1">(</span><span·class="ss">tut14</span><span·class="p"·data-group-id="2268936934-1">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="w">140 </span><span·class="w">
141 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9079464190-2">(</span><span·class="p"·data-group-id="9079464190-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·125,·SHA:·52ae441b5087b1b6c527242aca6c25ddf69e668ebfa5aff4e4fa04d61ba1af0a·...·]-2">)</span><span·class="p">.</span><span·class="w">141 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2268936934-2">(</span><span·class="p"·data-group-id="2268936934-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·125,·SHA:·87dc4d77c1ebb337a763d29e0e72a30446f48408aea38520170a83687be86b00·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">say_something</span><span·class="p"·data-group-id="9079464190-4">(</span><span·class="n">What</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="9079464190-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">142 </span><span·class="nf">say_something</span><span·class="p"·data-group-id="2268936934-4">(</span><span·class="n">What</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="2268936934-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
143 ····</span><span·class="ss">done</span><span·class="p">;</span><span·class="w">143 ····</span><span·class="ss">done</span><span·class="p">;</span><span·class="w">
144 </span><span·class="nf">say_something</span><span·class="p"·data-group-id="9079464190-5">(</span><span·class="n">What</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Times</span><span·class="p"·data-group-id="9079464190-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">144 </span><span·class="nf">say_something</span><span·class="p"·data-group-id="2268936934-5">(</span><span·class="n">What</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Times</span><span·class="p"·data-group-id="2268936934-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
145 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9079464190-6">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9079464190-7">[</span><span·class="n">What</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·3ae428551cfa71c178ef487893499da0fdbc03e5f6a222a72549c73270c32e1c·...·]-6">)</span><span·class="p">,</span><span·class="w">145 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2268936934-6">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2268936934-7">[</span><span·class="n">What</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·6d69d4760ec7d261a9f1cea89b9f528d1802d819eb51bf4c2f648891e10c76de·...·]-6">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">say_something</span><span·class="p"·data-group-id="9079464190-8">(</span><span·class="n">What</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Times</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="907[·...·truncated·by·diffoscope;·len:·7,·SHA:·b088b2e2f7ad0700cdf518acc8cb15991edb7e3e72b3a19dd74d848c1953b9c5·...·]-8">)</span><span·class="p">.</span><span·class="w">146 ····</span><span·class="nf">say_something</span><span·class="p"·data-group-id="2268936934-8">(</span><span·class="n">What</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Times</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="226[·...·truncated·by·diffoscope;·len:·7,·SHA:·83d70293d664199c79f9c88e7ea407cc1e214ab1b1d069fcf46ce066a59bef67·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
147 </span><span·class="nf">start</span><span·class="p"·data-group-id="9079464190-9">(</span><span·class="p"·data-group-id="9079464190-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">147 </span><span·class="nf">start</span><span·class="p"·data-group-id="2268936934-9">(</span><span·class="p"·data-group-id="2268936934-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
148 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9079464190-10">(</span><span·class="ss">tut14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9079464190-11">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·180,·SHA:·e95562ad78ff24cb43a9370d919dfc3e1423d9199afe78900c520632a5e6fb6d·...·]-10">)</span><span·class="p">,</span><span·class="w">148 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2268936934-10">(</span><span·class="ss">tut14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2268936934-11">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·180,·SHA:·75a1e2dd31c039261ff2ea3aabf559d2fcf39835fc0cf008f65fe36a4890dc79·...·]-10">)</span><span·class="p">,</span><span·class="w">
149 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9079464190-12">(</span><span·class="ss">tut14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9079464190-13">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·471,·SHA:·548d4bf4a3309492bfd94543f8d42b91d7fbebf3a9eeb7c71058454c7c2656fe·...·]-1">)</span><span·class="p">.</span><span·class="w">149 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2268936934-12">(</span><span·class="ss">tut14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2268936934-13">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·471,·SHA:·c6e4a1a91dbe9fee55895b3dfa47238b0ba46535f05018c93565518ac969f6e5·...·]-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="7544554222-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut14</span><span·class="p"·data-group-id="7544554222-2">}</span><span·class="gp·unselectable">150 </span><span·class="p"·data-group-id="0662078469-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut14</span><span·class="p"·data-group-id="0662078469-2">}</span><span·class="gp·unselectable">
151 6&gt;·</span><span·class="nc">tut14</span><span·class="p">:</span><span·class="nf">say_something</span><span·class="p"·data-group-id="7544554222-3">(</span><span·class="ss">hello</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="7544554222-3">)</span><span·class="p">.</span><span·class="w">151 6&gt;·</span><span·class="nc">tut14</span><span·class="p">:</span><span·class="nf">say_something</span><span·class="p"·data-group-id="0662078469-3">(</span><span·class="ss">hello</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="0662078469-3">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="ss">hello</span><span·class="w">152 </span><span·class="ss">hello</span><span·class="w">
153 </span><span·class="ss">hello</span><span·class="w">153 </span><span·class="ss">hello</span><span·class="w">
154 </span><span·class="ss">hello</span><span·class="w">154 </span><span·class="ss">hello</span><span·class="w">
155 </span><span·class="ss">done</span></code></pre><p>As·shown,·the·function·<code·class="inline">say_something</code>·writes·its·first·argument·the·number·of155 </span><span·class="ss">done</span></code></pre><p>As·shown,·the·function·<code·class="inline">say_something</code>·writes·its·first·argument·the·number·of
156 times·specified·by·second·argument.·The·function·<code·class="inline">start</code>·starts·two·Erlang156 times·specified·by·second·argument.·The·function·<code·class="inline">start</code>·starts·two·Erlang
157 processes,·one·that·writes·&quot;hello&quot;·three·times·and·one·that·writes·&quot;goodbye&quot;157 processes,·one·that·writes·&quot;hello&quot;·three·times·and·one·that·writes·&quot;goodbye&quot;
158 three·times.·Both·processes·use·the·function·<code·class="inline">say_something</code>.·Notice·that·a158 three·times.·Both·processes·use·the·function·<code·class="inline">say_something</code>.·Notice·that·a
159 function·used·in·this·way·by·<code·class="inline">spawn</code>,·to·start·a·process,·must·be·exported·from159 function·used·in·this·way·by·<code·class="inline">spawn</code>,·to·start·a·process,·must·be·exported·from
160 the·module·(that·is,·in·the·<code·class="inline">-export</code>·at·the·start·of·the·module).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="nc">tut14</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4083922994-1">(</span><span·class="p"·data-group-id="4083922994-1">)</span><span·class="p">.</span><span·class="w">160 the·module·(that·is,·in·the·<code·class="inline">-export</code>·at·the·start·of·the·module).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="nc">tut14</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2507142079-1">(</span><span·class="p"·data-group-id="2507142079-1">)</span><span·class="p">.</span><span·class="w">
161 </span><span·class="ss">hello</span><span·class="w">161 </span><span·class="ss">hello</span><span·class="w">
162 </span><span·class="ss">goodbye</span><span·class="w">162 </span><span·class="ss">goodbye</span><span·class="w">
163 </span><span·class="o">&lt;</span><span·class="mf">0.63</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">163 </span><span·class="o">&lt;</span><span·class="mf">0.63</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
164 </span><span·class="ss">hello</span><span·class="w">164 </span><span·class="ss">hello</span><span·class="w">
165 </span><span·class="ss">goodbye</span><span·class="w">165 </span><span·class="ss">goodbye</span><span·class="w">
166 </span><span·class="ss">hello</span><span·class="w">166 </span><span·class="ss">hello</span><span·class="w">
167 </span><span·class="ss">goodbye</span></code></pre><p>Notice·that·it·did·not·write·&quot;hello&quot;·three·times·and·then·&quot;goodbye&quot;·three·times.167 </span><span·class="ss">goodbye</span></code></pre><p>Notice·that·it·did·not·write·&quot;hello&quot;·three·times·and·then·&quot;goodbye&quot;·three·times.
168 Instead,·the·first·process·wrote·a·&quot;hello&quot;,·the·second·a·&quot;goodbye&quot;,·the·first168 Instead,·the·first·process·wrote·a·&quot;hello&quot;,·the·second·a·&quot;goodbye&quot;,·the·first
169 another·&quot;hello&quot;·and·so·forth.·But·where·did·the·<code·class="inline">&lt;0.63.0&gt;</code>·come·from?·The·return169 another·&quot;hello&quot;·and·so·forth.·But·where·did·the·<code·class="inline">&lt;0.63.0&gt;</code>·come·from?·The·return
170 value·of·a·function·is·the·return·value·of·the·last·&quot;thing&quot;·in·the·function.·The170 value·of·a·function·is·the·return·value·of·the·last·&quot;thing&quot;·in·the·function.·The
171 last·thing·in·the·function·<code·class="inline">start</code>·is</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="8962163310-1">(</span><span·class="ss">tut14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8962163310-2">[</span><span·class="ss">go[·...·truncated·by·diffoscope;·len:·179,·SHA:·40dd7dd3c1ef9beaa8df5c89132248537c409481bf0b59564b0afdf6c4142d28·...·]-1">)</span><span·class="p">.</span></code></pre><p><code·class="inline">spawn</code>·returns·a·<em>process·identifier</em>,·or·<em>pid</em>,·which·uniquely·identifies·the171 last·thing·in·the·function·<code·class="inline">start</code>·is</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="2187477061-1">(</span><span·class="ss">tut14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">say_something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2187477061-2">[</span><span·class="ss">go[·...·truncated·by·diffoscope;·len:·179,·SHA:·79af90eb9398dac848efa26548403260d1ed03fafb65b3ec3c860ec7461e239d·...·]-1">)</span><span·class="p">.</span></code></pre><p><code·class="inline">spawn</code>·returns·a·<em>process·identifier</em>,·or·<em>pid</em>,·which·uniquely·identifies·the
172 process.·So·<code·class="inline">&lt;0.63.0&gt;</code>·is·the·pid·of·the·<code·class="inline">spawn</code>·function·call·above.·The·next172 process.·So·<code·class="inline">&lt;0.63.0&gt;</code>·is·the·pid·of·the·<code·class="inline">spawn</code>·function·call·above.·The·next
173 example·shows·how·to·use·pids.</p><p>Notice·also·that·~p·is·used·instead·of·~w·in·<a·href="../../lib/stdlib-6.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>.·To·quote·<a·href="../../lib/stdlib-6.2/doc/html/io.html#tilde_p">the·manual</a>:</p><blockquote><p>~p·Writes·the·data·with·standard·syntax·in·the·same·way·as·~w,·but·breaks·terms173 example·shows·how·to·use·pids.</p><p>Notice·also·that·~p·is·used·instead·of·~w·in·<a·href="../../lib/stdlib-6.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>.·To·quote·<a·href="../../lib/stdlib-6.2/doc/html/io.html#tilde_p">the·manual</a>:</p><blockquote><p>~p·Writes·the·data·with·standard·syntax·in·the·same·way·as·~w,·but·breaks·terms
174 whose·printed·representation·is·longer·than·one·line·into·many·lines·and·indents174 whose·printed·representation·is·longer·than·one·line·into·many·lines·and·indents
175 each·line·sensibly.·It·also·tries·to·detect·flat·lists·of·printable·characters·and175 each·line·sensibly.·It·also·tries·to·detect·flat·lists·of·printable·characters·and
176 to·output·these·as·strings</p></blockquote><h2·id="message-passing"·class="section-heading">176 to·output·these·as·strings</p></blockquote><h2·id="message-passing"·class="section-heading">
177 ··<a·href="#message-passing"·class="hover-link">177 ··<a·href="#message-passing"·class="hover-link">
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Message·Passing</span>180 ··<span·class="text">Message·Passing</span>
181 </h2>181 </h2>
182 <p>In·the·following·example·two·processes·are·created·and·they·send·messages·to182 <p>In·the·following·example·two·processes·are·created·and·they·send·messages·to
183 each·other·a·number·of·times.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2319740387-1">(</span><span·class="ss">tut15</span><span·class="p"·data-group-id="2319740387-1">)</span><span·class="p">.</span><span·class="w">183 each·other·a·number·of·times.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1357895476-1">(</span><span·class="ss">tut15</span><span·class="p"·data-group-id="1357895476-1">)</span><span·class="p">.</span><span·class="w">
184 </span><span·class="w">184 </span><span·class="w">
185 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2319740387-2">(</span><span·class="p"·data-group-id="2319740387-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·d810fd1ff7cbbae48dec47c23c9c3f4b91d53bc0e03b9eafe080fd91a6d4df69·...·]-2">)</span><span·class="p">.</span><span·class="w">185 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1357895476-2">(</span><span·class="p"·data-group-id="1357895476-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·c4f24b7107fc1a8fa2663e9c373a8f57fb7d57178f5c3c2118c663a5eaf4aa62·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">ping</span><span·class="p"·data-group-id="2319740387-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="2319740387-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">186 </span><span·class="nf">ping</span><span·class="p"·data-group-id="1357895476-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="1357895476-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">finished</span><span·class="p">,</span><span·class="w">187 ····</span><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">finished</span><span·class="p">,</span><span·class="w">
188 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2319740387-5">(</span><span·class="s">&quot;ping·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2319740387-6">[</span><span·class="p"·data-group-id="23197[·...·truncated·by·diffoscope;·len:·58,·SHA:·7b177dad9a9ec97e2c28e462b26deee2bd19c0d5d35f223088816cc8aaebee06·...·]-5">)</span><span·class="p">;</span><span·class="w">188 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1357895476-5">(</span><span·class="s">&quot;ping·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1357895476-6">[</span><span·class="p"·data-group-id="13578[·...·truncated·by·diffoscope;·len:·58,·SHA:·ad209e53b8c23cd4c01d2bd3b79cf498bf3cca71395f0c02323065bed78d597d·...·]-5">)</span><span·class="p">;</span><span·class="w">
  
189 </span><span·class="nf">ping</span><span·class="p"·data-group-id="2319740387-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="2319740387-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 </span><span·class="nf">ping</span><span·class="p"·data-group-id="1357895476-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="1357895476-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2319740387-8">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2319740387-9">(</span><span·class="p"·data-group-id="2319740387-9">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·1f85152a7cb6fad434036b9703c1be5c5981df5d46af560cb463d3f549ea8d4a·...·]-8">}</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1357895476-8">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="1357895476-9">(</span><span·class="p"·data-group-id="1357895476-9">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·827b67123fbdcfbc9bf709d3d2ddd0d01c9cfbe67555d16deaef271bcb5c0e6c·...·]-8">}</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="k">receive</span><span·class="w">191 ····</span><span·class="k">receive</span><span·class="w">
192 ········</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 ········</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2319740387-10">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2319740387-11">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·f60f1686edcb2d34c099a694be5e3bb470d55f54a6bf650693de97957f59e160·...·]-10">)</span><span·class="w">193 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1357895476-10">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1357895476-11">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·48f89d47cd648b8d6407d922d553e3771ca20b5670b895b4bf521856f605da51·...·]-10">)</span><span·class="w">
194 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="2319740387-12">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="23[·...·truncated·by·diffoscope;·len:·8,·SHA:·152ac5df762e80fe804a17e80ecbee759357160d59cfe3ea74bb3ba4a819b3c9·...·]-12">)</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="1357895476-12">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="13[·...·truncated·by·diffoscope;·len:·8,·SHA:·3cb37c01030462b39e8f28fa38fec38ce94b682096b4cf7be87867ea48a7b27d·...·]-12">)</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">pong</span><span·class="p"·data-group-id="2319740387-13">(</span><span·class="p"·data-group-id="2319740387-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 </span><span·class="nf">pong</span><span·class="p"·data-group-id="1357895476-13">(</span><span·class="p"·data-group-id="1357895476-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="k">receive</span><span·class="w">197 ····</span><span·class="k">receive</span><span·class="w">
198 ········</span><span·class="ss">finished</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 ········</span><span·class="ss">finished</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2319740387-14">(</span><span·class="s">&quot;Pong·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2319740387-15">[</span><span·class="p"·data-group-id="231[·...·truncated·by·diffoscope;·len:·61,·SHA:·68d04634c4126c9067d60d3e6456f9f5955ad1da09bf6ce6e5dc08e20f446743·...·]-14">)</span><span·class="p">;</span><span·class="w">199 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1357895476-14">(</span><span·class="s">&quot;Pong·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1357895476-15">[</span><span·class="p"·data-group-id="135[·...·truncated·by·diffoscope;·len:·61,·SHA:·f5ecf0f5021f7711b3903b183cec66c1dc94270ba1d21c06672cbc5d8d8bb3db·...·]-14">)</span><span·class="p">;</span><span·class="w">
200 ········</span><span·class="p"·data-group-id="2319740387-16">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="2319740387-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 ········</span><span·class="p"·data-group-id="1357895476-16">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="1357895476-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2319740387-17">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2319740387-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·c0ab9d1d577e12b192e9a5e93e4112d3bf743238a5f69fb0cb5474d6651f40b7·...·]-17">)</span><span·class="p">,</span><span·class="w">201 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1357895476-17">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1357895476-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·574f1251aac8dcb1cc5bd2ad8a73889b3caedcdbf798ce320cba7434aa4f4f4e·...·]-17">)</span><span·class="p">,</span><span·class="w">
202 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">202 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">
203 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="2319740387-19">(</span><span·class="p"·data-group-id="2319740387-19">)</span><span·class="w">203 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="1357895476-19">(</span><span·class="p"·data-group-id="1357895476-19">)</span><span·class="w">
204 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">204 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="nf">start</span><span·class="p"·data-group-id="2319740387-20">(</span><span·class="p"·data-group-id="2319740387-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 </span><span·class="nf">start</span><span·class="p"·data-group-id="1357895476-20">(</span><span·class="p"·data-group-id="1357895476-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2319740387-21">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2319740387-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·1959c8dfc2ad0f318c3be883404fff45d8d3d1643314ff342c5d19365a5f7b49·...·]-21">)</span><span·class="p">,</span><span·class="w">206 ····</span><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1357895476-21">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1357895476-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·48f18200281d7643463035da19d6cb400af7fb4af57a3bb84cfe983653690d96·...·]-21">)</span><span·class="p">,</span><span·class="w">
207 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2319740387-23">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2319740387-24">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·462,·SHA:·d6929b476bb4286e2449a5739414132ec4278ee3eab18ea4ec9aca996b6998cd·...·]-1">)</span><span·class="p">.</span><span·class="w">207 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1357895476-23">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1357895476-24">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·462,·SHA:·0997fd80c04c2dc17e29efa4bc27888df76ff1544f4870d4c6064a3a3f8f999a·...·]-1">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="9064553537-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut15</span><span·class="p"·data-group-id="9064553537-2">}</span><span·class="gp·unselectable">208 </span><span·class="p"·data-group-id="8583193141-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut15</span><span·class="p"·data-group-id="8583193141-2">}</span><span·class="gp·unselectable">
209 2&gt;·</span><span·class="nc">tut15</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">start</span><span·class="p"·data-group-id="9064553537-3">(</span><span·class="p"·data-group-id="9064553537-3">)</span><span·class="p">.</span><span·class="w">209 2&gt;·</span><span·class="nc">tut15</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">start</span><span·class="p"·data-group-id="8583193141-3">(</span><span·class="p"·data-group-id="8583193141-3">)</span><span·class="p">.</span><span·class="w">
210 </span><span·class="o">&lt;</span><span·class="mf">0.36</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">210 </span><span·class="o">&lt;</span><span·class="mf">0.36</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
211 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">ping</span><span·class="w">211 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">ping</span><span·class="w">
212 </span><span·class="n">Ping</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">pong</span><span·class="w">212 </span><span·class="n">Ping</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">pong</span><span·class="w">
213 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">ping</span><span·class="w">213 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">ping</span><span·class="w">
214 </span><span·class="n">Ping</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">pong</span><span·class="w">214 </span><span·class="n">Ping</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">pong</span><span·class="w">
215 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">ping</span><span·class="w">215 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">ping</span><span·class="w">
216 </span><span·class="n">Ping</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">pong</span><span·class="w">216 </span><span·class="n">Ping</span><span·class="w">·</span><span·class="ss">received</span><span·class="w">·</span><span·class="ss">pong</span><span·class="w">
217 </span><span·class="ss">ping</span><span·class="w">·</span><span·class="ss">finished</span><span·class="w">217 </span><span·class="ss">ping</span><span·class="w">·</span><span·class="ss">finished</span><span·class="w">
218 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">finished</span></code></pre><p>The·function·<code·class="inline">start</code>·first·creates·a·process,·let·us·call·it·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1652038559-1">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1652038559-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·d331e612fc60265a892b14fc35974742a742278b702ee5765306f6f3bb8bf3dc·...·]-1">)</span></code></pre><p>This·process·executes·<code·class="inline">tut15:pong()</code>.·<code·class="inline">Pong_PID</code>·is·the·process·identity·of·the218 </span><span·class="n">Pong</span><span·class="w">·</span><span·class="ss">finished</span></code></pre><p>The·function·<code·class="inline">start</code>·first·creates·a·process,·let·us·call·it·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4771740515-1">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4771740515-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·2dbc0227e1b97ef0d81264d900e3707dd92419244bf35de0aeff241d47792c72·...·]-1">)</span></code></pre><p>This·process·executes·<code·class="inline">tut15:pong()</code>.·<code·class="inline">Pong_PID</code>·is·the·process·identity·of·the
219 &quot;pong&quot;·process.·The·function·<code·class="inline">start</code>·now·creates·another·process·&quot;ping&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="3495867374-1">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3495867374-2">[</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·575,·SHA:·491e1040fce66f5fcca8729f00537cd9a8b29bebfe5452bb3f412b9f713c4095·...·]-1">)</span></code></pre><p><code·class="inline">&lt;0.36.0&gt;</code>·is·the·return·value·from·the·<code·class="inline">start</code>·function.</p><p>The·process·&quot;pong&quot;·now·does:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">219 &quot;pong&quot;·process.·The·function·<code·class="inline">start</code>·now·creates·another·process·&quot;ping&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="2027520065-1">(</span><span·class="ss">tut15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2027520065-2">[</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·575,·SHA:·ef3dee5649198cc247c181b70cf0a3df66f16604d977a9af329be9b29291f4f1·...·]-1">)</span></code></pre><p><code·class="inline">&lt;0.36.0&gt;</code>·is·the·return·value·from·the·<code·class="inline">start</code>·function.</p><p>The·process·&quot;pong&quot;·now·does:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">
220 ····</span><span·class="ss">finished</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">220 ····</span><span·class="ss">finished</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
221 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1427375983-1">(</span><span·class="s">&quot;Pong·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1427375983-2">[</span><span·class="p"·data-group-id="14273[·...·truncated·by·diffoscope;·len:·58,·SHA:·26888e3aeab854bd30d42b233ddce9243b7ea4a301c268bba9fa3cefe5550d6c·...·]-1">)</span><span·class="p">;</span><span·class="w">221 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7044278968-1">(</span><span·class="s">&quot;Pong·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7044278968-2">[</span><span·class="p"·data-group-id="70442[·...·truncated·by·diffoscope;·len:·58,·SHA:·0b57f08acf9656c72dda313f3c86a6fc3072fd986beb165868f2cc8035c8f63d·...·]-1">)</span><span·class="p">;</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="1427375983-3">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="1427375983-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ····</span><span·class="p"·data-group-id="7044278968-3">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="7044278968-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1427375983-4">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1427375983-5">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·a48237830e89bab0234e804ee047b7bca34ace2b44b0bc74ebc00edd785b06bf·...·]-4">)</span><span·class="p">,</span><span·class="w">223 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7044278968-4">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7044278968-5">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·9a0c546822c348a5f247a675640ef421e42095c8d1d66babf58b8e1abac904fd·...·]-4">)</span><span·class="p">,</span><span·class="w">
224 ········</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">224 ········</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">
225 ········</span><span·class="nf">pong</span><span·class="p"·data-group-id="1427375983-6">(</span><span·class="p"·data-group-id="1427375983-6">)</span><span·class="w">225 ········</span><span·class="nf">pong</span><span·class="p"·data-group-id="7044278968-6">(</span><span·class="p"·data-group-id="7044278968-6">)</span><span·class="w">
226 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">receive</code>·construct·is·used·to·allow·processes·to·wait·for·messages·from226 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">receive</code>·construct·is·used·to·allow·processes·to·wait·for·messages·from
227 other·processes.·It·has·the·following·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">227 other·processes.·It·has·the·following·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">
228 ···</span><span·class="ss">pattern1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">228 ···</span><span·class="ss">pattern1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ·······</span><span·class="ss">actions1</span><span·class="p">;</span><span·class="w">229 ·······</span><span·class="ss">actions1</span><span·class="p">;</span><span·class="w">
230 ···</span><span·class="ss">pattern2</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">230 ···</span><span·class="ss">pattern2</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
231 ·······</span><span·class="ss">actions2</span><span·class="p">;</span><span·class="w">231 ·······</span><span·class="ss">actions2</span><span·class="p">;</span><span·class="w">
232 ···</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">232 ···</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
Offset 253, 84 lines modifiedOffset 253, 84 lines modified
253 queue·(keeping·the·first·message·and·any·other·messages·in·the·queue).·If·the253 queue·(keeping·the·first·message·and·any·other·messages·in·the·queue).·If·the
254 second·message·does·not·match,·the·third·message·is·tried,·and·so·on,·until·the254 second·message·does·not·match,·the·third·message·is·tried,·and·so·on,·until·the
255 end·of·the·queue·is·reached.·If·the·end·of·the·queue·is·reached,·the·process255 end·of·the·queue·is·reached.·If·the·end·of·the·queue·is·reached,·the·process
256 blocks·(stops·execution)·and·waits·until·a·new·message·is·received·and·this256 blocks·(stops·execution)·and·waits·until·a·new·message·is·received·and·this
257 procedure·is·repeated.</p><p>The·Erlang·implementation·is·&quot;clever&quot;·and·minimizes·the·number·of·times·each257 procedure·is·repeated.</p><p>The·Erlang·implementation·is·&quot;clever&quot;·and·minimizes·the·number·of·times·each
258 message·is·tested·against·the·patterns·in·each·<code·class="inline">receive</code>.</p><p>Now·back·to·the·ping·pong·example.</p><p>&quot;Pong&quot;·is·waiting·for·messages.·If·the·atom·<code·class="inline">finished</code>·is·received,·&quot;pong&quot;258 message·is·tested·against·the·patterns·in·each·<code·class="inline">receive</code>.</p><p>Now·back·to·the·ping·pong·example.</p><p>&quot;Pong&quot;·is·waiting·for·messages.·If·the·atom·<code·class="inline">finished</code>·is·received,·&quot;pong&quot;
259 writes·&quot;Pong·finished&quot;·to·the·output·and,·as·it·has·nothing·more·to·do,259 writes·&quot;Pong·finished&quot;·to·the·output·and,·as·it·has·nothing·more·to·do,
260 terminates.·If·it·receives·a·message·with·the·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3757895969-1">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="3757895969-1">}</span></code></pre><p>it·writes·&quot;Pong·received·ping&quot;·to·the·output·and·sends·the·atom·<code·class="inline">pong</code>·to·the260 terminates.·If·it·receives·a·message·with·the·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9048600172-1">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="9048600172-1">}</span></code></pre><p>it·writes·&quot;Pong·received·ping&quot;·to·the·output·and·sends·the·atom·<code·class="inline">pong</code>·to·the
261 process·&quot;ping&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span></code></pre><p>Notice·how·the·operator·&quot;!&quot;·is·used·to·send·messages.·The·syntax·of·&quot;!&quot;·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Message</span></code></pre><p>That·is,·<code·class="inline">Message</code>·(any·Erlang·term)·is·sent·to·the·process·with·identity·<code·class="inline">Pid</code>.</p><p>After·sending·the·message·<code·class="inline">pong</code>·to·the·process·&quot;ping&quot;,·&quot;pong&quot;·calls·the·<code·class="inline">pong</code>261 process·&quot;ping&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span></code></pre><p>Notice·how·the·operator·&quot;!&quot;·is·used·to·send·messages.·The·syntax·of·&quot;!&quot;·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Message</span></code></pre><p>That·is,·<code·class="inline">Message</code>·(any·Erlang·term)·is·sent·to·the·process·with·identity·<code·class="inline">Pid</code>.</p><p>After·sending·the·message·<code·class="inline">pong</code>·to·the·process·&quot;ping&quot;,·&quot;pong&quot;·calls·the·<code·class="inline">pong</code>
262 function·again,·which·causes·it·to·get·back·to·the·<code·class="inline">receive</code>·again·and·wait·for262 function·again,·which·causes·it·to·get·back·to·the·<code·class="inline">receive</code>·again·and·wait·for
263 another·message.</p><p>Now·let·us·look·at·the·process·&quot;ping&quot;.·Recall·that·it·was·started·by·executing:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">tut15</span><span·class="p">:</span><span·class="nf">ping</span><span·class="p"·data-group-id="8845798213-1">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="8845798213-1">)</span></code></pre><p>Looking·at·the·function·<code·class="inline">ping/2</code>,·the·second·clause·of·<code·class="inline">ping/2</code>·is·executed263 another·message.</p><p>Now·let·us·look·at·the·process·&quot;ping&quot;.·Recall·that·it·was·started·by·executing:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">tut15</span><span·class="p">:</span><span·class="nf">ping</span><span·class="p"·data-group-id="8538084705-1">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="8538084705-1">)</span></code></pre><p>Looking·at·the·function·<code·class="inline">ping/2</code>,·the·second·clause·of·<code·class="inline">ping/2</code>·is·executed
264 since·the·value·of·the·first·argument·is·3·(not·0)·(first·clause·head·is264 since·the·value·of·the·first·argument·is·3·(not·0)·(first·clause·head·is
265 <code·class="inline">ping(0,Pong_PID)</code>,·second·clause·head·is·<code·class="inline">ping(N,Pong_PID)</code>,·so·<code·class="inline">N</code>·becomes·3).</p><p>The·second·clause·sends·a·message·to·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="3185909736-1">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="3185909736-2">(</span><span·class="p"·data-group-id="3185909736-2">)</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·0db21f2731299657f424f6430514499fe549bb61f6162b57341c770492e755e3·...·]-1">}</span><span·class="p">,</span></code></pre><p><a·href="../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·returns·the·pid·of·the·process·that·executes·<a·href="../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>,·in·this·case·the265 <code·class="inline">ping(0,Pong_PID)</code>,·second·clause·head·is·<code·class="inline">ping(N,Pong_PID)</code>,·so·<code·class="inline">N</code>·becomes·3).</p><p>The·second·clause·sends·a·message·to·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pong_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="3132210649-1">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="3132210649-2">(</span><span·class="p"·data-group-id="3132210649-2">)</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·6202a1cc47134dd912cfeb234dc1e2913a99c98c7e21bc2f5a452cc00ec6b484·...·]-1">}</span><span·class="p">,</span></code></pre><p><a·href="../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·returns·the·pid·of·the·process·that·executes·<a·href="../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>,·in·this·case·the
266 pid·of·&quot;ping&quot;.·(Recall·the·code·for·&quot;pong&quot;,·this·lands·up·in·the·variable266 pid·of·&quot;ping&quot;.·(Recall·the·code·for·&quot;pong&quot;,·this·lands·up·in·the·variable
267 <code·class="inline">Ping_PID</code>·in·the·<code·class="inline">receive</code>·previously·explained.)</p><p>&quot;Ping&quot;·now·waits·for·a·reply·from·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">267 <code·class="inline">Ping_PID</code>·in·the·<code·class="inline">receive</code>·previously·explained.)</p><p>&quot;Ping&quot;·now·waits·for·a·reply·from·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">
268 ····</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">268 ····</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
269 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1527060076-1">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1527060076-2">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·7ca8468501447f70bf04e74a1dd0c9e48ec37be3e1588a8a402244bc9ac5f2b7·...·]-1">)</span><span·class="w">269 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8460649239-1">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8460649239-2">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·ca95b7c4b75ee5894516351c29438a715bd13515463a3b2d7dd65f182f797e66·...·]-1">)</span><span·class="w">
270 </span><span·class="k">end</span><span·class="p">,</span></code></pre><p>It·writes·&quot;Ping·received·pong&quot;·when·this·reply·arrives,·after·which·&quot;ping&quot;·calls270 </span><span·class="k">end</span><span·class="p">,</span></code></pre><p>It·writes·&quot;Ping·received·pong&quot;·when·this·reply·arrives,·after·which·&quot;ping&quot;·calls
271 the·<code·class="inline">ping</code>·function·again.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">ping</span><span·class="p"·data-group-id="1059201037-1">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="105[·...·truncated·by·diffoscope;·len:·7,·SHA:·5a0faea71922a5da9ffbca074295d7240bff4c406c94e620fa17a8eae2f5974a·...·]-1">)</span></code></pre><p><code·class="inline">N-1</code>·causes·the·first·argument·to·be·decremented·until·it·becomes·0.·When·this271 the·<code·class="inline">ping</code>·function·again.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">ping</span><span·class="p"·data-group-id="3872449494-1">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_PID</span><span·class="p"·data-group-id="387[·...·truncated·by·diffoscope;·len:·7,·SHA:·f8daebc8cb3e68a9fdd76cae5e82b4fad107de14f17cb447a195af40aa30087b·...·]-1">)</span></code></pre><p><code·class="inline">N-1</code>·causes·the·first·argument·to·be·decremented·until·it·becomes·0.·When·this
Max diff block lines reached; 163488/213239 bytes (76.67%) of diff not shown.
184 KB
./usr/share/doc/erlang-doc/html/doc/system/create_target.html
    
Offset 138, 21 lines modifiedOffset 138, 21 lines modified
138 ··<span·class="text">Creating·a·Target·System</span>138 ··<span·class="text">Creating·a·Target·System</span>
139 </h2>139 </h2>
140 <p>It·is·assumed·that·you·have·a·working·Erlang/OTP·system·structured·according·to140 <p>It·is·assumed·that·you·have·a·working·Erlang/OTP·system·structured·according·to
141 the·OTP·design·principles.</p><p><em>Step·1.</em>·Create·a·<code·class="inline">.rel</code>·file·(see·the·<a·href="../../lib/sasl-4.2.2/doc/html/rel.html">rel(4)</a>·manual·page·in141 the·OTP·design·principles.</p><p><em>Step·1.</em>·Create·a·<code·class="inline">.rel</code>·file·(see·the·<a·href="../../lib/sasl-4.2.2/doc/html/rel.html">rel(4)</a>·manual·page·in
142 SASL),·which·specifies·the·ERTS·version·and·lists·all·applications·that·are·to142 SASL),·which·specifies·the·ERTS·version·and·lists·all·applications·that·are·to
143 be·included·in·the·new·basic·target·system.·An·example·is·the·following143 be·included·in·the·new·basic·target·system.·An·example·is·the·following
144 <code·class="inline">mysystem.rel</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·mysystem.rel</span><span·class="w">144 <code·class="inline">mysystem.rel</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·mysystem.rel</span><span·class="w">
145 </span><span·class="p"·data-group-id="3537071115-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">145 </span><span·class="p"·data-group-id="3947097318-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
146 ·</span><span·class="p"·data-group-id="3537071115-2">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;FIRST&quot;</span><span·class="p"·data-group-id="3537071115-2">}</span><span·class="p">,</span><span·class="w">146 ·</span><span·class="p"·data-group-id="3947097318-2">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;FIRST&quot;</span><span·class="p"·data-group-id="3947097318-2">}</span><span·class="p">,</span><span·class="w">
147 ·</span><span·class="p"·data-group-id="3537071115-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.10.4&quot;</span><span·class="p"·data-group-id="3537071115-3">}</span><span·class="p">,</span><span·class="w">147 ·</span><span·class="p"·data-group-id="3947097318-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.10.4&quot;</span><span·class="p"·data-group-id="3947097318-3">}</span><span·class="p">,</span><span·class="w">
148 ·</span><span·class="p"·data-group-id="3537071115-4">[</span><span·class="p"·data-group-id="3537071115-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.16.4&quot;</span><span·class="p"·data-group-id="3537071115-5">}</span><span·class="p">,</span><span·class="w">148 ·</span><span·class="p"·data-group-id="3947097318-4">[</span><span·class="p"·data-group-id="3947097318-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.16.4&quot;</span><span·class="p"·data-group-id="3947097318-5">}</span><span·class="p">,</span><span·class="w">
149 ··</span><span·class="p"·data-group-id="3537071115-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1.19.4&quot;</span><span·class="p"·data-group-id="3537071115-6">}</span><span·class="p">,</span><span·class="w">149 ··</span><span·class="p"·data-group-id="3947097318-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1.19.4&quot;</span><span·class="p"·data-group-id="3947097318-6">}</span><span·class="p">,</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="3537071115-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.3.4&quot;</span><span·class="p"·data-group-id="3537071115-7">}</span><span·class="p">,</span><span·class="w">150 ··</span><span·class="p"·data-group-id="3947097318-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.3.4&quot;</span><span·class="p"·data-group-id="3947097318-7">}</span><span·class="p">,</span><span·class="w">
151 ··</span><span·class="p"·data-group-id="3537071115-8">{</span><span·class="ss">pea</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p"·data-group-id="3537071115-8">}</span><span·class="p"·data-group-id="3537071115-4">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·1933073058474b52674d3ef828f5dbf194f429a92973f36fd106370d6f4c0d46·...·]-1">}</span><span·class="p">.</span></code></pre><p>The·listed·applications·are·not·only·original·Erlang/OTP·applications·but151 ··</span><span·class="p"·data-group-id="3947097318-8">{</span><span·class="ss">pea</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p"·data-group-id="3947097318-8">}</span><span·class="p"·data-group-id="3947097318-4">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·bbdd81db557e87dd4fa0426185ef5f2dd9791751c2dc6934f87d8a40841e31de·...·]-1">}</span><span·class="p">.</span></code></pre><p>The·listed·applications·are·not·only·original·Erlang/OTP·applications·but
152 possibly·also·new·applications·that·you·have·written·(here·exemplified·by·the152 possibly·also·new·applications·that·you·have·written·(here·exemplified·by·the
153 application·Pea·(<code·class="inline">pea</code>)).</p><p><em>Step·2.</em>·Start·Erlang/OTP·from·the·directory·where·the·<code·class="inline">mysystem.rel</code>·file153 application·Pea·(<code·class="inline">pea</code>)).</p><p><em>Step·2.</em>·Start·Erlang/OTP·from·the·directory·where·the·<code·class="inline">mysystem.rel</code>·file
154 resides:</p><pre><code·class="text">%·erl·-pa·/home/user/target_system/myapps/pea-1.0/ebin</code></pre><p>The·<code·class="inline">-pa</code>·argument·prepends·the·path·to·the·<code·class="inline">ebin</code>·directory·for154 resides:</p><pre><code·class="text">%·erl·-pa·/home/user/target_system/myapps/pea-1.0/ebin</code></pre><p>The·<code·class="inline">-pa</code>·argument·prepends·the·path·to·the·<code·class="inline">ebin</code>·directory·for
155 the·Pea·application·to·the·code·path.</p><p><em>Step·3.</em>·Create·the·target·system:</p><pre><code·class="text">1&gt;·target_system:create(&quot;mysystem&quot;).</code></pre><p>The·function·<code·class="inline">target_system:create/1</code>·performs·the·following:</p><ol><li><p>Reads·the·file·<code·class="inline">mysystem.rel</code>·and·creates·a·new·file·<code·class="inline">plain.rel</code>.155 the·Pea·application·to·the·code·path.</p><p><em>Step·3.</em>·Create·the·target·system:</p><pre><code·class="text">1&gt;·target_system:create(&quot;mysystem&quot;).</code></pre><p>The·function·<code·class="inline">target_system:create/1</code>·performs·the·following:</p><ol><li><p>Reads·the·file·<code·class="inline">mysystem.rel</code>·and·creates·a·new·file·<code·class="inline">plain.rel</code>.
156 The·new·file·is·identical·to·the·original,·except·that·it·only156 The·new·file·is·identical·to·the·original,·except·that·it·only
157 lists·the·Kernel·and·STDLIB·applications.</p></li><li><p>From·the·files·<code·class="inline">mysystem.rel</code>·and·<code·class="inline">plain.rel</code>·creates·the·files157 lists·the·Kernel·and·STDLIB·applications.</p></li><li><p>From·the·files·<code·class="inline">mysystem.rel</code>·and·<code·class="inline">plain.rel</code>·creates·the·files
158 <code·class="inline">mysystem.script</code>,·<code·class="inline">mysystem.boot</code>,·<code·class="inline">plain.script</code>,·and·<code·class="inline">plain.boot</code>158 <code·class="inline">mysystem.script</code>,·<code·class="inline">mysystem.boot</code>,·<code·class="inline">plain.script</code>,·and·<code·class="inline">plain.boot</code>
Offset 242, 25 lines modifiedOffset 242, 25 lines modified
242 ··<a·href="#creating-the-next-version"·class="hover-link">242 ··<a·href="#creating-the-next-version"·class="hover-link">
243 ····<i·class="ri-link-m"·aria-hidden="true"></i>243 ····<i·class="ri-link-m"·aria-hidden="true"></i>
244 ··</a>244 ··</a>
245 ··<span·class="text">Creating·the·Next·Version</span>245 ··<span·class="text">Creating·the·Next·Version</span>
246 </h2>246 </h2>
247 <p>In·this·example·the·Pea·application·has·been·changed,·and·so·are·the247 <p>In·this·example·the·Pea·application·has·been·changed,·and·so·are·the
248 applications·ERTS,·Kernel,·STDLIB·and·SASL.</p><p><em>Step·1.</em>·Create·the·file·<code·class="inline">.rel</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·mysystem2.rel</span><span·class="w">248 applications·ERTS,·Kernel,·STDLIB·and·SASL.</p><p><em>Step·1.</em>·Create·the·file·<code·class="inline">.rel</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·mysystem2.rel</span><span·class="w">
249 </span><span·class="p"·data-group-id="5289765427-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">249 </span><span·class="p"·data-group-id="1040076760-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
250 ·</span><span·class="p"·data-group-id="5289765427-2">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SECOND&quot;</span><span·class="p"·data-group-id="5289765427-2">}</span><span·class="p">,</span><span·class="w">250 ·</span><span·class="p"·data-group-id="1040076760-2">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SECOND&quot;</span><span·class="p"·data-group-id="1040076760-2">}</span><span·class="p">,</span><span·class="w">
251 ·</span><span·class="p"·data-group-id="5289765427-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;6.0&quot;</span><span·class="p"·data-group-id="5289765427-3">}</span><span·class="p">,</span><span·class="w">251 ·</span><span·class="p"·data-group-id="1040076760-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;6.0&quot;</span><span·class="p"·data-group-id="1040076760-3">}</span><span·class="p">,</span><span·class="w">
252 ·</span><span·class="p"·data-group-id="5289765427-4">[</span><span·class="p"·data-group-id="5289765427-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;3.0&quot;</span><span·class="p"·data-group-id="5289765427-5">}</span><span·class="p">,</span><span·class="w">252 ·</span><span·class="p"·data-group-id="1040076760-4">[</span><span·class="p"·data-group-id="1040076760-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;3.0&quot;</span><span·class="p"·data-group-id="1040076760-5">}</span><span·class="p">,</span><span·class="w">
253 ··</span><span·class="p"·data-group-id="5289765427-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.0&quot;</span><span·class="p"·data-group-id="5289765427-6">}</span><span·class="p">,</span><span·class="w">253 ··</span><span·class="p"·data-group-id="1040076760-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.0&quot;</span><span·class="p"·data-group-id="1040076760-6">}</span><span·class="p">,</span><span·class="w">
254 ··</span><span·class="p"·data-group-id="5289765427-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.4&quot;</span><span·class="p"·data-group-id="5289765427-7">}</span><span·class="p">,</span><span·class="w">254 ··</span><span·class="p"·data-group-id="1040076760-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.4&quot;</span><span·class="p"·data-group-id="1040076760-7">}</span><span·class="p">,</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="5289765427-8">{</span><span·class="ss">pea</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.0&quot;</span><span·class="p"·data-group-id="5289765427-8">}</span><span·class="p"·data-group-id="5289765427-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·491e45614a8ed217c5471ae9eeaf55a516aa9e145383648ad64bd64c0a1a57c8·...·]-1">}</span><span·class="p">.</span></code></pre><p><em>Step·2.</em>·Create·the·application·upgrade·file·(see255 ··</span><span·class="p"·data-group-id="1040076760-8">{</span><span·class="ss">pea</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.0&quot;</span><span·class="p"·data-group-id="1040076760-8">}</span><span·class="p"·data-group-id="1040076760-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·17346219c4bb1060accd841afd4fbca3d3096432eb8e84061c83512f8516e83f·...·]-1">}</span><span·class="p">.</span></code></pre><p><em>Step·2.</em>·Create·the·application·upgrade·file·(see
256 <a·href="../../lib/sasl-4.2.2/doc/html/appup.html">appup</a>·in·SASL)·for·Pea,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·pea.appup</span><span·class="w">256 <a·href="../../lib/sasl-4.2.2/doc/html/appup.html">appup</a>·in·SASL)·for·Pea,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·pea.appup</span><span·class="w">
257 </span><span·class="p"·data-group-id="9324907512-1">{</span><span·class="s">&quot;2.0&quot;</span><span·class="p">,</span><span·class="w">257 </span><span·class="p"·data-group-id="1770800965-1">{</span><span·class="s">&quot;2.0&quot;</span><span·class="p">,</span><span·class="w">
258 ·</span><span·class="p"·data-group-id="9324907512-2">[</span><span·class="p"·data-group-id="9324907512-3">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9324907512-4">[</span><span·class="p"·data-group-id="9324907512-5">{</span><span·class="[·...·truncated·by·diffoscope;·len:·277,·SHA:·81580065342fdff9210de546115b4f6638e6444d247294cb4e9fd2c69d50b417·...·]-2">]</span><span·class="p">,</span><span·class="w">258 ·</span><span·class="p"·data-group-id="1770800965-2">[</span><span·class="p"·data-group-id="1770800965-3">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1770800965-4">[</span><span·class="p"·data-group-id="1770800965-5">{</span><span·class="[·...·truncated·by·diffoscope;·len:·277,·SHA:·5dee814204a5840b0480a94dbddd44abf08d16d09f50dc9f798fb116b725cdd4·...·]-2">]</span><span·class="p">,</span><span·class="w">
259 ·</span><span·class="p"·data-group-id="9324907512-6">[</span><span·class="p"·data-group-id="9324907512-7">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9324907512-8">[</span><span·class="p"·data-group-id="9324907512-9">{</span><span·class="[·...·truncated·by·diffoscope;·len:·330,·SHA:·2da7f164cb9ebefa3ebec98d59fcb9410205cda7a6e126da3ac51804668fa1b8·...·]-1">}</span><span·class="p">.</span></code></pre><p><em>Step·3.</em>·From·the·directory·where·the·file·<code·class="inline">mysystem2.rel</code>·resides,·start·the259 ·</span><span·class="p"·data-group-id="1770800965-6">[</span><span·class="p"·data-group-id="1770800965-7">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1770800965-8">[</span><span·class="p"·data-group-id="1770800965-9">{</span><span·class="[·...·truncated·by·diffoscope;·len:·330,·SHA:·8ed17e8f7dbd424b43b4af357981343ace14b6a3fe6c563179ac6513899e4273·...·]-1">}</span><span·class="p">.</span></code></pre><p><em>Step·3.</em>·From·the·directory·where·the·file·<code·class="inline">mysystem2.rel</code>·resides,·start·the
260 Erlang/OTP·system,·giving·the·path·to·the·new·version·of·Pea:</p><pre><code·class="text">%·erl·-pa·/home/user/target_system/myapps/pea-2.0/ebin</code></pre><p><em>Step·4.</em>·Create·the·release·upgrade·file·(see·<a·href="../../lib/sasl-4.2.2/doc/html/relup.html">relup</a>260 Erlang/OTP·system,·giving·the·path·to·the·new·version·of·Pea:</p><pre><code·class="text">%·erl·-pa·/home/user/target_system/myapps/pea-2.0/ebin</code></pre><p><em>Step·4.</em>·Create·the·release·upgrade·file·(see·<a·href="../../lib/sasl-4.2.2/doc/html/relup.html">relup</a>
261 in·SASL):</p><pre><code·class="text">1&gt;·systools:make_relup(&quot;mysystem2&quot;,[&quot;mysystem&quot;],[&quot;mysystem&quot;],261 in·SASL):</p><pre><code·class="text">1&gt;·systools:make_relup(&quot;mysystem2&quot;,[&quot;mysystem&quot;],[&quot;mysystem&quot;],
262 ····[{path,[&quot;/home/user/target_system/myapps/pea-1.0/ebin&quot;,262 ····[{path,[&quot;/home/user/target_system/myapps/pea-1.0/ebin&quot;,
263 ····&quot;/my/old/erlang/lib/*/ebin&quot;]}]).</code></pre><p>Here·<code·class="inline">&quot;mysystem&quot;</code>·is·the·base·release·and·<code·class="inline">&quot;mysystem2&quot;</code>·is·the·release·to263 ····&quot;/my/old/erlang/lib/*/ebin&quot;]}]).</code></pre><p>Here·<code·class="inline">&quot;mysystem&quot;</code>·is·the·base·release·and·<code·class="inline">&quot;mysystem2&quot;</code>·is·the·release·to
264 upgrade·to.</p><p>The·<code·class="inline">path</code>·option·is·used·for·pointing·out·the·old·version·of·all·applications.264 upgrade·to.</p><p>The·<code·class="inline">path</code>·option·is·used·for·pointing·out·the·old·version·of·all·applications.
265 (The·new·versions·are·already·in·the·code·path·-·assuming·of·course·that·the265 (The·new·versions·are·already·in·the·code·path·-·assuming·of·course·that·the
266 Erlang·node·on·which·this·is·executed·is·running·the·correct·version·of266 Erlang·node·on·which·this·is·executed·is·running·the·correct·version·of
Offset 292, 21 lines modifiedOffset 292, 21 lines modified
292 {continue_after_restart,&quot;FIRST&quot;,[]}292 {continue_after_restart,&quot;FIRST&quot;,[]}
293 heart:·Tue·Apr··1·12:15:10·2014:·Erlang·has·closed.293 heart:·Tue·Apr··1·12:15:10·2014:·Erlang·has·closed.
294 heart:·Tue·Apr··1·12:15:11·2014:·Executed·&quot;/usr/local/erl-target/bin/start·/usr/local/erl-target/releases/new_start_erl.data&quot;·-&gt;·0.·Terminating.294 heart:·Tue·Apr··1·12:15:11·2014:·Executed·&quot;/usr/local/erl-target/bin/start·/usr/local/erl-target/releases/new_start_erl.data&quot;·-&gt;·0.·Terminating.
295 [End]</code></pre><p>The·above·return·value·and·output·after·the·call·to295 [End]</code></pre><p>The·above·return·value·and·output·after·the·call·to
296 <a·href="../../lib/sasl-4.2.2/doc/html/release_handler.html#install_release/1"><code·class="inline">release_handler:install_release/1</code></a>·means·that·the·<code·class="inline">release_handler</code>·has296 <a·href="../../lib/sasl-4.2.2/doc/html/release_handler.html#install_release/1"><code·class="inline">release_handler:install_release/1</code></a>·means·that·the·<code·class="inline">release_handler</code>·has
297 restarted·the·node·by·using·<code·class="inline">heart</code>.·This·is·always·done·when·the·upgrade297 restarted·the·node·by·using·<code·class="inline">heart</code>.·This·is·always·done·when·the·upgrade
298 involves·a·change·of·the·applications·ERTS,·Kernel,·STDLIB,·or·SASL.·For·more298 involves·a·change·of·the·applications·ERTS,·Kernel,·STDLIB,·or·SASL.·For·more
299 information,·see·<a·href="upgrade.html">Upgrade·when·Erlang/OTP·has·Changed</a>.</p><p>The·node·is·accessible·through·a·new·pipe:</p><pre><code·class="text">%·/usr/local/erl-target/bin/to_erl·/tmp/erlang.pipe.2</code></pre><p>List·the·available·releases·in·the·system:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">release_handler</span><span·class="p">:</span><span·class="nf">which_releases</span><span·class="p"·data-group-id="2612849168-1">(</span><span·class="p"·data-group-id="2612849168-1">)</span><span·class="p">.</span><span·class="w">299 information,·see·<a·href="upgrade.html">Upgrade·when·Erlang/OTP·has·Changed</a>.</p><p>The·node·is·accessible·through·a·new·pipe:</p><pre><code·class="text">%·/usr/local/erl-target/bin/to_erl·/tmp/erlang.pipe.2</code></pre><p>List·the·available·releases·in·the·system:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">release_handler</span><span·class="p">:</span><span·class="nf">which_releases</span><span·class="p"·data-group-id="5597569986-1">(</span><span·class="p"·data-group-id="5597569986-1">)</span><span·class="p">.</span><span·class="w">
300 </span><span·class="p"·data-group-id="2612849168-2">[</span><span·class="p"·data-group-id="2612849168-3">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="s">&quot;SECOND&quot;</span><span·class="p">,</span><span·class="w">300 </span><span·class="p"·data-group-id="5597569986-2">[</span><span·class="p"·data-group-id="5597569986-3">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="s">&quot;SECOND&quot;</span><span·class="p">,</span><span·class="w">
301 ··</span><span·class="p"·data-group-id="2612849168-4">[</span><span·class="s">&quot;kernel-3.0&quot;</span><span·class="p">,</span><span·class="s">&quot;stdlib-2.0&quot;</span><span·class="p">,</span><span·class="s">&quot;sasl-2.4&quot;</span><span·class="p">,</span><span·class="s">&quot;pea-2.0[·...·truncated·by·diffoscope;·len:·54,·SHA:·9c1530f0006ef93e9292bc8a031f7d99a7729827b2eb480063506f8bb8dd1878·...·]-4">]</span><span·class="p">,</span><span·class="w">301 ··</span><span·class="p"·data-group-id="5597569986-4">[</span><span·class="s">&quot;kernel-3.0&quot;</span><span·class="p">,</span><span·class="s">&quot;stdlib-2.0&quot;</span><span·class="p">,</span><span·class="s">&quot;sasl-2.4&quot;</span><span·class="p">,</span><span·class="s">&quot;pea-2.0[·...·truncated·by·diffoscope;·len:·54,·SHA:·0c29d5c61d0cb1a515b1db93c013754279955f20167272160ce724eeb2c42098·...·]-4">]</span><span·class="p">,</span><span·class="w">
302 ··</span><span·class="ss">current</span><span·class="p"·data-group-id="2612849168-3">}</span><span·class="p">,</span><span·class="w">302 ··</span><span·class="ss">current</span><span·class="p"·data-group-id="5597569986-3">}</span><span·class="p">,</span><span·class="w">
303 ·</span><span·class="p"·data-group-id="2612849168-5">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRST&quot;</span><span·class="p">,</span><span·class="w">303 ·</span><span·class="p"·data-group-id="5597569986-5">{</span><span·class="s">&quot;MYSYSTEM&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRST&quot;</span><span·class="p">,</span><span·class="w">
304 ··</span><span·class="p"·data-group-id="2612849168-6">[</span><span·class="s">&quot;kernel-2.16.4&quot;</span><span·class="p">,</span><span·class="s">&quot;stdlib-1.19.4&quot;</span><span·class="p">,</span><span·class="s">&quot;sasl-2.3.4&quot;</span><span·class="p">,</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·62,·SHA:·2e9501be228d454cd5430eab5f679c85ade53e7bec495acb75206c09fb8bf9d2·...·]-6">]</span><span·class="p">,</span><span·class="w">304 ··</span><span·class="p"·data-group-id="5597569986-6">[</span><span·class="s">&quot;kernel-2.16.4&quot;</span><span·class="p">,</span><span·class="s">&quot;stdlib-1.19.4&quot;</span><span·class="p">,</span><span·class="s">&quot;sasl-2.3.4&quot;</span><span·class="p">,</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·62,·SHA:·829e358cccb19c926fb96127591b1c161056299eb948ba99bf1e73b7dc8e1fdb·...·]-6">]</span><span·class="p">,</span><span·class="w">
305 ··</span><span·class="ss">permanent</span><span·class="p"·data-group-id="2612849168-5">}</span><span·class="p"·data-group-id="2612849168-2">]</span></code></pre><p>Our·new·release,·&quot;SECOND&quot;,·is·now·the·current·release,·but·we·can·also·see·that305 ··</span><span·class="ss">permanent</span><span·class="p"·data-group-id="5597569986-5">}</span><span·class="p"·data-group-id="5597569986-2">]</span></code></pre><p>Our·new·release,·&quot;SECOND&quot;,·is·now·the·current·release,·but·we·can·also·see·that
306 our·&quot;FIRST&quot;·release·is·still·permanent.·This·means·that·if·the·node·would·be306 our·&quot;FIRST&quot;·release·is·still·permanent.·This·means·that·if·the·node·would·be
307 restarted·now,·it·would·come·up·running·the·&quot;FIRST&quot;·release·again.</p><p><em>Step·3.</em>·Make·the·new·release·permanent:</p><pre><code·class="text">2&gt;·release_handler:make_permanent(&quot;SECOND&quot;).</code></pre><p>Check·the·releases·again:</p><pre><code·class="c">3&gt;·release_handler:which_releases().307 restarted·now,·it·would·come·up·running·the·&quot;FIRST&quot;·release·again.</p><p><em>Step·3.</em>·Make·the·new·release·permanent:</p><pre><code·class="text">2&gt;·release_handler:make_permanent(&quot;SECOND&quot;).</code></pre><p>Check·the·releases·again:</p><pre><code·class="c">3&gt;·release_handler:which_releases().
308 [{&quot;MYSYSTEM&quot;,&quot;SECOND&quot;,308 [{&quot;MYSYSTEM&quot;,&quot;SECOND&quot;,
309 ··[&quot;kernel-3.0&quot;,&quot;stdlib-2.0&quot;,&quot;sasl-2.4&quot;,&quot;pea-2.0&quot;],309 ··[&quot;kernel-3.0&quot;,&quot;stdlib-2.0&quot;,&quot;sasl-2.4&quot;,&quot;pea-2.0&quot;],
310 ··permanent},310 ··permanent},
311 ·{&quot;MYSYSTEM&quot;,&quot;FIRST&quot;,311 ·{&quot;MYSYSTEM&quot;,&quot;FIRST&quot;,
312 ··[&quot;kernel-2.16.4&quot;,&quot;stdlib-1.19.4&quot;,&quot;sasl-2.3.4&quot;,&quot;pea-1.0&quot;],312 ··[&quot;kernel-2.16.4&quot;,&quot;stdlib-1.19.4&quot;,&quot;sasl-2.3.4&quot;,&quot;pea-1.0&quot;],
Offset 315, 268 lines modifiedOffset 315, 268 lines modified
315 ··<a·href="#listing-of-target_system-erl"·class="hover-link">315 ··<a·href="#listing-of-target_system-erl"·class="hover-link">
316 ····<i·class="ri-link-m"·aria-hidden="true"></i>316 ····<i·class="ri-link-m"·aria-hidden="true"></i>
317 ··</a>317 ··</a>
318 ··<span·class="text">Listing·of·target_system.erl</span>318 ··<span·class="text">Listing·of·target_system.erl</span>
319 </h2>319 </h2>
320 <p>This·module·can·also·be·found·in·the·<code·class="inline">examples</code>·directory·of·the·SASL320 <p>This·module·can·also·be·found·in·the·<code·class="inline">examples</code>·directory·of·the·SASL
321 application.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">321 application.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
322 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3008593777-1">(</span><span·class="ss">target_system</span><span·class="p"·data-group-id="3008593777-1">)</span><span·class="p">.</span><span·class="w">322 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6948770716-1">(</span><span·class="ss">target_system</span><span·class="p"·data-group-id="6948770716-1">)</span><span·class="p">.</span><span·class="w">
323 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3008593777-2">(</span><span·class="p"·data-group-id="3008593777-3">[</span><span·class="ss">create</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">create</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·247,·SHA:·248e4bece7ebc9529a4bcd3fc870e8b707c07e8edbd824dbd75a63aae1850761·...·]-2">)</span><span·class="p">.</span><span·class="w">323 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6948770716-2">(</span><span·class="p"·data-group-id="6948770716-3">[</span><span·class="ss">create</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">create</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·247,·SHA:·865f3eb98755edc8a7c29b2ddd0e6713d31d6952946bea3a7930a5d5da7fce04·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
324 </span><span·class="c1">%%·Note:·RelFileName·below·is·the·*stem*·without·trailing·.rel,</span><span·class="w">324 </span><span·class="c1">%%·Note:·RelFileName·below·is·the·*stem*·without·trailing·.rel,</span><span·class="w">
325 </span><span·class="c1">%%·.script·etc.</span><span·class="w">325 </span><span·class="c1">%%·.script·etc.</span><span·class="w">
326 </span><span·class="c1">%%</span><span·class="w">326 </span><span·class="c1">%%</span><span·class="w">
  
327 </span><span·class="c1">%%·create(RelFileName)</span><span·class="w">327 </span><span·class="c1">%%·create(RelFileName)</span><span·class="w">
328 </span><span·class="c1">%%</span><span·class="w">328 </span><span·class="c1">%%</span><span·class="w">
329 </span><span·class="nf">create</span><span·class="p"·data-group-id="3008593777-4">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="3008593777-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">329 </span><span·class="nf">create</span><span·class="p"·data-group-id="6948770716-4">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="6948770716-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
330 ····</span><span·class="nf">create</span><span·class="p"·data-group-id="3008593777-5">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="p"·data-group-id="3008593777-6">[</span><span·class="p"·data-group-id="3008593777-6">]</span><span·class="p"·data-group-id="3008593777-5">)</span><span·class="p">.</span><span·class="w">330 ····</span><span·class="nf">create</span><span·class="p"·data-group-id="6948770716-5">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="p"·data-group-id="6948770716-6">[</span><span·class="p"·data-group-id="6948770716-6">]</span><span·class="p"·data-group-id="6948770716-5">)</span><span·class="p">.</span><span·class="w">
  
331 </span><span·class="nf">create</span><span·class="p"·data-group-id="3008593777-7">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="3008593777-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">331 </span><span·class="nf">create</span><span·class="p"·data-group-id="6948770716-7">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6948770716-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
332 ····</span><span·class="n">RelFile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RelFileName</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;.rel&quot;</span><span·class="p">,</span><span·class="w">332 ····</span><span·class="n">RelFile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RelFileName</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;.rel&quot;</span><span·class="p">,</span><span·class="w">
333 ····</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">dirname</span><span·class="p"·data-group-id="3008593777-8">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="3008593777-8">)</span><span·class="p">,</span><span·class="w">333 ····</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">dirname</span><span·class="p"·data-group-id="6948770716-8">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="6948770716-8">)</span><span·class="p">,</span><span·class="w">
334 ····</span><span·class="n">PlainRelFileName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="3008593777-9">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="s">&quot;plain&quot;</span><span·class="p"·data-group-id="3008593777-9">)</span><span·class="p">,</span><span·class="w">334 ····</span><span·class="n">PlainRelFileName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="6948770716-9">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="s">&quot;plain&quot;</span><span·class="p"·data-group-id="6948770716-9">)</span><span·class="p">,</span><span·class="w">
335 ····</span><span·class="n">PlainRelFile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PlainRelFileName</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;.rel&quot;</span><span·class="p">,</span><span·class="w">335 ····</span><span·class="n">PlainRelFile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PlainRelFileName</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;.rel&quot;</span><span·class="p">,</span><span·class="w">
336 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3008593777-10">(</span><span·class="s">&quot;Reading·file:·~ts·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3008593777-11">[</span><span·class="n">RelFile</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·ab266641fd556c6e4ffa38d086a5909b590bb3e3fe639ce5ed2980b15bc83d78·...·]-10">)</span><span·class="p">,</span><span·class="w">336 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="6948770716-10">(</span><span·class="s">&quot;Reading·file:·~ts·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948770716-11">[</span><span·class="n">RelFile</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·60096d0ff14f1c55a40d6f68caa04ea77f8cbd6f760bbf81ffe6a17bc8869e6e·...·]-10">)</span><span·class="p">,</span><span·class="w">
337 ····</span><span·class="p"·data-group-id="3008593777-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3008593777-13">[</span><span·class="n">RelSpec</span><span·class="p"·data-group-id="3008593777-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·313,·SHA:·85ddae52ec56fc23a9240a11ace61ad9057dc5e42df1da81f0aff27164c8ee25·...·]-14">)</span><span·class="p">,</span><span·class="w">337 ····</span><span·class="p"·data-group-id="6948770716-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948770716-13">[</span><span·class="n">RelSpec</span><span·class="p"·data-group-id="6948770716-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·313,·SHA:·dc5eafe48b57cdaa43cf52578f2532165e59c760d19eb48873e890edf981270c·...·]-14">)</span><span·class="p">,</span><span·class="w">
338 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3008593777-15">(</span><span·class="s">&quot;Creating·file:·~ts·from·~ts·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">338 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="6948770716-15">(</span><span·class="s">&quot;Creating·file:·~ts·from·~ts·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
339 ··············</span><span·class="p"·data-group-id="3008593777-16">[</span><span·class="n">PlainRelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelFile</span><span·class="p"·data-group-id="3008593777-16">]</span><span·class="p"·data-group-id="3008593777-15">)</span><span·class="p">,</span><span·class="w">339 ··············</span><span·class="p"·data-group-id="6948770716-16">[</span><span·class="n">PlainRelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelFile</span><span·class="p"·data-group-id="6948770716-16">]</span><span·class="p"·data-group-id="6948770716-15">)</span><span·class="p">,</span><span·class="w">
340 ····</span><span·class="p"·data-group-id="3008593777-17">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">340 ····</span><span·class="p"·data-group-id="6948770716-17">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
341 ·····</span><span·class="p"·data-group-id="3008593777-18">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelVsn</span><span·class="p"·data-group-id="3008593777-18">}</span><span·class="p">,</span><span·class="w">341 ·····</span><span·class="p"·data-group-id="6948770716-18">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelVsn</span><span·class="p"·data-group-id="6948770716-18">}</span><span·class="p">,</span><span·class="w">
342 ·····</span><span·class="p"·data-group-id="3008593777-19">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErtsVsn</span><span·class="p"·data-group-id="3008593777-19">}</span><span·class="p">,</span><span·class="w">342 ·····</span><span·class="p"·data-group-id="6948770716-19">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErtsVsn</span><span·class="p"·data-group-id="6948770716-19">}</span><span·class="p">,</span><span·class="w">
343 ·····</span><span·class="n">AppVsns</span><span·class="p"·data-group-id="3008593777-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RelSpec</span><span·class="p">,</span><span·class="w">343 ·····</span><span·class="n">AppVsns</span><span·class="p"·data-group-id="6948770716-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RelSpec</span><span·class="p">,</span><span·class="w">
344 ····</span><span·class="n">PlainRelSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3008593777-20">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">344 ····</span><span·class="n">PlainRelSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6948770716-20">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
345 ····················</span><span·class="p"·data-group-id="3008593777-21">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelVsn</span><span·class="p"·data-group-id="3008593777-21">}</span><span·class="p">,</span><span·class="w">345 ····················</span><span·class="p"·data-group-id="6948770716-21">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelVsn</span><span·class="p"·data-group-id="6948770716-21">}</span><span·class="p">,</span><span·class="w">
346 ····················</span><span·class="p"·data-group-id="3008593777-22">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErtsVsn</span><span·class="p"·data-group-id="3008593777-22">}</span><span·class="p">,</span><span·class="w">346 ····················</span><span·class="p"·data-group-id="6948770716-22">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErtsVsn</span><span·class="p"·data-group-id="6948770716-22">}</span><span·class="p">,</span><span·class="w">
347 ····················</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="3008593777-23">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3008593777-24">(</span><span·class="p"·data-group-id="3008593777-25">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·3a73c0ee7a5d97f97d994f9aa6d9a543a38e8a2ed078fedc67d30c7adce46f69·...·]-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">347 ····················</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="6948770716-23">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6948770716-24">(</span><span·class="p"·data-group-id="6948770716-25">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·f307982cb1cba5528ab803a79c202a00df831f1297bc2c47da2baaee42a0790f·...·]-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
348 ·········································</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">348 ·········································</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
349 ····································</span><span·class="p"·data-group-id="3008593777-26">(</span><span·class="p"·data-group-id="3008593777-27">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="3008593777-27">}</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·069190cdd7ae1930243af6474401449c76147a5e38e1079bb82d55b8606f773e·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">349 ····································</span><span·class="p"·data-group-id="6948770716-26">(</span><span·class="p"·data-group-id="6948770716-27">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="6948770716-27">}</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·b4f677122c8a16a9045d7a00cd33c480464a114238574d2910092db82dfa902c·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
350 ·········································</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">350 ·········································</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
351 ····································</span><span·class="p"·data-group-id="3008593777-28">(</span><span·class="p">_</span><span·class="p"·data-group-id="3008593777-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">351 ····································</span><span·class="p"·data-group-id="6948770716-28">(</span><span·class="p">_</span><span·class="p"·data-group-id="6948770716-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
352 ·········································</span><span·class="ss">false</span><span·class="w">352 ·········································</span><span·class="ss">false</span><span·class="w">
353 ·································</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsns</span><span·class="p"·data-group-id="3008593777-23">)</span><span·class="w">353 ·································</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsns</span><span·class="p"·data-group-id="6948770716-23">)</span><span·class="w">
354 ···················</span><span·class="p"·data-group-id="3008593777-20">}</span><span·class="p">,</span><span·class="w">354 ···················</span><span·class="p"·data-group-id="6948770716-20">}</span><span·class="p">,</span><span·class="w">
355 ····</span><span·class="p"·data-group-id="3008593777-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="3008593777-29">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·387,·SHA:·49726d4118dffe1a16b2f14e263fb915eb407bdd7576a5124811eeb79f4bdc1e·...·]-30">)</span><span·class="p">,</span><span·class="w">355 ····</span><span·class="p"·data-group-id="6948770716-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="6948770716-29">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·387,·SHA:·ddacc7c08e406047b6d4dd7211d0658435e6ce25eba9236a1593eeda149dbbf3·...·]-30">)</span><span·class="p">,</span><span·class="w">
356 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3008593777-32">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">.</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·206,·SHA:·4235c9690d1cf519b18118a0d17c6062e36e0652b969f8bba1a940bcc1bfa000·...·]-32">)</span><span·class="p">,</span><span·class="w">356 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="6948770716-32">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">.</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·206,·SHA:·6588b638495b363c24c47993a6232edbc1f39cefbda5f6b2949b7d4abf7ab90e·...·]-32">)</span><span·class="p">,</span><span·class="w">
357 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="3008593777-34">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="3008593777-34">)</span><span·class="p">,</span><span·class="w">357 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="6948770716-34">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="6948770716-34">)</span><span·class="p">,</span><span·class="w">
  
358 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3008593777-35">(</span><span·class="s">&quot;Making·\&quot;~ts.script\&quot;·and·\&quot;~ts.boot\&quot;·files·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">358 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="6948770716-35">(</span><span·class="s">&quot;Making·\&quot;~ts.script\&quot;·and·\&quot;~ts.boot\&quot;·files·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
359 »       ······</span><span·class="p"·data-group-id="3008593777-36">[</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">PlainRelFileName</span><span·class="p"·data-group-id="3008593777-36">]</span><span·class="p"·data-group-id="3008593777-35">)</span><span·class="p">,</span><span·class="w">359 »       ······</span><span·class="p"·data-group-id="6948770716-36">[</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">PlainRelFileName</span><span·class="p"·data-group-id="6948770716-36">]</span><span·class="p"·data-group-id="6948770716-35">)</span><span·class="p">,</span><span·class="w">
360 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="3008593777-37">(</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="3008593777-37">)</span><span·class="p">,</span><span·class="w">360 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="6948770716-37">(</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6948770716-37">)</span><span·class="p">,</span><span·class="w">
  
361 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3008593777-38">(</span><span·class="s">&quot;Making·\&quot;~ts.script\&quot;·and·\&quot;~ts.boot\&quot;·files·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">361 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="6948770716-38">(</span><span·class="s">&quot;Making·\&quot;~ts.script\&quot;·and·\&quot;~ts.boot\&quot;·files·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
362 ··············</span><span·class="p"·data-group-id="3008593777-39">[</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="3008593777-39">]</span><span·class="p"·data-group-id="3008593777-38">)</span><span·class="p">,</span><span·class="w">362 ··············</span><span·class="p"·data-group-id="6948770716-39">[</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="6948770716-39">]</span><span·class="p"·data-group-id="6948770716-38">)</span><span·class="p">,</span><span·class="w">
363 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="3008593777-40">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="3008593777-40">)</span><span·class="p">,</span><span·class="w">363 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="6948770716-40">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6948770716-40">)</span><span·class="p">,</span><span·class="w">
  
364 ····</span><span·class="n">TarFileName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RelFileName</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;.tar.gz&quot;</span><span·class="p">,</span><span·class="w">364 ····</span><span·class="n">TarFileName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RelFileName</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;.tar.gz&quot;</span><span·class="p">,</span><span·class="w">
365 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3008593777-41">(</span><span·class="s">&quot;Creating·tar·file·~ts·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3008593777-42">[</span><span·class="n">TarFil[·...·truncated·by·diffoscope;·len:·107,·SHA:·c6e5243ad69283f4a459a8d828cdec6c546eacc3b3045961d81df57dafc8f19e·...·]-41">)</span><span·class="p">,</span><span·class="w">365 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="6948770716-41">(</span><span·class="s">&quot;Creating·tar·file·~ts·...</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948770716-42">[</span><span·class="n">TarFil[·...·truncated·by·diffoscope;·len:·107,·SHA:·b813e3d6520b7fa1c3e439a0c3ed3da77bed78b4c8cab4baca7fdb2606a6aee1·...·]-41">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 141572/188703 bytes (75.02%) of diff not shown.
77.1 KB
./usr/share/doc/erlang-doc/html/doc/system/data_types.html
    
Offset 192, 18 lines modifiedOffset 192, 18 lines modified
192 ··</a>192 ··</a>
193 ··<span·class="text">Representation·of·Floating·Point·Numbers</span>193 ··<span·class="text">Representation·of·Floating·Point·Numbers</span>
194 </h3>194 </h3>
195 <p>When·working·with·floats·you·may·not·see·what·you·expect·when·printing·or·doing195 <p>When·working·with·floats·you·may·not·see·what·you·expect·when·printing·or·doing
196 arithmetic·operations.·This·is·because·floats·are·represented·by·a·fixed·number196 arithmetic·operations.·This·is·because·floats·are·represented·by·a·fixed·number
197 of·bits·in·a·base-2·system·while·printed·floats·are·represented·with·a·base-10197 of·bits·in·a·base-2·system·while·printed·floats·are·represented·with·a·base-10
198 system.·Erlang·uses·64-bit·floats.·Here·are·examples·of·this·phenomenon:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="mf">0.1</span><span·class="o">+</span><span·class="mf">0.2</span><span·class="p">.</span><span·class="w">198 system.·Erlang·uses·64-bit·floats.·Here·are·examples·of·this·phenomenon:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="mf">0.1</span><span·class="o">+</span><span·class="mf">0.2</span><span·class="p">.</span><span·class="w">
199 </span><span·class="mf">0.30000000000000004</span></code></pre><p>The·real·numbers·<code·class="inline">0.1</code>·and·<code·class="inline">0.2</code>·cannot·be·represented·exactly·as·floats.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="7071242015-1">{</span><span·class="mf">36028797018963968.0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">36028797018963968</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mf">36028797018963968.0</span><span·class="p">,</span><span·class="w">199 </span><span·class="mf">0.30000000000000004</span></code></pre><p>The·real·numbers·<code·class="inline">0.1</code>·and·<code·class="inline">0.2</code>·cannot·be·represented·exactly·as·floats.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="0822587724-1">{</span><span·class="mf">36028797018963968.0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">36028797018963968</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mf">36028797018963968.0</span><span·class="p">,</span><span·class="w">
200 ··</span><span·class="mf">36028797018963970.0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">36028797018963970</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mf">36028797018963970.0</span><span·class="p"·data-group-id="7071242015-1">}</span><span·class="p">.</span><span·class="w">200 ··</span><span·class="mf">36028797018963970.0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">36028797018963970</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mf">36028797018963970.0</span><span·class="p"·data-group-id="0822587724-1">}</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="7071242015-2">{</span><span·class="mf">3.602879701896397e16</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">201 </span><span·class="p"·data-group-id="0822587724-2">{</span><span·class="mf">3.602879701896397e16</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">
202 ·</span><span·class="mf">3.602879701896397e16</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="7071242015-2">}</span><span·class="p">.</span></code></pre><p>The·value·<code·class="inline">36028797018963968</code>·can·be·represented·exactly·as·a·float·value·but202 ·</span><span·class="mf">3.602879701896397e16</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="0822587724-2">}</span><span·class="p">.</span></code></pre><p>The·value·<code·class="inline">36028797018963968</code>·can·be·represented·exactly·as·a·float·value·but
203 Erlang's·pretty·printer·rounds·<code·class="inline">36028797018963968.0</code>·to·<code·class="inline">3.602879701896397e16</code>203 Erlang's·pretty·printer·rounds·<code·class="inline">36028797018963968.0</code>·to·<code·class="inline">3.602879701896397e16</code>
204 (<code·class="inline">=36028797018963970.0</code>)·as·all·values·in·the·range204 (<code·class="inline">=36028797018963970.0</code>)·as·all·values·in·the·range
205 <code·class="inline">[36028797018963966.0,·36028797018963972.0]</code>·are·represented·by205 <code·class="inline">[36028797018963966.0,·36028797018963972.0]</code>·are·represented·by
206 <code·class="inline">36028797018963968.0</code>.</p><p>For·more·information·about·floats·and·issues·with·them·see:</p><ul><li><a·href="https://floating-point-gui.de/">What·Every·Programmer·Should·Know·About·Floating-Point·Arithmetic</a></li><li><a·href="https://0.30000000000000004.com/">0.30000000000000004.com/</a></li><li><a·href="https://docs.python.org/3/tutorial/floatingpoint.html">Floating·Point·Arithmetic:·Issues·and·Limitations</a></li></ul><p>If·you·need·to·work·with·exact·decimal·fractions,·for·instance·to·represent206 <code·class="inline">36028797018963968.0</code>.</p><p>For·more·information·about·floats·and·issues·with·them·see:</p><ul><li><a·href="https://floating-point-gui.de/">What·Every·Programmer·Should·Know·About·Floating-Point·Arithmetic</a></li><li><a·href="https://0.30000000000000004.com/">0.30000000000000004.com/</a></li><li><a·href="https://docs.python.org/3/tutorial/floatingpoint.html">Floating·Point·Arithmetic:·Issues·and·Limitations</a></li></ul><p>If·you·need·to·work·with·exact·decimal·fractions,·for·instance·to·represent
207 money,·it·is·recommended·to·use·a·library·that·handles·that,·or·work·in207 money,·it·is·recommended·to·use·a·library·that·handles·that,·or·work·in
208 cents·instead·of·dollars·or·euros·so·that·decimal·fractions·are·not·needed.</p><p>Also·note·that·Erlang's·floats·do·not·exactly·match·IEEE·754·floats,208 cents·instead·of·dollars·or·euros·so·that·decimal·fractions·are·not·needed.</p><p>Also·note·that·Erlang's·floats·do·not·exactly·match·IEEE·754·floats,
209 in·that·neither·<em>Inf</em>·nor·<em>NaN</em>·are·supported·in·Erlang.·Any209 in·that·neither·<em>Inf</em>·nor·<em>NaN</em>·are·supported·in·Erlang.·Any
Offset 237, 52 lines modifiedOffset 237, 52 lines modified
237 by·eight·are·called·<em>binaries</em>.</p><p><em>Examples:</em></p><pre><code·class="text">1&gt;·&lt;&lt;10,20&gt;&gt;.237 by·eight·are·called·<em>binaries</em>.</p><p><em>Examples:</em></p><pre><code·class="text">1&gt;·&lt;&lt;10,20&gt;&gt;.
238 &lt;&lt;10,20&gt;&gt;238 &lt;&lt;10,20&gt;&gt;
239 2&gt;·&lt;&lt;&quot;ABC&quot;&gt;&gt;.239 2&gt;·&lt;&lt;&quot;ABC&quot;&gt;&gt;.
240 &lt;&lt;&quot;ABC&quot;&gt;&gt;240 &lt;&lt;&quot;ABC&quot;&gt;&gt;
241 3&gt;·&lt;&lt;1:1,0:1&gt;&gt;.241 3&gt;·&lt;&lt;1:1,0:1&gt;&gt;.
242 &lt;&lt;2:2&gt;&gt;</code></pre><p>The·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_bitstring/1"><code·class="inline">is_bitstring/1</code></a>·BIF·tests·whether·a242 &lt;&lt;2:2&gt;&gt;</code></pre><p>The·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_bitstring/1"><code·class="inline">is_bitstring/1</code></a>·BIF·tests·whether·a
243 term·is·a·bit·string,·and·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_binary/1"><code·class="inline">is_binary/1</code></a>243 term·is·a·bit·string,·and·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_binary/1"><code·class="inline">is_binary/1</code></a>
244 BIF·tests·whether·a·term·is·a·binary.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">is_bitstring</span><span·class="p"·data-group-id="0306159103-1">(</span><span·class="p"·data-group-id="0306159103-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="0306159103-2">&gt;&gt;</span><span·class="p"·data-group-id="0306159103-1">)</span><span·class="p">.</span><span·class="w">244 BIF·tests·whether·a·term·is·a·binary.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">is_bitstring</span><span·class="p"·data-group-id="0433947967-1">(</span><span·class="p"·data-group-id="0433947967-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="0433947967-2">&gt;&gt;</span><span·class="p"·data-group-id="0433947967-1">)</span><span·class="p">.</span><span·class="w">
245 </span><span·class="ss">true</span><span·class="gp·unselectable">245 </span><span·class="ss">true</span><span·class="gp·unselectable">
246 2&gt;·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="0306159103-3">(</span><span·class="p"·data-group-id="0306159103-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="0306159103-4">&gt;&gt;</span><span·class="p"·data-group-id="0306159103-3">)</span><span·class="p">.</span><span·class="w">246 2&gt;·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="0433947967-3">(</span><span·class="p"·data-group-id="0433947967-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="0433947967-4">&gt;&gt;</span><span·class="p"·data-group-id="0433947967-3">)</span><span·class="p">.</span><span·class="w">
247 </span><span·class="ss">false</span><span·class="gp·unselectable">247 </span><span·class="ss">false</span><span·class="gp·unselectable">
248 3&gt;·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="0306159103-5">(</span><span·class="p"·data-group-id="0306159103-6">&lt;&lt;</span><span·class="mi">42</span><span·class="p"·data-group-id="0306159103-6">&gt;&gt;</span><span·class="p"·data-group-id="0306159103-5">)</span><span·class="p">.</span><span·class="w">248 3&gt;·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="0433947967-5">(</span><span·class="p"·data-group-id="0433947967-6">&lt;&lt;</span><span·class="mi">42</span><span·class="p"·data-group-id="0433947967-6">&gt;&gt;</span><span·class="p"·data-group-id="0433947967-5">)</span><span·class="p">.</span><span·class="w">
249 </span><span·class="ss">true</span><span·class="w">249 </span><span·class="ss">true</span><span·class="w">
250 </span></code></pre><p>For·more·examples,·see·<a·href="../../doc/system/bit_syntax.html">Programming·Examples</a>.</p><h2·id="reference"·class="section-heading">250 </span></code></pre><p>For·more·examples,·see·<a·href="../../doc/system/bit_syntax.html">Programming·Examples</a>.</p><h2·id="reference"·class="section-heading">
251 ··<a·href="#reference"·class="hover-link">251 ··<a·href="#reference"·class="hover-link">
252 ····<i·class="ri-link-m"·aria-hidden="true"></i>252 ····<i·class="ri-link-m"·aria-hidden="true"></i>
253 ··</a>253 ··</a>
254 ··<span·class="text">Reference</span>254 ··<span·class="text">Reference</span>
255 </h2>255 </h2>
256 <p>A·term·that·is·<a·href="../../doc/system/system_limits.html#unique_references">unique</a>256 <p>A·term·that·is·<a·href="../../doc/system/system_limits.html#unique_references">unique</a>
257 among·connected·nodes.·A·reference·is·created·by·calling·the257 among·connected·nodes.·A·reference·is·created·by·calling·the
258 <a·href="../../erts-15.2.2/doc/html/erlang.html#make_ref/0"><code·class="inline">make_ref/0</code></a>·BIF.·The258 <a·href="../../erts-15.2.2/doc/html/erlang.html#make_ref/0"><code·class="inline">make_ref/0</code></a>·BIF.·The
259 <a·href="../../erts-15.2.2/doc/html/erlang.html#is_reference/1"><code·class="inline">is_reference/1</code></a>·BIF·tests·whether·a·term259 <a·href="../../erts-15.2.2/doc/html/erlang.html#is_reference/1"><code·class="inline">is_reference/1</code></a>·BIF·tests·whether·a·term
260 is·a·reference.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·data-group-id="0267809258-1">(</span><span·class="p"·data-group-id="0267809258-1">)</span><span·class="p">.</span><span·class="w">260 is·a·reference.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·data-group-id="9774756916-1">(</span><span·class="p"·data-group-id="9774756916-1">)</span><span·class="p">.</span><span·class="w">
261 </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.76482849</span><span·class="p">.</span><span·class="mf">3801088007.198204</span><span·class="o">&gt;</span><span·class="gp·unselectable">261 </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.76482849</span><span·class="p">.</span><span·class="mf">3801088007.198204</span><span·class="o">&gt;</span><span·class="gp·unselectable">
262 2&gt;·</span><span·class="nf">is_reference</span><span·class="p"·data-group-id="0267809258-2">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="0267809258-2">)</span><span·class="p">.</span><span·class="w">262 2&gt;·</span><span·class="nf">is_reference</span><span·class="p"·data-group-id="9774756916-2">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="9774756916-2">)</span><span·class="p">.</span><span·class="w">
263 </span><span·class="ss">true</span></code></pre><h2·id="fun"·class="section-heading">263 </span><span·class="ss">true</span></code></pre><h2·id="fun"·class="section-heading">
264 ··<a·href="#fun"·class="hover-link">264 ··<a·href="#fun"·class="hover-link">
265 ····<i·class="ri-link-m"·aria-hidden="true"></i>265 ····<i·class="ri-link-m"·aria-hidden="true"></i>
266 ··</a>266 ··</a>
267 ··<span·class="text">Fun</span>267 ··<span·class="text">Fun</span>
268 </h2>268 </h2>
269 <p>A·fun·is·a·functional·object.·Funs·make·it·possible·to·create·an·anonymous269 <p>A·fun·is·a·functional·object.·Funs·make·it·possible·to·create·an·anonymous
270 function·and·pass·the·function·itself··not·its·name··as·argument·to·other270 function·and·pass·the·function·itself··not·its·name··as·argument·to·other
271 functions.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Fun1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8454560038-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="8454560038-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">271 functions.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Fun1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8140503079-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="8140503079-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
272 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">6.39074546</span><span·class="o">&gt;</span><span·class="gp·unselectable">272 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">6.39074546</span><span·class="o">&gt;</span><span·class="gp·unselectable">
273 2&gt;·</span><span·class="n">Fun1</span><span·class="p"·data-group-id="8454560038-2">(</span><span·class="mi">2</span><span·class="p"·data-group-id="8454560038-2">)</span><span·class="p">.</span><span·class="w">273 2&gt;·</span><span·class="n">Fun1</span><span·class="p"·data-group-id="8140503079-2">(</span><span·class="mi">2</span><span·class="p"·data-group-id="8140503079-2">)</span><span·class="p">.</span><span·class="w">
274 </span><span·class="mi">3</span></code></pre><p>The·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·and·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_function/2"><code·class="inline">is_function/2</code></a>274 </span><span·class="mi">3</span></code></pre><p>The·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·and·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_function/2"><code·class="inline">is_function/2</code></a>
275 BIFs·tests·whether·a·term·is·a·fun.</p><p><em>Examples</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4585275485-1">(</span><span·class="p"·data-group-id="4585275485-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">275 BIFs·tests·whether·a·term·is·a·fun.</p><p><em>Examples</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6610580256-1">(</span><span·class="p"·data-group-id="6610580256-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
276 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">43.105768164</span><span·class="o">&gt;</span><span·class="gp·unselectable">276 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">43.105768164</span><span·class="o">&gt;</span><span·class="gp·unselectable">
277 2&gt;·</span><span·class="nf">is_function</span><span·class="p"·data-group-id="4585275485-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="4585275485-2">)</span><span·class="p">.</span><span·class="w">277 2&gt;·</span><span·class="nf">is_function</span><span·class="p"·data-group-id="6610580256-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="6610580256-2">)</span><span·class="p">.</span><span·class="w">
278 </span><span·class="ss">true</span><span·class="gp·unselectable">278 </span><span·class="ss">true</span><span·class="gp·unselectable">
279 3&gt;·</span><span·class="nf">is_function</span><span·class="p"·data-group-id="4585275485-3">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="4585275485-3">)</span><span·class="p">.</span><span·class="w">279 3&gt;·</span><span·class="nf">is_function</span><span·class="p"·data-group-id="6610580256-3">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="6610580256-3">)</span><span·class="p">.</span><span·class="w">
280 </span><span·class="ss">true</span><span·class="gp·unselectable">280 </span><span·class="ss">true</span><span·class="gp·unselectable">
281 4&gt;·</span><span·class="nf">is_function</span><span·class="p"·data-group-id="4585275485-4">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4585275485-4">)</span><span·class="p">.</span><span·class="w">281 4&gt;·</span><span·class="nf">is_function</span><span·class="p"·data-group-id="6610580256-4">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="6610580256-4">)</span><span·class="p">.</span><span·class="w">
282 </span><span·class="ss">false</span></code></pre><p>Read·more·about·funs·in·<a·href="expressions.html#fun-expressions">Fun·Expressions</a>.·For·more282 </span><span·class="ss">false</span></code></pre><p>Read·more·about·funs·in·<a·href="expressions.html#fun-expressions">Fun·Expressions</a>.·For·more
283 examples,·see·<a·href="../../doc/system/funs.html">Programming·Examples</a>.</p><h2·id="port-identifier"·class="section-heading">283 examples,·see·<a·href="../../doc/system/funs.html">Programming·Examples</a>.</p><h2·id="port-identifier"·class="section-heading">
284 ··<a·href="#port-identifier"·class="hover-link">284 ··<a·href="#port-identifier"·class="hover-link">
285 ····<i·class="ri-link-m"·aria-hidden="true"></i>285 ····<i·class="ri-link-m"·aria-hidden="true"></i>
286 ··</a>286 ··</a>
287 ··<span·class="text">Port·Identifier</span>287 ··<span·class="text">Port·Identifier</span>
288 </h2>288 </h2>
Offset 300, 94 lines modifiedOffset 300, 94 lines modified
300 for·a·new·process·after·a·while.</p><p>The·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·returns·the·Pid·of·the·calling·process.·When300 for·a·new·process·after·a·while.</p><p>The·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·returns·the·Pid·of·the·calling·process.·When
301 <a·href="ref_man_processes.html#process-creation">creating·a·new·process</a>,·the·parent301 <a·href="ref_man_processes.html#process-creation">creating·a·new·process</a>,·the·parent
302 process·will·be·able·to·get·the·Pid·of·the·child·process·either·via·the·return302 process·will·be·able·to·get·the·Pid·of·the·child·process·either·via·the·return
303 value,·as·is·the·case·when·calling·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/3"><code·class="inline">spawn/3</code></a>·BIF,·or·via303 value,·as·is·the·case·when·calling·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/3"><code·class="inline">spawn/3</code></a>·BIF,·or·via
304 a·message,·which·is·the·case·when·calling·the304 a·message,·which·is·the·case·when·calling·the
305 <a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_request/5"><code·class="inline">spawn_request/5</code></a>·BIF.·A·Pid·is·typically·used·when305 <a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_request/5"><code·class="inline">spawn_request/5</code></a>·BIF.·A·Pid·is·typically·used·when
306 when·sending·a·process·a·<a·href="ref_man_processes.html#signals">signal</a>.·The306 when·sending·a·process·a·<a·href="ref_man_processes.html#signals">signal</a>.·The
307 <a·href="../../erts-15.2.2/doc/html/erlang.html#is_pid/1"><code·class="inline">is_pid/1</code></a>·BIF·tests·whether·a·term·is·a·Pid.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9196989487-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9196989487-1">)</span><span·class="p">.</span><span·class="w">307 <a·href="../../erts-15.2.2/doc/html/erlang.html#is_pid/1"><code·class="inline">is_pid/1</code></a>·BIF·tests·whether·a·term·is·a·Pid.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4184920192-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="4184920192-1">)</span><span·class="p">.</span><span·class="w">
308 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9196989487-2">(</span><span·class="p"·data-group-id="9196989487-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9196989487-3">]</span><span·class="p"·data-group-id="9196989487-2">)</span><span·class="p">.</span><span·class="w">308 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4184920192-2">(</span><span·class="p"·data-group-id="4184920192-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4184920192-3">]</span><span·class="p"·data-group-id="4184920192-2">)</span><span·class="p">.</span><span·class="w">
  
309 </span><span·class="nf">loop</span><span·class="p"·data-group-id="9196989487-4">(</span><span·class="p"·data-group-id="9196989487-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">309 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4184920192-4">(</span><span·class="p"·data-group-id="4184920192-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
310 ····</span><span·class="k">receive</span><span·class="w">310 ····</span><span·class="k">receive</span><span·class="w">
311 ········</span><span·class="ss">who_are_you</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">311 ········</span><span·class="ss">who_are_you</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
312 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9196989487-5">(</span><span·class="s">&quot;I·am·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9196989487-6">[</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·210,·SHA:·e2c644dc8aef13e985bd762ab8a7666951a19be093c4744bdd9b883ab57999ef·...·]-5">)</span><span·class="p">,</span><span·class="w">312 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4184920192-5">(</span><span·class="s">&quot;I·am·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4184920192-6">[</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·210,·SHA:·ee685bcbae925659bc6ea8b2486beb2a23bde7a1c29b146a7b79880cda32bd0e·...·]-5">)</span><span·class="p">,</span><span·class="w">
313 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="9196989487-8">(</span><span·class="p"·data-group-id="9196989487-8">)</span><span·class="w">313 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="4184920192-8">(</span><span·class="p"·data-group-id="4184920192-8">)</span><span·class="w">
314 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">314 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
315 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9196989487-9">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9196989487-10">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·64,·SHA:·40e4ffe74c38e81d93450fdbbf2d68d80cbd559d3c51e32452cda6acf895b45e·...·]-9">)</span><span·class="p">.</span><span·class="w">315 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4184920192-9">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4184920192-10">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·64,·SHA:·37893eaf30ffdd6c51772d992f55cb20a0673225051490555e53d8c86b8097e6·...·]-9">)</span><span·class="p">.</span><span·class="w">
316 </span><span·class="o">&lt;</span><span·class="mf">0.58</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">316 </span><span·class="o">&lt;</span><span·class="mf">0.58</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
317 2&gt;·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">who_are_you</span><span·class="p">.</span><span·class="w">317 2&gt;·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">who_are_you</span><span·class="p">.</span><span·class="w">
318 </span><span·class="n">I</span><span·class="w">·</span><span·class="ss">am</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.58</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">318 </span><span·class="n">I</span><span·class="w">·</span><span·class="ss">am</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.58</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
319 </span><span·class="ss">who_are_you</span></code></pre><p>Read·more·about·processes·in·<a·href="ref_man_processes.html">Processes</a>.</p><h2·id="tuple"·class="section-heading">319 </span><span·class="ss">who_are_you</span></code></pre><p>Read·more·about·processes·in·<a·href="ref_man_processes.html">Processes</a>.</p><h2·id="tuple"·class="section-heading">
320 ··<a·href="#tuple"·class="hover-link">320 ··<a·href="#tuple"·class="hover-link">
321 ····<i·class="ri-link-m"·aria-hidden="true"></i>321 ····<i·class="ri-link-m"·aria-hidden="true"></i>
322 ··</a>322 ··</a>
323 ··<span·class="text">Tuple</span>323 ··<span·class="text">Tuple</span>
324 </h2>324 </h2>
325 <p>A·tuple·is·a·compound·data·type·with·a·fixed·number·of·terms:</p><pre><code·class="text">{Term1,...,TermN}</code></pre><p>Each·term·<code·class="inline">Term</code>·in·the·tuple·is·called·an·<em>element</em>.·The·number·of·elements·is325 <p>A·tuple·is·a·compound·data·type·with·a·fixed·number·of·terms:</p><pre><code·class="text">{Term1,...,TermN}</code></pre><p>Each·term·<code·class="inline">Term</code>·in·the·tuple·is·called·an·<em>element</em>.·The·number·of·elements·is
326 said·to·be·the·<em>size</em>·of·the·tuple.</p><p>There·exists·a·number·of·BIFs·to·manipulate·tuples.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6965434775-1">{</span><span·class="ss">adam</span><span·class="p">,</span><span·class="mi">24</span><span·class="p">,</span><span·class="p"·data-group-id="6965434775-2">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·cde6c0cdabc5487ee3aff89d0771458ee6e3059fdd13de13280576f3ac6b6ae9·...·]-1">}</span><span·class="p">.</span><span·class="w">326 said·to·be·the·<em>size</em>·of·the·tuple.</p><p>There·exists·a·number·of·BIFs·to·manipulate·tuples.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6056038440-1">{</span><span·class="ss">adam</span><span·class="p">,</span><span·class="mi">24</span><span·class="p">,</span><span·class="p"·data-group-id="6056038440-2">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·f1f48f968cb079fcbbd9fcd055d1ede416dc3142a78bf09f8623d5f8d059daf7·...·]-1">}</span><span·class="p">.</span><span·class="w">
327 </span><span·class="p"·data-group-id="6965434775-3">{</span><span·class="ss">adam</span><span·class="p">,</span><span·class="mi">24</span><span·class="p">,</span><span·class="p"·data-group-id="6965434775-4">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·85a4bae0dbc6c1be898510d544c30d20bc491c7f0328a65b4857ef7a798c0e78·...·]-3">}</span><span·class="gp·unselectable">327 </span><span·class="p"·data-group-id="6056038440-3">{</span><span·class="ss">adam</span><span·class="p">,</span><span·class="mi">24</span><span·class="p">,</span><span·class="p"·data-group-id="6056038440-4">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·3f99e3684b9b595a18516829f0589915dc8b64b7b62987d274e48ad2e16a07ad·...·]-3">}</span><span·class="gp·unselectable">
328 2&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="6965434775-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="6965434775-5">)</span><span·class="p">.</span><span·class="w">328 2&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="6056038440-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="6056038440-5">)</span><span·class="p">.</span><span·class="w">
329 </span><span·class="ss">adam</span><span·class="gp·unselectable">329 </span><span·class="ss">adam</span><span·class="gp·unselectable">
330 3&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="6965434775-6">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="6965434775-6">)</span><span·class="p">.</span><span·class="w">330 3&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="6056038440-6">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="6056038440-6">)</span><span·class="p">.</span><span·class="w">
331 </span><span·class="p"·data-group-id="6965434775-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="6965434775-7">}</span><span·class="gp·unselectable">331 </span><span·class="p"·data-group-id="6056038440-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="6056038440-7">}</span><span·class="gp·unselectable">
332 4&gt;·</span><span·class="n">P2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">setelement</span><span·class="p"·data-group-id="6965434775-8">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="mi">25</span><span·class="p"·data-group-id="6965434775-8">)</span><span·class="p">.</span><span·class="w">332 4&gt;·</span><span·class="n">P2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">setelement</span><span·class="p"·data-group-id="6056038440-8">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="mi">25</span><span·class="p"·data-group-id="6056038440-8">)</span><span·class="p">.</span><span·class="w">
333 </span><span·class="p"·data-group-id="6965434775-9">{</span><span·class="ss">adam</span><span·class="p">,</span><span·class="mi">25</span><span·class="p">,</span><span·class="p"·data-group-id="6965434775-10">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·4a84fe2e04dec760a06a9f7769f7ba5c49d18ee789aaa1cf7e99026e3b79c974·...·]-9">}</span><span·class="gp·unselectable">333 </span><span·class="p"·data-group-id="6056038440-9">{</span><span·class="ss">adam</span><span·class="p">,</span><span·class="mi">25</span><span·class="p">,</span><span·class="p"·data-group-id="6056038440-10">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·b438120c95c4f4184d6f82c9d1f889c605489dd8746a818fbea73765e938f75b·...·]-9">}</span><span·class="gp·unselectable">
334 5&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="6965434775-11">(</span><span·class="n">P</span><span·class="p"·data-group-id="6965434775-11">)</span><span·class="p">.</span><span·class="w">334 5&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="6056038440-11">(</span><span·class="n">P</span><span·class="p"·data-group-id="6056038440-11">)</span><span·class="p">.</span><span·class="w">
335 </span><span·class="mi">3</span><span·class="gp·unselectable">335 </span><span·class="mi">3</span><span·class="gp·unselectable">
336 6&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="6965434775-12">(</span><span·class="p"·data-group-id="6965434775-13">{</span><span·class="p"·data-group-id="6965434775-13">}</span><span·class="p"·data-group-id="6965434775-12">)</span><span·class="p">.</span><span·class="w">336 6&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="6056038440-12">(</span><span·class="p"·data-group-id="6056038440-13">{</span><span·class="p"·data-group-id="6056038440-13">}</span><span·class="p"·data-group-id="6056038440-12">)</span><span·class="p">.</span><span·class="w">
337 </span><span·class="mi">0</span><span·class="gp·unselectable">337 </span><span·class="mi">0</span><span·class="gp·unselectable">
338 7&gt;·</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="6965434775-14">(</span><span·class="p"·data-group-id="6965434775-15">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="6965434775-15">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·cbc3ae8cf6743126aeb1cc51dd783b24fc36dec42b87087532353c084abdb58b·...·]-14">)</span><span·class="p">.</span><span·class="w">338 7&gt;·</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="6056038440-14">(</span><span·class="p"·data-group-id="6056038440-15">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="6056038440-15">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·57968f62216696ec9f62a74f92580f247b3c10ee79b8aeb18889c43a53ccf4b2·...·]-14">)</span><span·class="p">.</span><span·class="w">
339 </span><span·class="ss">true</span></code></pre><h2·id="map"·class="section-heading">339 </span><span·class="ss">true</span></code></pre><h2·id="map"·class="section-heading">
340 ··<a·href="#map"·class="hover-link">340 ··<a·href="#map"·class="hover-link">
341 ····<i·class="ri-link-m"·aria-hidden="true"></i>341 ····<i·class="ri-link-m"·aria-hidden="true"></i>
342 ··</a>342 ··</a>
343 ··<span·class="text">Map</span>343 ··<span·class="text">Map</span>
344 </h2>344 </h2>
345 <p>A·map·is·a·compound·data·type·with·a·variable·number·of·key-value·associations:</p><pre><code·class="text">#{Key1·=&gt;·Value1,·...,·KeyN·=&gt;·ValueN}</code></pre><p>Each·key-value·association·in·the·map·is·called·an·<em>association·pair</em>.·The·key345 <p>A·map·is·a·compound·data·type·with·a·variable·number·of·key-value·associations:</p><pre><code·class="text">#{Key1·=&gt;·Value1,·...,·KeyN·=&gt;·ValueN}</code></pre><p>Each·key-value·association·in·the·map·is·called·an·<em>association·pair</em>.·The·key
346 and·value·parts·of·the·pair·are·called·<em>elements</em>.·The·number·of·association346 and·value·parts·of·the·pair·are·called·<em>elements</em>.·The·number·of·association
347 pairs·is·said·to·be·the·<em>size</em>·of·the·map.</p><p>There·exists·a·number·of·BIFs·to·manipulate·maps.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">M1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9738030598-1">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">adam</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·452,·SHA:·09a0e29fc49eefb99a4258efd01d750c2f8976df5a96658b4b96312da3a9b279·...·]-1">}</span><span·class="p">.</span><span·class="w">347 pairs·is·said·to·be·the·<em>size</em>·of·the·map.</p><p>There·exists·a·number·of·BIFs·to·manipulate·maps.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">M1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9646756610-1">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">adam</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·452,·SHA:·132e78d5146eb76d14441970e24bbdcef0ca15cbf1854f57cd1bb639e21ebf96·...·]-1">}</span><span·class="p">.</span><span·class="w">
348 </span><span·class="p"·data-group-id="9738030598-3">#{</span><span·class="ss">age</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">24</span><span·class="p">,</span><span·class="ss">date</span><span·class="w">·</span><span·class="p">=&gt;</span><[·...·truncated·by·diffoscope;·len:·404,·SHA:·97d8195915d3475339cfcfe0fe7366b1b990d80c9a092a69143a02cb502dd07f·...·]-3">}</span><span·class="gp·unselectable">348 </span><span·class="p"·data-group-id="9646756610-3">#{</span><span·class="ss">age</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">24</span><span·class="p">,</span><span·class="ss">date</span><span·class="w">·</span><span·class="p">=&gt;</span><[·...·truncated·by·diffoscope;·len:·404,·SHA:·f552a5f7587f10cccdd00a676dae741ca4da3c3de4187eec6d9621288b47a162·...·]-3">}</span><span·class="gp·unselectable">
349 2&gt;·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="9738030598-5">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M1</span><span·class="p"·data-group-id="9738030598-5">)</span><span·class="p">.</span><span·class="w">349 2&gt;·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="9646756610-5">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M1</span><span·class="p"·data-group-id="9646756610-5">)</span><span·class="p">.</span><span·class="w">
350 </span><span·class="ss">adam</span><span·class="gp·unselectable">350 </span><span·class="ss">adam</span><span·class="gp·unselectable">
351 3&gt;·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="9738030598-6">(</span><span·class="ss">date</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M1</span><span·class="p"·data-group-id="9738030598-6">)</span><span·class="p">.</span><span·class="w">351 3&gt;·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="9646756610-6">(</span><span·class="ss">date</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M1</span><span·class="p"·data-group-id="9646756610-6">)</span><span·class="p">.</span><span·class="w">
352 </span><span·class="p"·data-group-id="9738030598-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="9738030598-7">}</span><span·class="gp·unselectable">352 </span><span·class="p"·data-group-id="9646756610-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="9646756610-7">}</span><span·class="gp·unselectable">
Max diff block lines reached; 38248/78824 bytes (48.52%) of diff not shown.
58.4 KB
./usr/share/doc/erlang-doc/html/doc/system/design_principles.html
    
Offset 152, 135 lines modifiedOffset 152, 135 lines modified
152 the·code·for·a·process·in·a·generic·part·(a·behaviour·module)·and·a·specific152 the·code·for·a·process·in·a·generic·part·(a·behaviour·module)·and·a·specific
153 part·(a·<em>callback·module</em>).</p><p>The·behaviour·module·is·part·of·Erlang/OTP.·To·implement·a·process·such·as·a153 part·(a·<em>callback·module</em>).</p><p>The·behaviour·module·is·part·of·Erlang/OTP.·To·implement·a·process·such·as·a
154 supervisor,·the·user·only·needs·to·implement·the·callback·module,·which·is·to154 supervisor,·the·user·only·needs·to·implement·the·callback·module,·which·is·to
155 export·a·pre-defined·set·of·functions,·the·<em>callback·functions</em>.</p><p>The·following·example·illustrate·how·code·can·be·divided·into·a·generic·and·a155 export·a·pre-defined·set·of·functions,·the·<em>callback·functions</em>.</p><p>The·following·example·illustrate·how·code·can·be·divided·into·a·generic·and·a
156 specific·part.·Consider·the·following·code·(written·in·plain·Erlang)·for·a156 specific·part.·Consider·the·following·code·(written·in·plain·Erlang)·for·a
157 simple·server,·which·keeps·track·of·a·number·of·&quot;channels&quot;.·Other·processes·can157 simple·server,·which·keeps·track·of·a·number·of·&quot;channels&quot;.·Other·processes·can
158 allocate·and·free·the·channels·by·calling·the·functions·<code·class="inline">alloc/0</code>·and·<code·class="inline">free/1</code>,158 allocate·and·free·the·channels·by·calling·the·functions·<code·class="inline">alloc/0</code>·and·<code·class="inline">free/1</code>,
159 respectively.</p><p><a·href=""·id="ch1"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8339308237-1">(</span><span·class="ss">ch1</span><span·class="p"·data-group-id="8339308237-1">)</span><span·class="p">.</span><span·class="w"> 
160 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8339308237-2">(</span><span·class="p"·data-group-id="8339308237-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class[·...·truncated·by·diffoscope;·len:·85,·SHA:·8750d41c56a8a17e1fd2bc9d9e4f95dea7a0aca921f74cfdb06f8779332807fc·...·]">)</span><span·class="p">.</span><span·class="w">159 respectively.</p><p><a·href=""·id="ch1"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1782258024-1">(</span><span·class="ss">ch1</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·17,·SHA:·79c09630a300bb84243168d969cd8f0891213661a7f863214c456de6ccea449b·...·]">)</span><span·class="p">.</span><span·class="w">
 160 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1782258024-2">(</span><span·class="p"·data-group-id="1782258024-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1782258024-3">]</span><span·class="p"·data-group-id="1782258024-2">)</span><span·class="p">.</span><span·class="w">
161 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8339308237-4">(</span><span·class="p"·data-group-id="8339308237-5">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·a097c8923fd7d30eb6a15e50cf44d5b7b90462ef4403cb0bbc88901825e4f1dd·...·]-4">)</span><span·class="p">.</span><span·class="w">161 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1782258024-4">(</span><span·class="p"·data-group-id="1782258024-5">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·023c8055d87e663cdb90d410d4a80869e10dc4f5cc433af14f253c3c6de96d82·...·]-4">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8339308237-6">(</span><span·class="p"·data-group-id="8339308237-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8339308237-7">]</span><span·class="p"·data-group-id="8339308237-6">)</span><span·class="p">.</span><span·class="w">162 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1782258024-6">(</span><span·class="p"·data-group-id="1782258024-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1782258024-7">]</span><span·class="p"·data-group-id="1782258024-6">)</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">start</span><span·class="p"·data-group-id="8339308237-8">(</span><span·class="p"·data-group-id="8339308237-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">163 </span><span·class="nf">start</span><span·class="p"·data-group-id="1782258024-8">(</span><span·class="p"·data-group-id="1782258024-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
164 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8339308237-9">(</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8339308237-10">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·ea239c25ff139209cb17d621e8bd4341803c71262c26a12138ebf7d30e23f40e·...·]-9">)</span><span·class="p">.</span><span·class="w">164 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1782258024-9">(</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1782258024-10">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·cb847d60220d369184ab607dd87b44b45eea1679cd2808164853ba7e9531c693·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8339308237-11">(</span><span·class="p"·data-group-id="8339308237-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">165 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="1782258024-11">(</span><span·class="p"·data-group-id="1782258024-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</span><span·class="ss">ch1</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8339308237-12">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8339308237-13">(</span><span·class="p"·data-group-id="8339308237-13">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·8d0987260ef6b88d07f4ff988eb4626485b30985cbdef0eedaa9ad72605f7576·...·]-12">}</span><span·class="p">,</span><span·class="w">166 ····</span><span·class="ss">ch1</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1782258024-12">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1782258024-13">(</span><span·class="p"·data-group-id="1782258024-13">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d3e852db1cb673857f8628d6b38eecc1886fede61ed7ffdd7b6ba1cff42bb852·...·]-12">}</span><span·class="p">,</span><span·class="w">
167 ····</span><span·class="k">receive</span><span·class="w">167 ····</span><span·class="k">receive</span><span·class="w">
168 ········</span><span·class="p"·data-group-id="8339308237-14">{</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="8339308237-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 ········</span><span·class="p"·data-group-id="1782258024-14">{</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="1782258024-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
169 ············</span><span·class="n">Res</span><span·class="w">169 ············</span><span·class="n">Res</span><span·class="w">
170 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">170 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
171 </span><span·class="nf">free</span><span·class="p"·data-group-id="8339308237-15">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="8339308237-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 </span><span·class="nf">free</span><span·class="p"·data-group-id="1782258024-15">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="1782258024-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="ss">ch1</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8339308237-16">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="8339308237-16">}</span><span·class="p">,</span><span·class="w">172 ····</span><span·class="ss">ch1</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1782258024-16">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="1782258024-16">}</span><span·class="p">,</span><span·class="w">
173 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">173 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">init</span><span·class="p"·data-group-id="8339308237-17">(</span><span·class="p"·data-group-id="8339308237-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 </span><span·class="nf">init</span><span·class="p"·data-group-id="1782258024-17">(</span><span·class="p"·data-group-id="1782258024-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="8339308237-18">(</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="8339308237-19">(</span><span·class="p"·data-group-id="8339308237-19">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·1b3e4abc7ab7da7aff39a09261a5e337cd8f25de62f8abfe4cd8eeeb327947d9·...·]-18">)</span><span·class="p">,</span><span·class="w">175 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="1782258024-18">(</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="1782258024-19">(</span><span·class="p"·data-group-id="1782258024-19">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·8585a49ba18b1a2987f14e17e9c63761424e6b0e916768edc5877ae9163f9c46·...·]-18">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="n">Chs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="8339308237-20">(</span><span·class="p"·data-group-id="8339308237-20">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="n">Chs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="1782258024-20">(</span><span·class="p"·data-group-id="1782258024-20">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8339308237-21">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="8339308237-21">)</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1782258024-21">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="1782258024-21">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">loop</span><span·class="p"·data-group-id="8339308237-22">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="8339308237-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 </span><span·class="nf">loop</span><span·class="p"·data-group-id="1782258024-22">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="1782258024-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="k">receive</span><span·class="w">179 ····</span><span·class="k">receive</span><span·class="w">
180 ········</span><span·class="p"·data-group-id="8339308237-23">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="8339308237-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 ········</span><span·class="p"·data-group-id="1782258024-23">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="1782258024-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ············</span><span·class="p"·data-group-id="8339308237-24">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="8339308237-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·5e0b4dc668bd36a9581a2b910224baf22ba73a6cb3630db71205c702ba7d691a·...·]-25">)</span><span·class="p">,</span><span·class="w">181 ············</span><span·class="p"·data-group-id="1782258024-24">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="1782258024-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·354ec5b6b0bfe87242101df612e276ab283a84e4664b288056f5c821c44e7c77·...·]-25">)</span><span·class="p">,</span><span·class="w">
182 ············</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8339308237-26">{</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="8339308237-26">}</span><span·class="p">,</span><span·class="w">182 ············</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1782258024-26">{</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="1782258024-26">}</span><span·class="p">,</span><span·class="w">
183 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8339308237-27">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="8339308237-27">)</span><span·class="p">;</span><span·class="w">183 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1782258024-27">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="1782258024-27">)</span><span·class="p">;</span><span·class="w">
184 ········</span><span·class="p"·data-group-id="8339308237-28">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="8339308237-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 ········</span><span·class="p"·data-group-id="1782258024-28">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="1782258024-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ············</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="8339308237-29">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="8339308237-29">)</span><span·class="p">,</span><span·class="w">185 ············</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="1782258024-29">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="1782258024-29">)</span><span·class="p">,</span><span·class="w">
186 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8339308237-30">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="8339308237-30">)</span><span·class="w">186 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1782258024-30">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="1782258024-30">)</span><span·class="w">
187 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·code·for·the·server·can·be·rewritten·into·a·generic·part·<code·class="inline">server.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9231933688-1">(</span><span·class="ss">server</span><span·class="p"·data-group-id="9231933688-1">)</span><span·class="p">.</span><span·class="w">187 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·code·for·the·server·can·be·rewritten·into·a·generic·part·<code·class="inline">server.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1806130409-1">(</span><span·class="ss">server</span><span·class="p"·data-group-id="1806130409-1">)</span><span·class="p">.</span><span·class="w">
188 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9231933688-2">(</span><span·class="p"·data-group-id="9231933688-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9231933688-3">]</span><span·class="p"·data-group-id="9231933688-2">)</span><span·class="p">.</span><span·class="w">188 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1806130409-2">(</span><span·class="p"·data-group-id="1806130409-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1806130409-3">]</span><span·class="p"·data-group-id="1806130409-2">)</span><span·class="p">.</span><span·class="w">
189 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9231933688-4">(</span><span·class="p"·data-group-id="9231933688-5">[</span><span·class="ss">call</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cast</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·115,·SHA:·4bff06092282a624ec1e693d58f4e832844838a218d28b678fe63bfed98cee92·...·]-4">)</span><span·class="p">.</span><span·class="w">189 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1806130409-4">(</span><span·class="p"·data-group-id="1806130409-5">[</span><span·class="ss">call</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cast</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·115,·SHA:·83a0035c5b6889a99af5ed27ba6020cfb6b4b19cea64b8ae4761c3dcfd32bc5b·...·]-4">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9231933688-6">(</span><span·class="p"·data-group-id="9231933688-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9231933688-7">]</span><span·class="p"·data-group-id="9231933688-6">)</span><span·class="p">.</span><span·class="w">190 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1806130409-6">(</span><span·class="p"·data-group-id="1806130409-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1806130409-7">]</span><span·class="p"·data-group-id="1806130409-6">)</span><span·class="p">.</span><span·class="w">
  
191 </span><span·class="nf">start</span><span·class="p"·data-group-id="9231933688-8">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="9231933688-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 </span><span·class="nf">start</span><span·class="p"·data-group-id="1806130409-8">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="1806130409-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9231933688-9">(</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9231933688-10">[</span><span·class="n">Mod</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·65bfde088a8d994a69ac546bec68f37ddd9610cb50573e032c09ff69d31d4061·...·]-9">)</span><span·class="p">.</span><span·class="w">192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1806130409-9">(</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1806130409-10">[</span><span·class="n">Mod</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·74d305d5295cd71cd66b3e373f9f4f00e7bdf105d5e5df505f73153e3ade4a6b·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
193 </span><span·class="nf">call</span><span·class="p"·data-group-id="9231933688-11">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="9231933688-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 </span><span·class="nf">call</span><span·class="p"·data-group-id="1806130409-11">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="1806130409-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9231933688-12">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9231933688-13">(</span><span·class="p"·data-group-id="9231933688-13">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·b44bc3b498926ae04f41e5d75605cfeed02aac6da4c009a92c9efda27a9b38a7·...·]-12">}</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1806130409-12">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="1806130409-13">(</span><span·class="p"·data-group-id="1806130409-13">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·53dda0cb5f1dd480922960ad1bba230d89c3337b01fe2d2c0433c42ef2b0d594·...·]-12">}</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="k">receive</span><span·class="w">195 ····</span><span·class="k">receive</span><span·class="w">
196 ········</span><span·class="p"·data-group-id="9231933688-14">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="9231933688-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 ········</span><span·class="p"·data-group-id="1806130409-14">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="1806130409-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ············</span><span·class="n">Res</span><span·class="w">197 ············</span><span·class="n">Res</span><span·class="w">
198 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">198 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">cast</span><span·class="p"·data-group-id="9231933688-15">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="9231933688-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">199 </span><span·class="nf">cast</span><span·class="p"·data-group-id="1806130409-15">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="1806130409-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
200 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9231933688-16">{</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="9231933688-16">}</span><span·class="p">,</span><span·class="w">200 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1806130409-16">{</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="1806130409-16">}</span><span·class="p">,</span><span·class="w">
201 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">201 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
202 </span><span·class="nf">init</span><span·class="p"·data-group-id="9231933688-17">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="9231933688-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 </span><span·class="nf">init</span><span·class="p"·data-group-id="1806130409-17">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="1806130409-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="9231933688-18">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9231933688-19">(</span><span·class="p"·data-group-id="9231933688-19">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·8512a8388822c4ec35f79532bb24f54a96bbf69d26fa821c1b3bc88da804ecd9·...·]-18">)</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="1806130409-18">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="1806130409-19">(</span><span·class="p"·data-group-id="1806130409-19">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·017e840eca7730617b962c132f020ac0feb5d147a76c6e32055b9532588420ec·...·]-18">)</span><span·class="p">,</span><span·class="w">
204 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">:</span><span·class="nf">init</span><span·class="p"·data-group-id="9231933688-20">(</span><span·class="p"·data-group-id="9231933688-20">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">:</span><span·class="nf">init</span><span·class="p"·data-group-id="1806130409-20">(</span><span·class="p"·data-group-id="1806130409-20">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="9231933688-21">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9231933688-21">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1806130409-21">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="1806130409-21">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">loop</span><span·class="p"·data-group-id="9231933688-22">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9231933688-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 </span><span·class="nf">loop</span><span·class="p"·data-group-id="1806130409-22">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="1806130409-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ····</span><span·class="k">receive</span><span·class="w">207 ····</span><span·class="k">receive</span><span·class="w">
208 ········</span><span·class="p"·data-group-id="9231933688-23">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="9231933688-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ········</span><span·class="p"·data-group-id="1806130409-23">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="1806130409-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ············</span><span·class="p"·data-group-id="9231933688-24">{</span><span·class="n">Res</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State2</span><span·class="p"·data-group-id="9231933688-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·278,·SHA:·a4877b8564315c8e4b0c146c2ec35497cc9205d5d5b1e194fd89d7aaac19f129·...·]-25">)</span><span·class="p">,</span><span·class="w">209 ············</span><span·class="p"·data-group-id="1806130409-24">{</span><span·class="n">Res</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State2</span><span·class="p"·data-group-id="1806130409-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·278,·SHA:·a676b900b006c6c5415e0ba3ca73e98a9626026c02841e340ae8bd1a9eb26e8b·...·]-25">)</span><span·class="p">,</span><span·class="w">
210 ············</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9231933688-26">{</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="9231933688-26">}</span><span·class="p">,</span><span·class="w">210 ············</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1806130409-26">{</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="1806130409-26">}</span><span·class="p">,</span><span·class="w">
211 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="9231933688-27">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State2</span><span·class="p"·data-group-id="9231933688-27">)</span><span·class="p">;</span><span·class="w">211 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1806130409-27">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State2</span><span·class="p"·data-group-id="1806130409-27">)</span><span·class="p">;</span><span·class="w">
212 ········</span><span·class="p"·data-group-id="9231933688-28">{</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="9231933688-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ········</span><span·class="p"·data-group-id="1806130409-28">{</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="1806130409-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ············</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">:</span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="9231933688-29">(</span><span·class="n">Req</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9231933688-29">)</span><span·class="p">,</span><span·class="w">213 ············</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">:</span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="1806130409-29">(</span><span·class="n">Req</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="1806130409-29">)</span><span·class="p">,</span><span·class="w">
214 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="9231933688-30">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State2</span><span·class="p"·data-group-id="9231933688-30">)</span><span·class="w">214 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1806130409-30">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State2</span><span·class="p"·data-group-id="1806130409-30">)</span><span·class="w">
215 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>And·a·callback·module·<code·class="inline">ch2.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8953994249-1">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="8953994249-1">)</span><span·class="p">.</span><span·class="w">215 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>And·a·callback·module·<code·class="inline">ch2.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4637662504-1">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="4637662504-1">)</span><span·class="p">.</span><span·class="w">
216 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8953994249-2">(</span><span·class="p"·data-group-id="8953994249-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8953994249-3">]</span><span·class="p"·data-group-id="8953994249-2">)</span><span·class="p">.</span><span·class="w">216 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4637662504-2">(</span><span·class="p"·data-group-id="4637662504-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4637662504-3">]</span><span·class="p"·data-group-id="4637662504-2">)</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8953994249-4">(</span><span·class="p"·data-group-id="8953994249-5">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·c8b2c738fc27d5c4ea54e95ee4baeedd2ff840f33b0b7485c52bcd1341b9fda8·...·]-4">)</span><span·class="p">.</span><span·class="w">217 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4637662504-4">(</span><span·class="p"·data-group-id="4637662504-5">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·07d0c32c14b722773f4504926ac023968f6fa1f9a099ec503f71b014ec27e538·...·]-4">)</span><span·class="p">.</span><span·class="w">
218 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8953994249-6">(</span><span·class="p"·data-group-id="8953994249-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</sp[·...·truncated·by·diffoscope;·len:·254,·SHA:·066634180065f57617f54ef3726149ccf129a52ba6c7370d4c354dc18eae2a55·...·]-6">)</span><span·class="p">.</span><span·class="w">218 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4637662504-6">(</span><span·class="p"·data-group-id="4637662504-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</sp[·...·truncated·by·diffoscope;·len:·254,·SHA:·b5abe64113ae3dca7c809a542cc59f1909fd38bb8c127f06cecd7b457b12370c·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">start</span><span·class="p"·data-group-id="8953994249-8">(</span><span·class="p"·data-group-id="8953994249-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 </span><span·class="nf">start</span><span·class="p"·data-group-id="4637662504-8">(</span><span·class="p"·data-group-id="4637662504-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8953994249-9">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="8953994249-9">)</span><span·class="p">.</span><span·class="w">220 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4637662504-9">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="4637662504-9">)</span><span·class="p">.</span><span·class="w">
  
221 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8953994249-10">(</span><span·class="p"·data-group-id="8953994249-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="4637662504-10">(</span><span·class="p"·data-group-id="4637662504-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8953994249-11">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="8953994249-11">)</span><span·class="p">.</span><span·class="w">222 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="4637662504-11">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="4637662504-11">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">free</span><span·class="p"·data-group-id="8953994249-12">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="8953994249-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 </span><span·class="nf">free</span><span·class="p"·data-group-id="4637662504-12">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="4637662504-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="8953994249-13">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8953994249-14">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·5e23309919f064099374c92bf13e53dab63ca21f2f74c13a244d5fd1de3c8a4c·...·]-13">)</span><span·class="p">.</span><span·class="w">224 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="4637662504-13">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4637662504-14">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·2cfdde98fd1161978558ce48a052bb28c5cc4e7e82fbd17c398231505778a735·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
225 </span><span·class="nf">init</span><span·class="p"·data-group-id="8953994249-15">(</span><span·class="p"·data-group-id="8953994249-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 </span><span·class="nf">init</span><span·class="p"·data-group-id="4637662504-15">(</span><span·class="p"·data-group-id="4637662504-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 ····</span><span·class="nf">channels</span><span·class="p"·data-group-id="8953994249-16">(</span><span·class="p"·data-group-id="8953994249-16">)</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="nf">channels</span><span·class="p"·data-group-id="4637662504-16">(</span><span·class="p"·data-group-id="4637662504-16">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8953994249-17">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="8953994249-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="4637662504-17">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="4637662504-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ····</span><span·class="nf">alloc</span><span·class="p"·data-group-id="8953994249-18">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="8953994249-18">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·=&gt;·{Ch,Chs2}</span><span·class="w">228 ····</span><span·class="nf">alloc</span><span·class="p"·data-group-id="4637662504-18">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="4637662504-18">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·=&gt;·{Ch,Chs2}</span><span·class="w">
  
229 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="8953994249-19">(</span><span·class="p"·data-group-id="8953994249-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="8953994249-20">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·38090741ca0c0d60ef80bb5c121f83a1f3aeffb68169557d8457d92677805dda·...·]-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="4637662504-19">(</span><span·class="p"·data-group-id="4637662504-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="4637662504-20">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·8779e53e58eb8eba084fcc566b32f91488ada270df7f296f62e0bbc8e88e42f0·...·]-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ····</span><span·class="nf">free</span><span·class="p"·data-group-id="8953994249-21">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="8953994249-21">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·=&gt;·Chs2</span></code></pre><p>Notice·the·following:</p><ul><li>The·code·in·<code·class="inline">server</code>·can·be·reused·to·build·many·different·servers.</li><li>The·server·name,·in·this·example·the·atom·<code·class="inline">ch2</code>,·is·hidden·from·the·users·of230 ····</span><span·class="nf">free</span><span·class="p"·data-group-id="4637662504-21">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="4637662504-21">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·=&gt;·Chs2</span></code></pre><p>Notice·the·following:</p><ul><li>The·code·in·<code·class="inline">server</code>·can·be·reused·to·build·many·different·servers.</li><li>The·server·name,·in·this·example·the·atom·<code·class="inline">ch2</code>,·is·hidden·from·the·users·of
231 the·client·functions.·This·means·that·the·name·can·be·changed·without231 the·client·functions.·This·means·that·the·name·can·be·changed·without
232 affecting·them.</li><li>The·protocol·(messages·sent·to·and·received·from·the·server)·is·also·hidden.232 affecting·them.</li><li>The·protocol·(messages·sent·to·and·received·from·the·server)·is·also·hidden.
233 This·is·good·programming·practice·and·allows·one·to·change·the·protocol233 This·is·good·programming·practice·and·allows·one·to·change·the·protocol
234 without·changing·the·code·using·the·interface·functions.</li><li>The·functionality·of·<code·class="inline">server</code>·can·be·extended·without·having·to·change·<code·class="inline">ch2</code>234 without·changing·the·code·using·the·interface·functions.</li><li>The·functionality·of·<code·class="inline">server</code>·can·be·extended·without·having·to·change·<code·class="inline">ch2</code>
235 or·any·other·callback·module.</li></ul><p>In·<code·class="inline">ch1.erl</code>·and·<code·class="inline">ch2.erl</code>·above,·the·implementation·of·<code·class="inline">channels/0</code>,·<code·class="inline">alloc/1</code>,235 or·any·other·callback·module.</li></ul><p>In·<code·class="inline">ch1.erl</code>·and·<code·class="inline">ch2.erl</code>·above,·the·implementation·of·<code·class="inline">channels/0</code>,·<code·class="inline">alloc/1</code>,
236 and·<code·class="inline">free/2</code>·has·been·intentionally·left·out,·as·it·is·not·relevant·to·the236 and·<code·class="inline">free/2</code>·has·been·intentionally·left·out,·as·it·is·not·relevant·to·the
237 example.·For·completeness,·one·way·to·write·these·functions·is·given·below.·This237 example.·For·completeness,·one·way·to·write·these·functions·is·given·below.·This
238 is·an·example·only,·a·realistic·implementation·must·be·able·to·handle·situations238 is·an·example·only,·a·realistic·implementation·must·be·able·to·handle·situations
239 like·running·out·of·channels·to·allocate,·and·so·on.</p><p><a·href=""·id="channels-implementation"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">channels</span><span·class="p"·data-group-id="8620626662-1">(</span><span·class="p"·data-group-id="8620626662-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 like·running·out·of·channels·to·allocate,·and·so·on.</p><p><a·href=""·id="channels-implementation"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">channels</span><span·class="p"·data-group-id="6141077695-1">(</span><span·class="p"·data-group-id="6141077695-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ···</span><span·class="p"·data-group-id="8620626662-2">{</span><span·class="p">_</span><span·class="n">Allocated</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8620626662-3">[</span><span·class="p"·data-group-id="8620626662-3">]</span>[·...·truncated·by·diffoscope;·len:·498,·SHA:·cc38aa301d62f51a2b2bfaa961ed22322d230954e6974192a6f843fe4a2e8cf9·...·]-2">}</span><span·class="p">.</span><span·class="w">240 ···</span><span·class="p"·data-group-id="6141077695-2">{</span><span·class="p">_</span><span·class="n">Allocated</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6141077695-3">[</span><span·class="p"·data-group-id="6141077695-3">]</span>[·...·truncated·by·diffoscope;·len:·498,·SHA:·b04ea6b50458d2a590030ceb7438dd13d1611cb9af665ee473882bcc3b64210f·...·]-2">}</span><span·class="p">.</span><span·class="w">
  
241 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8620626662-5">(</span><span·class="p"·data-group-id="8620626662-6">{</span><span·class="n">Allocated</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8620626662-7">[</span><span·class="n">H</span><span·class="p">|</span>[·...·truncated·by·diffoscope;·len:·294,·SHA:·4d86675e2f0087e259f4dcf02869dd2251145daf17db25800a8dd2c85221df1f·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">241 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="6141077695-5">(</span><span·class="p"·data-group-id="6141077695-6">{</span><span·class="n">Allocated</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6141077695-7">[</span><span·class="n">H</span><span·class="p">|</span>[·...·truncated·by·diffoscope;·len:·294,·SHA:·51a5ed05a2d340a094488cadd0223a12c83d09e7a894b376eb851daaa5be6f5a·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
242 ···</span><span·class="p"·data-group-id="8620626662-8">{</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8620626662-9">{</span><span·class="p"·data-group-id="8620626662-10">[</span><span·class="n">H</span><span·class="p">|</span><span·c[·...·truncated·by·diffoscope;·len:·245,·SHA:·43bc4601b302380be76747fe6c19f9a5aea8abba23c6900dc276d02b4c1bcdf8·...·]-8">}</span><span·class="p">.</span><span·class="w">242 ···</span><span·class="p"·data-group-id="6141077695-8">{</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6141077695-9">{</span><span·class="p"·data-group-id="6141077695-10">[</span><span·class="n">H</span><span·class="p">|</span><span·c[·...·truncated·by·diffoscope;·len:·245,·SHA:·bd22036b71f7a8f6d67c2242cb8ed14f96d8fe94efd18ad48b3e9df52e04af29·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
243 </span><span·class="nf">free</span><span·class="p"·data-group-id="8620626662-11">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8620626662-12">{</span><span·class="n">Alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Free</span><sp[·...·truncated·by·diffoscope;·len:·195,·SHA:·02ea2b6e728a51fce9ef0bcdec6cb8a0b7410ea952c60eaaa45eec6524b2126c·...·]-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">243 </span><span·class="nf">free</span><span·class="p"·data-group-id="6141077695-11">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6141077695-12">{</span><span·class="n">Alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Free</span><sp[·...·truncated·by·diffoscope;·len:·195,·SHA:·fb17a7211dedeaaf408cd69907b0f55b5e154b842666e157fbdac57882a0a8c4·...·]-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
244 ···</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="8620626662-13">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Alloc</span><span·class="p"·data-group-id="8620626662-13">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">244 ···</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="6141077695-13">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Alloc</span><span·class="p"·data-group-id="6141077695-13">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
245 ······</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">245 ······</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
246 ·········</span><span·class="p"·data-group-id="8620626662-14">{</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="8620626662-15">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Alloc</[·...·truncated·by·diffoscope;·len:·332,·SHA:·d881015649eb005305b2aa657740f4ae340efe3303b7327186cb26414227c512·...·]-14">}</span><span·class="p">;</span><span·class="w">246 ·········</span><span·class="p"·data-group-id="6141077695-14">{</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="6141077695-15">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Alloc</[·...·truncated·by·diffoscope;·len:·332,·SHA:·719739ea36ffa6eceab005523e8038f789f0961a36e4d8f835e7b9ecb889cd7d·...·]-14">}</span><span·class="p">;</span><span·class="w">
247 ······</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">247 ······</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
248 ·········</span><span·class="n">Channels</span><span·class="w">248 ·········</span><span·class="n">Channels</span><span·class="w">
249 ···</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Code·written·without·using·behaviours·can·be·more·efficient,·but·the·increased249 ···</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Code·written·without·using·behaviours·can·be·more·efficient,·but·the·increased
250 efficiency·is·at·the·expense·of·generality.·The·ability·to·manage·all250 efficiency·is·at·the·expense·of·generality.·The·ability·to·manage·all
251 applications·in·the·system·in·a·consistent·manner·is·important.</p><p>Using·behaviours·also·makes·it·easier·to·read·and·understand·code·written·by251 applications·in·the·system·in·a·consistent·manner·is·important.</p><p>Using·behaviours·also·makes·it·easier·to·read·and·understand·code·written·by
252 other·programmers.·Improvised·programming·structures,·while·possibly·more252 other·programmers.·Improvised·programming·structures,·while·possibly·more
253 efficient,·are·always·more·difficult·to·understand.</p><p>The·<code·class="inline">server</code>·module·corresponds,·greatly·simplified,·to·the·Erlang/OTP·behaviour253 efficient,·are·always·more·difficult·to·understand.</p><p>The·<code·class="inline">server</code>·module·corresponds,·greatly·simplified,·to·the·Erlang/OTP·behaviour
254 <code·class="inline">gen_server</code>.</p><p>The·standard·Erlang/OTP·behaviours·are:</p><ul><li><p><a·href="gen_server_concepts.html">gen_server</a></p><p>For·implementing·the·server·of·a·client-server·relation</p></li><li><p><a·href="statem.html">gen_statem</a></p><p>For·implementing·state·machines</p></li><li><p><a·href="events.html">gen_event</a></p><p>For·implementing·event·handling·functionality</p></li><li><p><a·href="sup_princ.html">supervisor</a></p><p>For·implementing·a·supervisor·in·a·supervision·tree</p></li></ul><p>The·compiler·understands·the·module·attribute·<code·class="inline">-behaviour(Behaviour)</code>·and·issues254 <code·class="inline">gen_server</code>.</p><p>The·standard·Erlang/OTP·behaviours·are:</p><ul><li><p><a·href="gen_server_concepts.html">gen_server</a></p><p>For·implementing·the·server·of·a·client-server·relation</p></li><li><p><a·href="statem.html">gen_statem</a></p><p>For·implementing·state·machines</p></li><li><p><a·href="events.html">gen_event</a></p><p>For·implementing·event·handling·functionality</p></li><li><p><a·href="sup_princ.html">supervisor</a></p><p>For·implementing·a·supervisor·in·a·supervision·tree</p></li></ul><p>The·compiler·understands·the·module·attribute·<code·class="inline">-behaviour(Behaviour)</code>·and·issues
255 warnings·about·missing·callback·functions,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4310387212-1">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="4310387212-1">)</span><span·class="p">.</span><span·class="w">255 warnings·about·missing·callback·functions,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8488852657-1">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="8488852657-1">)</span><span·class="p">.</span><span·class="w">
256 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="4310387212-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="4310387212-2">)</span><span·class="p">.</span><span·class="w">256 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="8488852657-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="8488852657-2">)</span><span·class="p">.</span><span·class="w">
257 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">257 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
  
258 </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">c</span><span·class="p"·data-group-id="4310387212-3">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="4310387212-3">)</span><span·class="p">.</span><span·class="w">258 </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">c</span><span·class="p"·data-group-id="8488852657-3">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="8488852657-3">)</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 829/59679 bytes (1.39%) of diff not shown.
5.71 KB
./usr/share/doc/erlang-doc/html/doc/system/distributed.html
    
Offset 142, 25 lines modifiedOffset 142, 25 lines modified
142 </h2>142 </h2>
143 <p>A·<em>node</em>·is·an·executing·Erlang·runtime·system·that·has·been·given·a·name,·using143 <p>A·<em>node</em>·is·an·executing·Erlang·runtime·system·that·has·been·given·a·name,·using
144 the·command-line·flag·<a·href="../../erts-15.2.2/doc/html/erl_cmd.html#name"><code·class="inline">-name</code></a>·(long·names)·or144 the·command-line·flag·<a·href="../../erts-15.2.2/doc/html/erl_cmd.html#name"><code·class="inline">-name</code></a>·(long·names)·or
145 <a·href="../../erts-15.2.2/doc/html/erl_cmd.html#sname"><code·class="inline">-sname</code></a>·(short·names).</p><p>The·format·of·the·node·name·is·an·atom·<code·class="inline">name@host</code>.·<code·class="inline">name</code>·is·the·name·given·by145 <a·href="../../erts-15.2.2/doc/html/erl_cmd.html#sname"><code·class="inline">-sname</code></a>·(short·names).</p><p>The·format·of·the·node·name·is·an·atom·<code·class="inline">name@host</code>.·<code·class="inline">name</code>·is·the·name·given·by
146 the·user.·<code·class="inline">host</code>·is·the·full·host·name·if·long·names·are·used,·or·the·first·part146 the·user.·<code·class="inline">host</code>·is·the·full·host·name·if·long·names·are·used,·or·the·first·part
147 of·the·host·name·if·short·names·are·used.·Function·<a·href="../../erts-15.2.2/doc/html/erlang.html#node/0"><code·class="inline">node()</code></a>147 of·the·host·name·if·short·names·are·used.·Function·<a·href="../../erts-15.2.2/doc/html/erlang.html#node/0"><code·class="inline">node()</code></a>
148 returns·the·name·of·the·node.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-name·dilbert</span><span·class="w">148 returns·the·name·of·the·node.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-name·dilbert</span><span·class="w">
149 </span><span·class="p"·data-group-id="4315198325-1">(</span><span·class="ss">dilbert@uab</span><span·class="p">.</span><span·class="ss">ericsson</span><span·class="p">.</span><span·class="ss">se</span><span·class="p"·data-group-id="4315198325-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·5a284a30c193867b2dac90d5813a359220b065ff90fa354dc5768002286a12e5·...·]-2">)</span><span·class="p">.</span><span·class="w">149 </span><span·class="p"·data-group-id="8024735940-1">(</span><span·class="ss">dilbert@uab</span><span·class="p">.</span><span·class="ss">ericsson</span><span·class="p">.</span><span·class="ss">se</span><span·class="p"·data-group-id="8024735940-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·047929873e271edb37e8bf48291b8355a48b1bef6fd6e472d7b4cae7f293fe1c·...·]-2">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="ss">&#39;dilbert@uab.ericsson.se&#39;</span><span·class="w">150 </span><span·class="ss">&#39;dilbert@uab.ericsson.se&#39;</span><span·class="w">
  
151 </span><span·class="c1">%·erl·-sname·dilbert</span><span·class="gp·unselectable">151 </span><span·class="c1">%·erl·-sname·dilbert</span><span·class="gp·unselectable">
152 (dilbert@uab)1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="4315198325-3">(</span><span·class="p"·data-group-id="4315198325-3">)</span><span·class="p">.</span><span·class="w">152 (dilbert@uab)1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="8024735940-3">(</span><span·class="p"·data-group-id="8024735940-3">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="ss">dilbert@uab</span></code></pre><p>The·node·name·can·also·be·given·in·runtime·by·calling·<a·href="../../lib/kernel-10.2.2/doc/html/net_kernel.html#start/1"><code·class="inline">net_kernel:start/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl</span><span·class="gp·unselectable">153 </span><span·class="ss">dilbert@uab</span></code></pre><p>The·node·name·can·also·be·given·in·runtime·by·calling·<a·href="../../lib/kernel-10.2.2/doc/html/net_kernel.html#start/1"><code·class="inline">net_kernel:start/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl</span><span·class="gp·unselectable">
154 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="3447291133-1">(</span><span·class="p"·data-group-id="3447291133-1">)</span><span·class="p">.</span><span·class="w">154 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="0480963142-1">(</span><span·class="p"·data-group-id="0480963142-1">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="ss">nonode@nohost</span><span·class="gp·unselectable">155 </span><span·class="ss">nonode@nohost</span><span·class="gp·unselectable">
156 2&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3447291133-2">(</span><span·class="p"·data-group-id="3447291133-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="3447291133-3">]</span><span·class="p"·data-group-id="34472911[·...·truncated·by·diffoscope;·len:·2,·SHA:·c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894·...·]-2">)</span><span·class="p">.</span><span·class="w">156 2&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="0480963142-2">(</span><span·class="p"·data-group-id="0480963142-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="0480963142-3">]</span><span·class="p"·data-group-id="04809631[·...·truncated·by·diffoscope;·len:·2,·SHA:·73475cb40a568e8da8a045ced110137e159f890ac4da883b6b17dc651b3a8049·...·]-2">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="3447291133-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.102</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3447291133-4">}</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="0480963142-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.102</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0480963142-4">}</span><span·class="gp·unselectable">
158 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="3447291133-5">(</span><span·class="p"·data-group-id="3447291133-5">)</span><span·class="p">.</span><span·class="w">158 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="0480963142-5">(</span><span·class="p"·data-group-id="0480963142-5">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="ss">dilbert@uab</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·node·with·a·long·node·name·cannot·communicate·with·a·node·with·a·short·node159 </span><span·class="ss">dilbert@uab</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·node·with·a·long·node·name·cannot·communicate·with·a·node·with·a·short·node
160 name.</p></section><h2·id="node-connections"·class="section-heading">160 name.</p></section><h2·id="node-connections"·class="section-heading">
161 ··<a·href="#node-connections"·class="hover-link">161 ··<a·href="#node-connections"·class="hover-link">
162 ····<i·class="ri-link-m"·aria-hidden="true"></i>162 ····<i·class="ri-link-m"·aria-hidden="true"></i>
163 ··</a>163 ··</a>
164 ··<span·class="text">Node·Connections</span>164 ··<span·class="text">Node·Connections</span>
165 </h2>165 </h2>
16.3 KB
./usr/share/doc/erlang-doc/html/doc/system/distributed_applications.html
    
Offset 150, 36 lines modifiedOffset 150, 36 lines modified
150 (within·the·time-out·specified·by·<code·class="inline">sync_nodes_timeout</code>).</li><li><p><code·class="inline">sync_nodes_timeout·=·integer()·|·infinity</code>·-·Specifies·how·many·milliseconds150 (within·the·time-out·specified·by·<code·class="inline">sync_nodes_timeout</code>).</li><li><p><code·class="inline">sync_nodes_timeout·=·integer()·|·infinity</code>·-·Specifies·how·many·milliseconds
151 to·wait·for·the·other·nodes·to·start.</p></li></ul><p>When·started,·the·node·waits·for·all·nodes·specified·by·<code·class="inline">sync_nodes_mandatory</code>151 to·wait·for·the·other·nodes·to·start.</p></li></ul><p>When·started,·the·node·waits·for·all·nodes·specified·by·<code·class="inline">sync_nodes_mandatory</code>
152 and·<code·class="inline">sync_nodes_optional</code>·to·come·up.·When·all·nodes·are·up,·or·when·all152 and·<code·class="inline">sync_nodes_optional</code>·to·come·up.·When·all·nodes·are·up,·or·when·all
153 mandatory·nodes·are·up·and·the·time·specified·by·<code·class="inline">sync_nodes_timeout</code>·has153 mandatory·nodes·are·up·and·the·time·specified·by·<code·class="inline">sync_nodes_timeout</code>·has
154 elapsed,·all·applications·start.·If·not·all·mandatory·nodes·are·up,·the·node154 elapsed,·all·applications·start.·If·not·all·mandatory·nodes·are·up,·the·node
155 terminates.</p><p><em>Example:</em></p><p>An·application·<code·class="inline">myapp</code>·is·to·run·at·the·node·<code·class="inline">cp1@cave</code>.·If·this·node·goes·down,155 terminates.</p><p><em>Example:</em></p><p>An·application·<code·class="inline">myapp</code>·is·to·run·at·the·node·<code·class="inline">cp1@cave</code>.·If·this·node·goes·down,
156 <code·class="inline">myapp</code>·is·to·be·restarted·at·<code·class="inline">cp2@cave</code>·or·<code·class="inline">cp3@cave</code>.·A·system·configuration156 <code·class="inline">myapp</code>·is·to·be·restarted·at·<code·class="inline">cp2@cave</code>·or·<code·class="inline">cp3@cave</code>.·A·system·configuration
157 file·<code·class="inline">cp1.config</code>·for·<code·class="inline">cp1@cave</code>·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0598533875-1">[</span><span·class="p"·data-group-id="0598533875-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">157 file·<code·class="inline">cp1.config</code>·for·<code·class="inline">cp1@cave</code>·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3657793822-1">[</span><span·class="p"·data-group-id="3657793822-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
158 ··</span><span·class="p"·data-group-id="0598533875-3">[</span><span·class="p"·data-group-id="0598533875-4">{</span><span·class="ss">distributed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0598533875-5">[</span><span·class="p"·data-group-id="0598533875-6">[·...·truncated·by·diffoscope;·len:·712,·SHA:·280eddfa647dec70b08ad10d0c81df76b3ae72ca0c4a752f31af8be2bd6e746d·...·]-4">}</span><span·class="p">,</span><span·class="w">158 ··</span><span·class="p"·data-group-id="3657793822-3">[</span><span·class="p"·data-group-id="3657793822-4">{</span><span·class="ss">distributed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3657793822-5">[</span><span·class="p"·data-group-id="3657793822-6">[·...·truncated·by·diffoscope;·len:·712,·SHA:·798b344b5a8c6027497e76de94a254d77eba6710fb72f4abfb1842fb59c7146d·...·]-4">}</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="0598533875-9">{</span><span·class="ss">sync_nodes_mandatory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0598533875-10">[</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·4cf27aa8cd8fc661a4da0ccafda6a4512957a5e8bc4944f0b09445a8ccf898f7·...·]-9">}</span><span·class="p">,</span><span·class="w">159 ···</span><span·class="p"·data-group-id="3657793822-9">{</span><span·class="ss">sync_nodes_mandatory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3657793822-10">[</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·dfe382424eccd5599845add0413e9cab50869a0a5de97aa28e9444b28b750a06·...·]-9">}</span><span·class="p">,</span><span·class="w">
160 ···</span><span·class="p"·data-group-id="0598533875-11">{</span><span·class="ss">sync_nodes_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="0598533875-11">}</span><span·class="w">160 ···</span><span·class="p"·data-group-id="3657793822-11">{</span><span·class="ss">sync_nodes_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="3657793822-11">}</span><span·class="w">
161 ··</span><span·class="p"·data-group-id="0598533875-3">]</span><span·class="w">161 ··</span><span·class="p"·data-group-id="3657793822-3">]</span><span·class="w">
162 ·</span><span·class="p"·data-group-id="0598533875-2">}</span><span·class="w">162 ·</span><span·class="p"·data-group-id="3657793822-2">}</span><span·class="w">
163 </span><span·class="p"·data-group-id="0598533875-1">]</span><span·class="p">.</span></code></pre><p>The·system·configuration·files·for·<code·class="inline">cp2@cave</code>·and·<code·class="inline">cp3@cave</code>·are·identical,163 </span><span·class="p"·data-group-id="3657793822-1">]</span><span·class="p">.</span></code></pre><p>The·system·configuration·files·for·<code·class="inline">cp2@cave</code>·and·<code·class="inline">cp3@cave</code>·are·identical,
164 except·for·the·list·of·mandatory·nodes,·which·is·to·be·<code·class="inline">[cp1@cave,·cp3@cave]</code>164 except·for·the·list·of·mandatory·nodes,·which·is·to·be·<code·class="inline">[cp1@cave,·cp3@cave]</code>
165 for·<code·class="inline">cp2@cave</code>·and·<code·class="inline">[cp1@cave,·cp2@cave]</code>·for·<code·class="inline">cp3@cave</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>All·involved·nodes·must·have·the·same·value·for·<code·class="inline">distributed</code>·and165 for·<code·class="inline">cp2@cave</code>·and·<code·class="inline">[cp1@cave,·cp2@cave]</code>·for·<code·class="inline">cp3@cave</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>All·involved·nodes·must·have·the·same·value·for·<code·class="inline">distributed</code>·and
166 <code·class="inline">sync_nodes_timeout</code>.·Otherwise·the·system·behavior·is·undefined.</p></section><h2·id="starting-and-stopping-distributed-applications"·class="section-heading">166 <code·class="inline">sync_nodes_timeout</code>.·Otherwise·the·system·behavior·is·undefined.</p></section><h2·id="starting-and-stopping-distributed-applications"·class="section-heading">
167 ··<a·href="#starting-and-stopping-distributed-applications"·class="hover-link">167 ··<a·href="#starting-and-stopping-distributed-applications"·class="hover-link">
168 ····<i·class="ri-link-m"·aria-hidden="true"></i>168 ····<i·class="ri-link-m"·aria-hidden="true"></i>
169 ··</a>169 ··</a>
170 ··<span·class="text">Starting·and·Stopping·Distributed·Applications</span>170 ··<span·class="text">Starting·and·Stopping·Distributed·Applications</span>
171 </h2>171 </h2>
172 <p>When·all·involved·(mandatory)·nodes·have·been·started,·the·distributed172 <p>When·all·involved·(mandatory)·nodes·have·been·started,·the·distributed
173 application·can·be·started·by·calling·<code·class="inline">application:start(Application)</code>·at·<em>all173 application·can·be·started·by·calling·<code·class="inline">application:start(Application)</code>·at·<em>all
174 of·these·nodes.</em></p><p>A·boot·script·(see·<a·href="release_structure.html">Releases</a>)·can·be·used·that174 of·these·nodes.</em></p><p>A·boot·script·(see·<a·href="release_structure.html">Releases</a>)·can·be·used·that
175 automatically·starts·the·application.</p><p>The·application·is·started·at·the·first·operational·node·that·is·listed·in·the175 automatically·starts·the·application.</p><p>The·application·is·started·at·the·first·operational·node·that·is·listed·in·the
176 list·of·nodes·in·the·<code·class="inline">distributed</code>·configuration·parameter.·The·application·is176 list·of·nodes·in·the·<code·class="inline">distributed</code>·configuration·parameter.·The·application·is
177 started·as·usual.·That·is,·an·application·master·is·created·and·calls·the177 started·as·usual.·That·is,·an·application·master·is·created·and·calls·the
178 application·callback·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="0372360755-1">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="0372360755-1">)</span></code></pre><p>Example:</p><p>Continuing·the·example·from·the·previous·section,·the·three·nodes·are·started,178 application·callback·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8955566621-1">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="8955566621-1">)</span></code></pre><p>Example:</p><p>Continuing·the·example·from·the·previous·section,·the·three·nodes·are·started,
179 specifying·the·system·configuration·file:</p><pre><code·class="text">&gt;·erl·-sname·cp1·-config·cp1179 specifying·the·system·configuration·file:</p><pre><code·class="text">&gt;·erl·-sname·cp1·-config·cp1
180 &gt;·erl·-sname·cp2·-config·cp2180 &gt;·erl·-sname·cp2·-config·cp2
181 &gt;·erl·-sname·cp3·-config·cp3</code></pre><p>When·all·nodes·are·operational,·<code·class="inline">myapp</code>·can·be·started.·This·is·achieved·by181 &gt;·erl·-sname·cp3·-config·cp3</code></pre><p>When·all·nodes·are·operational,·<code·class="inline">myapp</code>·can·be·started.·This·is·achieved·by
182 calling·<code·class="inline">application:start(myapp)</code>·at·all·three·nodes.·It·is·then·started·at182 calling·<code·class="inline">application:start(myapp)</code>·at·all·three·nodes.·It·is·then·started·at
183 <code·class="inline">cp1</code>,·as·shown·in·the·following·figure:</p><p><a·href=""·id="dist1"></a></p><p><img·src="assets/dist1.gif"·alt="Application·myapp·-·Situation·1"·title="Application·myapp·-·Situation·1"/></p><p>Similarly,·the·application·must·be·stopped·by·calling183 <code·class="inline">cp1</code>,·as·shown·in·the·following·figure:</p><p><a·href=""·id="dist1"></a></p><p><img·src="assets/dist1.gif"·alt="Application·myapp·-·Situation·1"·title="Application·myapp·-·Situation·1"/></p><p>Similarly,·the·application·must·be·stopped·by·calling
184 <code·class="inline">application:stop(Application)</code>·at·all·involved·nodes.</p><h2·id="failover"·class="section-heading">184 <code·class="inline">application:stop(Application)</code>·at·all·involved·nodes.</p><h2·id="failover"·class="section-heading">
185 ··<a·href="#failover"·class="hover-link">185 ··<a·href="#failover"·class="hover-link">
Offset 187, 30 lines modifiedOffset 187, 30 lines modified
187 ··</a>187 ··</a>
188 ··<span·class="text">Failover</span>188 ··<span·class="text">Failover</span>
189 </h2>189 </h2>
190 <p>If·the·node·where·the·application·is·running·goes·down,·the·application·is190 <p>If·the·node·where·the·application·is·running·goes·down,·the·application·is
191 restarted·(after·the·specified·time-out)·at·the·first·operational·node·that·is191 restarted·(after·the·specified·time-out)·at·the·first·operational·node·that·is
192 listed·in·the·list·of·nodes·in·the·<code·class="inline">distributed</code>·configuration·parameter.·This192 listed·in·the·list·of·nodes·in·the·<code·class="inline">distributed</code>·configuration·parameter.·This
193 is·called·a·<em>failover</em>.</p><p>The·application·is·started·the·normal·way·at·the·new·node,·that·is,·by·the193 is·called·a·<em>failover</em>.</p><p>The·application·is·started·the·normal·way·at·the·new·node,·that·is,·by·the
194 application·master·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8521194811-1">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="8521194811-1">)</span></code></pre><p>An·exception·is·if·the·application·has·the·<code·class="inline">start_phases</code>·key·defined·(see194 application·master·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2395736461-1">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="2395736461-1">)</span></code></pre><p>An·exception·is·if·the·application·has·the·<code·class="inline">start_phases</code>·key·defined·(see
195 <a·href="included_applications.html">Included·Applications</a>).·The·application·is·then195 <a·href="included_applications.html">Included·Applications</a>).·The·application·is·then
196 instead·started·by·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8901697884-1">(</span><span·class="p"·data-group-id="8901697884-2">{</span><span·class="ss">failover</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="8901697884-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·6cf3e17064f086fde87290ddb1e15d8d47ca385972937c7749a3c38478bb2cf1·...·]-1">)</span></code></pre><p>Here·<code·class="inline">Node</code>·is·the·terminated·node.</p><p><em>Example:</em></p><p>If·<code·class="inline">cp1</code>·goes·down,·the·system·checks·which·one·of·the·other·nodes,·<code·class="inline">cp2</code>·or196 instead·started·by·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3870204045-1">(</span><span·class="p"·data-group-id="3870204045-2">{</span><span·class="ss">failover</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="3870204045-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·c6559e07a20e296dea5ba3279c158c729942f54aed932caf3cc98ee3a9b15ddf·...·]-1">)</span></code></pre><p>Here·<code·class="inline">Node</code>·is·the·terminated·node.</p><p><em>Example:</em></p><p>If·<code·class="inline">cp1</code>·goes·down,·the·system·checks·which·one·of·the·other·nodes,·<code·class="inline">cp2</code>·or
197 <code·class="inline">cp3</code>,·has·the·least·number·of·running·applications,·but·waits·for·5·seconds·for197 <code·class="inline">cp3</code>,·has·the·least·number·of·running·applications,·but·waits·for·5·seconds·for
198 <code·class="inline">cp1</code>·to·restart.·If·<code·class="inline">cp1</code>·does·not·restart·and·<code·class="inline">cp2</code>·runs·fewer·applications198 <code·class="inline">cp1</code>·to·restart.·If·<code·class="inline">cp1</code>·does·not·restart·and·<code·class="inline">cp2</code>·runs·fewer·applications
199 than·<code·class="inline">cp3</code>,·<code·class="inline">myapp</code>·is·restarted·on·<code·class="inline">cp2</code>.</p><p><a·href=""·id="dist2"></a></p><p><img·src="assets/dist2.gif"·alt="Application·myapp·-·Situation·2"·title="Application·myapp·-·Situation·2"/></p><p>Suppose·now·that·<code·class="inline">cp2</code>·goes·also·down·and·does·not·restart·within·5·seconds.199 than·<code·class="inline">cp3</code>,·<code·class="inline">myapp</code>·is·restarted·on·<code·class="inline">cp2</code>.</p><p><a·href=""·id="dist2"></a></p><p><img·src="assets/dist2.gif"·alt="Application·myapp·-·Situation·2"·title="Application·myapp·-·Situation·2"/></p><p>Suppose·now·that·<code·class="inline">cp2</code>·goes·also·down·and·does·not·restart·within·5·seconds.
200 <code·class="inline">myapp</code>·is·now·restarted·on·<code·class="inline">cp3</code>.</p><p><a·href=""·id="dist3"></a></p><p><img·src="assets/dist3.gif"·alt="Application·myapp·-·Situation·3"·title="Application·myapp·-·Situation·3"/></p><h2·id="takeover"·class="section-heading">200 <code·class="inline">myapp</code>·is·now·restarted·on·<code·class="inline">cp3</code>.</p><p><a·href=""·id="dist3"></a></p><p><img·src="assets/dist3.gif"·alt="Application·myapp·-·Situation·3"·title="Application·myapp·-·Situation·3"/></p><h2·id="takeover"·class="section-heading">
201 ··<a·href="#takeover"·class="hover-link">201 ··<a·href="#takeover"·class="hover-link">
202 ····<i·class="ri-link-m"·aria-hidden="true"></i>202 ····<i·class="ri-link-m"·aria-hidden="true"></i>
203 ··</a>203 ··</a>
204 ··<span·class="text">Takeover</span>204 ··<span·class="text">Takeover</span>
205 </h2>205 </h2>
206 <p>If·a·node·is·started,·which·has·higher·priority·according·to·<code·class="inline">distributed</code>·than206 <p>If·a·node·is·started,·which·has·higher·priority·according·to·<code·class="inline">distributed</code>·than
207 the·node·where·a·distributed·application·is·running,·the·application·is207 the·node·where·a·distributed·application·is·running,·the·application·is
208 restarted·at·the·new·node·and·stopped·at·the·old·node.·This·is·called·a208 restarted·at·the·new·node·and·stopped·at·the·old·node.·This·is·called·a
209 <em>takeover</em>.</p><p>The·application·is·started·by·the·application·master·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5754246205-1">(</span><span·class="p"·data-group-id="5754246205-2">{</span><span·class="ss">takeover</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="5754246205-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·99,·SHA:·531f626869068286332da0546b86a441af9ed80974c134c9ab811927fb7259aa·...·]5-1">)</span></code></pre><p>Here·<code·class="inline">Node</code>·is·the·old·node.</p><p><em>Example:</em></p><p>If·<code·class="inline">myapp</code>·is·running·at·<code·class="inline">cp3</code>,·and·if·<code·class="inline">cp2</code>·now·restarts,·it·does·not·restart209 <em>takeover</em>.</p><p>The·application·is·started·by·the·application·master·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Module</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8479541215-1">(</span><span·class="p"·data-group-id="8479541215-2">{</span><span·class="ss">takeover</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="8479541215-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·99,·SHA:·9f48865bebc62da3071a9ecc49520171d4cd805b596b2e4d606211cbf746459f·...·]5-1">)</span></code></pre><p>Here·<code·class="inline">Node</code>·is·the·old·node.</p><p><em>Example:</em></p><p>If·<code·class="inline">myapp</code>·is·running·at·<code·class="inline">cp3</code>,·and·if·<code·class="inline">cp2</code>·now·restarts,·it·does·not·restart
210 <code·class="inline">myapp</code>,·as·the·order·between·the·<code·class="inline">cp2</code>·and·<code·class="inline">cp3</code>·nodes·is·undefined.</p><p><a·href=""·id="dist4"></a></p><p><img·src="assets/dist4.gif"·alt="Application·myapp·-·Situation·4"·title="Application·myapp·-·Situation·4"/></p><p>However,·if·<code·class="inline">cp1</code>·also·restarts,·the·function·<a·href="../../lib/kernel-10.2.2/doc/html/application.html#takeover/2"><code·class="inline">application:takeover/2</code></a>·moves210 <code·class="inline">myapp</code>,·as·the·order·between·the·<code·class="inline">cp2</code>·and·<code·class="inline">cp3</code>·nodes·is·undefined.</p><p><a·href=""·id="dist4"></a></p><p><img·src="assets/dist4.gif"·alt="Application·myapp·-·Situation·4"·title="Application·myapp·-·Situation·4"/></p><p>However,·if·<code·class="inline">cp1</code>·also·restarts,·the·function·<a·href="../../lib/kernel-10.2.2/doc/html/application.html#takeover/2"><code·class="inline">application:takeover/2</code></a>·moves
211 <code·class="inline">myapp</code>·to·<code·class="inline">cp1</code>,·as·<code·class="inline">cp1</code>·has·a·higher·priority·than·<code·class="inline">cp3</code>·for·this211 <code·class="inline">myapp</code>·to·<code·class="inline">cp1</code>,·as·<code·class="inline">cp1</code>·has·a·higher·priority·than·<code·class="inline">cp3</code>·for·this
212 application.·In·this·case,·<code·class="inline">Module:start({takeover,·cp3@cave},·StartArgs)</code>·is212 application.·In·this·case,·<code·class="inline">Module:start({takeover,·cp3@cave},·StartArgs)</code>·is
213 executed·at·<code·class="inline">cp1</code>·to·start·the·application.</p><p><a·href=""·id="dist5"></a></p><p><img·src="assets/dist5.gif"·alt="Application·myapp·-·Situation·5"·title="Application·myapp·-·Situation·5"/></p>213 executed·at·<code·class="inline">cp1</code>·to·start·the·application.</p><p><a·href=""·id="dist5"></a></p><p><img·src="assets/dist5.gif"·alt="Application·myapp·-·Situation·5"·title="Application·myapp·-·Situation·5"/></p>
214 </div>214 </div>
  
215 <div·class="bottom-actions"·id="bottom-actions">215 <div·class="bottom-actions"·id="bottom-actions">
64.9 KB
./usr/share/doc/erlang-doc/html/doc/system/documentation.html
    
Offset 112, 23 lines modifiedOffset 112, 23 lines modified
112 ······</a>112 ······</a>
  
  
113 ····<span>Documentation</span>113 ····<span>Documentation</span>
114 ··</h1>114 ··</h1>
  
115 <p>Documentation·in·Erlang·is·done·through·the·<code·class="inline">-moduledoc</code>·and·<code·class="inline">-doc</code>115 <p>Documentation·in·Erlang·is·done·through·the·<code·class="inline">-moduledoc</code>·and·<code·class="inline">-doc</code>
116 <a·href="modules.html#module-attributes">attributes</a>.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2491515982-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="2491515982-1">)</span><span·class="p">.</span><span·class="w">116 <a·href="modules.html#module-attributes">attributes</a>.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7132235770-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="7132235770-1">)</span><span·class="p">.</span><span·class="w">
117 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;117 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;
118 A·module·for·basic·arithmetic.118 A·module·for·basic·arithmetic.
119 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">119 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">
120 </span><span·class="w">120 </span><span·class="w">
121 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2491515982-2">(</span><span·class="p"·data-group-id="2491515982-3">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="2491515982-3">]</span><span·class="p"·data-group-id="2491515982-2">)</span><span·class="p">.</span><span·class="w">121 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7132235770-2">(</span><span·class="p"·data-group-id="7132235770-3">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="7132235770-3">]</span><span·class="p"·data-group-id="7132235770-2">)</span><span·class="p">.</span><span·class="w">
122 </span><span·class="w">122 </span><span·class="w">
123 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;Adds·two·numbers.&quot;</span><span·class="p">.</span><span·class="w">123 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;Adds·two·numbers.&quot;</span><span·class="p">.</span><span·class="w">
124 </span><span·class="nf">add</span><span·class="p"·data-group-id="2491515982-4">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="2491515982-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">-moduledoc</code>·attribute·has·to·be·located·before·the·first·<code·class="inline">-doc</code>·attribute124 </span><span·class="nf">add</span><span·class="p"·data-group-id="7132235770-4">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="7132235770-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">-moduledoc</code>·attribute·has·to·be·located·before·the·first·<code·class="inline">-doc</code>·attribute
125 or·function·declaration.·It·documents·the·overall·purpose·of·the·module.</p><p>The·<code·class="inline">-doc</code>·attribute·always·precedes·the·<a·href="ref_man_functions.html">function</a>·or125 or·function·declaration.·It·documents·the·overall·purpose·of·the·module.</p><p>The·<code·class="inline">-doc</code>·attribute·always·precedes·the·<a·href="ref_man_functions.html">function</a>·or
126 <a·href="modules.html#module-attributes">attribute</a>·it·documents.·The126 <a·href="modules.html#module-attributes">attribute</a>·it·documents.·The
127 attributes·that·can·be·documented·are127 attributes·that·can·be·documented·are
128 <a·href="typespec.html#type-declarations-of-user-defined-types">user-defined·types</a>128 <a·href="typespec.html#type-declarations-of-user-defined-types">user-defined·types</a>
129 (<code·class="inline">-type</code>·and·<code·class="inline">-opaque</code>)·and129 (<code·class="inline">-type</code>·and·<code·class="inline">-opaque</code>)·and
130 <a·href="modules.html#behaviour-module-attribute">behaviour·module·attributes</a>130 <a·href="modules.html#behaviour-module-attribute">behaviour·module·attributes</a>
131 (<code·class="inline">-callback</code>).</p><p>By·default·the·format·used·for·documentation·attributes·is131 (<code·class="inline">-callback</code>).</p><p>By·default·the·format·used·for·documentation·attributes·is
Offset 140, 55 lines modifiedOffset 140, 55 lines modified
140 <a·href="modules.html#documentation-attributes">Documentation·Attributes</a>.</p><p><code·class="inline">-doc</code>·attributes·have·been·available·since·Erlang/OTP·27.</p><h2·id="documentation-metadata"·class="section-heading">140 <a·href="modules.html#documentation-attributes">Documentation·Attributes</a>.</p><p><code·class="inline">-doc</code>·attributes·have·been·available·since·Erlang/OTP·27.</p><h2·id="documentation-metadata"·class="section-heading">
141 ··<a·href="#documentation-metadata"·class="hover-link">141 ··<a·href="#documentation-metadata"·class="hover-link">
142 ····<i·class="ri-link-m"·aria-hidden="true"></i>142 ····<i·class="ri-link-m"·aria-hidden="true"></i>
143 ··</a>143 ··</a>
144 ··<span·class="text">Documentation·metadata</span>144 ··<span·class="text">Documentation·metadata</span>
145 </h2>145 </h2>
146 <p>It·is·possible·to·add·metadata·to·the·documentation·entry.·You·do·this·by·adding146 <p>It·is·possible·to·add·metadata·to·the·documentation·entry.·You·do·this·by·adding
147 a·<code·class="inline">-moduledoc</code>·or·<code·class="inline">-doc</code>·attribute·with·a·map·as·argument.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7082322119-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="7082322119-1">)</span><span·class="p">.</span><span·class="w">147 a·<code·class="inline">-moduledoc</code>·or·<code·class="inline">-doc</code>·attribute·with·a·map·as·argument.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3288280388-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="3288280388-1">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;148 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;
149 A·module·for·basic·arithmetic.149 A·module·for·basic·arithmetic.
150 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">150 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">
151 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="7082322119-2">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p"·data-group-id="7082322119-2">}</span><span·class="p">.</span><span·class="w">151 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="3288280388-2">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p"·data-group-id="3288280388-2">}</span><span·class="p">.</span><span·class="w">
152 </span><span·class="w">152 </span><span·class="w">
153 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7082322119-3">(</span><span·class="p"·data-group-id="7082322119-4">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="7082322119-4">]</span><span·class="p"·data-group-id="7082322119-3">)</span><span·class="p">.</span><span·class="w">153 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3288280388-3">(</span><span·class="p"·data-group-id="3288280388-4">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="3288280388-4">]</span><span·class="p"·data-group-id="3288280388-3">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="w">154 </span><span·class="w">
155 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;Adds·two·numbers.&quot;</span><span·class="p">.</span><span·class="w">155 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;Adds·two·numbers.&quot;</span><span·class="p">.</span><span·class="w">
156 </span><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="7082322119-5">(</span><span·class="p"·data-group-id="7082322119-6">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p"·data-group-id="708232[·...·truncated·by·diffoscope;·len:·57,·SHA:·fdbe5757662703b81b9e23248b37c2c3fd96d5b827d53f4beecb35b735a705cb·...·]-5">)</span><span·class="p">.</span><span·class="w">156 </span><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="3288280388-5">(</span><span·class="p"·data-group-id="3288280388-6">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p"·data-group-id="328828[·...·truncated·by·diffoscope;·len:·57,·SHA:·6f7cc73ea67e436b389fde9a3d1f8f1b1bcd1c1d21a3a8c88fd17b0e4e803054·...·]-5">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="nf">add</span><span·class="p"·data-group-id="7082322119-7">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="7082322119-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><p>The·metadata·is·used·by·documentation·tools·to·provide·extra·information·to·the157 </span><span·class="nf">add</span><span·class="p"·data-group-id="3288280388-7">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="3288280388-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><p>The·metadata·is·used·by·documentation·tools·to·provide·extra·information·to·the
158 user.·There·can·be·multiple·metadata·documentation·entries,·in·which·case·the158 user.·There·can·be·multiple·metadata·documentation·entries,·in·which·case·the
159 maps·will·be·merged·with·the·latest·taking·precedence·if·there·are·duplicate159 maps·will·be·merged·with·the·latest·taking·precedence·if·there·are·duplicate
160 keys.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;Adds·two·numbers.&quot;</span><span·class="p">.</span><span·class="w">160 keys.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;Adds·two·numbers.&quot;</span><span·class="p">.</span><span·class="w">
161 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="p"·data-group-id="5209009477-1">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">author</span><span·class=[·...·truncated·by·diffoscope;·len:·143,·SHA:·c3933cefb4295f5bfa0df6fe70da80a0acdf0c5d17cf1a712f7b2b8948872b96·...·]-1">}</span><span·class="p">.</span><span·class="w">161 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="p"·data-group-id="2931154755-1">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">author</span><span·class=[·...·truncated·by·diffoscope;·len:·143,·SHA:·e796e412e14b97e5633aea1d78f0284aaa199e5206bc4e61c104b34a15f742c4·...·]-1">}</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="p"·data-group-id="5209009477-2">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;2.0&quot;</span><span·class="p"·data-group-id="5209009477-2">}</span><span·class="p">.</span><span·class="w">162 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="p"·data-group-id="2931154755-2">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;2.0&quot;</span><span·class="p"·data-group-id="2931154755-2">}</span><span·class="p">.</span><span·class="w">
163 </span><span·class="nf">add</span><span·class="p"·data-group-id="5209009477-3">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="5209009477-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><p>This·will·result·in·a·metadata·entry·of·<code·class="inline">#{since·=&gt;·&quot;2.0&quot;,·author·=&gt;·&quot;Joe&quot;}</code>.</p><p>The·keys·and·values·in·the·metadata·map·can·be·any·type,·but·it·is·recommended163 </span><span·class="nf">add</span><span·class="p"·data-group-id="2931154755-3">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="2931154755-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><p>This·will·result·in·a·metadata·entry·of·<code·class="inline">#{since·=&gt;·&quot;2.0&quot;,·author·=&gt;·&quot;Joe&quot;}</code>.</p><p>The·keys·and·values·in·the·metadata·map·can·be·any·type,·but·it·is·recommended
164 that·only·<a·href="data_types.html#atom">atoms</a>·are·used·for·keys·and164 that·only·<a·href="data_types.html#atom">atoms</a>·are·used·for·keys·and
165 <a·href="data_types.html#string">strings</a>·for·the·values.</p><h2·id="external-documentation-files"·class="section-heading">165 <a·href="data_types.html#string">strings</a>·for·the·values.</p><h2·id="external-documentation-files"·class="section-heading">
166 ··<a·href="#external-documentation-files"·class="hover-link">166 ··<a·href="#external-documentation-files"·class="hover-link">
167 ····<i·class="ri-link-m"·aria-hidden="true"></i>167 ····<i·class="ri-link-m"·aria-hidden="true"></i>
168 ··</a>168 ··</a>
169 ··<span·class="text">External·documentation·files</span>169 ··<span·class="text">External·documentation·files</span>
170 </h2>170 </h2>
171 <p>The·<code·class="inline">-moduledoc</code>·and·<code·class="inline">-doc</code>·can·also·be·placed·in·external·files.·To·do·so·use171 <p>The·<code·class="inline">-moduledoc</code>·and·<code·class="inline">-doc</code>·can·also·be·placed·in·external·files.·To·do·so·use
172 <code·class="inline">-doc·{file,·&quot;path/to/doc.md&quot;}</code>·to·point·to·the·documentation.·The·path·used·is172 <code·class="inline">-doc·{file,·&quot;path/to/doc.md&quot;}</code>·to·point·to·the·documentation.·The·path·used·is
173 relative·to·the·file·where·the·<code·class="inline">-doc</code>·attribute·is·located.·For·example:</p><pre><code·class="markdown">%%·doc/add.md173 relative·to·the·file·where·the·<code·class="inline">-doc</code>·attribute·is·located.·For·example:</p><pre><code·class="markdown">%%·doc/add.md
174 Adds·two·numbers.</code></pre><p>and</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·src/arith.erl</span><span·class="w">174 Adds·two·numbers.</code></pre><p>and</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·src/arith.erl</span><span·class="w">
175 </span><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="0381816808-1">(</span><span·class="p"·data-group-id="0381816808-2">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;../doc/add.md&quot;</span><span·class="p"·data-group-id="0381816808-2">}</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·ad6cf7dfaecb61d6ea0ad6e67e60377daec5b3e8ff775d85a41daacf893c6c5d·...·]8-1">)</span><span·class="p">.</span><span·class="w">175 </span><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="9947005348-1">(</span><span·class="p"·data-group-id="9947005348-2">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;../doc/add.md&quot;</span><span·class="p"·data-group-id="9947005348-2">}</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·3523806c7c0a69475e629dcc0477b2984df3f455fb2eca1753b88db71d9975b2·...·]8-1">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="nf">add</span><span·class="p"·data-group-id="0381816808-3">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="0381816808-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><h2·id="documenting-a-module"·class="section-heading">176 </span><span·class="nf">add</span><span·class="p"·data-group-id="9947005348-3">(</span><span·class="n">One</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Two</span><span·class="p"·data-group-id="9947005348-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">One</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Two</span><span·class="p">.</span></code></pre><h2·id="documenting-a-module"·class="section-heading">
177 ··<a·href="#documenting-a-module"·class="hover-link">177 ··<a·href="#documenting-a-module"·class="hover-link">
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Documenting·a·module</span>180 ··<span·class="text">Documenting·a·module</span>
181 </h2>181 </h2>
182 <p>The·module·description·should·include·details·on·how·to·use·the·API·and·examples182 <p>The·module·description·should·include·details·on·how·to·use·the·API·and·examples
183 of·the·different·functions·working·together.·Here·is·a·good·place·to·use·images183 of·the·different·functions·working·together.·Here·is·a·good·place·to·use·images
184 and·other·diagrams·to·better·show·the·usage·of·the·module.·Instead·of·writing·a184 and·other·diagrams·to·better·show·the·usage·of·the·module.·Instead·of·writing·a
185 long·text·in·the·<code·class="inline">moduledoc</code>·attribute,·it·could·be·better·to·break·it·out·into185 long·text·in·the·<code·class="inline">moduledoc</code>·attribute,·it·could·be·better·to·break·it·out·into
186 an·external·page.</p><p>The·<code·class="inline">moduledoc</code>·attribute·should·start·with·a·short·paragraph·describing·the186 an·external·page.</p><p>The·<code·class="inline">moduledoc</code>·attribute·should·start·with·a·short·paragraph·describing·the
187 module·and·then·go·into·greater·details.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2491412109-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="2491412109-1">)</span><span·class="p">.</span><span·class="w">187 module·and·then·go·into·greater·details.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5537556184-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="5537556184-1">)</span><span·class="p">.</span><span·class="w">
188 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;188 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;
189 ···A·module·for·basic·arithmetic.189 ···A·module·for·basic·arithmetic.
  
190 ···This·module·can·be·used·to·add·and·subtract·values.·For·example:190 ···This·module·can·be·used·to·add·and·subtract·values.·For·example:
  
191 ···```erlang191 ···```erlang
192 ···1&gt;·arith:substract(arith:add(2,·3),·1).192 ···1&gt;·arith:substract(arith:add(2,·3),·1).
Offset 203, 94 lines modifiedOffset 203, 94 lines modified
203 <p>There·are·three·reserved·metadata·keys·for·<code·class="inline">-moduledoc</code>:</p><ul><li><code·class="inline">since</code>·-·Shows·in·which·version·of·the·application·the·module·was·added.203 <p>There·are·three·reserved·metadata·keys·for·<code·class="inline">-moduledoc</code>:</p><ul><li><code·class="inline">since</code>·-·Shows·in·which·version·of·the·application·the·module·was·added.
204 If·this·is·added,·all·functions,·types,·and·callbacks·within·will·also·receive204 If·this·is·added,·all·functions,·types,·and·callbacks·within·will·also·receive
205 the·same·<code·class="inline">since</code>·value·unless·specified·in·the·metadata·of·the·function,·type205 the·same·<code·class="inline">since</code>·value·unless·specified·in·the·metadata·of·the·function,·type
206 or·callback.</li><li><code·class="inline">deprecated</code>·-·Shows·a·text·in·the·documentation·explaining·that·it·is206 or·callback.</li><li><code·class="inline">deprecated</code>·-·Shows·a·text·in·the·documentation·explaining·that·it·is
207 deprecated·and·what·to·use·instead.</li><li><code·class="inline">format</code>·-·The·format·to·use·for·all·documentation·in·this·module.·The207 deprecated·and·what·to·use·instead.</li><li><code·class="inline">format</code>·-·The·format·to·use·for·all·documentation·in·this·module.·The
208 default·is·<code·class="inline">text/markdown</code>.·It·should·be·written·using·the208 default·is·<code·class="inline">text/markdown</code>.·It·should·be·written·using·the
209 <a·href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">mime·type</a>209 <a·href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">mime·type</a>
210 of·the·format.</li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="9328628484-1">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;../doc/arith.asciidoc&quot;</span><span·class="p"·data-group-id="9328628484-1">}</span><span·class="p">.</span><span·class="w">210 of·the·format.</li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="0721948072-1">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;../doc/arith.asciidoc&quot;</span><span·class="p"·data-group-id="0721948072-1">}</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="9328628484-2">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;0.1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">format</span><span·class=[·...·truncated·by·diffoscope;·len:·153,·SHA:·5aa3a52d6488f91ef9730d97f03718902f76008c4c73c936ec0f883e8ef9b160·...·]-2">}</span><span·class="p">.</span><span·class="w">211 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="0721948072-2">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;0.1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">format</span><span·class=[·...·truncated·by·diffoscope;·len:·153,·SHA:·85a53fdcdc7f1cae93d38506e760ba88d4e80723e78ee10571d8c6ecfd104dec·...·]-2">}</span><span·class="p">.</span><span·class="w">
212 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="9328628484-3">#{</span><span·class="ss">deprecated</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;Use·the·Erlang·arithmetic·operators·instead.&quot;</span><span·class="p"·data-group-id="9328628484-3">}</span><span·class="p">.</span></code></pre><h2·id="documenting-functions-user-defined-types-and-callbacks"·class="section-heading">212 </span><span·class="p">-</span><span·class="na">moduledoc</span><span·class="w">·</span><span·class="p"·data-group-id="0721948072-3">#{</span><span·class="ss">deprecated</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;Use·the·Erlang·arithmetic·operators·instead.&quot;</span><span·class="p"·data-group-id="0721948072-3">}</span><span·class="p">.</span></code></pre><h2·id="documenting-functions-user-defined-types-and-callbacks"·class="section-heading">
213 ··<a·href="#documenting-functions-user-defined-types-and-callbacks"·class="hover-link">213 ··<a·href="#documenting-functions-user-defined-types-and-callbacks"·class="hover-link">
214 ····<i·class="ri-link-m"·aria-hidden="true"></i>214 ····<i·class="ri-link-m"·aria-hidden="true"></i>
215 ··</a>215 ··</a>
216 ··<span·class="text">Documenting·functions,·user-defined·types,·and·callbacks</span>216 ··<span·class="text">Documenting·functions,·user-defined·types,·and·callbacks</span>
217 </h2>217 </h2>
218 <p>Functions,·types,·and·callbacks·can·be·documented·using·the·<code·class="inline">-doc</code>·attribute.218 <p>Functions,·types,·and·callbacks·can·be·documented·using·the·<code·class="inline">-doc</code>·attribute.
219 Each·entry·should·start·with·a·short·paragraph·describing·the·purpose·of·entity,219 Each·entry·should·start·with·a·short·paragraph·describing·the·purpose·of·entity,
220 and·then·go·into·greater·detail·in·needed.</p><p>It·is·not·recommended·to·include·images·or·diagrams·in·this·documentation·as·it220 and·then·go·into·greater·detail·in·needed.</p><p>It·is·not·recommended·to·include·images·or·diagrams·in·this·documentation·as·it
221 is·used·by·IDEs·and·<a·href="../../lib/stdlib-6.2/doc/html/c.html#h/1"><code·class="inline">c:h/1</code></a>·to·show·the·documentation·to·the·user.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;221 is·used·by·IDEs·and·<a·href="../../lib/stdlib-6.2/doc/html/c.html#h/1"><code·class="inline">c:h/1</code></a>·to·show·the·documentation·to·the·user.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;
222 A·number·that·can·be·used·by·the·arith·module.222 A·number·that·can·be·used·by·the·arith·module.
  
223 We·use·a·special·number·here·so·that·we·know223 We·use·a·special·number·here·so·that·we·know
224 that·this·number·comes·from·this·module.224 that·this·number·comes·from·this·module.
225 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">225 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">
226 </span><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">number</span><span·class="p"·data-group-id="8166283824-1">(</span><span·class="p"·data-group-id="8166283824-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8166283824-2">{</span><span·class="ss">arith</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·400e09d7bf75119ca970e334e8e15413a85856133f3aa0e5074f738ea18195fa·...·]-2">}</span><span·class="p">.</span><span·class="w">226 </span><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">number</span><span·class="p"·data-group-id="7761476648-1">(</span><span·class="p"·data-group-id="7761476648-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7761476648-2">{</span><span·class="ss">arith</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·bbb55eec6647ef6293269db6a54a0485c499b10c8d3aeaf5b4c63e0bc8fb7d24·...·]-2">}</span><span·class="p">.</span><span·class="w">
227 </span><span·class="w">227 </span><span·class="w">
228 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;228 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;
229 Adds·two·numbers.229 Adds·two·numbers.
  
230 ###·Example:230 ###·Example:
  
231 ```231 ```
232 1&gt;·arith:add(arith:number(1),·arith:number(2)).·{number,·3}232 1&gt;·arith:add(arith:number(1),·arith:number(2)).·{number,·3}
233 ```233 ```
234 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">234 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">add</span><span·class="p"·data-group-id="8166283824-4">(</span><span·class="nf">number</span><span·class="p"·data-group-id="8166283824-5">(</span><span·class="p"·data-group-id="8166283824-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">number</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·339,·SHA:·faa751e9e4e30c46e047cdf57937aef8c6ff6c0d41efcb53a9fbb3e1e9672abb·...·]-7">)</span><span·class="p">.</span><span·class="w">235 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">add</span><span·class="p"·data-group-id="7761476648-4">(</span><span·class="nf">number</span><span·class="p"·data-group-id="7761476648-5">(</span><span·class="p"·data-group-id="7761476648-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">number</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·339,·SHA:·39652ab614953b666e28f137cf010f25e58667ea66b5d58858843453991e80f3·...·]-7">)</span><span·class="p">.</span><span·class="w">
236 </span><span·class="nf">add</span><span·class="p"·data-group-id="8166283824-8">(</span><span·class="p"·data-group-id="8166283824-9">{</span><span·class="ss">number</span><span·class="p">,</span><span·class="w">·</span><span·class="n">One</span><span·class="p"·data-group-id="8166283824-9">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·662,·SHA:·f41222135144135bcdc991ebccdb64b6e6a7f6c5c86b2f96f92e13542685f53b·...·]-11">}</span><span·class="p">.</span></code></pre><h3·id="doc-metadata"·class="section-heading">236 </span><span·class="nf">add</span><span·class="p"·data-group-id="7761476648-8">(</span><span·class="p"·data-group-id="7761476648-9">{</span><span·class="ss">number</span><span·class="p">,</span><span·class="w">·</span><span·class="n">One</span><span·class="p"·data-group-id="7761476648-9">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·662,·SHA:·2af17c7ff74c9c7a4a009cd77d3f7ef9f388002d84f02c0ed6af0354d7f1560c·...·]-11">}</span><span·class="p">.</span></code></pre><h3·id="doc-metadata"·class="section-heading">
237 ··<a·href="#doc-metadata"·class="hover-link">237 ··<a·href="#doc-metadata"·class="hover-link">
238 ····<i·class="ri-link-m"·aria-hidden="true"></i>238 ····<i·class="ri-link-m"·aria-hidden="true"></i>
239 ··</a>239 ··</a>
240 ··<span·class="text">Doc·metadata</span>240 ··<span·class="text">Doc·metadata</span>
241 </h3>241 </h3>
242 <p>There·are·four·reserved·metadata·keys·for·<code·class="inline">-doc</code>:</p><ul><li><p><code·class="inline">since·=&gt;·unicode:chardata()</code>·-·Shows·which·version·of·the·application·the242 <p>There·are·four·reserved·metadata·keys·for·<code·class="inline">-doc</code>:</p><ul><li><p><code·class="inline">since·=&gt;·unicode:chardata()</code>·-·Shows·which·version·of·the·application·the
243 module·was·added.</p></li><li><p><code·class="inline">deprecated·=&gt;·unicode:chardata()</code>·-·Shows·a·text·in·the·documentation243 module·was·added.</p></li><li><p><code·class="inline">deprecated·=&gt;·unicode:chardata()</code>·-·Shows·a·text·in·the·documentation
244 explaining·that·it·is·deprecated·and·what·to·use·instead.·The·compiler·will244 explaining·that·it·is·deprecated·and·what·to·use·instead.·The·compiler·will
245 automatically·insert·this·key·if·there·is·a·<code·class="inline">-deprecated</code>·attribute·marking·a245 automatically·insert·this·key·if·there·is·a·<code·class="inline">-deprecated</code>·attribute·marking·a
246 function·as·deprecated.</p></li><li><p><code·class="inline">equiv·=&gt;·unicode:chardata()·|·F/A·|·F(...)</code>·-·Notes·that·this·function·is·equivalent·to246 function·as·deprecated.</p></li><li><p><code·class="inline">equiv·=&gt;·unicode:chardata()·|·F/A·|·F(...)</code>·-·Notes·that·this·function·is·equivalent·to
Max diff block lines reached; 37324/66339 bytes (56.26%) of diff not shown.
7.16 KB
./usr/share/doc/erlang-doc/html/doc/system/drivers.html
    
Offset 122, 23 lines modifiedOffset 122, 23 lines modified
122 ··<span·class="text">Drivers·and·Concurrency</span>122 ··<span·class="text">Drivers·and·Concurrency</span>
123 </h2>123 </h2>
124 <p>The·runtime·system·always·takes·a·lock·before·running·any·code·in·a·driver.</p><p>By·default,·that·lock·is·at·the·driver·level,·that·is,·if·several·ports·have124 <p>The·runtime·system·always·takes·a·lock·before·running·any·code·in·a·driver.</p><p>By·default,·that·lock·is·at·the·driver·level,·that·is,·if·several·ports·have
125 been·opened·to·the·same·driver,·only·code·for·one·port·at·the·same·time·can·be125 been·opened·to·the·same·driver,·only·code·for·one·port·at·the·same·time·can·be
126 running.</p><p>A·driver·can·be·configured·to·have·one·lock·for·each·port·instead.</p><p>If·a·driver·is·used·in·a·functional·way·(that·is,·holds·no·state,·but·only·does126 running.</p><p>A·driver·can·be·configured·to·have·one·lock·for·each·port·instead.</p><p>If·a·driver·is·used·in·a·functional·way·(that·is,·holds·no·state,·but·only·does
127 some·heavy·calculation·and·returns·a·result),·several·ports·with·registered127 some·heavy·calculation·and·returns·a·result),·several·ports·with·registered
128 names·can·be·opened·beforehand,·and·the·port·to·be·used·can·be·chosen·based·on128 names·can·be·opened·beforehand,·and·the·port·to·be·used·can·be·chosen·based·on
129 the·scheduler·ID·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="9406894602-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="9406894602-2">(</span><span·class="p"·data-group-id="9406894602-2">)</span><span·class="p">,</span><span·class="w">129 the·scheduler·ID·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="5131373334-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="5131373334-2">(</span><span·class="p"·data-group-id="5131373334-2">)</span><span·class="p">,</span><span·class="w">
130 »       </span><span·class="p"·data-group-id="9406894602-3">{</span><span·class="ss">some_driver_01</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_02</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_03</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_04</span><span·class="p">,</span><span·class="w">130 »       </span><span·class="p"·data-group-id="5131373334-3">{</span><span·class="ss">some_driver_01</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_02</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_03</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_04</span><span·class="p">,</span><span·class="w">
131 »       ·</span><span·class="ss">some_driver_05</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_06</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_07</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_08</span><span·class="p">,</span><span·class="w">131 »       ·</span><span·class="ss">some_driver_05</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_06</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_07</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_08</span><span·class="p">,</span><span·class="w">
132 »       ·</span><span·class="ss">some_driver_09</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_10</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_11</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_12</span><span·class="p">,</span><span·class="w">132 »       ·</span><span·class="ss">some_driver_09</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_10</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_11</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_12</span><span·class="p">,</span><span·class="w">
133 »       ·</span><span·class="ss">some_driver_13</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_16</span><span·class="p"·data-group-id="9406894602-3">}</span><span·class="p"·data-group-id="9406894602-1">)</span><span·class="p">.</span><span·class="w">133 »       ·</span><span·class="ss">some_driver_13</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_14</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_15</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">some_driver_16</span><span·class="p"·data-group-id="5131373334-3">}</span><span·class="p"·data-group-id="5131373334-1">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">client_port</span><span·class="p"·data-group-id="9406894602-4">(</span><span·class="p"·data-group-id="9406894602-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">134 </span><span·class="nf">client_port</span><span·class="p"·data-group-id="5131373334-4">(</span><span·class="p"·data-group-id="5131373334-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
135 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="9406894602-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="9406894602-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="9406894602-6">)</span><span·class="w">·</span><span·class="ow">rem</span><span·class="w">·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="9406894602-7">(</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="9406894602-8">(</span><span·class="p"·data-group-id="9406894602-8">)</span><span·class="p"·data-group-id="9406894602-7">)</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w"> 
136 »       ····</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="9406894602-9">(</span><span·class="p"·data-group-id="9406894602-9">)</span><span·class="p"·data-group-id="9406894602-5">)</span><span·class="p">.</span></co[·...·truncated·by·diffoscope;·len:·89,·SHA:·aa315350b3c5d458adacb1d650a0680f6599dab7560522cff5dacd05f86c84c5·...·]135 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="5131373334-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="5131373334-6">(</span><span·class="ss">sc[·...·truncated·by·diffoscope;·len:·585,·SHA:·66baf3b352c6f57da7284c261afe82aec3941a48dde721f0d158883e1563a6d3·...·]
 136 »       ····</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="5131373334-9">(</span><span·class="p"·data-group-id="5131373334-9">)</span><span·class="p"·data-group-id="5131373334-5">)</span><span·class="p">.</span></code></pre><p>As·long·as·there·are·no·more·than·16·schedulers,·there·will·never·be·any·lock
137 contention·on·the·port·lock·for·the·driver.</p><h2·id="avoiding-copying-binaries-when-calling-a-driver"·class="section-heading">137 contention·on·the·port·lock·for·the·driver.</p><h2·id="avoiding-copying-binaries-when-calling-a-driver"·class="section-heading">
138 ··<a·href="#avoiding-copying-binaries-when-calling-a-driver"·class="hover-link">138 ··<a·href="#avoiding-copying-binaries-when-calling-a-driver"·class="hover-link">
139 ····<i·class="ri-link-m"·aria-hidden="true"></i>139 ····<i·class="ri-link-m"·aria-hidden="true"></i>
140 ··</a>140 ··</a>
141 ··<span·class="text">Avoiding·Copying·Binaries·When·Calling·a·Driver</span>141 ··<span·class="text">Avoiding·Copying·Binaries·When·Calling·a·Driver</span>
142 </h2>142 </h2>
143 <p>There·are·basically·two·ways·to·avoid·copying·a·binary·that·is·sent·to·a·driver:</p><ul><li><p>If·the·<code·class="inline">Data</code>·argument·for·<a·href="../../erts-15.2.2/doc/html/erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>·is·a143 <p>There·are·basically·two·ways·to·avoid·copying·a·binary·that·is·sent·to·a·driver:</p><ul><li><p>If·the·<code·class="inline">Data</code>·argument·for·<a·href="../../erts-15.2.2/doc/html/erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>·is·a
33.4 KB
./usr/share/doc/erlang-doc/html/doc/system/eff_guide_functions.html
    
Offset 122, 67 lines modifiedOffset 122, 67 lines modified
122 ··<span·class="text">Pattern·Matching</span>122 ··<span·class="text">Pattern·Matching</span>
123 </h2>123 </h2>
124 <p>Pattern·matching·in·function·head·as·well·as·in·<code·class="inline">case</code>·and·<code·class="inline">receive</code>·clauses·are124 <p>Pattern·matching·in·function·head·as·well·as·in·<code·class="inline">case</code>·and·<code·class="inline">receive</code>·clauses·are
125 optimized·by·the·compiler.·With·a·few·exceptions,·there·is·nothing·to·gain·by125 optimized·by·the·compiler.·With·a·few·exceptions,·there·is·nothing·to·gain·by
126 rearranging·clauses.</p><p>One·exception·is·pattern·matching·of·binaries.·The·compiler·does·not·rearrange126 rearranging·clauses.</p><p>One·exception·is·pattern·matching·of·binaries.·The·compiler·does·not·rearrange
127 clauses·that·match·binaries.·Placing·the·clause·that·matches·against·the·empty127 clauses·that·match·binaries.·Placing·the·clause·that·matches·against·the·empty
128 binary·<em>last</em>·is·usually·slightly·faster·than·placing·it·<em>first</em>.</p><p>The·following·is·a·rather·unnatural·example·to·show·another·exception·where128 binary·<em>last</em>·is·usually·slightly·faster·than·placing·it·<em>first</em>.</p><p>The·following·is·a·rather·unnatural·example·to·show·another·exception·where
129 rearranging·clauses·is·beneficial:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom_map1</span><span·class="p"·data-group-id="4106035773-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="4106035773-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">129 rearranging·clauses·is·beneficial:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom_map1</span><span·class="p"·data-group-id="3273465963-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="3273465963-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
130 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="4106035773-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="4106035773-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">130 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="3273465963-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="3273465963-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">
131 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="4106035773-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="4106035773-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">;</span><span·class="w">131 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="3273465963-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="3273465963-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">;</span><span·class="w">
132 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="4106035773-4">(</span><span·class="n">Int</span><span·class="p"·data-group-id="4106035773-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="4106035773-5">([·...·truncated·by·diffoscope;·len:·73,·SHA:·4b5422607af1fb4a0db666b1d0a9524c553d0e7fed863f153e51219ac95f1f0d·...·]3-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">;</span><span·class="w">132 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="3273465963-4">(</span><span·class="n">Int</span><span·class="p"·data-group-id="3273465963-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="3273465963-5">([·...·truncated·by·diffoscope;·len:·73,·SHA:·36ad459b8f7d4328a53ac2a6607ae4e2fdb9841c705e0e49aeec55e50d301775·...·]3-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">;</span><span·class="w">
133 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="4106035773-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="4106035773-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">;</span><span·class="w">133 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="3273465963-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="3273465963-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">;</span><span·class="w">
134 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="4106035773-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="4106035773-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">;</span><span·class="w">134 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="3273465963-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="3273465963-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">;</span><span·class="w">
135 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="4106035773-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="4106035773-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">.</span></code></pre><p>The·problem·is·the·clause·with·the·variable·<code·class="inline">Int</code>.·As·a·variable·can·match135 </span><span·class="nf">atom_map1</span><span·class="p"·data-group-id="3273465963-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="3273465963-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">.</span></code></pre><p>The·problem·is·the·clause·with·the·variable·<code·class="inline">Int</code>.·As·a·variable·can·match
136 anything,·including·the·atoms·<code·class="inline">four</code>,·<code·class="inline">five</code>,·and·<code·class="inline">six</code>,·which·the·following136 anything,·including·the·atoms·<code·class="inline">four</code>,·<code·class="inline">five</code>,·and·<code·class="inline">six</code>,·which·the·following
137 clauses·also·match,·the·compiler·must·generate·suboptimal·code·that·executes·as137 clauses·also·match,·the·compiler·must·generate·suboptimal·code·that·executes·as
138 follows:</p><ul><li>First,·the·input·value·is·compared·to·<code·class="inline">one</code>,·<code·class="inline">two</code>,·and·<code·class="inline">three</code>·(using·a138 follows:</p><ul><li>First,·the·input·value·is·compared·to·<code·class="inline">one</code>,·<code·class="inline">two</code>,·and·<code·class="inline">three</code>·(using·a
139 single·instruction·that·does·a·binary·search;·thus,·quite·efficient·even·if139 single·instruction·that·does·a·binary·search;·thus,·quite·efficient·even·if
140 there·are·many·values)·to·select·which·one·of·the·first·three·clauses·to140 there·are·many·values)·to·select·which·one·of·the·first·three·clauses·to
141 execute·(if·any).</li><li>If·none·of·the·first·three·clauses·match,·the·fourth·clause·match·as·a141 execute·(if·any).</li><li>If·none·of·the·first·three·clauses·match,·the·fourth·clause·match·as·a
142 variable·always·matches.</li><li>If·the·guard·test·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_integer/1"><code·class="inline">is_integer(Int)</code></a>·succeeds,·the·fourth142 variable·always·matches.</li><li>If·the·guard·test·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_integer/1"><code·class="inline">is_integer(Int)</code></a>·succeeds,·the·fourth
143 clause·is·executed.</li><li>If·the·guard·test·fails,·the·input·value·is·compared·to·<code·class="inline">four</code>,·<code·class="inline">five</code>,·and143 clause·is·executed.</li><li>If·the·guard·test·fails,·the·input·value·is·compared·to·<code·class="inline">four</code>,·<code·class="inline">five</code>,·and
144 <code·class="inline">six</code>,·and·the·appropriate·clause·is·selected.·(There·is·a·<code·class="inline">function_clause</code>144 <code·class="inline">six</code>,·and·the·appropriate·clause·is·selected.·(There·is·a·<code·class="inline">function_clause</code>
 145 exception·if·none·of·the·values·matched.)</li></ul><p>Rewriting·to·either:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom_map2</span><span·class="p"·data-group-id="6962257750-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="6962257750-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
 146 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="6962257750-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="6962257750-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">
 147 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="6962257750-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="6962257750-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">;</span><span·class="w">
 148 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="6962257750-4">(</span><span·class="ss">four</span><span·class="p"·data-group-id="6962257750-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">;</span><span·class="w">
 149 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="6962257750-5">(</span><span·class="ss">five</span><span·class="p"·data-group-id="6962257750-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">;</span><span·class="w">
 150 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="6962257750-6">(</span><span·class="ss">six</span><span·class="p"·data-group-id="6962257750-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">;</span><span·class="w">
 151 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="6962257750-7">(</span><span·class="n">Int</span><span·class="p"·data-group-id="6962257750-7">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="6962257750-8">(</span><span·class="n">Int</span><span·class="p"·data-group-id="6962257750-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>or:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom_map3</span><span·class="p"·data-group-id="7610902053-1">(</span><span·class="n">Int</span><span·class="p"·data-group-id="7610902053-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="7610902053-2">(</span><span·class="n">Int</span><span·class="p"·data-group-id="7610902053-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">;</span><span·class="w">
145 exception·if·none·of·the·values·matched.)</li></ul><p>Rewriting·to·either:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom_map2</span><span·class="p"·data-group-id="3461081927-1">(</span><span·class="ss">o[·...·truncated·by·diffoscope;·len:·52,·SHA:·2eb59524fee6032d4148ee89766f31a125dc091b0b4672395df7169052e59dc3·...·]">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">152 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="7610902053-3">(</span><span·class="ss">one</span><span·class="p"·data-group-id="7610902053-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
146 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="3461081927-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="3461081927-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">153 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="7610902053-4">(</span><span·class="ss">two</span><span·class="p"·data-group-id="7610902053-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">
147 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="3461081927-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="3461081927-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">;</span><span·class="w">154 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="7610902053-5">(</span><span·class="ss">three</span><span·class="p"·data-group-id="7610902053-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">;</span><span·class="w">
148 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="3461081927-4">(</span><span·class="ss">four</span><span·class="p"·data-group-id="3461081927-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">;</span><span·class="w">155 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="7610902053-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="7610902053-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">;</span><span·class="w">
149 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="3461081927-5">(</span><span·class="ss">five</span><span·class="p"·data-group-id="3461081927-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">;</span><span·class="w">156 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="7610902053-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="7610902053-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">;</span><span·class="w">
 157 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="7610902053-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="7610902053-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">.</span></code></pre><p>gives·slightly·more·efficient·matching·code.</p><p>Another·example:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">map_pairs1</span><span·class="p"·data-group-id="6111285415-1">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6111285415-2">[</span><span·class="p"·data-group-id="6111285415-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ys</span><span·class="p"·data-group-id="6111285415-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="3461081927-6">(</span><span·class="ss">six</span><span·class="p"·data-group-id="3461081927-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">;</span><span·class="w"> 
151 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="3461081927-7">(</span><span·class="n">Int</span><span·class="p"·data-group-id="3461081927-7">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="3461081927-8">(</span><span·class="n">Int</span><span·class="p"·data-group-id="3461081927-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>or:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom_map3</span><span·class="p"·data-group-id="9932240677-1">(</span><span·class="n">Int</span><span·class="p"·data-group-id="9932240677-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="9932240677-2">(</span><span·class="n">Int</span><span·class="p"·data-group-id="9932240677-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">;</span><span·class="w"> 
152 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="9932240677-3">(</span><span·class="ss">one</span><span·class="p"·data-group-id="9932240677-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w"> 
153 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="9932240677-4">(</span><span·class="ss">two</span><span·class="p"·data-group-id="9932240677-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w"> 
154 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="9932240677-5">(</span><span·class="ss">three</span><span·class="p"·data-group-id="9932240677-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">;</span><span·class="w"> 
155 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="9932240677-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="9932240677-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">;</span><span·class="w"> 
156 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="9932240677-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="9932240677-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">;</span><span·class="w"> 
157 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="9932240677-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="9932240677-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">.</span></code></pre><p>gives·slightly·more·efficient·matching·code.</p><p>Another·example:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">map_pairs1</span><span·class="p"·data-group-id="2125595691-1">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2125595691-2">[</span><span·class="p"·data-group-id="2125595691-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ys</span><span·class="p"·data-group-id="2125595691-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
158 ····</span><span·class="n">Ys</span><span·class="p">;</span><span·class="w">158 ····</span><span·class="n">Ys</span><span·class="p">;</span><span·class="w">
159 </span><span·class="nf">map_pairs1</span><span·class="p"·data-group-id="2125595691-3">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Xs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2125595691-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·e8c7db25f7b5770dbad1720d1323c64e0d07eb8374c951e04e445f8b6c8e6dc9·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 </span><span·class="nf">map_pairs1</span><span·class="p"·data-group-id="6111285415-3">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Xs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6111285415-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·6272fb0e85fa6cf05fdfa4d45619178c26669bf09849bb5a40bcd93243b315f4·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</span><span·class="n">Xs</span><span·class="p">;</span><span·class="w">160 ····</span><span·class="n">Xs</span><span·class="p">;</span><span·class="w">
161 </span><span·class="nf">map_pairs1</span><span·class="p"·data-group-id="2125595691-5">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2125595691-6">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="212[·...·truncated·by·diffoscope;·len:·287,·SHA:·a59cdeccb68b50293a0be35aa0eca7a520dd45226c38d8b724862f263648486a·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 </span><span·class="nf">map_pairs1</span><span·class="p"·data-group-id="6111285415-5">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6111285415-6">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="611[·...·truncated·by·diffoscope;·len:·287,·SHA:·85c5e67d039f20f5abc99e71336c4470f351e643c2ca68587b6cb2e1731654c7·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="2125595691-8">[</span><span·class="n">Map</span><span·class="p"·data-group-id="2125595691-9">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2125595691-9">)</span><span·[·...·truncated·by·diffoscope;·len:·373,·SHA:·87f8e4656c84785f415095f2377336c50663ee0a863bcc999e38abb97c217c16·...·]-8">]</span><span·class="p">.</span></code></pre><p>The·first·argument·is·<em>not</em>·a·problem.·It·is·variable,·but·it·is·a·variable·in162 ····</span><span·class="p"·data-group-id="6111285415-8">[</span><span·class="n">Map</span><span·class="p"·data-group-id="6111285415-9">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="6111285415-9">)</span><span·[·...·truncated·by·diffoscope;·len:·373,·SHA:·4333ad3aeff280a884ec176ca3be0d4825827a27929d63e68f843d9cce430adc·...·]-8">]</span><span·class="p">.</span></code></pre><p>The·first·argument·is·<em>not</em>·a·problem.·It·is·variable,·but·it·is·a·variable·in
163 all·clauses.·The·problem·is·the·variable·in·the·second·argument,·<code·class="inline">Xs</code>,·in·the163 all·clauses.·The·problem·is·the·variable·in·the·second·argument,·<code·class="inline">Xs</code>,·in·the
164 middle·clause.·Because·the·variable·can·match·anything,·the·compiler·is·not164 middle·clause.·Because·the·variable·can·match·anything,·the·compiler·is·not
165 allowed·to·rearrange·the·clauses,·but·must·generate·code·that·matches·them·in165 allowed·to·rearrange·the·clauses,·but·must·generate·code·that·matches·them·in
166 the·order·written.</p><p>If·the·function·is·rewritten·as·follows,·the·compiler·is·free·to·rearrange·the166 the·order·written.</p><p>If·the·function·is·rewritten·as·follows,·the·compiler·is·free·to·rearrange·the
167 clauses:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">map_pairs2</span><span·class="p"·data-group-id="4197982742-1">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4197982742-2">[</span><span·class="p"·data-group-id="4197982742-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·a8ea8656e4e4cc55e244cae242236b05aba28e5e89f117a4cbdda26deb4ade19·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 clauses:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">map_pairs2</span><span·class="p"·data-group-id="7468476574-1">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7468476574-2">[</span><span·class="p"·data-group-id="7468476574-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·f341bdbc2ef71ff0b6830a39b0288ac7aeb55966554489e8a29bf7fc346fe49b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ····</span><span·class="n">Ys</span><span·class="p">;</span><span·class="w">168 ····</span><span·class="n">Ys</span><span·class="p">;</span><span·class="w">
169 </span><span·class="nf">map_pairs2</span><span·class="p"·data-group-id="4197982742-3">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4197982742-4">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class[·...·truncated·by·diffoscope;·len:·310,·SHA:·85ce7fa4566cf6b89de0ad1dbb0307189681a4b4028e67d7ba1d92a7a83def02·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">169 </span><span·class="nf">map_pairs2</span><span·class="p"·data-group-id="7468476574-3">(</span><span·class="p">_</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7468476574-4">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class[·...·truncated·by·diffoscope;·len:·310,·SHA:·6384e62f341aee7185d13c643c779a42abd101ee849fbea7bbc57653fd715d60·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ····</span><span·class="n">Xs</span><span·class="p">;</span><span·class="w">170 ····</span><span·class="n">Xs</span><span·class="p">;</span><span·class="w">
171 </span><span·class="nf">map_pairs2</span><span·class="p"·data-group-id="4197982742-6">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4197982742-7">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="419[·...·truncated·by·diffoscope;·len:·287,·SHA:·db8d30305f9d02e4f1dbb088bbbfccf3193ad63c2c5c80de13204a347db59ef2·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 </span><span·class="nf">map_pairs2</span><span·class="p"·data-group-id="7468476574-6">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7468476574-7">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="746[·...·truncated·by·diffoscope;·len:·287,·SHA:·09d21cfd43feac36cf742814b4b72722b911fd3717566a1425433402f3471d56·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="4197982742-9">[</span><span·class="n">Map</span><span·class="p"·data-group-id="4197982742-10">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="4197982742-10">)</span><spa[·...·truncated·by·diffoscope;·len:·898,·SHA:·45fd2123f44397f07765314fcb9fbee6cfaf32d8225dfc28401a27fbbabc4ff7·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ····</span><span·class="p"·data-group-id="7468476574-9">[</span><span·class="n">Map</span><span·class="p"·data-group-id="7468476574-10">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="7468476574-10">)</span><spa[·...·truncated·by·diffoscope;·len:·898,·SHA:·15e2f5e56b88abc1918041522efc73086a08cc15ea33bbd662990a07ac5da271·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
173 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Xs0</span><span·class="w">·</span><span·class="k">of</span><span·class="w">173 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Xs0</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
174 »       </span><span·class="p"·data-group-id="0545274146-2">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="0545274146-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 »       </span><span·class="p"·data-group-id="0265885732-2">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="0265885732-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Ys0</span><span·class="w">·</span><span·class="k">of</span><span·class="w">175 »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Ys0</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
176 »       »       </span><span·class="p"·data-group-id="0545274146-3">[</span><span·class="n">Y</span><span·class="p">|</span><span·class="n">Ys</span><span·class="p"·data-group-id="0545274146-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 »       »       </span><span·class="p"·data-group-id="0265885732-3">[</span><span·class="n">Y</span><span·class="p">|</span><span·class="n">Ys</span><span·class="p"·data-group-id="0265885732-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 »       »       ····</span><span·class="p"·data-group-id="0545274146-4">[</span><span·class="n">Map</span><span·class="p"·data-group-id="0545274146-5">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="0545274146-5">)</span><span·c[·...·truncated·by·diffoscope;·len:·378,·SHA:·069f8ea09b03ff123c103ca1374f4f1855986108d3bb7f6f457d3a5613dbf391·...·]-4">]</span><span·class="p">;</span><span·class="w">177 »       »       ····</span><span·class="p"·data-group-id="0265885732-4">[</span><span·class="n">Map</span><span·class="p"·data-group-id="0265885732-5">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="0265885732-5">)</span><span·c[·...·truncated·by·diffoscope;·len:·378,·SHA:·b10e411c5ba1f143290d0f8ed3596cb91b6a04cacc0e5ddeba33846b39af4c78·...·]-4">]</span><span·class="p">;</span><span·class="w">
178 »       »       </span><span·class="p"·data-group-id="0545274146-7">[</span><span·class="p"·data-group-id="0545274146-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 »       »       </span><span·class="p"·data-group-id="0265885732-7">[</span><span·class="p"·data-group-id="0265885732-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 »       »       ····</span><span·class="n">Xs0</span><span·class="w">179 »       »       ····</span><span·class="n">Xs0</span><span·class="w">
180 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">180 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
181 »       </span><span·class="p"·data-group-id="0545274146-8">[</span><span·class="p"·data-group-id="0545274146-8">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">181 »       </span><span·class="p"·data-group-id="0265885732-8">[</span><span·class="p"·data-group-id="0265885732-8">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
182 »       ····</span><span·class="n">Ys0</span><span·class="w">182 »       ····</span><span·class="n">Ys0</span><span·class="w">
183 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>This·is·slightly·faster·for·probably·the·most·common·case·that·the·input·lists183 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>This·is·slightly·faster·for·probably·the·most·common·case·that·the·input·lists
184 are·not·empty·or·very·short.·(Another·advantage·is·that·Dialyzer·can·deduce·a184 are·not·empty·or·very·short.·(Another·advantage·is·that·Dialyzer·can·deduce·a
185 better·type·for·the·<code·class="inline">Xs</code>·variable.)</p><h2·id="function-calls"·class="section-heading">185 better·type·for·the·<code·class="inline">Xs</code>·variable.)</p><h2·id="function-calls"·class="section-heading">
186 ··<a·href="#function-calls"·class="hover-link">186 ··<a·href="#function-calls"·class="hover-link">
187 ····<i·class="ri-link-m"·aria-hidden="true"></i>187 ····<i·class="ri-link-m"·aria-hidden="true"></i>
188 ··</a>188 ··</a>
65.7 KB
./usr/share/doc/erlang-doc/html/doc/system/eff_guide_processes.html
    
Offset 119, 45 lines modifiedOffset 119, 45 lines modified
119 ··<a·href="#creating-an-erlang-process"·class="hover-link">119 ··<a·href="#creating-an-erlang-process"·class="hover-link">
120 ····<i·class="ri-link-m"·aria-hidden="true"></i>120 ····<i·class="ri-link-m"·aria-hidden="true"></i>
121 ··</a>121 ··</a>
122 ··<span·class="text">Creating·an·Erlang·Process</span>122 ··<span·class="text">Creating·an·Erlang·Process</span>
123 </h2>123 </h2>
124 <p>An·Erlang·process·is·lightweight·compared·to·threads·and·processes·in·operating124 <p>An·Erlang·process·is·lightweight·compared·to·threads·and·processes·in·operating
125 systems.</p><p>A·newly·spawned·Erlang·process·uses·327·words·of·memory.·The·size·can·be·found125 systems.</p><p>A·newly·spawned·Erlang·process·uses·327·words·of·memory.·The·size·can·be·found
126 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">27</span><span·class="w">·</span><span·class="p"·data-group-id="7550316526-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p">.</span><span·class="mi">3</span><span·class="p"·data-group-id="7550316526-1">]</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·1122,·SHA:·7ac29e3b4b4cb6dc500877d45d4aa13531876bf4358a6683b1890e628ac6ce55·...·]-6">]</span><span·class="w">126 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">27</span><span·class="w">·</span><span·class="p"·data-group-id="3652210130-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p">.</span><span·class="mi">3</span><span·class="p"·data-group-id="3652210130-1">]</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·1122,·SHA:·8574e4df431da91bc82ff7d86fb5d388169bb7682fd5c3a66402d0ae3a6c2ce3·...·]-6">]</span><span·class="w">
  
127 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V14</span><span·class="p">.</span><span·class="mf">2.3</span><span·class="w">·</span><span·class="p"·data-group-id="7550316526-7">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·92ef18eef28b554d4a66e28bc284f8f18f6486b736fc09368046a5bcd53946ce·...·]-7">)</span><span·class="gp·unselectable">127 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V14</span><span·class="p">.</span><span·class="mf">2.3</span><span·class="w">·</span><span·class="p"·data-group-id="3652210130-7">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·3f62e7fbbdc989ad5d9ca0b832c8b856a641323bf2fc143568fae31d0d41b830·...·]-7">)</span><span·class="gp·unselectable">
128 1&gt;·</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7550316526-9">(</span><span·class="p"·data-group-id="7550316526-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">end</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">128 1&gt;·</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3652210130-9">(</span><span·class="p"·data-group-id="3652210130-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">end</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
129 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">43.39164016</span><span·class="o">&gt;</span><span·class="gp·unselectable">129 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">43.39164016</span><span·class="o">&gt;</span><span·class="gp·unselectable">
130 2&gt;·</span><span·class="p"·data-group-id="7550316526-10">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="7550316526-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">process_info</[·...·truncated·by·diffoscope;·len:·341,·SHA:·4caaf14406362829dea14ba2983c7f6f0181467a6e5c00768230bc160a95b398·...·]-11">)</span><span·class="p">.</span><span·class="w">130 2&gt;·</span><span·class="p"·data-group-id="3652210130-10">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="3652210130-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">process_info</[·...·truncated·by·diffoscope;·len:·341,·SHA:·5e99bed3d70cf7cbdf508f3a6b9e2aa12f8370d7f778f03e3f786b450171eb97·...·]-11">)</span><span·class="p">.</span><span·class="w">
131 </span><span·class="p"·data-group-id="7550316526-13">{</span><span·class="nb">memory</span><span·class="p">,</span><span·class="mi">2616</span><span·class="p"·data-group-id="7550316526-13">}</span><span·class="gp·unselectable">131 </span><span·class="p"·data-group-id="3652210130-13">{</span><span·class="nb">memory</span><span·class="p">,</span><span·class="mi">2616</span><span·class="p"·data-group-id="3652210130-13">}</span><span·class="gp·unselectable">
132 3&gt;·</span><span·class="n">Bytes</span><span·class="w">·</span><span·class="ow">div</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="7550316526-14">(</span><span·class="ss">wordsize</span><span·class="p"·data-group-id="7550316526-14">)</span><span·class="p">.</span><span·class="w">132 3&gt;·</span><span·class="n">Bytes</span><span·class="w">·</span><span·class="ow">div</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="3652210130-14">(</span><span·class="ss">wordsize</span><span·class="p"·data-group-id="3652210130-14">)</span><span·class="p">.</span><span·class="w">
133 </span><span·class="mi">327</span></code></pre><p>The·size·includes·233·words·for·the·heap·area·(which·includes·the·stack).·The133 </span><span·class="mi">327</span></code></pre><p>The·size·includes·233·words·for·the·heap·area·(which·includes·the·stack).·The
134 garbage·collector·increases·the·heap·as·needed.</p><p>The·main·(outer)·loop·for·a·process·<em>must</em>·be·tail-recursive.·Otherwise,·the134 garbage·collector·increases·the·heap·as·needed.</p><p>The·main·(outer)·loop·for·a·process·<em>must</em>·be·tail-recursive.·Otherwise,·the
135 stack·grows·until·the·process·terminates.</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="7475092724-1">(</span><span·class="p"·data-group-id="7475092724-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">135 stack·grows·until·the·process·terminates.</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="2363035630-1">(</span><span·class="p"·data-group-id="2363035630-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
136 ··</span><span·class="k">receive</span><span·class="w">136 ··</span><span·class="k">receive</span><span·class="w">
137 ·····</span><span·class="p"·data-group-id="7475092724-2">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7475092724-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">137 ·····</span><span·class="p"·data-group-id="2363035630-2">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="2363035630-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
138 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="7475092724-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7475092724-3">)</span><span·class="p">,</span><span·class="w">138 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="2363035630-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2363035630-3">)</span><span·class="p">,</span><span·class="w">
139 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7475092724-4">(</span><span·class="p"·data-group-id="7475092724-4">)</span><span·class="p">;</span><span·class="w">139 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="2363035630-4">(</span><span·class="p"·data-group-id="2363035630-4">)</span><span·class="p">;</span><span·class="w">
140 ·····</span><span·class="p"·data-group-id="7475092724-5">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7475092724-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 ·····</span><span·class="p"·data-group-id="2363035630-5">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="2363035630-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ··········</span><span·class="n">Reply</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="7475092724-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7475092724-6">)</span><span·class="p">,</span><span·class="w">141 ··········</span><span·class="n">Reply</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="2363035630-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2363035630-6">)</span><span·class="p">,</span><span·class="w">
142 ··········</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p">,</span><span·class="w">142 ··········</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p">,</span><span·class="w">
143 ··········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7475092724-7">(</span><span·class="p"·data-group-id="7475092724-7">)</span><span·class="w">143 ··········</span><span·class="nf">loop</span><span·class="p"·data-group-id="2363035630-7">(</span><span·class="p"·data-group-id="2363035630-7">)</span><span·class="w">
144 ··</span><span·class="k">end</span><span·class="p">,</span><span·class="w">144 ··</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
145 ··</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7475092724-8">(</span><span·class="s">&quot;Message·is·processed</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7475092724-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·24444001b4c7acab98fa6f29ff9712f83d9a113165edce2a313ad5ced60b7725·...·]-8">)</span><span·class="p">.</span></code></pre><p>The·call·to·<a·href="../../lib/stdlib-6.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·will·never·be·executed,·but·a·return·address·will145 ··</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2363035630-8">(</span><span·class="s">&quot;Message·is·processed</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2363035630-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·b00152a08cfb0563b642d829d0d8729f1e504f8d3f5d4fed5a1c16161aeecf3a·...·]-8">)</span><span·class="p">.</span></code></pre><p>The·call·to·<a·href="../../lib/stdlib-6.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·will·never·be·executed,·but·a·return·address·will
146 still·be·pushed·to·the·stack·each·time·<code·class="inline">loop/0</code>·is·called·recursively.·The146 still·be·pushed·to·the·stack·each·time·<code·class="inline">loop/0</code>·is·called·recursively.·The
147 correct·tail-recursive·version·of·the·function·looks·as·follows:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="4107877842-1">(</span><span·class="p"·data-group-id="4107877842-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">147 correct·tail-recursive·version·of·the·function·looks·as·follows:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="7970670605-1">(</span><span·class="p"·data-group-id="7970670605-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
148 ···</span><span·class="k">receive</span><span·class="w">148 ···</span><span·class="k">receive</span><span·class="w">
149 ······</span><span·class="p"·data-group-id="4107877842-2">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="4107877842-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ······</span><span·class="p"·data-group-id="7970670605-2">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7970670605-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="4107877842-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="4107877842-3">)</span><span·class="p">,</span><span·class="w">150 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="7970670605-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7970670605-3">)</span><span·class="p">,</span><span·class="w">
151 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="4107877842-4">(</span><span·class="p"·data-group-id="4107877842-4">)</span><span·class="p">;</span><span·class="w">151 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7970670605-4">(</span><span·class="p"·data-group-id="7970670605-4">)</span><span·class="p">;</span><span·class="w">
152 ······</span><span·class="p"·data-group-id="4107877842-5">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="4107877842-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 ······</span><span·class="p"·data-group-id="7970670605-5">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7970670605-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ·········</span><span·class="n">Reply</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="4107877842-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="4107877842-6">)</span><span·class="p">,</span><span·class="w">153 ·········</span><span·class="n">Reply</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="7970670605-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7970670605-6">)</span><span·class="p">,</span><span·class="w">
154 ·········</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p">,</span><span·class="w">154 ·········</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p">,</span><span·class="w">
155 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="4107877842-7">(</span><span·class="p"·data-group-id="4107877842-7">)</span><span·class="w">155 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7970670605-7">(</span><span·class="p"·data-group-id="7970670605-7">)</span><span·class="w">
156 ·</span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="initial-heap-size"·class="section-heading">156 ·</span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="initial-heap-size"·class="section-heading">
157 ··<a·href="#initial-heap-size"·class="hover-link">157 ··<a·href="#initial-heap-size"·class="hover-link">
158 ····<i·class="ri-link-m"·aria-hidden="true"></i>158 ····<i·class="ri-link-m"·aria-hidden="true"></i>
159 ··</a>159 ··</a>
160 ··<span·class="text">Initial·Heap·Size</span>160 ··<span·class="text">Initial·Heap·Size</span>
161 </h3>161 </h3>
162 <p>The·default·initial·heap·size·of·233·words·is·quite·conservative·to·support162 <p>The·default·initial·heap·size·of·233·words·is·quite·conservative·to·support
Offset 189, 30 lines modifiedOffset 189, 30 lines modified
189 ····<i·class="ri-link-m"·aria-hidden="true"></i>189 ····<i·class="ri-link-m"·aria-hidden="true"></i>
190 ··</a>190 ··</a>
191 ··<span·class="text">Receiving·messages</span>191 ··<span·class="text">Receiving·messages</span>
192 </h2>192 </h2>
193 <p>The·cost·of·receiving·messages·depends·on·how·complicated·the·<code·class="inline">receive</code>193 <p>The·cost·of·receiving·messages·depends·on·how·complicated·the·<code·class="inline">receive</code>
194 expression·is.·A·simple·expression·that·matches·any·message·is·very·cheap194 expression·is.·A·simple·expression·that·matches·any·message·is·very·cheap
195 because·it·retrieves·the·first·message·in·the·message·queue:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">195 because·it·retrieves·the·first·message·in·the·message·queue:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">
196 ····</span><span·class="n">Message</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="0591663261-1">(</span><span·class="n">Message</span><span·class="p"·data-group-id="0591663261-1">)</span><span·class="w">196 ····</span><span·class="n">Message</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="4143891452-1">(</span><span·class="n">Message</span><span·class="p"·data-group-id="4143891452-1">)</span><span·class="w">
197 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>However,·this·is·not·always·convenient:·we·can·receive·a·message·that·we·do·not197 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>However,·this·is·not·always·convenient:·we·can·receive·a·message·that·we·do·not
198 know·how·to·handle·at·this·point,·so·it·is·common·to·only·match·the·messages·we198 know·how·to·handle·at·this·point,·so·it·is·common·to·only·match·the·messages·we
199 expect:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">199 expect:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">
200 ····</span><span·class="p"·data-group-id="5412240815-1">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="5412240815-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·4c5611080c5c237f931dbf1e280c08d946bea3538ff841108cb72ca2ceb57549·...·]-2">)</span><span·class="w">200 ····</span><span·class="p"·data-group-id="3094585684-1">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="3094585684-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·137f8be49eef3e7501536214921be15d7654a6c91c5b367d59e1f0ad24c08f9c·...·]-2">)</span><span·class="w">
201 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>While·this·is·convenient·it·means·that·the·entire·message·queue·must·be·searched201 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>While·this·is·convenient·it·means·that·the·entire·message·queue·must·be·searched
202 until·it·finds·a·matching·message.·This·is·very·expensive·for·processes·with202 until·it·finds·a·matching·message.·This·is·very·expensive·for·processes·with
203 long·message·queues,·so·there·is·an·optimization·for·the·common·case·of203 long·message·queues,·so·there·is·an·optimization·for·the·common·case·of
204 sending·a·request·and·waiting·for·a·response·shortly·after:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MRef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">monitor</span><span·class="p"·data-group-id="3158221024-1">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Process</span><span·class="p"·data-group-id="3158221024-1">)</span><span·class="p">,</span><span·class="w">204 sending·a·request·and·waiting·for·a·response·shortly·after:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MRef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">monitor</span><span·class="p"·data-group-id="5212689179-1">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Process</span><span·class="p"·data-group-id="5212689179-1">)</span><span·class="p">,</span><span·class="w">
205 </span><span·class="n">Process</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="3158221024-2">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3158221024-3">(</span><span·class="p"·data-group-id="3158221024-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·668891d320593766979ee58253a200090e4c06a4cc5101ce321d951d5b7c4dde·...·]-2">}</span><span·class="p">,</span><span·class="w">205 </span><span·class="n">Process</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5212689179-2">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5212689179-3">(</span><span·class="p"·data-group-id="5212689179-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·e5840e506f38928767ac9eff04bd385bdc2bc248537f7b7450249a5ddc379c3e·...·]-2">}</span><span·class="p">,</span><span·class="w">
206 </span><span·class="k">receive</span><span·class="w">206 </span><span·class="k">receive</span><span·class="w">
207 ····</span><span·class="p"·data-group-id="3158221024-4">{</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p"·data-group-id="3158221024-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">207 ····</span><span·class="p"·data-group-id="5212689179-4">{</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p"·data-group-id="5212689179-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
208 ········</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="3158221024-5">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3158221024-6">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="3158221024-6">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·a471e994499b7fe1ae43bc992ba662621ec7516033c499f68de695b8fffea230·...·]-5">)</span><span·class="p">,</span><span·class="w">208 ········</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="5212689179-5">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5212689179-6">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="5212689179-6">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·35e4613b138c9d6d03aa31dfe7db9f01bbdbfbb0e59347f5b073cb3153c10fa0·...·]-5">)</span><span·class="p">,</span><span·class="w">
209 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="3158221024-7">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="3158221024-7">)</span><span·class="p">;</span><span·class="w">209 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="5212689179-7">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="5212689179-7">)</span><span·class="p">;</span><span·class="w">
210 ····</span><span·class="p"·data-group-id="3158221024-8">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·141,·SHA:·2284fd677744fa326d509a1b1e3dc954bd52facf448387d361f4c7afef164896·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 ····</span><span·class="p"·data-group-id="5212689179-8">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·141,·SHA:·cf7cba2eda9ca673fbd64267f99d0754b7cef4c46ebc08cda0da88695fcc1592·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ········</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="3158221024-9">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="3158221024-9">)</span><span·class="w">211 ········</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="5212689179-9">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="5212689179-9">)</span><span·class="w">
212 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Since·the·compiler·knows·that·the·reference·created·by212 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Since·the·compiler·knows·that·the·reference·created·by
213 <a·href="../../erts-15.2.2/doc/html/erlang.html#monitor/2"><code·class="inline">monitor/2</code></a>·cannot·exist·before·the·call·(since·it·is·a·globally213 <a·href="../../erts-15.2.2/doc/html/erlang.html#monitor/2"><code·class="inline">monitor/2</code></a>·cannot·exist·before·the·call·(since·it·is·a·globally
214 unique·identifier),·and·that·the·<code·class="inline">receive</code>·only·matches·messages·that·contain214 unique·identifier),·and·that·the·<code·class="inline">receive</code>·only·matches·messages·that·contain
215 said·reference,·it·will·tell·the·emulator·to·search·only·the·messages·that215 said·reference,·it·will·tell·the·emulator·to·search·only·the·messages·that
216 arrived·after·the·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#monitor/2"><code·class="inline">monitor/2</code></a>.</p><p>The·above·is·a·simple·example·where·one·is·but·guaranteed·that·the·optimization216 arrived·after·the·call·to·<a·href="../../erts-15.2.2/doc/html/erlang.html#monitor/2"><code·class="inline">monitor/2</code></a>.</p><p>The·above·is·a·simple·example·where·one·is·but·guaranteed·that·the·optimization
217 will·take,·but·what·about·more·complicated·code?</p><p><a·href=""·id="recv_opt_info"></a></p><h3·id="option-recv_opt_info"·class="section-heading">217 will·take,·but·what·about·more·complicated·code?</p><p><a·href=""·id="recv_opt_info"></a></p><h3·id="option-recv_opt_info"·class="section-heading">
218 ··<a·href="#option-recv_opt_info"·class="hover-link">218 ··<a·href="#option-recv_opt_info"·class="hover-link">
Offset 228, 101 lines modifiedOffset 228, 101 lines modified
228 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">200</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">NOT</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">all</span><span·class="w">·</span><span·class="ss">clauses</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">match</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="ss">suitable</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">228 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">200</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">NOT</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">all</span><span·class="w">·</span><span·class="ss">clauses</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">match</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="ss">suitable</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">
229 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">206</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">used</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">mark</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="ss">message</span><span·class="w">·</span><span·class="ss">queue</span><span·class="w">·</span><span·class="ss">position</span><span·class="w">229 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">206</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">used</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">mark</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="ss">message</span><span·class="w">·</span><span·class="ss">queue</span><span·class="w">·</span><span·class="ss">position</span><span·class="w">
230 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">208</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">all</span><span·class="w">·</span><span·class="ss">clauses</span><span·class="w">·</span><span·class="ss">match</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">created</span><span·class="w">·</span><span·class="ss">by</span><span·class="w">·</span><span·class="nb">monitor</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·</span><span·class="ss">at</span><span·class="w">·</span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">206</span><span·class="w">230 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">208</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">all</span><span·class="w">·</span><span·class="ss">clauses</span><span·class="w">·</span><span·class="ss">match</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">created</span><span·class="w">·</span><span·class="ss">by</span><span·class="w">·</span><span·class="nb">monitor</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·</span><span·class="ss">at</span><span·class="w">·</span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">206</span><span·class="w">
231 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">219</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">INFO</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">passing</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">created</span><span·class="w">·</span><span·class="ss">by</span><span·class="w">·</span><span·class="ss">make_ref</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">at</span><span·class="w">·</span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">218</span><span·class="w">231 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">219</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">INFO</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">passing</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">created</span><span·class="w">·</span><span·class="ss">by</span><span·class="w">·</span><span·class="ss">make_ref</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">at</span><span·class="w">·</span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">218</span><span·class="w">
232 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">222</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">all</span><span·class="w">·</span><span·class="ss">clauses</span><span·class="w">·</span><span·class="ss">match</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="ss">parameter</span><span·class="w">·</span><span·class="mi">1</span></code></pre><p>To·make·it·clearer·exactly·what·code·the·warnings·refer·to,·the·warnings·in·the232 </span><span·class="ss">efficiency_guide</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">222</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="n">OPTIMIZED</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">all</span><span·class="w">·</span><span·class="ss">clauses</span><span·class="w">·</span><span·class="ss">match</span><span·class="w">·</span><span·class="ss">reference</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="ss">parameter</span><span·class="w">·</span><span·class="mi">1</span></code></pre><p>To·make·it·clearer·exactly·what·code·the·warnings·refer·to,·the·warnings·in·the
233 following·examples·are·inserted·as·comments·after·the·clause·they·refer·to,·for233 following·examples·are·inserted·as·comments·after·the·clause·they·refer·to,·for
234 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·DO</span><span·class="w">234 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·DO</span><span·class="w">
235 </span><span·class="nf">simple_receive</span><span·class="p"·data-group-id="1187059978-1">(</span><span·class="p"·data-group-id="1187059978-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">235 </span><span·class="nf">simple_receive</span><span·class="p"·data-group-id="4291135510-1">(</span><span·class="p"·data-group-id="4291135510-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
236 </span><span·class="c1">%%·efficiency_guide.erl:194:·Warning:·INFO:·not·a·selective·receive,·this·is·always·fast</span><span·class="w">236 </span><span·class="c1">%%·efficiency_guide.erl:194:·Warning:·INFO:·not·a·selective·receive,·this·is·always·fast</span><span·class="w">
237 </span><span·class="k">receive</span><span·class="w">237 </span><span·class="k">receive</span><span·class="w">
238 ····</span><span·class="n">Message</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="1187059978-2">(</span><span·class="n">Message</span><span·class="p"·data-group-id="1187059978-2">)</span><span·class="w">238 ····</span><span·class="n">Message</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle_msg</span><span·class="p"·data-group-id="4291135510-2">(</span><span·class="n">Message</span><span·class="p"·data-group-id="4291135510-2">)</span><span·class="w">
239 </span><span·class="k">end</span><span·class="p">.</span><span·class="w">239 </span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
240 </span><span·class="c1">%%·DO·NOT,·unless·Tag·is·known·to·be·a·suitable·reference:·see</span><span·class="w">240 </span><span·class="c1">%%·DO·NOT,·unless·Tag·is·known·to·be·a·suitable·reference:·see</span><span·class="w">
241 </span><span·class="c1">%%·cross_function_receive/0·further·down.</span><span·class="w">241 </span><span·class="c1">%%·cross_function_receive/0·further·down.</span><span·class="w">
242 </span><span·class="nf">selective_receive</span><span·class="p"·data-group-id="1187059978-3">(</span><span·class="n">Tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="1187059978-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">242 </span><span·class="nf">selective_receive</span><span·class="p"·data-group-id="4291135510-3">(</span><span·class="n">Tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="4291135510-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
243 </span><span·class="c1">%%·efficiency_guide.erl:200:·Warning:·NOT·OPTIMIZED:·all·clauses·do·not·match·a·suitable·reference</span><span·class="w">243 </span><span·class="c1">%%·efficiency_guide.erl:200:·Warning:·NOT·OPTIMIZED:·all·clauses·do·not·match·a·suitable·reference</span><span·class="w">
244 </span><span·class="k">receive</span><span·class="w">244 </span><span·class="k">receive</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="1187059978-4">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="1187059978-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·6803c66887f84a2a72bae0093929faafc1b86036a3a90cae475961e92d3873e5·...·]-5">)</span><span·class="w">245 ····</span><span·class="p"·data-group-id="4291135510-4">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="4291135510-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·3d058434a55530009226849af5e102fee72c2e3e9419f457e0cedee478163bb6·...·]-5">)</span><span·class="w">
246 </span><span·class="k">end</span><span·class="p">.</span><span·class="w">246 </span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
247 </span><span·class="c1">%%·DO</span><span·class="w">247 </span><span·class="c1">%%·DO</span><span·class="w">
248 </span><span·class="nf">optimized_receive</span><span·class="p"·data-group-id="1187059978-6">(</span><span·class="n">Process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p"·data-group-id="1187059978-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">248 </span><span·class="nf">optimized_receive</span><span·class="p"·data-group-id="4291135510-6">(</span><span·class="n">Process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p"·data-group-id="4291135510-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
249 </span><span·class="c1">%%·efficiency_guide.erl:206:·Warning:·OPTIMIZED:·reference·used·to·mark·a·message·queue·position</span><span·class="w">249 </span><span·class="c1">%%·efficiency_guide.erl:206:·Warning:·OPTIMIZED:·reference·used·to·mark·a·message·queue·position</span><span·class="w">
250 ····</span><span·class="n">MRef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">monitor</span><span·class="p"·data-group-id="1187059978-7">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Process</span><span·class="p"·data-group-id="1187059978-7">)</span><span·class="p">,</span><span·class="w">250 ····</span><span·class="n">MRef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">monitor</span><span·class="p"·data-group-id="4291135510-7">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Process</span><span·class="p"·data-group-id="4291135510-7">)</span><span·class="p">,</span><span·class="w">
251 ····</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1187059978-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1187059978-9">(</span><span·class="p"·data-group-id="1187059978-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·94e9751c6a5af4552d0a830da195c6803deefdcac6bcb93ebfe481ca57119a4a·...·]-8">}</span><span·class="p">,</span><span·class="w">251 ····</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4291135510-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4291135510-9">(</span><span·class="p"·data-group-id="4291135510-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·dd0e87881df2d1bf1cee0a9f885c0e178099e328b2fd3223f249826121f26658·...·]-8">}</span><span·class="p">,</span><span·class="w">
252 ····</span><span·class="c1">%%·efficiency_guide.erl:208:·Warning:·OPTIMIZED:·matches·reference·created·by·monitor/2·at·efficiency_guide.erl:206</span><span·class="w">252 ····</span><span·class="c1">%%·efficiency_guide.erl:208:·Warning:·OPTIMIZED:·matches·reference·created·by·monitor/2·at·efficiency_guide.erl:206</span><span·class="w">
253 ····</span><span·class="k">receive</span><span·class="w">253 ····</span><span·class="k">receive</span><span·class="w">
254 ········</span><span·class="p"·data-group-id="1187059978-10">{</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p"·data-group-id="1187059978-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">254 ········</span><span·class="p"·data-group-id="4291135510-10">{</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p"·data-group-id="4291135510-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
255 ········</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="1187059978-11">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1187059978-12">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="1187059978-12">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·f399dbb5a468e2dd2e1a88024025385f03880c61e2a47f882a25b9dd4ba437ac·...·]-11">)</span><span·class="p">,</span><span·class="w">255 ········</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="4291135510-11">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4291135510-12">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="4291135510-12">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·0b6a4a88d0375eb6e5d5daff0bb04bebb83d2bbb0eeee79cdb40f59905823e94·...·]-11">)</span><span·class="p">,</span><span·class="w">
256 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="1187059978-13">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="1187059978-13">)</span><span·class="p">;</span><span·class="w">256 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="4291135510-13">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="4291135510-13">)</span><span·class="p">;</span><span·class="w">
257 ····</span><span·class="p"·data-group-id="1187059978-14">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·142,·SHA:·0dfc76eee5b8890e59c8cf708f9011b7cfdba69120a9a11221469a44f9f72e5c·...·]-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">257 ····</span><span·class="p"·data-group-id="4291135510-14">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·142,·SHA:·89c4f9c91ca4554a3f894da802326f181668959f3e955aabd8ce3ec550e9de41·...·]-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
258 ····</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="1187059978-15">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="1187059978-15">)</span><span·class="w">258 ····</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="4291135510-15">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="4291135510-15">)</span><span·class="w">
259 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">259 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
260 </span><span·class="c1">%%·DO</span><span·class="w">260 </span><span·class="c1">%%·DO</span><span·class="w">
261 </span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="1187059978-16">(</span><span·class="p"·data-group-id="1187059978-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">261 </span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="4291135510-16">(</span><span·class="p"·data-group-id="4291135510-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ····</span><span·class="c1">%%·efficiency_guide.erl:218:·Warning:·OPTIMIZED:·reference·used·to·mark·a·message·queue·position</span><span·class="w">262 ····</span><span·class="c1">%%·efficiency_guide.erl:218:·Warning:·OPTIMIZED:·reference·used·to·mark·a·message·queue·position</span><span·class="w">
263 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·data-group-id="1187059978-17">(</span><span·class="p"·data-group-id="1187059978-17">)</span><span·class="p">,</span><span·class="w">263 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·data-group-id="4291135510-17">(</span><span·class="p"·data-group-id="4291135510-17">)</span><span·class="p">,</span><span·class="w">
264 ····</span><span·class="c1">%%·efficiency_guide.erl:219:·Warning:·INFO:·passing·reference·created·by·make_ref/0·at·efficiency_guide.erl:218</span><span·class="w">264 ····</span><span·class="c1">%%·efficiency_guide.erl:219:·Warning:·INFO:·passing·reference·created·by·make_ref/0·at·efficiency_guide.erl:218</span><span·class="w">
265 ····</span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="1187059978-18">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="1187059978-18">)</span><span·class="p">.</span><span·class="w">265 ····</span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="4291135510-18">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="4291135510-18">)</span><span·class="p">.</span><span·class="w">
  
266 </span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="1187059978-19">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="1187059978-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">266 </span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="4291135510-19">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="4291135510-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 ····</span><span·class="c1">%%·efficiency_guide.erl:222:·Warning:·OPTIMIZED:·all·clauses·match·reference·in·function·parameter·1</span><span·class="w">267 ····</span><span·class="c1">%%·efficiency_guide.erl:222:·Warning:·OPTIMIZED:·all·clauses·match·reference·in·function·parameter·1</span><span·class="w">
268 ····</span><span·class="k">receive</span><span·class="w">268 ····</span><span·class="k">receive</span><span·class="w">
269 ········</span><span·class="p"·data-group-id="1187059978-20">{</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="1187059978-20">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·160,·SHA:·f177689fca183534604836fd6da63c56275d57454ca3ab1e1303cb4edb4e251f·...·]-21">)</span><span·class="w">269 ········</span><span·class="p"·data-group-id="4291135510-20">{</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="4291135510-20">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·160,·SHA:·71741efd3d7321f820f098adfa3d650f95bec89410209727d9e547a85438a2ff·...·]-21">)</span><span·class="w">
270 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><h2·id="literal-pool"·class="section-heading">270 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><h2·id="literal-pool"·class="section-heading">
271 ··<a·href="#literal-pool"·class="hover-link">271 ··<a·href="#literal-pool"·class="hover-link">
272 ····<i·class="ri-link-m"·aria-hidden="true"></i>272 ····<i·class="ri-link-m"·aria-hidden="true"></i>
273 ··</a>273 ··</a>
Max diff block lines reached; 19933/67118 bytes (29.70%) of diff not shown.
71.1 KB
./usr/share/doc/erlang-doc/html/doc/system/erl_interface.html
    
Offset 120, 119 lines modifiedOffset 120, 119 lines modified
120 to·read·the·port·example·in·<a·href="c_port.html">Ports</a>·before·reading·this·section.</p><h2·id="erlang-program"·class="section-heading">120 to·read·the·port·example·in·<a·href="c_port.html">Ports</a>·before·reading·this·section.</p><h2·id="erlang-program"·class="section-heading">
121 ··<a·href="#erlang-program"·class="hover-link">121 ··<a·href="#erlang-program"·class="hover-link">
122 ····<i·class="ri-link-m"·aria-hidden="true"></i>122 ····<i·class="ri-link-m"·aria-hidden="true"></i>
123 ··</a>123 ··</a>
124 ··<span·class="text">Erlang·Program</span>124 ··<span·class="text">Erlang·Program</span>
125 </h2>125 </h2>
126 <p>The·following·example·shows·an·Erlang·program·communicating·with·a·C·program126 <p>The·following·example·shows·an·Erlang·program·communicating·with·a·C·program
127 over·a·plain·port·with·home·made·encoding:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2866839090-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="2866839090-1">)</span><span·class="p">.</span><span·class="w">127 over·a·plain·port·with·home·made·encoding:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5647295796-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="5647295796-1">)</span><span·class="p">.</span><span·class="w">
128 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2866839090-2">(</span><span·class="p"·data-group-id="2866839090-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·842067dbf50cf5c69313762ecb32398065c44f19765e57db778a53016186c209·...·]-2">)</span><span·class="p">.</span><span·class="w">128 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5647295796-2">(</span><span·class="p"·data-group-id="5647295796-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·baed51df673ecfd6ca7a0893292f7f9690804aaf49b3ab41fd102f8213a06712·...·]-2">)</span><span·class="p">.</span><span·class="w">
129 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2866839090-4">(</span><span·class="p"·data-group-id="2866839090-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·990ef847786c6e4e98025b9e6d6525eb25efb9d4c2a55bf6d6e172928c963a8e·...·]-4">)</span><span·class="p">.</span><span·class="w">129 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5647295796-4">(</span><span·class="p"·data-group-id="5647295796-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·0116424b313920a67f1ce569a63f9ebdaae2b92ddc577ff4cbcee1c9facec16d·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
130 </span><span·class="nf">start</span><span·class="p"·data-group-id="2866839090-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2866839090-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">130 </span><span·class="nf">start</span><span·class="p"·data-group-id="5647295796-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="5647295796-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
131 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2866839090-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2866839090-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·390cd4aafb112902ebdfedae15546c2bcfc00637628a61719f4d0e2d191572ff·...·]-7">)</span><span·class="p">.</span><span·class="w">131 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5647295796-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5647295796-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·d008f7b8172a98c30a8f0c78260b0ec2297f0318034a994dd8d51905435e4057·...·]-7">)</span><span·class="p">.</span><span·class="w">
132 </span><span·class="nf">stop</span><span·class="p"·data-group-id="2866839090-9">(</span><span·class="p"·data-group-id="2866839090-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">132 </span><span·class="nf">stop</span><span·class="p"·data-group-id="5647295796-9">(</span><span·class="p"·data-group-id="5647295796-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
133 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">133 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">foo</span><span·class="p"·data-group-id="2866839090-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="2866839090-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">134 </span><span·class="nf">foo</span><span·class="p"·data-group-id="5647295796-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="5647295796-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
135 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2866839090-11">(</span><span·class="p"·data-group-id="2866839090-12">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="2866839090-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·81a425b62f47cb1f205451c6c4f6b18478b4b39020a72db0c448880fea6da67d·...·]-11">)</span><span·class="p">.</span><span·class="w">135 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="5647295796-11">(</span><span·class="p"·data-group-id="5647295796-12">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="5647295796-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·bd53ded25ce28dbd5e5848f0b42fa0a0028ab9473b86054c8ac9694f76a3e6ca·...·]-11">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2866839090-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2866839090-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">136 </span><span·class="nf">bar</span><span·class="p"·data-group-id="5647295796-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="5647295796-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2866839090-14">(</span><span·class="p"·data-group-id="2866839090-15">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2866839090-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·81a425b62f47cb1f205451c6c4f6b18478b4b39020a72db0c448880fea6da67d·...·]-14">)</span><span·class="p">.</span><span·class="w">137 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="5647295796-14">(</span><span·class="p"·data-group-id="5647295796-15">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="5647295796-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·bd53ded25ce28dbd5e5848f0b42fa0a0028ab9473b86054c8ac9694f76a3e6ca·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="2866839090-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2866839090-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="5647295796-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="5647295796-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2866839090-17">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2866839090-18">(</span><span·class="p"·data-group-id="2866839090-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·b443cd9cb0abd193f72f00fb7b8b8cd09ae71cd3c83507aa1cd17c92d6e2cbf6·...·]-17">}</span><span·class="p">,</span><span·class="w">139 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5647295796-17">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="5647295796-18">(</span><span·class="p"·data-group-id="5647295796-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·e8dad239c049f11f5d2e8c35ead7cd4745c8f84ce1a3edff4052ddb76638af91·...·]-17">}</span><span·class="p">,</span><span·class="w">
140 ····</span><span·class="k">receive</span><span·class="w">140 ····</span><span·class="k">receive</span><span·class="w">
141 »       </span><span·class="p"·data-group-id="2866839090-19">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="2866839090-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">141 »       </span><span·class="p"·data-group-id="5647295796-19">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="5647295796-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
142 »       ····</span><span·class="n">Result</span><span·class="w">142 »       ····</span><span·class="n">Result</span><span·class="w">
143 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">143 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
144 </span><span·class="nf">init</span><span·class="p"·data-group-id="2866839090-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2866839090-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">144 </span><span·class="nf">init</span><span·class="p"·data-group-id="5647295796-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="5647295796-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
145 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="2866839090-21">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2866839090-22">(</span><span·class="p"·data-group-id="2866839090-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·902204a91fe8b0f9d3814fa3ec3b932aeaa9af69354db3e8d220517a52f4d54f·...·]-21">)</span><span·class="p">,</span><span·class="w">145 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="5647295796-21">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="5647295796-22">(</span><span·class="p"·data-group-id="5647295796-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·36f7eb5e2ae6d3963d3d5777e8b5fdd7f2ba25cddc117bacfa02568a97d7626e·...·]-21">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="2866839090-23">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2866839090-23">)</span><span·class="p">,</span><span·class="w">146 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="5647295796-23">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="5647295796-23">)</span><span·class="p">,</span><span·class="w">
147 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="2866839090-24">(</span><span·class="p"·data-group-id="2866839090-25">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2866839090-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·389,·SHA:·a1c5a8146450f78055f0fddfccc64ae47c47117cec92910234dc36ecdbda4731·...·]-24">)</span><span·class="p">,</span><span·class="w">147 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="5647295796-24">(</span><span·class="p"·data-group-id="5647295796-25">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="5647295796-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·389,·SHA:·9dc1584f28b25ced5dc80270b5e640f66e97699757b45c1b2bf63b636aa2bda3·...·]-24">)</span><span·class="p">,</span><span·class="w">
148 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2866839090-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2866839090-28">)</span><span·class="p">.</span><span·class="w">148 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5647295796-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5647295796-28">)</span><span·class="p">.</span><span·class="w">
  
149 </span><span·class="nf">loop</span><span·class="p"·data-group-id="2866839090-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2866839090-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 </span><span·class="nf">loop</span><span·class="p"·data-group-id="5647295796-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5647295796-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 ····</span><span·class="k">receive</span><span·class="w">150 ····</span><span·class="k">receive</span><span·class="w">
151 »       </span><span·class="p"·data-group-id="2866839090-30">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="2866839090-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 »       </span><span·class="p"·data-group-id="5647295796-30">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="5647295796-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
152 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2866839090-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2866839090-32">(</span><span·class="p"·data-group-id="2866839090-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2866839090-33">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·7fe005001ec89daf41e67fee7ea5c5a3c7e6475a63f672ce2087acf70a418f62·...·]-31">}</span><span·class="p">,</span><span·class="w">152 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5647295796-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5647295796-32">(</span><span·class="p"·data-group-id="5647295796-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5647295796-33">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·9028fd8115f89143cb4d7ab9706417f89d410787d825208b28b66755cb468463·...·]-31">}</span><span·class="p">,</span><span·class="w">
153 »       ····</span><span·class="k">receive</span><span·class="w">153 »       ····</span><span·class="k">receive</span><span·class="w">
154 »       »       </span><span·class="p"·data-group-id="2866839090-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2866839090-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·f929d82f91cb0b0320d05dc0ae1c42f2cae031d7429c515d0ad12c6169a812af·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 »       »       </span><span·class="p"·data-group-id="5647295796-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5647295796-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·b4c066852c0dfea8330ab9a63b08f6758228aecd456daf538f6689f9ecaab417·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
155 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2866839090-37">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="2866839090-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="2866839090-3[·...·truncated·by·diffoscope;·len:·52,·SHA:·fac5f3c0789387b6757e6c1c8045d9c410db5d0d42c2bd1d79eb6b392b305afc·...·]-37">}</span><span·class="w">155 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5647295796-37">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="5647295796-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5647295796-3[·...·truncated·by·diffoscope;·len:·52,·SHA:·4e029562d41dfd2bd6e46e2f8f78055eb7c9519fdd5162152af79f9dcdf8b31b·...·]-37">}</span><span·class="w">
156 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">156 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
157 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2866839090-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2866839090-39">)</span><span·class="p">;</span><span·class="w">157 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5647295796-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5647295796-39">)</span><span·class="p">;</span><span·class="w">
158 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">158 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
159 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2866839090-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2866839090-41">(</span><span·class="p"·data-group-id="2866839090-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·08c89aca8eb75dd4508f112812080d01919c3c6b458c626b9d79b49b295a8e53·...·]-40">}</span><span·class="p">,</span><span·class="w">159 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5647295796-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5647295796-41">(</span><span·class="p"·data-group-id="5647295796-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·43185170029a676c3049b0de071796e80b31d867ca622fc3f92a2a8c5228949c·...·]-40">}</span><span·class="p">,</span><span·class="w">
160 »       ····</span><span·class="k">receive</span><span·class="w">160 »       ····</span><span·class="k">receive</span><span·class="w">
161 »       »       </span><span·class="p"·data-group-id="2866839090-42">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="2866839090-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 »       »       </span><span·class="p"·data-group-id="5647295796-42">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="5647295796-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="2866839090-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2866839090-43">)</span><span·class="w">162 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="5647295796-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="5647295796-43">)</span><span·class="w">
163 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">163 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
164 »       </span><span·class="p"·data-group-id="2866839090-44">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="2866839090-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">164 »       </span><span·class="p"·data-group-id="5647295796-44">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5647295796-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
165 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="2866839090-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="2866839090-45">)</span><span·class="w">165 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="5647295796-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="5647295796-45">)</span><span·class="w">
166 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">encode</span><span·class="p"·data-group-id="2866839090-46">(</span><span·class="p"·data-group-id="2866839090-47">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="2866839090-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·df42ce9e5de902306bbdd1eedb7406600ec9a4fd3adee874a050d14da94a031a·...·]-48">]</span><span·class="p">;</span><span·class="w">167 </span><span·class="nf">encode</span><span·class="p"·data-group-id="5647295796-46">(</span><span·class="p"·data-group-id="5647295796-47">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="5647295796-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·3ffdb32f9da7aa173d0d56753f319c789421dfca6e127d3d3a6a569582d7a236·...·]-48">]</span><span·class="p">;</span><span·class="w">
168 </span><span·class="nf">encode</span><span·class="p"·data-group-id="2866839090-49">(</span><span·class="p"·data-group-id="2866839090-50">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2866839090-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·c94b54691a02190687535f0667db5b0f0de57e8cb5d1b4b47489f2d821524c28·...·]-51">]</span><span·class="p">.</span><span·class="w">168 </span><span·class="nf">encode</span><span·class="p"·data-group-id="5647295796-49">(</span><span·class="p"·data-group-id="5647295796-50">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="5647295796-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·1c74542c62de20e52bdcb56443278b82865b7eaec878c65faba86b85940a4b3a·...·]-51">]</span><span·class="p">.</span><span·class="w">
  
169 </span><span·class="nf">decode</span><span·class="p"·data-group-id="2866839090-52">(</span><span·class="p"·data-group-id="2866839090-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="2866839090-53">]</span><span·class="p"·data-group-id="2866839090-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>There·are·two·differences·when·using·Erl_Interface·on·the·C·side·compared·to·the169 </span><span·class="nf">decode</span><span·class="p"·data-group-id="5647295796-52">(</span><span·class="p"·data-group-id="5647295796-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="5647295796-53">]</span><span·class="p"·data-group-id="5647295796-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>There·are·two·differences·when·using·Erl_Interface·on·the·C·side·compared·to·the
170 example·in·<a·href="c_port.html">Ports</a>,·using·only·the·plain·port:</p><ul><li>As·Erl_Interface·operates·on·the·Erlang·external·term·format,·the·port·must·be170 example·in·<a·href="c_port.html">Ports</a>,·using·only·the·plain·port:</p><ul><li>As·Erl_Interface·operates·on·the·Erlang·external·term·format,·the·port·must·be
171 set·to·use·binaries.</li><li>Instead·of·inventing·an·encoding/decoding·scheme,·the171 set·to·use·binaries.</li><li>Instead·of·inventing·an·encoding/decoding·scheme,·the
172 <a·href="../../erts-15.2.2/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>·and172 <a·href="../../erts-15.2.2/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>·and
173 <a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>·BIFs·are·to·be·used.</li></ul><p>That·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">open_port</span><span·class="p"·data-group-id="0036454970-1">(</span><span·class="p"·data-group-id="0036454970-2">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0036454970-2">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·2065,·SHA:·884e4f24930bacd8a1c44a8411f70ac5120367dbc5afc28c9f98103e91bf7321·...·]-1">}</span><span·class="p">,</span><span·class="w">173 <a·href="../../erts-15.2.2/doc/html/erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>·BIFs·are·to·be·used.</li></ul><p>That·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">open_port</span><span·class="p"·data-group-id="9943643524-1">(</span><span·class="p"·data-group-id="9943643524-2">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="9943643524-2">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·2065,·SHA:·8ed596f35db0bbc793747fac80c6d4d3ca81464bfcc18f77d958e5ec1d0039eb·...·]-1">}</span><span·class="p">,</span><span·class="w">
174 </span><span·class="k">receive</span><span·class="w">174 </span><span·class="k">receive</span><span·class="w">
175 ··</span><span·class="p"·data-group-id="5171799313-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5171799313-6">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·c7216c1d761cfee987da25fdc2050ef1cda225fc759587186bcac129a9f5910e·...·]-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ··</span><span·class="p"·data-group-id="2880044104-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2880044104-6">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·72a7798e0b17d3ae2ffb464d676972e3781adb7975be5233b9ae05a0980e8b4a·...·]-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5171799313-7">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="5171799313-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5171799313-8">[·...·truncated·by·diffoscope;·len:·49,·SHA:·7760ab06a11eba18ebda468a2a2c80dc744c5b78b5eb0467191a3d6444ce6e7d·...·]-7">}</span><span·class="w">176 ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2880044104-7">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">decode</span><span·class="p"·data-group-id="2880044104-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="2880044104-8">[·...·truncated·by·diffoscope;·len:·49,·SHA:·161085646d82f2391ec657dbd13ca11ef491b538d3d193a1a74caa462d48a5cc·...·]-7">}</span><span·class="w">
177 </span><span·class="k">end</span></code></pre><p>is·replaced·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4499687402-1">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4499687402-2">(</span><span·class="p"·data-group-id="4499687402-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4499687402-3">{</span[·...·truncated·by·diffoscope;·len:·344,·SHA:·ee7285e973a06fd6e14b56328c7365cd0007a9846b1b2f651e4a1d5729a81729·...·]-1">}</span><span·class="p">,</span><span·class="w">177 </span><span·class="k">end</span></code></pre><p>is·replaced·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5514188485-1">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5514188485-2">(</span><span·class="p"·data-group-id="5514188485-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5514188485-3">{</span[·...·truncated·by·diffoscope;·len:·344,·SHA:·4e5bf7a7caaeade42e2fdcb91ef44d4a5596627a6cc98a9c710c953bcbd8028a·...·]-1">}</span><span·class="p">,</span><span·class="w">
178 </span><span·class="k">receive</span><span·class="w">178 </span><span·class="k">receive</span><span·class="w">
179 ··</span><span·class="p"·data-group-id="4499687402-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4499687402-6">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·ed6aeb2af39cb8d31e68c8f0086f6c243c61c9ca72b94886e3c09e18ca6f4d93·...·]-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 ··</span><span·class="p"·data-group-id="5514188485-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5514188485-6">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·38a938c11e27ea353c2cb3896873518e83aa716d14b9f2c44929ab51d51c02ac·...·]-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4499687402-7">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="4499687402-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="449968[·...·truncated·by·diffoscope;·len:·57,·SHA:·f60c46e2274b6d2ccef5533a4c74beacf6b512de21c46180d4d06e758108b673·...·]-7">}</span><span·class="w">180 ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5514188485-7">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="5514188485-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="551418[·...·truncated·by·diffoscope;·len:·57,·SHA:·dda0702f2d6ee29634eac4e03ea67f51203ed4bea94bf802c66dc44cafea7d73·...·]-7">}</span><span·class="w">
181 </span><span·class="k">end</span></code></pre><p>The·resulting·Erlang·program·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0331298858-1">(</span><span·class="ss">complex2</span><span·class="p"·data-group-id="0331298858-1">)</span><span·class="p">.</span><span·class="w">181 </span><span·class="k">end</span></code></pre><p>The·resulting·Erlang·program·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2607466452-1">(</span><span·class="ss">complex2</span><span·class="p"·data-group-id="2607466452-1">)</span><span·class="p">.</span><span·class="w">
182 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0331298858-2">(</span><span·class="p"·data-group-id="0331298858-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·bcc06122768c8097793a1462db7bd49df5563f34ffa16d4db6a048dd9e7e1b05·...·]-2">)</span><span·class="p">.</span><span·class="w">182 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2607466452-2">(</span><span·class="p"·data-group-id="2607466452-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·241,·SHA:·0fa490d859efc8afe4bdf227762cb29b756ed0ddd6dca791bfcb9d030bbc7b1e·...·]-2">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0331298858-4">(</span><span·class="p"·data-group-id="0331298858-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·0a5844f4223b4e97b3c134a38c471c10d2cdec6809c158b4cbc4b6459c71926e·...·]-4">)</span><span·class="p">.</span><span·class="w">183 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2607466452-4">(</span><span·class="p"·data-group-id="2607466452-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·551b52a4a00fde7d4629cf95e48d7cccc3149961e13af718b5ea7ac55bbc64dc·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">start</span><span·class="p"·data-group-id="0331298858-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0331298858-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 </span><span·class="nf">start</span><span·class="p"·data-group-id="2607466452-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2607466452-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0331298858-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0331298858-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·b92a804de54fddfded76f58b8fdd3397e6f7f6c37ecb5cb42f54e45a5770fce8·...·]-7">)</span><span·class="p">.</span><span·class="w">185 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2607466452-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2607466452-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·bbb07e86506c16b58795f157d224f95cbe9c3b7a935c144936995c37e89e5a92·...·]-7">)</span><span·class="p">.</span><span·class="w">
186 </span><span·class="nf">stop</span><span·class="p"·data-group-id="0331298858-9">(</span><span·class="p"·data-group-id="0331298858-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">186 </span><span·class="nf">stop</span><span·class="p"·data-group-id="2607466452-9">(</span><span·class="p"·data-group-id="2607466452-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">187 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p">.</span><span·class="w">
  
188 </span><span·class="nf">foo</span><span·class="p"·data-group-id="0331298858-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="0331298858-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 </span><span·class="nf">foo</span><span·class="p"·data-group-id="2607466452-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="2607466452-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
189 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0331298858-11">(</span><span·class="p"·data-group-id="0331298858-12">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="0331298858-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·de08f63ced083b68ca7364cab64a616ecaf67f8126b90525ed0e6ebd0c85253d·...·]-11">)</span><span·class="p">.</span><span·class="w">189 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2607466452-11">(</span><span·class="p"·data-group-id="2607466452-12">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="2607466452-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·07a82f62f591e7c91f05da5a41c642b959121c3c6e7648b03273eb4bdaba1d7f·...·]-11">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0331298858-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="0331298858-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">190 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2607466452-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2607466452-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0331298858-14">(</span><span·class="p"·data-group-id="0331298858-15">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="0331298858-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·de08f63ced083b68ca7364cab64a616ecaf67f8126b90525ed0e6ebd0c85253d·...·]-14">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="2607466452-14">(</span><span·class="p"·data-group-id="2607466452-15">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2607466452-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·07a82f62f591e7c91f05da5a41c642b959121c3c6e7648b03273eb4bdaba1d7f·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="0331298858-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="0331298858-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="2607466452-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2607466452-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0331298858-17">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0331298858-18">(</span><span·class="p"·data-group-id="0331298858-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·742bce3c361e661c87956e662c81e6c9cdb6dad8bb844e765b6e9323626e84ba·...·]-17">}</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="ss">complex</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2607466452-17">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2607466452-18">(</span><span·class="p"·data-group-id="2607466452-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·cd4159e94dcb56e67cfc339b65b19044b2cd36a37d1dd05a04da9389807628ee·...·]-17">}</span><span·class="p">,</span><span·class="w">
194 ····</span><span·class="k">receive</span><span·class="w">194 ····</span><span·class="k">receive</span><span·class="w">
195 »       </span><span·class="p"·data-group-id="0331298858-19">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="0331298858-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 »       </span><span·class="p"·data-group-id="2607466452-19">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="2607466452-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 »       ····</span><span·class="n">Result</span><span·class="w">196 »       ····</span><span·class="n">Result</span><span·class="w">
197 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">197 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
198 </span><span·class="nf">init</span><span·class="p"·data-group-id="0331298858-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0331298858-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 </span><span·class="nf">init</span><span·class="p"·data-group-id="2607466452-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2607466452-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="0331298858-21">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0331298858-22">(</span><span·class="p"·data-group-id="0331298858-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·5774790f4b960d275707087da7b2c1c1adc6444300daf750b51072c5f382237d·...·]-21">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="2607466452-21">(</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2607466452-22">(</span><span·class="p"·data-group-id="2607466452-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·8bbff5a46b82d4b5659230c415ac134d73ff5512354b8a5644c65d50c0454569·...·]-21">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="0331298858-23">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="0331298858-23">)</span><span·class="p">,</span><span·class="w">200 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="2607466452-23">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2607466452-23">)</span><span·class="p">,</span><span·class="w">
201 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="0331298858-24">(</span><span·class="p"·data-group-id="0331298858-25">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0331298858-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·467,·SHA:·cdc8eb3c011c5f22c0da04d710448dd850b45adb999b69d4998cd2fd9315c924·...·]-24">)</span><span·class="p">,</span><span·class="w">201 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="2607466452-24">(</span><span·class="p"·data-group-id="2607466452-25">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2607466452-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·467,·SHA:·7079c17b2e6e1ba00a2d256e333e64afcaaae68d67429ba009a5617c17072510·...·]-24">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0331298858-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0331298858-28">)</span><span·class="p">.</span><span·class="w">202 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2607466452-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2607466452-28">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">loop</span><span·class="p"·data-group-id="0331298858-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0331298858-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">203 </span><span·class="nf">loop</span><span·class="p"·data-group-id="2607466452-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2607466452-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="k">receive</span><span·class="w">204 ····</span><span·class="k">receive</span><span·class="w">
205 »       </span><span·class="p"·data-group-id="0331298858-30">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0331298858-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 »       </span><span·class="p"·data-group-id="2607466452-30">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Caller</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="2607466452-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0331298858-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0331298858-32">(</span><span·class="p"·data-group-id="0331298858-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0331298858-33">{</[·...·truncated·by·diffoscope;·len:·351,·SHA:·87aa419236c7147fe6ad2a01f03bcf6019f3c369d09a30a4af84deebcfb7169a·...·]-31">}</span><span·class="p">,</span><span·class="w">206 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2607466452-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2607466452-32">(</span><span·class="p"·data-group-id="2607466452-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2607466452-33">{</[·...·truncated·by·diffoscope;·len:·351,·SHA:·e44c8d381ceaba180d8096d45c811a4f8c69f11d8b2b2f697b403ce7d66cca7e·...·]-31">}</span><span·class="p">,</span><span·class="w">
207 »       ····</span><span·class="k">receive</span><span·class="w">207 »       ····</span><span·class="k">receive</span><span·class="w">
208 »       »       </span><span·class="p"·data-group-id="0331298858-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0331298858-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·3a5714c7af29795ea248ccb3ec2762e65435773edd7766d3d13aa7e6fa55e931·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 »       »       </span><span·class="p"·data-group-id="2607466452-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2607466452-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·116d13e001d2549de6cf23471063b41b1034e715e0ca1c4eaa079a2626affb6a·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0331298858-37">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="0331298858-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="0331[·...·truncated·by·diffoscope;·len:·60,·SHA:·c5a951867d662c3a04e4687f8c12ff057c6ee5bae1df550343954d2b93b7d9f8·...·]-37">}</span><span·class="w">209 »       »       ····</span><span·class="n">Caller</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2607466452-37">{</span><span·class="ss">complex</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="2607466452-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="2607[·...·truncated·by·diffoscope;·len:·60,·SHA:·b65e245afea753c7de1b93a4169bf323c56838b77e130706ed40de5e9cfb9d77·...·]-37">}</span><span·class="w">
210 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">210 »       ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
211 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0331298858-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0331298858-39">)</span><span·class="p">;</span><span·class="w">211 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2607466452-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2607466452-39">)</span><span·class="p">;</span><span·class="w">
212 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 »       </span><span·class="ss">stop</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0331298858-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0331298858-41">(</span><span·class="p"·data-group-id="0331298858-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·4c099f7fab17a3ad6cebe09591fcbd4b689bfdc7e03bd3d9df882acecbe8768a·...·]-40">}</span><span·class="p">,</span><span·class="w">213 »       ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="2607466452-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2607466452-41">(</span><span·class="p"·data-group-id="2607466452-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·2d7aa82a1bd2b25fa17c6a7eb99807548e5c522b3234b4df2b849b60e3be3619·...·]-40">}</span><span·class="p">,</span><span·class="w">
214 »       ····</span><span·class="k">receive</span><span·class="w">214 »       ····</span><span·class="k">receive</span><span·class="w">
215 »       »       </span><span·class="p"·data-group-id="0331298858-42">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="0331298858-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 »       »       </span><span·class="p"·data-group-id="2607466452-42">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="2607466452-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
216 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0331298858-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="0331298858-43">)</span><span·class="w">216 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="2607466452-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2607466452-43">)</span><span·class="w">
217 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">217 »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
218 »       </span><span·class="p"·data-group-id="0331298858-44">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0331298858-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 »       </span><span·class="p"·data-group-id="2607466452-44">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="2607466452-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0331298858-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="0331298858-45">)</span><span·class="w">219 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="2607466452-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="2607466452-45">)</span><span·class="w">
220 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Notice·that·calling·<code·class="inline">complex2:foo/1</code>·and·<code·class="inline">complex2:bar/1</code>·results·in·the·tuple220 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Notice·that·calling·<code·class="inline">complex2:foo/1</code>·and·<code·class="inline">complex2:bar/1</code>·results·in·the·tuple
221 <code·class="inline">{foo,X}</code>·or·<code·class="inline">{bar,Y}</code>·being·sent·to·the·<code·class="inline">complex</code>·process,·which·codes·them·as221 <code·class="inline">{foo,X}</code>·or·<code·class="inline">{bar,Y}</code>·being·sent·to·the·<code·class="inline">complex</code>·process,·which·codes·them·as
222 binaries·and·sends·them·to·the·port.·This·means·that·the·C·program·must·be·able222 binaries·and·sends·them·to·the·port.·This·means·that·the·C·program·must·be·able
223 to·handle·these·two·tuples.</p><h2·id="c-program"·class="section-heading">223 to·handle·these·two·tuples.</p><h2·id="c-program"·class="section-heading">
224 ··<a·href="#c-program"·class="hover-link">224 ··<a·href="#c-program"·class="hover-link">
225 ····<i·class="ri-link-m"·aria-hidden="true"></i>225 ····<i·class="ri-link-m"·aria-hidden="true"></i>
226 ··</a>226 ··</a>
Offset 362, 27 lines modifiedOffset 362, 27 lines modified
362 ····-L/usr/local/otp/lib/erl_interface-3.9.2/lib·\362 ····-L/usr/local/otp/lib/erl_interface-3.9.2/lib·\
363 ····complex.c·erl_comm.c·ei.c·-lei·-lpthread</code></pre><p>In·Erlang/OTP·R5B·and·later·versions·of·OTP,·the·<code·class="inline">include</code>·and·<code·class="inline">lib</code>·directories363 ····complex.c·erl_comm.c·ei.c·-lei·-lpthread</code></pre><p>In·Erlang/OTP·R5B·and·later·versions·of·OTP,·the·<code·class="inline">include</code>·and·<code·class="inline">lib</code>·directories
364 are·situated·under·<code·class="inline">$OTPROOT/lib/erl_interface-VSN</code>,·where·<code·class="inline">$OTPROOT</code>·is·the364 are·situated·under·<code·class="inline">$OTPROOT/lib/erl_interface-VSN</code>,·where·<code·class="inline">$OTPROOT</code>·is·the
365 root·directory·of·the·OTP·installation·(<code·class="inline">/usr/local/otp</code>·in·the·recent·example)365 root·directory·of·the·OTP·installation·(<code·class="inline">/usr/local/otp</code>·in·the·recent·example)
366 and·<code·class="inline">VSN</code>·is·the·version·of·the·Erl_interface·application·(3.2.1·in·the·recent366 and·<code·class="inline">VSN</code>·is·the·version·of·the·Erl_interface·application·(3.2.1·in·the·recent
367 example).</p><p>In·R4B·and·earlier·versions·of·OTP,·<code·class="inline">include</code>·and·<code·class="inline">lib</code>·are·situated·under367 example).</p><p>In·R4B·and·earlier·versions·of·OTP,·<code·class="inline">include</code>·and·<code·class="inline">lib</code>·are·situated·under
368 <code·class="inline">$OTPROOT/usr</code>.</p><p><em>Step·2.</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">368 <code·class="inline">$OTPROOT/usr</code>.</p><p><em>Step·2.</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">
Max diff block lines reached; 6145/72674 bytes (8.46%) of diff not shown.
17.8 KB
./usr/share/doc/erlang-doc/html/doc/system/error_logging.html
    
Offset 143, 39 lines modifiedOffset 143, 39 lines modified
143 reports·and·other·error·and·information·reports·are·by·default·logged·through143 reports·and·other·error·and·information·reports·are·by·default·logged·through
144 the·log·handler·which·is·set·up·when·the·Kernel·application·is·started.</p><p>Prior·to·Erlang/OTP·21.0,·supervisor,·crash,·and·progress·reports·were·only144 the·log·handler·which·is·set·up·when·the·Kernel·application·is·started.</p><p>Prior·to·Erlang/OTP·21.0,·supervisor,·crash,·and·progress·reports·were·only
145 logged·when·the·SASL·application·was·running.·This·behaviour·can,·for·backwards145 logged·when·the·SASL·application·was·running.·This·behaviour·can,·for·backwards
146 compatibility,·be·enabled·by·setting·the·Kernel·configuration·parameter146 compatibility,·be·enabled·by·setting·the·Kernel·configuration·parameter
147 <a·href="../../lib/kernel-10.2.2/doc/html/kernel_app.html#logger_sasl_compatible"><code·class="inline">logger_sasl_compatible</code></a>·to147 <a·href="../../lib/kernel-10.2.2/doc/html/kernel_app.html#logger_sasl_compatible"><code·class="inline">logger_sasl_compatible</code></a>·to
148 <code·class="inline">true</code>.·For·more·information,·see148 <code·class="inline">true</code>.·For·more·information,·see
149 <a·href="../../lib/sasl-4.2.2/doc/html/error_logging.html">SASL·Error·Logging</a>·in·the·SASL·User's·Guide.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-kernel·logger_level·info</span><span·class="w">149 <a·href="../../lib/sasl-4.2.2/doc/html/error_logging.html">SASL·Error·Logging</a>·in·the·SASL·User's·Guide.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-kernel·logger_level·info</span><span·class="w">
150 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">21</span><span·class="w">·</span><span·class="p"·data-group-id="3001828713-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">10.0</span><span·class="p"·data-group-id="3001828713-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="3001828713-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1313,·SHA:·31140f87683b658feac20ba4e23bf6da291795b664603dd5d8b84f9317884583·...·]-7">]</span><span·class="w">150 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">21</span><span·class="w">·</span><span·class="p"·data-group-id="4432695718-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">10.0</span><span·class="p"·data-group-id="4432695718-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="4432695718-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1313,·SHA:·030588f8e0b8f8ccaedc44541359263149f01df6bb5fda0597d188404d7a9f41·...·]-7">]</span><span·class="w">
  
151 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.916404</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">151 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.916404</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
152 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">kernel</span><span·class="w">152 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">kernel</span><span·class="w">
153 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">153 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">
154 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.922908</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">154 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.922908</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
155 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stdlib</span><span·class="w">155 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stdlib</span><span·class="w">
156 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">156 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">
157 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.925755</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">157 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.925755</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
158 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3001828713-8">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="3001828713-8">}</span><span·class="w">158 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4432695718-8">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="4432695718-8">}</span><span·class="w">
159 ····</span><span·class="nc">started</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3001828713-9">[</span><span·class="p"·data-group-id="3001828713-10">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.74</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·35fc6fb9ac002d88646c75b81ebb2ead56e438ff88fa4e1dce0ff1ef7cf1bb02·...·]-10">}</span><span·class="p">,</span><span·class="w">159 ····</span><span·class="nc">started</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4432695718-9">[</span><span·class="p"·data-group-id="4432695718-10">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.74</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·1c4ba31eb8290b33d64101249cf96690435865f7653c1fd87938632030e250ff·...·]-10">}</span><span·class="p">,</span><span·class="w">
160 ··············</span><span·class="p"·data-group-id="3001828713-11">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_sup</span><span·class="p"·data-group-id="3001828713-11">}</span><span·class="p">,</span><span·class="w">160 ··············</span><span·class="p"·data-group-id="4432695718-11">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_sup</span><span·class="p"·data-group-id="4432695718-11">}</span><span·class="p">,</span><span·class="w">
161 ··············</span><span·class="p"·data-group-id="3001828713-12">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="3001828713-13">{</span><span·class="ss">disk_log_sup</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·c834e9f75b58bc818aacabb98d612415656e9c7a25e76b688913083a6a8a9fe6·...·]-12">}</span><span·class="p">,</span><span·class="w">161 ··············</span><span·class="p"·data-group-id="4432695718-12">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="4432695718-13">{</span><span·class="ss">disk_log_sup</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·c69be3b8a856a4025392d4496d07b5633f0838b2f73574b60b04c4ee391b611a·...·]-12">}</span><span·class="p">,</span><span·class="w">
162 ··············</span><span·class="p"·data-group-id="3001828713-15">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="3001828713-15">}</span><span·class="p">,</span><span·class="w">162 ··············</span><span·class="p"·data-group-id="4432695718-15">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="4432695718-15">}</span><span·class="p">,</span><span·class="w">
163 ··············</span><span·class="p"·data-group-id="3001828713-16">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">1000</span><span·class="p"·data-group-id="3001828713-16">}</span><span·class="p">,</span><span·class="w">163 ··············</span><span·class="p"·data-group-id="4432695718-16">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">1000</span><span·class="p"·data-group-id="4432695718-16">}</span><span·class="p">,</span><span·class="w">
164 ··············</span><span·class="p"·data-group-id="3001828713-17">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="3001828713-17">}</span><span·class="p"·data-group-id="3001828713-9">]</span><span·class="w">164 ··············</span><span·class="p"·data-group-id="4432695718-17">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="4432695718-17">}</span><span·class="p"·data-group-id="4432695718-9">]</span><span·class="w">
165 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.926056</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">165 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">8</span><span·class="o">-</span><span·class="n">Jun</span><span·class="o">-</span><span·class="mi">2018</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">54</span><span·class="p">:</span><span·class="mf">19.926056</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
166 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3001828713-18">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="3001828713-18">}</span><span·class="w">166 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4432695718-18">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="4432695718-18">}</span><span·class="w">
167 ····</span><span·class="nc">started</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3001828713-19">[</span><span·class="p"·data-group-id="3001828713-20">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.75</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·d8fcc97a2688bcde820671f1d72be4602c93e55d955815d409f115f47eb378ab·...·]-20">}</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="nc">started</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4432695718-19">[</span><span·class="p"·data-group-id="4432695718-20">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.75</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·c97bc163e3f27f81cf80a66ea412b5f25a26aac89afd16188c52bf52e6ce4401·...·]-20">}</span><span·class="p">,</span><span·class="w">
168 ··············</span><span·class="p"·data-group-id="3001828713-21">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_server</span><span·class="p"·data-group-id="3001828713-21">}</span><span·class="p">,</span><span·class="w">168 ··············</span><span·class="p"·data-group-id="4432695718-21">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_server</span><span·class="p"·data-group-id="4432695718-21">}</span><span·class="p">,</span><span·class="w">
169 ··············</span><span·class="p"·data-group-id="3001828713-22">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="3001828713-23">{</span><span·class="ss">disk_log_server</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="p"·data-group-id="3001828713-24">[</span><span·class="p"·data-group-id="3001828713-24">]</span><span·class="p"·data-group-id="3001828713-23">}</span><span·class="p"·data-group-id="3001828713-22">}</span><span·class="p">,</span><span·class="w"> 
170 ··············</span><span·class="p"·data-group-id="3001828713-25">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="3001828713-25">}</span><span·class="p">,</span><span·class="w">169 ··············</span><span·class="p"·data-group-id="4432695718-22">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="4432695718-23">{</span><span·class="ss">disk_log_server</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·cb14fba1ab87476cbf933347f69cbdb4dc9062682e871d43931f4e5fa909b771·...·]">}</span><span·class="p">,</span><span·class="w">
 170 ··············</span><span·class="p"·data-group-id="4432695718-25">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="4432695718-25">}</span><span·class="p">,</span><span·class="w">
171 ··············</span><span·class="p"·data-group-id="3001828713-26">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="3001828713-26">}</span><span·class="p">,</span><span·class="w">171 ··············</span><span·class="p"·data-group-id="4432695718-26">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="4432695718-26">}</span><span·class="p">,</span><span·class="w">
172 ··············</span><span·class="p"·data-group-id="3001828713-27">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="3001828713-27">}</span><span·class="p"·data-group-id="3001828713-19">]</span><span·class="w">172 ··············</span><span·class="p"·data-group-id="4432695718-27">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="4432695718-27">}</span><span·class="p"·data-group-id="4432695718-19">]</span><span·class="w">
173 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="3001828713-28">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="3001828713-28">)</span><span·class="w">173 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="4432695718-28">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4432695718-28">)</span><span·class="w">
174 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre>174 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre>
175 </div>175 </div>
  
176 <div·class="bottom-actions"·id="bottom-actions">176 <div·class="bottom-actions"·id="bottom-actions">
177 ··<div·class="bottom-actions-item">177 ··<div·class="bottom-actions-item">
  
178 ······<a·href="system_principles.html"·class="bottom-actions-button"·rel="prev">178 ······<a·href="system_principles.html"·class="bottom-actions-button"·rel="prev">
9.98 KB
./usr/share/doc/erlang-doc/html/doc/system/errors.html
    
Offset 151, 22 lines modifiedOffset 151, 22 lines modified
151 classes,·with·different·origins.·The·<a·href="expressions.html#try">try</a>·expression·can151 classes,·with·different·origins.·The·<a·href="expressions.html#try">try</a>·expression·can
152 distinguish·between·the·different·classes,·whereas·the152 distinguish·between·the·different·classes,·whereas·the
153 <a·href="expressions.html#catch-and-throw">catch</a>·expression·cannot.·<code·class="inline">try</code>·and·<code·class="inline">catch</code>·are·described153 <a·href="expressions.html#catch-and-throw">catch</a>·expression·cannot.·<code·class="inline">try</code>·and·<code·class="inline">catch</code>·are·described
154 in·<a·href="expressions.html">Expressions</a>.</p><table><thead><tr><th·style="text-align:·left;"><em>Class</em></th><th·style="text-align:·left;"><em>Origin</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">error</code></td><td·style="text-align:·left;">Run-time·error,·for·example,·<code·class="inline">1+a</code>,·or·the·process·called·<a·href="../../erts-15.2.2/doc/html/erlang.html#error/1"><code·class="inline">error/1</code></a></td></tr><tr><td·style="text-align:·left;"><code·class="inline">exit</code></td><td·style="text-align:·left;">The·process·called·<a·href="../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a></td></tr><tr><td·style="text-align:·left;"><code·class="inline">throw</code></td><td·style="text-align:·left;">The·process·called·<a·href="../../erts-15.2.2/doc/html/erlang.html#throw/1"><code·class="inline">throw/1</code></a></td></tr></tbody></table><p><em>Table:·Exception·Classes.</em></p><p>All·of·the·above·exceptions·can·also·be·generated·by·calling·<a·href="../../erts-15.2.2/doc/html/erlang.html#raise/3"><code·class="inline">erlang:raise/3</code></a>.</p><p>An·exception·consists·of·its·class,·an·exit·reason·(see154 in·<a·href="expressions.html">Expressions</a>.</p><table><thead><tr><th·style="text-align:·left;"><em>Class</em></th><th·style="text-align:·left;"><em>Origin</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">error</code></td><td·style="text-align:·left;">Run-time·error,·for·example,·<code·class="inline">1+a</code>,·or·the·process·called·<a·href="../../erts-15.2.2/doc/html/erlang.html#error/1"><code·class="inline">error/1</code></a></td></tr><tr><td·style="text-align:·left;"><code·class="inline">exit</code></td><td·style="text-align:·left;">The·process·called·<a·href="../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a></td></tr><tr><td·style="text-align:·left;"><code·class="inline">throw</code></td><td·style="text-align:·left;">The·process·called·<a·href="../../erts-15.2.2/doc/html/erlang.html#throw/1"><code·class="inline">throw/1</code></a></td></tr></tbody></table><p><em>Table:·Exception·Classes.</em></p><p>All·of·the·above·exceptions·can·also·be·generated·by·calling·<a·href="../../erts-15.2.2/doc/html/erlang.html#raise/3"><code·class="inline">erlang:raise/3</code></a>.</p><p>An·exception·consists·of·its·class,·an·exit·reason·(see
155 <a·href="errors.html#exit_reasons">Exit·Reason</a>),·and·a·stack·trace·(which·aids·in·finding155 <a·href="errors.html#exit_reasons">Exit·Reason</a>),·and·a·stack·trace·(which·aids·in·finding
156 the·code·location·of·the·exception).</p><p>The·stack·trace·can·be·bound·to·a·variable·from·within·a·<code·class="inline">try</code>·expression·for156 the·code·location·of·the·exception).</p><p>The·stack·trace·can·be·bound·to·a·variable·from·within·a·<code·class="inline">try</code>·expression·for
157 any·exception·class,·or·as·part·of·the·exit·reason·when·a·run-time·error·is157 any·exception·class,·or·as·part·of·the·exit·reason·when·a·run-time·error·is
158 caught·by·a·<code·class="inline">catch</code>.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="2190131099-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2190131099-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="219[·...·truncated·by·diffoscope;·len:·453,·SHA:·b56daf8362af4840c620c256d5dfcfa891e46cfb8a4e73c893e5482e78b99aa1·...·]-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stacktrace</span><span·class="p">.</span><span·class="w">158 caught·by·a·<code·class="inline">catch</code>.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="6307821495-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6307821495-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="630[·...·truncated·by·diffoscope;·len:·453,·SHA:·fd3ab6d06280e2d85526065040e0dfd8fd8695b980930458215187cccc29b2f0·...·]-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stacktrace</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="2190131099-5">[</span><span·class="p"·data-group-id="2190131099-6">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">apply_fun</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·125,·SHA:·0921dc2db2ed6a805a9d15b9ae976a54b586ddb73f3174cec0a321f26f36ab7d·...·]-6">}</span><span·class="p">,</span><span·class="w">159 </span><span·class="p"·data-group-id="6307821495-5">[</span><span·class="p"·data-group-id="6307821495-6">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">apply_fun</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·125,·SHA:·477c1d850cad5dfddd6832f95838d75d664a358ee409d2d5eb89e9476e07b97f·...·]-6">}</span><span·class="p">,</span><span·class="w">
160 ·</span><span·class="p"·data-group-id="2190131099-8">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="p"·data-group-id="2190131099-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·d601fb0425e1ca0db0e5e598ff1dbabc5328dd4cf6fbaeadeda1346a197ef467·...·]-8">}</span><span·class="p">,</span><span·class="w">160 ·</span><span·class="p"·data-group-id="6307821495-8">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="p"·data-group-id="6307821495-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·b87ccbc56ed50d7f58940eb7ccbc1208d3ed0506e42c9f205a0a194c64d78233·...·]-8">}</span><span·class="p">,</span><span·class="w">
161 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2190131099-5">]</span><span·class="gp·unselectable">161 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6307821495-5">]</span><span·class="gp·unselectable">
162 &gt;·</span><span·class="k">try</span><span·class="w">·</span><span·class="nf">throw</span><span·class="p"·data-group-id="2190131099-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="2190131099-10">)</span><span·class="w">·</span><span·class="k">catch</span><span·class="w">·</span><span·class="n">Class</span><span·class="p">:</span><span·class="n">Reason</span><span·class="p">:</span><span·class="n">Stacktrace</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Stacktrace</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">162 &gt;·</span><span·class="k">try</span><span·class="w">·</span><span·class="nf">throw</span><span·class="p"·data-group-id="6307821495-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="6307821495-10">)</span><span·class="w">·</span><span·class="k">catch</span><span·class="w">·</span><span·class="n">Class</span><span·class="p">:</span><span·class="n">Reason</span><span·class="p">:</span><span·class="n">Stacktrace</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Stacktrace</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
163 </span><span·class="p"·data-group-id="2190131099-11">[</span><span·class="p"·data-group-id="2190131099-12">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">apply_fun</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·cdf1fca381a37c565e5fbd925a64347d6ec046d57d490259899551b8a3b5bfa1·...·]-12">}</span><span·class="p">,</span><span·class="w">163 </span><span·class="p"·data-group-id="6307821495-11">[</span><span·class="p"·data-group-id="6307821495-12">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">apply_fun</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·577080779b94922cecc2d5b3f1753f48ab946511282fbf2e226158ad0a978171·...·]-12">}</span><span·class="p">,</span><span·class="w">
164 ·</span><span·class="p"·data-group-id="2190131099-14">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="p"·data-group-id="2190131099-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·66b92bdd0e0a71297f4542f946132aca400eae3fb93d45ffadb493915f8f1de1·...·]-14">}</span><span·class="p">,</span><span·class="w">164 ·</span><span·class="p"·data-group-id="6307821495-14">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="p"·data-group-id="6307821495-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·85fd663a59346780a8b70ad67756d6f22422e84b261891bcc979f26cd7b43a0e·...·]-14">}</span><span·class="p">,</span><span·class="w">
165 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2190131099-11">]</span></code></pre><p><a·href=""·id="stacktrace"></a></p><h3·id="the-call-stack-back-trace-stacktrace"·class="section-heading">165 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6307821495-11">]</span></code></pre><p><a·href=""·id="stacktrace"></a></p><h3·id="the-call-stack-back-trace-stacktrace"·class="section-heading">
166 ··<a·href="#the-call-stack-back-trace-stacktrace"·class="hover-link">166 ··<a·href="#the-call-stack-back-trace-stacktrace"·class="hover-link">
167 ····<i·class="ri-link-m"·aria-hidden="true"></i>167 ····<i·class="ri-link-m"·aria-hidden="true"></i>
168 ··</a>168 ··</a>
169 ··<span·class="text">The·call-stack·back·trace·(stacktrace)</span>169 ··<span·class="text">The·call-stack·back·trace·(stacktrace)</span>
170 </h3>170 </h3>
171 <p>The·stack·back-trace·(<a·href="../../erts-15.2.2/doc/html/erlang.html#t:stacktrace/0"><em>stacktrace</em></a>)·is·a·list·that171 <p>The·stack·back-trace·(<a·href="../../erts-15.2.2/doc/html/erlang.html#t:stacktrace/0"><em>stacktrace</em></a>)·is·a·list·that
172 contains·<code·class="inline">{Module,·Function,·Arity,·ExtraInfo}</code>·and/or·<code·class="inline">{Fun,·Arity,·ExtraInfo}</code>172 contains·<code·class="inline">{Module,·Function,·Arity,·ExtraInfo}</code>·and/or·<code·class="inline">{Fun,·Arity,·ExtraInfo}</code>
40.8 KB
./usr/share/doc/erlang-doc/html/doc/system/events.html
    
Offset 135, 43 lines modifiedOffset 135, 43 lines modified
135 event·handler.</p><h2·id="example"·class="section-heading">135 event·handler.</p><h2·id="example"·class="section-heading">
136 ··<a·href="#example"·class="hover-link">136 ··<a·href="#example"·class="hover-link">
137 ····<i·class="ri-link-m"·aria-hidden="true"></i>137 ····<i·class="ri-link-m"·aria-hidden="true"></i>
138 ··</a>138 ··</a>
139 ··<span·class="text">Example</span>139 ··<span·class="text">Example</span>
140 </h2>140 </h2>
141 <p>The·callback·module·for·the·event·handler·writing·error·messages·to·the·terminal141 <p>The·callback·module·for·the·event·handler·writing·error·messages·to·the·terminal
142 can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3190396207-1">(</span><span·class="ss">terminal_logger</span><span·class="p"·data-group-id="3190396207-1">)</span><span·class="p">.</span><span·class="w">142 can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1188973339-1">(</span><span·class="ss">terminal_logger</span><span·class="p"·data-group-id="1188973339-1">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="3190396207-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="3190396207-2">)</span><span·class="p">.</span><span·class="w">143 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="1188973339-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="1188973339-2">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="w">144 </span><span·class="w">
145 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3190396207-3">(</span><span·class="p"·data-group-id="3190396207-4">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</s[·...·truncated·by·diffoscope;·len:·253,·SHA:·dd997ed90ee71f47fcf3ad7aa51814b3dc2dca98d9535db25aad7dfad142ba61·...·]-3">)</span><span·class="p">.</span><span·class="w">145 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1188973339-3">(</span><span·class="p"·data-group-id="1188973339-4">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</s[·...·truncated·by·diffoscope;·len:·253,·SHA:·d956b78bcb7b8764260592a9c0efc2e1056f69cdaea67022bcfed7ebc5ecca87·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">init</span><span·class="p"·data-group-id="3190396207-5">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3190396207-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">146 </span><span·class="nf">init</span><span·class="p"·data-group-id="1188973339-5">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="1188973339-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
147 ····</span><span·class="p"·data-group-id="3190396207-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3190396207-7">[</span><span·class="p"·data-group-id="3190396207-7">]</span><span·class="p"·data-group-id="3190396207-6">}</span><span·class="p">.</span><span·class="w">147 ····</span><span·class="p"·data-group-id="1188973339-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1188973339-7">[</span><span·class="p"·data-group-id="1188973339-7">]</span><span·class="p"·data-group-id="1188973339-6">}</span><span·class="p">.</span><span·class="w">
  
148 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3190396207-8">(</span><span·class="n">ErrorMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3190396207-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="1188973339-8">(</span><span·class="n">ErrorMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="1188973339-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3190396207-9">(</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3190396207-10">[</span><span·clas[·...·truncated·by·diffoscope;·len:·116,·SHA:·a64087027701f759227761eb02405273ecc6b653153b489c5c077d0a9c3c8030·...·]-9">)</span><span·class="p">,</span><span·class="w">149 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1188973339-9">(</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1188973339-10">[</span><span·clas[·...·truncated·by·diffoscope;·len:·116,·SHA:·62b67582fc548438f31f994e47656692879f7cfdc5c5a1cc44a142e2670c2bb0·...·]-9">)</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="p"·data-group-id="3190396207-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3190396207-11">}</span><span·class="p">.</span><span·class="w">150 ····</span><span·class="p"·data-group-id="1188973339-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="1188973339-11">}</span><span·class="p">.</span><span·class="w">
  
151 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="3190396207-12">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="3190396207-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="1188973339-12">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="1188973339-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
152 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>The·callback·module·for·the·event·handler·writing·error·messages·to·a·file·can152 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>The·callback·module·for·the·event·handler·writing·error·messages·to·a·file·can
153 look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9440096376-1">(</span><span·class="ss">file_logger</span><span·class="p"·data-group-id="9440096376-1">)</span><span·class="p">.</span><span·class="w">153 look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9627562372-1">(</span><span·class="ss">file_logger</span><span·class="p"·data-group-id="9627562372-1">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="9440096376-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="9440096376-2">)</span><span·class="p">.</span><span·class="w">154 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="9627562372-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="9627562372-2">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="w">155 </span><span·class="w">
156 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9440096376-3">(</span><span·class="p"·data-group-id="9440096376-4">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</sp[·...·truncated·by·diffoscope;·len:·252,·SHA:·306a4a4d99453fc11fe11bf4de597f4a22ea6aac8ac99bfc5d53e78ffa8e7ffa·...·]-3">)</span><span·class="p">.</span><span·class="w">156 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9627562372-3">(</span><span·class="p"·data-group-id="9627562372-4">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</sp[·...·truncated·by·diffoscope;·len:·252,·SHA:·a5fb2ec4be5ad276f64d32a3f094ef1747afafe90c3b6d2d23e2d8d482146986·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">init</span><span·class="p"·data-group-id="9440096376-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="9440096376-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">init</span><span·class="p"·data-group-id="9627562372-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="9627562372-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="9440096376-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9440096376-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·266,·SHA:·14c29314ee3ad824efdab071817630f0e1dac46b4e6a35db91bf6537f0a7499d·...·]-7">)</span><span·class="p">,</span><span·class="w">158 ····</span><span·class="p"·data-group-id="9627562372-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9627562372-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·266,·SHA:·4f117d907a4a0f9f7c5bb2195a2acfd2ab97fb1380a3cd038baa601f09a8bb34·...·]-7">)</span><span·class="p">,</span><span·class="w">
159 ····</span><span·class="p"·data-group-id="9440096376-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9440096376-8">}</span><span·class="p">.</span><span·class="w">159 ····</span><span·class="p"·data-group-id="9627562372-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9627562372-8">}</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="9440096376-9">(</span><span·class="n">ErrorMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9440096376-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">160 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="9627562372-9">(</span><span·class="n">ErrorMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9627562372-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
161 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9440096376-10">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·189,·SHA:·06da5517adf8151557572e9d0e9d3bafcc23311cc4be6d186a3218df08475f83·...·]-10">)</span><span·class="p">,</span><span·class="w">161 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9627562372-10">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·189,·SHA:·d22b3bdfaa77d226a3a9dbe2d13e6aff70f879ebb46ccd80659317781c4e1b5e·...·]-10">)</span><span·class="p">,</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="9440096376-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9440096376-12">}</span><span·class="p">.</span><span·class="w">162 ····</span><span·class="p"·data-group-id="9627562372-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9627562372-12">}</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="9440096376-13">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9440096376-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">163 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="9627562372-13">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9627562372-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
164 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="9440096376-14">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="9440096376-14">)</span><span·class="p">.</span></code></pre><p>The·code·is·explained·in·the·next·sections.</p><p><a·href=""·id="mgr"></a></p><h2·id="starting-an-event-manager"·class="section-heading">164 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="9627562372-14">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="9627562372-14">)</span><span·class="p">.</span></code></pre><p>The·code·is·explained·in·the·next·sections.</p><p><a·href=""·id="mgr"></a></p><h2·id="starting-an-event-manager"·class="section-heading">
165 ··<a·href="#starting-an-event-manager"·class="hover-link">165 ··<a·href="#starting-an-event-manager"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">Starting·an·Event·Manager</span>168 ··<span·class="text">Starting·an·Event·Manager</span>
169 </h2>169 </h2>
170 <p>To·start·an·event·manager·for·handling·errors,·as·described·in·the·previous170 <p>To·start·an·event·manager·for·handling·errors,·as·described·in·the·previous
171 example,·call·the·following·function:</p><pre><code·class="text">gen_event:start_link({local,·error_man})</code></pre><p><a·href="../../lib/stdlib-6.2/doc/html/gen_event.html#start_link/1"><code·class="inline">gen_event:start_link/1</code></a>·spawns·and·links·to·a·new·event·manager·process.</p><p>The·argument,·<code·class="inline">{local,·error_man}</code>,·specifies·the·name·under·which·the171 example,·call·the·following·function:</p><pre><code·class="text">gen_event:start_link({local,·error_man})</code></pre><p><a·href="../../lib/stdlib-6.2/doc/html/gen_event.html#start_link/1"><code·class="inline">gen_event:start_link/1</code></a>·spawns·and·links·to·a·new·event·manager·process.</p><p>The·argument,·<code·class="inline">{local,·error_man}</code>,·specifies·the·name·under·which·the
Offset 184, 57 lines modifiedOffset 184, 57 lines modified
184 manager·that·is·not·part·of·a·supervision·tree.</p><h2·id="adding-an-event-handler"·class="section-heading">184 manager·that·is·not·part·of·a·supervision·tree.</p><h2·id="adding-an-event-handler"·class="section-heading">
185 ··<a·href="#adding-an-event-handler"·class="hover-link">185 ··<a·href="#adding-an-event-handler"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">Adding·an·Event·Handler</span>188 ··<span·class="text">Adding·an·Event·Handler</span>
189 </h2>189 </h2>
190 <p>The·following·example·shows·how·to·start·an·event·manager·and·add·an·event190 <p>The·following·example·shows·how·to·start·an·event·manager·and·add·an·event
191 handler·to·it·by·using·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5709688768-1">(</span><span·class="p"·data-group-id="5709688768-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">error_man</span><span·class="p"·data-group-id="5709688768-2">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·d0429a3644c8485556754e1b6b45866aabe2e20343e40b11f42de7fa1d809f94·...·]-1">)</span><span·class="p">.</span><span·class="w">191 handler·to·it·by·using·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2969626677-1">(</span><span·class="p"·data-group-id="2969626677-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">error_man</span><span·class="p"·data-group-id="2969626677-2">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·92944e5ac64a3b0a9901f341b9a6ca8078eda280de520964de05814fb8d2d53c·...·]-1">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p"·data-group-id="5709688768-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5709688768-3">}</span><span·class="gp·unselectable">192 </span><span·class="p"·data-group-id="2969626677-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2969626677-3">}</span><span·class="gp·unselectable">
193 2&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="5709688768-4">(</span><span·class="ss">error_man</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminal_logger</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5709688768-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·38ede1a8ac06425bf5afb57a56bb0b47440eff414a4fe039d9e410f6e922da0c·...·]-4">)</span><span·class="p">.</span><span·class="w">193 2&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="2969626677-4">(</span><span·class="ss">error_man</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminal_logger</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2969626677-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·b1f5b03a77c47ea448cce7a4d9654f59c18ba50db9276247ffd5ed04a6830ca0·...·]-4">)</span><span·class="p">.</span><span·class="w">
194 </span><span·class="ss">ok</span></code></pre><p>This·function·sends·a·message·to·the·event·manager·registered·as·<code·class="inline">error_man</code>,194 </span><span·class="ss">ok</span></code></pre><p>This·function·sends·a·message·to·the·event·manager·registered·as·<code·class="inline">error_man</code>,
195 telling·it·to·add·the·event·handler·<code·class="inline">terminal_logger</code>.·The·event·manager·calls195 telling·it·to·add·the·event·handler·<code·class="inline">terminal_logger</code>.·The·event·manager·calls
196 the·callback·function·<code·class="inline">terminal_logger:init([])</code>,·where·the·argument·<code·class="inline">[]</code>·is·the196 the·callback·function·<code·class="inline">terminal_logger:init([])</code>,·where·the·argument·<code·class="inline">[]</code>·is·the
197 third·argument·to·<code·class="inline">add_handler</code>.·<code·class="inline">init/1</code>·is·expected·to·return·<code·class="inline">{ok,·State}</code>,197 third·argument·to·<code·class="inline">add_handler</code>.·<code·class="inline">init/1</code>·is·expected·to·return·<code·class="inline">{ok,·State}</code>,
198 where·<code·class="inline">State</code>·is·the·internal·state·of·the·event·handler.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="1983974719-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="1983974719-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
199 ····</span><span·class="p"·data-group-id="1983974719-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1983974719-3">[</span><span·class="p"·data-group-id="1983974719-3">]</span><span·class=[·...·truncated·by·diffoscope;·len:·180,·SHA:·2d8e18d573994fe3d262a9ea9bb7b8b476e7509cc0e1b020eb61f2f6baa743ca·...·]198 where·<code·class="inline">State</code>·is·the·internal·state·of·the·event·handler.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="0475051945-1">(</span><span·class="p">_</span><span·class="n">[·...·truncated·by·diffoscope;·len:·132,·SHA:·27282b39697a60728821917450658b576cffabd47cddb620abd704dd3dc20ada·...·]
 199 ····</span><span·class="p"·data-group-id="0475051945-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0475051945-3">[</span><span·class="p"·data-group-id="0475051945-3">]</span><span·class="p"·data-group-id="0475051945-2">}</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">init/1</code>·does·not·need·any·input·data·and·ignores·its·argument.·For
200 <code·class="inline">terminal_logger</code>,·the·internal·state·is·not·used.·For·<code·class="inline">file_logger</code>,·the200 <code·class="inline">terminal_logger</code>,·the·internal·state·is·not·used.·For·<code·class="inline">file_logger</code>,·the
201 internal·state·is·used·to·save·the·open·file·descriptor.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="5821812290-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="5821812290-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">201 internal·state·is·used·to·save·the·open·file·descriptor.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="4960757782-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="4960757782-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="5821812290-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5821812290-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·5c61b81d2646f2917584cde8d696b9933b9fe16518c1a6f5dadde063e5f655a3·...·]-3">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="p"·data-group-id="4960757782-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="4960757782-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·c9f41c4a16a18ce08417a5d2c88e1a0e01c434036e12f5ad55fd2b47aa74b9c5·...·]-3">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="5821812290-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5821812290-4">}</span><span·class="p">.</span></code></pre><h2·id="notifying-about-events"·class="section-heading">203 ····</span><span·class="p"·data-group-id="4960757782-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="4960757782-4">}</span><span·class="p">.</span></code></pre><h2·id="notifying-about-events"·class="section-heading">
204 ··<a·href="#notifying-about-events"·class="hover-link">204 ··<a·href="#notifying-about-events"·class="hover-link">
205 ····<i·class="ri-link-m"·aria-hidden="true"></i>205 ····<i·class="ri-link-m"·aria-hidden="true"></i>
206 ··</a>206 ··</a>
207 ··<span·class="text">Notifying·about·Events</span>207 ··<span·class="text">Notifying·about·Events</span>
208 </h2>208 </h2>
209 <pre><code·class="text">3&gt;·gen_event:notify(error_man,·no_reply).209 <pre><code·class="text">3&gt;·gen_event:notify(error_man,·no_reply).
210 ***Error***·no_reply210 ***Error***·no_reply
211 ok</code></pre><p><code·class="inline">error_man</code>·is·the·name·of·the·event·manager·and·<code·class="inline">no_reply</code>·is·the·event.</p><p>The·event·is·made·into·a·message·and·sent·to·the·event·manager.·When·the·event211 ok</code></pre><p><code·class="inline">error_man</code>·is·the·name·of·the·event·manager·and·<code·class="inline">no_reply</code>·is·the·event.</p><p>The·event·is·made·into·a·message·and·sent·to·the·event·manager.·When·the·event
212 is·received,·the·event·manager·calls·<code·class="inline">handle_event(Event,·State)</code>·for·each212 is·received,·the·event·manager·calls·<code·class="inline">handle_event(Event,·State)</code>·for·each
213 installed·event·handler,·in·the·same·order·as·they·were·added.·The·function·is213 installed·event·handler,·in·the·same·order·as·they·were·added.·The·function·is
214 expected·to·return·a·tuple·<code·class="inline">{ok,State1}</code>,·where·<code·class="inline">State1</code>·is·a·new·value·for·the214 expected·to·return·a·tuple·<code·class="inline">{ok,State1}</code>,·where·<code·class="inline">State1</code>·is·a·new·value·for·the
215 state·of·the·event·handler.</p><p>In·<code·class="inline">terminal_logger</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_event</span><span·class="p"·data-group-id="6292600831-1">(</span><span·class="n">ErrorMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="6292600831-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
216 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6292600831-2">(</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6292600831-3">[</span><span·class="n">ErrorMsg</span><span·class="p"·data-group-id="6292600831-3">]</span><span·class="p"·data-group-id="6292600831-2">)</span><span·class="p">,</span><span·class="w"> 
217 ····</span><span·class="p"·data-group-id="6292600831-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="6292600831-4">}</span><span·class="p">.</span></code></pre>[·...·truncated·by·diffoscope;·len:·332,·SHA:·5d0edd7a7be4baf88a2015ca21f1e92ac066aee4d46a40a00f7b246344395683·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 state·of·the·event·handler.</p><p>In·<code·class="inline">terminal_logger</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_event</span><span·class="p"·data-group-id="9388996947-1">(</span><span·class="n">ErrorMsg</span><sp[·...·truncated·by·diffoscope;·len:·114,·SHA:·e060c49e20d394e06bf1bb6a970409dc4a744978458695519e8c6641db488482·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 216 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9388996947-2">(</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9388996947-3">[</span><span·class="n">ErrorMsg</span><span·class="p"·data-group-id="9388996947-3">]</span><span·class="p"·data-group-id="9388996947-2">)</span><span·class="p">,</span><span·class="w">
 217 ····</span><span·class="p"·data-group-id="9388996947-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9388996947-4">}</span><span·class="p">.</span></code></pre><p>In·<code·class="inline">file_logger</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_event</span><span·class="p"·data-group-id="5725661607-1">(</span><span·class="n">ErrorMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5725661607-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5067101608-2">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·186,·SHA:·eda91f80b4f4f3caf0491558db921b73840e1ae2fc4041cb0e67e3448f68cb4f·...·]-2">)</span><span·class="p">,</span><span·class="w">218 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5725661607-2">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;***Error***·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·186,·SHA:·5771bb0e713ecea904201818f9d1276f35507ec8a47b0004c6f3446adca77f3f·...·]-2">)</span><span·class="p">,</span><span·class="w">
219 ····</span><span·class="p"·data-group-id="5067101608-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5067101608-4">}</span><span·class="p">.</span></code></pre><h2·id="deleting-an-event-handler"·class="section-heading">219 ····</span><span·class="p"·data-group-id="5725661607-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5725661607-4">}</span><span·class="p">.</span></code></pre><h2·id="deleting-an-event-handler"·class="section-heading">
220 ··<a·href="#deleting-an-event-handler"·class="hover-link">220 ··<a·href="#deleting-an-event-handler"·class="hover-link">
221 ····<i·class="ri-link-m"·aria-hidden="true"></i>221 ····<i·class="ri-link-m"·aria-hidden="true"></i>
222 ··</a>222 ··</a>
223 ··<span·class="text">Deleting·an·Event·Handler</span>223 ··<span·class="text">Deleting·an·Event·Handler</span>
224 </h2>224 </h2>
225 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">delete_handler</span><span·class="p"·data-group-id="9703294647-1">(</span><span·class="ss">error_man</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminal_logger</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9703294647-2">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·6a97d58389f0211dddc1ce30ddf94e081d01dc4f4ac442c92bfc22bb5d220bca·...·]-1">)</span><span·class="p">.</span><span·class="w">225 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">delete_handler</span><span·class="p"·data-group-id="4438475786-1">(</span><span·class="ss">error_man</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminal_logger</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4438475786-2">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·6d7c4cf726415d13df237ab96f7d1db77bb528380a4abcb0d025ee43b0a74737·...·]-1">)</span><span·class="p">.</span><span·class="w">
226 </span><span·class="ss">ok</span></code></pre><p>This·function·sends·a·message·to·the·event·manager·registered·as·<code·class="inline">error_man</code>,226 </span><span·class="ss">ok</span></code></pre><p>This·function·sends·a·message·to·the·event·manager·registered·as·<code·class="inline">error_man</code>,
227 telling·it·to·delete·the·event·handler·<code·class="inline">terminal_logger</code>.·The·event·manager227 telling·it·to·delete·the·event·handler·<code·class="inline">terminal_logger</code>.·The·event·manager
228 calls·the·callback·function·<code·class="inline">terminal_logger:terminate([],·State)</code>,·where·the228 calls·the·callback·function·<code·class="inline">terminal_logger:terminate([],·State)</code>,·where·the
229 argument·<code·class="inline">[]</code>·is·the·third·argument·to·<code·class="inline">delete_handler</code>.·<code·class="inline">terminate/2</code>·is·to·be229 argument·<code·class="inline">[]</code>·is·the·third·argument·to·<code·class="inline">delete_handler</code>.·<code·class="inline">terminate/2</code>·is·to·be
230 the·opposite·of·<code·class="inline">init/1</code>·and·do·any·necessary·cleaning·up.·Its·return·value·is230 the·opposite·of·<code·class="inline">init/1</code>·and·do·any·necessary·cleaning·up.·Its·return·value·is
231 ignored.</p><p>For·<code·class="inline">terminal_logger</code>,·no·cleaning·up·is·necessary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">terminate</span><span·class="p"·data-group-id="8959386473-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="8959386473-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ignored.</p><p>For·<code·class="inline">terminal_logger</code>,·no·cleaning·up·is·necessary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">terminate</span><span·class="p"·data-group-id="6073837302-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="6073837302-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>For·<code·class="inline">file_logger</code>,·the·file·descriptor·opened·in·<code·class="inline">init</code>·must·be·closed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">terminate</span><span·class="p"·data-group-id="6744719397-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="6744719397-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">232 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>For·<code·class="inline">file_logger</code>,·the·file·descriptor·opened·in·<code·class="inline">init</code>·must·be·closed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">terminate</span><span·class="p"·data-group-id="5094202270-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5094202270-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
233 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="6744719397-2">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="6744719397-2">)</span><span·class="p">.</span></code></pre><h2·id="stopping"·class="section-heading">233 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="5094202270-2">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="5094202270-2">)</span><span·class="p">.</span></code></pre><h2·id="stopping"·class="section-heading">
234 ··<a·href="#stopping"·class="hover-link">234 ··<a·href="#stopping"·class="hover-link">
235 ····<i·class="ri-link-m"·aria-hidden="true"></i>235 ····<i·class="ri-link-m"·aria-hidden="true"></i>
236 ··</a>236 ··</a>
237 ··<span·class="text">Stopping</span>237 ··<span·class="text">Stopping</span>
238 </h2>238 </h2>
239 <p>When·an·event·manager·is·stopped,·it·gives·each·of·the·installed·event·handlers239 <p>When·an·event·manager·is·stopped,·it·gives·each·of·the·installed·event·handlers
240 the·chance·to·clean·up·by·calling·<code·class="inline">terminate/2</code>,·the·same·way·as·when·deleting·a240 the·chance·to·clean·up·by·calling·<code·class="inline">terminate/2</code>,·the·same·way·as·when·deleting·a
Offset 249, 33 lines modifiedOffset 249, 33 lines modified
249 this·is·done·is·defined·by·a·<a·href="sup_princ.html#shutdown">shutdown·strategy</a>·set·in249 this·is·done·is·defined·by·a·<a·href="sup_princ.html#shutdown">shutdown·strategy</a>·set·in
250 the·supervisor.</p><h3·id="standalone-event-managers"·class="section-heading">250 the·supervisor.</p><h3·id="standalone-event-managers"·class="section-heading">
251 ··<a·href="#standalone-event-managers"·class="hover-link">251 ··<a·href="#standalone-event-managers"·class="hover-link">
252 ····<i·class="ri-link-m"·aria-hidden="true"></i>252 ····<i·class="ri-link-m"·aria-hidden="true"></i>
253 ··</a>253 ··</a>
254 ··<span·class="text">Standalone·Event·Managers</span>254 ··<span·class="text">Standalone·Event·Managers</span>
255 </h3>255 </h3>
256 <p>An·event·manager·can·also·be·stopped·by·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="0600427727-1">(</span><span·class="ss">error_man</span><span·class="p"·data-group-id="0600427727-1">)</span><span·class="p">.</span><span·class="w">256 <p>An·event·manager·can·also·be·stopped·by·calling:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6196530547-1">(</span><span·class="ss">error_man</span><span·class="p"·data-group-id="6196530547-1">)</span><span·class="p">.</span><span·class="w">
257 </span><span·class="ss">ok</span></code></pre><h2·id="handling-other-messages"·class="section-heading">257 </span><span·class="ss">ok</span></code></pre><h2·id="handling-other-messages"·class="section-heading">
258 ··<a·href="#handling-other-messages"·class="hover-link">258 ··<a·href="#handling-other-messages"·class="hover-link">
259 ····<i·class="ri-link-m"·aria-hidden="true"></i>259 ····<i·class="ri-link-m"·aria-hidden="true"></i>
260 ··</a>260 ··</a>
261 ··<span·class="text">Handling·Other·Messages</span>261 ··<span·class="text">Handling·Other·Messages</span>
262 </h2>262 </h2>
263 <p>If·the·<code·class="inline">gen_event</code>·process·is·to·be·able·to·receive·other·messages263 <p>If·the·<code·class="inline">gen_event</code>·process·is·to·be·able·to·receive·other·messages
264 than·events,·the·callback·function·<code·class="inline">handle_info(Info,·State)</code>·must·be264 than·events,·the·callback·function·<code·class="inline">handle_info(Info,·State)</code>·must·be
265 implemented·to·handle·them.·Examples·of·other·messages·are·exit265 implemented·to·handle·them.·Examples·of·other·messages·are·exit
266 messages·if·the·event·manager·is·linked·to·other·processes·than·the266 messages·if·the·event·manager·is·linked·to·other·processes·than·the
267 supervisor·(for·example·via·<a·href="../../lib/stdlib-6.2/doc/html/gen_event.html#add_sup_handler/3"><code·class="inline">gen_event:add_sup_handler/3</code></a>)·and·is267 supervisor·(for·example·via·<a·href="../../lib/stdlib-6.2/doc/html/gen_event.html#add_sup_handler/3"><code·class="inline">gen_event:add_sup_handler/3</code></a>)·and·is
268 trapping·exit·signals.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_info</span><span·class="p"·data-group-id="7017845866-1">(</span><span·class="p"·data-group-id="7017845866-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reaso[·...·truncated·by·diffoscope;·len:·178,·SHA:·3ef0fd36bb6b9b9d752f606a8b6be6eb6d4be6c4a61a271d4bc3a468e780b897·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">268 trapping·exit·signals.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_info</span><span·class="p"·data-group-id="1624931550-1">(</span><span·class="p"·data-group-id="1624931550-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reaso[·...·truncated·by·diffoscope;·len:·178,·SHA:·30e4f5e574c39bd7a7c04eea5930d1f91051a8b4dae263ef61dedfcb4ea9c157·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
269 ····</span><span·class="c1">%%·Code·to·handle·exits·here.</span><span·class="w">269 ····</span><span·class="c1">%%·Code·to·handle·exits·here.</span><span·class="w">
270 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">270 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 827/41636 bytes (1.99%) of diff not shown.
1.77 KB
./usr/share/doc/erlang-doc/html/doc/system/example.html
    
Offset 131, 15 lines modifiedOffset 131, 15 lines modified
  
131 int·bar(int·y)·{131 int·bar(int·y)·{
132 ··return·y*2;132 ··return·y*2;
133 }</code></pre><p>The·functions·are·deliberately·kept·as·simple·as·possible,·for·readability133 }</code></pre><p>The·functions·are·deliberately·kept·as·simple·as·possible,·for·readability
134 reasons.</p><p>From·an·Erlang·perspective,·it·is·preferable·to·be·able·to·call·<code·class="inline">foo</code>·and·<code·class="inline">bar</code>134 reasons.</p><p>From·an·Erlang·perspective,·it·is·preferable·to·be·able·to·call·<code·class="inline">foo</code>·and·<code·class="inline">bar</code>
135 without·having·to·bother·about·that·they·are·C·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·Erlang·code</span><span·class="w">135 without·having·to·bother·about·that·they·are·C·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·Erlang·code</span><span·class="w">
136 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">136 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
137 </span><span·class="n">Res</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">complex</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="7528951315-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="7528951315-1">)</span><span·class="p">,</span><span·class="w">137 </span><span·class="n">Res</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">complex</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="9654614038-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="9654614038-1">)</span><span·class="p">,</span><span·class="w">
138 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Here,·the·communication·with·C·is·hidden·in·the·implementation·of·<code·class="inline">complex.erl</code>.138 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Here,·the·communication·with·C·is·hidden·in·the·implementation·of·<code·class="inline">complex.erl</code>.
139 In·the·following·sections,·it·is·shown·how·this·module·can·be·implemented·using139 In·the·following·sections,·it·is·shown·how·this·module·can·be·implemented·using
140 the·different·interoperability·mechanisms.</p>140 the·different·interoperability·mechanisms.</p>
141 </div>141 </div>
  
142 <div·class="bottom-actions"·id="bottom-actions">142 <div·class="bottom-actions"·id="bottom-actions">
143 ··<div·class="bottom-actions-item">143 ··<div·class="bottom-actions-item">
350 KB
./usr/share/doc/erlang-doc/html/doc/system/expressions.html
    
Offset 151, 81 lines modifiedOffset 151, 81 lines modified
151 </span><span·class="n">Phone_number</span><span·class="w">151 </span><span·class="n">Phone_number</span><span·class="w">
152 </span><span·class="p">_</span><span·class="w">152 </span><span·class="p">_</span><span·class="w">
153 </span><span·class="p">_</span><span·class="n">Height</span><span·class="w">153 </span><span·class="p">_</span><span·class="n">Height</span><span·class="w">
154 </span><span·class="ss">name@node</span></code></pre><p>Variables·are·bound·to·values·using·<a·href="patterns.html">pattern·matching</a>.·Erlang·uses154 </span><span·class="ss">name@node</span></code></pre><p>Variables·are·bound·to·values·using·<a·href="patterns.html">pattern·matching</a>.·Erlang·uses
155 <em>single·assignment</em>,·that·is,·a·variable·can·only·be·bound·once.</p><p>The·<em>anonymous·variable</em>·is·denoted·by·underscore·(_)·and·can·be·used·when·a155 <em>single·assignment</em>,·that·is,·a·variable·can·only·be·bound·once.</p><p>The·<em>anonymous·variable</em>·is·denoted·by·underscore·(_)·and·can·be·used·when·a
156 variable·is·required·but·its·value·can·be·ignored.</p><p><em>Example:</em></p><pre><code·class="text">[H|_]·=·[1,2,3]</code></pre><p>Variables·starting·with·underscore·(<code·class="inline">_</code>),·for·example,·<code·class="inline">_Height</code>,·are·normal156 variable·is·required·but·its·value·can·be·ignored.</p><p><em>Example:</em></p><pre><code·class="text">[H|_]·=·[1,2,3]</code></pre><p>Variables·starting·with·underscore·(<code·class="inline">_</code>),·for·example,·<code·class="inline">_Height</code>,·are·normal
157 variables,·not·anonymous.·However,·they·are·ignored·by·the·compiler·in·the·sense157 variables,·not·anonymous.·However,·they·are·ignored·by·the·compiler·in·the·sense
158 that·they·do·not·generate·warnings.</p><p><em>Example:</em></p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">member</span><span·class="p"·data-group-id="6828387202-1">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6828387202-2">[</span><span·class="p"·data-group-id="6828387202-2">]</span><span·class="p"·data-group-id="6828387202-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
159 ····</span><span·class="p"·data-group-id="6828387202-3">[</span><span·class="p"·data-group-id="6828387202-3">]</span><span·class="p">.</span></code></pre><p>can·be·rewritten·to·be·more·readable:</p><pre><code·class="makeup·erlang"·translate="no"><span·clas[·...·truncated·by·diffoscope;·len:·295,·SHA:·2649310395c3aab89e2b9ad72b4990909c4a3ae844295ac4f87d3bdd76e79a00·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">158 that·they·do·not·generate·warnings.</p><p><em>Example:</em></p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">member</span><span·class="p"·data-group-id="5703489227-1">(</span><span·class="p">_</span><span·class=[·...·truncated·by·diffoscope;·len:·183,·SHA:·df4cef64e6a39b0da490ab5028849e523c8e1b86d96f8646c7db4a0a5c3014bb·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 159 ····</span><span·class="p"·data-group-id="5703489227-3">[</span><span·class="p"·data-group-id="5703489227-3">]</span><span·class="p">.</span></code></pre><p>can·be·rewritten·to·be·more·readable:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">member</span><span·class="p"·data-group-id="6238279115-1">(</span><span·class="n">Elem</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6238279115-2">[</span><span·class="p"·data-group-id="6238279115-2">]</span><span·class="p"·data-group-id="6238279115-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</span><span·class="p"·data-group-id="4844218402-3">[</span><span·class="p"·data-group-id="4844218402-3">]</span><span·class="p">.</span></code></pre><p>This·causes·a·warning·for·an·unused·variable,·<code·class="inline">Elem</code>.·To·avoid·the·warning,160 ····</span><span·class="p"·data-group-id="6238279115-3">[</span><span·class="p"·data-group-id="6238279115-3">]</span><span·class="p">.</span></code></pre><p>This·causes·a·warning·for·an·unused·variable,·<code·class="inline">Elem</code>.·To·avoid·the·warning,
161 the·code·can·be·rewritten·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">member</span><span·class="p"·data-group-id="1649974851-1">(</span><span·class="p">_</span><span·class="n">Elem</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1649974851-2">[</span><span·class="p"·data-group-id="1649974851-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·9,·SHA:·03deffee3caea441e65e0a42a74276635da210bb2653433aa9d74f9064f85998·...·]51-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 the·code·can·be·rewritten·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">member</span><span·class="p"·data-group-id="1722117051-1">(</span><span·class="p">_</span><span·class="n">Elem</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1722117051-2">[</span><span·class="p"·data-group-id="1722117051-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·9,·SHA:·aefb7cd0088b2926e17b1d34129c4bca00d57bdd5e8ce1e42587e47a9b4e6037·...·]51-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="1649974851-3">[</span><span·class="p"·data-group-id="1649974851-3">]</span><span·class="p">.</span></code></pre><p>Notice·that·since·variables·starting·with·an·underscore·are·not·anonymous,·the162 ····</span><span·class="p"·data-group-id="1722117051-3">[</span><span·class="p"·data-group-id="1722117051-3">]</span><span·class="p">.</span></code></pre><p>Notice·that·since·variables·starting·with·an·underscore·are·not·anonymous,·the
163 following·example·matches:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7691697220-1">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7691697220-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="769169[·...·truncated·by·diffoscope;·len:·700,·SHA:·5fb47eb32fbc935a397d66593aef96a8feab6f36245b9b8276704a7c0f627467·...·]-2">}</span></code></pre><p>The·scope·for·a·variable·is·its·function·clause.·Variables·bound·in·a·branch·of163 following·example·matches:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1712667946-1">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1712667946-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="171266[·...·truncated·by·diffoscope;·len:·700,·SHA:·6a312e8ff2f6c8c7c3ef1fb8b25bd4c3b439ea56886241da6ffac1249cd4f775·...·]-2">}</span></code></pre><p>The·scope·for·a·variable·is·its·function·clause.·Variables·bound·in·a·branch·of
164 an·<code·class="inline">if</code>,·<code·class="inline">case</code>,·or·<code·class="inline">receive</code>·expression·must·be·bound·in·all·branches·to·have·a164 an·<code·class="inline">if</code>,·<code·class="inline">case</code>,·or·<code·class="inline">receive</code>·expression·must·be·bound·in·all·branches·to·have·a
165 value·outside·the·expression.·Otherwise·they·are·regarded·as·unsafe·outside165 value·outside·the·expression.·Otherwise·they·are·regarded·as·unsafe·outside
166 the·expression.</p><p>For·the·<code·class="inline">try</code>·expression·variable·scoping·is·limited·so·that·variables·bound·in166 the·expression.</p><p>For·the·<code·class="inline">try</code>·expression·variable·scoping·is·limited·so·that·variables·bound·in
167 the·expression·are·always·unsafe·outside·the·expression.</p><h2·id="patterns"·class="section-heading">167 the·expression·are·always·unsafe·outside·the·expression.</p><h2·id="patterns"·class="section-heading">
168 ··<a·href="#patterns"·class="hover-link">168 ··<a·href="#patterns"·class="hover-link">
169 ····<i·class="ri-link-m"·aria-hidden="true"></i>169 ····<i·class="ri-link-m"·aria-hidden="true"></i>
170 ··</a>170 ··</a>
171 ··<span·class="text">Patterns</span>171 ··<span·class="text">Patterns</span>
172 </h2>172 </h2>
173 <p>A·pattern·has·the·same·structure·as·a·term·but·can·contain·unbound·variables.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name1</span><span·class="w">173 <p>A·pattern·has·the·same·structure·as·a·term·but·can·contain·unbound·variables.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name1</span><span·class="w">
174 </span><span·class="p"·data-group-id="1743656211-1">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1743656211-1">]</span><span·class="w">174 </span><span·class="p"·data-group-id="4077898357-1">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4077898357-1">]</span><span·class="w">
175 </span><span·class="p"·data-group-id="1743656211-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="1743656211-2">}</span></code></pre><p>Patterns·are·allowed·in·clause·heads,·<a·href="expressions.html#case">case·expressions</a>,175 </span><span·class="p"·data-group-id="4077898357-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="4077898357-2">}</span></code></pre><p>Patterns·are·allowed·in·clause·heads,·<a·href="expressions.html#case">case·expressions</a>,
176 <a·href="expressions.html#receive">receive·expressions</a>,·and176 <a·href="expressions.html#receive">receive·expressions</a>,·and
177 <a·href="expressions.html#the-match-operator">match·expressions</a>.</p><h3·id="the-compound-pattern-operator"·class="section-heading">177 <a·href="expressions.html#the-match-operator">match·expressions</a>.</p><h3·id="the-compound-pattern-operator"·class="section-heading">
178 ··<a·href="#the-compound-pattern-operator"·class="hover-link">178 ··<a·href="#the-compound-pattern-operator"·class="hover-link">
179 ····<i·class="ri-link-m"·aria-hidden="true"></i>179 ····<i·class="ri-link-m"·aria-hidden="true"></i>
180 ··</a>180 ··</a>
181 ··<span·class="text">The·Compound·Pattern·Operator</span>181 ··<span·class="text">The·Compound·Pattern·Operator</span>
182 </h3>182 </h3>
183 <p>If·<code·class="inline">Pattern1</code>·and·<code·class="inline">Pattern2</code>·are·valid·patterns,·the·following·is·also·a·valid183 <p>If·<code·class="inline">Pattern1</code>·and·<code·class="inline">Pattern2</code>·are·valid·patterns,·the·following·is·also·a·valid
184 pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pattern1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Pattern2</span></code></pre><p>When·matched·against·a·term,·both·<code·class="inline">Pattern1</code>·and·<code·class="inline">Pattern2</code>·are·matched·against184 pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pattern1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Pattern2</span></code></pre><p>When·matched·against·a·term,·both·<code·class="inline">Pattern1</code>·and·<code·class="inline">Pattern2</code>·are·matched·against
185 the·term.·The·idea·behind·this·feature·is·to·avoid·reconstruction·of·terms.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="3414588398-1">(</span><span·class="p"·data-group-id="3414588398-2">{</span><span·class="ss">connect</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Number</sp[·...·truncated·by·diffoscope;·len:·224,·SHA:·f591be80f20cb3298338e86ffad503192866205a8537e6129d79eb0c7498721e·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">185 the·term.·The·idea·behind·this·feature·is·to·avoid·reconstruction·of·terms.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="9039248735-1">(</span><span·class="p"·data-group-id="9039248735-2">{</span><span·class="ss">connect</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Number</sp[·...·truncated·by·diffoscope;·len:·224,·SHA:·4396dff65957b6644cb55caee6e58b3e634c51462cdf9f2c4476f04e52e518cf·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
186 ····</span><span·class="n">Signal</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3414588398-3">{</span><span·class="ss">connect</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Number</span><span·class="p">,</span><span·class="n">Options</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·e0b8db808bca6fa5da8ab61918902a423ef0ccb10d4d0f58560fbb82fdf10149·...·]-3">}</span><span·class="p">,</span><span·class="w">186 ····</span><span·class="n">Signal</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9039248735-3">{</span><span·class="ss">connect</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Number</span><span·class="p">,</span><span·class="n">Options</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·a198b6b3e615442f0b0e117e62ed8607307fc6de837c5a896e181caf0ecb59dc·...·]-3">}</span><span·class="p">,</span><span·class="w">
187 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">;</span><span·class="w">187 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">;</span><span·class="w">
188 </span><span·class="nf">f</span><span·class="p"·data-group-id="3414588398-4">(</span><span·class="n">Signal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">To</span><span·class="p"·data-group-id="3414588398-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 </span><span·class="nf">f</span><span·class="p"·data-group-id="9039248735-4">(</span><span·class="n">Signal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">To</span><span·class="p"·data-group-id="9039248735-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
189 ····</span><span·class="ss">ignore</span><span·class="p">.</span></code></pre><p>can·instead·be·written·as</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="7465588678-1">(</span><span·class="p"·data-group-id="7465588678-2">{</span><span·class="ss">connect</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="p">_</span><span[·...·truncated·by·diffoscope;·len:·311,·SHA:·1c3b32f27c778bd2a3946e4ecf443bf78e59c729785932ca59f2087d859ef8cf·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 ····</span><span·class="ss">ignore</span><span·class="p">.</span></code></pre><p>can·instead·be·written·as</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="1412646943-1">(</span><span·class="p"·data-group-id="1412646943-2">{</span><span·class="ss">connect</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="p">_</span><span[·...·truncated·by·diffoscope;·len:·311,·SHA:·ec0bbac97d3a61b54fc25f82e12605e095d4bd877fe84576f11f8b17d73efe4b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">;</span><span·class="w">190 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">;</span><span·class="w">
191 </span><span·class="nf">f</span><span·class="p"·data-group-id="7465588678-3">(</span><span·class="n">Signal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">To</span><span·class="p"·data-group-id="7465588678-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 </span><span·class="nf">f</span><span·class="p"·data-group-id="1412646943-3">(</span><span·class="n">Signal</span><span·class="p">,</span><span·class="w">·</span><span·class="n">To</span><span·class="p"·data-group-id="1412646943-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ····</span><span·class="ss">ignore</span><span·class="p">.</span></code></pre><p>The·compound·pattern·operator·does·not·imply·that·its·operands·are·matched·in192 ····</span><span·class="ss">ignore</span><span·class="p">.</span></code></pre><p>The·compound·pattern·operator·does·not·imply·that·its·operands·are·matched·in
193 any·particular·order.·That·means·that·it·is·not·legal·to·bind·a·variable·in193 any·particular·order.·That·means·that·it·is·not·legal·to·bind·a·variable·in
194 <code·class="inline">Pattern1</code>·and·use·it·in·<code·class="inline">Pattern2</code>,·or·vice·versa.</p><h3·id="string-prefix-in-patterns"·class="section-heading">194 <code·class="inline">Pattern1</code>·and·use·it·in·<code·class="inline">Pattern2</code>,·or·vice·versa.</p><h3·id="string-prefix-in-patterns"·class="section-heading">
195 ··<a·href="#string-prefix-in-patterns"·class="hover-link">195 ··<a·href="#string-prefix-in-patterns"·class="hover-link">
196 ····<i·class="ri-link-m"·aria-hidden="true"></i>196 ····<i·class="ri-link-m"·aria-hidden="true"></i>
197 ··</a>197 ··</a>
198 ··<span·class="text">String·Prefix·in·Patterns</span>198 ··<span·class="text">String·Prefix·in·Patterns</span>
199 </h3>199 </h3>
200 <p>When·matching·strings,·the·following·is·a·valid·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="8915720803-1">(</span><span·class="s">&quot;prefix&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Str</span><span·class="p"·data-group-id="8915720803-1">)</span><span·class="w">·</span><span·class="p">-[·...·truncated·by·diffoscope;·len:·837,·SHA:·9c3e438955a71bf60788b2980c3e9cfc6cab58291b6909711c61998002265468·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h3·id="expressions-in-patterns"·class="section-heading">200 <p>When·matching·strings,·the·following·is·a·valid·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="7948702248-1">(</span><span·class="s">&quot;prefix&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Str</span><span·class="p"·data-group-id="7948702248-1">)</span><span·class="w">·</span><span·class="p">-[·...·truncated·by·diffoscope;·len:·837,·SHA:·68cef933df7ce067412f4f62dc5f187d2610d1a5b83cfe2420c8ae6a0c06b5b4·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h3·id="expressions-in-patterns"·class="section-heading">
201 ··<a·href="#expressions-in-patterns"·class="hover-link">201 ··<a·href="#expressions-in-patterns"·class="hover-link">
202 ····<i·class="ri-link-m"·aria-hidden="true"></i>202 ····<i·class="ri-link-m"·aria-hidden="true"></i>
203 ··</a>203 ··</a>
204 ··<span·class="text">Expressions·in·Patterns</span>204 ··<span·class="text">Expressions·in·Patterns</span>
205 </h3>205 </h3>
206 <p>An·arithmetic·expression·can·be·used·within·a·pattern·if·it·meets·both·of·the206 <p>An·arithmetic·expression·can·be·used·within·a·pattern·if·it·meets·both·of·the
207 following·two·conditions:</p><ul><li>It·uses·only·numeric·or·bitwise·operators.</li><li>Its·value·can·be·evaluated·to·a·constant·when·complied.</li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="p"·data-group-id="2923329388-1">{</span><span·class="n">Value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="2923329388-1">}</span><span·class="w">·</span><span·class="k">of</span><span·class="w">207 following·two·conditions:</p><ul><li>It·uses·only·numeric·or·bitwise·operators.</li><li>Its·value·can·be·evaluated·to·a·constant·when·complied.</li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="p"·data-group-id="2288470812-1">{</span><span·class="n">Value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="2288470812-1">}</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
208 ····</span><span·class="p"·data-group-id="2923329388-2">{</span><span·class="o">?</span><span·class="n">THRESHOLD</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p"·data-group-id="2923329388-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="the-match-operator"·class="section-heading">208 ····</span><span·class="p"·data-group-id="2288470812-2">{</span><span·class="o">?</span><span·class="n">THRESHOLD</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p"·data-group-id="2288470812-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="the-match-operator"·class="section-heading">
209 ··<a·href="#the-match-operator"·class="hover-link">209 ··<a·href="#the-match-operator"·class="hover-link">
210 ····<i·class="ri-link-m"·aria-hidden="true"></i>210 ····<i·class="ri-link-m"·aria-hidden="true"></i>
211 ··</a>211 ··</a>
212 ··<span·class="text">The·Match·Operator</span>212 ··<span·class="text">The·Match·Operator</span>
213 </h2>213 </h2>
214 <p>The·following·matches·<code·class="inline">Pattern</code>·against·<code·class="inline">Expr</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pattern</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expr</span></code></pre><p>If·the·matching·succeeds,·any·unbound·variable·in·the·pattern·becomes·bound·and214 <p>The·following·matches·<code·class="inline">Pattern</code>·against·<code·class="inline">Expr</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pattern</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expr</span></code></pre><p>If·the·matching·succeeds,·any·unbound·variable·in·the·pattern·becomes·bound·and
215 the·value·of·<code·class="inline">Expr</code>·is·returned.</p><p>If·multiple·match·operators·are·applied·in·sequence,·they·will·be·evaluated·from215 the·value·of·<code·class="inline">Expr</code>·is·returned.</p><p>If·multiple·match·operators·are·applied·in·sequence,·they·will·be·evaluated·from
216 right·to·left.</p><p>If·the·matching·fails,·a·<code·class="inline">badmatch</code>·run-time·error·occurs.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="2196081562-1">{</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="2196081562-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·281,·SHA:·77d5153f56809e6eb8b9a910f9eac9fa285e109a84fd3680f4714fc8b4ff5cb8·...·]-2">}</span><span·class="p">.</span><span·class="w">216 right·to·left.</p><p>If·the·matching·fails,·a·<code·class="inline">badmatch</code>·run-time·error·occurs.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="8372131779-1">{</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="8372131779-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·281,·SHA:·ec7470f63fbb50160ab44d02c9728222e1c63e733b615f64a9e26402164ac1fc·...·]-2">}</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="2196081562-3">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="2196081562-3">}</span><span·class="gp·unselectable">217 </span><span·class="p"·data-group-id="8372131779-3">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="8372131779-3">}</span><span·class="gp·unselectable">
218 2&gt;·</span><span·class="n">A</span><span·class="p">.</span><span·class="w">218 2&gt;·</span><span·class="n">A</span><span·class="p">.</span><span·class="w">
219 </span><span·class="ss">answer</span><span·class="gp·unselectable">219 </span><span·class="ss">answer</span><span·class="gp·unselectable">
220 3&gt;·</span><span·class="n">B</span><span·class="p">.</span><span·class="w">220 3&gt;·</span><span·class="n">B</span><span·class="p">.</span><span·class="w">
221 </span><span·class="mi">42</span><span·class="gp·unselectable">221 </span><span·class="mi">42</span><span·class="gp·unselectable">
222 4&gt;·</span><span·class="n">T</span><span·class="p">.</span><span·class="w">222 4&gt;·</span><span·class="n">T</span><span·class="p">.</span><span·class="w">
223 </span><span·class="p"·data-group-id="2196081562-4">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="2196081562-4">}</span><span·class="gp·unselectable">223 </span><span·class="p"·data-group-id="8372131779-4">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="8372131779-4">}</span><span·class="gp·unselectable">
224 5&gt;·</span><span·class="p"·data-group-id="2196081562-5">{</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="2196081562-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·3ebd7a480ea18021f117031f4a39c99261ee49aa9048590a73a83ca4ef8c4d28·...·]-6">]</span><span·class="p">.</span><span·class="w">224 5&gt;·</span><span·class="p"·data-group-id="8372131779-5">{</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="8372131779-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·e2f5f15d11b8add528521e899d43768773ee910ffc6e4772c0c304d6913d061c·...·]-6">]</span><span·class="p">.</span><span·class="w">
225 </span><span·class="gt">**·exception·error:·no·match·of·right-hand·side·value·[1,2]</span></code></pre><p>Because·multiple·match·operators·are·evaluated·from·right·to·left,·it·means225 </span><span·class="gt">**·exception·error:·no·match·of·right-hand·side·value·[1,2]</span></code></pre><p>Because·multiple·match·operators·are·evaluated·from·right·to·left,·it·means
226 that:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pattern1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Pattern2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="w">·</span><span·class="p">.</span><span·class="w">·</span><span·class="p">.</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PatternN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expression</span></code></pre><p>is·equivalent·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Temporary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expression</span><span·class="p">,</span><span·class="w">226 that:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pattern1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Pattern2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="w">·</span><span·class="p">.</span><span·class="w">·</span><span·class="p">.</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PatternN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expression</span></code></pre><p>is·equivalent·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Temporary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expression</span><span·class="p">,</span><span·class="w">
227 </span><span·class="n">PatternN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Temporary</span><span·class="p">,</span><span·class="w">227 </span><span·class="n">PatternN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Temporary</span><span·class="p">,</span><span·class="w">
228 ···</span><span·class="p">.</span><span·class="w">228 ···</span><span·class="p">.</span><span·class="w">
229 ···</span><span·class="p">.</span><span·class="w">229 ···</span><span·class="p">.</span><span·class="w">
230 ···</span><span·class="p">.</span><span·class="p">,</span><span·class="w">230 ···</span><span·class="p">.</span><span·class="p">,</span><span·class="w">
231 </span><span·class="n">Pattern2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Temporary</span><span·class="p">,</span><span·class="w">231 </span><span·class="n">Pattern2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Temporary</span><span·class="p">,</span><span·class="w">
Offset 239, 30 lines modifiedOffset 239, 30 lines modified
239 can·safely·be·skipped·on·a·first·reading.</p></section><p>The·<code·class="inline">=</code>·character·is·used·to·denote·two·similar·but·distinct·operators:·the239 can·safely·be·skipped·on·a·first·reading.</p></section><p>The·<code·class="inline">=</code>·character·is·used·to·denote·two·similar·but·distinct·operators:·the
240 match·operator·and·the·compound·pattern·operator.·Which·one·is·meant·is240 match·operator·and·the·compound·pattern·operator.·Which·one·is·meant·is
241 determined·by·context.</p><p>The·<em>compound·pattern·operator</em>·is·used·to·construct·a·compound·pattern·from·two241 determined·by·context.</p><p>The·<em>compound·pattern·operator</em>·is·used·to·construct·a·compound·pattern·from·two
242 patterns.·Compound·patterns·are·accepted·everywhere·a·pattern·is·accepted.·A242 patterns.·Compound·patterns·are·accepted·everywhere·a·pattern·is·accepted.·A
243 compound·pattern·matches·if·all·of·its·constituent·patterns·match.·It·is·not243 compound·pattern·matches·if·all·of·its·constituent·patterns·match.·It·is·not
244 legal·for·a·pattern·that·is·part·of·a·compound·pattern·to·use·variables·(as·keys244 legal·for·a·pattern·that·is·part·of·a·compound·pattern·to·use·variables·(as·keys
245 in·map·patterns·or·sizes·in·binary·patterns)·bound·in·other·sub·patterns·of·the245 in·map·patterns·or·sizes·in·binary·patterns)·bound·in·other·sub·patterns·of·the
246 same·compound·pattern.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2800757389-1">(</span><span·class="p"·data-group-id="2800757389-2">#{</span><span·class="n">Key</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="2800757389-2">}</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·e2546346413f07b26702f6cd31dd4959bf55c3df4cc86831cc259100dcf94d4b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">246 same·compound·pattern.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6864271787-1">(</span><span·class="p"·data-group-id="6864271787-2">#{</span><span·class="n">Key</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="6864271787-2">}</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·aad947a735c9a623b903090e0321e96daef5182496e5e70d11498a0e998af4e2·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
247 </span><span·class="gt">*·1:7:·variable·&#39;Key&#39;·is·unbound</span><span·class="gp·unselectable">247 </span><span·class="gt">*·1:7:·variable·&#39;Key&#39;·is·unbound</span><span·class="gp·unselectable">
248 2&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2800757389-4">(</span><span·class="p"·data-group-id="2800757389-5">{</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="2800757389-5">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·887,·SHA:·3287ac8e928eeb333e44a7e89ac758d296d94f40fb8e0186608a63f41766d47a·...·]-7">)</span><span·class="p">.</span><span·class="w">248 2&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6864271787-4">(</span><span·class="p"·data-group-id="6864271787-5">{</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="6864271787-5">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·887,·SHA:·d670e10437bc9b2aa1239d983aa6e89e6daecfa4627efaf874a41a30a743cf05·...·]-7">)</span><span·class="p">.</span><span·class="w">
249 </span><span·class="p"·data-group-id="2800757389-9">{</span><span·class="p"·data-group-id="2800757389-10">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2800757389-10">}</span><span·class="p">,</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·bf012976ec4bdac9337f82f583260d9c56e2f411205320fa2a475a88e3355f48·...·]-9">}</span><span·class="gp·unselectable">249 </span><span·class="p"·data-group-id="6864271787-9">{</span><span·class="p"·data-group-id="6864271787-10">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6864271787-10">}</span><span·class="p">,</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·8c5048faeb0ec0d5d69e5ce7c2acaefc49d1c10e1996cdb5b4fbd176fc84b012·...·]-9">}</span><span·class="gp·unselectable">
250 3&gt;·</span><span·class="n">G</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2800757389-11">(</span><span·class="p"·data-group-id="2800757389-12">&lt;&lt;</span><span·class="n">A</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">B</span><span·class="p">:</span><span·class="mi">8</span><s[·...·truncated·by·diffoscope;·len:·1148,·SHA:·61381bf56ec923ec4c37d79231d01c75b4c334cf2847e34bdc9d8975e8a23e58·...·]-15">)</span><span·class="p">.</span><span·class="w">250 3&gt;·</span><span·class="n">G</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6864271787-11">(</span><span·class="p"·data-group-id="6864271787-12">&lt;&lt;</span><span·class="n">A</span><span·class="p">:</span><span·class="mi">8</span><span·class="p">,</span><span·class="n">B</span><span·class="p">:</span><span·class="mi">8</span><s[·...·truncated·by·diffoscope;·len:·1148,·SHA:·5d18ae3bae44938c962707d39c623bc5ad9b5dd663c6dfa276d7955642bf90a2·...·]-15">)</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p"·data-group-id="2800757389-17">{</span><span·class="mi">42</span><span·class="p">,</span><span·class="mi">43</span><span·class="p">,</span><span·class="mi">10795</span><span·class="p"·data-group-id="2800757389-17">}</span></code></pre><p>The·<em>match·operator</em>·is·allowed·everywhere·an·expression·is·allowed.·It·is·used251 </span><span·class="p"·data-group-id="6864271787-17">{</span><span·class="mi">42</span><span·class="p">,</span><span·class="mi">43</span><span·class="p">,</span><span·class="mi">10795</span><span·class="p"·data-group-id="6864271787-17">}</span></code></pre><p>The·<em>match·operator</em>·is·allowed·everywhere·an·expression·is·allowed.·It·is·used
252 to·match·the·value·of·an·expression·to·a·pattern.·If·multiple·match·operators252 to·match·the·value·of·an·expression·to·a·pattern.·If·multiple·match·operators
253 are·applied·in·sequence,·they·will·be·evaluated·from·right·to·left.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4650062699-1">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">key2</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·120,·SHA:·91134213000f69ba243e059fe7215c25265ab21144c9e0d8671e0101e22543f5·...·]-1">}</span><span·class="p">.</span><span·class="w">253 are·applied·in·sequence,·they·will·be·evaluated·from·right·to·left.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7495118653-1">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">key2</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·120,·SHA:·9611ccd2dde03e5a61cad36877c132f46c9880b666abda8986d7c78df51bb9ae·...·]-1">}</span><span·class="p">.</span><span·class="w">
254 </span><span·class="p"·data-group-id="4650062699-2">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="ss">key2</span><span·class="w">·</span><span·class="p">=&gt;</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·b657097df7f59d94fcbf1f2de13cfb8bd2a4514989642a9ad4e7d1a13b2bcada·...·]-2">}</span><span·class="gp·unselectable">254 </span><span·class="p"·data-group-id="7495118653-2">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="ss">key2</span><span·class="w">·</span><span·class="p">=&gt;</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·709812b2d12c551f76615c7f149f1cd90dd3c47cfd1022e55dac4bad2631225e·...·]-2">}</span><span·class="gp·unselectable">
255 2&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="4650062699-3">(</span><span·class="n">Key</span><span·class="p"·data-group-id="4650062699-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4650062699-4">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·420,·SHA:·c27a553d5ef6399a6537278d0e1354bdb2c790f03f1383532900734e1538e706·...·]-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">.</span><span·class="w">255 2&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="7495118653-3">(</span><span·class="n">Key</span><span·class="p"·data-group-id="7495118653-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7495118653-4">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·420,·SHA:·a30c31b9f207ddfc8f2af9351e0f7b79870d7fb817aab8045734c7af1cc94df4·...·]-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">.</span><span·class="w">
256 </span><span·class="ss">value</span><span·class="gp·unselectable">256 </span><span·class="ss">value</span><span·class="gp·unselectable">
257 3&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="4650062699-6">(</span><span·class="n">Key</span><span·class="p"·data-group-id="4650062699-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4650062699-7">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·622,·SHA:·ba1890517d30ca1a2f2929bb1f7d151f764daa4826bf54a3c07b4122bd653ca1·...·]-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">.</span><span·class="w">257 3&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="7495118653-6">(</span><span·class="n">Key</span><span·class="p"·data-group-id="7495118653-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7495118653-7">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·622,·SHA:·082341e65c3860c6d8a51be5a1229d34752be0bf573dc202e2ad8021f10060d4·...·]-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">.</span><span·class="w">
258 </span><span·class="ss">value</span><span·class="gp·unselectable">258 </span><span·class="ss">value</span><span·class="gp·unselectable">
259 4&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="4650062699-10">(</span><span·class="n">Key</span><span·class="p"·data-group-id="4650062699-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4650062699-11">(</span><span·class="p"·data-group-id="4650062699-12">#{</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·0ec01109bab3abc61090b65fd1be63123cde0004cc38e6f68a8e4bc21a97c51c·...·]-11">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">.</span><span·class="w">259 4&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="7495118653-10">(</span><span·class="n">Key</span><span·class="p"·data-group-id="7495118653-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7495118653-11">(</span><span·class="p"·data-group-id="7495118653-12">#{</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·800fecf2fd61579405929de8676c633804d27ef439b478d3dbf4bfcab7b920a2·...·]-11">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">.</span><span·class="w">
260 </span><span·class="gt">*·1:12:·variable·&#39;Key&#39;·is·unbound</span><span·class="gp·unselectable">260 </span><span·class="gt">*·1:12:·variable·&#39;Key&#39;·is·unbound</span><span·class="gp·unselectable">
261 5&gt;·</span><span·class="p"·data-group-id="4650062699-14">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">Y</span><span·class="p"·data-group-id="4650062699-14">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">begin[·...·truncated·by·diffoscope;·len:·377,·SHA:·1dbeb2768de0b311a39e000224c111ff253dd8127c51c019f9f69b695040474d·...·]-15">&gt;&gt;</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p">.</span><span·class="w">261 5&gt;·</span><span·class="p"·data-group-id="7495118653-14">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">Y</span><span·class="p"·data-group-id="7495118653-14">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">begin[·...·truncated·by·diffoscope;·len:·377,·SHA:·a48bdb69360861a3ae422bf692c5aa49959d580aead977de95cf099ec578bc2f·...·]-15">&gt;&gt;</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p">.</span><span·class="w">
262 </span><span·class="mi">42</span></code></pre><p>The·expression·at·prompt·<code·class="inline">2&gt;</code>·first·matches·the·value·of·variable·<code·class="inline">M</code>·against262 </span><span·class="mi">42</span></code></pre><p>The·expression·at·prompt·<code·class="inline">2&gt;</code>·first·matches·the·value·of·variable·<code·class="inline">M</code>·against
263 pattern·<code·class="inline">#{key·:=·Key}</code>,·binding·variable·<code·class="inline">Key</code>.·It·then·matches·the·value·of263 pattern·<code·class="inline">#{key·:=·Key}</code>,·binding·variable·<code·class="inline">Key</code>.·It·then·matches·the·value·of
264 <code·class="inline">M</code>·against·pattern·<code·class="inline">#{Key·:=·Value}</code>·using·variable·<code·class="inline">Key</code>·as·the·key,·binding264 <code·class="inline">M</code>·against·pattern·<code·class="inline">#{Key·:=·Value}</code>·using·variable·<code·class="inline">Key</code>·as·the·key,·binding
265 variable·<code·class="inline">Value</code>.</p><p>The·expression·at·prompt·<code·class="inline">3&gt;</code>·matches·expression·<code·class="inline">(#{key·:=·Key}·=·M)</code>·against265 variable·<code·class="inline">Value</code>.</p><p>The·expression·at·prompt·<code·class="inline">3&gt;</code>·matches·expression·<code·class="inline">(#{key·:=·Key}·=·M)</code>·against
266 pattern·<code·class="inline">#{Key·:=·Value}</code>.·The·expression·inside·the·parentheses·is·evaluated266 pattern·<code·class="inline">#{Key·:=·Value}</code>.·The·expression·inside·the·parentheses·is·evaluated
267 first.·That·is,·<code·class="inline">M</code>·is·matched·against·<code·class="inline">#{key·:=·Key}</code>,·and·then·the·value·of267 first.·That·is,·<code·class="inline">M</code>·is·matched·against·<code·class="inline">#{key·:=·Key}</code>,·and·then·the·value·of
268 <code·class="inline">M</code>·is·matched·against·pattern·<code·class="inline">#{Key·:=·Value}</code>.·That·is·the·same·evaluation268 <code·class="inline">M</code>·is·matched·against·pattern·<code·class="inline">#{Key·:=·Value}</code>.·That·is·the·same·evaluation
Offset 276, 30 lines modifiedOffset 276, 30 lines modified
276 binding·variable·<code·class="inline">Y</code>·and·creating·a·binary.·The·binary·is·then·matched·against276 binding·variable·<code·class="inline">Y</code>·and·creating·a·binary.·The·binary·is·then·matched·against
277 pattern·<code·class="inline">&lt;&lt;X:Y&gt;&gt;</code>·using·the·value·of·<code·class="inline">Y</code>·as·the·size·of·the·segment.</p><h2·id="function-calls"·class="section-heading">277 pattern·<code·class="inline">&lt;&lt;X:Y&gt;&gt;</code>·using·the·value·of·<code·class="inline">Y</code>·as·the·size·of·the·segment.</p><h2·id="function-calls"·class="section-heading">
278 ··<a·href="#function-calls"·class="hover-link">278 ··<a·href="#function-calls"·class="hover-link">
279 ····<i·class="ri-link-m"·aria-hidden="true"></i>279 ····<i·class="ri-link-m"·aria-hidden="true"></i>
280 ··</a>280 ··</a>
281 ··<span·class="text">Function·Calls</span>281 ··<span·class="text">Function·Calls</span>
282 </h2>282 </h2>
283 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExprF</span><span·class="p"·data-group-id="0923400759-1">(</span><span·class="n">Expr1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ExprN</span><span·class="p"·data-group-id="0923400759-1">)</span><span·class="w">283 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExprF</span><span·class="p"·data-group-id="4108066924-1">(</span><span·class="n">Expr1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ExprN</span><span·class="p"·data-group-id="4108066924-1">)</span><span·class="w">
284 </span><span·class="n">ExprM</span><span·class="p">:</span><span·class="n">ExprF</span><span·class="p"·data-group-id="0923400759-2">(</span><span·class="n">Expr1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ExprN</span><span·class="p"·data-group-id="0923400759-2">)</span></code></pre><p>In·the·first·form·of·function·calls,·<code·class="inline">ExprM:ExprF(Expr1,...,ExprN)</code>,·each·of284 </span><span·class="n">ExprM</span><span·class="p">:</span><span·class="n">ExprF</span><span·class="p"·data-group-id="4108066924-2">(</span><span·class="n">Expr1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ExprN</span><span·class="p"·data-group-id="4108066924-2">)</span></code></pre><p>In·the·first·form·of·function·calls,·<code·class="inline">ExprM:ExprF(Expr1,...,ExprN)</code>,·each·of
285 <code·class="inline">ExprM</code>·and·<code·class="inline">ExprF</code>·must·be·an·atom·or·an·expression·that·evaluates·to·an·atom.285 <code·class="inline">ExprM</code>·and·<code·class="inline">ExprF</code>·must·be·an·atom·or·an·expression·that·evaluates·to·an·atom.
286 The·function·is·said·to·be·called·by·using·the·<em>fully·qualified·function·name</em>.286 The·function·is·said·to·be·called·by·using·the·<em>fully·qualified·function·name</em>.
287 This·is·often·referred·to·as·a·<em>remote</em>·or·<em>external·function·call</em>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keyfind</span><span·class="p"·data-group-id="9457799395-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="9457799395-1">)</span></code></pre><p>In·the·second·form·of·function·calls,·<code·class="inline">ExprF(Expr1,...,ExprN)</code>,·<code·class="inline">ExprF</code>·must·be287 This·is·often·referred·to·as·a·<em>remote</em>·or·<em>external·function·call</em>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keyfind</span><span·class="p"·data-group-id="2494614008-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="2494614008-1">)</span></code></pre><p>In·the·second·form·of·function·calls,·<code·class="inline">ExprF(Expr1,...,ExprN)</code>,·<code·class="inline">ExprF</code>·must·be
288 an·atom·or·evaluate·to·a·fun.</p><p>If·<code·class="inline">ExprF</code>·is·an·atom,·the·function·is·said·to·be·called·by·using·the288 an·atom·or·evaluate·to·a·fun.</p><p>If·<code·class="inline">ExprF</code>·is·an·atom,·the·function·is·said·to·be·called·by·using·the
Max diff block lines reached; 303668/357825 bytes (84.86%) of diff not shown.
213 KB
./usr/share/doc/erlang-doc/html/doc/system/funs.html
    
Offset 117, 402 lines modifiedOffset 117, 402 lines modified
  
117 <h2·id="map"·class="section-heading">117 <h2·id="map"·class="section-heading">
118 ··<a·href="#map"·class="hover-link">118 ··<a·href="#map"·class="hover-link">
119 ····<i·class="ri-link-m"·aria-hidden="true"></i>119 ····<i·class="ri-link-m"·aria-hidden="true"></i>
120 ··</a>120 ··</a>
121 ··<span·class="text">map</span>121 ··<span·class="text">map</span>
122 </h2>122 </h2>
123 <p>The·following·function,·<code·class="inline">double</code>,·doubles·every·element·in·a·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">double</span><span·class="p"·data-group-id="9582308551-1">(</span><span·class="p"·data-group-id="9582308551-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9582308551-2">]</span><span·class="p"·data-group-id="9582308551-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9582308551-3">[</span><span·class="mi">2</span><span·class="o">*</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">double</span><span·class="p"·data-group-id="9582308551-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="9582308551-4">)</span><span·class="p"·data-group-id="9582308551-3">]</span><span·class="p">;</span><span·class="w"> 
124 </span><span·class="nf">double</span><span·class="p"·data-group-id="9582308551-5">(</span><span·class="p"·data-group-id="9582308551-6">[</span><span·class="p"·data-group-id="9582308551-6">]</span><span·class="p"·data-group-id="9582308551-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9582308551-7">[</span><span·class="p"·data-group-id="9582308551-7">]</span><span·class="p">.</span></code></pre><p>Hence,·the·argument·entered·as·input·is·doubled·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">double</span><span·class="p"·data-group-id="6033065712-1">(</span><span·class="p"·data-group-id="6033065712-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="6033065712-2">]</span><span·class="p"·data-group-id="6033065712-1">)</span><span·class="p">.</span><span·class="w"> 
125 </span><span·class="p"·data-group-id="6033065712-3">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="6033065712-3">]</span></code></pre><p>The·following·function,·<code·class="inline">add_one</code>,·adds·one·to·every·element·in·a·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">add_one</span><span·class="p"·data-group-id="0818213852-1">(</span><span·class="p"·data-group-id="0818213852-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0818213852-2">]</span><span·class="p"·data-group-id="0818213852-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0818213852-3">[</span><span·class="n">H</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">|</span><span·class="nf">add_one</span><span·class="p"·data-group-id="0818213852-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="0818213852-4">)</span><span·class="p"·data-group-id="0818213852-3">]</span><span·class="p">;</span><span·class="w"> 
126 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="0818213852-5">(</span><span·class="p"·data-group-id="0818213852-6">[</span><span·class="p"·data-group-id="0818213852-6">]</span><span·class="p"·data-group-id="0818213852-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0818213852-7">[</span><span·class="p"·data-group-id="0818213852-7">]</span><span·class="p">.</span></code></pre><p>The·functions·<code·class="inline">double</code>·and·<code·class="inline">add_one</code>·have·a·similar·structure.·This·can·be·used 
127 by·writing·a·function·<code·class="inline">map</code>·that·expresses·this·similarity:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">map</span><span·class="p"·data-group-id="6046151102-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6046151102-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6046151102-2">]</span><span·class="p"·data-group-id="6046151102-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6046151102-3">[</span><span·class="n">F</span><span·class="p"·data-group-id="6046151102-4">(</span><span·class="n">H</span><span·class="p"·data-group-id="6046151102-4">)</span><span·class="p">|</span><span·class="nf">map</span><span·class="p"·data-group-id="6046151102-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="6046151102-5">)</span><span·class="p"·data-group-id="6046151102-3">]</span><span·class="p">;</span><span·class="w"> 
128 </span><span·class="nf">map</span><span·class="p"·data-group-id="6046151102-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6046151102-7">[</span><span·class="p"·data-group-id="6046151102-7">[·...·truncated·by·diffoscope;·len:·442,·SHA:·4f0475e28b3ee81cc47e4f9f841ca85a79582aad6cf475cd1e75e59a131a1c7f·...·]123 <p>The·following·function,·<code·class="inline">double</code>,·doubles·every·element·in·a·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">double</span><span·class="p"·data-group-id="5456486721-1">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·683,·SHA:·c5878a23016f20608b8d77de6739e476b897aa53eb54cf9c092bb849916344fb·...·]
 124 </span><span·class="nf">double</span><span·class="p"·data-group-id="5456486721-5">(</span><span·class="p"·data-group-id="5456486721-6">[</span><span·class="p"·data-group-id="5456486721-6">]</span><span·class="p"·data-group-id="5456486721-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5456486721-7">[</span><span·class="p"·data-group-id="5456486721-7">]</span><span·class="p">.</span></code></pre><p>Hence,·the·argument·entered·as·input·is·doubled·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">double</span><span·class="p"·data-group-id="9774260593-1">(</span><span·class="p"·data-group-id="9774260593-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="9774260593-2">]</span><span·class="p"·data-group-id="9774260593-1">)</span><span·class="p">.</span><span·class="w">
 125 </span><span·class="p"·data-group-id="9774260593-3">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="9774260593-3">]</span></code></pre><p>The·following·function,·<code·class="inline">add_one</code>,·adds·one·to·every·element·in·a·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">add_one</span><span·class="p"·data-group-id="6648735255-1">(</span><span·class="p"·data-group-id="6648735255-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6648735255-2">]</span><span·class="p"·data-group-id="6648735255-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6648735255-3">[</span><span·class="n">H</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">|</span><span·class="nf">add_one</span><span·class="p"·data-group-id="6648735255-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="6648735255-4">)</span><span·class="p"·data-group-id="6648735255-3">]</span><span·class="p">;</span><span·class="w">
 126 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="6648735255-5">(</span><span·class="p"·data-group-id="6648735255-6">[</span><span·class="p"·data-group-id="6648735255-6">]</span><span·class="p"·data-group-id="6648735255-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6648735255-7">[</span><span·class="p"·data-group-id="6648735255-7">]</span><span·class="p">.</span></code></pre><p>The·functions·<code·class="inline">double</code>·and·<code·class="inline">add_one</code>·have·a·similar·structure.·This·can·be·used
 127 by·writing·a·function·<code·class="inline">map</code>·that·expresses·this·similarity:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">map</span><span·class="p"·data-group-id="1780998880-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1780998880-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1780998880-2">]</span><span·class="p"·data-group-id="1780998880-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1780998880-3">[</span><span·class="n">F</span><span·class="p"·data-group-id="1780998880-4">(</span><span·class="n">H</span><span·class="p"·data-group-id="1780998880-4">)</span><span·class="p">|</span><span·class="nf">map</span><span·class="p"·data-group-id="1780998880-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="1780998880-5">)</span><span·class="p"·data-group-id="1780998880-3">]</span><span·class="p">;</span><span·class="w">
 128 </span><span·class="nf">map</span><span·class="p"·data-group-id="1780998880-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1780998880-7">[</span><span·class="p"·data-group-id="1780998880-7">]</span><span·class="p"·data-group-id="1780998880-6">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1780998880-8">[</span><span·class="p"·data-group-id="1780998880-8">]</span><span·class="p">.</span></code></pre><p>The·functions·<code·class="inline">double</code>·and·<code·class="inline">add_one</code>·can·now·be·expressed·in·terms·of·<code·class="inline">map</code>·as
129 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">double</span><span·class="p"·data-group-id="4117934240-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="4117934240-1">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="4117934240-2">(</span>[·...·truncated·by·diffoscope;·len:·469,·SHA:·7afcbee1a78f13887214e41382b9e93a011d2577c3f8dae7a55fb0aa1a203ffb·...·]-2">)</span><span·class="p">.</span><span·class="w">129 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">double</span><span·class="p"·data-group-id="1191594995-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="1191594995-1">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="1191594995-2">(</span>[·...·truncated·by·diffoscope;·len:·469,·SHA:·38d58c0bf0d5cb25b819a87fbae87591503198d64e97b9787dd1b866445fae4f·...·]-2">)</span><span·class="p">.</span><span·class="w">
130 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="4117934240-4">(</span><span·class="n">L</span><span·class="p"·data-group-id="4117934240-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="4117934240-5">(</span><[·...·truncated·by·diffoscope;·len:·516,·SHA:·46b67392d4053fbb1d80a9679ddb77cfa4757ca9398d933eef3d834801949b69·...·]-5">)</span><span·class="p">.</span></code></pre><p><code·class="inline">map(F,·List)</code>·is·a·function·that·takes·a·function·<code·class="inline">F</code>·and·a·list·<code·class="inline">L</code>·as130 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="1191594995-4">(</span><span·class="n">L</span><span·class="p"·data-group-id="1191594995-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="1191594995-5">(</span><[·...·truncated·by·diffoscope;·len:·516,·SHA:·6ac52308828c02643caf488e81a3346d41119edab368cbbb5ebbdd5ce0554291·...·]-5">)</span><span·class="p">.</span></code></pre><p><code·class="inline">map(F,·List)</code>·is·a·function·that·takes·a·function·<code·class="inline">F</code>·and·a·list·<code·class="inline">L</code>·as
131 arguments·and·returns·a·new·list,·obtained·by·applying·<code·class="inline">F</code>·to·each·of·the131 arguments·and·returns·a·new·list,·obtained·by·applying·<code·class="inline">F</code>·to·each·of·the
132 elements·in·<code·class="inline">L</code>.</p><p>The·process·of·abstracting·out·the·common·features·of·a·number·of·different132 elements·in·<code·class="inline">L</code>.</p><p>The·process·of·abstracting·out·the·common·features·of·a·number·of·different
133 programs·is·called·<em>procedural·abstraction</em>.·Procedural·abstraction·can·be·used133 programs·is·called·<em>procedural·abstraction</em>.·Procedural·abstraction·can·be·used
134 to·write·several·different·functions·that·have·a·similar·structure,·but·differ134 to·write·several·different·functions·that·have·a·similar·structure,·but·differ
135 in·some·minor·detail.·This·is·done·as·follows:</p><ol><li><em>Step·1.</em>·Write·one·function·that·represents·the·common·features·of·these135 in·some·minor·detail.·This·is·done·as·follows:</p><ol><li><em>Step·1.</em>·Write·one·function·that·represents·the·common·features·of·these
136 functions.</li><li><em>Step·2.</em>·Parameterize·the·difference·in·terms·of·functions·that·are·passed136 functions.</li><li><em>Step·2.</em>·Parameterize·the·difference·in·terms·of·functions·that·are·passed
137 as·arguments·to·the·common·function.</li></ol><h2·id="foreach"·class="section-heading">137 as·arguments·to·the·common·function.</li></ol><h2·id="foreach"·class="section-heading">
138 ··<a·href="#foreach"·class="hover-link">138 ··<a·href="#foreach"·class="hover-link">
139 ····<i·class="ri-link-m"·aria-hidden="true"></i>139 ····<i·class="ri-link-m"·aria-hidden="true"></i>
140 ··</a>140 ··</a>
141 ··<span·class="text">foreach</span>141 ··<span·class="text">foreach</span>
142 </h2>142 </h2>
143 <p>This·section·illustrates·procedural·abstraction.·Initially,·the·following·two143 <p>This·section·illustrates·procedural·abstraction.·Initially,·the·following·two
144 examples·are·written·as·conventional·functions.</p><p>This·function·prints·all·elements·of·a·list·onto·a·stream:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">print_list</span><span·class="p"·data-group-id="1483740612-1">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1483740612-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·62,·SHA:·6dc0bd40f6eac29042cb761d26ee2118d57f125672de6231c6cefbe950dd1163·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">144 examples·are·written·as·conventional·functions.</p><p>This·function·prints·all·elements·of·a·list·onto·a·stream:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">print_list</span><span·class="p"·data-group-id="4698592064-1">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4698592064-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·62,·SHA:·eaba8ea89f60725fa244e71dd0fce26d41a09d1c86017180e70c7e2e3b0895eb·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
145 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1483740612-3">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·aeed01a7310abafcfd54f9eedbfea7b4a18408eb0cb2b5c87d28094bb23e211b·...·]-3">)</span><span·class="p">,</span><span·class="w">145 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4698592064-3">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·539cf39ddae52d9b0c46a8941dee4715a6f7d5c132cf493a3ba71f33cdfc0a7e·...·]-3">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">print_list</span><span·class="p"·data-group-id="1483740612-5">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="1483740612-5">)</span><span·class="p">;</span><span·class="w">146 ····</span><span·class="nf">print_list</span><span·class="p"·data-group-id="4698592064-5">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="4698592064-5">)</span><span·class="p">;</span><span·class="w">
147 </span><span·class="nf">print_list</span><span·class="p"·data-group-id="1483740612-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1483740612-7">[</span><span·class="p"·data-group-id="1483740612-7">]</span><span·class="p"·data-group-id="1483740612-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">147 </span><span·class="nf">print_list</span><span·class="p"·data-group-id="4698592064-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4698592064-7">[</span><span·class="p"·data-group-id="4698592064-7">]</span><span·class="p"·data-group-id="4698592064-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
148 ····</span><span·class="ss">true</span><span·class="p">.</span></code></pre><p>This·function·broadcasts·a·message·to·a·list·of·processes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">broadcast</span><span·class="p"·data-group-id="0195413911-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0195413911-2">[</span><span·class="n">Pid</span><span·class="p">|</span><span·class="n">Pids</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·74132f93496b89833189341f8b2a83c2a1ee0f7b96d1999a42f3a4da12f5e0aa·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 ····</span><span·class="ss">true</span><span·class="p">.</span></code></pre><p>This·function·broadcasts·a·message·to·a·list·of·processes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">broadcast</span><span·class="p"·data-group-id="8625893025-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8625893025-2">[</span><span·class="n">Pid</span><span·class="p">|</span><span·class="n">Pids</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·ebb67e4b04f4382908dc602a5b35e69ec4f30dd7e49c63fef7c1198cc445afb0·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">149 ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="nf">broadcast</span><span·class="p"·data-group-id="0195413911-3">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pids</span><span·class="p"·data-group-id="0195413911-3">)</span><span·class="p">;</span><span·class="w">150 ····</span><span·class="nf">broadcast</span><span·class="p"·data-group-id="8625893025-3">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pids</span><span·class="p"·data-group-id="8625893025-3">)</span><span·class="p">;</span><span·class="w">
151 </span><span·class="nf">broadcast</span><span·class="p"·data-group-id="0195413911-4">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0195413911-5">[</span><span·class="p"·data-group-id="0195413911-5">]</span><span·class="p"·data-group-id="0195413911-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 </span><span·class="nf">broadcast</span><span·class="p"·data-group-id="8625893025-4">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8625893025-5">[</span><span·class="p"·data-group-id="8625893025-5">]</span><span·class="p"·data-group-id="8625893025-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
152 ····</span><span·class="ss">true</span><span·class="p">.</span></code></pre><p>These·two·functions·have·a·similar·structure.·They·both·iterate·over·a·list·and152 ····</span><span·class="ss">true</span><span·class="p">.</span></code></pre><p>These·two·functions·have·a·similar·structure.·They·both·iterate·over·a·list·and
153 do·something·to·each·element·in·the·list.·The·&quot;something&quot;·is·passed·on·as·an153 do·something·to·each·element·in·the·list.·The·&quot;something&quot;·is·passed·on·as·an
154 extra·argument·to·the·function·that·does·this.</p><p>The·function·<code·class="inline">foreach</code>·expresses·this·similarity:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foreach</span><span·class="p"·data-group-id="3013562998-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3013562998-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="301356[·...·truncated·by·diffoscope;·len:·57,·SHA:·9511ef885657307ad46fa6eefba0dc9b227eb910dd75a8de0c32682de1ac5fa7·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 extra·argument·to·the·function·that·does·this.</p><p>The·function·<code·class="inline">foreach</code>·expresses·this·similarity:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foreach</span><span·class="p"·data-group-id="7889073083-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7889073083-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="788907[·...·truncated·by·diffoscope;·len:·57,·SHA:·3e2f996900878ec4d8bdd46a5a0f8b0bbad8970988ed7acc59771d8eaa900a2d·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
155 ····</span><span·class="n">F</span><span·class="p"·data-group-id="3013562998-3">(</span><span·class="n">H</span><span·class="p"·data-group-id="3013562998-3">)</span><span·class="p">,</span><span·class="w">155 ····</span><span·class="n">F</span><span·class="p"·data-group-id="7889073083-3">(</span><span·class="n">H</span><span·class="p"·data-group-id="7889073083-3">)</span><span·class="p">,</span><span·class="w">
156 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="3013562998-4">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="3013562998-4">)</span><span·class="p">;</span><span·class="w">156 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="7889073083-4">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="7889073083-4">)</span><span·class="p">;</span><span·class="w">
157 </span><span·class="nf">foreach</span><span·class="p"·data-group-id="3013562998-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3013562998-6">[</span><span·class="p"·data-group-id="3013562998-6">]</span><span·class="p"·data-group-id="3013562998-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
158 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>Using·the·function·<code·class="inline">foreach</code>,·the·function·<code·class="inline">print_list</code>·becomes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class[·...·truncated·by·diffoscope;·len:·1948,·SHA:·7bca71384c6113d430e227d65ebb7fa4469a06c1137e94dd64eec3ac1d10f7cd·...·]>157 </span><span·class="nf">foreach</span><span·class="p"·data-group-id="7889073083-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7889073083-6">[</span><span·class="p"·data-group-id="788907308[·...·truncated·by·diffoscope;·len:·133,·SHA:·157340d530540f73ca6923c2b3c8569e8c7dc29ccb561a6c6459ea10a2c03fec·...·]>
 158 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>Using·the·function·<code·class="inline">foreach</code>,·the·function·<code·class="inline">print_list</code>·becomes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foreach</span><span·class="p"·data-group-id="1325354999-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1325354999-2">(</span><span·class="n">H</span><span·class="p"·data-group-id="1325354999-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1325354999-3">(</span><span·class="n">S</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1325354999-4">[</span><span·class="n">H</span><span·class="p"·data-group-id="1325354999-4">]</span><span·class="p"·data-group-id="1325354999-3">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="1325354999-1">)</span></code></pre><p>Using·the·function·<code·class="inline">foreach</code>,·the·function·<code·class="inline">broadcast</code>·becomes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foreach</span><span·class="p"·data-group-id="0974584917-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0974584917-2">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0974584917-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="0974584917-1">)</span></code></pre><p><code·class="inline">foreach</code>·is·evaluated·for·its·side-effect·and·not·its·value.·<code·class="inline">foreach(Fun·,L)</code>
159 calls·<code·class="inline">Fun(X)</code>·for·each·element·<code·class="inline">X</code>·in·<code·class="inline">L</code>·and·the·processing·occurs·in·the159 calls·<code·class="inline">Fun(X)</code>·for·each·element·<code·class="inline">X</code>·in·<code·class="inline">L</code>·and·the·processing·occurs·in·the
160 order·that·the·elements·were·defined·in·<code·class="inline">L</code>.·<code·class="inline">map</code>·does·not·define·the·order·in160 order·that·the·elements·were·defined·in·<code·class="inline">L</code>.·<code·class="inline">map</code>·does·not·define·the·order·in
161 which·its·elements·are·processed.</p><h2·id="syntax-of-funs"·class="section-heading">161 which·its·elements·are·processed.</p><h2·id="syntax-of-funs"·class="section-heading">
162 ··<a·href="#syntax-of-funs"·class="hover-link">162 ··<a·href="#syntax-of-funs"·class="hover-link">
163 ····<i·class="ri-link-m"·aria-hidden="true"></i>163 ····<i·class="ri-link-m"·aria-hidden="true"></i>
164 ··</a>164 ··</a>
165 ··<span·class="text">Syntax·of·Funs</span>165 ··<span·class="text">Syntax·of·Funs</span>
166 </h2>166 </h2>
167 <p>Funs·are·written·with·the·following·syntax·(see167 <p>Funs·are·written·with·the·following·syntax·(see
168 <a·href="../../doc/system/expressions.html#fun-expressions">Fun·Expressions·</a>for·full·description):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9444850370-1">(</span><span·class="n">Arg1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arg2</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class=[·...·truncated·by·diffoscope;·len:·80,·SHA:·b585a835102ff446978b0b33506cef82bc76fe0a1feb1644621906fe41d9dd77·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 <a·href="../../doc/system/expressions.html#fun-expressions">Fun·Expressions·</a>for·full·description):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7134843763-1">(</span><span·class="n">Arg1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arg2</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class=[·...·truncated·by·diffoscope;·len:·80,·SHA:·99dc3b3caa31e094f8c21c87fd2a88b0c4cdde6ac9a1db67e8b5f0545ab0d8de·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
169 ········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">169 ········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
170 ····</span><span·class="k">end</span></code></pre><p>This·creates·an·anonymous·function·of·<code·class="inline">N</code>·arguments·and·binds·it·to·the·variable170 ····</span><span·class="k">end</span></code></pre><p>This·creates·an·anonymous·function·of·<code·class="inline">N</code>·arguments·and·binds·it·to·the·variable
171 <code·class="inline">F</code>.</p><p>Another·function,·<code·class="inline">FunctionName</code>,·written·in·the·same·module,·can·be·passed·as171 <code·class="inline">F</code>.</p><p>Another·function,·<code·class="inline">FunctionName</code>,·written·in·the·same·module,·can·be·passed·as
172 an·argument,·using·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">FunctionName</span><span·class="o">/</span><span·class="n">Arity</span></code></pre><p>With·this·form·of·function·reference,·the·function·that·is·referred·to·does·not172 an·argument,·using·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">FunctionName</span><span·class="o">/</span><span·class="n">Arity</span></code></pre><p>With·this·form·of·function·reference,·the·function·that·is·referred·to·does·not
173 need·to·be·exported·from·the·module.</p><p>It·is·also·possible·to·refer·to·a·function·defined·in·a·different·module,·with173 need·to·be·exported·from·the·module.</p><p>It·is·also·possible·to·refer·to·a·function·defined·in·a·different·module,·with
174 the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="n">FunctionName</span><span·class="o">/</span><span·class="n">Arity</span></code></pre><p>In·this·case,·the·function·must·be·exported·from·the·module·in·question.</p><p>The·following·program·illustrates·the·different·ways·of·creating·funs:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5911567122-1">(</span><span·class="ss">fun_test</span><span·class="p"·data-group-id="5911567122-1">)</span><span·class="p">.</span><span·class="w">174 the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="n">FunctionName</span><span·class="o">/</span><span·class="n">Arity</span></code></pre><p>In·this·case,·the·function·must·be·exported·from·the·module·in·question.</p><p>The·following·program·illustrates·the·different·ways·of·creating·funs:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4959986990-1">(</span><span·class="ss">fun_test</span><span·class="p"·data-group-id="4959986990-1">)</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5911567122-2">(</span><span·class="p"·data-group-id="5911567122-3">[</span><span·class="ss">t1</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">t2</span><span·class="p">/</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·c12cf929cb6590fe1ec5b085d83382c72a6a62f4cb2c5b5176bf180bbca86e22·...·]-2">)</span><span·class="p">.</span><span·class="w">175 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4959986990-2">(</span><span·class="p"·data-group-id="4959986990-3">[</span><span·class="ss">t1</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">t2</span><span·class="p">/</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·ee27a2b81ff0ef2f450396768f103e2bcf40cb10589dd8ec4c57318a28274794·...·]-2">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p">-</span><span·class="na">import</span><span·class="p"·data-group-id="5911567122-4">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5911567122-5">[</span><span·class="ss">map</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·f29bb414afffa0a5614d790c4c75b224fcb0178608e55999cf843e4824353218·...·]-4">)</span><span·class="p">.</span><span·class="w">176 </span><span·class="p">-</span><span·class="na">import</span><span·class="p"·data-group-id="4959986990-4">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4959986990-5">[</span><span·class="ss">map</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·5a35217aca1fccdc2570a6e22e51a6fb2507e279b6ea542353bd98e34af3397a·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="nf">t1</span><span·class="p"·data-group-id="5911567122-6">(</span><span·class="p"·data-group-id="5911567122-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="5911567122-7">(</span><span·class="nf">fun</spa[·...·truncated·by·diffoscope;·len:·795,·SHA:·3adb4c49065add8b0bc8d2366ba25cfd8937c9a6dba03173c22888ce566d80df·...·]-7">)</span><span·class="p">.</span><span·class="w">177 </span><span·class="nf">t1</span><span·class="p"·data-group-id="4959986990-6">(</span><span·class="p"·data-group-id="4959986990-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="4959986990-7">(</span><span·class="nf">fun</spa[·...·truncated·by·diffoscope;·len:·795,·SHA:·0b1787bff92c7125fd47b802b5ad90f977d9e9a1971c714e5a22f0d5ab8686a4·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">t2</span><span·class="p"·data-group-id="5911567122-10">(</span><span·class="p"·data-group-id="5911567122-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="5911567122-11">(</span><span·class="k">fun</s[·...·truncated·by·diffoscope;·len:·525,·SHA:·219a5fa242d736334416b29d97734bdf5fd8c035687454ce09349c9ee260d039·...·]-11">)</span><span·class="p">.</span><span·class="w">178 </span><span·class="nf">t2</span><span·class="p"·data-group-id="4959986990-10">(</span><span·class="p"·data-group-id="4959986990-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="4959986990-11">(</span><span·class="k">fun</s[·...·truncated·by·diffoscope;·len:·525,·SHA:·de516103795ee11af615784a6657dfb42572faa0880f83c6a6bee65b44289a58·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="nf">double</span><span·class="p"·data-group-id="5911567122-13">(</span><span·class="n">X</span><span·class="p"·data-group-id="5911567122-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">.</span></code></pre><p>The·fun·<code·class="inline">F</code>·can·be·evaluated·with·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="p"·data-group-id="2812447071-1">(</span><span·class="n">Arg1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arg2</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Argn</span><span·class="p"·data-group-id="2812447071-1">)</span></code></pre><p>To·check·whether·a·term·is·a·fun,·use·the·test 
180 <a·href="../../erts-15.2.2/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·in·a·guard.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="00099[·...·truncated·by·diffoscope;·len:·477,·SHA:·1fafd8d2a9ff39e2fc5840e0a80faff3159ddfe545c54040c0eb492c2b2c3d7d·...·]179 </span><span·class="nf">double</span><span·class="p"·data-group-id="4959986990-13">(</span><span·class="n">X</span><span·class="p"·data-group-id="4959986990-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·771,·SHA:·9a9fc88e7cc9a4ad4a8b74112700d788bcd52379595ea29d1d050790c8f55660·...·]
 180 <a·href="../../erts-15.2.2/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·in·a·guard.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="1802794138-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="1802794138-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_function</span><span·class="p"·data-group-id="1802794138-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="1802794138-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ···</span><span·class="nf">apply</span><span·class="p"·data-group-id="0009967748-3">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="0009967748-3">)</span><span·class="p">;</span><span·class="w">181 ···</span><span·class="nf">apply</span><span·class="p"·data-group-id="1802794138-3">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="1802794138-3">)</span><span·class="p">;</span><span·class="w">
182 </span><span·class="nf">f</span><span·class="p"·data-group-id="0009967748-4">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="0009967748-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·141,·SHA:·cb74dbf268623a7e1324ab2fbbcdf81ca8cfa8938e7933305fae34e454c31a42·...·]8-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 </span><span·class="nf">f</span><span·class="p"·data-group-id="1802794138-4">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="1802794138-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·141,·SHA:·86b2b17ccd97566857962f8517f09fb7a364d8734c5c052836a6c9882ff0df9c·...·]8-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ···</span><span·class="n">N</span><span·class="p">.</span></code></pre><p>Funs·are·a·distinct·type.·The·BIFs·<code·class="inline">erlang:fun_info/1,2</code>·can·be·used·to·retrieve183 ···</span><span·class="n">N</span><span·class="p">.</span></code></pre><p>Funs·are·a·distinct·type.·The·BIFs·<code·class="inline">erlang:fun_info/1,2</code>·can·be·used·to·retrieve
184 information·about·a·fun,·and·the·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#fun_to_list/1"><code·class="inline">erlang:fun_to_list/1</code></a>·returns·a·textual184 information·about·a·fun,·and·the·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#fun_to_list/1"><code·class="inline">erlang:fun_to_list/1</code></a>·returns·a·textual
185 representation·of·a·fun.·The·<a·href="../../erts-15.2.2/doc/html/erlang.html#check_process_code/2"><code·class="inline">check_process_code/2</code></a>185 representation·of·a·fun.·The·<a·href="../../erts-15.2.2/doc/html/erlang.html#check_process_code/2"><code·class="inline">check_process_code/2</code></a>
186 BIF·returns·<code·class="inline">true</code>·if·the·process·contains·funs·that·depend·on·the·old·version186 BIF·returns·<code·class="inline">true</code>·if·the·process·contains·funs·that·depend·on·the·old·version
187 of·a·module.</p><h2·id="variable-bindings-within-a-fun"·class="section-heading">187 of·a·module.</p><h2·id="variable-bindings-within-a-fun"·class="section-heading">
188 ··<a·href="#variable-bindings-within-a-fun"·class="hover-link">188 ··<a·href="#variable-bindings-within-a-fun"·class="hover-link">
189 ····<i·class="ri-link-m"·aria-hidden="true"></i>189 ····<i·class="ri-link-m"·aria-hidden="true"></i>
190 ··</a>190 ··</a>
191 ··<span·class="text">Variable·Bindings·Within·a·Fun</span>191 ··<span·class="text">Variable·Bindings·Within·a·Fun</span>
192 </h2>192 </h2>
193 <p>The·scope·rules·for·variables·that·occur·in·funs·are·as·follows:</p><ul><li>All·variables·that·occur·in·the·head·of·a·fun·are·assumed·to·be·&quot;fresh&quot;193 <p>The·scope·rules·for·variables·that·occur·in·funs·are·as·follows:</p><ul><li>All·variables·that·occur·in·the·head·of·a·fun·are·assumed·to·be·&quot;fresh&quot;
194 variables.</li><li>Variables·that·are·defined·before·the·fun,·and·that·occur·in·function·calls·or194 variables.</li><li>Variables·that·are·defined·before·the·fun,·and·that·occur·in·function·calls·or
195 guard·tests·within·the·fun,·have·the·values·they·had·outside·the·fun.</li><li>Variables·cannot·be·exported·from·a·fun.</li></ul><p>The·following·examples·illustrate·these·rules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">print_list</span><span·class="p"·data-group-id="1213289430-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="1213289430-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 guard·tests·within·the·fun,·have·the·values·they·had·outside·the·fun.</li><li>Variables·cannot·be·exported·from·a·fun.</li></ul><p>The·following·examples·illustrate·these·rules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">print_list</span><span·class="p"·data-group-id="1984805101-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="1984805101-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····</span><span·class="p"·data-group-id="1213289430-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stream</span><span·class="p"·data-group-id="1213289430-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·271,·SHA:·f5a502fa47828a5017b211c4b8b0eb6695c504b523263d3e6ecaa4d76a69a604·...·]-3">)</span><span·class="p">,</span><span·class="w">196 ····</span><span·class="p"·data-group-id="1984805101-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stream</span><span·class="p"·data-group-id="1984805101-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·271,·SHA:·67f1756c87463f46502e7891582a36f47d37478aca5c13d97a28d44f424dd7f9·...·]-3">)</span><span·class="p">,</span><span·class="w">
197 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="1213289430-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1213289430-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="1213289430-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·667,·SHA:·b0ea5e7d5afdef17dbab12face4b02bdd8a23902a08ee93bae4fa12c6fb473d2·...·]-4">)</span><span·class="p">,</span><span·class="w">197 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="1984805101-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1984805101-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="1984805101-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·667,·SHA:·bf33272c254e61f3b1133b4499c54125b4ab45426a87698933ead56bae6a5ece·...·]-4">)</span><span·class="p">,</span><span·class="w">
198 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="1213289430-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="1213289430-8">)</span><span·class="p">.</span></code></pre><p>Here,·the·variable·<code·class="inline">X</code>,·defined·in·the·head·of·the·fun,·is·a·new·variable.·The198 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="1984805101-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="1984805101-8">)</span><span·class="p">.</span></code></pre><p>Here,·the·variable·<code·class="inline">X</code>,·defined·in·the·head·of·the·fun,·is·a·new·variable.·The
199 variable·<code·class="inline">Stream</code>,·which·is·used·within·the·fun,·gets·its·value·from·the199 variable·<code·class="inline">Stream</code>,·which·is·used·within·the·fun,·gets·its·value·from·the
200 <code·class="inline">file:open</code>·line.</p><p>As·any·variable·that·occurs·in·the·head·of·a·fun·is·considered·a·new·variable,200 <code·class="inline">file:open</code>·line.</p><p>As·any·variable·that·occurs·in·the·head·of·a·fun·is·considered·a·new·variable,
201 it·is·equally·valid·to·write·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">print_list</span><span·class="p"·data-group-id="9640712880-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="9640712880-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">201 it·is·equally·valid·to·write·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">print_list</span><span·class="p"·data-group-id="9240180059-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="9240180059-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="9640712880-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stream</span><span·class="p"·data-group-id="9640712880-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·271,·SHA:·aa5567a63d65e8f6f0c5c759f807b9b2c810736aea9d4fcdcf088ace5503bda7·...·]-3">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="p"·data-group-id="9240180059-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stream</span><span·class="p"·data-group-id="9240180059-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·271,·SHA:·6481959f796def03d6deec88ce18db6cb417bb7bb75245757e24f7c7dabdbf35·...·]-3">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="9640712880-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9640712880-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="9640712880-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">203 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="9240180059-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9240180059-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="9240180059-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9640712880-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9640712880-7">[</[·...·truncated·by·diffoscope;·len:·126,·SHA:·64277c68178534c294f70640378544c931450dab74221772f4df67a5ec827e8d·...·]-6">)</span><span·class="w">204 ················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9240180059-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9240180059-7">[</[·...·truncated·by·diffoscope;·len:·126,·SHA:·57509770143f826b82188298c7b6189570adb0f4e2713973e6ec9407071ee982·...·]-6">)</span><span·class="w">
205 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="9640712880-4">)</span><span·class="p">,</span><span·class="w">205 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="9240180059-4">)</span><span·class="p">,</span><span·class="w">
206 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="9640712880-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="9640712880-8">)</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">File</code>·is·used·as·the·new·variable·instead·of·<code·class="inline">X</code>.·This·is·not·so·wise206 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="9240180059-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="9240180059-8">)</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">File</code>·is·used·as·the·new·variable·instead·of·<code·class="inline">X</code>.·This·is·not·so·wise
207 because·code·in·the·fun·body·cannot·refer·to·the·variable·<code·class="inline">File</code>,·which·is207 because·code·in·the·fun·body·cannot·refer·to·the·variable·<code·class="inline">File</code>,·which·is
208 defined·outside·of·the·fun.·Compiling·this·example·gives·the·following208 defined·outside·of·the·fun.·Compiling·this·example·gives·the·following
209 diagnostic:</p><pre><code·class="text">./FileName.erl:Line:·Warning:·variable·'File'209 diagnostic:</p><pre><code·class="text">./FileName.erl:Line:·Warning:·variable·'File'
210 ······shadowed·in·'fun'</code></pre><p>This·indicates·that·the·variable·<code·class="inline">File</code>,·which·is·defined·inside·the·fun,210 ······shadowed·in·'fun'</code></pre><p>This·indicates·that·the·variable·<code·class="inline">File</code>,·which·is·defined·inside·the·fun,
211 collides·with·the·variable·<code·class="inline">File</code>,·which·is·defined·outside·the·fun.</p><p>The·rules·for·importing·variables·into·a·fun·has·the·consequence·that·certain211 collides·with·the·variable·<code·class="inline">File</code>,·which·is·defined·outside·the·fun.</p><p>The·rules·for·importing·variables·into·a·fun·has·the·consequence·that·certain
212 pattern·matching·operations·must·be·moved·into·guard·expressions·and·cannot·be212 pattern·matching·operations·must·be·moved·into·guard·expressions·and·cannot·be
213 written·in·the·head·of·the·fun.·For·example,·you·might·write·the·following·code213 written·in·the·head·of·the·fun.·For·example,·you·might·write·the·following·code
214 if·you·intend·the·first·clause·of·<code·class="inline">F</code>·to·be·evaluated·when·the·value·of·its214 if·you·intend·the·first·clause·of·<code·class="inline">F</code>·to·be·evaluated·when·the·value·of·its
215 argument·is·<code·class="inline">Y</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="6058586227-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6058586227-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 argument·is·<code·class="inline">Y</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="1952030672-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1952030672-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
216 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">216 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
217 ····</span><span·class="nf">map</span><span·class="p"·data-group-id="6058586227-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6058586227-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="6058586227-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 ····</span><span·class="nf">map</span><span·class="p"·data-group-id="1952030672-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1952030672-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="1952030672-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 ·············</span><span·class="p">;</span><span·class="w">218 ·············</span><span·class="p">;</span><span·class="w">
219 ···········</span><span·class="p"·data-group-id="6058586227-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="6058586227-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 ···········</span><span·class="p"·data-group-id="1952030672-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="1952030672-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ·············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">220 ·············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
221 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6058586227-2">)</span><span·class="w">221 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1952030672-2">)</span><span·class="w">
222 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>instead·of·writing·the·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="5710496409-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5710496409-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>instead·of·writing·the·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="7479082422-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7479082422-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">223 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
224 ····</span><span·class="nf">map</span><span·class="p"·data-group-id="5710496409-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5710496409-3">(</span><span·class="n">Y</span><span·class="p"·data-group-id="5710496409-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 ····</span><span·class="nf">map</span><span·class="p"·data-group-id="7479082422-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7479082422-3">(</span><span·class="n">Y</span><span·class="p"·data-group-id="7479082422-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ·············</span><span·class="p">;</span><span·class="w">225 ·············</span><span·class="p">;</span><span·class="w">
226 ···········</span><span·class="p"·data-group-id="5710496409-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="5710496409-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 ···········</span><span·class="p"·data-group-id="7479082422-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="7479082422-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
227 ·············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">227 ·············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
228 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5710496409-2">)</span><span·class="w">228 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7479082422-2">)</span><span·class="w">
229 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="funs-and-module-lists"·class="section-heading">229 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="funs-and-module-lists"·class="section-heading">
230 ··<a·href="#funs-and-module-lists"·class="hover-link">230 ··<a·href="#funs-and-module-lists"·class="hover-link">
231 ····<i·class="ri-link-m"·aria-hidden="true"></i>231 ····<i·class="ri-link-m"·aria-hidden="true"></i>
232 ··</a>232 ··</a>
Max diff block lines reached; 153030/218514 bytes (70.03%) of diff not shown.
48.3 KB
./usr/share/doc/erlang-doc/html/doc/system/gen_server_concepts.html
    
Offset 157, 63 lines modifiedOffset 157, 63 lines modified
157 ··<a·href="#example"·class="hover-link">157 ··<a·href="#example"·class="hover-link">
158 ····<i·class="ri-link-m"·aria-hidden="true"></i>158 ····<i·class="ri-link-m"·aria-hidden="true"></i>
159 ··</a>159 ··</a>
160 ··<span·class="text">Example</span>160 ··<span·class="text">Example</span>
161 </h2>161 </h2>
162 <p>An·example·of·a·simple·server·written·in·plain·Erlang·is·provided·in162 <p>An·example·of·a·simple·server·written·in·plain·Erlang·is·provided·in
163 <a·href="design_principles.html#ch1">Overview</a>.·The·server·can·be·reimplemented·using163 <a·href="design_principles.html#ch1">Overview</a>.·The·server·can·be·reimplemented·using
164 <code·class="inline">gen_server</code>,·resulting·in·this·callback·module:</p><p><a·href=""·id="ex"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9509579366-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="9509579366-1">)</span><span·class="p">.</span><span·class="w">164 <code·class="inline">gen_server</code>,·resulting·in·this·callback·module:</p><p><a·href=""·id="ex"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2927341848-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2927341848-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="9509579366-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="9509579366-2">)</span><span·class="p">.</span><span·class="w">165 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="2927341848-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="2927341848-2">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="w">166 </span><span·class="w">
167 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9509579366-3">(</span><span·class="p"·data-group-id="9509579366-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9509579366-4">]</span><span·class="p"·data-group-id="9509579366-3">)</span><span·class="p">.</span><span·class="w">167 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2927341848-3">(</span><span·class="p"·data-group-id="2927341848-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2927341848-4">]</span><span·class="p"·data-group-id="2927341848-3">)</span><span·class="p">.</span><span·class="w">
168 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9509579366-5">(</span><span·class="p"·data-group-id="9509579366-6">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·09695a64f598d8bd6f865db7191f3cc0922f150ef3d128347b2f57b42aa0da6f·...·]-5">)</span><span·class="p">.</span><span·class="w">168 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2927341848-5">(</span><span·class="p"·data-group-id="2927341848-6">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·71ff5936dcb840f07d89148277081580f155ec78f9742fb8d73181165ff8fecb·...·]-5">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9509579366-7">(</span><span·class="p"·data-group-id="9509579366-8">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</sp[·...·truncated·by·diffoscope;·len:·254,·SHA:·793dd3fe3b419d3bcc7c4df128dea4a672835c6274b37b43634774afd4794b3a·...·]-7">)</span><span·class="p">.</span><span·class="w">169 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2927341848-7">(</span><span·class="p"·data-group-id="2927341848-8">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</sp[·...·truncated·by·diffoscope;·len:·254,·SHA:·fcb5e67daf2dd88acb24475d959d6031c80ee2033d064b40a906e264dd10d694·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="9509579366-9">(</span><span·class="p"·data-group-id="9509579366-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">170 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="2927341848-9">(</span><span·class="p"·data-group-id="2927341848-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
171 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="9509579366-10">(</span><span·class="p"·data-group-id="9509579366-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="9509579366-11">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·327b7e5379e08274d5b1b77b5a8f03b3c4879b475fb56a92c41a21e5e600cb46·...·]-10">)</span><span·class="p">.</span><span·class="w">171 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="2927341848-10">(</span><span·class="p"·data-group-id="2927341848-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2927341848-11">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·ee7d8152be8c4816cdeebbc3fc408a6e2fdc67e3b39d45249da6f0cbefc00dc0·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
172 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="9509579366-14">(</span><span·class="p"·data-group-id="9509579366-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="2927341848-14">(</span><span·class="p"·data-group-id="2927341848-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
173 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="9509579366-15">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="9509579366-15">)</span><span·class="p">.</span><span·class="w">173 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="2927341848-15">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="2927341848-15">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">free</span><span·class="p"·data-group-id="9509579366-16">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="9509579366-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 </span><span·class="nf">free</span><span·class="p"·data-group-id="2927341848-16">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="2927341848-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="9509579366-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9509579366-18">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·94a86fd8a6ad5339d4c1655e0fed157c699e7e54065d102ccd0d76c12eb629e1·...·]-17">)</span><span·class="p">.</span><span·class="w">175 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="2927341848-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2927341848-18">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·50c5bf4479b102a56ad4593b89c907c6f635fd776e36ac12a1824810a08ebea4·...·]-17">)</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="nf">init</span><span·class="p"·data-group-id="9509579366-19">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="9509579366-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 </span><span·class="nf">init</span><span·class="p"·data-group-id="2927341848-19">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="2927341848-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="9509579366-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="9509579366-21">(</span><span·class="p"·data-group-id="9509579366-21">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·de7f4de4a3e2d5590f4a7a92799f1ffb81e76caa0638ca0db1b7e1c3c6032729·...·]-20">}</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="p"·data-group-id="2927341848-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="2927341848-21">(</span><span·class="p"·data-group-id="2927341848-21">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·0690110e08c978e057a69ec0fbf54607791b828859af153ec25d15cbbd04a08b·...·]-20">}</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="9509579366-22">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·c6360fd8b5d5cd6212717b870d71b7cef5db448e3ab749701d86fca0bbcfce14·...·]-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="2927341848-22">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·8f192534abfdb86597e578cb35ab89c15731fe1df6b85e3c20d12f098a969b61·...·]-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="p"·data-group-id="9509579366-23">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9509579366-23">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·96afea160f1c589125a0a800950102e59c14ebcce638ab588c18a836a578276b·...·]-24">)</span><span·class="p">,</span><span·class="w">179 ····</span><span·class="p"·data-group-id="2927341848-23">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="2927341848-23">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·5c0c01a32b3135d79d2ed3ac27d6518698a3a0dbe9ccfa0ecb33a6c66755e31f·...·]-24">)</span><span·class="p">,</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="9509579366-25">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9509579366-25">}</span><span·class="p">.</span><span·class="w">180 ····</span><span·class="p"·data-group-id="2927341848-25">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="2927341848-25">}</span><span·class="p">.</span><span·class="w">
  
181 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="9509579366-26">(</span><span·class="p"·data-group-id="9509579366-27">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="9509579366-27">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·a290e94b15fae8e5b5fea2d8fd0fd54b73940acc57e53c87d4cfe4b954062ee0·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">181 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="2927341848-26">(</span><span·class="p"·data-group-id="2927341848-27">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="2927341848-27">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·29314faaaccdf9e05186e0648cfe2f2f39e16e4bd343925ac4efd4306a166f36·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
182 ····</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="9509579366-28">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="9509579366-28">)</span><span·class="p">,</span><span·class="w">182 ····</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="2927341848-28">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="2927341848-28">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="p"·data-group-id="9509579366-29">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9509579366-29">}</span><span·class="p">.</span></code></pre><p>The·code·is·explained·in·the·next·sections.</p><h2·id="starting-a-gen_server"·class="section-heading">183 ····</span><span·class="p"·data-group-id="2927341848-29">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="2927341848-29">}</span><span·class="p">.</span></code></pre><p>The·code·is·explained·in·the·next·sections.</p><h2·id="starting-a-gen_server"·class="section-heading">
184 ··<a·href="#starting-a-gen_server"·class="hover-link">184 ··<a·href="#starting-a-gen_server"·class="hover-link">
185 ····<i·class="ri-link-m"·aria-hidden="true"></i>185 ····<i·class="ri-link-m"·aria-hidden="true"></i>
186 ··</a>186 ··</a>
187 ··<span·class="text">Starting·a·Gen_Server</span>187 ··<span·class="text">Starting·a·Gen_Server</span>
188 </h2>188 </h2>
189 <p>In·the·example·in·the·previous·section,·<code·class="inline">gen_server</code>·is·started·by·calling189 <p>In·the·example·in·the·previous·section,·<code·class="inline">gen_server</code>·is·started·by·calling
190 <code·class="inline">ch3:start_link()</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start_link</span><span·class="p"·data-group-id="0658453761-1">(</span><span·class="p"·data-group-id="0658453761-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">190 <code·class="inline">ch3:start_link()</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start_link</span><span·class="p"·data-group-id="0453267423-1">(</span><span·class="p"·data-group-id="0453267423-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="0658453761-2">(</span><span·class="p"·data-group-id="0658453761-3">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0658453761-3">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·681,·SHA:·3394782745cde0d9bd2de73e55e4762b9c45b11ad70c99c0fd0fa591e302adb0·...·]-6">}</span></code></pre><p><code·class="inline">start_link/0</code>·calls·function·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>.··This·function191 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="0453267423-2">(</span><span·class="p"·data-group-id="0453267423-3">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0453267423-3">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·681,·SHA:·77f7075d1cd30315c9361a19c34c85672ef614877bd6f075e7275fe9673595d1·...·]-6">}</span></code></pre><p><code·class="inline">start_link/0</code>·calls·function·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>.··This·function
192 spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_server</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,·ch3}</code>,·specifies·the·name.192 spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_server</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,·ch3}</code>,·specifies·the·name.
193 The·gen_server·is·then·locally·registered·as·<code·class="inline">ch3</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_server</code>·is·not·registered.·Instead·its·pid193 The·gen_server·is·then·locally·registered·as·<code·class="inline">ch3</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_server</code>·is·not·registered.·Instead·its·pid
194 must·be·used.·The·name·can·also·be·given·as·<code·class="inline">{global,·Name}</code>,·in·which·case194 must·be·used.·The·name·can·also·be·given·as·<code·class="inline">{global,·Name}</code>,·in·which·case
195 the·<code·class="inline">gen_server</code>·is·registered·using·<a·href="../../lib/kernel-10.2.2/doc/html/global.html#register_name/2"><code·class="inline">global:register_name/2</code></a>.</p></li><li><p>The·second·argument,·<code·class="inline">ch3</code>,·is·the·name·of·the·callback·module,·which·is195 the·<code·class="inline">gen_server</code>·is·registered·using·<a·href="../../lib/kernel-10.2.2/doc/html/global.html#register_name/2"><code·class="inline">global:register_name/2</code></a>.</p></li><li><p>The·second·argument,·<code·class="inline">ch3</code>,·is·the·name·of·the·callback·module,·which·is
196 the·module·where·the·callback·functions·are·located.</p><p>The·interface·functions·(<code·class="inline">start_link/0</code>,·<code·class="inline">alloc/0</code>,·and·<code·class="inline">free/1</code>)·are·located196 the·module·where·the·callback·functions·are·located.</p><p>The·interface·functions·(<code·class="inline">start_link/0</code>,·<code·class="inline">alloc/0</code>,·and·<code·class="inline">free/1</code>)·are·located
197 in·the·same·module·as·the·callback·functions·(<code·class="inline">init/1</code>,·<code·class="inline">handle_call/3</code>,·and197 in·the·same·module·as·the·callback·functions·(<code·class="inline">init/1</code>,·<code·class="inline">handle_call/3</code>,·and
198 <code·class="inline">handle_cast/2</code>).·It·is·usually·good·programming·practice·to·have·the·code198 <code·class="inline">handle_cast/2</code>).·It·is·usually·good·programming·practice·to·have·the·code
199 corresponding·to·one·process·contained·in·a·single·module.</p></li><li><p>The·third·argument,·<code·class="inline">[]</code>,·is·a·term·that·is·passed·as·is·to·the·callback199 corresponding·to·one·process·contained·in·a·single·module.</p></li><li><p>The·third·argument,·<code·class="inline">[]</code>,·is·a·term·that·is·passed·as·is·to·the·callback
200 function·<code·class="inline">init</code>.·Here,·<code·class="inline">init</code>·does·not·need·any·indata·and·ignores·the200 function·<code·class="inline">init</code>.·Here,·<code·class="inline">init</code>·does·not·need·any·indata·and·ignores·the
201 argument.</p></li><li><p>The·fourth·argument,·<code·class="inline">[]</code>,·is·a·list·of·options.·See·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>201 argument.</p></li><li><p>The·fourth·argument,·<code·class="inline">[]</code>,·is·a·list·of·options.·See·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>
202 for·the·available·options.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_server</code>·process·calls·the·callback202 for·the·available·options.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_server</code>·process·calls·the·callback
203 function·<code·class="inline">ch3:init([])</code>.·<code·class="inline">init</code>·is·expected·to·return·<code·class="inline">{ok,·State}</code>,·where203 function·<code·class="inline">ch3:init([])</code>.·<code·class="inline">init</code>·is·expected·to·return·<code·class="inline">{ok,·State}</code>,·where
204 <code·class="inline">State</code>·is·the·internal·state·of·the·<code·class="inline">gen_server</code>.·In·this·case,·the·state·is204 <code·class="inline">State</code>·is·the·internal·state·of·the·<code·class="inline">gen_server</code>.·In·this·case,·the·state·is
205 the·available·channels.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="8750573681-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="8750573681-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 the·available·channels.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="7797803369-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="7797803369-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="8750573681-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="8750573681-3">(</span><span·class="p"·data-group-id="8750573681-3">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·fa43ba703cfae1a44fa87180761bcfa6aa47e9c65a4f98ce7300b84d4b5d191d·...·]-2">}</span><span·class="p">.</span></code></pre><p><a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·is·synchronous.·It·does·not·return·until·the206 ····</span><span·class="p"·data-group-id="7797803369-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="7797803369-3">(</span><span·class="p"·data-group-id="7797803369-3">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·6de0162231e12d69ba8330c2094442915c04e7b28426844b7cc29cbb6bb2fc9c·...·]-2">}</span><span·class="p">.</span></code></pre><p><a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·is·synchronous.·It·does·not·return·until·the
207 <code·class="inline">gen_server</code>·has·been·initialized·and·is·ready·to·receive·requests.</p><p><a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·must·be·used·if·the·<code·class="inline">gen_server</code>·is·part·of207 <code·class="inline">gen_server</code>·has·been·initialized·and·is·ready·to·receive·requests.</p><p><a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·must·be·used·if·the·<code·class="inline">gen_server</code>·is·part·of
208 a·supervision·tree,·meaning·that·it·was·started·by·a·supervisor.·There208 a·supervision·tree,·meaning·that·it·was·started·by·a·supervisor.·There
209 is·another·function,·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start/4"><code·class="inline">gen_server:start/4</code></a>,·to·start·a·standalone209 is·another·function,·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start/4"><code·class="inline">gen_server:start/4</code></a>,·to·start·a·standalone
210 <code·class="inline">gen_server</code>·that·is·not·part·of·a·supervision·tree.</p><h2·id="synchronous-requests-call"·class="section-heading">210 <code·class="inline">gen_server</code>·that·is·not·part·of·a·supervision·tree.</p><h2·id="synchronous-requests-call"·class="section-heading">
211 ··<a·href="#synchronous-requests-call"·class="hover-link">211 ··<a·href="#synchronous-requests-call"·class="hover-link">
212 ····<i·class="ri-link-m"·aria-hidden="true"></i>212 ····<i·class="ri-link-m"·aria-hidden="true"></i>
213 ··</a>213 ··</a>
Offset 221, 32 lines modifiedOffset 221, 32 lines modified
221 </h2>221 </h2>
222 <p>The·synchronous·request·<code·class="inline">alloc()</code>·is·implemented·using·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#call/2"><code·class="inline">gen_server:call/2</code></a>:</p><pre><code·class="text">alloc()·-&gt;222 <p>The·synchronous·request·<code·class="inline">alloc()</code>·is·implemented·using·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#call/2"><code·class="inline">gen_server:call/2</code></a>:</p><pre><code·class="text">alloc()·-&gt;
223 ····gen_server:call(ch3,·alloc).</code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>·and·must·agree·with·the·name223 ····gen_server:call(ch3,·alloc).</code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>·and·must·agree·with·the·name
224 used·to·start·it.·<code·class="inline">alloc</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.224 used·to·start·it.·<code·class="inline">alloc</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.
225 When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls225 When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls
226 <code·class="inline">handle_call(Request,·From,·State)</code>,·which·is·expected·to·return226 <code·class="inline">handle_call(Request,·From,·State)</code>,·which·is·expected·to·return
227 a·tuple·<code·class="inline">{reply,Reply,State1}</code>.·<code·class="inline">Reply</code>·is·the·reply·that·is·to·be·sent·back227 a·tuple·<code·class="inline">{reply,Reply,State1}</code>.·<code·class="inline">Reply</code>·is·the·reply·that·is·to·be·sent·back
228 to·the·client,·and·<code·class="inline">State1</code>·is·a·new·value·for·the·state·of·the·<code·class="inline">gen_server</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_call</span><span·class="p"·data-group-id="5396135670-1">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·9,·SHA:·fde5e022cbe2c3370593af4a5e0112787f461466564c0587117d8ebbea66c9e1·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">228 to·the·client,·and·<code·class="inline">State1</code>·is·a·new·value·for·the·state·of·the·<code·class="inline">gen_server</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_call</span><span·class="p"·data-group-id="6358000856-1">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·9,·SHA:·a795cbbff2e495747eb3d270c42036dad89e0d6d12a03fb66a8b604fb78769a8·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ····</span><span·class="p"·data-group-id="5396135670-2">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="5396135670-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·140,·SHA:·c286f01ab72fd849ff390296579ad799a812d027266f1276b7247e2bc88cce93·...·]-3">)</span><span·class="p">,</span><span·class="w">229 ····</span><span·class="p"·data-group-id="6358000856-2">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="6358000856-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·140,·SHA:·1071e2e56bba1bba97d17b75e41ba027e7f59be8f255cb6eb27c767d638732cf·...·]-3">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="5396135670-4">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="5396135670-4">}</span><span·class="p">.</span></code></pre><p>In·this·case,·the·reply·is·the·allocated·channel·<code·class="inline">Ch</code>·and·the·new·state·is·the230 ····</span><span·class="p"·data-group-id="6358000856-4">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="6358000856-4">}</span><span·class="p">.</span></code></pre><p>In·this·case,·the·reply·is·the·allocated·channel·<code·class="inline">Ch</code>·and·the·new·state·is·the
231 set·of·remaining·available·channels·<code·class="inline">Chs2</code>.</p><p>Thus,·the·call·<code·class="inline">ch3:alloc()</code>·returns·the·allocated·channel·<code·class="inline">Ch</code>·and·the231 set·of·remaining·available·channels·<code·class="inline">Chs2</code>.</p><p>Thus,·the·call·<code·class="inline">ch3:alloc()</code>·returns·the·allocated·channel·<code·class="inline">Ch</code>·and·the
232 <code·class="inline">gen_server</code>·then·waits·for·new·requests,·now·with·an·updated·list·of232 <code·class="inline">gen_server</code>·then·waits·for·new·requests,·now·with·an·updated·list·of
233 available·channels.</p><h2·id="asynchronous-requests-cast"·class="section-heading">233 available·channels.</p><h2·id="asynchronous-requests-cast"·class="section-heading">
234 ··<a·href="#asynchronous-requests-cast"·class="hover-link">234 ··<a·href="#asynchronous-requests-cast"·class="hover-link">
235 ····<i·class="ri-link-m"·aria-hidden="true"></i>235 ····<i·class="ri-link-m"·aria-hidden="true"></i>
236 ··</a>236 ··</a>
237 ··<span·class="text">Asynchronous·Requests·-·Cast</span>237 ··<span·class="text">Asynchronous·Requests·-·Cast</span>
238 </h2>238 </h2>
239 <p>The·asynchronous·request·<code·class="inline">free(Ch)</code>·is·implemented·using·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#cast/2"><code·class="inline">gen_server:cast/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">free</span><span·class="p"·data-group-id="1237451244-1">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="1237451244-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 <p>The·asynchronous·request·<code·class="inline">free(Ch)</code>·is·implemented·using·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#cast/2"><code·class="inline">gen_server:cast/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">free</span><span·class="p"·data-group-id="7005250894-1">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="7005250894-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="1237451244-2">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1237451244-3">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span[·...·truncated·by·diffoscope;·len:·88,·SHA:·476f0aeaa167794a9d8fb807b110be8587dfc050a9a2b68410b72997b63cf822·...·]4-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>.·<code·class="inline">{free,·Ch}</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.240 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="7005250894-2">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7005250894-3">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span[·...·truncated·by·diffoscope;·len:·88,·SHA:·5c884f86cd840881570f2fa02a2c5baf9cccb7a32299a130af3af6ad67c7c5b0·...·]4-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>.·<code·class="inline">{free,·Ch}</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.
241 <code·class="inline">cast</code>,·and·thus·<code·class="inline">free</code>,·then·returns·<code·class="inline">ok</code>.</p><p>When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls241 <code·class="inline">cast</code>,·and·thus·<code·class="inline">free</code>,·then·returns·<code·class="inline">ok</code>.</p><p>When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls
242 <code·class="inline">handle_cast(Request,·State)</code>,·which·is·expected·to·return·a·tuple242 <code·class="inline">handle_cast(Request,·State)</code>,·which·is·expected·to·return·a·tuple
243 <code·class="inline">{noreply,State1}</code>.·<code·class="inline">State1</code>·is·a·new·value·for·the·state·of·the·<code·class="inline">gen_server</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_cast</span><span·class="p"·data-group-id="0218431616-1">(</span><span·class="p"·data-group-id="0218431616-2">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="0218431616-2">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·41416947a0a4f4280106d0c1d60b7d9ebcb7cb5ab553e69dd923618294bae810·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">243 <code·class="inline">{noreply,State1}</code>.·<code·class="inline">State1</code>·is·a·new·value·for·the·state·of·the·<code·class="inline">gen_server</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_cast</span><span·class="p"·data-group-id="2832475065-1">(</span><span·class="p"·data-group-id="2832475065-2">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="2832475065-2">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·3281cd352ee2259ac9281e84e308df2afb9e9237d3a898e63f6a35e6f2d12fd6·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
244 ····</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="0218431616-3">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="0218431616-3">)</span><span·class="p">,</span><span·class="w">244 ····</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="2832475065-3">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="2832475065-3">)</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="0218431616-4">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="0218431616-4">}</span><span·class="p">.</span></code></pre><p>In·this·case,·the·new·state·is·the·updated·list·of·available·channels·<code·class="inline">Chs2</code>.245 ····</span><span·class="p"·data-group-id="2832475065-4">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="2832475065-4">}</span><span·class="p">.</span></code></pre><p>In·this·case,·the·new·state·is·the·updated·list·of·available·channels·<code·class="inline">Chs2</code>.
246 The·<code·class="inline">gen_server</code>·is·now·ready·for·new·requests.</p><h2·id="stopping"·class="section-heading">246 The·<code·class="inline">gen_server</code>·is·now·ready·for·new·requests.</p><h2·id="stopping"·class="section-heading">
247 ··<a·href="#stopping"·class="hover-link">247 ··<a·href="#stopping"·class="hover-link">
248 ····<i·class="ri-link-m"·aria-hidden="true"></i>248 ····<i·class="ri-link-m"·aria-hidden="true"></i>
249 ··</a>249 ··</a>
250 ··<span·class="text">Stopping</span>250 ··<span·class="text">Stopping</span>
251 </h2>251 </h2>
252 <h3·id="in-a-supervision-tree"·class="section-heading">252 <h3·id="in-a-supervision-tree"·class="section-heading">
Offset 257, 69 lines modifiedOffset 257, 69 lines modified
257 </h3>257 </h3>
258 <p>If·the·<code·class="inline">gen_server</code>·is·part·of·a·supervision·tree,·no·stop·function·is·needed.258 <p>If·the·<code·class="inline">gen_server</code>·is·part·of·a·supervision·tree,·no·stop·function·is·needed.
259 The·<code·class="inline">gen_server</code>·is·automatically·terminated·by·its·supervisor.··Exactly·how259 The·<code·class="inline">gen_server</code>·is·automatically·terminated·by·its·supervisor.··Exactly·how
260 this·is·done·is·defined·by·a·<a·href="sup_princ.html#shutdown">shutdown·strategy</a>260 this·is·done·is·defined·by·a·<a·href="sup_princ.html#shutdown">shutdown·strategy</a>
261 set·in·the·supervisor.</p><p>If·it·is·necessary·to·clean·up·before·termination,·the·shutdown·strategy261 set·in·the·supervisor.</p><p>If·it·is·necessary·to·clean·up·before·termination,·the·shutdown·strategy
262 must·be·a·time-out·value·and·the·<code·class="inline">gen_server</code>·must·be·set·to·trap·exit·signals262 must·be·a·time-out·value·and·the·<code·class="inline">gen_server</code>·must·be·set·to·trap·exit·signals
263 in·function·<code·class="inline">init</code>.·When·ordered·to·shutdown,·the·<code·class="inline">gen_server</code>·then·calls263 in·function·<code·class="inline">init</code>.·When·ordered·to·shutdown,·the·<code·class="inline">gen_server</code>·then·calls
264 the·callback·function·<code·class="inline">terminate(shutdown,·State)</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="1115638883-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="1115638883-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">264 the·callback·function·<code·class="inline">terminate(shutdown,·State)</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="4859160870-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="4859160870-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
265 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">265 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">
266 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="1115638883-2">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1115638883-2">)</span><span·class="p">,</span><span·class="w">266 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="4859160870-2">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="4859160870-2">)</span><span·class="p">,</span><span·class="w">
267 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">267 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">
268 ····</span><span·class="p"·data-group-id="1115638883-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="1115638883-3">}</span><span·class="p">.</span><span·class="w">268 ····</span><span·class="p"·data-group-id="4859160870-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="4859160870-3">}</span><span·class="p">.</span><span·class="w">
  
269 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">269 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
  
270 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="1115638883-4">(</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="1115638883-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">270 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="4859160870-4">(</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="4859160870-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
271 ····</span><span·class="c1">%%·Code·for·cleaning·up·here</span><span·class="w">271 ····</span><span·class="c1">%%·Code·for·cleaning·up·here</span><span·class="w">
272 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">272 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
273 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><h3·id="standalone-gen_servers"·class="section-heading">273 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><h3·id="standalone-gen_servers"·class="section-heading">
274 ··<a·href="#standalone-gen_servers"·class="hover-link">274 ··<a·href="#standalone-gen_servers"·class="hover-link">
275 ····<i·class="ri-link-m"·aria-hidden="true"></i>275 ····<i·class="ri-link-m"·aria-hidden="true"></i>
276 ··</a>276 ··</a>
277 ··<span·class="text">Standalone·Gen_Servers</span>277 ··<span·class="text">Standalone·Gen_Servers</span>
278 </h3>278 </h3>
279 <p>If·the·<code·class="inline">gen_server</code>·is·not·part·of·a·supervision·tree,·a·stop·function279 <p>If·the·<code·class="inline">gen_server</code>·is·not·part·of·a·supervision·tree,·a·stop·function
280 can·be·useful,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">280 can·be·useful,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
281 </span><span·class="nf">export</span><span·class="p"·data-group-id="3676654221-1">(</span><span·class="p"·data-group-id="3676654221-2">[</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3676654221-2">]</span><span·class="p"·data-group-id="3676654221-1">)</span><span·class="p">.</span><span·class="w">281 </span><span·class="nf">export</span><span·class="p"·data-group-id="0977416084-1">(</span><span·class="p"·data-group-id="0977416084-2">[</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0977416084-2">]</span><span·class="p"·data-group-id="0977416084-1">)</span><span·class="p">.</span><span·class="w">
282 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">282 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
  
283 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3676654221-3">(</span><span·class="p"·data-group-id="3676654221-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">283 </span><span·class="nf">stop</span><span·class="p"·data-group-id="0977416084-3">(</span><span·class="p"·data-group-id="0977416084-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 8382/49333 bytes (16.99%) of diff not shown.
33.2 KB
./usr/share/doc/erlang-doc/html/doc/system/included_applications.html
    
Offset 161, 75 lines modifiedOffset 161, 75 lines modified
161 belonging·to·the·primary·application.</p><h2·id="specifying-included-applications"·class="section-heading">161 belonging·to·the·primary·application.</p><h2·id="specifying-included-applications"·class="section-heading">
162 ··<a·href="#specifying-included-applications"·class="hover-link">162 ··<a·href="#specifying-included-applications"·class="hover-link">
163 ····<i·class="ri-link-m"·aria-hidden="true"></i>163 ····<i·class="ri-link-m"·aria-hidden="true"></i>
164 ··</a>164 ··</a>
165 ··<span·class="text">Specifying·Included·Applications</span>165 ··<span·class="text">Specifying·Included·Applications</span>
166 </h2>166 </h2>
167 <p>Which·applications·to·include·is·defined·by·the·<code·class="inline">included_applications</code>·key·in167 <p>Which·applications·to·include·is·defined·by·the·<code·class="inline">included_applications</code>·key·in
168 the·<code·class="inline">.app</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8639527207-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prim_app</span><span·class="p">,</span><span·class="w">168 the·<code·class="inline">.app</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5648235955-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prim_app</span><span·class="p">,</span><span·class="w">
169 ·</span><span·class="p"·data-group-id="8639527207-2">[</span><span·class="p"·data-group-id="8639527207-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Tree·application&quot;</span><span·class="p"·data-group-id="8639527207-3">}</span><span·class="p">,</span><span·class="w">169 ·</span><span·class="p"·data-group-id="5648235955-2">[</span><span·class="p"·data-group-id="5648235955-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Tree·application&quot;</span><span·class="p"·data-group-id="5648235955-3">}</span><span·class="p">,</span><span·class="w">
170 ··</span><span·class="p"·data-group-id="8639527207-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="8639527207-4">}</span><span·class="p">,</span><span·class="w">170 ··</span><span·class="p"·data-group-id="5648235955-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="5648235955-4">}</span><span·class="p">,</span><span·class="w">
171 ··</span><span·class="p"·data-group-id="8639527207-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8639527207-6">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pr[·...·truncated·by·diffoscope;·len:·198,·SHA:·40cfe4f3c2f9e323ead04abfed7e055c99f5db9c7e693bef7130596222fa63d0·...·]-5">}</span><span·class="p">,</span><span·class="w">171 ··</span><span·class="p"·data-group-id="5648235955-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648235955-6">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pr[·...·truncated·by·diffoscope;·len:·198,·SHA:·8dbd6741916a7f99da26fedfbb08d6c0a118b1d62ec809ab5c7b7af58dad6c9d·...·]-5">}</span><span·class="p">,</span><span·class="w">
172 ··</span><span·class="p"·data-group-id="8639527207-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8639527207-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="8639527207-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·114d1a5b29ba21d43ef276f61a5fc656c66d894c303e041862666ceaa0ab3082·...·]-7">}</span><span·class="p">,</span><span·class="w">172 ··</span><span·class="p"·data-group-id="5648235955-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648235955-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="5648235955-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·791758e87092b3d64b5ba387f2742644a046c0373297f97759d7a534251d1b7f·...·]-7">}</span><span·class="p">,</span><span·class="w">
173 ··</span><span·class="p"·data-group-id="8639527207-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8639527207-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="8639527207-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·7fa256bef4bb80b5d58a0da5e4e22324bdb4a8504659089e073d9ff30622fc2b·...·]-9">}</span><span·class="p">,</span><span·class="w">173 ··</span><span·class="p"·data-group-id="5648235955-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648235955-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="5648235955-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·190073d3bf8d23255c554c09ff32090d9548ff88c89722b56fff4e3b2b11dbb4·...·]-9">}</span><span·class="p">,</span><span·class="w">
174 ··</span><span·class="p"·data-group-id="8639527207-11">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8639527207-12">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·d53af10b8472ab40fe151931754c1e6fd7685dd70e82f1d70f49da637edccab8·...·]-11">}</span><span·class="p">,</span><span·class="w">174 ··</span><span·class="p"·data-group-id="5648235955-11">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648235955-12">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·b1e92e8864a2aafcbd52249433e64deb1d25d2bd5f4275e1286dffe60391904a·...·]-11">}</span><span·class="p">,</span><span·class="w">
175 ··</span><span·class="p"·data-group-id="8639527207-13">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8639527207-14">{</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="8639527207-15">[</span><span·class="p"·data-group-id="8639527207-15">]</span><span·class="p"·data-group-id="8639527207-14">}</span><span·class="p"·data-group-id="8639527207-13">}</span><span·class="p">,</span><span·class="w"> 
176 ··</span><span·class="p"·data-group-id="8639527207-16">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8639527207-17">[</span><span·class="p"·data-group-id="8639527207-18">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/usr/local/log&quot;</span><span·class="p"·data-group-id="8639527207-18">}</span><span·class="p"·data-group-id="8639527207-17">]</span><span·class="p"·data-group-id="8639527207-16">}</span><span·class="w"> 
177 ·</span><span·class="p"·data-group-id="8639527207-2">]</span><span·class="p"·data-group-id="8639527207-1">}</span><span·class="p">.</span></code></pre><h2·id="synchronizing-processes-during-startup"·class="section-heading">175 ··</span><span·class="p"·data-group-id="5648235955-13">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648235955-14">{</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·248,·SHA:·7a0eb518dd9896f6edad2228199ca58e74cd37fe65eaf0f09e9a429026b9ff1c·...·]">
 176 ··</span><span·class="p"·data-group-id="5648235955-16">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5648235955-17">[</span><span·class="p"·data-group-id="5648235955-18">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/usr/local/log&quot;</span><span·class="p"·data-group-id="5648235955-18">}</span><span·class="p"·data-group-id="5648235955-17">]</span><span·class="p"·data-group-id="5648235955-16">}</span><span·class="w">
 177 ·</span><span·class="p"·data-group-id="5648235955-2">]</span><span·class="p"·data-group-id="5648235955-1">}</span><span·class="p">.</span></code></pre><h2·id="synchronizing-processes-during-startup"·class="section-heading">
178 ··<a·href="#synchronizing-processes-during-startup"·class="hover-link">178 ··<a·href="#synchronizing-processes-during-startup"·class="hover-link">
179 ····<i·class="ri-link-m"·aria-hidden="true"></i>179 ····<i·class="ri-link-m"·aria-hidden="true"></i>
180 ··</a>180 ··</a>
181 ··<span·class="text">Synchronizing·Processes·during·Startup</span>181 ··<span·class="text">Synchronizing·Processes·during·Startup</span>
182 </h2>182 </h2>
183 <p>The·supervisor·tree·of·an·included·application·is·started·as·part·of·the183 <p>The·supervisor·tree·of·an·included·application·is·started·as·part·of·the
184 supervisor·tree·of·the·including·application.·If·there·is·a·need·for184 supervisor·tree·of·the·including·application.·If·there·is·a·need·for
185 synchronization·between·processes·in·the·including·and·included·applications,185 synchronization·between·processes·in·the·including·and·included·applications,
186 this·can·be·achieved·by·using·<em>start·phases</em>.</p><p>Start·phases·are·defined·by·the·<code·class="inline">start_phases</code>·key·in·the·<code·class="inline">.app</code>·file·as·a·list186 this·can·be·achieved·by·using·<em>start·phases</em>.</p><p>Start·phases·are·defined·by·the·<code·class="inline">start_phases</code>·key·in·the·<code·class="inline">.app</code>·file·as·a·list
187 of·tuples·<code·class="inline">{Phase,PhaseArgs}</code>,·where·<code·class="inline">Phase</code>·is·an·atom·and·<code·class="inline">PhaseArgs</code>·is·a187 of·tuples·<code·class="inline">{Phase,PhaseArgs}</code>,·where·<code·class="inline">Phase</code>·is·an·atom·and·<code·class="inline">PhaseArgs</code>·is·a
188 term.</p><p>The·value·of·the·<code·class="inline">mod</code>·key·of·the·including·application·must·be·set·to188 term.</p><p>The·value·of·the·<code·class="inline">mod</code>·key·of·the·including·application·must·be·set·to
189 <code·class="inline">{application_starter,[Module,StartArgs]}</code>,·where·<code·class="inline">Module</code>·as·usual·is·the189 <code·class="inline">{application_starter,[Module,StartArgs]}</code>,·where·<code·class="inline">Module</code>·as·usual·is·the
190 application·callback·module.·<code·class="inline">StartArgs</code>·is·a·term·provided·as·argument·to·the190 application·callback·module.·<code·class="inline">StartArgs</code>·is·a·term·provided·as·argument·to·the
191 callback·function·<code·class="inline">Module:start/2</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9612120872-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prim_app</span><span·class="p">,</span><span·class="w">191 callback·function·<code·class="inline">Module:start/2</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8257764490-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prim_app</span><span·class="p">,</span><span·class="w">
192 ·</span><span·class="p"·data-group-id="9612120872-2">[</span><span·class="p"·data-group-id="9612120872-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Tree·application&quot;</span><span·class="p"·data-group-id="9612120872-3">}</span><span·class="p">,</span><span·class="w">192 ·</span><span·class="p"·data-group-id="8257764490-2">[</span><span·class="p"·data-group-id="8257764490-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Tree·application&quot;</span><span·class="p"·data-group-id="8257764490-3">}</span><span·class="p">,</span><span·class="w">
193 ··</span><span·class="p"·data-group-id="9612120872-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="9612120872-4">}</span><span·class="p">,</span><span·class="w">193 ··</span><span·class="p"·data-group-id="8257764490-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="8257764490-4">}</span><span·class="p">,</span><span·class="w">
194 ··</span><span·class="p"·data-group-id="9612120872-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-6">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pr[·...·truncated·by·diffoscope;·len:·198,·SHA:·6e0e01ec256519af02696afe9db688376c1ed2810028bb6a7019c2b49f56292f·...·]-5">}</span><span·class="p">,</span><span·class="w">194 ··</span><span·class="p"·data-group-id="8257764490-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-6">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pr[·...·truncated·by·diffoscope;·len:·198,·SHA:·2fc89c716ed518a9d82497fec697bba3a52e5dade481cb41afa55cfdb900bf59·...·]-5">}</span><span·class="p">,</span><span·class="w">
195 ··</span><span·class="p"·data-group-id="9612120872-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="9612120872-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·e3919c6763c50bc78f9997b279899ea2e143bf511f3c729952c19e21526fdec2·...·]-7">}</span><span·class="p">,</span><span·class="w">195 ··</span><span·class="p"·data-group-id="8257764490-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="8257764490-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·41a1450777443fd701114c10ad527a655e7681a0676dc72c9910efcc5e505ff5·...·]-7">}</span><span·class="p">,</span><span·class="w">
196 ··</span><span·class="p"·data-group-id="9612120872-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="9612120872-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·9133fc094d7a0dbc8a0289bb7adc72ab97e390a5bfff24cbff7fd599a01f8808·...·]-9">}</span><span·class="p">,</span><span·class="w">196 ··</span><span·class="p"·data-group-id="8257764490-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="8257764490-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·9452ec9258725c1fdef1ccf3ef50ecdd82500eaf981242c39208a9dcc06cdccf·...·]-9">}</span><span·class="p">,</span><span·class="w">
197 ··</span><span·class="p"·data-group-id="9612120872-11">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-12">[</span><span·class="p"·data-group-id="9612120872-13">{</span><span·class="ss">init</span><span·class="[·...·truncated·by·diffoscope;·len:·582,·SHA:·b52df2ac665f335155ad82768e55efbdfd3bbe072bcc0e9fdb3722b2354a7bd4·...·]-11">}</span><span·class="p">,</span><span·class="w">197 ··</span><span·class="p"·data-group-id="8257764490-11">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-12">[</span><span·class="p"·data-group-id="8257764490-13">{</span><span·class="ss">init</span><span·class="[·...·truncated·by·diffoscope;·len:·582,·SHA:·dad592634ff9b07f42c39e6222be20f4434fc4fea3b89dc96ed1f863e8e01576·...·]-11">}</span><span·class="p">,</span><span·class="w">
198 ··</span><span·class="p"·data-group-id="9612120872-17">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-18">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·a6e47afd81b6eb24ed917967fa94e2db31ba37c8ccff9c8ce0f87b375a1129f5·...·]-17">}</span><span·class="p">,</span><span·class="w">198 ··</span><span·class="p"·data-group-id="8257764490-17">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-18">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·3192bf4f353d1c81b5b3b9ff45bcdd684fb91826fc6d678d1593866c436264e3·...·]-17">}</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="p"·data-group-id="9612120872-19">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-20">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="9612120872-21">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="9612120872-22">[</span><span·class="p"·data-group-id="9612120872-22">]</span><span·class="p"·data-group-id="9612120872-21">]</span><span·class="p"·data-group-id="9612120872-20">}</span><span·class="p"·data-group-id="9612120872-19">}</span><span·class="p">,</span><span·class="w"> 
200 ··</span><span·class="p"·data-group-id="9612120872-23">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-24">[</span><span·class="p"·data-group-id="9612120872-25">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·230,·SHA:·8c00971fef403fd402fc8604dfa078424c9847d6adc6a40675b94d9e3666b318·...·]</span><span·class="w">199 ··</span><span·class="p"·data-group-id="8257764490-19">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-20">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="825776[·...·truncated·by·diffoscope;·len:·363,·SHA:·360f8cc84b10d137c3d26bcfc33830bcff223886f7dfb2817c592323eff9dda3·...·]</span><span·class="w">
 200 ··</span><span·class="p"·data-group-id="8257764490-23">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-24">[</span><span·class="p"·data-group-id="8257764490-25">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/usr/local/log&quot;</span><span·class="p"·data-group-id="8257764490-25">}</span><span·class="p"·data-group-id="8257764490-24">]</span><span·class="p"·data-group-id="8257764490-23">}</span><span·class="w">
201 ·</span><span·class="p"·data-group-id="9612120872-2">]</span><span·class="p"·data-group-id="9612120872-1">}</span><span·class="p">.</span><span·class="w">201 ·</span><span·class="p"·data-group-id="8257764490-2">]</span><span·class="p"·data-group-id="8257764490-1">}</span><span·class="p">.</span><span·class="w">
  
202 </span><span·class="p"·data-group-id="9612120872-26">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">incl_app</span><span·class="p">,</span><span·class="w">202 </span><span·class="p"·data-group-id="8257764490-26">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">incl_app</span><span·class="p">,</span><span·class="w">
203 ·</span><span·class="p"·data-group-id="9612120872-27">[</span><span·class="p"·data-group-id="9612120872-28">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Included·application&quot;</span><span·class="p"·data-group-id="9612120872-28">}</span><span·class="p">,</span><span·class="w">203 ·</span><span·class="p"·data-group-id="8257764490-27">[</span><span·class="p"·data-group-id="8257764490-28">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Included·application&quot;</span><span·class="p"·data-group-id="8257764490-28">}</span><span·class="p">,</span><span·class="w">
204 ··</span><span·class="p"·data-group-id="9612120872-29">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="9612120872-29">}</span><span·class="p">,</span><span·class="w">204 ··</span><span·class="p"·data-group-id="8257764490-29">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="8257764490-29">}</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="9612120872-30">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-31">[</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·201,·SHA:·479d0713921cb2b6a06b27b5cb4e273b211d42d933c975da88da616aedc412ec·...·]-30">}</span><span·class="p">,</span><span·class="w">205 ··</span><span·class="p"·data-group-id="8257764490-30">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-31">[</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·201,·SHA:·8db7ef4f315a38ace90960737955b3351a84495a17f190a0ab8072cdd9afaafd·...·]-30">}</span><span·class="p">,</span><span·class="w">
206 ··</span><span·class="p"·data-group-id="9612120872-32">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-33">[</span><span·class="p"·data-group-id="9612120872-33">]</span><span·class="p"·data-group-id="9612120872-32">}</span><span·class="p">,</span><span·class="w">206 ··</span><span·class="p"·data-group-id="8257764490-32">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-33">[</span><span·class="p"·data-group-id="8257764490-33">]</span><span·class="p"·data-group-id="8257764490-32">}</span><span·class="p">,</span><span·class="w">
207 ··</span><span·class="p"·data-group-id="9612120872-34">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-35">[</span><span·class="p"·data-group-id="9612120872-36">{</span><span·class="ss">go</span><span·class="p"[·...·truncated·by·diffoscope;·len:·266,·SHA:·335ff1f2bfd30bac39e0eb4df9ee2e106e702331c345644fe290161ac15ef203·...·]-34">}</span><span·class="p">,</span><span·class="w">207 ··</span><span·class="p"·data-group-id="8257764490-34">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-35">[</span><span·class="p"·data-group-id="8257764490-36">{</span><span·class="ss">go</span><span·class="p"[·...·truncated·by·diffoscope;·len:·266,·SHA:·ce53efe740e8d782117ca30274304ad2d545a41c85c3a0c4169a0284f66667b4·...·]-34">}</span><span·class="p">,</span><span·class="w">
208 ··</span><span·class="p"·data-group-id="9612120872-38">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-39">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·a54bb6f18097ff8cffa632a86f598e1339700f94003694e78a2c156700a82c99·...·]-38">}</span><span·class="p">,</span><span·class="w">208 ··</span><span·class="p"·data-group-id="8257764490-38">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-39">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·983f5d08e5e6a0a980b51c2e839bc33af4fcac2635d42bc9e12bef06acd4a397·...·]-38">}</span><span·class="p">,</span><span·class="w">
209 ··</span><span·class="p"·data-group-id="9612120872-40">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9612120872-41">{</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="9612120872-42">[</span><span·class="p"·data-group-id="9612120872-42">]</span><span·class="p"·data-group-id="9612120872-41">}</span><span·class="p"·data-group-id="9612120872-40">}</span><span·class="w"> 
210 ·</span><span·class="p"·data-group-id="9612120872-27">]</span><span·class="p"·data-group-id="9612120872-26">}</span><span·class="p">.</span></code></pre><p>When·starting·a·primary·application·with·included·applications,·the·primary209 ··</span><span·class="p"·data-group-id="8257764490-40">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8257764490-41">{</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·226,·SHA:·fa2336026f3a59f6aa3e0ef4067868f4f1d851215884e802e102bc0d43fb40dd·...·]
 210 ·</span><span·class="p"·data-group-id="8257764490-27">]</span><span·class="p"·data-group-id="8257764490-26">}</span><span·class="p">.</span></code></pre><p>When·starting·a·primary·application·with·included·applications,·the·primary
211 application·is·started·the·normal·way,·that·is:</p><ul><li>The·application·controller·creates·an·application·master·for·the·application</li><li>The·application·master·calls·<code·class="inline">Module:start(normal,·StartArgs)</code>·to·start·the211 application·is·started·the·normal·way,·that·is:</p><ul><li>The·application·controller·creates·an·application·master·for·the·application</li><li>The·application·master·calls·<code·class="inline">Module:start(normal,·StartArgs)</code>·to·start·the
212 top·supervisor.</li></ul><p>Then,·for·the·primary·application·and·each·included·application·in·top-down,212 top·supervisor.</li></ul><p>Then,·for·the·primary·application·and·each·included·application·in·top-down,
213 left-to-right·order,·the·application·master·calls213 left-to-right·order,·the·application·master·calls
214 <code·class="inline">Module:start_phase(Phase,·Type,·PhaseArgs)</code>·for·each·phase·defined·for·the214 <code·class="inline">Module:start_phase(Phase,·Type,·PhaseArgs)</code>·for·each·phase·defined·for·the
215 primary·application,·in·that·order.·If·a·phase·is·not·defined·for·an·included215 primary·application,·in·that·order.·If·a·phase·is·not·defined·for·an·included
216 application,·the·function·is·not·called·for·this·phase·and·application.</p><p>The·following·requirements·apply·to·the·<code·class="inline">.app</code>·file·for·an·included·application:</p><ul><li>The·<code·class="inline">{mod,·{Module,StartArgs}}</code>·option·must·be·included.·This·option·is·used216 application,·the·function·is·not·called·for·this·phase·and·application.</p><p>The·following·requirements·apply·to·the·<code·class="inline">.app</code>·file·for·an·included·application:</p><ul><li>The·<code·class="inline">{mod,·{Module,StartArgs}}</code>·option·must·be·included.·This·option·is·used
217 to·find·the·callback·module·<code·class="inline">Module</code>·of·the·application.·<code·class="inline">StartArgs</code>·is217 to·find·the·callback·module·<code·class="inline">Module</code>·of·the·application.·<code·class="inline">StartArgs</code>·is
218 ignored,·as·<code·class="inline">Module:start/2</code>·is·called·only·for·the·primary·application.</li><li>If·the·included·application·itself·contains·included·applications,·instead·the218 ignored,·as·<code·class="inline">Module:start/2</code>·is·called·only·for·the·primary·application.</li><li>If·the·included·application·itself·contains·included·applications,·instead·the
219 <code·class="inline">{mod,·{application_starter,·[Module,StartArgs]}}</code>·option·must·be·included.</li><li>The·<code·class="inline">{start_phases,·[{Phase,PhaseArgs}]}</code>·option·must·be·included,·and·the·set219 <code·class="inline">{mod,·{application_starter,·[Module,StartArgs]}}</code>·option·must·be·included.</li><li>The·<code·class="inline">{start_phases,·[{Phase,PhaseArgs}]}</code>·option·must·be·included,·and·the·set
220 of·specified·phases·must·be·a·subset·of·the·set·of·phases·specified·for·the220 of·specified·phases·must·be·a·subset·of·the·set·of·phases·specified·for·the
221 primary·application.</li></ul><p>When·starting·<code·class="inline">prim_app</code>·as·defined·above,·the·application·controller·calls·the221 primary·application.</li></ul><p>When·starting·<code·class="inline">prim_app</code>·as·defined·above,·the·application·controller·calls·the
222 following·callback·functions·before·<code·class="inline">application:start(prim_app)</code>·returns·a222 following·callback·functions·before·<code·class="inline">application:start(prim_app)</code>·returns·a
223 value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1721201851-1">(</span><span·class="ss">prim_app</span><span·class="p"·data-group-id="1721201851-1">)</span><span·class="w">223 value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9257625722-1">(</span><span·class="ss">prim_app</span><span·class="p"·data-group-id="9257625722-1">)</span><span·class="w">
224 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">prim_app_cb</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1721201851-2">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1721201851-3">[</span><span·class="p"·data-group-id="1721201851-3">]</span><span·class="p"·data-group-id="1721201851-2">)</span><span·class="w">224 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">prim_app_cb</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9257625722-2">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9257625722-3">[</span><span·class="p"·data-group-id="9257625722-3">]</span><span·class="p"·data-group-id="9257625722-2">)</span><span·class="w">
225 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">prim_app_cb</span><span·class="p">:</span><span·class="nf">start_phase</span><span·class="p"·data-group-id="1721201851-4">(</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1721201851-5">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·a2b23d660e9423d5d884537dad11d44322937f3ca9d7bb3f9f284798a1b4cdaa·...·]-4">)</span><span·class="w">225 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">prim_app_cb</span><span·class="p">:</span><span·class="nf">start_phase</span><span·class="p"·data-group-id="9257625722-4">(</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9257625722-5">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·251a610b37a4236aedff0c4bbad0500f6c9742d9d53b25f71d29d2e21765e40c·...·]-4">)</span><span·class="w">
226 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">prim_app_cb</span><span·class="p">:</span><span·class="nf">start_phase</span><span·class="p"·data-group-id="1721201851-6">(</span><span·class="ss">go</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1721201851-7">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·95c5074a600c559f251dca034d7ad5f5b550890e8e9de9528e558e5247d25a01·...·]-6">)</span><span·class="w">226 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">prim_app_cb</span><span·class="p">:</span><span·class="nf">start_phase</span><span·class="p"·data-group-id="9257625722-6">(</span><span·class="ss">go</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9257625722-7">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·1eaa8d641196885bd50948251b0a4d637bfedc9135f87eaf33522fe8e2f6ee27·...·]-6">)</span><span·class="w">
227 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">incl_app_cb</span><span·class="p">:</span><span·class="nf">start_phase</span><span·class="p"·data-group-id="1721201851-8">(</span><span·class="ss">go</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1721201851-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·2a8be2c557f4e4a02d0c375442573066449561b20e6aba5820aa8e834a4ff751·...·]-8">)</span><span·class="w">227 ·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">incl_app_cb</span><span·class="p">:</span><span·class="nf">start_phase</span><span·class="p"·data-group-id="9257625722-8">(</span><span·class="ss">go</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9257625722-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·2f3eadb65becc962359b1b2e9e2d6cca8579cc6ab7f83a48e0d21acd002684a1·...·]-8">)</span><span·class="w">
228 </span><span·class="ss">ok</span></code></pre>228 </span><span·class="ss">ok</span></code></pre>
229 </div>229 </div>
  
230 <div·class="bottom-actions"·id="bottom-actions">230 <div·class="bottom-actions"·id="bottom-actions">
231 ··<div·class="bottom-actions-item">231 ··<div·class="bottom-actions-item">
  
232 ······<a·href="applications.html"·class="bottom-actions-button"·rel="prev">232 ······<a·href="applications.html"·class="bottom-actions-button"·rel="prev">
6.17 KB
./usr/share/doc/erlang-doc/html/doc/system/install-win32.html
    
Offset 295, 15 lines modifiedOffset 295, 15 lines modified
295 </span><span·class="gp·unselectable">$·</span><span·class="">cd·erts/emulator295 </span><span·class="gp·unselectable">$·</span><span·class="">cd·erts/emulator
296 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug296 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug
297 </span><span·class="gp·unselectable">$·</span><span·class="">cd·../etc297 </span><span·class="gp·unselectable">$·</span><span·class="">cd·../etc
298 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug298 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug
299 </span></code></pre><p>and·sometimes</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP299 </span></code></pre><p>and·sometimes</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP
300 </span><span·class="gp·unselectable">$·</span><span·class="">make·local_setup300 </span><span·class="gp·unselectable">$·</span><span·class="">make·local_setup
301 </span></code></pre><p>So·now·when·you·run·<code·class="inline">$ERL_TOP/erl.exe</code>,·you·should·have·a·debug·compiled301 </span></code></pre><p>So·now·when·you·run·<code·class="inline">$ERL_TOP/erl.exe</code>,·you·should·have·a·debug·compiled
302 emulator,·which·you·will·see·if·you·do·a:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="9940635243-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="9940635243-1">)</span><span·class="p">.</span></code></pre><p>in·the·erlang·shell.·If·the·returned·string·contains·<code·class="inline">[debug]</code>,·you302 emulator,·which·you·will·see·if·you·do·a:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="5550476303-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="5550476303-1">)</span><span·class="p">.</span></code></pre><p>in·the·erlang·shell.·If·the·returned·string·contains·<code·class="inline">[debug]</code>,·you
303 got·a·debug·compiled·emulator.</p><p>To·hack·the·erlang·libraries,·you·simply·do·a·<code·class="inline">make·opt</code>·in·the303 got·a·debug·compiled·emulator.</p><p>To·hack·the·erlang·libraries,·you·simply·do·a·<code·class="inline">make·opt</code>·in·the
304 specific·&quot;applications&quot;·directory,·like:</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP/lib/stdlib304 specific·&quot;applications&quot;·directory,·like:</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP/lib/stdlib
305 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt305 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt
306 </span></code></pre><p>or·even·in·the·source·directory...</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP/lib/stdlib/src306 </span></code></pre><p>or·even·in·the·source·directory...</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP/lib/stdlib/src
307 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt307 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt
308 </span></code></pre><p>Note·that·you're·expected·to·have·a·fresh·Erlang·in·your·path·when308 </span></code></pre><p>Note·that·you're·expected·to·have·a·fresh·Erlang·in·your·path·when
309 doing·this,·preferably·the·plain·27·you·have·built·in·the·previous309 doing·this,·preferably·the·plain·27·you·have·built·in·the·previous
Offset 318, 19 lines modifiedOffset 318, 19 lines modified
318 </span><span·class="">:$ERL_TOP/erts/etc/win32/wsl_tools:$ERL_TOP/bootstrap/bin:$PATH318 </span><span·class="">:$ERL_TOP/erts/etc/win32/wsl_tools:$ERL_TOP/bootstrap/bin:$PATH
319 </span></code></pre><p>That·should·make·it·possible·to·rebuild·any·library·without·hassle...</p><p>If·you·want·to·copy·a·library·(an·application)·newly·built,·to·a319 </span></code></pre><p>That·should·make·it·possible·to·rebuild·any·library·without·hassle...</p><p>If·you·want·to·copy·a·library·(an·application)·newly·built,·to·a
320 release·area,·you·do·like·with·the·emulator:</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP/lib/stdlib320 release·area,·you·do·like·with·the·emulator:</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP/lib/stdlib
321 </span><span·class="gp·unselectable">$·</span><span·class="">make·TESTROOT=/tmp/erlang_release·release321 </span><span·class="gp·unselectable">$·</span><span·class="">make·TESTROOT=/tmp/erlang_release·release
322 </span></code></pre><p>Remember·that:</p><ul><li><p>··Windows·specific·C-code·goes·in·the·<code·class="inline">$ERL_TOP/erts/emulator/sys/win32</code>,322 </span></code></pre><p>Remember·that:</p><ul><li><p>··Windows·specific·C-code·goes·in·the·<code·class="inline">$ERL_TOP/erts/emulator/sys/win32</code>,
323 <code·class="inline">$ERL_TOP/erts/emulator/drivers/win32</code>·or·<code·class="inline">$ERL_TOP/erts/etc/win32</code>.</p></li><li><p>··Windows·specific·erlang·code·should·be·used·conditionally·and·the323 <code·class="inline">$ERL_TOP/erts/emulator/drivers/win32</code>·or·<code·class="inline">$ERL_TOP/erts/etc/win32</code>.</p></li><li><p>··Windows·specific·erlang·code·should·be·used·conditionally·and·the
324 host·OS·tested·in·<em>runtime</em>,·the·exactly·same·beam·files·should·be324 host·OS·tested·in·<em>runtime</em>,·the·exactly·same·beam·files·should·be
325 distributed·for·every·platform!·So·write·code·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">type</span><span·class="p"·data-group-id="0963061691-1">(</span><span·class="p"·data-group-id="0963061691-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">325 distributed·for·every·platform!·So·write·code·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">type</span><span·class="p"·data-group-id="8274439124-1">(</span><span·class="p"·data-group-id="8274439124-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
326 ····</span><span·class="p"·data-group-id="0963061691-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="0963061691-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">326 ····</span><span·class="p"·data-group-id="8274439124-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="8274439124-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
327 ········</span><span·class="nf">do_windows_specific</span><span·class="p"·data-group-id="0963061691-3">(</span><span·class="p"·data-group-id="0963061691-3">)</span><span·class="p">;</span><span·class="w">327 ········</span><span·class="nf">do_windows_specific</span><span·class="p"·data-group-id="8274439124-3">(</span><span·class="p"·data-group-id="8274439124-3">)</span><span·class="p">;</span><span·class="w">
328 ····</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">328 ····</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
329 ········</span><span·class="nf">do_fallback_or_exit</span><span·class="p"·data-group-id="0963061691-4">(</span><span·class="p"·data-group-id="0963061691-4">)</span><span·class="w">329 ········</span><span·class="nf">do_fallback_or_exit</span><span·class="p"·data-group-id="8274439124-4">(</span><span·class="p"·data-group-id="8274439124-4">)</span><span·class="w">
330 </span><span·class="k">end</span><span·class="p">,</span></code></pre></li></ul><p>That's·basically·all·you·need·to·get·going.</p><h2·id="frequently-asked-questions"·class="section-heading">330 </span><span·class="k">end</span><span·class="p">,</span></code></pre></li></ul><p>That's·basically·all·you·need·to·get·going.</p><h2·id="frequently-asked-questions"·class="section-heading">
331 ··<a·href="#frequently-asked-questions"·class="hover-link">331 ··<a·href="#frequently-asked-questions"·class="hover-link">
332 ····<i·class="ri-link-m"·aria-hidden="true"></i>332 ····<i·class="ri-link-m"·aria-hidden="true"></i>
333 ··</a>333 ··</a>
334 ··<span·class="text">Frequently·Asked·Questions</span>334 ··<span·class="text">Frequently·Asked·Questions</span>
335 </h2>335 </h2>
336 <ul><li><p>··Q:·So,·now·I·can·build·Erlang·using·GCC·on·Windows?</p><p>A:·No,·unfortunately·not.·You'll·need·Microsoft's·Visual·C++336 <ul><li><p>··Q:·So,·now·I·can·build·Erlang·using·GCC·on·Windows?</p><p>A:·No,·unfortunately·not.·You'll·need·Microsoft's·Visual·C++
77.0 KB
./usr/share/doc/erlang-doc/html/doc/system/list_comprehensions.html
    
Offset 117, 33 lines modifiedOffset 117, 33 lines modified
  
117 <h2·id="simple-examples"·class="section-heading">117 <h2·id="simple-examples"·class="section-heading">
118 ··<a·href="#simple-examples"·class="hover-link">118 ··<a·href="#simple-examples"·class="hover-link">
119 ····<i·class="ri-link-m"·aria-hidden="true"></i>119 ····<i·class="ri-link-m"·aria-hidden="true"></i>
120 ··</a>120 ··</a>
121 ··<span·class="text">Simple·Examples</span>121 ··<span·class="text">Simple·Examples</span>
122 </h2>122 </h2>
123 <p>This·section·starts·with·a·simple·example,·showing·a·generator·and·a·filter:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="9056300246-1">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="905630[·...·truncated·by·diffoscope;·len:·650,·SHA:·bb78a5c918dbaf3a60c21f342f43b4c58706e96b4c977e275ca3cd59cdc302b3·...·]-1">]</span><span·class="p">.</span><span·class="w">123 <p>This·section·starts·with·a·simple·example,·showing·a·generator·and·a·filter:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="5013220734-1">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="501322[·...·truncated·by·diffoscope;·len:·650,·SHA:·139e66254611e48ff7ce7c25e11807faa91a5bbfcb31d826501ff0d5b159d1bb·...·]-1">]</span><span·class="p">.</span><span·class="w">
124 </span><span·class="p"·data-group-id="9056300246-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·f6591b07b6a1c7a93eb7469ecb10d059938256e7970312395b44c60614539ac5·...·]-3">]</span></code></pre><p>This·is·read·as·follows:·The·list·of·X·such·that·X·is·taken·from·the·list124 </span><span·class="p"·data-group-id="5013220734-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·4416d093b61e2dc28b6a3ecc70b19e89df2002bb60aab541602b80c867b82251·...·]-3">]</span></code></pre><p>This·is·read·as·follows:·The·list·of·X·such·that·X·is·taken·from·the·list
125 <code·class="inline">[1,2,a,...]</code>·and·X·is·greater·than·3.</p><p>The·notation·<code·class="inline">X·&lt;-·[1,2,a,...]</code>·is·a·generator·and·the·expression·<code·class="inline">X·&gt;·3</code>·is·a125 <code·class="inline">[1,2,a,...]</code>·and·X·is·greater·than·3.</p><p>The·notation·<code·class="inline">X·&lt;-·[1,2,a,...]</code>·is·a·generator·and·the·expression·<code·class="inline">X·&gt;·3</code>·is·a
126 filter.</p><p>An·additional·filter,·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_integer/1"><code·class="inline">is_integer(X)</code></a>,·can·be·added·to126 filter.</p><p>An·additional·filter,·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_integer/1"><code·class="inline">is_integer(X)</code></a>,·can·be·added·to
127 restrict·the·result·to·integers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="9017376062-1">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="901737[·...·truncated·by·diffoscope;·len:·862,·SHA:·210e602214a67d27ace4966036f5a56c01335e45d8cb054d77c2b09ae5e24e3a·...·]-1">]</span><span·class="p">.</span><span·class="w">127 restrict·the·result·to·integers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="0740275765-1">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="074027[·...·truncated·by·diffoscope;·len:·862,·SHA:·3c0ff06912a01acb47040e98eda8ea7b38927b2d8b05dfa3ceebe7050baedd73·...·]-1">]</span><span·class="p">.</span><span·class="w">
128 </span><span·class="p"·data-group-id="9017376062-4">[</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9017376062-4">]</span></code></pre><p>Generators·can·be·combined.·For·example,·the·Cartesian·product·of·two·lists·can128 </span><span·class="p"·data-group-id="0740275765-4">[</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="0740275765-4">]</span></code></pre><p>Generators·can·be·combined.·For·example,·the·Cartesian·product·of·two·lists·can
129 be·written·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="0758533241-1">[</span><span·class="p"·data-group-id="0758533241-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="0758533241-2">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·739,·SHA:·337bd280fae6b55d24d2b46e248c05d77ac983be79354e693e4d1fa42d1b0cdc·...·]-1">]</span><span·class="p">.</span><span·class="w">129 be·written·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="5067070705-1">[</span><span·class="p"·data-group-id="5067070705-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="5067070705-2">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·739,·SHA:·64720cdb3f6f6cc0e325574bf9847cf21891a4a71ef8bc80c1bc9429bbeaccaa·...·]-1">]</span><span·class="p">.</span><span·class="w">
130 </span><span·class="p"·data-group-id="0758533241-5">[</span><span·class="p"·data-group-id="0758533241-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="0758533241-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1011,·SHA:·b5c4a67bca817c968efbb7c1a4f690b8d84240a09a4a3da380365d56062ca9d7·...·]-5">]</span></code></pre><h2·id="quick-sort"·class="section-heading">130 </span><span·class="p"·data-group-id="5067070705-5">[</span><span·class="p"·data-group-id="5067070705-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="5067070705-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1011,·SHA:·f161cdb5c1183c5dc8ba0e58db9d89578618f89824fa517f3e9b15f5d3e18c8e·...·]-5">]</span></code></pre><h2·id="quick-sort"·class="section-heading">
131 ··<a·href="#quick-sort"·class="hover-link">131 ··<a·href="#quick-sort"·class="hover-link">
132 ····<i·class="ri-link-m"·aria-hidden="true"></i>132 ····<i·class="ri-link-m"·aria-hidden="true"></i>
133 ··</a>133 ··</a>
134 ··<span·class="text">Quick·Sort</span>134 ··<span·class="text">Quick·Sort</span>
135 </h2>135 </h2>
136 <p>The·well-known·quick·sort·routine·can·be·written·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sort</span><span·class="p"·data-group-id="2723924795-1">(</span><span·class="p"·data-group-id="2723924795-2">[</span><span·class="p"·data-group-id="2723924795-2">]</span><span·class="p"·data-group-id="2723924795-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·cd5096807d19cdaef93b417915d168ed07fddf2c5611c5397a5eae5b3a3f2c3c·...·]-3">]</span><span·class="p">;</span><span·class="w">136 <p>The·well-known·quick·sort·routine·can·be·written·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sort</span><span·class="p"·data-group-id="6346089390-1">(</span><span·class="p"·data-group-id="6346089390-2">[</span><span·class="p"·data-group-id="6346089390-2">]</span><span·class="p"·data-group-id="6346089390-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·5257f389e624d58a252d4e920862a1b0f1aa636c5719aa0bd13548f005512e5c·...·]-3">]</span><span·class="p">;</span><span·class="w">
137 </span><span·class="nf">sort</span><span·class="p"·data-group-id="2723924795-4">(</span><span·class="p"·data-group-id="2723924795-5">[</span><span·class="p">_</span><span·class="p"·data-group-id="2723924795-5">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·daabeb022ad76820da9eb1cb7479e687730f8bed379a6bca1e491c1786efa451·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">L</span><span·class="p">;</span><span·class="w">137 </span><span·class="nf">sort</span><span·class="p"·data-group-id="6346089390-4">(</span><span·class="p"·data-group-id="6346089390-5">[</span><span·class="p">_</span><span·class="p"·data-group-id="6346089390-5">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·f2ba72578942f3ce9d63a128e88c626926a3c439d74d7babaf56488ed2a81879·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">L</span><span·class="p">;</span><span·class="w">
138 </span><span·class="nf">sort</span><span·class="p"·data-group-id="2723924795-6">(</span><span·class="p"·data-group-id="2723924795-7">[</span><span·class="n">Pivot</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2723924795-7">]</span><span·class="p"·data-group-id="2723924795-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 </span><span·class="nf">sort</span><span·class="p"·data-group-id="6346089390-6">(</span><span·class="p"·data-group-id="6346089390-7">[</span><span·class="n">Pivot</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6346089390-7">]</span><span·class="p"·data-group-id="6346089390-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="nf">sort</span><span·class="p"·data-group-id="2723924795-8">(</span><span·class="p"·data-group-id="2723924795-9">[</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·333,·SHA:·e58012b3716df2c5acaa10962d4da9e82516e334cff5b5d0a436efb9789f964f·...·]-8">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">139 ····</span><span·class="nf">sort</span><span·class="p"·data-group-id="6346089390-8">(</span><span·class="p"·data-group-id="6346089390-9">[</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·333,·SHA:·ecc48ebd58965840f3050cf567a0807565f508d71480237fdde681e72aac9a0f·...·]-8">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="2723924795-10">[</span><span·class="n">Pivot</span><span·class="p"·data-group-id="2723924795-10">]</span><span·class="w">·</span><span·class="o">++</span><span·class="w">140 ····</span><span·class="p"·data-group-id="6346089390-10">[</span><span·class="n">Pivot</span><span·class="p"·data-group-id="6346089390-10">]</span><span·class="w">·</span><span·class="o">++</span><span·class="w">
141 ····</span><span·class="nf">sort</span><span·class="p"·data-group-id="2723924795-11">(</span><span·class="p"·data-group-id="2723924795-12">[</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·337,·SHA:·882269723dbbc5a00a3caae07f6d7b150f767f3978b6249a4eed10d0c84facdf·...·]-11">)</span><span·class="p">.</span></code></pre><p>The·expression·<code·class="inline">[X·||·X·&lt;-·T,·X·&lt;·Pivot]</code>·is·the·list·of·all·elements·in·<code·class="inline">T</code>141 ····</span><span·class="nf">sort</span><span·class="p"·data-group-id="6346089390-11">(</span><span·class="p"·data-group-id="6346089390-12">[</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·337,·SHA:·0afec991274664c630ad44590ed01b51b8174d41ff1568998b87f5146320dae9·...·]-11">)</span><span·class="p">.</span></code></pre><p>The·expression·<code·class="inline">[X·||·X·&lt;-·T,·X·&lt;·Pivot]</code>·is·the·list·of·all·elements·in·<code·class="inline">T</code>
142 that·are·less·than·<code·class="inline">Pivot</code>.</p><p><code·class="inline">[X·||·X·&lt;-·T,·X·&gt;=·Pivot]</code>·is·the·list·of·all·elements·in·<code·class="inline">T</code>·that·are·greater142 that·are·less·than·<code·class="inline">Pivot</code>.</p><p><code·class="inline">[X·||·X·&lt;-·T,·X·&gt;=·Pivot]</code>·is·the·list·of·all·elements·in·<code·class="inline">T</code>·that·are·greater
143 than·or·equal·to·<code·class="inline">Pivot</code>.</p><p>With·the·algorithm·above,·a·list·is·sorted·as·follows:</p><ul><li>A·list·with·zero·or·one·element·is·trivially·sorted.</li><li>For·lists·with·more·than·one·element:<ol><li>The·first·element·in·the·list·is·isolated·as·the·pivot·element.</li><li>The·remaining·list·is·partitioned·into·two·sublists,·such·that:</li></ol><ul><li>The·first·sublist·contains·all·elements·that·are·smaller·than·the·pivot143 than·or·equal·to·<code·class="inline">Pivot</code>.</p><p>With·the·algorithm·above,·a·list·is·sorted·as·follows:</p><ul><li>A·list·with·zero·or·one·element·is·trivially·sorted.</li><li>For·lists·with·more·than·one·element:<ol><li>The·first·element·in·the·list·is·isolated·as·the·pivot·element.</li><li>The·remaining·list·is·partitioned·into·two·sublists,·such·that:</li></ol><ul><li>The·first·sublist·contains·all·elements·that·are·smaller·than·the·pivot
144 element.</li><li>The·second·sublist·contains·all·elements·that·are·greater·than·or·equal·to144 element.</li><li>The·second·sublist·contains·all·elements·that·are·greater·than·or·equal·to
145 the·pivot·element.</li></ul><ol><li>The·sublists·are·recursively·sorted·by·the·same·algorithm·and·the·results145 the·pivot·element.</li></ul><ol><li>The·sublists·are·recursively·sorted·by·the·same·algorithm·and·the·results
146 are·combined,·resulting·in·a·list·consisting·of:</li></ol><ul><li>All·elements·from·the·first·sublist,·that·is·all·elements·smaller·than·the146 are·combined,·resulting·in·a·list·consisting·of:</li></ol><ul><li>All·elements·from·the·first·sublist,·that·is·all·elements·smaller·than·the
147 pivot·element,·in·sorted·order.</li><li>The·pivot·element.</li><li>All·elements·from·the·second·sublist,·that·is·all·elements·greater·than·or147 pivot·element,·in·sorted·order.</li><li>The·pivot·element.</li><li>All·elements·from·the·second·sublist,·that·is·all·elements·greater·than·or
148 equal·to·the·pivot·element,·in·sorted·order.</li></ul></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>While·the·sorting·algorithm·as·shown·above·serves·as·a·nice·example·to148 equal·to·the·pivot·element,·in·sorted·order.</li></ul></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>While·the·sorting·algorithm·as·shown·above·serves·as·a·nice·example·to
Offset 151, 93 lines modifiedOffset 151, 93 lines modified
151 <a·href="../../lib/stdlib-6.2/doc/html/lists.html"><code·class="inline">lists</code></a>·module·contains·sorting·functions·that·are·implemented·in·a·more151 <a·href="../../lib/stdlib-6.2/doc/html/lists.html"><code·class="inline">lists</code></a>·module·contains·sorting·functions·that·are·implemented·in·a·more
152 efficient·way.</p></section><h2·id="permutations"·class="section-heading">152 efficient·way.</p></section><h2·id="permutations"·class="section-heading">
153 ··<a·href="#permutations"·class="hover-link">153 ··<a·href="#permutations"·class="hover-link">
154 ····<i·class="ri-link-m"·aria-hidden="true"></i>154 ····<i·class="ri-link-m"·aria-hidden="true"></i>
155 ··</a>155 ··</a>
156 ··<span·class="text">Permutations</span>156 ··<span·class="text">Permutations</span>
157 </h2>157 </h2>
158 <p>The·following·example·generates·all·permutations·of·the·elements·in·a·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">perms</span><span·class="p"·data-group-id="9034817312-1">(</span><span·class="p"·data-group-id="9034817312-2">[</span><span·class="p"·data-group-id="9034817312-2">]</span><span·class="p"·data-group-id="9034817312-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9034817312-3">[</span><span·class="p"·data-group-id="9034817312-4">[</span><span·class="p"·data-group-id="9034817312-4">]</span><span·class="p"·data-group-id="9034817312-3">]</span><span·class="p">;</span><span·class="w"> 
159 </span><span·class="nf">perms</span><span·class="p"·data-group-id="9034817312-5">(</span><span·class="n">L</span><span·class="p"·data-group-id="9034817312-5">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·1101,·SHA:·db166b9a7fd30138df01f96b53d1f64e547178d6512849901e31cb38bb575096·...·]158 <p>The·following·example·generates·all·permutations·of·the·elements·in·a·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">perms</span><span·class="p"·data-group-id="5859688177-1">(</span><span·class="p"·data-group-id="5859688177-2">[·...·truncated·by·diffoscope;·len:·442,·SHA:·db057137d21fe812d4803571ba77731a52d273caeb83debd04f18f8e0641c8a3·...·]
 159 </span><span·class="nf">perms</span><span·class="p"·data-group-id="5859688177-5">(</span><span·class="n">L</span><span·class="p"·data-group-id="5859688177-5">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5859688177-6">[</span><span·class="p"·data-group-id="5859688177-7">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5859688177-7">]</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">H</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nf">perms</span><span·class="p"·data-group-id="5859688177-8">(</span><span·class="n">L</span><span·class="o">--</span><span·class="p"·data-group-id="5859688177-9">[</span><span·class="n">H</span><span·class="p"·data-group-id="5859688177-9">]</span><span·class="p"·data-group-id="5859688177-8">)</span><span·class="p"·data-group-id="5859688177-6">]</span><span·class="p">.</span></code></pre><p>This·takes·<code·class="inline">H</code>·from·<code·class="inline">L</code>·in·all·possible·ways.·The·result·is·the·set·of·all·lists
160 <code·class="inline">[H|T]</code>,·where·<code·class="inline">T</code>·is·the·set·of·all·possible·permutations·of·<code·class="inline">L</code>,·with·<code·class="inline">H</code>160 <code·class="inline">[H|T]</code>,·where·<code·class="inline">T</code>·is·the·set·of·all·possible·permutations·of·<code·class="inline">L</code>,·with·<code·class="inline">H</code>
161 removed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">perms</span><span·class="p"·data-group-id="4686449140-1">(</span><span·class="p"·data-group-id="4686449140-2">[</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">u</span><span·class="p">,</span><span·class="ss">g</span><span·class="p"·data-group-id="4686449140-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·127733d09860834bc2742a62c03e90909453d516ef0c917035c7d57739ecfe82·...·]-1">)</span><span·class="p">.</span><span·class="w">161 removed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">perms</span><span·class="p"·data-group-id="8846048254-1">(</span><span·class="p"·data-group-id="8846048254-2">[</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">u</span><span·class="p">,</span><span·class="ss">g</span><span·class="p"·data-group-id="8846048254-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·ab96bf9d51d1f4d920bf69c04fd83cfc436d5a9e4d9976141f8c33e9848714dd·...·]-1">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="4686449140-3">[</span><span·class="p"·data-group-id="4686449140-4">[</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">u</span><span·class="p">,</span><span·class="ss">g</span><span·class="p"·data-group-id="4686449140-4">]</span><span[·...·truncated·by·diffoscope;·len:·1301,·SHA:·0ddc626f51a32176e0bd68ce19ba513c491a731dbfe68a5cd43abdc7d482b030·...·]-3">]</span></code></pre><h2·id="pythagorean-triplets"·class="section-heading">162 </span><span·class="p"·data-group-id="8846048254-3">[</span><span·class="p"·data-group-id="8846048254-4">[</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">u</span><span·class="p">,</span><span·class="ss">g</span><span·class="p"·data-group-id="8846048254-4">]</span><span[·...·truncated·by·diffoscope;·len:·1301,·SHA:·70e3ff43c7a8baf775bbc1c60a92c9407127419efcaa02b415440c91baa5c082·...·]-3">]</span></code></pre><h2·id="pythagorean-triplets"·class="section-heading">
163 ··<a·href="#pythagorean-triplets"·class="hover-link">163 ··<a·href="#pythagorean-triplets"·class="hover-link">
164 ····<i·class="ri-link-m"·aria-hidden="true"></i>164 ····<i·class="ri-link-m"·aria-hidden="true"></i>
165 ··</a>165 ··</a>
166 ··<span·class="text">Pythagorean·Triplets</span>166 ··<span·class="text">Pythagorean·Triplets</span>
167 </h2>167 </h2>
168 <p>Pythagorean·triplets·are·sets·of·integers·<code·class="inline">{A,B,C}</code>·such·that168 <p>Pythagorean·triplets·are·sets·of·integers·<code·class="inline">{A,B,C}</code>·such·that
169 <code·class="inline">A**2·+·B**2·=·C**2</code>.</p><p>The·function·<code·class="inline">pyth(N)</code>·generates·a·list·of·all·integers·<code·class="inline">{A,B,C}</code>·such·that169 <code·class="inline">A**2·+·B**2·=·C**2</code>.</p><p>The·function·<code·class="inline">pyth(N)</code>·generates·a·list·of·all·integers·<code·class="inline">{A,B,C}</code>·such·that
170 <code·class="inline">A**2·+·B**2·=·C**2</code>·and·where·the·sum·of·the·sides·is·equal·to,·or·less·than,170 <code·class="inline">A**2·+·B**2·=·C**2</code>·and·where·the·sum·of·the·sides·is·equal·to,·or·less·than,
171 <code·class="inline">N</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">pyth</span><span·class="p"·data-group-id="1074959763-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="1074959763-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 <code·class="inline">N</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">pyth</span><span·class="p"·data-group-id="2495356921-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="2495356921-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="1074959763-2">[</span><span·class="w">·</span><span·class="p"·data-group-id="1074959763-3">{</span><span·class="n">A</span><span·class="p">,</span><span·class="n">B</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="107495[·...·truncated·by·diffoscope;·len:·4,·SHA:·9110f470a27932ba7b53c098bf2b76bed3c5ebe0757f48fa56bad6fdba8cb2f4·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">172 ····</span><span·class="p"·data-group-id="2495356921-2">[</span><span·class="w">·</span><span·class="p"·data-group-id="2495356921-3">{</span><span·class="n">A</span><span·class="p">,</span><span·class="n">B</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="249535[·...·truncated·by·diffoscope;·len:·4,·SHA:·7d7be59d21008b0ce085df006fcf494e795d8f2beeb71fbf7240b36a4ce14e01·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
173 ········</span><span·class="n">A</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="1074959763-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1074959763-4">)</span><span·class="p">,</span><span·class="w">173 ········</span><span·class="n">A</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="2495356921-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="2495356921-4">)</span><span·class="p">,</span><span·class="w">
174 ········</span><span·class="n">B</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="1074959763-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1074959763-5">)</span><span·class="p">,</span><span·class="w">174 ········</span><span·class="n">B</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="2495356921-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="2495356921-5">)</span><span·class="p">,</span><span·class="w">
175 ········</span><span·class="n">C</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="1074959763-6">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1074959763-6">)</span><span·class="p">,</span><span·class="w">175 ········</span><span·class="n">C</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="2495356921-6">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="2495356921-6">)</span><span·class="p">,</span><span·class="w">
176 ········</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">+</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">176 ········</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">+</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">
177 ········</span><span·class="n">A</span><span·class="o">*</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">*</span><span·class="n">B</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">C</span><span·class="o">*</span><span·class="n">C</span><span·class="w">177 ········</span><span·class="n">A</span><span·class="o">*</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">*</span><span·class="n">B</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">C</span><span·class="o">*</span><span·class="n">C</span><span·class="w">
178 ····</span><span·class="p"·data-group-id="1074959763-2">]</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="2657682816-1">(</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·b2e18bd5603e5f1320e1927033d1f1cf19de13fc4d5e2b496dccfcf4059634ab·...·]-1">)</span><span·class="p">.</span><span·class="w">178 ····</span><span·class="p"·data-group-id="2495356921-2">]</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="8511671639-1">(</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·188ae0f6605f69a6ce8119094f9da3d98ceef627665551b6bed82d800da61c10·...·]-1">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="p"·data-group-id="2657682816-2">[</span><span·class="p"·data-group-id="2657682816-2">]</span><span·class="p">.</span><span·class="gp·unselectable">179 </span><span·class="p"·data-group-id="8511671639-2">[</span><span·class="p"·data-group-id="8511671639-2">]</span><span·class="p">.</span><span·class="gp·unselectable">
180 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="2657682816-3">(</span><span·class="mi">11</span><span·class="p"·data-group-id="2657682816-3">)</span><span·class="p">.</span><span·class="w">180 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="8511671639-3">(</span><span·class="mi">11</span><span·class="p"·data-group-id="8511671639-3">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="2657682816-4">[</span><span·class="p"·data-group-id="2657682816-4">]</span><span·class="p">.</span><span·class="gp·unselectable">181 </span><span·class="p"·data-group-id="8511671639-4">[</span><span·class="p"·data-group-id="8511671639-4">]</span><span·class="p">.</span><span·class="gp·unselectable">
182 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="2657682816-5">(</span><span·class="mi">12</span><span·class="p"·data-group-id="2657682816-5">)</span><span·class="p">.</span><span·class="w">182 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="8511671639-5">(</span><span·class="mi">12</span><span·class="p"·data-group-id="8511671639-5">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="p"·data-group-id="2657682816-6">[</span><span·class="p"·data-group-id="2657682816-7">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="2657682816-7">}</span><span[·...·truncated·by·diffoscope;·len:·289,·SHA:·b94f12122baee1f58d023deb9b5cf09acace9a0872e7d127c15726e984e667df·...·]-6">]</span><span·class="gp·unselectable">183 </span><span·class="p"·data-group-id="8511671639-6">[</span><span·class="p"·data-group-id="8511671639-7">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="8511671639-7">}</span><span[·...·truncated·by·diffoscope;·len:·289,·SHA:·422a7f17cf1a309bd98472e73f321f976d6a36b402e13cfe385b724a53ff2b87·...·]-6">]</span><span·class="gp·unselectable">
184 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="2657682816-9">(</span><span·class="mi">50</span><span·class="p"·data-group-id="2657682816-9">)</span><span·class="p">.</span><span·class="w">184 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="8511671639-9">(</span><span·class="mi">50</span><span·class="p"·data-group-id="8511671639-9">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="2657682816-10">[</span><span·class="p"·data-group-id="2657682816-11">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="2657682816-11">}</span><span·class="p">,</span><span·class="w">185 </span><span·class="p"·data-group-id="8511671639-10">[</span><span·class="p"·data-group-id="8511671639-11">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="8511671639-11">}</span><span·class="p">,</span><span·class="w">
186 ·</span><span·class="p"·data-group-id="2657682816-12">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="2657682816-12">}</span><span·class="p">,</span><span·class="w">186 ·</span><span·class="p"·data-group-id="8511671639-12">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="8511671639-12">}</span><span·class="p">,</span><span·class="w">
187 ·</span><span·class="p"·data-group-id="2657682816-13">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">13</span><span·class="p"·data-group-id="2657682816-13">}</span><span·class="p">,</span><span·class="w">187 ·</span><span·class="p"·data-group-id="8511671639-13">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">13</span><span·class="p"·data-group-id="8511671639-13">}</span><span·class="p">,</span><span·class="w">
188 ·</span><span·class="p"·data-group-id="2657682816-14">{</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="2657682816-14">}</span><span·class="p">,</span><span·class="w">188 ·</span><span·class="p"·data-group-id="8511671639-14">{</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="8511671639-14">}</span><span·class="p">,</span><span·class="w">
189 ·</span><span·class="p"·data-group-id="2657682816-15">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="2657682816-15">}</span><span·class="p">,</span><span·class="w">189 ·</span><span·class="p"·data-group-id="8511671639-15">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="8511671639-15">}</span><span·class="p">,</span><span·class="w">
190 ·</span><span·class="p"·data-group-id="2657682816-16">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="2657682816-16">}</span><span·class="p">,</span><span·class="w">190 ·</span><span·class="p"·data-group-id="8511671639-16">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="8511671639-16">}</span><span·class="p">,</span><span·class="w">
191 ·</span><span·class="p"·data-group-id="2657682816-17">{</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">15</span><span·class="p"·data-group-id="2657682816-17">}</span><span·class="p">,</span><span·class="w">191 ·</span><span·class="p"·data-group-id="8511671639-17">{</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">15</span><span·class="p"·data-group-id="8511671639-17">}</span><span·class="p">,</span><span·class="w">
192 ·</span><span·class="p"·data-group-id="2657682816-18">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">13</span><span·class="p"·data-group-id="2657682816-18">}</span><span·class="p">,</span><span·class="w">192 ·</span><span·class="p"·data-group-id="8511671639-18">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">13</span><span·class="p"·data-group-id="8511671639-18">}</span><span·class="p">,</span><span·class="w">
193 ·</span><span·class="p"·data-group-id="2657682816-19">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">15</span><span·class="p"·data-group-id="2657682816-19">}</span><span·class="p">,</span><span·class="w">193 ·</span><span·class="p"·data-group-id="8511671639-19">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">15</span><span·class="p"·data-group-id="8511671639-19">}</span><span·class="p">,</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="2657682816-20">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">20</span><span·class="p"·data-group-id="2657682816-20">}</span><span·class="p">,</span><span·class="w">194 ·</span><span·class="p"·data-group-id="8511671639-20">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">20</span><span·class="p"·data-group-id="8511671639-20">}</span><span·class="p">,</span><span·class="w">
195 ·</span><span·class="p"·data-group-id="2657682816-21">{</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="2657682816-21">}</span><span·class="p">,</span><span·class="w">195 ·</span><span·class="p"·data-group-id="8511671639-21">{</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="8511671639-21">}</span><span·class="p">,</span><span·class="w">
196 ·</span><span·class="p"·data-group-id="2657682816-22">{</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">20</span><span·class="p"·data-group-id="2657682816-22">}</span><span·class="p"·data-group-id="2657682816-10">]</span[·...·truncated·by·diffoscope;·len:·282,·SHA:·18ca328e61287e9a877a1932237adbb00f990f1fbcc0d725efb808e8f0e082db·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 ·</span><span·class="p"·data-group-id="8511671639-22">{</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="mi">20</span><span·class="p"·data-group-id="8511671639-22">}</span><span·class="p"·data-group-id="8511671639-10">]</span[·...·truncated·by·diffoscope;·len:·282,·SHA:·92ab9fca48440cae789fed643a53f14bf737b34d78ba17bcd3f821f55aff7a10·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ···</span><span·class="p"·data-group-id="1427891609-2">[</span><span·class="p"·data-group-id="1427891609-3">{</span><span·class="n">A</span><span·class="p">,</span><span·class="n">B</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="1427891609-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">197 ···</span><span·class="p"·data-group-id="2009374164-2">[</span><span·class="p"·data-group-id="2009374164-3">{</span><span·class="n">A</span><span·class="p">,</span><span·class="n">B</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="2009374164-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
198 ·······</span><span·class="n">A</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="1427891609-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">2</span><span·class="p"·data-group-id="1427891609-4">)</span><span·class="p">,</span><span·class="w">198 ·······</span><span·class="n">A</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="2009374164-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">2</span><span·class="p"·data-group-id="2009374164-4">)</span><span·class="p">,</span><span·class="w">
199 ·······</span><span·class="n">B</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="1427891609-5">(</span><span·class="n">A</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="1427891609-5">)</span><span·class="p">,</span><span·class="w">199 ·······</span><span·class="n">B</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="2009374164-5">(</span><span·class="n">A</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="2009374164-5">)</span><span·class="p">,</span><span·class="w">
200 ·······</span><span·class="n">C</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="1427891609-6">(</span><span·class="n">B</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1427891609-6">)</span><span·class="p">,</span><span·class="w">200 ·······</span><span·class="n">C</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="2009374164-6">(</span><span·class="n">B</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="2009374164-6">)</span><span·class="p">,</span><span·class="w">
201 ·······</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">+</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">201 ·······</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">+</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">
202 ·······</span><span·class="n">A</span><span·class="o">*</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">*</span><span·class="n">B</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">C</span><span·class="o">*</span><span·class="n">C</span><span·class="w">·</span><span·class="p"·data-group-id="1427891609-2">]</span><span·class="p">.</span></code></pre><h2·id="simplifications-with-list-comprehensions"·class="section-heading">202 ·······</span><span·class="n">A</span><span·class="o">*</span><span·class="n">A</span><span·class="o">+</span><span·class="n">B</span><span·class="o">*</span><span·class="n">B</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">C</span><span·class="o">*</span><span·class="n">C</span><span·class="w">·</span><span·class="p"·data-group-id="2009374164-2">]</span><span·class="p">.</span></code></pre><h2·id="simplifications-with-list-comprehensions"·class="section-heading">
203 ··<a·href="#simplifications-with-list-comprehensions"·class="hover-link">203 ··<a·href="#simplifications-with-list-comprehensions"·class="hover-link">
204 ····<i·class="ri-link-m"·aria-hidden="true"></i>204 ····<i·class="ri-link-m"·aria-hidden="true"></i>
205 ··</a>205 ··</a>
206 ··<span·class="text">Simplifications·With·List·Comprehensions</span>206 ··<span·class="text">Simplifications·With·List·Comprehensions</span>
207 </h2>207 </h2>
208 <p>As·an·example,·list·comprehensions·can·be·used·to·simplify·some·of·the·functions208 <p>As·an·example,·list·comprehensions·can·be·used·to·simplify·some·of·the·functions
209 in·<code·class="inline">lists.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append</span><span·class="p"·data-group-id="0294938211-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="0294938211-1">)</span><span·class="w">···</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="p"·data-group-id="0294938211-2">[</span><span·class="n">X</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·5e8c33f83646c55043970bcd3ab1a2c2091776929957d6760ddb60d52613c693·...·]-2">]</span><span·class="p">.</span><span·class="w">209 in·<code·class="inline">lists.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append</span><span·class="p"·data-group-id="9232870536-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="9232870536-1">)</span><span·class="w">···</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="p"·data-group-id="9232870536-2">[</span><span·class="n">X</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·62b4fdc7397a28f825c9c374dc8e84d9628e803e4e15e033a5e5a880e3718fdb·...·]-2">]</span><span·class="p">.</span><span·class="w">
210 </span><span·class="nf">map</span><span·class="p"·data-group-id="0294938211-3">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="0294938211-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·440,·SHA:·5e388610a87fb5062635f372266667aa3c2ade050890b2f62f12ecb74050b259·...·]-4">]</span><span·class="p">.</span><span·class="w">210 </span><span·class="nf">map</span><span·class="p"·data-group-id="9232870536-3">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="9232870536-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·440,·SHA:·a57779e74a26b65e5e60f606a0cc17eece23cdbb6567fdf692b10c166249db01·...·]-4">]</span><span·class="p">.</span><span·class="w">
211 </span><span·class="nf">filter</span><span·class="p"·data-group-id="0294938211-6">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="0294938211-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·514,·SHA:·1f32baa9b78ba3db2b737ff227c1db063ba0e2ca1a9abe45a197d9b89a772e98·...·]-7">]</span><span·class="p">.</span></code></pre><h2·id="variable-bindings-in-list-comprehensions"·class="section-heading">211 </span><span·class="nf">filter</span><span·class="p"·data-group-id="9232870536-6">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="9232870536-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·514,·SHA:·f1824cdf69f91738e47628982447cedfdf678298871c7984371a085f132c95c5·...·]-7">]</span><span·class="p">.</span></code></pre><h2·id="variable-bindings-in-list-comprehensions"·class="section-heading">
212 ··<a·href="#variable-bindings-in-list-comprehensions"·class="hover-link">212 ··<a·href="#variable-bindings-in-list-comprehensions"·class="hover-link">
213 ····<i·class="ri-link-m"·aria-hidden="true"></i>213 ····<i·class="ri-link-m"·aria-hidden="true"></i>
214 ··</a>214 ··</a>
215 ··<span·class="text">Variable·Bindings·in·List·Comprehensions</span>215 ··<span·class="text">Variable·Bindings·in·List·Comprehensions</span>
216 </h2>216 </h2>
217 <p>The·scope·rules·for·variables·that·occur·in·list·comprehensions·are·as·follows:</p><ul><li>All·variables·that·occur·in·a·generator·pattern·are·assumed·to·be·&quot;fresh&quot;217 <p>The·scope·rules·for·variables·that·occur·in·list·comprehensions·are·as·follows:</p><ul><li>All·variables·that·occur·in·a·generator·pattern·are·assumed·to·be·&quot;fresh&quot;
218 variables.</li><li>Any·variables·that·are·defined·before·the·list·comprehension,·and·that·are218 variables.</li><li>Any·variables·that·are·defined·before·the·list·comprehension,·and·that·are
219 used·in·filters,·have·the·values·they·had·before·the·list·comprehension.</li><li>Variables·cannot·be·exported·from·a·list·comprehension.</li></ul><p>As·an·example·of·these·rules,·suppose·you·want·to·write·the·function·<code·class="inline">select</code>,219 used·in·filters,·have·the·values·they·had·before·the·list·comprehension.</li><li>Variables·cannot·be·exported·from·a·list·comprehension.</li></ul><p>As·an·example·of·these·rules,·suppose·you·want·to·write·the·function·<code·class="inline">select</code>,
220 which·selects·certain·elements·from·a·list·of·tuples.·Suppose·you·write220 which·selects·certain·elements·from·a·list·of·tuples.·Suppose·you·write
221 <code·class="inline">select(X,·L)·-&gt;·[Y·||·{X,·Y}·&lt;-·L].</code>·with·the·intention·of·extracting·all221 <code·class="inline">select(X,·L)·-&gt;·[Y·||·{X,·Y}·&lt;-·L].</code>·with·the·intention·of·extracting·all
222 tuples·from·<code·class="inline">L</code>,·where·the·first·item·is·<code·class="inline">X</code>.</p><p>Compiling·this·gives·the·following·diagnostic:</p><pre><code·class="text">./FileName.erl:Line:·Warning:·variable·'X'·shadowed·in·generate</code></pre><p>This·diagnostic·warns·that·the·variable·<code·class="inline">X</code>·in·the·pattern·is·not·the·same·as222 tuples·from·<code·class="inline">L</code>,·where·the·first·item·is·<code·class="inline">X</code>.</p><p>Compiling·this·gives·the·following·diagnostic:</p><pre><code·class="text">./FileName.erl:Line:·Warning:·variable·'X'·shadowed·in·generate</code></pre><p>This·diagnostic·warns·that·the·variable·<code·class="inline">X</code>·in·the·pattern·is·not·the·same·as
223 the·variable·<code·class="inline">X</code>·that·occurs·in·the·function·head.</p><p>Evaluating·<code·class="inline">select</code>·gives·the·following·result:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">select</span><span·class="p"·data-group-id="0348992772-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="0348992772-2">[</span><span·class="p"·data-group-id="0348992772-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·ed131eeb4c4ff1a2749c2a03e37fccc6a6139b79819e5d2c16ef695e5749059a·...·]-1">)</span><span·class="p">.</span><span·class="w">223 the·variable·<code·class="inline">X</code>·that·occurs·in·the·function·head.</p><p>Evaluating·<code·class="inline">select</code>·gives·the·following·result:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">select</span><span·class="p"·data-group-id="3754248340-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="3754248340-2">[</span><span·class="p"·data-group-id="3754248340-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·2f3ea5fe496011dbfc73a198e6ec8b0c17a45f20ca5df6a4dc81405c6688d811·...·]-1">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="p"·data-group-id="0348992772-7">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="0348992772-7">]</span></code></pre><p>This·is·not·the·wanted·result.·To·achieve·the·desired·effect,·<code·class="inline">select</code>·must·be224 </span><span·class="p"·data-group-id="3754248340-7">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="3754248340-7">]</span></code></pre><p>This·is·not·the·wanted·result.·To·achieve·the·desired·effect,·<code·class="inline">select</code>·must·be
225 written·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">select</span><span·class="p"·data-group-id="3864325684-1">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="3864325684-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·cl[·...·truncated·by·diffoscope;·len:·656,·SHA:·828d506489af3033e57ca38be4869f64a4b991594072872a68728579bcc0ef4a·...·]-2">]</span><span·class="p">.</span></code></pre><p>The·generator·now·contains·unbound·variables·and·the·test·has·been·moved·into225 written·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">select</span><span·class="p"·data-group-id="8190569722-1">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="8190569722-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·cl[·...·truncated·by·diffoscope;·len:·656,·SHA:·fe5e5fc1a2f6b4247a1e1c8155911a56af73928c2efeb4faf748b1f8c72988f6·...·]-2">]</span><span·class="p">.</span></code></pre><p>The·generator·now·contains·unbound·variables·and·the·test·has·been·moved·into
226 the·filter.</p><p>This·now·works·as·expected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">select</span><span·class="p"·data-group-id="1868878961-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="1868878961-2">[</span><span·class="p"·data-group-id="1868878961-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·cc905f35b30629dead9ed979ce5a6f3d41949c68f5cb153603f5317b1359c8f0·...·]-1">)</span><span·class="p">.</span><span·class="w">226 the·filter.</p><p>This·now·works·as·expected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">select</span><span·class="p"·data-group-id="7618856669-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="7618856669-2">[</span><span·class="p"·data-group-id="7618856669-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·cdbcf904da7c826e239b1147bc8020ff4896d584c3d2417e9eda9c89503a035d·...·]-1">)</span><span·class="p">.</span><span·class="w">
227 </span><span·class="p"·data-group-id="1868878961-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1868878961-7">]</span></code></pre><p>Also·note·that·a·variable·in·a·generator·pattern·will·shadow·a·variable·with·the 
228 same·name·bound·in·a·previous·generator·pattern.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="4515471039-1">[</span><span·class="p"·data-group-id="4515471039-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-id="4515471039-2">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="4515471039-3">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4515471039-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="o">=</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="4515471039-4">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="4515471039-4">]</span><span·class="p"·data-group-id="4515471039-1">]</span><span·class="p">.</span><span·class="w"> 
229 </span><span·class="p"·data-group-id="4515471039-5">[</span><span·class="p"·data-group-id="4515471039-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="4515471039-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1737,·SHA:·537a85d2488179e93ab77f6794a8ed7ec7a704c08ae001a7ae8b86d415e08ca7·...·]227 </span><span·class="p"·data-group-id="7618856669-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="7618856669-7">]</span></code></pre><p>Also·note·that·a·variable·in·a·generator·pattern·will·shadow·a·variable·with·the
 228 same·name·bound·in·a·previous·generator·pattern.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="7918337664-1">[</span><span·class="p"·data-group-id="7918337664-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-id="7918337664-2">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="7918337664-3">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7918337664-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="o">=</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="7918337664-4">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="7918337664-4">]</span><span·class="p"·data-group-id="7918337664-1">]</span><span·class="p">.</span><span·class="w">
 229 </span><span·class="p"·data-group-id="7918337664-5">[</span><span·class="p"·data-group-id="7918337664-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7918337664-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="7918337664-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-8">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="7918337664-8">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7918337664-9">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="7918337664-10">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="7918337664-11">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-12">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7918337664-12">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-13">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="7918337664-13">}</span><span·class="p">,</span><span·class="p"·data-group-id="7918337664-14">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="7918337664-14">}</span><span·class="p"·data-group-id="7918337664-5">]</span></code></pre><p>A·consequence·of·the·rules·for·importing·variables·into·a·list·comprehensions·is
230 that·certain·pattern·matching·operations·must·be·moved·into·the·filters·and230 that·certain·pattern·matching·operations·must·be·moved·into·the·filters·and
231 cannot·be·written·directly·in·the·generators.</p><p>To·illustrate·this,·do·<em>not</em>·write·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="7234993697-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7234993697-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 cannot·be·written·directly·in·the·generators.</p><p>To·illustrate·this,·do·<em>not</em>·write·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="9366501237-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9366501237-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
233 ····</span><span·class="p"·data-group-id="7234993697-2">[</span><span·class="w">·</span><span·class="n">Expression</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">PatternInvolving</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·247,·SHA:·5f57de4f8e78958b2f1a3cfb182183e62b0e8b86a8644f6761e019355dc78427·...·]7-2">]</span><span·class="w">233 ····</span><span·class="p"·data-group-id="9366501237-2">[</span><span·class="w">·</span><span·class="n">Expression</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">PatternInvolving</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·247,·SHA:·eeebf10213a5ead61e47617a1684f02d50da02ef49341809fe165fc442e7cb87·...·]7-2">]</span><span·class="w">
234 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Instead,·write·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="9516523529-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9516523529-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Instead,·write·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="0948987904-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0948987904-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
235 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">235 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="9516523529-2">[</span><span·class="w">·</span><span·class="n">Expression</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">PatternInvolving</span><span·class="w">·</span><span·class="n">Y1</span><span·class="w">[·...·truncated·by·diffoscope;·len:·419,·SHA:·def69ddb17568e8ded5982218ba360613cfc36ffbb3441fac86e765593529b44·...·]-2">]</span><span·class="w">236 ····</span><span·class="p"·data-group-id="0948987904-2">[</span><span·class="w">·</span><span·class="n">Expression</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">PatternInvolving</span><span·class="w">·</span><span·class="n">Y1</span><span·class="w">[·...·truncated·by·diffoscope;·len:·419,·SHA:·e103883ad62647fd1ce3cec26055f14f197823df8776864a70b40d7d6ded61bf·...·]-2">]</span><span·class="w">
237 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>237 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>
238 </div>238 </div>
  
239 <div·class="bottom-actions"·id="bottom-actions">239 <div·class="bottom-actions"·id="bottom-actions">
Max diff block lines reached; 71/78731 bytes (0.09%) of diff not shown.
55.5 KB
./usr/share/doc/erlang-doc/html/doc/system/listhandling.html
    
Offset 120, 105 lines modifiedOffset 120, 105 lines modified
120 ····<i·class="ri-link-m"·aria-hidden="true"></i>120 ····<i·class="ri-link-m"·aria-hidden="true"></i>
121 ··</a>121 ··</a>
122 ··<span·class="text">Creating·a·List</span>122 ··<span·class="text">Creating·a·List</span>
123 </h2>123 </h2>
124 <p>Lists·can·only·be·built·starting·from·the·end·and·attaching·list·elements·at·the124 <p>Lists·can·only·be·built·starting·from·the·end·and·attaching·list·elements·at·the
125 beginning.·If·you·use·the·<code·class="inline">++</code>·operator·as·follows,·a·new·list·is·created·that125 beginning.·If·you·use·the·<code·class="inline">++</code>·operator·as·follows,·a·new·list·is·created·that
126 is·a·copy·of·the·elements·in·<code·class="inline">List1</code>,·followed·by·<code·class="inline">List2</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">List1</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">List2</span></code></pre><p>Looking·at·how·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#append/2"><code·class="inline">lists:append/2</code></a>·or·<code·class="inline">++</code>·would·be·implemented·in·plain·Erlang,126 is·a·copy·of·the·elements·in·<code·class="inline">List1</code>,·followed·by·<code·class="inline">List2</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">List1</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">List2</span></code></pre><p>Looking·at·how·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#append/2"><code·class="inline">lists:append/2</code></a>·or·<code·class="inline">++</code>·would·be·implemented·in·plain·Erlang,
127 clearly·the·first·list·is·copied:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append</span><span·class="p"·data-group-id="4183410516-1">(</span><span·class="p"·data-group-id="4183410516-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4183410516-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·f31038bb404ac22162b062f29105dac3b0cbfae9454103b78e3dd70e1dbdb358·...·]6-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">127 clearly·the·first·list·is·copied:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append</span><span·class="p"·data-group-id="9384682256-1">(</span><span·class="p"·data-group-id="9384682256-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9384682256-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·a6084beb7ac938c5f54f5be2ba735fc3b83fac837405a991f2574f0efcfa10ab·...·]6-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
128 ····</span><span·class="p"·data-group-id="4183410516-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">append</span><span·class="p"·data-group-id="4183410516-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><spa[·...·truncated·by·diffoscope;·len:·89,·SHA:·3d28fc9f531dd8f20cbf2c91d827c2edbc35222f3baf78103b932e86ad6995f7·...·]6-3">]</span><span·class="p">;</span><span·class="w">128 ····</span><span·class="p"·data-group-id="9384682256-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">append</span><span·class="p"·data-group-id="9384682256-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><spa[·...·truncated·by·diffoscope;·len:·89,·SHA:·3781c3c4e81578627d288de284a12fe6f8cae4d9ac30c9934ba67366ad826cc9·...·]6-3">]</span><span·class="p">;</span><span·class="w">
129 </span><span·class="nf">append</span><span·class="p"·data-group-id="4183410516-5">(</span><span·class="p"·data-group-id="4183410516-6">[</span><span·class="p"·data-group-id="4183410516-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="4183410516-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">129 </span><span·class="nf">append</span><span·class="p"·data-group-id="9384682256-5">(</span><span·class="p"·data-group-id="9384682256-6">[</span><span·class="p"·data-group-id="9384682256-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="9384682256-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
130 ····</span><span·class="n">Tail</span><span·class="p">.</span></code></pre><p>When·recursing·and·building·a·list,·it·is·important·to·ensure·that·you·attach130 ····</span><span·class="n">Tail</span><span·class="p">.</span></code></pre><p>When·recursing·and·building·a·list,·it·is·important·to·ensure·that·you·attach
131 the·new·elements·to·the·beginning·of·the·list.·In·this·way,·you·will·build·<em>one</em>131 the·new·elements·to·the·beginning·of·the·list.·In·this·way,·you·will·build·<em>one</em>
132 list,·not·hundreds·or·thousands·of·copies·of·the·growing·result·list.</p><p>Let·us·first·see·how·it·is·not·to·be·done:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0482978653-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="0482978653-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">132 list,·not·hundreds·or·thousands·of·copies·of·the·growing·result·list.</p><p>Let·us·first·see·how·it·is·not·to·be·done:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0966140699-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="0966140699-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
133 ····</span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0482978653-2">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·130,·SHA:·2ef2f6e9d45a0678632887859289908796d7573e8a890b36d002932896f01035·...·]-2">)</span><span·class="p">.</span><span·class="w">133 ····</span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0966140699-2">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·130,·SHA:·1c100826d40725449492df0cbb5df3abfbcc5279f0ebe86d86ed9899a2a30db5·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0482978653-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Next</span><span·cla[·...·truncated·by·diffoscope;·len:·107,·SHA:·7978d3b8e624aea47fe01cc6579d5d4124d10fb6632b3bd3ee779a8b8190af2a·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">134 </span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0966140699-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Next</span><span·cla[·...·truncated·by·diffoscope;·len:·107,·SHA:·1dc80fa80419804b63bf5fa56dd8b1e6bb43dcd4f7057cd9ca4bb656d92384ff·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
135 ····</span><span·class="n">Fibs</span><span·class="p">;</span><span·class="w">135 ····</span><span·class="n">Fibs</span><span·class="p">;</span><span·class="w">
136 </span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0482978653-5">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·58,·SHA:·1686cb74d7bc921b1b3ae7650919014cb8f5ea96ddc25925ba57877543943354·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">136 </span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0966140699-5">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·58,·SHA:·00da9981edf238312ef4dddbf175b819d14c38229f706810545ee13959ccff55·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0482978653-6">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·463,·SHA:·7a90d87c64eae669cf68de70c7f3a748f01d15c825896ca08aeceb5da0d3cfe6·...·]-6">)</span><span·class="p">.</span></code></pre><p>Here·more·than·one·list·is·built.·In·each·iteration·step·a·new·list·is·created137 ····</span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="0966140699-6">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·463,·SHA:·3c0736f58ff5420824dc9b309b7974c8a11e0bbc0634d8b55866edaf8163f3c0·...·]-6">)</span><span·class="p">.</span></code></pre><p>Here·more·than·one·list·is·built.·In·each·iteration·step·a·new·list·is·created
138 that·is·one·element·longer·than·the·new·previous·list.</p><p>To·avoid·copying·the·result·in·each·iteration,·build·the·list·in·reverse·order138 that·is·one·element·longer·than·the·new·previous·list.</p><p>To·avoid·copying·the·result·in·each·iteration,·build·the·list·in·reverse·order
139 and·reverse·the·list·when·you·are·done:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="4771039062-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="4771039062-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">139 and·reverse·the·list·when·you·are·done:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="9415662438-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="9415662438-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
140 ····</span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="4771039062-2">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·131,·SHA:·f9a8702b18d907fdf69fc63875878ac56c4a61120ad54784f63c4937d1e9fa4f·...·]-2">)</span><span·class="p">.</span><span·class="w">140 ····</span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="9415662438-2">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·131,·SHA:·e0f3ce439c645f987766b973c44f9b57f9948443d070720c8ef2cdbca0152193·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
141 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="4771039062-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Next</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·9c70ab122c5c4ab3d375bf30eafc6be5b118580a02e6852ee55d3aea76598980·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">141 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="9415662438-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Next</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·a945f2c91f92ffce624ea02c9241e18b4512b06514f61e1966f3328f49b54203·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
142 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="4771039062-5">(</span><span·class="n">Fibs</span><span·class="p"·data-group-id="4771039062-5">)</span><span·class="p">;</span><span·class="w">142 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="9415662438-5">(</span><span·class="n">Fibs</span><span·class="p"·data-group-id="9415662438-5">)</span><span·class="p">;</span><span·class="w">
143 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="4771039062-6">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·6296b8c5c50e1180a3d419e60196f5b6f4437f8ea1cfd8ad06d5709cd5a15e23·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">143 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="9415662438-6">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·f6c77d4e788d5006172c41d20e52c67279a671a52d2173547b0e1b096b11b53f·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ····</span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="4771039062-7">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·415,·SHA:·bba3f2dfec95f6a246a30576a89e4da30eda53c0cfe9f3525768d50bcdd0e3e1·...·]-7">)</span><span·class="p">.</span></code></pre><h2·id="list-comprehensions"·class="section-heading">144 ····</span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="9415662438-7">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·415,·SHA:·d39b167484a0a57f774a8bda69ee385da1654a1d6ef5154a6384509150c13887·...·]-7">)</span><span·class="p">.</span></code></pre><h2·id="list-comprehensions"·class="section-heading">
145 ··<a·href="#list-comprehensions"·class="hover-link">145 ··<a·href="#list-comprehensions"·class="hover-link">
146 ····<i·class="ri-link-m"·aria-hidden="true"></i>146 ····<i·class="ri-link-m"·aria-hidden="true"></i>
147 ··</a>147 ··</a>
148 ··<span·class="text">List·Comprehensions</span>148 ··<span·class="text">List·Comprehensions</span>
149 </h2>149 </h2>
150 <p>A·list·comprehension:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0380010914-1">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="0380010914-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="0380010914-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·83214ed1ceb06e5152f6401cf93fa3fae5ff0233724585a61066fcc95230acc8·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">150 <p>A·list·comprehension:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6766100217-1">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="6766100217-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="6766100217-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·271bacd5bcab3ff6559bee7a8d735431337f8249e7738b6594eda735c80ab4f6·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ····</span><span·class="p"·data-group-id="0468815497-3">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="0468815497-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="0468815497-4">)</span><span·class="p">|</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·234,·SHA:·d5405589a0c84506d89684d6e6338dfbe39a1a4879e230d78e0d64dbde232d4b·...·]-3">]</span><span·class="p">;</span><span·class="w">151 ····</span><span·class="p"·data-group-id="7600295265-3">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="7600295265-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="7600295265-4">)</span><span·class="p">|</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·234,·SHA:·b8cc4f39c880c2c1148054ff088ae98fc6ecfe0f05437624dcdc06779cf8848d·...·]-3">]</span><span·class="p">;</span><span·class="w">
152 </span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="0468815497-6">(</span><span·class="p"·data-group-id="0468815497-7">[</span><span·class="p"·data-group-id="0468815497-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Expr</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·194,·SHA:·bc39457ba4c12fe05e403bb01685459ae45a2da85c381e6ff5189ec375d5d053·...·]-8">]</span><span·class="p">.</span></code></pre><p>If·the·result·of·the·list·comprehension·will·<em>obviously</em>·not·be·used,·a·list152 </span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="7600295265-6">(</span><span·class="p"·data-group-id="7600295265-7">[</span><span·class="p"·data-group-id="7600295265-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Expr</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·194,·SHA:·1c7089b0bef833ff539613dc417ae0efe301f31fad63eb59a70d13b014ea01dd·...·]-8">]</span><span·class="p">.</span></code></pre><p>If·the·result·of·the·list·comprehension·will·<em>obviously</em>·not·be·used,·a·list
153 will·not·be·constructed.·For·example,·in·this·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0507487898-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="0507487898-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="0507487898-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·2e19d8f659943d46904f2f8383bb5c6668e13396c4831ab737d5622283085d8c·...·]-1">]</span><span·class="p">,</span><span·class="w">153 will·not·be·constructed.·For·example,·in·this·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9199409100-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="9199409100-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="9199409100-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·655d9d4dc771a33f1d11a33dac3a8a76649813c303b9797686d7e33b6f45622b·...·]-1">]</span><span·class="p">,</span><span·class="w">
154 </span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>or·in·this·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">Var</span><span·class="w">·</span><span·class="k">of</span><span·class="w">154 </span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>or·in·this·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">Var</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
155 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">155 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
156 ········</span><span·class="p"·data-group-id="3782339743-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="3782339743-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="3782339743-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·7d6929ed6fd6276cc6888a3e1220e46cde5ac39dd14c85b569cc970aa9c17ab0·...·]-1">]</span><span·class="p">;</span><span·class="w">156 ········</span><span·class="p"·data-group-id="6233130411-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="6233130411-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="6233130411-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·5bc88951896c11dde9f88984ef7743670d16b39abf504910578106a8d30ca2f3·...·]-1">]</span><span·class="p">;</span><span·class="w">
157 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 </span><span·class="k">end</span><span·class="p">,</span><span·class="w">158 </span><span·class="k">end</span><span·class="p">,</span><span·class="w">
159 </span><span·class="nf">some_function</span><span·class="p"·data-group-id="3782339743-3">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3782339743-3">)</span><span·class="p">,</span></code></pre><p>the·value·is·not·assigned·to·a·variable,·not·passed·to·another·function,·and·not159 </span><span·class="nf">some_function</span><span·class="p"·data-group-id="6233130411-3">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6233130411-3">)</span><span·class="p">,</span></code></pre><p>the·value·is·not·assigned·to·a·variable,·not·passed·to·another·function,·and·not
160 returned.·This·means·that·there·is·no·need·to·construct·a·list·and·the·compiler160 returned.·This·means·that·there·is·no·need·to·construct·a·list·and·the·compiler
161 will·simplify·the·code·for·the·list·comprehension·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="6541482052-1">(</span><span·class="p"·data-group-id="6541482052-2">[</span><span·class="n">E</span><span·class="p">|</span><span·class="n">Tail</span><span·class="p"·data-group-id="6541482052-2">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·29f61f60761995e4865e7d60cbbeb82cbf02511f982532f2a10893e4bccc42ee·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 will·simplify·the·code·for·the·list·comprehension·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="9928555428-1">(</span><span·class="p"·data-group-id="9928555428-2">[</span><span·class="n">E</span><span·class="p">|</span><span·class="n">Tail</span><span·class="p"·data-group-id="9928555428-2">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·c07e62894b303a95436e16bba8235cbb51aa0d109be6d819d8f79b9f27417e50·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="n">Expr</span><span·class="p"·data-group-id="6541482052-3">(</span><span·class="n">E</span><span·class="p"·data-group-id="6541482052-3">)</span><span·class="p">,</span><span·class="w">162 ····</span><span·class="n">Expr</span><span·class="p"·data-group-id="9928555428-3">(</span><span·class="n">E</span><span·class="p"·data-group-id="9928555428-3">)</span><span·class="p">,</span><span·class="w">
163 ····</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="6541482052-4">(</span><span·class="n">Tail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Expr</span><span·class="p"·data-group-id="6541482052-4">)</span><span·class="p">;</span><span·class="w">163 ····</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="9928555428-4">(</span><span·class="n">Tail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Expr</span><span·class="p"·data-group-id="9928555428-4">)</span><span·class="p">;</span><span·class="w">
164 </span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="6541482052-5">(</span><span·class="p"·data-group-id="6541482052-6">[</span><span·class="p"·data-group-id="6541482052-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Expr</span><span·class="p"·data-group-id="6541482052-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6541482052-7">[</span><span·class="p"·data-group-id="6541482052-7">]</span><span·class="p">.</span></code></pre><p>The·compiler·also·understands·that·assigning·to·<code·class="inline">_</code>·means·that·the·value·will 
165 not·be·used.·Therefore,·the·code·in·the·following·example·will·also·be·optimized:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·532,·SHA:·b006ad01fce1ecf9ba28f50866a2cb06a118ae354236e581fc35beb5fa416e63·...·]164 </span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="9928555428-5">(</span><span·class="p"·data-group-id="9928555428-6">[</span><span·class="p"·data-group-id="9928555428-6">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·425,·SHA:·627fe946cdc43dc5ad58e2fdc49aa012ca18bcbbd99be47c1e587a7b80a6bb99·...·]
 165 not·be·used.·Therefore,·the·code·in·the·following·example·will·also·be·optimized:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6099251796-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="6099251796-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="6099251796-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">E</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="6099251796-1">]</span><span·class="p">,</span><span·class="w">
166 </span><span·class="ss">ok</span><span·class="p">.</span></code></pre><h2·id="deep-and-flat-lists"·class="section-heading">166 </span><span·class="ss">ok</span><span·class="p">.</span></code></pre><h2·id="deep-and-flat-lists"·class="section-heading">
167 ··<a·href="#deep-and-flat-lists"·class="hover-link">167 ··<a·href="#deep-and-flat-lists"·class="hover-link">
168 ····<i·class="ri-link-m"·aria-hidden="true"></i>168 ····<i·class="ri-link-m"·aria-hidden="true"></i>
169 ··</a>169 ··</a>
170 ··<span·class="text">Deep·and·Flat·Lists</span>170 ··<span·class="text">Deep·and·Flat·Lists</span>
171 </h2>171 </h2>
172 <p><a·href="../../lib/stdlib-6.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>·builds·an·entirely·new·list.·It·is·therefore·expensive,·and172 <p><a·href="../../lib/stdlib-6.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>·builds·an·entirely·new·list.·It·is·therefore·expensive,·and
173 even·<em>more</em>·expensive·than·the·<code·class="inline">++</code>·operator·(which·copies·its·left·argument,173 even·<em>more</em>·expensive·than·the·<code·class="inline">++</code>·operator·(which·copies·its·left·argument,
174 but·not·its·right·argument).</p><p>In·the·following·situations·it·is·unnecessary·to·call·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>:</p><ul><li>When·sending·data·to·a·port.·Ports·understand·deep·lists·so·there·is·no·reason174 but·not·its·right·argument).</p><p>In·the·following·situations·it·is·unnecessary·to·call·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>:</p><ul><li>When·sending·data·to·a·port.·Ports·understand·deep·lists·so·there·is·no·reason
175 to·flatten·the·list·before·sending·it·to·the·port.</li><li>When·calling·BIFs·that·accept·deep·lists,·such·as175 to·flatten·the·list·before·sending·it·to·the·port.</li><li>When·calling·BIFs·that·accept·deep·lists,·such·as
176 <a·href="../../erts-15.2.2/doc/html/erlang.html#list_to_binary/1"><code·class="inline">list_to_binary/1</code></a>·or176 <a·href="../../erts-15.2.2/doc/html/erlang.html#list_to_binary/1"><code·class="inline">list_to_binary/1</code></a>·or
177 <a·href="../../erts-15.2.2/doc/html/erlang.html#iolist_to_binary/1"><code·class="inline">iolist_to_binary/1</code></a>.</li><li>When·you·know·that·your·list·is·only·one·level·deep.·Use·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#append/1"><code·class="inline">lists:append/1</code></a>177 <a·href="../../erts-15.2.2/doc/html/erlang.html#iolist_to_binary/1"><code·class="inline">iolist_to_binary/1</code></a>.</li><li>When·you·know·that·your·list·is·only·one·level·deep.·Use·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#append/1"><code·class="inline">lists:append/1</code></a>
178 instead.</li></ul><p><em>Examples:</em></p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">port_command</span><span·class="p"·data-group-id="7522912969-1">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DeepList</span><span·class="p"·data-group-id="7522912969-1">)</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"[·...·truncated·by·diffoscope;·len:·954,·SHA:·c27e11729344867f08ab0ae2d794c930177dc7b5e3604c0eb150543b3e6a2b56·...·]-1">]</span><span·class="p">,</span><span·class="w">178 instead.</li></ul><p><em>Examples:</em></p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">port_command</span><span·class="p"·data-group-id="9464075203-1">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DeepList</span><span·class="p"·data-group-id="9464075203-1">)</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"[·...·truncated·by·diffoscope;·len:·954,·SHA:·5f62a08c42dd80010d154b27e8eeefa48f7b14d16bddcc3a5ab3a1cd4a103998·...·]-1">]</span><span·class="p">,</span><span·class="w">
179 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="2412155455-2">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TerminatedStr</span><span·class="p"·data-group-id="2412155455-2">)</span></code></pre><p>Instead:</p><p><strong>DO</strong></p><pre><code·class="[·...·truncated·by·diffoscope;·len:·334,·SHA:·732b5ad8ca2339056418163f9061a46032d11ffdad4267a2e7d73ba04d24c2da·...·]-1">]</span><span·class="p">,</span><span·class="w">179 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="2487581703-2">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TerminatedStr</span><span·class="p"·data-group-id="2487581703-2">)</span></code></pre><p>Instead:</p><p><strong>DO</strong></p><pre><code·class="[·...·truncated·by·diffoscope;·len:·334,·SHA:·ac32b337581e85e2af0397bf7e1296f3162785c1f97d80e361d27d22bd32bdda·...·]-1">]</span><span·class="p">,</span><span·class="w">
180 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="8296595149-2">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TerminatedStr</span><span·class="p"·data-group-id="8296595149-2">)</span></code></pre><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="2561207749-1">(</span><span·class="p"·data-group-id="2561207749-2">[</span><span·class="p"·data-group-id="2561207749-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="2561207749-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2561207749-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="2561207749-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2561207749-5">[</span><span·class="mi">3</span><span·class="p"·data-group-id="2561207749-5">]</span><span·class="p"·data-group-id="2561207749-2">]</span><span·class="p"·data-group-id="2561207749-1">)</span><span·class="p">.</span><span·class="w"> 
181 </span><span·class="p"·data-group-id="2561207749-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2561207749-6">]</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="1889417145-1">(</span><span·class="p"·data-group-id="1889417145-2">[</span><span·class="p"·data-group-id="1889417145-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="1889417145-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1889417145-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="1889417145-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1889417145-5">[</span><span·class="mi">3</span><span·class="p"·data-group-id="1889417145-5">]</span><span·class="p"·data-group-id="1889417145-2">]</span><span·class="p"·data-group-id="1889417145-1">)</span><span·class="p">.</span><span·class="w"> 
182 </span><span·class="p"·data-group-id="1889417145-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1889417145-6">]</span></code></pre><h2·id="recursive-list-func[·...·truncated·by·diffoscope;·len:·29,·SHA:·4a97f155337d912116f87b534666017ee54bb6a09ff913e0b6272dafbe3ba7c0·...·]">180 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="8338664273-2">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TerminatedStr</span><span·class="p"·data-group-id="8338664273-2">)</span></code></pre><p>[·...·truncated·by·diffoscope;·len:·936,·SHA:·f3b08b503374aaece54c8e24f0358b44baf7d52357ac9de25ebbd57b8fe4e740·...·]">
 181 </span><span·class="p"·data-group-id="3210670445-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3210670445-6">]</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="6229439877-1">(</span><span·class="p"·data-group-id="6229439877-2">[</span><span·class="p"·data-group-id="6229439877-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="6229439877-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6229439877-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="6229439877-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6229439877-5">[</span><span·class="mi">3</span><span·class="p"·data-group-id="6229439877-5">]</span><span·class="p"·data-group-id="6229439877-2">]</span><span·class="p"·data-group-id="6229439877-1">)</span><span·class="p">.</span><span·class="w">
 182 </span><span·class="p"·data-group-id="6229439877-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6229439877-6">]</span></code></pre><h2·id="recursive-list-functions"·class="section-heading">
183 ··<a·href="#recursive-list-functions"·class="hover-link">183 ··<a·href="#recursive-list-functions"·class="hover-link">
184 ····<i·class="ri-link-m"·aria-hidden="true"></i>184 ····<i·class="ri-link-m"·aria-hidden="true"></i>
185 ··</a>185 ··</a>
186 ··<span·class="text">Recursive·List·Functions</span>186 ··<span·class="text">Recursive·List·Functions</span>
187 </h2>187 </h2>
188 <p>There·are·two·basic·ways·to·write·a·function·that·traverses·a·list·and188 <p>There·are·two·basic·ways·to·write·a·function·that·traverses·a·list·and
189 produces·a·new·list.</p><p>The·first·way·is·writing·a·<em>body-recursive</em>·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Add·42·to·each·integer·in·the·list.</span><span·class="w">189 produces·a·new·list.</p><p>The·first·way·is·writing·a·<em>body-recursive</em>·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Add·42·to·each·integer·in·the·list.</span><span·class="w">
190 </span><span·class="nf">add_42_body</span><span·class="p"·data-group-id="9535583195-1">(</span><span·class="p"·data-group-id="9535583195-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9535583195-2">]</span><span·class="p"·data-group-id="9535583195-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">190 </span><span·class="nf">add_42_body</span><span·class="p"·data-group-id="4331106907-1">(</span><span·class="p"·data-group-id="4331106907-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4331106907-2">]</span><span·class="p"·data-group-id="4331106907-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="p"·data-group-id="9535583195-3">[</span><span·class="n">H</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">add_42_body</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·c689a2e2aae8b1546bcabd4c3ccfbf8444307b175291e8e73584da45f3e6e735·...·]-3">]</span><span·class="p">;</span><span·class="w">191 ····</span><span·class="p"·data-group-id="4331106907-3">[</span><span·class="n">H</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">add_42_body</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·71d7e587f429eeb8bf5642b1cf47ab6e2c171bf8d0cd0011602f3c85e4e9a662·...·]-3">]</span><span·class="p">;</span><span·class="w">
192 </span><span·class="nf">add_42_body</span><span·class="p"·data-group-id="9535583195-5">(</span><span·class="p"·data-group-id="9535583195-6">[</span><span·class="p"·data-group-id="9535583195-6">]</span><span·class="p"·data-group-id="9535583195-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 </span><span·class="nf">add_42_body</span><span·class="p"·data-group-id="4331106907-5">(</span><span·class="p"·data-group-id="4331106907-6">[</span><span·class="p"·data-group-id="4331106907-6">]</span><span·class="p"·data-group-id="4331106907-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="9535583195-7">[</span><span·class="p"·data-group-id="9535583195-7">]</span><span·class="p">.</span></code></pre><p>The·second·way·is·writing·a·<em>tail-recursive</em>·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Add·42·to·each·integer·in·the·list.</span><span·class="w">193 ····</span><span·class="p"·data-group-id="4331106907-7">[</span><span·class="p"·data-group-id="4331106907-7">]</span><span·class="p">.</span></code></pre><p>The·second·way·is·writing·a·<em>tail-recursive</em>·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Add·42·to·each·integer·in·the·list.</span><span·class="w">
194 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="1891418554-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="1891418554-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="0479700752-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="0479700752-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="1891418554-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1891418554-3">[</span><span·class="p"·data-group-id="1891418554-3">]</span><span·class="p"·data-group-id="1891418554-2">)</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="0479700752-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0479700752-3">[</span><span·class="p"·data-group-id="0479700752-3">]</span><span·class="p"·data-group-id="0479700752-2">)</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="1891418554-4">(</span><span·class="p"·data-group-id="1891418554-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1891418554-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·10b56d3294fcffaea1a09d215108584a67ca574944037301999a0b504958686e·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="0479700752-4">(</span><span·class="p"·data-group-id="0479700752-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0479700752-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·7c6837c55cbb4c3899b21aeb8598facd3007dd5fd8aa2b821c07ad7fe03ab4ce·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="1891418554-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1891418554-7">[</span><span·class="n">H</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·205,·SHA:·556bce539f6cc69cecd97c95ec9c2244d090f510daebe9506563cb5c7f4d951d·...·]-6">)</span><span·class="p">;</span><span·class="w">197 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="0479700752-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0479700752-7">[</span><span·class="n">H</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·205,·SHA:·3b5a637826d294ed0fb8d7d9dc4c0b8adf0b388451b4e44b29abfeade6f59f4b·...·]-6">)</span><span·class="p">;</span><span·class="w">
198 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="1891418554-8">(</span><span·class="p"·data-group-id="1891418554-9">[</span><span·class="p"·data-group-id="1891418554-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="1891418554-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="0479700752-8">(</span><span·class="p"·data-group-id="0479700752-9">[</span><span·class="p"·data-group-id="0479700752-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0479700752-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="1891418554-10">(</span><span·class="n">Acc</span><span·class="p"·data-group-id="1891418554-10">)</span><span·class="p">.</span></code></pre><p>In·early·version·of·Erlang·the·tail-recursive·function·would·typically199 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="0479700752-10">(</span><span·class="n">Acc</span><span·class="p"·data-group-id="0479700752-10">)</span><span·class="p">.</span></code></pre><p>In·early·version·of·Erlang·the·tail-recursive·function·would·typically
200 be·more·efficient.·In·modern·versions·of·Erlang,·there·is·usually·not200 be·more·efficient.·In·modern·versions·of·Erlang,·there·is·usually·not
201 much·difference·in·performance·between·a·body-recursive·list·function·and201 much·difference·in·performance·between·a·body-recursive·list·function·and
202 tail-recursive·function·that·reverses·the·list·at·the·end.·Therefore,202 tail-recursive·function·that·reverses·the·list·at·the·end.·Therefore,
203 concentrate·on·writing·beautiful·code·and·forget·about·the·performance203 concentrate·on·writing·beautiful·code·and·forget·about·the·performance
204 of·your·list·functions.·In·the·time-critical·parts·of·your·code,204 of·your·list·functions.·In·the·time-critical·parts·of·your·code,
205 <em>measure</em>·before·rewriting·your·code.</p><p>For·a·thorough·discussion·about·tail·and·body·recursion,·see205 <em>measure</em>·before·rewriting·your·code.</p><p>For·a·thorough·discussion·about·tail·and·body·recursion,·see
206 <a·href="http://ferd.ca/erlang-s-tail-recursion-is-not-a-silver-bullet.html">Erlang's·Tail·Recursion·is·Not·a·Silver·Bullet</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·section·is·about·list·functions·that·<em>construct</em>·lists.·A·tail-recursive206 <a·href="http://ferd.ca/erlang-s-tail-recursion-is-not-a-silver-bullet.html">Erlang's·Tail·Recursion·is·Not·a·Silver·Bullet</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·section·is·about·list·functions·that·<em>construct</em>·lists.·A·tail-recursive
207 function·that·does·not·construct·a·list·runs·in·constant·space,·while·the207 function·that·does·not·construct·a·list·runs·in·constant·space,·while·the
208 corresponding·body-recursive·function·uses·stack·space·proportional·to·the208 corresponding·body-recursive·function·uses·stack·space·proportional·to·the
209 length·of·the·list.</p></section><p>For·example,·a·function·that·sums·a·list·of·integers,·is·<em>not</em>·to·be·written·as209 length·of·the·list.</p></section><p>For·example,·a·function·that·sums·a·list·of·integers,·is·<em>not</em>·to·be·written·as
210 follows:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="3326381437-1">(</span><span·class="p"·data-group-id="3326381437-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3326381437-2">]</span><span·class="p"·data-group-id="3326381437-1">)</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·6635a212b3b7afc7af4e3998732eeadc6a229fbf4b0f33776e145bee0ec56841·...·]-3">)</span><span·class="p">;</span><span·class="w">210 follows:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="0754129362-1">(</span><span·class="p"·data-group-id="0754129362-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0754129362-2">]</span><span·class="p"·data-group-id="0754129362-1">)</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·9b3ae5dc2cd63e7509e36d9376f86cc9a656809c5ac8f65f840c3ecbbbd925af·...·]-3">)</span><span·class="p">;</span><span·class="w">
211 </span><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="3326381437-4">(</span><span·class="p"·data-group-id="3326381437-5">[</span><span·class="p"·data-group-id="3326381437-5">]</span><span·class="p"·data-group-id="3326381437-4">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·606,·SHA:·c24221fb77202800a1ab86dfaa9969b958df12c4e28ddcf6a21c8186a450c435·...·]-2">)</span><span·class="p">.</span><span·class="w">211 </span><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="0754129362-4">(</span><span·class="p"·data-group-id="0754129362-5">[</span><span·class="p"·data-group-id="0754129362-5">]</span><span·class="p"·data-group-id="0754129362-4">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·606,·SHA:·2b0877c8a0d4d584150ff1ccac1a873ea9e854865ccc746a5fbcf2bf91f4de56·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">sum</span><span·class="p"·data-group-id="4272687278-3">(</span><span·class="p"·data-group-id="4272687278-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4272687278-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·8fdb809144c6d7fe0831f42d59afa1689bf8f9c8c79f9df5b5adbe9c3933c5e6·...·]-5">)</span><span·class="p">;</span><span·class="w">212 </span><span·class="nf">sum</span><span·class="p"·data-group-id="5307921379-3">(</span><span·class="p"·data-group-id="5307921379-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5307921379-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·8e7c6275b54ec0c79fbe898ac1a135d8002d8a5416aa4d038d1dc5548e2b33a5·...·]-5">)</span><span·class="p">;</span><span·class="w">
213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="4272687278-6">(</span><span·class="p"·data-group-id="4272687278-7">[</span><span·class="p"·data-group-id="4272687278-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="4272687278-6">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p">.</span></code></pre>213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="5307921379-6">(</span><span·class="p"·data-group-id="5307921379-7">[</span><span·class="p"·data-group-id="5307921379-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="5307921379-6">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p">.</span></code></pre>
214 </div>214 </div>
  
215 <div·class="bottom-actions"·id="bottom-actions">215 <div·class="bottom-actions"·id="bottom-actions">
216 ··<div·class="bottom-actions-item">216 ··<div·class="bottom-actions-item">
  
217 ······<a·href="maps.html"·class="bottom-actions-button"·rel="prev">217 ······<a·href="maps.html"·class="bottom-actions-button"·rel="prev">
218 ········<span·class="subheader">218 ········<span·class="subheader">
58.4 KB
./usr/share/doc/erlang-doc/html/doc/system/macros.html
    
Offset 117, 56 lines modifiedOffset 117, 56 lines modified
  
117 <h2·id="file-inclusion"·class="section-heading">117 <h2·id="file-inclusion"·class="section-heading">
118 ··<a·href="#file-inclusion"·class="hover-link">118 ··<a·href="#file-inclusion"·class="hover-link">
119 ····<i·class="ri-link-m"·aria-hidden="true"></i>119 ····<i·class="ri-link-m"·aria-hidden="true"></i>
120 ··</a>120 ··</a>
121 ··<span·class="text">File·Inclusion</span>121 ··<span·class="text">File·Inclusion</span>
122 </h2>122 </h2>
123 <p>A·file·can·be·included·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="1864698181-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="1864698181-1">)</span><span·class="p">.</span><span·class="w">123 <p>A·file·can·be·included·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="1460083057-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="1460083057-1">)</span><span·class="p">.</span><span·class="w">
124 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1864698181-2">(</span><span·class="n">File</span><span·class="p"·data-group-id="1864698181-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">File</code>,·a·string,·is·to·point·out·a·file.·The·contents·of·this·file·are·included124 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1460083057-2">(</span><span·class="n">File</span><span·class="p"·data-group-id="1460083057-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">File</code>,·a·string,·is·to·point·out·a·file.·The·contents·of·this·file·are·included
125 as·is,·at·the·position·of·the·directive.</p><p>Include·files·are·typically·used·for·record·and·macro·definitions·that·are125 as·is,·at·the·position·of·the·directive.</p><p>Include·files·are·typically·used·for·record·and·macro·definitions·that·are
126 shared·by·several·modules.·It·is·recommended·to·use·the·file·name·extension126 shared·by·several·modules.·It·is·recommended·to·use·the·file·name·extension
127 <code·class="inline">.hrl</code>·for·include·files.</p><p><code·class="inline">File</code>·can·start·with·a·path·component·<code·class="inline">$VAR</code>,·for·some·string·<code·class="inline">VAR</code>.·If·that·is127 <code·class="inline">.hrl</code>·for·include·files.</p><p><code·class="inline">File</code>·can·start·with·a·path·component·<code·class="inline">$VAR</code>,·for·some·string·<code·class="inline">VAR</code>.·If·that·is
128 the·case,·the·value·of·the·environment·variable·<code·class="inline">VAR</code>·as·returned·by128 the·case,·the·value·of·the·environment·variable·<code·class="inline">VAR</code>·as·returned·by
129 <code·class="inline">os:getenv(VAR)</code>·is·substituted·for·<code·class="inline">$VAR</code>.·If·<code·class="inline">os:getenv(VAR)</code>·returns·<code·class="inline">false</code>,129 <code·class="inline">os:getenv(VAR)</code>·is·substituted·for·<code·class="inline">$VAR</code>.·If·<code·class="inline">os:getenv(VAR)</code>·returns·<code·class="inline">false</code>,
130 <code·class="inline">$VAR</code>·is·left·as·is.</p><p>If·the·filename·<code·class="inline">File</code>·is·absolute·(possibly·after·variable·substitution),·the130 <code·class="inline">$VAR</code>·is·left·as·is.</p><p>If·the·filename·<code·class="inline">File</code>·is·absolute·(possibly·after·variable·substitution),·the
131 include·file·with·that·name·is·included.·Otherwise,·the·specified·file·is131 include·file·with·that·name·is·included.·Otherwise,·the·specified·file·is
132 searched·for·in·the·following·directories,·and·in·this·order:</p><ol><li>The·current·working·directory</li><li>The·directory·where·the·module·is·being·compiled</li><li>The·directories·given·by·the·<code·class="inline">include</code>·option</li></ol><p>For·details,·see·<a·href="../../erts-15.2.2/doc/html/erlc_cmd.html">erlc</a>·in·ERTS·and132 searched·for·in·the·following·directories,·and·in·this·order:</p><ol><li>The·current·working·directory</li><li>The·directory·where·the·module·is·being·compiled</li><li>The·directories·given·by·the·<code·class="inline">include</code>·option</li></ol><p>For·details,·see·<a·href="../../erts-15.2.2/doc/html/erlc_cmd.html">erlc</a>·in·ERTS·and
133 <a·href="../../lib/compiler-8.5.5/doc/html/compile.html"><code·class="inline">compile</code></a>·in·Compiler.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="0108155928-1">(</span><span·class="s">&quot;my_records.hrl&quot;</span><span·class="p"·data-group-id="0108155928-1">)</span><span·class="p">.</span><span·class="w">133 <a·href="../../lib/compiler-8.5.5/doc/html/compile.html"><code·class="inline">compile</code></a>·in·Compiler.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="7905045817-1">(</span><span·class="s">&quot;my_records.hrl&quot;</span><span·class="p"·data-group-id="7905045817-1">)</span><span·class="p">.</span><span·class="w">
134 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="0108155928-2">(</span><span·class="s">&quot;incdir/my_records.hrl&quot;</span><span·class="p"·data-group-id="0108155928-2">)</span><span·class="p">.</span><span·class="w">134 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="7905045817-2">(</span><span·class="s">&quot;incdir/my_records.hrl&quot;</span><span·class="p"·data-group-id="7905045817-2">)</span><span·class="p">.</span><span·class="w">
135 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="0108155928-3">(</span><span·class="s">&quot;/home/user/proj/my_records.hrl&quot;</span><span·class="p"·data-group-id="0108155928-3">)</span><span·class="p">.</span><span·class="w">135 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="7905045817-3">(</span><span·class="s">&quot;/home/user/proj/my_records.hrl&quot;</span><span·class="p"·data-group-id="7905045817-3">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="0108155928-4">(</span><span·class="s">&quot;$PROJ_ROOT/my_records.hrl&quot;</span><span·class="p"·data-group-id="0108155928-4">)</span><span·class="p">.</span></code></pre><p><code·class="inline">include_lib</code>·is·similar·to·<code·class="inline">include</code>,·but·is·not·to·point·out·an·absolute·file.136 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="7905045817-4">(</span><span·class="s">&quot;$PROJ_ROOT/my_records.hrl&quot;</span><span·class="p"·data-group-id="7905045817-4">)</span><span·class="p">.</span></code></pre><p><code·class="inline">include_lib</code>·is·similar·to·<code·class="inline">include</code>,·but·is·not·to·point·out·an·absolute·file.
137 Instead,·the·first·path·component·(possibly·after·variable·substitution)·is137 Instead,·the·first·path·component·(possibly·after·variable·substitution)·is
138 assumed·to·be·the·name·of·an·application.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1489965058-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1489965058-1">)</span><span·class="p">.</span></code></pre><p>The·code·server·uses·<code·class="inline">code:lib_dir(kernel)</code>·to·find·the·directory·of·the·current138 assumed·to·be·the·name·of·an·application.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1200125486-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1200125486-1">)</span><span·class="p">.</span></code></pre><p>The·code·server·uses·<code·class="inline">code:lib_dir(kernel)</code>·to·find·the·directory·of·the·current
139 (latest)·version·of·Kernel,·and·then·the·subdirectory·<code·class="inline">include</code>·is·searched·for139 (latest)·version·of·Kernel,·and·then·the·subdirectory·<code·class="inline">include</code>·is·searched·for
140 the·file·<code·class="inline">file.hrl</code>.</p><h2·id="defining-and-using-macros"·class="section-heading">140 the·file·<code·class="inline">file.hrl</code>.</p><h2·id="defining-and-using-macros"·class="section-heading">
141 ··<a·href="#defining-and-using-macros"·class="hover-link">141 ··<a·href="#defining-and-using-macros"·class="hover-link">
142 ····<i·class="ri-link-m"·aria-hidden="true"></i>142 ····<i·class="ri-link-m"·aria-hidden="true"></i>
143 ··</a>143 ··</a>
144 ··<span·class="text">Defining·and·Using·Macros</span>144 ··<span·class="text">Defining·and·Using·Macros</span>
145 </h2>145 </h2>
146 <p>A·macro·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="1393941594-1">(</span><span·class="n">Const</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Replacement</span><span·class="p"·data-group-id="1393941594-1">)</span><span·class="p">.</span><span·class="w"> 
147 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="1393941594-2">(</span><span·class="n">Func</span><span·class="p"·data-group-id="1393941594-3">(</span><span·class="n">Var1</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·414,·SHA:·b89e08257ba27f9d0b45e37e45a47c6c362c721c91c40b424a5da067d6468739·...·]146 <p>A·macro·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3841766061-1">(</span><span·class="n">Const</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·138,·SHA:·d845e15f272a7e0a436cb7cead0715437183c6c6695805267ad1586552b0294d·...·]
 147 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3841766061-2">(</span><span·class="n">Func</span><span·class="p"·data-group-id="3841766061-3">(</span><span·class="n">Var1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">VarN</span><span·class="p"·data-group-id="3841766061-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Replacement</span><span·class="p"·data-group-id="3841766061-2">)</span><span·class="p">.</span></code></pre><p>A·macro·definition·can·be·placed·anywhere·among·the·attributes·and·function
148 declarations·of·a·module,·but·the·definition·must·come·before·any·usage·of·the148 declarations·of·a·module,·but·the·definition·must·come·before·any·usage·of·the
149 macro.</p><p>If·a·macro·is·used·in·several·modules,·it·is·recommended·that·the·macro149 macro.</p><p>If·a·macro·is·used·in·several·modules,·it·is·recommended·that·the·macro
150 definition·is·placed·in·an·include·file.</p><p>A·macro·is·used·as·follows:</p><pre><code·class="text">?Const150 definition·is·placed·in·an·include·file.</p><p>A·macro·is·used·as·follows:</p><pre><code·class="text">?Const
151 ?Func(Arg1,...,ArgN)</code></pre><p>Macros·are·expanded·during·compilation.·A·simple·macro·<code·class="inline">?Const</code>·is·replaced·with151 ?Func(Arg1,...,ArgN)</code></pre><p>Macros·are·expanded·during·compilation.·A·simple·macro·<code·class="inline">?Const</code>·is·replaced·with
152 <code·class="inline">Replacement</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3832690019-1">(</span><span·class="n">TIMEOUT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p"·data-group-id="3832690019-1">)</span><span·class="p">.</span><span·class="w">152 <code·class="inline">Replacement</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="6782291259-1">(</span><span·class="n">TIMEOUT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p"·data-group-id="6782291259-1">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">153 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
154 </span><span·class="nf">call</span><span·class="p"·data-group-id="3832690019-2">(</span><span·class="n">Request</span><span·class="p"·data-group-id="3832690019-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 </span><span·class="nf">call</span><span·class="p"·data-group-id="6782291259-2">(</span><span·class="n">Request</span><span·class="p"·data-group-id="6782291259-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
155 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="3832690019-3">(</span><span·class="ss">refserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">TIMEOUT</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·296,·SHA:·383e9fb74a72608e71dd39d20986d6a4f7b62211a20f1d1f59e5f45262245060·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">155 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="6782291259-3">(</span><span·class="ss">refserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">TIMEOUT</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·296,·SHA:·303c425246e02f96b43463805aedbcda301e58ef9ca9df8d2bd0791112bfe77b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
156 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8981120936-2">(</span><span·class="ss">refserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p"·data-group-id="8981120936-2">)</span><span·class="p">.</span></code></pre><p>A·macro·<code·class="inline">?Func(Arg1,...,ArgN)</code>·is·replaced·with·<code·class="inline">Replacement</code>,·where·all156 ····</span><span·class="nc">server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8912928455-2">(</span><span·class="ss">refserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p"·data-group-id="8912928455-2">)</span><span·class="p">.</span></code></pre><p>A·macro·<code·class="inline">?Func(Arg1,...,ArgN)</code>·is·replaced·with·<code·class="inline">Replacement</code>,·where·all
157 occurrences·of·a·variable·<code·class="inline">Var</code>·from·the·macro·definition·are·replaced·with·the157 occurrences·of·a·variable·<code·class="inline">Var</code>·from·the·macro·definition·are·replaced·with·the
158 corresponding·argument·<code·class="inline">Arg</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2659830724-1">(</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="2659830724-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="2659830724-2">)</span><sp[·...·truncated·by·diffoscope;·len:·434,·SHA:·c09e7b98aa242d5dcc8d1205526ff0c879ab8348f8102e07bd998528e289180a·...·]-1">)</span><span·class="p">.</span><span·class="w">158 corresponding·argument·<code·class="inline">Arg</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="9712840099-1">(</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="9712840099-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="9712840099-2">)</span><sp[·...·truncated·by·diffoscope;·len:·434,·SHA:·22278ac0dc1c9fd3bbcd09808d317fc7ed8f218dee4df4fc13e385137f971b04·...·]-1">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">159 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
160 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2659830724-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="2659830724-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">160 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9712840099-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="9712840099-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
161 ····</span><span·class="o">?</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="2659830724-5">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="2659830724-5">)</span><span·class="p">,</span><span·class="w">161 ····</span><span·class="o">?</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="9712840099-5">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="9712840099-5">)</span><span·class="p">,</span><span·class="w">
162 ····</span><span·class="o">?</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="2659830724-6">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">123</span><span·class="p"·data-group-id="2659830724-6">)</span></code></pre><p>This·is·expanded·to:</p><pre><code·class="makeup·erlang"·translate[·...·truncated·by·diffoscope;·len:·151,·SHA:·495fa3c7c885df62b44227baf0ee55f4a52d0836a57a37a9097b4610d1aa488a·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 ····</span><span·class="o">?</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="9712840099-6">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">123</span><span·class="p"·data-group-id="9712840099-6">)</span></code></pre><p>This·is·expanded·to:</p><pre><code·class="makeup·erlang"·translate[·...·truncated·by·diffoscope;·len:·151,·SHA:·5c0285a9f90d8b10bf776e1277611de8532cceb59e004c4151c96c118beeb625·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ····</span><span·class="p"·data-group-id="3535627637-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="3535627637-2">}</span><span·class="p">,</span><span·class="w">163 ····</span><span·class="p"·data-group-id="4542589642-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="4542589642-2">}</span><span·class="p">,</span><span·class="w">
164 ····</span><span·class="p"·data-group-id="3535627637-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="n">X</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">123</span><span·class="p"·data-group-id="3535627637-3">}</span><span·class="p">.</span></code></pre><p>It·is·good·programming·practice,·but·not·mandatory,·to·ensure·that·a·macro164 ····</span><span·class="p"·data-group-id="4542589642-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="n">X</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">123</span><span·class="p"·data-group-id="4542589642-3">}</span><span·class="p">.</span></code></pre><p>It·is·good·programming·practice,·but·not·mandatory,·to·ensure·that·a·macro
165 definition·is·a·valid·Erlang·syntactic·form.</p><p>To·view·the·result·of·macro·expansion,·a·module·can·be·compiled·with·the·<code·class="inline">'P'</code>165 definition·is·a·valid·Erlang·syntactic·form.</p><p>To·view·the·result·of·macro·expansion,·a·module·can·be·compiled·with·the·<code·class="inline">'P'</code>
166 option.·<code·class="inline">compile:file(File,·['P'])</code>.·This·produces·a·listing·of·the·parsed·code166 option.·<code·class="inline">compile:file(File,·['P'])</code>.·This·produces·a·listing·of·the·parsed·code
167 after·preprocessing·and·parse·transforms,·in·the·file·<code·class="inline">File.P</code>.</p><h2·id="predefined-macros"·class="section-heading">167 after·preprocessing·and·parse·transforms,·in·the·file·<code·class="inline">File.P</code>.</p><h2·id="predefined-macros"·class="section-heading">
168 ··<a·href="#predefined-macros"·class="hover-link">168 ··<a·href="#predefined-macros"·class="hover-link">
169 ····<i·class="ri-link-m"·aria-hidden="true"></i>169 ····<i·class="ri-link-m"·aria-hidden="true"></i>
170 ··</a>170 ··</a>
171 ··<span·class="text">Predefined·Macros</span>171 ··<span·class="text">Predefined·Macros</span>
Offset 185, 29 lines modifiedOffset 185, 29 lines modified
185 ····<i·class="ri-link-m"·aria-hidden="true"></i>185 ····<i·class="ri-link-m"·aria-hidden="true"></i>
186 ··</a>186 ··</a>
187 ··<span·class="text">Macros·Overloading</span>187 ··<span·class="text">Macros·Overloading</span>
188 </h2>188 </h2>
189 <p>It·is·possible·to·overload·macros,·except·for·predefined·macros.·An·overloaded189 <p>It·is·possible·to·overload·macros,·except·for·predefined·macros.·An·overloaded
190 macro·has·more·than·one·definition,·each·with·a·different·number·of·arguments.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Support·for·overloading·of·macros·was·added·in·Erlang·5.7.5/OTP·R13B04.</p></section><p>A·macro·<code·class="inline">?Func(Arg1,...,ArgN)</code>·with·a·(possibly·empty)·list·of·arguments·results190 macro·has·more·than·one·definition,·each·with·a·different·number·of·arguments.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Support·for·overloading·of·macros·was·added·in·Erlang·5.7.5/OTP·R13B04.</p></section><p>A·macro·<code·class="inline">?Func(Arg1,...,ArgN)</code>·with·a·(possibly·empty)·list·of·arguments·results
191 in·an·error·message·if·there·is·at·least·one·definition·of·<code·class="inline">Func</code>·with191 in·an·error·message·if·there·is·at·least·one·definition·of·<code·class="inline">Func</code>·with
192 arguments,·but·none·with·N·arguments.</p><p>Assuming·these·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4633223904-1">(</span><span·class="n">F0</span><span·class="p"·data-group-id="4633223904-2">(</span><span·class="p"·data-group-id="4633223904-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·0a7be29a058512620b8099139b4f06e5157fd80782d9ef2025d2dbbf4eb110ea·...·]-1">)</span><span·class="p">.</span><span·class="w">192 arguments,·but·none·with·N·arguments.</p><p>Assuming·these·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="5804110288-1">(</span><span·class="n">F0</span><span·class="p"·data-group-id="5804110288-2">(</span><span·class="p"·data-group-id="5804110288-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·0a0dd9ccb43354b4ad7bc41dd98ecabf0aa43ced95b3a44dfc68ce97bea2acbd·...·]-1">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4633223904-3">(</span><span·class="n">F1</span><span·class="p"·data-group-id="4633223904-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="4633223904-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·3024b5f29935b9977775344f71cd13f369af56466e482255cea23a09905a27d1·...·]-3">)</span><span·class="p">.</span><span·class="w">193 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="5804110288-3">(</span><span·class="n">F1</span><span·class="p"·data-group-id="5804110288-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="5804110288-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·e6494348700efedd2041a4eaa798a9bb1aaea098b9f3f18a2ee56c744673ac1c·...·]-3">)</span><span·class="p">.</span><span·class="w">
194 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4633223904-5">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">m</span><span·class="p">:</span><span·class="ss">f</span><span·class="p"·data-group-id="4633223904-5">)</span><span·class="p">.</span></code></pr[·...·truncated·by·diffoscope;·len:·205,·SHA:·37ea7daa7063375b005eddc8a67609600a733a99bcec336266f7c7f2838621b3·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="5804110288-5">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">m</span><span·class="p">:</span><span·class="ss">f</span><span·class="p"·data-group-id="5804110288-5">)</span><span·class="p">.</span></code></pr[·...·truncated·by·diffoscope;·len:·205,·SHA:·98898c1355760c71e8e043b476aa4f703db1526211014de709d69563ef8c87a5·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ····</span><span·class="o">?</span><span·class="n">F0</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·No,·an·empty·list·of·arguments·expected.</span><span·class="w">195 ····</span><span·class="o">?</span><span·class="n">F0</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·No,·an·empty·list·of·arguments·expected.</span><span·class="w">
  
196 </span><span·class="nf">f1</span><span·class="p"·data-group-id="2695650940-2">(</span><span·class="n">A</span><span·class="p"·data-group-id="2695650940-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 </span><span·class="nf">f1</span><span·class="p"·data-group-id="1158429938-2">(</span><span·class="n">A</span><span·class="p"·data-group-id="1158429938-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="o">?</span><span·class="n">F1</span><span·class="p"·data-group-id="2695650940-3">(</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="2695650940-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·No,·exactly·one·argument·expected.</span></code></pre><p>On·the·other·hand,</p><pre><code·class="text">f()·-&gt;197 ····</span><span·class="o">?</span><span·class="n">F1</span><span·class="p"·data-group-id="1158429938-3">(</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="1158429938-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·No,·exactly·one·argument·expected.</span></code></pre><p>On·the·other·hand,</p><pre><code·class="text">f()·-&gt;
198 ····?C().</code></pre><p>is·expanded·to</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="4540280777-1">(</span><span·class="p"·data-group-id="4540280777-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 ····?C().</code></pre><p>is·expanded·to</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="0247353869-1">(</span><span·class="p"·data-group-id="0247353869-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="nc">m</span><span·class="p">:</span><span·class="nf">f</span><span·class="p"·data-group-id="4540280777-2">(</span><span·class="p"·data-group-id="4540280777-2">)</span><span·class="p">.</span></code></pre><h2·id="removing-a-macro-definition"·class="section-heading">199 ····</span><span·class="nc">m</span><span·class="p">:</span><span·class="nf">f</span><span·class="p"·data-group-id="0247353869-2">(</span><span·class="p"·data-group-id="0247353869-2">)</span><span·class="p">.</span></code></pre><h2·id="removing-a-macro-definition"·class="section-heading">
200 ··<a·href="#removing-a-macro-definition"·class="hover-link">200 ··<a·href="#removing-a-macro-definition"·class="hover-link">
201 ····<i·class="ri-link-m"·aria-hidden="true"></i>201 ····<i·class="ri-link-m"·aria-hidden="true"></i>
202 ··</a>202 ··</a>
203 ··<span·class="text">Removing·a·macro·definition</span>203 ··<span·class="text">Removing·a·macro·definition</span>
204 </h2>204 </h2>
205 <p>A·definition·of·macro·can·be·removed·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">undef</span><span·class="p"·data-group-id="8269219815-1">(</span><span·class="n">Macro</span><span·class="p"·data-group-id="8269219815-1">)</span><span·class="p">.</span></code></pre><h2·id="conditional-compilation"·class="section-heading">205 <p>A·definition·of·macro·can·be·removed·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">undef</span><span·class="p"·data-group-id="2214577873-1">(</span><span·class="n">Macro</span><span·class="p"·data-group-id="2214577873-1">)</span><span·class="p">.</span></code></pre><h2·id="conditional-compilation"·class="section-heading">
206 ··<a·href="#conditional-compilation"·class="hover-link">206 ··<a·href="#conditional-compilation"·class="hover-link">
207 ····<i·class="ri-link-m"·aria-hidden="true"></i>207 ····<i·class="ri-link-m"·aria-hidden="true"></i>
208 ··</a>208 ··</a>
209 ··<span·class="text">Conditional·Compilation</span>209 ··<span·class="text">Conditional·Compilation</span>
210 </h2>210 </h2>
211 <p>The·following·macro·directives·support·conditional·compilation:</p><ul><li><p><strong><code·class="inline">-ifdef(Macro).</code></strong>·-·Evaluate·the·following·lines·only·if·<code·class="inline">Macro</code>·is211 <p>The·following·macro·directives·support·conditional·compilation:</p><ul><li><p><strong><code·class="inline">-ifdef(Macro).</code></strong>·-·Evaluate·the·following·lines·only·if·<code·class="inline">Macro</code>·is
212 defined.</p></li><li><p><strong><code·class="inline">-ifndef(Macro).</code></strong>·-·Evaluate·the·following·lines·only·if·<code·class="inline">Macro</code>·is·not212 defined.</p></li><li><p><strong><code·class="inline">-ifndef(Macro).</code></strong>·-·Evaluate·the·following·lines·only·if·<code·class="inline">Macro</code>·is·not
Offset 219, 43 lines modifiedOffset 219, 43 lines modified
219 true,·and·the·<code·class="inline">Condition</code>·evaluates·to·true,·the·lines·following·the·<code·class="inline">elif</code>219 true,·and·the·<code·class="inline">Condition</code>·evaluates·to·true,·the·lines·following·the·<code·class="inline">elif</code>
220 are·evaluated·instead.</p></li><li><p><strong><code·class="inline">-endif.</code></strong>·-·Specifies·the·end·of·a·series·of·control·flow·directives.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Macro·directives·cannot·be·used·inside·functions.</p></section><p>Syntactically,·the·<code·class="inline">Condition</code>·in·<code·class="inline">if</code>·and·<code·class="inline">elif</code>·must·be·a220 are·evaluated·instead.</p></li><li><p><strong><code·class="inline">-endif.</code></strong>·-·Specifies·the·end·of·a·series·of·control·flow·directives.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Macro·directives·cannot·be·used·inside·functions.</p></section><p>Syntactically,·the·<code·class="inline">Condition</code>·in·<code·class="inline">if</code>·and·<code·class="inline">elif</code>·must·be·a
221 <a·href="expressions.html#guard-expressions">guard·expression</a>.·Other·constructs·(such·as221 <a·href="expressions.html#guard-expressions">guard·expression</a>.·Other·constructs·(such·as
222 a·<code·class="inline">case</code>·expression)·result·in·a·compilation·error.</p><p>As·opposed·to·the·standard·guard·expressions,·an·expression·in·an·<code·class="inline">if</code>·and222 a·<code·class="inline">case</code>·expression)·result·in·a·compilation·error.</p><p>As·opposed·to·the·standard·guard·expressions,·an·expression·in·an·<code·class="inline">if</code>·and
223 <code·class="inline">elif</code>·also·supports·calling·the·psuedo-function·<code·class="inline">defined(Name)</code>,·which·tests223 <code·class="inline">elif</code>·also·supports·calling·the·psuedo-function·<code·class="inline">defined(Name)</code>,·which·tests
224 whether·the·<code·class="inline">Name</code>·argument·is·the·name·of·a·previously·defined·macro.224 whether·the·<code·class="inline">Name</code>·argument·is·the·name·of·a·previously·defined·macro.
225 <code·class="inline">defined(Name)</code>·evaluates·to·<code·class="inline">true</code>·if·the·macro·is·defined·and·<code·class="inline">false</code>225 <code·class="inline">defined(Name)</code>·evaluates·to·<code·class="inline">true</code>·if·the·macro·is·defined·and·<code·class="inline">false</code>
226 otherwise.·An·attempt·to·call·other·functions·results·in·a·compilation·error.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2669250888-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="2669250888-1">)</span><span·class="p">.</span><span·class="w">226 otherwise.·An·attempt·to·call·other·functions·results·in·a·compilation·error.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7053251027-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="7053251027-1">)</span><span·class="p">.</span><span·class="w">
227 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">227 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
228 </span><span·class="w">228 </span><span·class="w">
229 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="2669250888-2">(</span><span·class="ss">debug</span><span·class="p"·data-group-id="2669250888-2">)</span><span·class="p">.</span><span·class="w">229 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7053251027-2">(</span><span·class="ss">debug</span><span·class="p"·data-group-id="7053251027-2">)</span><span·class="p">.</span><span·class="w">
230 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2669250888-3">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="2669250888-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="2669250888-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><spa[·...·truncated·by·diffoscope;·len:·740,·SHA:·7d8c6b9d8a3203508ad3f17ed0ff65f267c8dd729c3770ad6be8c199e1edce04·...·]-3">)</span><span·class="p">.</span><span·class="w">230 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="7053251027-3">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="7053251027-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="7053251027-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><spa[·...·truncated·by·diffoscope;·len:·740,·SHA:·ae6528c103ec6cc90df865ecfa44a9e2d5c83494178136dc5477942284981bca·...·]-3">)</span><span·class="p">.</span><span·class="w">
231 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">231 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
232 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2669250888-7">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="2669250888-8">(</span><span·class="n">X</span><span·class="p"·data-group-id="2669250888-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·15537a907a45d844f847a82e24fce5526f80322c6be221a2ccbe6cd633e478b7·...·]-7">)</span><span·class="p">.</span><span·class="w">232 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="7053251027-7">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="7053251027-8">(</span><span·class="n">X</span><span·class="p"·data-group-id="7053251027-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·f7b2ca3df799be84793e059c9367e688c1f6d35919d9d3f08e33a83885c261e7·...·]-7">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">233 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
  
234 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>When·trace·output·is·desired,·<code·class="inline">debug</code>·is·to·be·defined·when·the·module·<code·class="inline">m</code>·is234 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>When·trace·output·is·desired,·<code·class="inline">debug</code>·is·to·be·defined·when·the·module·<code·class="inline">m</code>·is
235 compiled:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlc·-Ddebug·m.erl</span><span·class="w">235 compiled:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlc·-Ddebug·m.erl</span><span·class="w">
  
236 </span><span·class="ow">or</span><span·class="w">236 </span><span·class="ow">or</span><span·class="w">
  
237 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">c</span><span·class="p"·data-group-id="4538519573-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4538519573-2">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·834c2505a51ddca000582f5aada2340d852ba6111c40dcb743da4ca1967b7bda·...·]-1">)</span><span·class="p">.</span><span·class="w">237 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">c</span><span·class="p"·data-group-id="5443403657-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5443403657-2">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·9d5d6ee90dc55fa466908f95094c3e047746c1d1a18d8e18066422f60f6e49a5·...·]-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="4538519573-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">m</span><span·class="p"·data-group-id="4538519573-3">}</span></code></pre><p><code·class="inline">?LOG(Arg)</code>·is·then·expanded·to·a·call·to·<a·href="../../lib/stdlib-6.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·and·provide·the·user238 </span><span·class="p"·data-group-id="5443403657-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">m</span><span·class="p"·data-group-id="5443403657-3">}</span></code></pre><p><code·class="inline">?LOG(Arg)</code>·is·then·expanded·to·a·call·to·<a·href="../../lib/stdlib-6.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·and·provide·the·user
239 with·some·simple·trace·output.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0471950465-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="0471950465-1">)</span><span·class="w">239 with·some·simple·trace·output.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3064391371-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="3064391371-1">)</span><span·class="w">
240 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">240 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p">-</span><span·class="na">if</span><span·class="p"·data-group-id="0471950465-2">(</span><span·class="o">?</span><span·class="n">OTP_RELEASE</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">25</span><span·class="p"·data-group-id="0471950465-2">)</span><span·class="p">.</span><span·class="w">241 </span><span·class="p">-</span><span·class="na">if</span><span·class="p"·data-group-id="3064391371-2">(</span><span·class="o">?</span><span·class="n">OTP_RELEASE</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">25</span><span·class="p"·data-group-id="3064391371-2">)</span><span·class="p">.</span><span·class="w">
242 </span><span·class="c1">%%·Code·that·will·work·in·OTP·25·or·higher</span><span·class="w">242 </span><span·class="c1">%%·Code·that·will·work·in·OTP·25·or·higher</span><span·class="w">
243 </span><span·class="p">-</span><span·class="na">elif</span><span·class="p"·data-group-id="0471950465-3">(</span><span·class="o">?</span><span·class="n">OTP_RELEASE</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">26</span><span·class="p"·data-group-id="0471950465-3">)</span><span·class="p">.</span><span·class="w">243 </span><span·class="p">-</span><span·class="na">elif</span><span·class="p"·data-group-id="3064391371-3">(</span><span·class="o">?</span><span·class="n">OTP_RELEASE</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">26</span><span·class="p"·data-group-id="3064391371-3">)</span><span·class="p">.</span><span·class="w">
244 </span><span·class="c1">%%·Code·that·will·work·in·OTP·26·or·higher</span><span·class="w">244 </span><span·class="c1">%%·Code·that·will·work·in·OTP·26·or·higher</span><span·class="w">
245 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">245 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
246 </span><span·class="c1">%%·Code·that·will·work·in·OTP·24·or·lower.</span><span·class="w">246 </span><span·class="c1">%%·Code·that·will·work·in·OTP·24·or·lower.</span><span·class="w">
247 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">247 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>This·code·uses·the·<code·class="inline">OTP_RELEASE</code>·macro·to·conditionally·select·code·depending·on248 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>This·code·uses·the·<code·class="inline">OTP_RELEASE</code>·macro·to·conditionally·select·code·depending·on
249 release.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6044632811-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="6044632811-1">)</span><span·class="w">249 release.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9807106131-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9807106131-1">)</span><span·class="w">
250 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">250 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p">-</span><span·class="na">if</span><span·class="p"·data-group-id="6044632811-2">(</span><span·class="o">?</span><span·class="n">OTP_RELEASE</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·211,·SHA:·3e6f722b13afb2fc54275066ccd03454140b8e62f3bf58fcbecd5c67e04220f8·...·]1-2">)</span><span·class="p">.</span><span·class="w">251 </span><span·class="p">-</span><span·class="na">if</span><span·class="p"·data-group-id="9807106131-2">(</span><span·class="o">?</span><span·class="n">OTP_RELEASE</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·211,·SHA:·0d5b047dcd3432c29bf1ac574d7aebd270eb9d36661e662f0bdca7587dca9653·...·]1-2">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="c1">%%·Debugging·code·that·requires·OTP·26·or·later.</span><span·class="w">252 </span><span·class="c1">%%·Debugging·code·that·requires·OTP·26·or·later.</span><span·class="w">
253 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">253 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
254 </span><span·class="c1">%%·Non-debug·code·that·works·in·any·release.</span><span·class="w">254 </span><span·class="c1">%%·Non-debug·code·that·works·in·any·release.</span><span·class="w">
Max diff block lines reached; 18102/59703 bytes (30.32%) of diff not shown.
34.8 KB
./usr/share/doc/erlang-doc/html/doc/system/maps.html
    
Offset 148, 16 lines modifiedOffset 148, 16 lines modified
148 single·function·that·constructs·the·map·using·the·map·syntax·and·always·use148 single·function·that·constructs·the·map·using·the·map·syntax·and·always·use
149 it.</p></li><li><p>Always·update·the·map·using·the·<code·class="inline">:=</code>·operator·(that·is,·requiring·that·an149 it.</p></li><li><p>Always·update·the·map·using·the·<code·class="inline">:=</code>·operator·(that·is,·requiring·that·an
150 element·with·that·key·already·exists).·The·<code·class="inline">:=</code>·operator·is·slightly·more150 element·with·that·key·already·exists).·The·<code·class="inline">:=</code>·operator·is·slightly·more
151 efficient,·and·it·helps·catching·mispellings·of·keys.</p></li><li><p>Whenever·possible,·match·multiple·map·elements·at·once.</p></li><li><p>Whenever·possible,·update·multiple·map·elements·at·once.</p></li><li><p>Avoid·default·values·and·the·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·function.·If·there·are·default151 efficient,·and·it·helps·catching·mispellings·of·keys.</p></li><li><p>Whenever·possible,·match·multiple·map·elements·at·once.</p></li><li><p>Whenever·possible,·update·multiple·map·elements·at·once.</p></li><li><p>Avoid·default·values·and·the·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·function.·If·there·are·default
152 values,·sharing·of·keys·between·different·instances·of·the·map·will·be·less152 values,·sharing·of·keys·between·different·instances·of·the·map·will·be·less
153 effective,·and·it·is·not·possible·to·match·multiple·elements·having·default153 effective,·and·it·is·not·possible·to·match·multiple·elements·having·default
154 values·in·one·go.</p></li><li><p>To·avoid·having·to·deal·with·a·map·that·may·lack·some·keys,·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·can154 values·in·one·go.</p></li><li><p>To·avoid·having·to·deal·with·a·map·that·may·lack·some·keys,·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·can
155 efficiently·add·multiple·default·values.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">DefaultMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5043220403-1">#{</span><span·class="ss">shoe_size</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">editor</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·126,·SHA:·ed73defaffe7af2d20d74f02f98c2268612604072d511d88771a77182a6a217c·...·]-1">}</span><span·class="p">,</span><span·class="w">155 efficiently·add·multiple·default·values.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">DefaultMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9302262768-1">#{</span><span·class="ss">shoe_size</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">editor</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·126,·SHA:·c5b83ca6ce9d13852e22e9d72247bf2008b50649d01415bd4cc09dcf0c44a6b2·...·]-1">}</span><span·class="p">,</span><span·class="w">
156 </span><span·class="n">MapWithDefaultsApplied</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">merge</span><span·class="p"·data-group-id="5043220403-2">(</span><span·class="n">DefaultMap</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherMap</span><span·class="p"·data-group-id="5043220403-2">)</span></code></pre></li></ul><h2·id="using-maps-as-dictionaries"·class="section-heading">156 </span><span·class="n">MapWithDefaultsApplied</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">merge</span><span·class="p"·data-group-id="9302262768-2">(</span><span·class="n">DefaultMap</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherMap</span><span·class="p"·data-group-id="9302262768-2">)</span></code></pre></li></ul><h2·id="using-maps-as-dictionaries"·class="section-heading">
157 ··<a·href="#using-maps-as-dictionaries"·class="hover-link">157 ··<a·href="#using-maps-as-dictionaries"·class="hover-link">
158 ····<i·class="ri-link-m"·aria-hidden="true"></i>158 ····<i·class="ri-link-m"·aria-hidden="true"></i>
159 ··</a>159 ··</a>
160 ··<span·class="text">Using·Maps·as·Dictionaries</span>160 ··<span·class="text">Using·Maps·as·Dictionaries</span>
161 </h2>161 </h2>
162 <p>Using·a·map·as·a·dictionary·implies·the·following·usage·pattern:</p><ul><li>Keys·are·usually·variables·not·known·at·compile-time.</li><li>There·can·be·any·number·of·elements·in·the·map.</li><li>Usually,·no·more·than·one·element·is·looked·up·or·updated·at·once.</li></ul><p>Given·that·usage·pattern,·the·difference·in·performance·between·using·the·map162 <p>Using·a·map·as·a·dictionary·implies·the·following·usage·pattern:</p><ul><li>Keys·are·usually·variables·not·known·at·compile-time.</li><li>There·can·be·any·number·of·elements·in·the·map.</li><li>Usually,·no·more·than·one·element·is·looked·up·or·updated·at·once.</li></ul><p>Given·that·usage·pattern,·the·difference·in·performance·between·using·the·map
163 syntax·and·the·maps·module·is·usually·small.·Therefore,·which·one·to·use·is163 syntax·and·the·maps·module·is·usually·small.·Therefore,·which·one·to·use·is
Offset 167, 18 lines modifiedOffset 167, 18 lines modified
167 choice.</li></ul><h2·id="using-maps-as-sets"·class="section-heading">167 choice.</li></ul><h2·id="using-maps-as-sets"·class="section-heading">
168 ··<a·href="#using-maps-as-sets"·class="hover-link">168 ··<a·href="#using-maps-as-sets"·class="hover-link">
169 ····<i·class="ri-link-m"·aria-hidden="true"></i>169 ····<i·class="ri-link-m"·aria-hidden="true"></i>
170 ··</a>170 ··</a>
171 ··<span·class="text">Using·Maps·as·Sets</span>171 ··<span·class="text">Using·Maps·as·Sets</span>
172 </h2>172 </h2>
173 <p>Starting·in·OTP·24,·the·<a·href="../../lib/stdlib-6.2/doc/html/sets.html"><code·class="inline">sets</code></a>·module·has·an·option·to·represent·sets·as·maps.173 <p>Starting·in·OTP·24,·the·<a·href="../../lib/stdlib-6.2/doc/html/sets.html"><code·class="inline">sets</code></a>·module·has·an·option·to·represent·sets·as·maps.
174 Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="8505694068-1">(</span><span·class="p"·data-group-id="8505694068-2">[</span><span·class="p"·data-group-id="8505694068-3">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8505694068-3">}</[·...·truncated·by·diffoscope;·len:·99,·SHA:·1c00f1668ae73fc8ae271988c36094bf7f6c190ccc765e2098ed90bf540c5a4f·...·]-1">)</span><span·class="p">.</span><span·class="w">174 Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="3555214421-1">(</span><span·class="p"·data-group-id="3555214421-2">[</span><span·class="p"·data-group-id="3555214421-3">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3555214421-3">}</[·...·truncated·by·diffoscope;·len:·99,·SHA:·596226029c792d40bf8e1358759f721d48390edba3dc87a97fc56c468bf37509·...·]-1">)</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p"·data-group-id="8505694068-4">#{</span><span·class="p"·data-group-id="8505694068-4">}</span><span·class="gp·unselectable">175 </span><span·class="p"·data-group-id="3555214421-4">#{</span><span·class="p"·data-group-id="3555214421-4">}</span><span·class="gp·unselectable">
176 2&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="8505694068-5">(</span><span·class="p"·data-group-id="8505694068-6">[</span><span·class="ss">x</span><span·class="p">,</span><span·class="ss">y</span><span·class="p">,</span><span·class="ss">z</span><span·class="p"·data-group-id="8505694068-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8505694068-7">[</span><span·class="p"·data-group-id="8505694068-8">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8505694068-8">}</span><span·class="p"·data-group-id="8505694068-7">]</span><span·class="p"·data-group-id="8505694068-5">)</span><span·class="p">.</span><span·class="w"> 
177 </span><span·class="p"·data-group-id="8505694068-9">#{</span><span·class="ss">x</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8505694068-10">[</span><span·class="p"·data-group-id="850569406[·...·truncated·by·diffoscope;·len:·655,·SHA:·e7b170eaf1d7c79eacc8f849db8eddacc00482e222010dfaf78bac16c2a8cdaf·...·]176 2&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="3555214421-5">(</span><span·class="p"·data-group-id="3555214421-6">[</span><span·class="ss">x</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·557,·SHA:·b7f6ad72f258e8f5ecc2485c4900797323a1d264ff1b71928c7516f8c2bb5506·...·]
 177 </span><span·class="p"·data-group-id="3555214421-9">#{</span><span·class="ss">x</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3555214421-10">[</span><span·class="p"·data-group-id="3555214421-10">]</span><span·class="p">,</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3555214421-11">[</span><span·class="p"·data-group-id="3555214421-11">]</span><span·class="p">,</span><span·class="ss">z</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3555214421-12">[</span><span·class="p"·data-group-id="3555214421-12">]</span><span·class="p"·data-group-id="3555214421-9">}</span></code></pre><p><code·class="inline">sets</code>·backed·by·maps·is·generally·the·most·efficient·set·representation,·with·a
178 few·possible·exceptions:</p><ul><li><a·href="../../lib/stdlib-6.2/doc/html/ordsets.html#intersection/2"><code·class="inline">ordsets:intersection/2</code></a>·can·be·more·efficient·than·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#intersection/2"><code·class="inline">sets:intersection/2</code></a>.·If178 few·possible·exceptions:</p><ul><li><a·href="../../lib/stdlib-6.2/doc/html/ordsets.html#intersection/2"><code·class="inline">ordsets:intersection/2</code></a>·can·be·more·efficient·than·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#intersection/2"><code·class="inline">sets:intersection/2</code></a>.·If
179 the·intersection·operation·is·frequently·used·and·operations·that·operate·on·a179 the·intersection·operation·is·frequently·used·and·operations·that·operate·on·a
180 single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·are·avoided,·<a·href="../../lib/stdlib-6.2/doc/html/ordsets.html"><code·class="inline">ordsets</code></a>·can180 single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·are·avoided,·<a·href="../../lib/stdlib-6.2/doc/html/ordsets.html"><code·class="inline">ordsets</code></a>·can
181 be·a·better·choice·than·<a·href="../../lib/stdlib-6.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·intersection·operation·is·frequently·used·and·operations·that·operate181 be·a·better·choice·than·<a·href="../../lib/stdlib-6.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·intersection·operation·is·frequently·used·and·operations·that·operate
182 on·a·single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·must·also·be·efficient,182 on·a·single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·must·also·be·efficient,
183 <a·href="../../lib/stdlib-6.2/doc/html/gb_sets.html"><code·class="inline">gb_sets</code></a>·can·potentially·be·a·better·choice·than·<a·href="../../lib/stdlib-6.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·elements·of·the·set·are·integers·in·a·fairly·compact·range,·the·set·can183 <a·href="../../lib/stdlib-6.2/doc/html/gb_sets.html"><code·class="inline">gb_sets</code></a>·can·potentially·be·a·better·choice·than·<a·href="../../lib/stdlib-6.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·elements·of·the·set·are·integers·in·a·fairly·compact·range,·the·set·can
184 be·represented·as·an·integer·where·each·bit·represents·an·element·in·the·set.184 be·represented·as·an·integer·where·each·bit·represents·an·element·in·the·set.
Offset 203, 18 lines modifiedOffset 203, 18 lines modified
203 for·the·runtime·system).</p></li><li><p><strong>N</strong>·-·The·number·of·elements·in·the·map.</p></li><li><p><strong>Keys</strong>·-·A·tuple·with·keys·of·the·map:·<code·class="inline">{Key1,...,KeyN}</code>.·The·keys·are203 for·the·runtime·system).</p></li><li><p><strong>N</strong>·-·The·number·of·elements·in·the·map.</p></li><li><p><strong>Keys</strong>·-·A·tuple·with·keys·of·the·map:·<code·class="inline">{Key1,...,KeyN}</code>.·The·keys·are
204 sorted.</p></li><li><p><strong>Value1</strong>·-·The·value·corresponding·to·the·first·key·in·the·key·tuple.</p></li><li><p><strong>ValueN</strong>·-·The·value·corresponding·to·the·last·key·in·the·key·tuple.</p></li></ul><p>As·an·example,·let·us·look·at·how·the·map·<code·class="inline">#{a·=&gt;·foo,·z·=&gt;·bar}</code>·is204 sorted.</p></li><li><p><strong>Value1</strong>·-·The·value·corresponding·to·the·first·key·in·the·key·tuple.</p></li><li><p><strong>ValueN</strong>·-·The·value·corresponding·to·the·last·key·in·the·key·tuple.</p></li></ul><p>As·an·example,·let·us·look·at·how·the·map·<code·class="inline">#{a·=&gt;·foo,·z·=&gt;·bar}</code>·is
205 represented:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·left;">4</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>2</em></td><td·style="text-align:·center;"><code·class="inline">{a,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·left;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·z·=&gt;·bar}</em></p><p>Let·us·update·the·map:·<code·class="inline">M#{q·=&gt;·baz}</code>.·The·map·now·looks·like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bar}</em></p><p>Finally,·change·the·value·of·one·element:·<code·class="inline">M#{z·:=·bird}</code>.·The·map·now·looks205 represented:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·left;">4</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>2</em></td><td·style="text-align:·center;"><code·class="inline">{a,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·left;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·z·=&gt;·bar}</em></p><p>Let·us·update·the·map:·<code·class="inline">M#{q·=&gt;·baz}</code>.·The·map·now·looks·like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bar}</em></p><p>Finally,·change·the·value·of·one·element:·<code·class="inline">M#{z·:=·bird}</code>.·The·map·now·looks
206 like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bird</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bird}</em></p><p>When·the·value·for·an·existing·key·is·updated,·the·key·tuple·is·not·updated,206 like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bird</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bird}</em></p><p>When·the·value·for·an·existing·key·is·updated,·the·key·tuple·is·not·updated,
207 allowing·the·key·tuple·to·be·shared·with·other·instances·of·the·map·that·have207 allowing·the·key·tuple·to·be·shared·with·other·instances·of·the·map·that·have
208 the·same·keys.·In·fact,·the·key·tuple·can·be·shared·between·all·maps·with·the208 the·same·keys.·In·fact,·the·key·tuple·can·be·shared·between·all·maps·with·the
209 same·keys·with·some·care.·To·arrange·that,·define·a·function·that·returns·a·map.209 same·keys·with·some·care.·To·arrange·that,·define·a·function·that·returns·a·map.
210 For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">new</span><span·class="p"·data-group-id="7217024658-1">(</span><span·class="p"·data-group-id="7217024658-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">new</span><span·class="p"·data-group-id="8362275538-1">(</span><span·class="p"·data-group-id="8362275538-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="p"·data-group-id="7217024658-2">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·299,·SHA:·3687b03f7253e5607639931ea31abc4d4127261f75ced797fd89ca2fdce1023f·...·]8-2">}</span><span·class="p">.</span></code></pre><p>Defined·like·this,·the·key·tuple·<code·class="inline">{a,b,c}</code>·will·be·a·global·literal.·To·ensure211 ····</span><span·class="p"·data-group-id="8362275538-2">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·299,·SHA:·e80b5d9bf147e7d2ee54245ef83c83f538064a593372da71bba00248496d44c3·...·]8-2">}</span><span·class="p">.</span></code></pre><p>Defined·like·this,·the·key·tuple·<code·class="inline">{a,b,c}</code>·will·be·a·global·literal.·To·ensure
212 that·the·key·tuple·is·shared·when·creating·an·instance·of·the·map,·always·call212 that·the·key·tuple·is·shared·when·creating·an·instance·of·the·map,·always·call
213 <code·class="inline">new()</code>·and·modify·the·returned·map:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p"·data-group-id="8323673639-1">(</span><span·class="n">SOME_MODULE</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="8323673639-2">(</span><span·class="p"·data-group-id="8323673639-2">)</span><span·class="p"·data-group-id="8323673639-1[·...·truncated·by·diffoscope;·len:·228,·SHA:·4d437aa281f925006b06d26bbe2fa8b15a87ea7adde5f9515bcd00b4211053be·...·]9-3">}</span><span·class="p">.</span></code></pre><p>Using·the·map·syntax·with·small·maps·is·particularly·efficient.·As·long·as·the213 <code·class="inline">new()</code>·and·modify·the·returned·map:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p"·data-group-id="0659271729-1">(</span><span·class="n">SOME_MODULE</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0659271729-2">(</span><span·class="p"·data-group-id="0659271729-2">)</span><span·class="p"·data-group-id="0659271729-1[·...·truncated·by·diffoscope;·len:·228,·SHA:·daa1b2258917bb1ec4c2a37c574d84d3aa18a40b1d0b66e6d7c7b6c779fc48ef·...·]9-3">}</span><span·class="p">.</span></code></pre><p>Using·the·map·syntax·with·small·maps·is·particularly·efficient.·As·long·as·the
214 keys·are·known·at·compile-time,·the·map·is·updated·in·one·go,·making·the·time·to214 keys·are·known·at·compile-time,·the·map·is·updated·in·one·go,·making·the·time·to
215 update·a·map·essentially·constant·regardless·of·the·number·of·keys·updated.·The215 update·a·map·essentially·constant·regardless·of·the·number·of·keys·updated.·The
216 same·goes·for·matching.·(When·the·keys·are·variables,·one·or·more·of·the·keys216 same·goes·for·matching.·(When·the·keys·are·variables,·one·or·more·of·the·keys
217 could·be·identical,·so·the·operations·need·to·be·performed·sequentially·from217 could·be·identical,·so·the·operations·need·to·be·performed·sequentially·from
218 left·to·right.)</p><p>The·memory·size·for·a·small·map·is·the·size·of·all·keys·and·values·plus·5·words.218 left·to·right.)</p><p>The·memory·size·for·a·small·map·is·the·size·of·all·keys·and·values·plus·5·words.
219 See·<a·href="memory.html">Memory</a>·for·more·information·about·memory·sizes.</p><h3·id="how-large-maps-are-implemented"·class="section-heading">219 See·<a·href="memory.html">Memory</a>·for·more·information·about·memory·sizes.</p><h3·id="how-large-maps-are-implemented"·class="section-heading">
220 ··<a·href="#how-large-maps-are-implemented"·class="hover-link">220 ··<a·href="#how-large-maps-are-implemented"·class="hover-link">
Offset 241, 21 lines modifiedOffset 241, 21 lines modified
241 ··<a·href="#using-the-map-syntax"·class="hover-link">241 ··<a·href="#using-the-map-syntax"·class="hover-link">
242 ····<i·class="ri-link-m"·aria-hidden="true"></i>242 ····<i·class="ri-link-m"·aria-hidden="true"></i>
243 ··</a>243 ··</a>
244 ··<span·class="text">Using·the·Map·Syntax</span>244 ··<span·class="text">Using·the·Map·Syntax</span>
245 </h2>245 </h2>
246 <p>Using·the·map·syntax·is·usually·slightly·more·efficient·than·using·the246 <p>Using·the·map·syntax·is·usually·slightly·more·efficient·than·using·the
247 corresponding·function·in·the·<a·href="../../lib/stdlib-6.2/doc/html/maps.html"><code·class="inline">maps</code></a>·module.</p><p>The·gain·in·efficiency·for·the·map·syntax·is·more·noticeable·for·the·following247 corresponding·function·in·the·<a·href="../../lib/stdlib-6.2/doc/html/maps.html"><code·class="inline">maps</code></a>·module.</p><p>The·gain·in·efficiency·for·the·map·syntax·is·more·noticeable·for·the·following
248 operations·that·can·only·be·achieved·using·the·map·syntax:</p><ul><li>Matching·multiple·literal·keys</li><li>Updating·multiple·literal·keys</li><li>Adding·multiple·literal·keys·to·a·map</li></ul><p>For·example:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map1</span><span·class="p"·data-group-id="2625756273-1">#{</span><span·class="ss">x</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">y</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·820,·SHA:·84a7f99690855b8bc1a042ca962b3d1e3cbb4974d6935680661ed193d4811229·...·]-1">)</span><span·class="p">,</span><span·class="w">248 operations·that·can·only·be·achieved·using·the·map·syntax:</p><ul><li>Matching·multiple·literal·keys</li><li>Updating·multiple·literal·keys</li><li>Adding·multiple·literal·keys·to·a·map</li></ul><p>For·example:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map1</span><span·class="p"·data-group-id="0273362398-1">#{</span><span·class="ss">x</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">y</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·820,·SHA:·c46048c5056bc80d4bd0cc5e2a3b69dc1d31506d2ddcec5b32b30a6c385bb81c·...·]-1">)</span><span·class="p">,</span><span·class="w">
249 </span><span·class="n">Map3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">update</span><span·class="p"·data-group-id="5941511064-2">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Map2</span><span·class="p"·data-group-id="5941511064-2">)</span><span·class="p">,</span><span·class="w">249 </span><span·class="n">Map3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">update</span><span·class="p"·data-group-id="2998633689-2">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Map2</span><span·class="p"·data-group-id="2998633689-2">)</span><span·class="p">,</span><span·class="w">
250 </span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">update</span><span·class="p"·data-group-id="5941511064-3">(</span><span·class="ss">z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Map3</span><span·class="p"·data-group-id="5941511064-3">)</span></code></pre><p>If·the·map·is·a·small·map,·the·first·example·runs·roughly·three·times·as·fast.</p><p>Note·that·for·variable·keys,·the·elements·are·updated·sequentially·from·left·to250 </span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">update</span><span·class="p"·data-group-id="2998633689-3">(</span><span·class="ss">z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Map3</span><span·class="p"·data-group-id="2998633689-3">)</span></code></pre><p>If·the·map·is·a·small·map,·the·first·example·runs·roughly·three·times·as·fast.</p><p>Note·that·for·variable·keys,·the·elements·are·updated·sequentially·from·left·to
251 right.·For·example,·given·the·following·update·with·variable·keys:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map1</span><span·class="p"·data-group-id="4757222985-1">#{</span><span·class="n">Key1</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key2</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·276,·SHA:·d46164d7535ce2b436b83ff948cba149050280b5d2f75de2b87f85a32ed43191·...·]-1">}</span></code></pre><p>the·compiler·rewrites·it·like·this·to·ensure·that·the·updates·are·applied·from251 right.·For·example,·given·the·following·update·with·variable·keys:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map1</span><span·class="p"·data-group-id="9688447651-1">#{</span><span·class="n">Key1</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key2</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·276,·SHA:·001b9edcbfd435eba3921f0620018d06a00c207ed610e5f163fe20f8d2f8a65b·...·]-1">}</span></code></pre><p>the·compiler·rewrites·it·like·this·to·ensure·that·the·updates·are·applied·from
252 left·to·right:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Map2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map1</span><span·class="p"·data-group-id="3554884896-1">#{</span><span·class="n">Key1</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="3554884896-1">}</span><span·class="p">,</span><span·class="w">252 left·to·right:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Map2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map1</span><span·class="p"·data-group-id="0750315862-1">#{</span><span·class="n">Key1</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="0750315862-1">}</span><span·class="p">,</span><span·class="w">
253 </span><span·class="n">Map3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map2</span><span·class="p"·data-group-id="3554884896-2">#{</span><span·class="n">Key2</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="3554884896-2">}</span><span·class="p">,</span><span·class="w">253 </span><span·class="n">Map3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map2</span><span·class="p"·data-group-id="0750315862-2">#{</span><span·class="n">Key2</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="0750315862-2">}</span><span·class="p">,</span><span·class="w">
254 </span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map3</span><span·class="p"·data-group-id="3554884896-3">#{</span><span·class="n">Key3</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Z</span><span·class="p"·data-group-id="3554884896-3">}</span></code></pre><p>If·a·key·is·known·to·exist·in·a·map,·using·the·<code·class="inline">:=</code>·operator·is·slightly·more254 </span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map3</span><span·class="p"·data-group-id="0750315862-3">#{</span><span·class="n">Key3</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Z</span><span·class="p"·data-group-id="0750315862-3">}</span></code></pre><p>If·a·key·is·known·to·exist·in·a·map,·using·the·<code·class="inline">:=</code>·operator·is·slightly·more
255 efficient·than·using·the·<code·class="inline">=&gt;</code>·operator·for·a·small·map.</p><h2·id="using-the-functions-in-the-maps-module"·class="section-heading">255 efficient·than·using·the·<code·class="inline">=&gt;</code>·operator·for·a·small·map.</p><h2·id="using-the-functions-in-the-maps-module"·class="section-heading">
256 ··<a·href="#using-the-functions-in-the-maps-module"·class="hover-link">256 ··<a·href="#using-the-functions-in-the-maps-module"·class="hover-link">
257 ····<i·class="ri-link-m"·aria-hidden="true"></i>257 ····<i·class="ri-link-m"·aria-hidden="true"></i>
258 ··</a>258 ··</a>
259 ··<span·class="text">Using·the·Functions·in·the·maps·Module</span>259 ··<span·class="text">Using·the·Functions·in·the·maps·Module</span>
260 </h2>260 </h2>
261 <p>Here·follows·some·notes·about·most·of·the·functions·in·the·<code·class="inline">maps</code>·module.·For261 <p>Here·follows·some·notes·about·most·of·the·functions·in·the·<code·class="inline">maps</code>·module.·For
Offset 306, 23 lines modifiedOffset 306, 23 lines modified
306 ··<a·href="#maps-get-3"·class="hover-link">306 ··<a·href="#maps-get-3"·class="hover-link">
307 ····<i·class="ri-link-m"·aria-hidden="true"></i>307 ····<i·class="ri-link-m"·aria-hidden="true"></i>
308 ··</a>308 ··</a>
309 ··<span·class="text">maps:get/3</span>309 ··<span·class="text">maps:get/3</span>
310 </h3>310 </h3>
311 <p>As·an·optimization,·the·compiler·will·rewrite·a·call·to·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·to·Erlang311 <p>As·an·optimization,·the·compiler·will·rewrite·a·call·to·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·to·Erlang
312 code·similar·to·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Map</span><span·class="w">·</span><span·class="k">of</span><span·class="w">312 code·similar·to·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Map</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
313 ·············</span><span·class="p"·data-group-id="1390669637-1">#{</span><span·class="n">Key</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="1390669637-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">;</span><span·class="w">313 ·············</span><span·class="p"·data-group-id="6408970209-1">#{</span><span·class="n">Key</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="6408970209-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">;</span><span·class="w">
314 ·············</span><span·class="p"·data-group-id="1390669637-2">#{</span><span·class="p"·data-group-id="1390669637-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Default</span><span·class="w">314 ·············</span><span·class="p"·data-group-id="6408970209-2">#{</span><span·class="p"·data-group-id="6408970209-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Default</span><span·class="w">
315 ·········</span><span·class="k">end</span></code></pre><p>This·is·reasonably·efficient,·but·if·a·small·map·is·used·as·an·alternative·to315 ·········</span><span·class="k">end</span></code></pre><p>This·is·reasonably·efficient,·but·if·a·small·map·is·used·as·an·alternative·to
316 using·a·record·it·is·often·better·not·to·rely·on·default·values·as·it·prevents316 using·a·record·it·is·often·better·not·to·rely·on·default·values·as·it·prevents
317 sharing·of·keys,·which·may·in·the·end·use·more·memory·than·what·you·save·from317 sharing·of·keys,·which·may·in·the·end·use·more·memory·than·what·you·save·from
318 not·storing·default·values·in·the·map.</p><p>If·default·values·are·nevertheless·required,·instead·of·calling·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>318 not·storing·default·values·in·the·map.</p><p>If·default·values·are·nevertheless·required,·instead·of·calling·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>
319 multiple·times,·consider·putting·the·default·values·in·a·map·and·merging·that319 multiple·times,·consider·putting·the·default·values·in·a·map·and·merging·that
320 map·with·the·other·map:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">DefaultMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5985161588-1">#{</span><span·class="n">Key1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Value2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key2</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·419,·SHA:·8e92c71812453fad5400e69610aa524051ac89d38ff416c193afb5916b76fd63·...·]8-1">}</span><span·class="p">,</span><span·class="w">320 map·with·the·other·map:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">DefaultMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3841478558-1">#{</span><span·class="n">Key1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Value2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key2</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·419,·SHA:·77c63dc64a8bb3dc3585b2be5b0ebd5443c9adac108006b9f02a8b651f8ccf76·...·]8-1">}</span><span·class="p">,</span><span·class="w">
321 </span><span·class="n">MapWithDefaultsApplied</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">merge</span><span·class="p"·data-group-id="5985161588-2">(</span><span·class="n">DefaultMap</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherMap</span><span·class="p"·data-group-id="5985161588-2">)</span></code></pre><p>This·helps·share·keys·between·the·default·map·and·the·one·you·applied·defaults321 </span><span·class="n">MapWithDefaultsApplied</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">merge</span><span·class="p"·data-group-id="3841478558-2">(</span><span·class="n">DefaultMap</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherMap</span><span·class="p"·data-group-id="3841478558-2">)</span></code></pre><p>This·helps·share·keys·between·the·default·map·and·the·one·you·applied·defaults
322 to,·as·long·as·the·default·map·contains·<em>all</em>·the·keys·that·will·ever·be·used322 to,·as·long·as·the·default·map·contains·<em>all</em>·the·keys·that·will·ever·be·used
323 and·not·just·the·ones·with·default·values.·Whether·this·is·faster·than·calling323 and·not·just·the·ones·with·default·values.·Whether·this·is·faster·than·calling
324 <a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·multiple·times·depends·on·the·size·of·the·map·and·the·number·of324 <a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·multiple·times·depends·on·the·size·of·the·map·and·the·number·of
325 default·values.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·OTP·26.0·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·was·implemented·by·calling·the·function·instead325 default·values.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·OTP·26.0·<a·href="../../lib/stdlib-6.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·was·implemented·by·calling·the·function·instead
326 of·rewriting·it·as·an·Erlang·expression.·It·is·now·slightly·faster·but·can·no326 of·rewriting·it·as·an·Erlang·expression.·It·is·now·slightly·faster·but·can·no
327 longer·be·traced.</p></section><h3·id="maps-intersect-2-maps-intersect_with-3"·class="section-heading">327 longer·be·traced.</p></section><h3·id="maps-intersect-2-maps-intersect_with-3"·class="section-heading">
328 ··<a·href="#maps-intersect-2-maps-intersect_with-3"·class="hover-link">328 ··<a·href="#maps-intersect-2-maps-intersect_with-3"·class="hover-link">
23.9 KB
./usr/share/doc/erlang-doc/html/doc/system/modules.html
    
Offset 118, 20 lines modifiedOffset 118, 20 lines modified
118 <h2·id="module-syntax"·class="section-heading">118 <h2·id="module-syntax"·class="section-heading">
119 ··<a·href="#module-syntax"·class="hover-link">119 ··<a·href="#module-syntax"·class="hover-link">
120 ····<i·class="ri-link-m"·aria-hidden="true"></i>120 ····<i·class="ri-link-m"·aria-hidden="true"></i>
121 ··</a>121 ··</a>
122 ··<span·class="text">Module·Syntax</span>122 ··<span·class="text">Module·Syntax</span>
123 </h2>123 </h2>
124 <p>Erlang·code·is·divided·into·<em>modules</em>.·A·module·consists·of·a·sequence·of124 <p>Erlang·code·is·divided·into·<em>modules</em>.·A·module·consists·of·a·sequence·of
125 attributes·and·function·declarations,·each·terminated·by·a·period·(<code·class="inline">.</code>).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7816247189-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="7816247189-1">)</span><span·class="p">.</span><span·class="w">··········</span><span·class="c1">%·module·attribute</span><span·class="w">125 attributes·and·function·declarations,·each·terminated·by·a·period·(<code·class="inline">.</code>).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3144919349-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="3144919349-1">)</span><span·class="p">.</span><span·class="w">··········</span><span·class="c1">%·module·attribute</span><span·class="w">
126 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7816247189-2">(</span><span·class="p"·data-group-id="7816247189-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7816247189-3">]</span><span·class="p"·data-group-id="7816247189-2">)</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·module·attribute</span><span·class="w">126 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3144919349-2">(</span><span·class="p"·data-group-id="3144919349-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3144919349-3">]</span><span·class="p"·data-group-id="3144919349-2">)</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·module·attribute</span><span·class="w">
  
127 </span><span·class="nf">fact</span><span·class="p"·data-group-id="7816247189-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="7816247189-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="o">&gt;</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="c1">%·beginning·of·function·declaration</span><span·class="w">127 </span><span·class="nf">fact</span><span·class="p"·data-group-id="3144919349-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="3144919349-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="o">&gt;</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="c1">%·beginning·of·function·declaration</span><span·class="w">
128 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="7816247189-5">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="7816247189-5">)</span><span·class="p">;</span><span·class="w">···</span><span·class="c1">%··|</span><span·class="w">128 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="3144919349-5">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="3144919349-5">)</span><span·class="p">;</span><span·class="w">···</span><span·class="c1">%··|</span><span·class="w">
129 </span><span·class="nf">fact</span><span·class="p"·data-group-id="7816247189-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7816247189-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···········</span><span·class="c1">%··|</span><span·class="w">129 </span><span·class="nf">fact</span><span·class="p"·data-group-id="3144919349-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="3144919349-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···········</span><span·class="c1">%··|</span><span·class="w">
130 ····</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">···············</span><span·class="c1">%·end·of·function·declaration</span></code></pre><p>For·a·description·of·function·declarations,·see130 ····</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">···············</span><span·class="c1">%·end·of·function·declaration</span></code></pre><p>For·a·description·of·function·declarations,·see
131 <a·href="ref_man_functions.html">Function·Declaration·Syntax</a>.</p><h2·id="module-attributes"·class="section-heading">131 <a·href="ref_man_functions.html">Function·Declaration·Syntax</a>.</p><h2·id="module-attributes"·class="section-heading">
132 ··<a·href="#module-attributes"·class="hover-link">132 ··<a·href="#module-attributes"·class="hover-link">
133 ····<i·class="ri-link-m"·aria-hidden="true"></i>133 ····<i·class="ri-link-m"·aria-hidden="true"></i>
134 ··</a>134 ··</a>
135 ··<span·class="text">Module·Attributes</span>135 ··<span·class="text">Module·Attributes</span>
136 </h2>136 </h2>
Offset 176, 71 lines modifiedOffset 176, 71 lines modified
176 meaning.</p></section></li></ul><h3·id="behaviour-module-attribute"·class="section-heading">176 meaning.</p></section></li></ul><h3·id="behaviour-module-attribute"·class="section-heading">
177 ··<a·href="#behaviour-module-attribute"·class="hover-link">177 ··<a·href="#behaviour-module-attribute"·class="hover-link">
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Behaviour·Module·Attribute</span>180 ··<span·class="text">Behaviour·Module·Attribute</span>
181 </h3>181 </h3>
182 <p>It·is·possible·to·specify·that·the·module·is·the·callback·module·for·a182 <p>It·is·possible·to·specify·that·the·module·is·the·callback·module·for·a
183 <em>behaviour</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="1440646002-1">(</span><span·class="n">Behaviour</span><span·class="p"·data-group-id="1440646002-1">)</span><span·class="p">.</span></code></pre><p>The·atom·<code·class="inline">Behaviour</code>·gives·the·name·of·the·behaviour,·which·can·be·a183 <em>behaviour</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="5028944439-1">(</span><span·class="n">Behaviour</span><span·class="p"·data-group-id="5028944439-1">)</span><span·class="p">.</span></code></pre><p>The·atom·<code·class="inline">Behaviour</code>·gives·the·name·of·the·behaviour,·which·can·be·a
184 user-defined·behaviour·or·one·of·the·following·OTP·standard·behaviours:</p><ul><li><code·class="inline">gen_server</code></li><li><code·class="inline">gen_statem</code></li><li><code·class="inline">gen_event</code></li><li><code·class="inline">supervisor</code></li></ul><p>The·spelling·<code·class="inline">behavior</code>·is·also·accepted.</p><p>The·callback·functions·of·the·module·can·be·specified·either·directly·by·the184 user-defined·behaviour·or·one·of·the·following·OTP·standard·behaviours:</p><ul><li><code·class="inline">gen_server</code></li><li><code·class="inline">gen_statem</code></li><li><code·class="inline">gen_event</code></li><li><code·class="inline">supervisor</code></li></ul><p>The·spelling·<code·class="inline">behavior</code>·is·also·accepted.</p><p>The·callback·functions·of·the·module·can·be·specified·either·directly·by·the
185 exported·function·<code·class="inline">behaviour_info/1</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">behaviour_info</span><span·class="p"·data-group-id="7358098051-1">(</span><span·class="ss">callbacks</span><span·class="p"·data-group-id="7358098051-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Callbacks</span><span·class="p">.</span></code></pre><p>[·...·truncated·by·diffoscope;·len:·368,·SHA:·372502289f4e5b324ebc5ebeb988e0a90eecb8ee17016d6ad04136c84a3d85f1·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Result</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">Arguments</code>·is·a·list·of·zero·or·more·arguments.·The·<code·class="inline">-callback</code>·attribute185 exported·function·<code·class="inline">behaviour_info/1</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">behaviour_info</span><span·class="p"·data-group-id="9537975873-1">(</span><span·class="ss">callbacks</span><span·class="p"·data-group-id="9537975873-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Callbacks</span><span·class="p">.</span></code></pre><p>[·...·truncated·by·diffoscope;·len:·368,·SHA:·668fe405c82273dda07e62f304b1d3cd0fdcae1430533d801101def470ca760d·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Result</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">Arguments</code>·is·a·list·of·zero·or·more·arguments.·The·<code·class="inline">-callback</code>·attribute
186 is·to·be·preferred·since·the·extra·type·information·can·be·used·by·tools·to186 is·to·be·preferred·since·the·extra·type·information·can·be·used·by·tools·to
187 produce·documentation·or·find·discrepancies.</p><p>Read·more·about·behaviours·and·callback·modules·in187 produce·documentation·or·find·discrepancies.</p><p>Read·more·about·behaviours·and·callback·modules·in
188 <a·href="../../doc/system/spec_proc.html#behaviours">OTP·Design·Principles</a>.</p><h3·id="record-definitions"·class="section-heading">188 <a·href="../../doc/system/spec_proc.html#behaviours">OTP·Design·Principles</a>.</p><h3·id="record-definitions"·class="section-heading">
189 ··<a·href="#record-definitions"·class="hover-link">189 ··<a·href="#record-definitions"·class="hover-link">
190 ····<i·class="ri-link-m"·aria-hidden="true"></i>190 ····<i·class="ri-link-m"·aria-hidden="true"></i>
191 ··</a>191 ··</a>
192 ··<span·class="text">Record·Definitions</span>192 ··<span·class="text">Record·Definitions</span>
193 </h3>193 </h3>
194 <p>The·same·syntax·as·for·module·attributes·is·used·for·record·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5129577285-1">(</span><span·class="n">Record</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fields</span><span·class="p"·data-group-id="5129577285-1">)</span><span·class="p">.</span></code></pre><p>Record·definitions·are·allowed·anywhere·in·a·module,·also·among·the·function194 <p>The·same·syntax·as·for·module·attributes·is·used·for·record·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8107750453-1">(</span><span·class="n">Record</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fields</span><span·class="p"·data-group-id="8107750453-1">)</span><span·class="p">.</span></code></pre><p>Record·definitions·are·allowed·anywhere·in·a·module,·also·among·the·function
195 declarations.·Read·more·in·<a·href="ref_man_records.html">Records</a>.</p><h3·id="preprocessor"·class="section-heading">195 declarations.·Read·more·in·<a·href="ref_man_records.html">Records</a>.</p><h3·id="preprocessor"·class="section-heading">
196 ··<a·href="#preprocessor"·class="hover-link">196 ··<a·href="#preprocessor"·class="hover-link">
197 ····<i·class="ri-link-m"·aria-hidden="true"></i>197 ····<i·class="ri-link-m"·aria-hidden="true"></i>
198 ··</a>198 ··</a>
199 ··<span·class="text">Preprocessor</span>199 ··<span·class="text">Preprocessor</span>
200 </h3>200 </h3>
201 <p>The·same·syntax·as·for·module·attributes·is·used·by·the·preprocessor,·which201 <p>The·same·syntax·as·for·module·attributes·is·used·by·the·preprocessor,·which
202 supports·file·inclusion,·macros,·and·conditional·compilation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="3052015258-1">(</span><span·class="s">&quot;SomeFile.hrl&quot;</span><span·class="p"·data-group-id="3052015258-1">)</span><span·class="p">.</span><span·class="w">202 supports·file·inclusion,·macros,·and·conditional·compilation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="2118089981-1">(</span><span·class="s">&quot;SomeFile.hrl&quot;</span><span·class="p"·data-group-id="2118089981-1">)</span><span·class="p">.</span><span·class="w">
203 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3052015258-2">(</span><span·class="n">Macro</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Replacement</span><span·class="p"·data-group-id="3052015258-2">)</span><span·class="p">.</span></code></pre><p>Read·more·in·<a·href="macros.html">Preprocessor</a>.</p><h3·id="setting-file-and-line"·class="section-heading">203 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2118089981-2">(</span><span·class="n">Macro</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Replacement</span><span·class="p"·data-group-id="2118089981-2">)</span><span·class="p">.</span></code></pre><p>Read·more·in·<a·href="macros.html">Preprocessor</a>.</p><h3·id="setting-file-and-line"·class="section-heading">
204 ··<a·href="#setting-file-and-line"·class="hover-link">204 ··<a·href="#setting-file-and-line"·class="hover-link">
205 ····<i·class="ri-link-m"·aria-hidden="true"></i>205 ····<i·class="ri-link-m"·aria-hidden="true"></i>
206 ··</a>206 ··</a>
207 ··<span·class="text">Setting·File·and·Line</span>207 ··<span·class="text">Setting·File·and·Line</span>
208 </h3>208 </h3>
209 <p>The·same·syntax·as·for·module·attributes·is·used·for·changing·the·pre-defined209 <p>The·same·syntax·as·for·module·attributes·is·used·for·changing·the·pre-defined
210 macros·<code·class="inline">?FILE</code>·and·<code·class="inline">?LINE</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">file</span><span·class="p"·data-group-id="5837953058-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Line</span><span·class="p"·data-group-id="5837953058-1">)</span><span·class="p">.</span></code></pre><p>This·attribute·is·used·by·tools,·such·as·Yecc,·to·inform·the·compiler·that·the210 macros·<code·class="inline">?FILE</code>·and·<code·class="inline">?LINE</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">file</span><span·class="p"·data-group-id="2753055004-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Line</span><span·class="p"·data-group-id="2753055004-1">)</span><span·class="p">.</span></code></pre><p>This·attribute·is·used·by·tools,·such·as·Yecc,·to·inform·the·compiler·that·the
211 source·program·is·generated·by·another·tool.·It·also·indicates·the211 source·program·is·generated·by·another·tool.·It·also·indicates·the
212 correspondence·of·source·files·to·lines·of·the·original·user-written·file,·from212 correspondence·of·source·files·to·lines·of·the·original·user-written·file,·from
213 which·the·source·program·is·produced.</p><h3·id="types-and-function-specifications"·class="section-heading">213 which·the·source·program·is·produced.</p><h3·id="types-and-function-specifications"·class="section-heading">
214 ··<a·href="#types-and-function-specifications"·class="hover-link">214 ··<a·href="#types-and-function-specifications"·class="hover-link">
215 ····<i·class="ri-link-m"·aria-hidden="true"></i>215 ····<i·class="ri-link-m"·aria-hidden="true"></i>
216 ··</a>216 ··</a>
217 ··<span·class="text">Types·and·function·specifications</span>217 ··<span·class="text">Types·and·function·specifications</span>
218 </h3>218 </h3>
219 <p>A·similar·syntax·as·for·module·attributes·is·used·for·specifying·types·and219 <p>A·similar·syntax·as·for·module·attributes·is·used·for·specifying·types·and
220 function·specifications:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">my_type</span><span·class="p"·data-group-id="2135909501-1">(</span><span·class="p"·data-group-id="2135909501-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="2135909501-2">(</span><span·class="p"·data-group-id="2135909501-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="2135909501-3">(</span><span·class="p"·data-group-id="2135909501-3">)</span><span·class="p">.</span><span·class="w"> 
221 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">my_function</span><span·class="p"·data-group-id="2135909501-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="2135909501-5">(</span><[·...·truncated·by·diffoscope;·len:·467,·SHA:·39bf70e4a8626651c3f43c0e9822b6c411277e9b8adf50838f69267c049de797·...·]220 function·specifications:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">my_type</span><span·class="p"·data-group-id="9045608692-1">(</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·512,·SHA:·d2f9741525c9e7b3c95376146cded1c3fc1097ed80dda216310e9d4bf59eb433·...·]
 221 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">my_function</span><span·class="p"·data-group-id="9045608692-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="9045608692-5">(</span><span·class="p"·data-group-id="9045608692-5">)</span><span·class="p"·data-group-id="9045608692-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9045608692-6">(</span><span·class="p"·data-group-id="9045608692-6">)</span><span·class="p">.</span></code></pre><p>Read·more·in·<a·href="typespec.html">Types·and·Function·specifications</a>.</p><p>The·description·is·based·on
222 <a·href="http://www.erlang.org/eeps/eep-0008.html">EEP8·-·Types·and·function·specifications</a>,222 <a·href="http://www.erlang.org/eeps/eep-0008.html">EEP8·-·Types·and·function·specifications</a>,
223 which·is·not·to·be·further·updated.</p><h3·id="documentation-attributes"·class="section-heading">223 which·is·not·to·be·further·updated.</p><h3·id="documentation-attributes"·class="section-heading">
224 ··<a·href="#documentation-attributes"·class="hover-link">224 ··<a·href="#documentation-attributes"·class="hover-link">
225 ····<i·class="ri-link-m"·aria-hidden="true"></i>225 ····<i·class="ri-link-m"·aria-hidden="true"></i>
226 ··</a>226 ··</a>
227 ··<span·class="text">Documentation·attributes</span>227 ··<span·class="text">Documentation·attributes</span>
228 </h3>228 </h3>
229 <p>The·module·attribute·<code·class="inline">-doc(Documentation)</code>·is·used·to·provide·user·documentation229 <p>The·module·attribute·<code·class="inline">-doc(Documentation)</code>·is·used·to·provide·user·documentation
230 for·a·function/type/callback:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="2588475159-1">(</span><span·class="s">&quot;Example·documentation&quot;</span><span·class="p"·data-group-id="2588475159-1">)</span><span·class="p">.</span><span·class="w">230 for·a·function/type/callback:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="7408507891-1">(</span><span·class="s">&quot;Example·documentation&quot;</span><span·class="p"·data-group-id="7408507891-1">)</span><span·class="p">.</span><span·class="w">
231 </span><span·class="nf">example</span><span·class="p"·data-group-id="2588475159-2">(</span><span·class="p"·data-group-id="2588475159-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>The·attribute·should·be·placed·just·before·the·entity·it·documents.The231 </span><span·class="nf">example</span><span·class="p"·data-group-id="7408507891-2">(</span><span·class="p"·data-group-id="7408507891-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>The·attribute·should·be·placed·just·before·the·entity·it·documents.The
232 parenthesis·are·optional·around·<code·class="inline">Documentation</code>.·The·allowed·values·for232 parenthesis·are·optional·around·<code·class="inline">Documentation</code>.·The·allowed·values·for
233 <code·class="inline">Documentation</code>·are:</p><ul><li><p><strong><a·href="data_types.html#string">literal·string</a>·or233 <code·class="inline">Documentation</code>·are:</p><ul><li><p><strong><a·href="data_types.html#string">literal·string</a>·or
234 <a·href="expressions.html#unicode-segments">utf-8·encoded·binary·string</a></strong>·-·The·string234 <a·href="expressions.html#unicode-segments">utf-8·encoded·binary·string</a></strong>·-·The·string
235 documenting·the·entity.·Any·literal·string·is·allowed,·so·both235 documenting·the·entity.·Any·literal·string·is·allowed,·so·both
236 <a·href="data_types.html#tqstring">triple·quoted·strings</a>·and236 <a·href="data_types.html#tqstring">triple·quoted·strings</a>·and
237 <a·href="data_types.html#sigil">sigils</a>·that·translate·to·literal·strings·can·be·used.237 <a·href="data_types.html#sigil">sigils</a>·that·translate·to·literal·strings·can·be·used.
238 The·following·examples·are·equivalent:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="4355893447-1">(</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="p"·data-group-id="4355893447-1">)</span><span·class="p">.</span><span·class="w">238 The·following·examples·are·equivalent:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="4363928703-1">(</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="p"·data-group-id="4363928703-1">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="4355893447-2">(</span><span·class="p"·data-group-id="4355893447-3">&lt;&lt;</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4355893447-3">&gt;&gt;</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·ddf383b16a53db1e6e86b870a7ca690183d7dd7131e04bbe479811fea0c7e6f3·...·]-2">)</span><span·class="p">.</span><span·class="w">239 </span><span·class="p">-</span><span·class="na">doc</span><span·class="p"·data-group-id="4363928703-2">(</span><span·class="p"·data-group-id="4363928703-3">&lt;&lt;</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4363928703-3">&gt;&gt;</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·36b1707b9ce86684dc3f63a23032a4b62bb0321016692510e7257f0a14d2d191·...·]-2">)</span><span·class="p">.</span><span·class="w">
240 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">~S/Example·&quot;docs&quot;/</span><span·class="p">.</span><span·class="w">240 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">~S/Example·&quot;docs&quot;/</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;241 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;
242 ···Example·&quot;</span><span·class="ss">docs</span><span·class="s">&quot;242 ···Example·&quot;</span><span·class="ss">docs</span><span·class="s">&quot;
243 ···&quot;</span><span·class="s">&quot;&quot;</span><span·class="w">243 ···&quot;</span><span·class="s">&quot;&quot;</span><span·class="w">
244 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">~B|Example·&quot;docs&quot;|</span><span·class="p">.</span></code></pre><p>For·clarity·it·is·recommended·to·use·either·normal·<code·class="inline">&quot;strings&quot;</code>·or·triple244 </span><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">~B|Example·&quot;docs&quot;|</span><span·class="p">.</span></code></pre><p>For·clarity·it·is·recommended·to·use·either·normal·<code·class="inline">&quot;strings&quot;</code>·or·triple
245 quoted·strings·for·documentation·attributes.</p></li><li><p><strong><code·class="inline">{file,</code>·<a·href="../../lib/kernel-10.2.2/doc/html/file.html#t:name/0"><code·class="inline">file:name/0</code></a>·<code·class="inline">}</code></strong>·-·Read·the·contents·of·filename·and·use245 quoted·strings·for·documentation·attributes.</p></li><li><p><strong><code·class="inline">{file,</code>·<a·href="../../lib/kernel-10.2.2/doc/html/file.html#t:name/0"><code·class="inline">file:name/0</code></a>·<code·class="inline">}</code></strong>·-·Read·the·contents·of·filename·and·use
246 that·as·the·documentation·string.</p></li><li><p><strong><code·class="inline">false</code></strong>·-·Set·the·current·entity·as·hidden,·that·is,·it·should·not·be246 that·as·the·documentation·string.</p></li><li><p><strong><code·class="inline">false</code></strong>·-·Set·the·current·entity·as·hidden,·that·is,·it·should·not·be
Offset 253, 15 lines modifiedOffset 253, 15 lines modified
253 ··<a·href="#the-feature-directive"·class="hover-link">253 ··<a·href="#the-feature-directive"·class="hover-link">
254 ····<i·class="ri-link-m"·aria-hidden="true"></i>254 ····<i·class="ri-link-m"·aria-hidden="true"></i>
255 ··</a>255 ··</a>
256 ··<span·class="text">The·feature·directive</span>256 ··<span·class="text">The·feature·directive</span>
257 </h2>257 </h2>
258 <p>While·not·a·module·attribute,·but·rather·a·directive·(since·it·might·affect258 <p>While·not·a·module·attribute,·but·rather·a·directive·(since·it·might·affect
259 syntax),·there·is·the·<code·class="inline">-feature(..)</code>·directive·used·for·enabling·and·disabling259 syntax),·there·is·the·<code·class="inline">-feature(..)</code>·directive·used·for·enabling·and·disabling
260 <a·href="../../doc/system/features.html#features">features</a>.</p><p>The·syntax·is·similar·to·that·of·an·attribute,·but·has·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">feature</span><span·class="p"·data-group-id="7417110866-1">(</span><span·class="n">FeatureName</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">enable</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">disable</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·0faea1a7fd6c97f7d178432d842647b45f1cca5994d7ab3072f552957fed59c1·...·]-1">)</span><span·class="p">.</span></code></pre><p>Note·that·the·<a·href="macros.html#feature-directive">feature·directive</a>·can·only·appear260 <a·href="../../doc/system/features.html#features">features</a>.</p><p>The·syntax·is·similar·to·that·of·an·attribute,·but·has·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">feature</span><span·class="p"·data-group-id="9065804678-1">(</span><span·class="n">FeatureName</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">enable</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">disable</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·a6abbaa871a02d3932e4798a8f28fa89256cdab01ff4c040c391f72c37aab6be·...·]-1">)</span><span·class="p">.</span></code></pre><p>Note·that·the·<a·href="macros.html#feature-directive">feature·directive</a>·can·only·appear
261 in·a·prefix·of·the·module.</p><h2·id="comments"·class="section-heading">261 in·a·prefix·of·the·module.</p><h2·id="comments"·class="section-heading">
262 ··<a·href="#comments"·class="hover-link">262 ··<a·href="#comments"·class="hover-link">
263 ····<i·class="ri-link-m"·aria-hidden="true"></i>263 ····<i·class="ri-link-m"·aria-hidden="true"></i>
264 ··</a>264 ··</a>
265 ··<span·class="text">Comments</span>265 ··<span·class="text">Comments</span>
266 </h2>266 </h2>
267 <p>Comments·can·be·placed·anywhere·in·a·module·except·within·strings·and267 <p>Comments·can·be·placed·anywhere·in·a·module·except·within·strings·and
16.1 KB
./usr/share/doc/erlang-doc/html/doc/system/nif.html
    
Offset 133, 26 lines modifiedOffset 133, 26 lines modified
133 ··<span·class="text">Erlang·Program</span>133 ··<span·class="text">Erlang·Program</span>
134 </h2>134 </h2>
135 <p>Even·if·all·functions·of·a·module·are·NIFs,·an·Erlang·module·is·still·needed·for135 <p>Even·if·all·functions·of·a·module·are·NIFs,·an·Erlang·module·is·still·needed·for
136 two·reasons:</p><ul><li>The·NIF·library·must·be·explicitly·loaded·by·Erlang·code·in·the·same·module.</li><li>All·NIFs·of·a·module·must·have·an·Erlang·implementation·as·well.</li></ul><p>Normally·these·are·minimal·stub·implementations·that·throw·an·exception.·But136 two·reasons:</p><ul><li>The·NIF·library·must·be·explicitly·loaded·by·Erlang·code·in·the·same·module.</li><li>All·NIFs·of·a·module·must·have·an·Erlang·implementation·as·well.</li></ul><p>Normally·these·are·minimal·stub·implementations·that·throw·an·exception.·But
137 they·can·also·be·used·as·fallback·implementations·for·functions·that·do·not·have137 they·can·also·be·used·as·fallback·implementations·for·functions·that·do·not·have
138 native·implementations·on·some·architectures.</p><p>NIF·libraries·are·loaded·by·calling·<a·href="../../erts-15.2.2/doc/html/erlang.html#load_nif/2"><code·class="inline">erlang:load_nif/2</code></a>,·with·the·name·of·the138 native·implementations·on·some·architectures.</p><p>NIF·libraries·are·loaded·by·calling·<a·href="../../erts-15.2.2/doc/html/erlang.html#load_nif/2"><code·class="inline">erlang:load_nif/2</code></a>,·with·the·name·of·the
139 shared·library·as·argument.·The·second·argument·can·be·any·term·that·will·be139 shared·library·as·argument.·The·second·argument·can·be·any·term·that·will·be
140 passed·on·to·the·library·and·used·for·initialization:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9005743525-1">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="9005743525-1">)</span><span·class="p">.</span><span·class="w">140 passed·on·to·the·library·and·used·for·initialization:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0045846403-1">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="0045846403-1">)</span><span·class="p">.</span><span·class="w">
141 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9005743525-2">(</span><span·class="p"·data-group-id="9005743525-3">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·1f76a3cefd78e6e50c105588007c8c0a9d454dbeea6d93c6bf3d7cce32936500·...·]-2">)</span><span·class="p">.</span><span·class="w">141 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0045846403-2">(</span><span·class="p"·data-group-id="0045846403-3">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·be16f7ea4780f24c46b20d7c1f61b2e796fe1abd06f7bd207741ae999c713aa3·...·]-2">)</span><span·class="p">.</span><span·class="w">
142 </span><span·class="p">-</span><span·class="na">nifs</span><span·class="p"·data-group-id="9005743525-4">(</span><span·class="p"·data-group-id="9005743525-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·a56c95dfe18024518ce4db480a2f99bacd8b2da8a1cb958d04e1660036fc458b·...·]-4">)</span><span·class="p">.</span><span·class="w">142 </span><span·class="p">-</span><span·class="na">nifs</span><span·class="p"·data-group-id="0045846403-4">(</span><span·class="p"·data-group-id="0045846403-5">[</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·38766945476bcd32381d0a8cd9ca87d5968dcfc3305892a86ecea96eb59b2096·...·]-4">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="9005743525-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9005743525-6">)</span><span·class="p">.</span><span·class="w">143 </span><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="0045846403-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0045846403-6">)</span><span·class="p">.</span><span·class="w">
  
144 </span><span·class="nf">init</span><span·class="p"·data-group-id="9005743525-7">(</span><span·class="p"·data-group-id="9005743525-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">144 </span><span·class="nf">init</span><span·class="p"·data-group-id="0045846403-7">(</span><span·class="p"·data-group-id="0045846403-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
145 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="9005743525-8">(</span><span·class="s">&quot;./complex6_nif&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="9005743525-8">)</span><span·class="p">.</span><span·class="w">145 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="0045846403-8">(</span><span·class="s">&quot;./complex6_nif&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="0045846403-8">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">foo</span><span·class="p"·data-group-id="9005743525-9">(</span><span·class="p">_</span><span·class="n">X</span><span·class="p"·data-group-id="9005743525-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">146 </span><span·class="nf">foo</span><span·class="p"·data-group-id="0045846403-9">(</span><span·class="p">_</span><span·class="n">X</span><span·class="p"·data-group-id="0045846403-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
147 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">nif_error</span><span·class="p"·data-group-id="9005743525-10">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="9005743525-10">)</span><span·class="p">.</span><span·class="w">147 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">nif_error</span><span·class="p"·data-group-id="0045846403-10">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="0045846403-10">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9005743525-11">(</span><span·class="p">_</span><span·class="n">Y</span><span·class="p"·data-group-id="9005743525-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0045846403-11">(</span><span·class="p">_</span><span·class="n">Y</span><span·class="p"·data-group-id="0045846403-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">nif_error</span><span·class="p"·data-group-id="9005743525-12">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="9005743525-12">)</span><span·class="p">.</span></code></pre><p>Here,·the·directive·<code·class="inline">on_load</code>·is·used·to·get·function·<code·class="inline">init</code>·to·be·automatically149 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">nif_error</span><span·class="p"·data-group-id="0045846403-12">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="0045846403-12">)</span><span·class="p">.</span></code></pre><p>Here,·the·directive·<code·class="inline">on_load</code>·is·used·to·get·function·<code·class="inline">init</code>·to·be·automatically
150 called·when·the·module·is·loaded.·If·<code·class="inline">init</code>·returns·anything·other·than·<code·class="inline">ok</code>,150 called·when·the·module·is·loaded.·If·<code·class="inline">init</code>·returns·anything·other·than·<code·class="inline">ok</code>,
151 such·when·the·loading·of·the·NIF·library·fails·in·this·example,·the·module·is151 such·when·the·loading·of·the·NIF·library·fails·in·this·example,·the·module·is
152 unloaded·and·calls·to·functions·within·it,·fail.</p><p>Loading·the·NIF·library·overrides·the·stub·implementations·and·cause·calls·to152 unloaded·and·calls·to·functions·within·it,·fail.</p><p>Loading·the·NIF·library·overrides·the·stub·implementations·and·cause·calls·to
153 <code·class="inline">foo</code>·and·<code·class="inline">bar</code>·to·be·dispatched·to·the·NIF·implementations·instead.</p><h2·id="nif-library-code"·class="section-heading">153 <code·class="inline">foo</code>·and·<code·class="inline">bar</code>·to·be·dispatched·to·the·NIF·implementations·instead.</p><h2·id="nif-library-code"·class="section-heading">
154 ··<a·href="#nif-library-code"·class="hover-link">154 ··<a·href="#nif-library-code"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
Offset 209, 23 lines modifiedOffset 209, 23 lines modified
209 ··<a·href="#running-the-example"·class="hover-link">209 ··<a·href="#running-the-example"·class="hover-link">
210 ····<i·class="ri-link-m"·aria-hidden="true"></i>210 ····<i·class="ri-link-m"·aria-hidden="true"></i>
211 ··</a>211 ··</a>
212 ··<span·class="text">Running·the·Example</span>212 ··<span·class="text">Running·the·Example</span>
213 </h2>213 </h2>
214 <p><em>Step·1.</em>·Compile·the·C·code:</p><pre><code·class="text">unix&gt;·gcc·-o·complex6_nif.so·-fpic·-shared·complex.c·complex6_nif.c214 <p><em>Step·1.</em>·Compile·the·C·code:</p><pre><code·class="text">unix&gt;·gcc·-o·complex6_nif.so·-fpic·-shared·complex.c·complex6_nif.c
215 windows&gt;·cl·-LD·-MD·-Fe·complex6_nif.dll·complex.c·complex6_nif.c</code></pre><p><em>Step·2:</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="ss">erl</span><span·class="w">215 windows&gt;·cl·-LD·-MD·-Fe·complex6_nif.dll·complex.c·complex6_nif.c</code></pre><p><em>Step·2:</em>·Start·Erlang·and·compile·the·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="ss">erl</span><span·class="w">
216 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R13B04</span><span·class="w">·</span><span·class="p"·data-group-id="4567699191-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.7</span><span·class="p">.</span><span·class="mi">5</span><span·class="p"·data-group-id="4567699191-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·eac6d2a3145620729c00256560a7ddf9d4cadd1282db7992d23ef183615d81be·...·]-6">]</span><span·class="w">216 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R13B04</span><span·class="w">·</span><span·class="p"·data-group-id="5044198603-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.7</span><span·class="p">.</span><span·class="mi">5</span><span·class="p"·data-group-id="5044198603-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·473dc6c36065393776d47bd7e003ff2ef575be5a722ec5dada5a9cd615e08b2e·...·]-6">]</span><span·class="w">
  
217 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">7.5</span><span·class="w">··</span><span·class="p"·data-group-id="4567699191-7">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4567699191-7">)</span><span·class="gp·unselectable">217 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">7.5</span><span·class="w">··</span><span·class="p"·data-group-id="5044198603-7">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="5044198603-7">)</span><span·class="gp·unselectable">
218 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="4567699191-8">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="4567699191-8">)</span><span·class="p">.</span><span·class="w">218 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="5044198603-8">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="5044198603-8">)</span><span·class="p">.</span><span·class="w">
219 </span><span·class="p"·data-group-id="4567699191-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex6</span><span·class="p"·data-group-id="4567699191-9">}</span></code></pre><p><em>Step·3:</em>·Run·the·example:</p><pre><code·class="makeup·erlang"·translate="no[·...·truncated·by·diffoscope;·len:·247,·SHA:·924fae7d64db44fc0a4377e3354b26392df57d53feeb3560c48a38f3e497033b·...·]-1">)</span><span·class="p">.</span><span·class="w">219 </span><span·class="p"·data-group-id="5044198603-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex6</span><span·class="p"·data-group-id="5044198603-9">}</span></code></pre><p><em>Step·3:</em>·Run·the·example:</p><pre><code·class="makeup·erlang"·translate="no[·...·truncated·by·diffoscope;·len:·247,·SHA:·21ebe9fd3db549254f8268f43d2680aa70906b7e90e9e0d890fe76cdaaed29be·...·]-1">)</span><span·class="p">.</span><span·class="w">
220 </span><span·class="mi">4</span><span·class="gp·unselectable">220 </span><span·class="mi">4</span><span·class="gp·unselectable">
221 4&gt;·</span><span·class="nc">complex6</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="8170285874-2">(</span><span·class="mi">5</span><span·class="p"·data-group-id="8170285874-2">)</span><span·class="p">.</span><span·class="w">221 4&gt;·</span><span·class="nc">complex6</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="7852471398-2">(</span><span·class="mi">5</span><span·class="p"·data-group-id="7852471398-2">)</span><span·class="p">.</span><span·class="w">
222 </span><span·class="mi">10</span><span·class="gp·unselectable">222 </span><span·class="mi">10</span><span·class="gp·unselectable">
223 5&gt;·</span><span·class="nc">complex6</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="8170285874-3">(</span><span·class="s">&quot;not·an·integer&quot;</span><span·class="p"·data-group-id="8170285874-3">)</span><span·class="p">.</span><span·class="w">223 5&gt;·</span><span·class="nc">complex6</span><span·class="p">:</span><span·class="nf">foo</span><span·class="p"·data-group-id="7852471398-3">(</span><span·class="s">&quot;not·an·integer&quot;</span><span·class="p"·data-group-id="7852471398-3">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="gt">**·exception·error:·bad·argument224 </span><span·class="gt">**·exception·error:·bad·argument
225 ·····in·function··complex6:foo/1225 ·····in·function··complex6:foo/1
226 ········called·as·comlpex6:foo(&quot;not·an·integer&quot;)</span></code></pre>226 ········called·as·comlpex6:foo(&quot;not·an·integer&quot;)</span></code></pre>
227 </div>227 </div>
  
228 <div·class="bottom-actions"·id="bottom-actions">228 <div·class="bottom-actions"·id="bottom-actions">
229 ··<div·class="bottom-actions-item">229 ··<div·class="bottom-actions-item">
9.27 KB
./usr/share/doc/erlang-doc/html/doc/system/opaques.html
    
Offset 122, 24 lines modifiedOffset 122, 24 lines modified
122 ··<span·class="text">Opaque·Type·Aliases</span>122 ··<span·class="text">Opaque·Type·Aliases</span>
123 </h2>123 </h2>
124 <p>The·main·use·case·for·opacity·in·Erlang·is·to·hide·the·implementation·of·a·data124 <p>The·main·use·case·for·opacity·in·Erlang·is·to·hide·the·implementation·of·a·data
125 type,·enabling·evolving·the·API·while·minimizing·the·risk·of·breaking·consumers.125 type,·enabling·evolving·the·API·while·minimizing·the·risk·of·breaking·consumers.
126 The·runtime·does·not·check·opacity.·Dialyzer·provides·some·opacity-checking,·but126 The·runtime·does·not·check·opacity.·Dialyzer·provides·some·opacity-checking,·but
127 the·rest·is·up·to·convention.</p><p>This·document·explains·what·Erlang·opacity·is·(and·the·trade-offs·involved)·via127 the·rest·is·up·to·convention.</p><p>This·document·explains·what·Erlang·opacity·is·(and·the·trade-offs·involved)·via
128 the·example·of·the·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#t:set/0"><code·class="inline">sets:set()</code></a>·data·type.·This·type·<em>was</em>128 the·example·of·the·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#t:set/0"><code·class="inline">sets:set()</code></a>·data·type.·This·type·<em>was</em>
129 defined·in·the·<code·class="inline">sets</code>·module·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">set</span><span·class="p"·data-group-id="1068938011-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="1068938011-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">set</span><spa[·...·truncated·by·diffoscope;·len:·377,·SHA:·74cec9da31a35c06bf2193a2c9d560ac738ca9d7e0bf792ddaca0fc8b076055d·...·]1-2">}</span><span·class="p">.</span></code></pre><p>OTP·24·changed·the·definition·to·the·following·in129 defined·in·the·<code·class="inline">sets</code>·module·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">set</span><span·class="p"·data-group-id="7406703161-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="7406703161-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">set</span><spa[·...·truncated·by·diffoscope;·len:·377,·SHA:·9565e016cbf3d07dd2918b685bb51d190dcd36d0e581346863d7de5034103062·...·]1-2">}</span><span·class="p">.</span></code></pre><p>OTP·24·changed·the·definition·to·the·following·in
130 <a·href="https://github.com/erlang/otp/commit/e66941e8d7c47b973dff94c0308ea85a6be1958e">this·commit</a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">set</span><span·class="p"·data-group-id="5479666998-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="5479666998-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">set</span><spa[·...·truncated·by·diffoscope;·len:·715,·SHA:·3321400600bb6cbd337c206611891af839736ee1f08134a02013cbf9b6734ca2·...·]-4">}</span><span·class="p">.</span></code></pre><p>And·this·change·was·safer·and·more·backwards-compatible·than·if·the·type·had130 <a·href="https://github.com/erlang/otp/commit/e66941e8d7c47b973dff94c0308ea85a6be1958e">this·commit</a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">set</span><span·class="p"·data-group-id="6454263481-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="6454263481-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">set</span><spa[·...·truncated·by·diffoscope;·len:·715,·SHA:·dc44103abf5d32c9b78d17af4a585bbcb644d1f733b473afa5aa0d3780a4066e·...·]-4">}</span><span·class="p">.</span></code></pre><p>And·this·change·was·safer·and·more·backwards-compatible·than·if·the·type·had
131 been·defined·with·<code·class="inline">-type</code>·instead·of·<code·class="inline">-opaque</code>.·Here·is·why:·when·a·module131 been·defined·with·<code·class="inline">-type</code>·instead·of·<code·class="inline">-opaque</code>.·Here·is·why:·when·a·module
132 defines·an·<code·class="inline">-opaque</code>,·the·contract·is·that·only·the·defining·module·should·rely132 defines·an·<code·class="inline">-opaque</code>,·the·contract·is·that·only·the·defining·module·should·rely
133 on·the·definition·of·the·type:·no·other·modules·should·rely·on·the·definition.</p><p>This·means·that·code·that·pattern-matched·on·<code·class="inline">set</code>·as·a·record/tuple·technically133 on·the·definition·of·the·type:·no·other·modules·should·rely·on·the·definition.</p><p>This·means·that·code·that·pattern-matched·on·<code·class="inline">set</code>·as·a·record/tuple·technically
134 broke·the·contract,·and·opted·in·to·being·potentially·broken·when·the·definition134 broke·the·contract,·and·opted·in·to·being·potentially·broken·when·the·definition
135 of·<code·class="inline">set()</code>·changed.·Before·OTP·24,·this·code·printed·<code·class="inline">ok</code>.·In·OTP·24·it·may135 of·<code·class="inline">set()</code>·changed.·Before·OTP·24,·this·code·printed·<code·class="inline">ok</code>.·In·OTP·24·it·may
136 error:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="2406744213-1">(</span><span·class="p"·data-group-id="2406744213-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">136 error:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0548894394-1">(</span><span·class="p"·data-group-id="0548894394-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
137 ····</span><span·class="n">Set</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="2406744213-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="2406744213-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">137 ····</span><span·class="n">Set</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="0548894394-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="0548894394-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
138 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2406744213-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="2406744213-3">)</span><span·class="w">138 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0548894394-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="0548894394-3">)</span><span·class="w">
139 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p><strong>When·working·with·an·opaque·defined·in·another·module,·here·are·some139 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p><strong>When·working·with·an·opaque·defined·in·another·module,·here·are·some
140 recommendations:</strong></p><ul><li>Don't·examine·the·underlying·type·using·pattern-matching,·guards,·or·functions140 recommendations:</strong></p><ul><li>Don't·examine·the·underlying·type·using·pattern-matching,·guards,·or·functions
141 that·reveal·the·type,·such·as·<a·href="../../erts-15.2.2/doc/html/erlang.html#tuple_size/1"><code·class="inline">tuple_size/1</code></a>·.</li><li>Instead,·use·functions·provided·by·the·module·for·working·with·the·type.·For141 that·reveal·the·type,·such·as·<a·href="../../erts-15.2.2/doc/html/erlang.html#tuple_size/1"><code·class="inline">tuple_size/1</code></a>·.</li><li>Instead,·use·functions·provided·by·the·module·for·working·with·the·type.·For
142 example,·<code·class="inline">sets</code>·module·provides·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#add_element/2"><code·class="inline">sets:add_element/2</code></a>,142 example,·<code·class="inline">sets</code>·module·provides·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../lib/stdlib-6.2/doc/html/sets.html#add_element/2"><code·class="inline">sets:add_element/2</code></a>,
143 <a·href="../../lib/stdlib-6.2/doc/html/sets.html#is_element/2"><code·class="inline">sets:is_element/2</code></a>,·and·so·on.</li><li><p><a·href="../../lib/stdlib-6.2/doc/html/sets.html#t:set/1"><code·class="inline">sets:set(a)</code></a>·is·a·subtype·of·<code·class="inline">sets:set(a·|·b)</code>·and·not·the143 <a·href="../../lib/stdlib-6.2/doc/html/sets.html#is_element/2"><code·class="inline">sets:is_element/2</code></a>,·and·so·on.</li><li><p><a·href="../../lib/stdlib-6.2/doc/html/sets.html#t:set/1"><code·class="inline">sets:set(a)</code></a>·is·a·subtype·of·<code·class="inline">sets:set(a·|·b)</code>·and·not·the
144 other·way·around.·Generally,·you·can·rely·on·the·property·that·<code·class="inline">the_opaque(T)</code>144 other·way·around.·Generally,·you·can·rely·on·the·property·that·<code·class="inline">the_opaque(T)</code>
145 is·a·subtype·of·<code·class="inline">the_opaque(U)</code>·when·T·is·a·subtype·of·U.</p></li></ul><p><strong>When·defining·your·own·opaques,·here·are·some·recommendations:</strong></p><ul><li>Since·consumers·are·expected·to·not·rely·on·the·definition·of·the·opaque·type,145 is·a·subtype·of·<code·class="inline">the_opaque(U)</code>·when·T·is·a·subtype·of·U.</p></li></ul><p><strong>When·defining·your·own·opaques,·here·are·some·recommendations:</strong></p><ul><li>Since·consumers·are·expected·to·not·rely·on·the·definition·of·the·opaque·type,
1.62 KB
./usr/share/doc/erlang-doc/html/doc/system/otp-patch-apply.html
    
Offset 201, 15 lines modifiedOffset 201, 15 lines modified
201 ··</a>201 ··</a>
202 ··<span·class="text">Sanity·check</span>202 ··<span·class="text">Sanity·check</span>
203 </h2>203 </h2>
204 <p>The·application·dependencies·can·be·checked·using·the·Erlang·shell.204 <p>The·application·dependencies·can·be·checked·using·the·Erlang·shell.
205 Application·dependencies·are·verified·among·installed·applications·by205 Application·dependencies·are·verified·among·installed·applications·by
206 <code·class="inline">otp_patch_apply</code>,·but·these·are·not·necessarily·those·actually·loaded.206 <code·class="inline">otp_patch_apply</code>,·but·these·are·not·necessarily·those·actually·loaded.
207 By·calling·<code·class="inline">system_information:sanity_check()</code>·one·can·validate207 By·calling·<code·class="inline">system_information:sanity_check()</code>·one·can·validate
208 dependencies·among·applications·actually·loaded.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">system_information</span><span·class="p">:</span><span·class="nf">sanity_check</span><span·class="p"·data-group-id="4492399377-1">(</span><span·class="p"·data-group-id="4492399377-1">)</span><span·class="p">.</span><span·class="w">208 dependencies·among·applications·actually·loaded.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">system_information</span><span·class="p">:</span><span·class="nf">sanity_check</span><span·class="p"·data-group-id="3882605016-1">(</span><span·class="p"·data-group-id="3882605016-1">)</span><span·class="p">.</span><span·class="w">
209 </span><span·class="ss">ok</span></code></pre><p>Please·take·a·look·at·the·reference·of·<a·href="../../lib/runtime_tools-2.1.1/doc/html/system_information.html#sanity_check/0"·title="">sanity_check()</a>·for·more209 </span><span·class="ss">ok</span></code></pre><p>Please·take·a·look·at·the·reference·of·<a·href="../../lib/runtime_tools-2.1.1/doc/html/system_information.html#sanity_check/0"·title="">sanity_check()</a>·for·more
210 information.</p>210 information.</p>
211 </div>211 </div>
  
212 <div·class="bottom-actions"·id="bottom-actions">212 <div·class="bottom-actions"·id="bottom-actions">
213 ··<div·class="bottom-actions-item">213 ··<div·class="bottom-actions-item">
  
3.84 KB
./usr/share/doc/erlang-doc/html/doc/system/patterns.html
    
Offset 128, 18 lines modifiedOffset 128, 18 lines modified
128 succeeds,·any·unbound·variables·in·the·pattern·become·bound.·If·the·matching128 succeeds,·any·unbound·variables·in·the·pattern·become·bound.·If·the·matching
129 fails,·an·exception·is·raised.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">X</span><span·class="p">.</span><span·class="w">129 fails,·an·exception·is·raised.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">X</span><span·class="p">.</span><span·class="w">
130 </span><span·class="gt">**·1:1:·variable·&#39;X&#39;·is·unbound·**</span><span·class="gp·unselectable">130 </span><span·class="gt">**·1:1:·variable·&#39;X&#39;·is·unbound·**</span><span·class="gp·unselectable">
131 2&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">.</span><span·class="w">131 2&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">.</span><span·class="w">
132 </span><span·class="mi">2</span><span·class="gp·unselectable">132 </span><span·class="mi">2</span><span·class="gp·unselectable">
133 3&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">133 3&gt;·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
134 </span><span·class="mi">3</span><span·class="gp·unselectable">134 </span><span·class="mi">3</span><span·class="gp·unselectable">
135 4&gt;·</span><span·class="p"·data-group-id="7551591162-1">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="7551591162-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·fc6fb2b8932a040701834cb798982c497fac540a60970f5844e005b26912048c·...·]-2">}</span><span·class="p">.</span><span·class="w">135 4&gt;·</span><span·class="p"·data-group-id="9406448415-1">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="9406448415-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·e98a33e5ec76900936c1c518d722e1015bf36c3e876085b924b55beabb404c79·...·]-2">}</span><span·class="p">.</span><span·class="w">
136 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·{1,2}</span><span·class="gp·unselectable">136 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·{1,2}</span><span·class="gp·unselectable">
137 5&gt;·</span><span·class="p"·data-group-id="7551591162-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="7551591162-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·58e79675d8a174f7df4dc15a2c35904dab403da2994b28cf3003955ff7e06da2·...·]-4">}</span><span·class="p">.</span><span·class="w">137 5&gt;·</span><span·class="p"·data-group-id="9406448415-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="9406448415-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·a6a6898d1b71e1156d67a47dd4eecee8a8ccd6c7291659ed21e3792ed476ff19·...·]-4">}</span><span·class="p">.</span><span·class="w">
138 </span><span·class="p"·data-group-id="7551591162-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7551591162-5">}</span><span·class="gp·unselectable">138 </span><span·class="p"·data-group-id="9406448415-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9406448415-5">}</span><span·class="gp·unselectable">
139 6&gt;·</span><span·class="n">Y</span><span·class="p">.</span><span·class="w">139 6&gt;·</span><span·class="n">Y</span><span·class="p">.</span><span·class="w">
140 </span><span·class="mi">3</span></code></pre>140 </span><span·class="mi">3</span></code></pre>
141 </div>141 </div>
  
142 <div·class="bottom-actions"·id="bottom-actions">142 <div·class="bottom-actions"·id="bottom-actions">
143 ··<div·class="bottom-actions-item">143 ··<div·class="bottom-actions-item">
  
70.1 KB
./usr/share/doc/erlang-doc/html/doc/system/prog_ex_records.html
    
Offset 122, 105 lines modifiedOffset 122, 105 lines modified
122 ··<span·class="text">Records·and·Tuples</span>122 ··<span·class="text">Records·and·Tuples</span>
123 </h2>123 </h2>
124 <p>The·main·advantage·of·using·records·rather·than·tuples·is·that·fields·in·a124 <p>The·main·advantage·of·using·records·rather·than·tuples·is·that·fields·in·a
125 record·are·accessed·by·name,·whereas·fields·in·a·tuple·are·accessed·by·position.125 record·are·accessed·by·name,·whereas·fields·in·a·tuple·are·accessed·by·position.
126 To·illustrate·these·differences,·suppose·that·you·want·to·represent·a·person126 To·illustrate·these·differences,·suppose·that·you·want·to·represent·a·person
127 with·the·tuple·<code·class="inline">{Name,·Address,·Phone}</code>.</p><p>To·write·functions·that·manipulate·this·data,·remember·the·following:</p><ul><li>The·<code·class="inline">Name</code>·field·is·the·first·element·of·the·tuple.</li><li>The·<code·class="inline">Address</code>·field·is·the·second·element.</li><li>The·<code·class="inline">Phone</code>·field·is·the·third·element.</li></ul><p>For·example,·to·extract·data·from·a·variable·<code·class="inline">P</code>·that·contains·such·a·tuple,·you127 with·the·tuple·<code·class="inline">{Name,·Address,·Phone}</code>.</p><p>To·write·functions·that·manipulate·this·data,·remember·the·following:</p><ul><li>The·<code·class="inline">Name</code>·field·is·the·first·element·of·the·tuple.</li><li>The·<code·class="inline">Address</code>·field·is·the·second·element.</li><li>The·<code·class="inline">Phone</code>·field·is·the·third·element.</li></ul><p>For·example,·to·extract·data·from·a·variable·<code·class="inline">P</code>·that·contains·such·a·tuple,·you
128 can·write·the·following·code·and·then·use·pattern·matching·to·extract·the128 can·write·the·following·code·and·then·use·pattern·matching·to·extract·the
129 relevant·fields:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="9207198540-1">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><span·class="p"·data-group-id="9207198540-1">)</span><span·class="p">,</span><span·class="w">129 relevant·fields:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="0326887694-1">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><span·class="p"·data-group-id="0326887694-1">)</span><span·class="p">,</span><span·class="w">
130 </span><span·class="n">Address</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="9207198540-2">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><span·class="p"·data-group-id="9207198540-2">)</span><span·class="p">,</span><span·class="w">130 </span><span·class="n">Address</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="0326887694-2">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><span·class="p"·data-group-id="0326887694-2">)</span><span·class="p">,</span><span·class="w">
131 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Such·code·is·difficult·to·read·and·understand,·and·errors·occur·if·the·numbering131 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Such·code·is·difficult·to·read·and·understand,·and·errors·occur·if·the·numbering
132 of·the·elements·in·the·tuple·is·wrong.·If·the·data·representation·of·the·fields132 of·the·elements·in·the·tuple·is·wrong.·If·the·data·representation·of·the·fields
133 is·changed,·by·re-ordering,·adding,·or·removing·fields,·all·references·to·the133 is·changed,·by·re-ordering,·adding,·or·removing·fields,·all·references·to·the
134 person·tuple·must·be·checked·and·possibly·modified.</p><p>Records·allow·references·to·the·fields·by·name,·instead·of·by·position.·In·the134 person·tuple·must·be·checked·and·possibly·modified.</p><p>Records·allow·references·to·the·fields·by·name,·instead·of·by·position.·In·the
135 following·example,·a·record·instead·of·a·tuple·is·used·to·store·the·data:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8375726688-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8375726688-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·9c7b11c2dfe4cbaf894fd3cbc9da7c24ccc0331c43a206c784d15f726730ed20·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·enables·references·to·the·fields·of·the·record·by·name.·For·example,·if·<code·class="inline">P</code>135 following·example,·a·record·instead·of·a·tuple·is·used·to·store·the·data:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="7921966417-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7921966417-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·117f68d7ce4dbda11a335b328f022b6fc34fe43a93fbd06aa45e5c48a7cdd20d·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·enables·references·to·the·fields·of·the·record·by·name.·For·example,·if·<code·class="inline">P</code>
136 is·a·variable·whose·value·is·a·<code·class="inline">person</code>·record,·the·following·code·access·the136 is·a·variable·whose·value·is·a·<code·class="inline">person</code>·record,·the·following·code·access·the
137 name·and·address·fields·of·the·records:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">137 name·and·address·fields·of·the·records:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">
138 </span><span·class="n">Address</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">address</span><span·class="p">,</span><span·class="w">138 </span><span·class="n">Address</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">address</span><span·class="p">,</span><span·class="w">
139 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Internally,·records·are·represented·using·tagged·tuples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5443507466-1">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Phone</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·94156279bd9b5a8847d18795d8325e098f881053181e353642b1bf4fc9dff0c3·...·]-1">}</span></code></pre><h2·id="defining-a-record"·class="section-heading">139 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Internally,·records·are·represented·using·tagged·tuples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9546127257-1">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Phone</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·b5c03c357cf380b10a8a5481ee3adda123f763ba8ff1030ca6407033cdd708a4·...·]-1">}</span></code></pre><h2·id="defining-a-record"·class="section-heading">
140 ··<a·href="#defining-a-record"·class="hover-link">140 ··<a·href="#defining-a-record"·class="hover-link">
141 ····<i·class="ri-link-m"·aria-hidden="true"></i>141 ····<i·class="ri-link-m"·aria-hidden="true"></i>
142 ··</a>142 ··</a>
143 ··<span·class="text">Defining·a·Record</span>143 ··<span·class="text">Defining·a·Record</span>
144 </h2>144 </h2>
145 <p>This·following·definition·of·a·<code·class="inline">person</code>·is·used·in·several·examples·in·this145 <p>This·following·definition·of·a·<code·class="inline">person</code>·is·used·in·several·examples·in·this
146 section.·Three·fields·are·included,·<code·class="inline">name</code>,·<code·class="inline">phone</code>,·and·<code·class="inline">address</code>.·The·default146 section.·Three·fields·are·included,·<code·class="inline">name</code>,·<code·class="inline">phone</code>,·and·<code·class="inline">address</code>.·The·default
147 values·for·<code·class="inline">name</code>·and·<code·class="inline">phone</code>·is·&quot;&quot;·and·[],·respectively.·The·default·value·for147 values·for·<code·class="inline">name</code>·and·<code·class="inline">phone</code>·is·&quot;&quot;·and·[],·respectively.·The·default·value·for
148 <code·class="inline">address</code>·is·the·atom·<code·class="inline">undefined</code>,·since·no·default·value·is·supplied·for·this148 <code·class="inline">address</code>·is·the·atom·<code·class="inline">undefined</code>,·since·no·default·value·is·supplied·for·this
149 field:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1695977784-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1695977784-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·459,·SHA:·d4fd686068643524cd199997d663365115a10612a590134c5ada4e4c386d61ad·...·]4-1">)</span><span·class="p">.</span></code></pre><p>The·record·must·be·defined·in·the·shell·to·enable·use·of·the·record·syntax·in149 field:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="6160197434-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6160197434-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·459,·SHA:·58b9cde55d212f999915b266ca42a31bdb6f53bef6a45c59be0a0bde2dbb6158·...·]4-1">)</span><span·class="p">.</span></code></pre><p>The·record·must·be·defined·in·the·shell·to·enable·use·of·the·record·syntax·in
150 the·examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">rd</span><span·class="p"·data-group-id="3280233226-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3280233226-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·460,·SHA:·0623fd11a0116f1ecdcb648ce2ad0cd49f8b732b276baacb5a95e9c5e4569c3a·...·]-1">)</span><span·class="p">.</span><span·class="w">150 the·examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">rd</span><span·class="p"·data-group-id="9469258263-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9469258263-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·460,·SHA:·9501074128df649bbfd290d555ab0c370d238661c56c4947a6bf9ef145853824·...·]-1">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="ss">person</span></code></pre><p>This·is·because·record·definitions·are·only·available·at·compile·time,·not·at151 </span><span·class="ss">person</span></code></pre><p>This·is·because·record·definitions·are·only·available·at·compile·time,·not·at
152 runtime.·For·details·on·records·in·the·shell,·see·the·<a·href="../../lib/stdlib-6.2/doc/html/shell.html"><code·class="inline">shell</code></a>·manual·page·in152 runtime.·For·details·on·records·in·the·shell,·see·the·<a·href="../../lib/stdlib-6.2/doc/html/shell.html"><code·class="inline">shell</code></a>·manual·page·in
153 STDLIB.</p><h2·id="creating-a-record"·class="section-heading">153 STDLIB.</p><h2·id="creating-a-record"·class="section-heading">
154 ··<a·href="#creating-a-record"·class="hover-link">154 ··<a·href="#creating-a-record"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">Creating·a·Record</span>157 ··<span·class="text">Creating·a·Record</span>
158 </h2>158 </h2>
159 <p>A·new·<code·class="inline">person</code>·record·is·created·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1735555888-1">{</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="1735555888-2">[</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">2</span><span[·...·truncated·by·diffoscope;·len:·475,·SHA:·e13f85b8d925984a6c275b2529635d25bbd2c45ad61b7d0b93f06f515d5baf90·...·]-1">}</span><span·class="p">.</span><span·class="w">159 <p>A·new·<code·class="inline">person</code>·record·is·created·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2863054685-1">{</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="2863054685-2">[</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">2</span><span[·...·truncated·by·diffoscope;·len:·475,·SHA:·ed93901baed278147deb825a41ca3fa67d1be3705fdee375d5dedb49dfd8f57e·...·]-1">}</span><span·class="p">.</span><span·class="w">
160 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1735555888-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Robert&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">[·...·truncated·by·diffoscope;·len:·707,·SHA:·32e22de3fb0cd71f59d6d4ce5128a449de9c360d747380aec359ca88594eaf34·...·]-3">}</span></code></pre><p>As·the·<code·class="inline">address</code>·field·was·omitted,·its·default·value·is·used.</p><p>From·Erlang·5.1/OTP·R8B,·a·value·to·all·fields·in·a·record·can·be·set·with·the160 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2863054685-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Robert&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">[·...·truncated·by·diffoscope;·len:·707,·SHA:·24c61ef4c3cf25f056151ea34f37d51b1cd54f1ee5701ad84291793116a53959·...·]-3">}</span></code></pre><p>As·the·<code·class="inline">address</code>·field·was·omitted,·its·default·value·is·used.</p><p>From·Erlang·5.1/OTP·R8B,·a·value·to·all·fields·in·a·record·can·be·set·with·the
161 special·field·<code·class="inline">_</code>.·<code·class="inline">_</code>·means·&quot;all·fields·not·explicitly·specified&quot;.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="0344789047-1">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Jakob&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·126,·SHA:·eab6739d911d47a655ff8c615a0dbbe6877f09471fa8484074e88a0bd992dcaf·...·]-1">}</span><span·class="p">.</span><span·class="w">161 special·field·<code·class="inline">_</code>.·<code·class="inline">_</code>·means·&quot;all·fields·not·explicitly·specified&quot;.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6011976635-1">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Jakob&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·126,·SHA:·f5d642882185c08cfb2f56f239097ab18e007f3f3d475951c5721109875b982d·...·]-1">}</span><span·class="p">.</span><span·class="w">
162 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="0344789047-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Jakob&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=[·...·truncated·by·diffoscope;·len:·269,·SHA:·f53ab6cfe3fdce48c88d71be98ed2f4c4dc47d7b9f005f7bf84856c8a732f1c9·...·]-2">}</span></code></pre><p>It·is·primarily·intended·to·be·used·in·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>·and162 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6011976635-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Jakob&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=[·...·truncated·by·diffoscope;·len:·269,·SHA:·def1fe19d7682615abe32a5c01e6f7fa84c0ce6f3f86fdcb571a1413bd53504c·...·]-2">}</span></code></pre><p>It·is·primarily·intended·to·be·used·in·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>·and
163 <a·href="../../lib/mnesia-4.23.3/doc/html/mnesia.html#match_object/3"><code·class="inline">mnesia:match_object/3</code></a>,·to·set·record·fields·to·the·atom·<code·class="inline">'_'</code>.·(This·is·a163 <a·href="../../lib/mnesia-4.23.3/doc/html/mnesia.html#match_object/3"><code·class="inline">mnesia:match_object/3</code></a>,·to·set·record·fields·to·the·atom·<code·class="inline">'_'</code>.·(This·is·a
164 wildcard·in·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>.)</p><h2·id="accessing-a-record-field"·class="section-heading">164 wildcard·in·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>.)</p><h2·id="accessing-a-record-field"·class="section-heading">
165 ··<a·href="#accessing-a-record-field"·class="hover-link">165 ··<a·href="#accessing-a-record-field"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">Accessing·a·Record·Field</span>168 ··<span·class="text">Accessing·a·Record·Field</span>
169 </h2>169 </h2>
170 <p>The·following·example·shows·how·to·access·a·record·field:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6713533984-1">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·568,·SHA:·d949b027bdbb1bc4d76612c2b9c4034280d8e1ecc4e24c875eaf824914a08b9f·...·]-1">}</span><span·class="p">.</span><span·class="w">170 <p>The·following·example·shows·how·to·access·a·record·field:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="4969837561-1">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·568,·SHA:·f6f2b6d6202d2650ee1fee2b81626f6c740b5570b8f62ab7a36229ca85ed0c5a·...·]-1">}</span><span·class="p">.</span><span·class="w">
171 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6713533984-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</[·...·truncated·by·diffoscope;·len:·704,·SHA:·7850cdfccb2c2e2a835e3f0f1f434e3469ee217a2531d75ad30a76ef902abe09·...·]-3">}</span><span·class="gp·unselectable">171 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="4969837561-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</[·...·truncated·by·diffoscope;·len:·704,·SHA:·1911153908124ab279b4c2053c216dfc17d212118373514fcf6236708d50ad0a·...·]-3">}</span><span·class="gp·unselectable">
172 &gt;·</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">.</span><span·class="w">172 &gt;·</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">.</span><span·class="w">
173 </span><span·class="s">&quot;Joe&quot;</span></code></pre><h2·id="updating-a-record"·class="section-heading">173 </span><span·class="s">&quot;Joe&quot;</span></code></pre><h2·id="updating-a-record"·class="section-heading">
174 ··<a·href="#updating-a-record"·class="hover-link">174 ··<a·href="#updating-a-record"·class="hover-link">
175 ····<i·class="ri-link-m"·aria-hidden="true"></i>175 ····<i·class="ri-link-m"·aria-hidden="true"></i>
176 ··</a>176 ··</a>
177 ··<span·class="text">Updating·a·Record</span>177 ··<span·class="text">Updating·a·Record</span>
178 </h2>178 </h2>
179 <p>The·following·example·shows·how·to·update·a·record:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">P1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1455481634-1">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="1455481634-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·c4f21c658821768c76958b81173ee008ad347a30d97ef1e0f9b32171ff75f9da·...·]-1">}</span><span·class="p">.</span><span·class="w">179 <p>The·following·example·shows·how·to·update·a·record:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">P1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5742903715-1">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="5742903715-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·a2417c40b28ca4a858ac039efe809ae645825896e6d41ac3ab932b3cce79452d·...·]-1">}</span><span·class="p">.</span><span·class="w">
180 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1455481634-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</[·...·truncated·by·diffoscope;·len:·469,·SHA:·b4531f3c4f090c01809936b03941368f8105fe5f97fae5867a0237c8dd496066·...·]-3">}</span><span·class="gp·unselectable">180 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5742903715-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</[·...·truncated·by·diffoscope;·len:·469,·SHA:·2940e60aa369b03c9f32728ca6fdd82b0e620b1cea6807f2439564adb5842667·...·]-3">}</span><span·class="gp·unselectable">
181 &gt;·</span><span·class="n">P2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P1</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1455481634-5">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Robert&quot;</span><span·class="p"·data-group-id="1455481634-5">}</span><span·class="p">.</span><span·class="w">181 &gt;·</span><span·class="n">P2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P1</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5742903715-5">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Robert&quot;</span><span·class="p"·data-group-id="5742903715-5">}</span><span·class="p">.</span><span·class="w">
182 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1455481634-6">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Robert&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">[·...·truncated·by·diffoscope;·len:·472,·SHA:·4b0a686fc004e8d6a2870c5125d9a4e3247ba5aaecc14cd50b2fb7538789b0a5·...·]-6">}</span></code></pre><h2·id="type-testing"·class="section-heading">182 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5742903715-6">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Robert&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">[·...·truncated·by·diffoscope;·len:·472,·SHA:·2dfabc710cde23a448c62e84eea35d66f7011d663e8176fadf2615214f8a646d·...·]-6">}</span></code></pre><h2·id="type-testing"·class="section-heading">
183 ··<a·href="#type-testing"·class="hover-link">183 ··<a·href="#type-testing"·class="hover-link">
184 ····<i·class="ri-link-m"·aria-hidden="true"></i>184 ····<i·class="ri-link-m"·aria-hidden="true"></i>
185 ··</a>185 ··</a>
186 ··<span·class="text">Type·Testing</span>186 ··<span·class="text">Type·Testing</span>
187 </h2>187 </h2>
188 <p>The·following·example·shows·that·the·guard·succeeds·if·<code·class="inline">P</code>·is·record·of·type188 <p>The·following·example·shows·that·the·guard·succeeds·if·<code·class="inline">P</code>·is·record·of·type
189 <code·class="inline">person</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="0409235111-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="0409235111-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="0409235111-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·7f8ad53b1c4ecd4c43ead71c3c1ae751a0697773645456343937bca1a596fb9a·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">a_person</span><span·class="p">;</span><span·class="w">189 <code·class="inline">person</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="4094573159-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="4094573159-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="4094573159-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·aa5b8b56c9ccfb1632ac67687a84ac38e64833b17d9ae0e48fa03a78f58feac8·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">a_person</span><span·class="p">;</span><span·class="w">
190 </span><span·class="nf">foo</span><span·class="p"·data-group-id="0409235111-3">(</span><span·class="p">_</span><span·class="p"·data-group-id="0409235111-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">not_a_person</span><span·class="p">.</span></code></pre><h2·id="pattern-matching"·class="section-heading">190 </span><span·class="nf">foo</span><span·class="p"·data-group-id="4094573159-3">(</span><span·class="p">_</span><span·class="p"·data-group-id="4094573159-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">not_a_person</span><span·class="p">.</span></code></pre><h2·id="pattern-matching"·class="section-heading">
191 ··<a·href="#pattern-matching"·class="hover-link">191 ··<a·href="#pattern-matching"·class="hover-link">
192 ····<i·class="ri-link-m"·aria-hidden="true"></i>192 ····<i·class="ri-link-m"·aria-hidden="true"></i>
193 ··</a>193 ··</a>
194 ··<span·class="text">Pattern·Matching</span>194 ··<span·class="text">Pattern·Matching</span>
195 </h2>195 </h2>
196 <p>Matching·can·be·used·in·combination·with·records,·as·shown·in·the·following196 <p>Matching·can·be·used·in·combination·with·records,·as·shown·in·the·following
197 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">P3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1673434180-1">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="1673434180-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·d276c836f7e76e7e60154e1acc696a459b445d3a0686446ae348cc371ba126b9·...·]-1">}</span><span·class="p">.</span><span·class="w">197 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">P3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8123320377-1">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="8123320377-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·106b0e5a93d80f5925bed36b4ec11e7edf4be6f37dcae694abb51d7c151c4e82·...·]-1">}</span><span·class="p">.</span><span·class="w">
198 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1673434180-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</[·...·truncated·by·diffoscope;·len:·469,·SHA:·ffb04e90fd9ce3997f52177d0d0977527ab9a22a02290ad77ada570e457ac05f·...·]-3">}</span><span·class="gp·unselectable">198 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8123320377-3">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Joe&quot;</span><span·class="p">,</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</[·...·truncated·by·diffoscope;·len:·469,·SHA:·09b921898e38834ddd0d8ec8d207f6b9f8e4bb66d5e7d8ab4d6c84bef37bd92e·...·]-3">}</span><span·class="gp·unselectable">
199 &gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1673434180-5">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="1673434180-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">.</span><span·class="w">199 &gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8123320377-5">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="8123320377-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">.</span><span·class="w">
200 </span><span·class="s">&quot;Joe&quot;</span></code></pre><p>The·following·function·takes·a·list·of·<code·class="inline">person</code>·records·and·searches·for·the200 </span><span·class="s">&quot;Joe&quot;</span></code></pre><p>The·following·function·takes·a·list·of·<code·class="inline">person</code>·records·and·searches·for·the
201 phone·number·of·a·person·with·a·particular·name:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">find_phone</span><span·class="p"·data-group-id="5921578216-1">(</span><span·class="p"·data-group-id="5921578216-2">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5921578216-3">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="n">Name</[·...·truncated·by·diffoscope;·len:·452,·SHA:·60a093359bc27dfff95e0bb372ad843f86957ec5e64da480166e62bc467552c9·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">201 phone·number·of·a·person·with·a·particular·name:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">find_phone</span><span·class="p"·data-group-id="8279888414-1">(</span><span·class="p"·data-group-id="8279888414-2">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8279888414-3">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="n">Name</[·...·truncated·by·diffoscope;·len:·452,·SHA:·35762d1263c78290f94aa5c6af95ad6ac4947a15757a819c2954a238710b044f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="5921578216-4">{</span><span·class="ss">found</span><span·class="p">,</span><span·class="w">··</span><span·class="n">Phone</span><span·class="p"·data-group-id="5921578216-4">}</span><span·class="p">;</span><span·class="w">202 ····</span><span·class="p"·data-group-id="8279888414-4">{</span><span·class="ss">found</span><span·class="p">,</span><span·class="w">··</span><span·class="n">Phone</span><span·class="p"·data-group-id="8279888414-4">}</span><span·class="p">;</span><span·class="w">
203 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="5921578216-5">(</span><span·class="p"·data-group-id="5921578216-6">[</span><span·class="p">_</span><span·class="p">|</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="5921578216-6">]</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·84,·SHA:·08241cd4dc0e6e3b512fe3fdaf68556d0d62a2e0cd5432dce8e1c78f1353f765·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">203 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="8279888414-5">(</span><span·class="p"·data-group-id="8279888414-6">[</span><span·class="p">_</span><span·class="p">|</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="8279888414-6">]</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·84,·SHA:·82fc272fdf2a9c28be142498c53166d32df5e37d3c169e72a3aa5f7a98e3ab17·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="nf">find_phone</span><span·class="p"·data-group-id="5921578216-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="5921578216-7">)</span><span·class="p">;</span><span·class="w">204 ····</span><span·class="nf">find_phone</span><span·class="p"·data-group-id="8279888414-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="8279888414-7">)</span><span·class="p">;</span><span·class="w">
205 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="5921578216-8">(</span><span·class="p"·data-group-id="5921578216-9">[</span><span·class="p"·data-group-id="5921578216-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="5921578216-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="8279888414-8">(</span><span·class="p"·data-group-id="8279888414-9">[</span><span·class="p"·data-group-id="8279888414-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="8279888414-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="ss">not_found</span><span·class="p">.</span></code></pre><p>The·fields·referred·to·in·the·pattern·can·be·given·in·any·order.</p><h2·id="nested-records"·class="section-heading">206 ····</span><span·class="ss">not_found</span><span·class="p">.</span></code></pre><p>The·fields·referred·to·in·the·pattern·can·be·given·in·any·order.</p><h2·id="nested-records"·class="section-heading">
207 ··<a·href="#nested-records"·class="hover-link">207 ··<a·href="#nested-records"·class="hover-link">
208 ····<i·class="ri-link-m"·aria-hidden="true"></i>208 ····<i·class="ri-link-m"·aria-hidden="true"></i>
209 ··</a>209 ··</a>
210 ··<span·class="text">Nested·Records</span>210 ··<span·class="text">Nested·Records</span>
211 </h2>211 </h2>
212 <p>The·value·of·a·field·in·a·record·can·be·an·instance·of·a·record.·Retrieval·of212 <p>The·value·of·a·field·in·a·record·can·be·an·instance·of·a·record.·Retrieval·of
213 nested·data·can·be·done·stepwise,·or·in·a·single·step,·as·shown·in·the·following213 nested·data·can·be·done·stepwise,·or·in·a·single·step,·as·shown·in·the·following
214 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5153504527-1">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5153504527-2">{</span><span·class="ss">first</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·320,·SHA:·537cca22138e2cd7ce80619d610695644cc4ebc7f71a3d6558d0e875ae87543c·...·]7-1">)</span><span·class="p">.</span><span·class="w">214 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5528159547-1">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5528159547-2">{</span><span·class="ss">first</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·320,·SHA:·1f0f00d2df5f1ccb8273eb1593b88dcb3ec8a0be5649e6676b8f05db3fc87319·...·]7-1">)</span><span·class="p">.</span><span·class="w">
215 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5153504527-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5153504527-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·324,·SHA:·cf9a2fae27d24eed0678e50916b969b6422c16dbc75c8a3c7d2c7c0d16e4fdf1·...·]7-3">)</span><span·class="p">.</span><span·class="w">215 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5528159547-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5528159547-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·324,·SHA:·b697fe5008043651ca869ae3b56b31e92ef91e507ed8f880d0f16cdcc0100b1a·...·]7-3">)</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="nf">demo</span><span·class="p"·data-group-id="5153504527-6">(</span><span·class="p"·data-group-id="5153504527-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 </span><span·class="nf">demo</span><span·class="p"·data-group-id="5528159547-6">(</span><span·class="p"·data-group-id="5528159547-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
217 ··</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5153504527-7">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">name</span><span·class="p"·data-group-id="5153504527-8">{</span><span·class="ss">first</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·379,·SHA:·04c12e05598e9f43e6fb05948ea047a364049b042ed39e44843765a8f4bdce68·...·]7-7">}</span><span·class="p">,</span><span·class="w">217 ··</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5528159547-7">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">name</span><span·class="p"·data-group-id="5528159547-8">{</span><span·class="ss">first</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·379,·SHA:·5d8f43118b5da23a29917c529072e454bbfca197ba8d35e97c48498e72c112a9·...·]7-7">}</span><span·class="p">,</span><span·class="w">
218 ··</span><span·class="n">First</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5153504527-9">(</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p"·data-group-id="5153504527-9">)</span><span·class="o">#</span><span·class="ss">name</span><span·class="p">.</span><span·class="ss">first</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">demo()</code>·evaluates·to·<code·class="inline">&quot;Robert&quot;</code>.</p><h2·id="a-longer-example"·class="section-heading">218 ··</span><span·class="n">First</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5528159547-9">(</span><span·class="n">P</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p"·data-group-id="5528159547-9">)</span><span·class="o">#</span><span·class="ss">name</span><span·class="p">.</span><span·class="ss">first</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">demo()</code>·evaluates·to·<code·class="inline">&quot;Robert&quot;</code>.</p><h2·id="a-longer-example"·class="section-heading">
219 ··<a·href="#a-longer-example"·class="hover-link">219 ··<a·href="#a-longer-example"·class="hover-link">
220 ····<i·class="ri-link-m"·aria-hidden="true"></i>220 ····<i·class="ri-link-m"·aria-hidden="true"></i>
221 ··</a>221 ··</a>
222 ··<span·class="text">A·Longer·Example</span>222 ··<span·class="text">A·Longer·Example</span>
223 </h2>223 </h2>
224 <p>Comments·are·embedded·in·the·following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·File:·person.hrl</span><span·class="w">224 <p>Comments·are·embedded·in·the·following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·File:·person.hrl</span><span·class="w">
  
Offset 230, 48 lines modifiedOffset 230, 48 lines modified
230 </span><span·class="c1">%%····name:··A·string·(default·is·undefined).</span><span·class="w">230 </span><span·class="c1">%%····name:··A·string·(default·is·undefined).</span><span·class="w">
231 </span><span·class="c1">%%····age:···An·integer·(default·is·undefined).</span><span·class="w">231 </span><span·class="c1">%%····age:···An·integer·(default·is·undefined).</span><span·class="w">
232 </span><span·class="c1">%%····phone:·A·list·of·integers·(default·is·[]).</span><span·class="w">232 </span><span·class="c1">%%····phone:·A·list·of·integers·(default·is·[]).</span><span·class="w">
233 </span><span·class="c1">%%····dict:··A·dictionary·containing·various·information</span><span·class="w">233 </span><span·class="c1">%%····dict:··A·dictionary·containing·various·information</span><span·class="w">
234 </span><span·class="c1">%%···········about·the·person.</span><span·class="w">234 </span><span·class="c1">%%···········about·the·person.</span><span·class="w">
235 </span><span·class="c1">%%···········A·{Key,·Value}·list·(default·is·the·empty·list).</span><span·class="w">235 </span><span·class="c1">%%···········A·{Key,·Value}·list·(default·is·the·empty·list).</span><span·class="w">
236 </span><span·class="c1">%%------------------------------------------------------------</span><span·class="w">236 </span><span·class="c1">%%------------------------------------------------------------</span><span·class="w">
237 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="6790561137-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6790561137-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span>[·...·truncated·by·diffoscope;·len:·878,·SHA:·ce51fbc5bfaec9c30609aaf2e20a8e66c890ab7629d6eb16793d73932a008a39·...·]-1">)</span><span·class="p">.</span><span·class="w">237 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0626752832-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0626752832-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span>[·...·truncated·by·diffoscope;·len:·878,·SHA:·b6b6e023a687824619bc3f3aa857fc954da92ec864d81450a44d97b44f454fc5·...·]-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="7757985813-2">(</span><span·class="s">&quot;person.hrl&quot;</span><span·class="p"·data-group-id="7757985813-2">)</span><span·class="p">.</span><span·class="w">238 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="8195663407-2">(</span><span·class="s">&quot;person.hrl&quot;</span><span·class="p"·data-group-id="8195663407-2">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="7757985813-3">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="7757985813-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·For·test·purposes·only.</span><span·class="w">239 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="8195663407-3">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8195663407-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·For·test·purposes·only.</span><span·class="w">
  
240 </span><span·class="c1">%%·This·creates·an·instance·of·a·person.</span><span·class="w">240 </span><span·class="c1">%%·This·creates·an·instance·of·a·person.</span><span·class="w">
241 </span><span·class="c1">%%···Note:·The·phone·number·is·not·supplied·so·the</span><span·class="w">241 </span><span·class="c1">%%···Note:·The·phone·number·is·not·supplied·so·the</span><span·class="w">
242 </span><span·class="c1">%%·········default·value·[]·will·be·used.</span><span·class="w">242 </span><span·class="c1">%%·········default·value·[]·will·be·used.</span><span·class="w">
  
243 </span><span·class="nf">make_hacker_without_phone</span><span·class="p"·data-group-id="7757985813-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Age</span><span·class="p"·data-group-id="7757985813-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">243 </span><span·class="nf">make_hacker_without_phone</span><span·class="p"·data-group-id="8195663407-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Age</span><span·class="p"·data-group-id="8195663407-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
244 ···</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="7757985813-5">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Age</span><span·class="p">,</span><span·class="w">244 ···</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8195663407-5">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Age</span><span·class="p">,</span><span·class="w">
245 ···········</span><span·class="ss">dict</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7757985813-6">[</span><span·class="p"·data-group-id="7757985813-7">{</span><span·class="ss">computer_knowledge</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">excellent</span><span·class="p"·data-group-id="7757985813-7">}</span><span·class="p">,</span><span·class="w">245 ···········</span><span·class="ss">dict</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8195663407-6">[</span><span·class="p"·data-group-id="8195663407-7">{</span><span·class="ss">computer_knowledge</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">excellent</span><span·class="p"·data-group-id="8195663407-7">}</span><span·class="p">,</span><span·class="w">
246 ···················</span><span·class="p"·data-group-id="7757985813-8">{</span><span·class="ss">drinks</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coke</span><span·class="p"·data-group-id="7757985813-8">}</span><span·class="p"·data-group-id="7757985813-6">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·becb21cfb2b86364cfb4ffc761133c913e1866081dfaef02b0b07a94f2e038c1·...·]-5">}</span><span·class="p">.</span><span·class="w">246 ···················</span><span·class="p"·data-group-id="8195663407-8">{</span><span·class="ss">drinks</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coke</span><span·class="p"·data-group-id="8195663407-8">}</span><span·class="p"·data-group-id="8195663407-6">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·7325f97ec868f40384b401b81f779ec66164bf9ea7ba6a1dc016e4c9a31c5fb6·...·]-5">}</span><span·class="p">.</span><span·class="w">
  
247 </span><span·class="c1">%%·This·demonstrates·matching·in·arguments</span><span·class="w">247 </span><span·class="c1">%%·This·demonstrates·matching·in·arguments</span><span·class="w">
Max diff block lines reached; 12478/71615 bytes (17.42%) of diff not shown.
84.1 KB
./usr/share/doc/erlang-doc/html/doc/system/records_macros.html
    
Offset 124, 40 lines modifiedOffset 124, 40 lines modified
124 </h2>124 </h2>
125 <p>To·illustrate·this,·the·messenger·example·from·the·previous·section·is·divided125 <p>To·illustrate·this,·the·messenger·example·from·the·previous·section·is·divided
126 into·the·following·five·files:</p><ul><li><p><code·class="inline">mess_config.hrl</code></p><p>Header·file·for·configuration·data</p></li><li><p><code·class="inline">mess_interface.hrl</code></p><p>Interface·definitions·between·the·client·and·the·messenger</p></li><li><p><code·class="inline">user_interface.erl</code></p><p>Functions·for·the·user·interface</p></li><li><p><code·class="inline">mess_client.erl</code></p><p>Functions·for·the·client·side·of·the·messenger</p></li><li><p><code·class="inline">mess_server.erl</code></p><p>Functions·for·the·server·side·of·the·messenger</p></li></ul><p>While·doing·this,·the·message·passing·interface·between·the·shell,·the·client,126 into·the·following·five·files:</p><ul><li><p><code·class="inline">mess_config.hrl</code></p><p>Header·file·for·configuration·data</p></li><li><p><code·class="inline">mess_interface.hrl</code></p><p>Interface·definitions·between·the·client·and·the·messenger</p></li><li><p><code·class="inline">user_interface.erl</code></p><p>Functions·for·the·user·interface</p></li><li><p><code·class="inline">mess_client.erl</code></p><p>Functions·for·the·client·side·of·the·messenger</p></li><li><p><code·class="inline">mess_server.erl</code></p><p>Functions·for·the·server·side·of·the·messenger</p></li></ul><p>While·doing·this,·the·message·passing·interface·between·the·shell,·the·client,
127 and·the·server·is·cleaned·up·and·is·defined·using·<em>records</em>.·Also,·<em>macros</em>·are127 and·the·server·is·cleaned·up·and·is·defined·using·<em>records</em>.·Also,·<em>macros</em>·are
128 introduced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_config.hrl----</span><span·class="w">128 introduced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_config.hrl----</span><span·class="w">
  
129 </span><span·class="c1">%%%·Configure·the·location·of·the·server·node,</span><span·class="w">129 </span><span·class="c1">%%%·Configure·the·location·of·the·server·node,</span><span·class="w">
130 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="7975299771-1">(</span><span·class="ss">server_node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">messenger@super</span><span·class="p"·data-group-id="7975299771-1">)</span><span·class="p">.</span><span·class="w">130 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3580346458-1">(</span><span·class="ss">server_node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">messenger@super</span><span·class="p"·data-group-id="3580346458-1">)</span><span·class="p">.</span><span·class="w">
  
131 </span><span·class="c1">%%%----END·FILE----</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_interface.hrl----</span><span·class="w">131 </span><span·class="c1">%%%----END·FILE----</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_interface.hrl----</span><span·class="w">
  
132 </span><span·class="c1">%%%·Message·interface·between·client·and·server·and·client·shell·for</span><span·class="w">132 </span><span·class="c1">%%%·Message·interface·between·client·and·server·and·client·shell·for</span><span·class="w">
133 </span><span·class="c1">%%%·messenger·program</span><span·class="w">133 </span><span·class="c1">%%%·messenger·program</span><span·class="w">
  
134 </span><span·class="c1">%%%Messages·from·Client·to·server·received·in·server/1·function.</span><span·class="w">134 </span><span·class="c1">%%%Messages·from·Client·to·server·received·in·server/1·function.</span><span·class="w">
135 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3431812043-1">(</span><span·class="ss">logon</span><span·class="p">,</span><span·class="p"·data-group-id="3431812043-2">{</span><span·class="ss">client_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">username</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·f9650cd35f8e1beb7ac35ea3815326d64b70b114af67964cd9b69842998a9dfd·...·]-1">)</span><span·class="p">.</span><span·class="w">135 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1372348064-1">(</span><span·class="ss">logon</span><span·class="p">,</span><span·class="p"·data-group-id="1372348064-2">{</span><span·class="ss">client_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">username</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·ea70dad9a98aae7c4a0a51102341045f5b315b75e878947ce439ea8c6cfd6262·...·]-1">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3431812043-3">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="3431812043-4">{</span><span·class="ss">client_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">to_name</span><span·class="[·...·truncated·by·diffoscope;·len:·160,·SHA:·30d6ab40c4da316578ddfa688e80c53b5d66db2912c7d138222a87e7e0de6e73·...·]-3">)</span><span·class="p">.</span><span·class="w">136 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1372348064-3">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="1372348064-4">{</span><span·class="ss">client_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">to_name</span><span·class="[·...·truncated·by·diffoscope;·len:·160,·SHA:·7fe189be1d73749f3e83bd3f85631e6bcc8eabe363ca70579b23623806b7b4a3·...·]-3">)</span><span·class="p">.</span><span·class="w">
137 </span><span·class="c1">%%%·{&#39;EXIT&#39;,·ClientPid,·Reason}··(client·terminated·or·unreachable.</span><span·class="w">137 </span><span·class="c1">%%%·{&#39;EXIT&#39;,·ClientPid,·Reason}··(client·terminated·or·unreachable.</span><span·class="w">
  
138 </span><span·class="c1">%%%·Messages·from·Server·to·Client,·received·in·await_result/0·function</span><span·class="w">138 </span><span·class="c1">%%%·Messages·from·Server·to·Client,·received·in·await_result/0·function</span><span·class="w">
139 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3431812043-5">(</span><span·class="ss">abort_client</span><span·class="p">,</span><span·class="p"·data-group-id="3431812043-6">{</span><span·class="ss">message</span><span·class="p"·data-group-id="3431812043-6">}</span><span·class="p"·data-group-id="343181[·...·truncated·by·diffoscope;·len:·4,·SHA:·0dfcebf485c29dd65394538204a5c43821de1e5517712413f44962c1422b3489·...·]-5">)</span><span·class="p">.</span><span·class="w">139 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1372348064-5">(</span><span·class="ss">abort_client</span><span·class="p">,</span><span·class="p"·data-group-id="1372348064-6">{</span><span·class="ss">message</span><span·class="p"·data-group-id="1372348064-6">}</span><span·class="p"·data-group-id="137234[·...·truncated·by·diffoscope;·len:·4,·SHA:·ebafcf01f985fd121457e80f9598310c835f2403eef8e4eed1c23eff91d30549·...·]-5">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="c1">%%%·Messages·are:·user_exists_at_other_node,</span><span·class="w">140 </span><span·class="c1">%%%·Messages·are:·user_exists_at_other_node,</span><span·class="w">
141 </span><span·class="c1">%%%···············you_are_not_logged_on</span><span·class="w">141 </span><span·class="c1">%%%···············you_are_not_logged_on</span><span·class="w">
142 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3431812043-7">(</span><span·class="ss">server_reply</span><span·class="p">,</span><span·class="p"·data-group-id="3431812043-8">{</span><span·class="ss">message</span><span·class="p"·data-group-id="3431812043-8">}</span><span·class="p"·data-group-id="343181[·...·truncated·by·diffoscope;·len:·4,·SHA:·0dfcebf485c29dd65394538204a5c43821de1e5517712413f44962c1422b3489·...·]-7">)</span><span·class="p">.</span><span·class="w">142 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1372348064-7">(</span><span·class="ss">server_reply</span><span·class="p">,</span><span·class="p"·data-group-id="1372348064-8">{</span><span·class="ss">message</span><span·class="p"·data-group-id="1372348064-8">}</span><span·class="p"·data-group-id="137234[·...·truncated·by·diffoscope;·len:·4,·SHA:·ebafcf01f985fd121457e80f9598310c835f2403eef8e4eed1c23eff91d30549·...·]-7">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="c1">%%%·Messages·are:·logged_on</span><span·class="w">143 </span><span·class="c1">%%%·Messages·are:·logged_on</span><span·class="w">
144 </span><span·class="c1">%%%···············receiver_not_found</span><span·class="w">144 </span><span·class="c1">%%%···············receiver_not_found</span><span·class="w">
145 </span><span·class="c1">%%%···············sent··(Message·has·been·sent·(no·guarantee)</span><span·class="w">145 </span><span·class="c1">%%%···············sent··(Message·has·been·sent·(no·guarantee)</span><span·class="w">
146 </span><span·class="c1">%%%·Messages·from·Server·to·Client·received·in·client/1·function</span><span·class="w">146 </span><span·class="c1">%%%·Messages·from·Server·to·Client·received·in·client/1·function</span><span·class="w">
147 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3431812043-9">(</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="p"·data-group-id="3431812043-10">{</span><span·class="ss">from_name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·cl[·...·truncated·by·diffoscope;·len:·87,·SHA:·b8e309af72cd4b8422b5412d694c16300ded1b508363d131e2a0eff3abf4beea·...·]-9">)</span><span·class="p">.</span><span·class="w">147 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1372348064-9">(</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="p"·data-group-id="1372348064-10">{</span><span·class="ss">from_name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·cl[·...·truncated·by·diffoscope;·len:·87,·SHA:·a1cd168979801b08e02493804d089343ee70b843f8ffa201f5199d4ab7e8005b·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
148 </span><span·class="c1">%%%·Messages·from·shell·to·Client·received·in·client/1·function</span><span·class="w">148 </span><span·class="c1">%%%·Messages·from·shell·to·Client·received·in·client/1·function</span><span·class="w">
149 </span><span·class="c1">%%%·spawn(mess_client,·client,·[server_node(),·Name])</span><span·class="w">149 </span><span·class="c1">%%%·spawn(mess_client,·client,·[server_node(),·Name])</span><span·class="w">
150 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3431812043-11">(</span><span·class="ss">message_to</span><span·class="p">,</span><span·class="p"·data-group-id="3431812043-12">{</span><span·class="ss">to_name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·class[·...·truncated·by·diffoscope;·len:·84,·SHA:·160e2e004454c0c7b684e41fa61466e5a46aded44d47ea9ddc2cd3aeda93884a·...·]-11">)</span><span·class="p">.</span><span·class="w">150 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1372348064-11">(</span><span·class="ss">message_to</span><span·class="p">,</span><span·class="p"·data-group-id="1372348064-12">{</span><span·class="ss">to_name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·class[·...·truncated·by·diffoscope;·len:·84,·SHA:·b2a51856efda5b54cd5db31d336e3fcd49c4675f2643f40ba2d57df1fbdeafaa·...·]-11">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="c1">%%%·logoff</span><span·class="w">151 </span><span·class="c1">%%%·logoff</span><span·class="w">
  
152 </span><span·class="c1">%%%----END·FILE----</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·user_interface.erl----</span><span·class="w">152 </span><span·class="c1">%%%----END·FILE----</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·user_interface.erl----</span><span·class="w">
  
153 </span><span·class="c1">%%%·User·interface·to·the·messenger·program</span><span·class="w">153 </span><span·class="c1">%%%·User·interface·to·the·messenger·program</span><span·class="w">
154 </span><span·class="c1">%%%·login(Name)</span><span·class="w">154 </span><span·class="c1">%%%·login(Name)</span><span·class="w">
155 </span><span·class="c1">%%%·····One·user·at·a·time·can·log·in·from·each·Erlang·node·in·the</span><span·class="w">155 </span><span·class="c1">%%%·····One·user·at·a·time·can·log·in·from·each·Erlang·node·in·the</span><span·class="w">
Offset 170, 177 lines modifiedOffset 170, 177 lines modified
170 </span><span·class="c1">%%%·····Logs·off·anybody·at·that·node</span><span·class="w">170 </span><span·class="c1">%%%·····Logs·off·anybody·at·that·node</span><span·class="w">
  
171 </span><span·class="c1">%%%·message(ToName,·Message)</span><span·class="w">171 </span><span·class="c1">%%%·message(ToName,·Message)</span><span·class="w">
172 </span><span·class="c1">%%%·····sends·Message·to·ToName.·Error·messages·if·the·user·of·this</span><span·class="w">172 </span><span·class="c1">%%%·····sends·Message·to·ToName.·Error·messages·if·the·user·of·this</span><span·class="w">
173 </span><span·class="c1">%%%·····function·is·not·logged·on·or·if·ToName·is·not·logged·on·at</span><span·class="w">173 </span><span·class="c1">%%%·····function·is·not·logged·on·or·if·ToName·is·not·logged·on·at</span><span·class="w">
174 </span><span·class="c1">%%%·····any·node.</span><span·class="w">174 </span><span·class="c1">%%%·····any·node.</span><span·class="w">
175 </span><span·class="w">175 </span><span·class="w">
176 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8031752339-1">(</span><span·class="ss">user_interface</span><span·class="p"·data-group-id="8031752339-1">)</span><span·class="p">.</span><span·class="w">176 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0144308709-1">(</span><span·class="ss">user_interface</span><span·class="p"·data-group-id="0144308709-1">)</span><span·class="p">.</span><span·class="w">
177 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8031752339-2">(</span><span·class="p"·data-group-id="8031752339-3">[</span><span·class="ss">logon</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logoff</span><span·class="p">/</span><[·...·truncated·by·diffoscope;·len:·245,·SHA:·c8a21ede3d9a49c19f0ca89973f1ac80d9b526215f834eb2eb7a4d82032504ca·...·]9-2">)</span><span·class="p">.</span><span·class="w">177 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0144308709-2">(</span><span·class="p"·data-group-id="0144308709-3">[</span><span·class="ss">logon</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logoff</span><span·class="p">/</span><[·...·truncated·by·diffoscope;·len:·245,·SHA:·3b0143b37292c742745aa25f0616fdac58378441e95aac3e6bccc99df6177dab·...·]9-2">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="8031752339-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="8031752339-4">)</span><span·class="p">.</span><span·class="w">178 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="0144308709-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="0144308709-4">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="8031752339-5">(</span><span·class="s">&quot;mess_config.hrl&quot;</span><span·class="p"·data-group-id="8031752339-5">)</span><span·class="p">.</span><span·class="w">179 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="0144308709-5">(</span><span·class="s">&quot;mess_config.hrl&quot;</span><span·class="p"·data-group-id="0144308709-5">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">logon</span><span·class="p"·data-group-id="8031752339-6">(</span><span·class="n">Name</span><span·class="p"·data-group-id="8031752339-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 </span><span·class="nf">logon</span><span·class="p"·data-group-id="0144308709-6">(</span><span·class="n">Name</span><span·class="p"·data-group-id="0144308709-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">whereis</span><span·class="p"·data-group-id="8031752339-7">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="8031752339-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">181 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">whereis</span><span·class="p"·data-group-id="0144308709-7">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="0144308709-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
182 ········</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 ········</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="8031752339-8">(</span><span·class="ss">mess_client</span><span·class="p">,</span><span·class="w">183 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="0144308709-8">(</span><span·class="ss">mess_client</span><span·class="p">,</span><span·class="w">
184 ·····················</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8031752339-9">(</span><span·class="ss">mess_client</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8031752339-10">[</span><span·class="o">?</[·...·truncated·by·diffoscope;·len:·262,·SHA:·35303eb29ddf477af1886e314d9bf69d896edbc33574a75243ccac586acb4083·...·]9-8">)</span><span·class="p">;</span><span·class="w">184 ·····················</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0144308709-9">(</span><span·class="ss">mess_client</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0144308709-10">[</span><span·class="o">?</[·...·truncated·by·diffoscope;·len:·262,·SHA:·f9509fb58937c23cef225b844428b271ba2b90b1c5d8368bf911363e77989f04·...·]9-8">)</span><span·class="p">;</span><span·class="w">
185 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">already_logged_on</span><span·class="w">185 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">already_logged_on</span><span·class="w">
186 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">186 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">logoff</span><span·class="p"·data-group-id="8031752339-11">(</span><span·class="p"·data-group-id="8031752339-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">187 </span><span·class="nf">logoff</span><span·class="p"·data-group-id="0144308709-11">(</span><span·class="p"·data-group-id="0144308709-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
188 ····</span><span·class="ss">mess_client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">logoff</span><span·class="p">.</span><span·class="w">188 ····</span><span·class="ss">mess_client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">logoff</span><span·class="p">.</span><span·class="w">
  
189 </span><span·class="nf">message</span><span·class="p"·data-group-id="8031752339-12">(</span><span·class="n">ToName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="8031752339-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 </span><span·class="nf">message</span><span·class="p"·data-group-id="0144308709-12">(</span><span·class="n">ToName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="0144308709-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">whereis</span><span·class="p"·data-group-id="8031752339-13">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="8031752339-13">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="c1">%·Test·if·the·client·is·running</span><span·class="w">190 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">whereis</span><span·class="p"·data-group-id="0144308709-13">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="0144308709-13">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="c1">%·Test·if·the·client·is·running</span><span·class="w">
191 ········</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 ········</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ············</span><span·class="ss">not_logged_on</span><span·class="p">;</span><span·class="w">192 ············</span><span·class="ss">not_logged_on</span><span·class="p">;</span><span·class="w">
193 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">mess_client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">message_to</span><span·class="p"·data-group-id="8031752339-14">{</span><span·class="ss">to_name</span><span·class="o">=</span><span·class="n">ToName</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Message</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·58b2a7bb9720e4b8e1d303cdad45845afd458a194bc243d2cfcf7045898fd784·...·]9-14">}</span><span·class="p">,</span><span·class="w">193 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">mess_client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">message_to</span><span·class="p"·data-group-id="0144308709-14">{</span><span·class="ss">to_name</span><span·class="o">=</span><span·class="n">ToName</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Message</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·2d6549264dec0060006e6312ca84a995c149e9e333b3305c9ab91ddc6f2ce4e8·...·]9-14">}</span><span·class="p">,</span><span·class="w">
194 ·············</span><span·class="ss">ok</span><span·class="w">194 ·············</span><span·class="ss">ok</span><span·class="w">
195 </span><span·class="k">end</span><span·class="p">.</span><span·class="w">195 </span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="c1">%%%----END·FILE----</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_client.erl----</span><span·class="w">196 </span><span·class="c1">%%%----END·FILE----</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_client.erl----</span><span·class="w">
  
197 </span><span·class="c1">%%%·The·client·process·which·runs·on·each·user·node</span><span·class="w">197 </span><span·class="c1">%%%·The·client·process·which·runs·on·each·user·node</span><span·class="w">
198 </span><span·class="w">198 </span><span·class="w">
199 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8341740042-1">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="8341740042-1">)</span><span·class="p">.</span><span·class="w">199 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8508440340-1">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="8508440340-1">)</span><span·class="p">.</span><span·class="w">
200 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8341740042-2">(</span><span·class="p"·data-group-id="8341740042-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="8341740042-3">]</span><span·class="p"·data-group-id="8341740042-2">)</span><span·class="p">.</span><span·class="w">200 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8508440340-2">(</span><span·class="p"·data-group-id="8508440340-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="8508440340-3">]</span><span·class="p"·data-group-id="8508440340-2">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="8341740042-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="8341740042-4">)</span><span·class="p">.</span><span·class="w">201 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="8508440340-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="8508440340-4">)</span><span·class="p">.</span><span·class="w">
  
202 </span><span·class="nf">client</span><span·class="p"·data-group-id="8341740042-5">(</span><span·class="n">Server_Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="8341740042-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 </span><span·class="nf">client</span><span·class="p"·data-group-id="8508440340-5">(</span><span·class="n">Server_Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="8508440340-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="8341740042-6">{</span><span·class="ss">messenger</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8341740042-6">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·475,·SHA:·473ff6152cce2170f25dff724f3f89c49aa3e2fb0357528716593b3f9edd5b75·...·]-7">}</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="p"·data-group-id="8508440340-6">{</span><span·class="ss">messenger</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8508440340-6">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·475,·SHA:·a63c83be723f5b853ec68adb1a9ad6f9885ffaad23ae2333a4d235674c6db427·...·]-7">}</span><span·class="p">,</span><span·class="w">
204 ····</span><span·class="nf">await_result</span><span·class="p"·data-group-id="8341740042-9">(</span><span·class="p"·data-group-id="8341740042-9">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="nf">await_result</span><span·class="p"·data-group-id="8508440340-9">(</span><span·class="p"·data-group-id="8508440340-9">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="8341740042-10">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8341740042-10">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="8508440340-10">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8508440340-10">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">client</span><span·class="p"·data-group-id="8341740042-11">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8341740042-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 </span><span·class="nf">client</span><span·class="p"·data-group-id="8508440340-11">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8508440340-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ····</span><span·class="k">receive</span><span·class="w">207 ····</span><span·class="k">receive</span><span·class="w">
208 ········</span><span·class="ss">logoff</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ········</span><span·class="ss">logoff</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8341740042-12">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8341740042-12">)</span><span·class="p">;</span><span·class="w">209 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8508440340-12">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8508440340-12">)</span><span·class="p">;</span><span·class="w">
210 ········</span><span·class="o">#</span><span·class="ss">message_to</span><span·class="p"·data-group-id="8341740042-13">{</span><span·class="ss">to_name</span><span·class="o">=</span><span·class="n">ToName</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Message</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·94cda67aabcd3aba6201fa59c13709d5ba300f1712638167bddd5152c0907075·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 ········</span><span·class="o">#</span><span·class="ss">message_to</span><span·class="p"·data-group-id="8508440340-13">{</span><span·class="ss">to_name</span><span·class="o">=</span><span·class="n">ToName</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Message</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·cce3a28e0fa95b006ce54c766021e2e26cfcd40c47ba3d9b99cd73d7ff3a8edb·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ············</span><span·class="p"·data-group-id="8341740042-14">{</span><span·class="ss">messenger</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8341740042-14">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">211 ············</span><span·class="p"·data-group-id="8508440340-14">{</span><span·class="ss">messenger</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8508440340-14">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">
212 ················</span><span·class="o">#</span><span·class="ss">message</span><span·class="p"·data-group-id="8341740042-15">{</span><span·class="ss">client_pid</span><span·class="o">=</span><span·class="nf">self</span><span·class="p"·data-group-id="8341740042-16">(</span><span·class="p"·data-group-id="8341740042-16">)</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·266,·SHA:·c6c837ec13bc80dc3fa09e18f5db7b792d5722a63f620b510578b3cc44e1a280·...·]-15">}</span><span·class="p">,</span><span·class="w">212 ················</span><span·class="o">#</span><span·class="ss">message</span><span·class="p"·data-group-id="8508440340-15">{</span><span·class="ss">client_pid</span><span·class="o">=</span><span·class="nf">self</span><span·class="p"·data-group-id="8508440340-16">(</span><span·class="p"·data-group-id="8508440340-16">)</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·266,·SHA:·893a6cba4dcbbf25538bdba00d75f5d234c5b23552591d0d1385269dc3c28fbc·...·]-15">}</span><span·class="p">,</span><span·class="w">
213 ············</span><span·class="nf">await_result</span><span·class="p"·data-group-id="8341740042-17">(</span><span·class="p"·data-group-id="8341740042-17">)</span><span·class="p">;</span><span·class="w">213 ············</span><span·class="nf">await_result</span><span·class="p"·data-group-id="8508440340-17">(</span><span·class="p"·data-group-id="8508440340-17">)</span><span·class="p">;</span><span·class="w">
214 ········</span><span·class="p"·data-group-id="8341740042-18">{</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FromName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="8341740042-18">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ········</span><span·class="p"·data-group-id="8508440340-18">{</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FromName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="8508440340-18">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8341740042-19">(</span><span·class="s">&quot;Message·from·</span><span·class="si">~p</span><span·class="s">:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·246,·SHA:·3a137ad859b59419cd3e75486eddc0a18501eab43e5fcd20d4724a76c12db5c0·...·]-19">)</span><span·class="w">215 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8508440340-19">(</span><span·class="s">&quot;Message·from·</span><span·class="si">~p</span><span·class="s">:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·246,·SHA:·0422c75fcfbfab388c2e31a678aab426009f5ec9e600645c11e617a2fe69229a·...·]-19">)</span><span·class="w">
216 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">216 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="8341740042-21">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8341740042-21">)</span><span·class="p">.</span><span·class="w">217 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="8508440340-21">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8508440340-21">)</span><span·class="p">.</span><span·class="w">
  
218 </span><span·class="c1">%%%·wait·for·a·response·from·the·server</span><span·class="w">218 </span><span·class="c1">%%%·wait·for·a·response·from·the·server</span><span·class="w">
219 </span><span·class="nf">await_result</span><span·class="p"·data-group-id="8341740042-22">(</span><span·class="p"·data-group-id="8341740042-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 </span><span·class="nf">await_result</span><span·class="p"·data-group-id="8508440340-22">(</span><span·class="p"·data-group-id="8508440340-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ····</span><span·class="k">receive</span><span·class="w">220 ····</span><span·class="k">receive</span><span·class="w">
221 ········</span><span·class="o">#</span><span·class="ss">abort_client</span><span·class="p"·data-group-id="8341740042-23">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Why</span><span·class="p"·data-group-id="8341740042-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 ········</span><span·class="o">#</span><span·class="ss">abort_client</span><span·class="p"·data-group-id="8508440340-23">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Why</span><span·class="p"·data-group-id="8508440340-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8341740042-24">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8341740042-25">[</span><span·class="n">Why</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·693ff3726ade95daf128f0fde93b2e7996bd9656096915f6ec51caa0f1af4460·...·]-24">)</span><span·class="p">,</span><span·class="w">222 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8508440340-24">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8508440340-25">[</span><span·class="n">Why</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·62a393815e4c5fbd5fc061ba07fbc58c99350479b11472f6f16fc6fc807e3dc4·...·]-24">)</span><span·class="p">,</span><span·class="w">
223 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8341740042-26">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8341740042-26">)</span><span·class="p">;</span><span·class="w">223 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8508440340-26">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8508440340-26">)</span><span·class="p">;</span><span·class="w">
224 ········</span><span·class="o">#</span><span·class="ss">server_reply</span><span·class="p"·data-group-id="8341740042-27">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">What</span><span·class="p"·data-group-id="8341740042-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 ········</span><span·class="o">#</span><span·class="ss">server_reply</span><span·class="p"·data-group-id="8508440340-27">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">What</span><span·class="p"·data-group-id="8508440340-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8341740042-28">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8341740042-29">[</span><span·class="n">What</[·...·truncated·by·diffoscope;·len:·100,·SHA:·292c43b2e18722b43332a2fb7b3ab4bd722c9e2ced079bf9b09a98b286fafc31·...·]-28">)</span><span·class="w">225 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8508440340-28">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8508440340-29">[</span><span·class="n">What</[·...·truncated·by·diffoscope;·len:·100,·SHA:·aff64084b71784c3eee0ba605036f1941e7382cbf1bf257d4e4870cea652f5de·...·]-28">)</span><span·class="w">
226 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
227 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8341740042-30">(</span><span·class="s">&quot;No·response·from·server</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8341740042-31">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·18e1d9006fb08b42eeacc265e4ba2004eef5690b37083a0e8014402e1d011954·...·]-30">)</span><span·class="p">,</span><span·class="w">227 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8508440340-30">(</span><span·class="s">&quot;No·response·from·server</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8508440340-31">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·947d3eb5207d668736cdc31d12083c68caefc565fd685bf5e5899f3d1e2ba474·...·]-30">)</span><span·class="p">,</span><span·class="w">
228 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8341740042-32">(</span><span·class="ss">timeout</span><span·class="p"·data-group-id="8341740042-32">)</span><span·class="w">228 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8508440340-32">(</span><span·class="ss">timeout</span><span·class="p"·data-group-id="8508440340-32">)</span><span·class="w">
229 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">229 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
230 </span><span·class="c1">%%%----END·FILE---</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_server.erl----</span><span·class="w">230 </span><span·class="c1">%%%----END·FILE---</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_server.erl----</span><span·class="w">
  
231 </span><span·class="c1">%%%·This·is·the·server·process·of·the·messenger·service</span><span·class="w">231 </span><span·class="c1">%%%·This·is·the·server·process·of·the·messenger·service</span><span·class="w">
232 </span><span·class="w">232 </span><span·class="w">
233 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4108171802-1">(</span><span·class="ss">mess_server</span><span·class="p"·data-group-id="4108171802-1">)</span><span·class="p">.</span><span·class="w">233 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0478896833-1">(</span><span·class="ss">mess_server</span><span·class="p"·data-group-id="0478896833-1">)</span><span·class="p">.</span><span·class="w">
234 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4108171802-2">(</span><span·class="p"·data-group-id="4108171802-3">[</span><span·class="ss">start_server</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">server</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·125,·SHA:·c5915962cf9f4e582a56cdc509b1e91a2fa01512a02072f4cbbcbd227f532af5·...·]-2">)</span><span·class="p">.</span><span·class="w">234 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0478896833-2">(</span><span·class="p"·data-group-id="0478896833-3">[</span><span·class="ss">start_server</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">server</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·125,·SHA:·3516443a34842a4a32d1f5942f1de290cb379f6b8b3a23e326c6972e4db20efb·...·]-2">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="4108171802-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="4108171802-4">)</span><span·class="p">.</span><span·class="w">235 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="0478896833-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="0478896833-4">)</span><span·class="p">.</span><span·class="w">
  
236 </span><span·class="nf">server</span><span·class="p"·data-group-id="4108171802-5">(</span><span·class="p"·data-group-id="4108171802-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">236 </span><span·class="nf">server</span><span·class="p"·data-group-id="0478896833-5">(</span><span·class="p"·data-group-id="0478896833-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
237 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="4108171802-6">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="4108171802-6">)</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="0478896833-6">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="0478896833-6">)</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="4108171802-7">(</span><span·class="p"·data-group-id="4108171802-8">[</span><span·class="p"·data-group-id="4108171802-8">]</span><span·class="p"·data-group-id="4108171802-7">)</span><span·class="p">.</span><span·class="w">238 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="0478896833-7">(</span><span·class="p"·data-group-id="0478896833-8">[</span><span·class="p"·data-group-id="0478896833-8">]</span><span·class="p"·data-group-id="0478896833-7">)</span><span·class="p">.</span><span·class="w">
  
239 </span><span·class="c1">%%%·the·user·list·has·the·format·[{ClientPid1,·Name1},{ClientPid22,·Name2},...]</span><span·class="w">239 </span><span·class="c1">%%%·the·user·list·has·the·format·[{ClientPid1,·Name1},{ClientPid22,·Name2},...]</span><span·class="w">
240 </span><span·class="nf">server</span><span·class="p"·data-group-id="4108171802-9">(</span><span·class="n">User_List</span><span·class="p"·data-group-id="4108171802-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">240 </span><span·class="nf">server</span><span·class="p"·data-group-id="0478896833-9">(</span><span·class="n">User_List</span><span·class="p"·data-group-id="0478896833-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
241 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4108171802-10">(</span><span·class="s">&quot;User·list·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4108171802-11">[</span><span·cla[·...·truncated·by·diffoscope;·len:·118,·SHA:·90e00395f2e6337e6bad44c105ff2d82510d47f71940bc13e0aff428c3d20652·...·]-10">)</span><span·class="p">,</span><span·class="w">241 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0478896833-10">(</span><span·class="s">&quot;User·list·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0478896833-11">[</span><span·cla[·...·truncated·by·diffoscope;·len:·118,·SHA:·e583a0b21c869c8fac12860bd8b83c7b9ef9577b1fa38dd17f97907aad3bbc29·...·]-10">)</span><span·class="p">,</span><span·class="w">
242 ····</span><span·class="k">receive</span><span·class="w">242 ····</span><span·class="k">receive</span><span·class="w">
Max diff block lines reached; 34967/86002 bytes (40.66%) of diff not shown.
21.2 KB
./usr/share/doc/erlang-doc/html/doc/system/ref_man_functions.html
    
Offset 120, 51 lines modifiedOffset 120, 51 lines modified
120 ····<i·class="ri-link-m"·aria-hidden="true"></i>120 ····<i·class="ri-link-m"·aria-hidden="true"></i>
121 ··</a>121 ··</a>
122 ··<span·class="text">Function·Declaration·Syntax</span>122 ··<span·class="text">Function·Declaration·Syntax</span>
123 </h2>123 </h2>
124 <p>A·<em>function·declaration</em>·is·a·sequence·of·function·clauses·separated·by124 <p>A·<em>function·declaration</em>·is·a·sequence·of·function·clauses·separated·by
125 semicolons,·and·terminated·by·a·period·(<code·class="inline">.</code>).</p><p>A·<em>function·clause</em>·consists·of·a·<em>clause·head</em>·and·a·<em>clause·body</em>,·separated·by125 semicolons,·and·terminated·by·a·period·(<code·class="inline">.</code>).</p><p>A·<em>function·clause</em>·consists·of·a·<em>clause·head</em>·and·a·<em>clause·body</em>,·separated·by
126 <code·class="inline">-&gt;</code>.</p><p>A·clause·<em>head</em>·consists·of·the·function·name,·an·argument·list,·and·an·optional126 <code·class="inline">-&gt;</code>.</p><p>A·clause·<em>head</em>·consists·of·the·function·name,·an·argument·list,·and·an·optional
127 guard·sequence·beginning·with·the·keyword·<code·class="inline">when</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name</span><span·class="p"·data-group-id="5248587448-1">(</span><span·class="n">Pattern11</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">Pattern1N</span><span·class="p"·data-group-id="5248587448-1">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·759be49ced7e936f73aedf3528f47c743df8145b98257fbfc2cb312f065322dc·...·]-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">127 guard·sequence·beginning·with·the·keyword·<code·class="inline">when</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Name</span><span·class="p"·data-group-id="6155306212-1">(</span><span·class="n">Pattern11</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">Pattern1N</span><span·class="p"·data-group-id="6155306212-1">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·5aa91f40a30e06efd61b9f1f007b6c1ca7dbc734bc737548626d8327c6a2a280·...·]-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
128 ····</span><span·class="n">Body1</span><span·class="p">;</span><span·class="w">128 ····</span><span·class="n">Body1</span><span·class="p">;</span><span·class="w">
129 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">;</span><span·class="w">129 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">;</span><span·class="w">
130 </span><span·class="n">Name</span><span·class="p"·data-group-id="5248587448-3">(</span><span·class="n">PatternK1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">PatternKN</span><span·class="p"·data-group-id="5248587448-3">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·7e4a335cb987480dc2ede421a8921613ac935a73f82d19063a7faffe61e6feca·...·]-4">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">130 </span><span·class="n">Name</span><span·class="p"·data-group-id="6155306212-3">(</span><span·class="n">PatternK1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">PatternKN</span><span·class="p"·data-group-id="6155306212-3">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·6de514cd987567a1ad7a27baa73ba46f8941c846f20c226b28cf8830ccd94d8d·...·]-4">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
131 ····</span><span·class="n">BodyK</span><span·class="p">.</span></code></pre><p>The·function·name·is·an·atom.·Each·argument·is·a·pattern.</p><p>The·number·of·arguments·<code·class="inline">N</code>·is·the·<em>arity</em>·of·the·function.·A·function·is131 ····</span><span·class="n">BodyK</span><span·class="p">.</span></code></pre><p>The·function·name·is·an·atom.·Each·argument·is·a·pattern.</p><p>The·number·of·arguments·<code·class="inline">N</code>·is·the·<em>arity</em>·of·the·function.·A·function·is
132 uniquely·defined·by·the·module·name,·function·name,·and·arity.·That·is,·two132 uniquely·defined·by·the·module·name,·function·name,·and·arity.·That·is,·two
133 functions·with·the·same·name·and·in·the·same·module,·but·with·different·arities133 functions·with·the·same·name·and·in·the·same·module,·but·with·different·arities
134 are·two·different·functions.</p><p>A·function·named·<code·class="inline">f</code>·in·module·<code·class="inline">mod</code>·and·with·arity·<code·class="inline">N</code>·is·often·denoted·as134 are·two·different·functions.</p><p>A·function·named·<code·class="inline">f</code>·in·module·<code·class="inline">mod</code>·and·with·arity·<code·class="inline">N</code>·is·often·denoted·as
135 <code·class="inline">mod:f/N</code>.</p><p>A·clause·<em>body</em>·consists·of·a·sequence·of·expressions·separated·by·comma·(<code·class="inline">,</code>):</p><pre><code·class="text">Expr1,135 <code·class="inline">mod:f/N</code>.</p><p>A·clause·<em>body</em>·consists·of·a·sequence·of·expressions·separated·by·comma·(<code·class="inline">,</code>):</p><pre><code·class="text">Expr1,
136 ...,136 ...,
137 ExprN</code></pre><p>Valid·Erlang·expressions·and·guard·sequences·are·described·in137 ExprN</code></pre><p>Valid·Erlang·expressions·and·guard·sequences·are·described·in
138 <a·href="expressions.html">Expressions</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fact</span><span·class="p"·data-group-id="9259919199-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="9259919199-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="c1">%·first·clause·head</span><span·class="w">138 <a·href="expressions.html">Expressions</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fact</span><span·class="p"·data-group-id="5550362118-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="5550362118-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="c1">%·first·clause·head</span><span·class="w">
139 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="9259919199-2">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="9259919199-2">)</span><span·class="p">;</span><span·class="w">·····</span><span·class="c1">%·first·clause·body</span><span·class="w">139 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="5550362118-2">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="5550362118-2">)</span><span·class="p">;</span><span·class="w">·····</span><span·class="c1">%·first·clause·body</span><span·class="w">
  
140 </span><span·class="nf">fact</span><span·class="p"·data-group-id="9259919199-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9259919199-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·············</span><span·class="c1">%·second·clause·head</span><span·class="w">140 </span><span·class="nf">fact</span><span·class="p"·data-group-id="5550362118-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="5550362118-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·············</span><span·class="c1">%·second·clause·head</span><span·class="w">
141 ····</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">·················</span><span·class="c1">%·second·clause·body</span></code></pre><p><a·href=""·id="eval"></a></p><h2·id="function-evaluation"·class="section-heading">141 ····</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">·················</span><span·class="c1">%·second·clause·body</span></code></pre><p><a·href=""·id="eval"></a></p><h2·id="function-evaluation"·class="section-heading">
142 ··<a·href="#function-evaluation"·class="hover-link">142 ··<a·href="#function-evaluation"·class="hover-link">
143 ····<i·class="ri-link-m"·aria-hidden="true"></i>143 ····<i·class="ri-link-m"·aria-hidden="true"></i>
144 ··</a>144 ··</a>
145 ··<span·class="text">Function·Evaluation</span>145 ··<span·class="text">Function·Evaluation</span>
146 </h2>146 </h2>
147 <p>When·a·function·<code·class="inline">M:F/N</code>·is·called,·first·the·code·for·the·function·is·located.147 <p>When·a·function·<code·class="inline">M:F/N</code>·is·called,·first·the·code·for·the·function·is·located.
148 If·the·function·cannot·be·found,·an·<code·class="inline">undef</code>·runtime·error·occurs.·Notice·that148 If·the·function·cannot·be·found,·an·<code·class="inline">undef</code>·runtime·error·occurs.·Notice·that
149 the·function·must·be·exported·to·be·visible·outside·the·module·it·is·defined·in.</p><p>If·the·function·is·found,·the·function·clauses·are·scanned·sequentially·until·a149 the·function·must·be·exported·to·be·visible·outside·the·module·it·is·defined·in.</p><p>If·the·function·is·found,·the·function·clauses·are·scanned·sequentially·until·a
150 clause·is·found·that·fulfills·both·of·the·following·two·conditions:</p><ol><li>The·patterns·in·the·clause·head·can·be·successfully·matched·against·the·given150 clause·is·found·that·fulfills·both·of·the·following·two·conditions:</p><ol><li>The·patterns·in·the·clause·head·can·be·successfully·matched·against·the·given
151 arguments.</li><li>The·guard·sequence,·if·any,·is·true.</li></ol><p>If·such·a·clause·cannot·be·found,·a·<code·class="inline">function_clause</code>·runtime·error·occurs.</p><p>If·such·a·clause·is·found,·the·corresponding·clause·body·is·evaluated.·That·is,151 arguments.</li><li>The·guard·sequence,·if·any,·is·true.</li></ol><p>If·such·a·clause·cannot·be·found,·a·<code·class="inline">function_clause</code>·runtime·error·occurs.</p><p>If·such·a·clause·is·found,·the·corresponding·clause·body·is·evaluated.·That·is,
152 the·expressions·in·the·body·are·evaluated·sequentially·and·the·value·of·the·last152 the·expressions·in·the·body·are·evaluated·sequentially·and·the·value·of·the·last
153 expression·is·returned.</p><p>Consider·the·function·<code·class="inline">fact</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3766469309-1">(</span><span·class="ss">mod</span><span·class="p"·data-group-id="3766469309-1">)</span><span·class="p">.</span><span·class="w">153 expression·is·returned.</p><p>Consider·the·function·<code·class="inline">fact</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8816017611-1">(</span><span·class="ss">mod</span><span·class="p"·data-group-id="8816017611-1">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3766469309-2">(</span><span·class="p"·data-group-id="3766469309-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3766469309-3">]</span><span·class="p"·data-group-id="3766469309-2">)</span><span·class="p">.</span><span·class="w">154 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8816017611-2">(</span><span·class="p"·data-group-id="8816017611-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8816017611-3">]</span><span·class="p"·data-group-id="8816017611-2">)</span><span·class="p">.</span><span·class="w">
  
155 </span><span·class="nf">fact</span><span·class="p"·data-group-id="3766469309-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="3766469309-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">155 </span><span·class="nf">fact</span><span·class="p"·data-group-id="8816017611-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="8816017611-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
156 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="3766469309-5">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="3766469309-5">)</span><span·class="p">;</span><span·class="w">156 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="8816017611-5">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="8816017611-5">)</span><span·class="p">;</span><span·class="w">
157 </span><span·class="nf">fact</span><span·class="p"·data-group-id="3766469309-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="3766469309-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">fact</span><span·class="p"·data-group-id="8816017611-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="8816017611-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="mi">1</span><span·class="p">.</span></code></pre><p>Assume·that·you·want·to·calculate·the·factorial·for·1:</p><pre><code·class="text">1&gt;·mod:fact(1).</code></pre><p>Evaluation·starts·at·the·first·clause.·The·pattern·<code·class="inline">N</code>·is·matched·against158 ····</span><span·class="mi">1</span><span·class="p">.</span></code></pre><p>Assume·that·you·want·to·calculate·the·factorial·for·1:</p><pre><code·class="text">1&gt;·mod:fact(1).</code></pre><p>Evaluation·starts·at·the·first·clause.·The·pattern·<code·class="inline">N</code>·is·matched·against
159 argument·1.·The·matching·succeeds·and·the·guard·(<code·class="inline">N·&gt;·0</code>)·is·true,·thus·<code·class="inline">N</code>·is159 argument·1.·The·matching·succeeds·and·the·guard·(<code·class="inline">N·&gt;·0</code>)·is·true,·thus·<code·class="inline">N</code>·is
160 bound·to·1,·and·the·corresponding·body·is·evaluated:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="9220656122-1">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="9220656122-1">)</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·288,·SHA:·6cf85abf39fda5da087bbfdde15a273f63246f7f4d13e5f0f4070dea352d7f4f·...·]-2">)</span><span·class="w">160 bound·to·1,·and·the·corresponding·body·is·evaluated:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="0212652710-1">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="0212652710-1">)</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·288,·SHA:·51e33212e25943ac5116c9a00458ae19d4fcdfcb8a98f79bd5825bdc80fbb11e·...·]-2">)</span><span·class="w">
161 </span><span·class="mi">1</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="9220656122-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9220656122-3">)</span></code></pre><p>Now,·<code·class="inline">fact(0)</code>·is·called,·and·the·function·clauses·are·scanned161 </span><span·class="mi">1</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fact</span><span·class="p"·data-group-id="0212652710-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0212652710-3">)</span></code></pre><p>Now,·<code·class="inline">fact(0)</code>·is·called,·and·the·function·clauses·are·scanned
162 sequentially·again.·First,·the·pattern·<code·class="inline">N</code>·is·matched·against·0.·The162 sequentially·again.·First,·the·pattern·<code·class="inline">N</code>·is·matched·against·0.·The
163 matching·succeeds,·but·the·guard·(<code·class="inline">N·&gt;·0</code>)·is·false.·Second,·the163 matching·succeeds,·but·the·guard·(<code·class="inline">N·&gt;·0</code>)·is·false.·Second,·the
164 pattern·<code·class="inline">0</code>·is·matched·against·the·argument·<code·class="inline">0</code>.·The·matching·succeeds164 pattern·<code·class="inline">0</code>·is·matched·against·the·argument·<code·class="inline">0</code>.·The·matching·succeeds
165 and·the·body·is·evaluated:</p><pre><code·class="text">1·*·fact(0)·=&gt;165 and·the·body·is·evaluated:</p><pre><code·class="text">1·*·fact(0)·=&gt;
166 1·*·1·=&gt;166 1·*·1·=&gt;
167 1</code></pre><p>Evaluation·has·succeed·and·<code·class="inline">mod:fact(1)</code>·returns·1.</p><p>If·<code·class="inline">mod:fact/1</code>·is·called·with·a·negative·number·as·argument,·no·clause·head167 1</code></pre><p>Evaluation·has·succeed·and·<code·class="inline">mod:fact(1)</code>·returns·1.</p><p>If·<code·class="inline">mod:fact/1</code>·is·called·with·a·negative·number·as·argument,·no·clause·head
168 matches.·A·<code·class="inline">function_clause</code>·runtime·error·occurs.</p><h2·id="tail-recursion"·class="section-heading">168 matches.·A·<code·class="inline">function_clause</code>·runtime·error·occurs.</p><h2·id="tail-recursion"·class="section-heading">
Offset 173, 17 lines modifiedOffset 173, 17 lines modified
173 ··</a>173 ··</a>
174 ··<span·class="text">Tail·recursion</span>174 ··<span·class="text">Tail·recursion</span>
175 </h2>175 </h2>
176 <p>If·the·last·expression·of·a·function·body·is·a·function·call,·a176 <p>If·the·last·expression·of·a·function·body·is·a·function·call,·a
177 <em>tail-recursive·call</em>·is·done.·This·is·to·ensure·that·no·system177 <em>tail-recursive·call</em>·is·done.·This·is·to·ensure·that·no·system
178 resources,·for·example,·call·stack,·are·consumed.·This·means·that·an178 resources,·for·example,·call·stack,·are·consumed.·This·means·that·an
179 infinite·loop·using·tail-recursive·calls·will·not·exhaust·the·call179 infinite·loop·using·tail-recursive·calls·will·not·exhaust·the·call
180 stack·and·can·(in·principle)·run·forever.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="0344633722-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="0344633722-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 stack·and·can·(in·principle)·run·forever.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="8851448045-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="8851448045-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0344633722-2">(</span><span·class="s">&quot;</span><span·class="si">~w</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0344633722-3">[</span><span·class="n">N</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·9029cc0bf2ac87713518681892794a1e732c26b7d3b7bee8b681ed74f22b0939·...·]-2">)</span><span·class="p">,</span><span·class="w">181 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8851448045-2">(</span><span·class="s">&quot;</span><span·class="si">~w</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8851448045-3">[</span><span·class="n">N</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·3639b123622eb6005befe0723d636933a55b7f1622d99f5f513c9206ea755df0·...·]-2">)</span><span·class="p">,</span><span·class="w">
182 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0344633722-4">(</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="0344633722-4">)</span><span·class="p">.</span></code></pre><p>The·earlier·factorial·example·is·a·counter-example.·It·is·not182 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8851448045-4">(</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="8851448045-4">)</span><span·class="p">.</span></code></pre><p>The·earlier·factorial·example·is·a·counter-example.·It·is·not
183 tail-recursive,·since·a·multiplication·is·done·on·the·result·of·the·recursive183 tail-recursive,·since·a·multiplication·is·done·on·the·result·of·the·recursive
184 call·to·<code·class="inline">fact(N-1)</code>.</p><h2·id="built-in-functions-bifs"·class="section-heading">184 call·to·<code·class="inline">fact(N-1)</code>.</p><h2·id="built-in-functions-bifs"·class="section-heading">
185 ··<a·href="#built-in-functions-bifs"·class="hover-link">185 ··<a·href="#built-in-functions-bifs"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">Built-In·Functions·(BIFs)</span>188 ··<span·class="text">Built-In·Functions·(BIFs)</span>
189 </h2>189 </h2>
Offset 191, 17 lines modifiedOffset 191, 17 lines modified
191 system.·BIFs·do·things·that·are·difficult·or·impossible·to·implement191 system.·BIFs·do·things·that·are·difficult·or·impossible·to·implement
192 in·Erlang.·Most·of·the·BIFs·belong·to·module·<a·href="../../erts-15.2.2/doc/html/erlang.html"><code·class="inline">erlang</code></a>,·but·there192 in·Erlang.·Most·of·the·BIFs·belong·to·module·<a·href="../../erts-15.2.2/doc/html/erlang.html"><code·class="inline">erlang</code></a>,·but·there
193 are·also·BIFs·belonging·to·a·few·other·modules,·for·example·<a·href="../../lib/stdlib-6.2/doc/html/lists.html"><code·class="inline">lists</code></a>193 are·also·BIFs·belonging·to·a·few·other·modules,·for·example·<a·href="../../lib/stdlib-6.2/doc/html/lists.html"><code·class="inline">lists</code></a>
194 and·<a·href="../../lib/stdlib-6.2/doc/html/ets.html"><code·class="inline">ets</code></a>.</p><p>The·most·commonly·used·BIFs·belonging·to·<a·href="../../erts-15.2.2/doc/html/erlang.html"><code·class="inline">erlang</code></a>·are·<em>auto-imported</em>.·They·do194 and·<a·href="../../lib/stdlib-6.2/doc/html/ets.html"><code·class="inline">ets</code></a>.</p><p>The·most·commonly·used·BIFs·belonging·to·<a·href="../../erts-15.2.2/doc/html/erlang.html"><code·class="inline">erlang</code></a>·are·<em>auto-imported</em>.·They·do
195 not·need·to·be·prefixed·with·the·module·name.·Which·BIFs·that·are·auto-imported195 not·need·to·be·prefixed·with·the·module·name.·Which·BIFs·that·are·auto-imported
196 is·specified·in·the·<a·href="../../erts-15.2.2/doc/html/erlang.html"><code·class="inline">erlang</code></a>·module·in·ERTS.·For·example,·standard-type196 is·specified·in·the·<a·href="../../erts-15.2.2/doc/html/erlang.html"><code·class="inline">erlang</code></a>·module·in·ERTS.·For·example,·standard-type
197 conversion·BIFs·like·<code·class="inline">atom_to_list</code>·and·BIFs·allowed·in·guards·can·be·called197 conversion·BIFs·like·<code·class="inline">atom_to_list</code>·and·BIFs·allowed·in·guards·can·be·called
198 without·specifying·the·module·name.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="4805918945-1">(</span><span·class="p"·data-group-id="4805918945-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="4805918945-2">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·fa9ab0ec5f1412f21768a6d8cf72f0f04f05ea591a2c6ee86866641ea8831c78·...·]-1">)</span><span·class="p">.</span><span·class="w">198 without·specifying·the·module·name.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="4626674950-1">(</span><span·class="p"·data-group-id="4626674950-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="4626674950-2">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·acce6598968e3eb69cd724778ee1590de7b775649b1c81cf32f3b0855a52511e·...·]-1">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="mi">3</span><span·class="gp·unselectable">199 </span><span·class="mi">3</span><span·class="gp·unselectable">
200 2&gt;·</span><span·class="nf">atom_to_list</span><span·class="p"·data-group-id="4805918945-3">(</span><span·class="ss">&#39;Erlang&#39;</span><span·class="p"·data-group-id="4805918945-3">)</span><span·class="p">.</span><span·class="w">200 2&gt;·</span><span·class="nf">atom_to_list</span><span·class="p"·data-group-id="4626674950-3">(</span><span·class="ss">&#39;Erlang&#39;</span><span·class="p"·data-group-id="4626674950-3">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="s">&quot;Erlang&quot;</span></code></pre>201 </span><span·class="s">&quot;Erlang&quot;</span></code></pre>
202 </div>202 </div>
  
203 <div·class="bottom-actions"·id="bottom-actions">203 <div·class="bottom-actions"·id="bottom-actions">
204 ··<div·class="bottom-actions-item">204 ··<div·class="bottom-actions-item">
  
205 ······<a·href="documentation.html"·class="bottom-actions-button"·rel="prev">205 ······<a·href="documentation.html"·class="bottom-actions-button"·rel="prev">
5.34 KB
./usr/share/doc/erlang-doc/html/doc/system/ref_man_processes.html
    
Offset 125, 18 lines modifiedOffset 125, 18 lines modified
125 (grow·and·shrink·dynamically)·with·small·memory·footprint,·fast·to·create·and125 (grow·and·shrink·dynamically)·with·small·memory·footprint,·fast·to·create·and
126 terminate,·and·the·scheduling·overhead·is·low.</p><h2·id="process-creation"·class="section-heading">126 terminate,·and·the·scheduling·overhead·is·low.</p><h2·id="process-creation"·class="section-heading">
127 ··<a·href="#process-creation"·class="hover-link">127 ··<a·href="#process-creation"·class="hover-link">
128 ····<i·class="ri-link-m"·aria-hidden="true"></i>128 ····<i·class="ri-link-m"·aria-hidden="true"></i>
129 ··</a>129 ··</a>
130 ··<span·class="text">Process·Creation</span>130 ··<span·class="text">Process·Creation</span>
131 </h2>131 </h2>
132 <p>A·process·is·created·by·calling·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/3"><code·class="inline">spawn()</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="7720203140-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="7720203140-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·f1687e700f6af6bcd22f8fb8ab36a375bb8c33335446386a054ad6b099c0fb69·...·]-2">)</span><span·class="w">132 <p>A·process·is·created·by·calling·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/3"><code·class="inline">spawn()</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="5354523321-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="5354523321-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·820981a4f6b4aeedae30b4179dc0565813f2e3c07f0e55d3142a00efa259aafa·...·]-2">)</span><span·class="w">
133 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7720203140-3">(</span><span·class="p"·data-group-id="7720203140-3">)</span><span·class="w">133 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="5354523321-3">(</span><span·class="p"·data-group-id="5354523321-3">)</span><span·class="w">
134 ··</span><span·class="n">Args</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7720203140-4">[</span><span·class="n">Arg1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ArgN</span><span·class="p"·data-group-id="7720203140-4">]</span><span·class="w">134 ··</span><span·class="n">Args</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5354523321-4">[</span><span·class="n">Arg1</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="n">ArgN</span><span·class="p"·data-group-id="5354523321-4">]</span><span·class="w">
135 ····</span><span·class="n">ArgI</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="7720203140-5">(</span><span·class="p"·data-group-id="7720203140-5">)</span></code></pre><p><code·class="inline">spawn()</code>·creates·a·new·process·and·returns·the·pid.</p><p>The·new·process·starts·executing·in·<code·class="inline">Module:Name(Arg1,...,ArgN)</code>·where·the135 ····</span><span·class="n">ArgI</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="5354523321-5">(</span><span·class="p"·data-group-id="5354523321-5">)</span></code></pre><p><code·class="inline">spawn()</code>·creates·a·new·process·and·returns·the·pid.</p><p>The·new·process·starts·executing·in·<code·class="inline">Module:Name(Arg1,...,ArgN)</code>·where·the
136 arguments·are·the·elements·of·the·(possible·empty)·<code·class="inline">Args</code>·argument·list.</p><p>There·exist·a·number·of·different·<code·class="inline">spawn</code>·BIFs:</p><ul><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_link/4"><code·class="inline">spawn_link/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_monitor/4"><code·class="inline">spawn_monitor/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_opt/5"><code·class="inline">spawn_opt/2,3,4,5</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_request/5"><code·class="inline">spawn_request/1,2,3,4,5</code></a></li></ul><h2·id="registered-processes"·class="section-heading">136 arguments·are·the·elements·of·the·(possible·empty)·<code·class="inline">Args</code>·argument·list.</p><p>There·exist·a·number·of·different·<code·class="inline">spawn</code>·BIFs:</p><ul><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_link/4"><code·class="inline">spawn_link/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_monitor/4"><code·class="inline">spawn_monitor/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_opt/5"><code·class="inline">spawn_opt/2,3,4,5</code></a></li><li><a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_request/5"><code·class="inline">spawn_request/1,2,3,4,5</code></a></li></ul><h2·id="registered-processes"·class="section-heading">
137 ··<a·href="#registered-processes"·class="hover-link">137 ··<a·href="#registered-processes"·class="hover-link">
138 ····<i·class="ri-link-m"·aria-hidden="true"></i>138 ····<i·class="ri-link-m"·aria-hidden="true"></i>
139 ··</a>139 ··</a>
140 ··<span·class="text">Registered·Processes</span>140 ··<span·class="text">Registered·Processes</span>
141 </h2>141 </h2>
142 <p>Besides·addressing·a·process·by·using·its·pid,·there·are·also·BIFs·for142 <p>Besides·addressing·a·process·by·using·its·pid,·there·are·also·BIFs·for
30.5 KB
./usr/share/doc/erlang-doc/html/doc/system/ref_man_records.html
    
Offset 123, 17 lines modifiedOffset 123, 17 lines modified
123 ····<i·class="ri-link-m"·aria-hidden="true"></i>123 ····<i·class="ri-link-m"·aria-hidden="true"></i>
124 ··</a>124 ··</a>
125 ··<span·class="text">Defining·Records</span>125 ··<span·class="text">Defining·Records</span>
126 </h2>126 </h2>
127 <p>A·record·definition·consists·of·the·name·of·the·record,·followed·by·the·field127 <p>A·record·definition·consists·of·the·name·of·the·record,·followed·by·the·field
128 names·of·the·record.·Record·and·field·names·must·be·atoms.·Each·field·can·be128 names·of·the·record.·Record·and·field·names·must·be·atoms.·Each·field·can·be
129 given·an·optional·default·value.·If·no·default·value·is·supplied,·<code·class="inline">undefined</code>·is129 given·an·optional·default·value.·If·no·default·value·is·supplied,·<code·class="inline">undefined</code>·is
130 used.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1549380181-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1549380181-2">{</span><span·class="n">Field1</span><span·class="w">·</span><span·class="p"·data-group-id="1549380181-3">[</span>[·...·truncated·by·diffoscope;·len:·116,·SHA:·22d921d28a7755fd8285424dcff79e7fde126f9aa9534053ae1f83cf7b372880·...·]1-3">]</span><span·class="p">,</span><span·class="w">130 used.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5540605131-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5540605131-2">{</span><span·class="n">Field1</span><span·class="w">·</span><span·class="p"·data-group-id="5540605131-3">[</span>[·...·truncated·by·diffoscope;·len:·116,·SHA:·0a8e98e4a5116c65a157a22df7e5f17aacccf2068b1dd2b4813a835928b5a3ce·...·]1-3">]</span><span·class="p">,</span><span·class="w">
131 ···············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">131 ···············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
132 ···············</span><span·class="n">FieldN</span><span·class="w">·</span><span·class="p"·data-group-id="1549380181-4">[</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExprN</span><span·class="p"·data-group-id="1549380181-4">]</span><span·class="p"·data-group-id="1549380181-2">}</span><span·class="p"·data-group-id="1549380181-1">)</span><span·class="p">.</span></code></pre><p>The·default·value·for·a·field·is·an·arbitrary·expression,·except·that·it·must132 ···············</span><span·class="n">FieldN</span><span·class="w">·</span><span·class="p"·data-group-id="5540605131-4">[</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExprN</span><span·class="p"·data-group-id="5540605131-4">]</span><span·class="p"·data-group-id="5540605131-2">}</span><span·class="p"·data-group-id="5540605131-1">)</span><span·class="p">.</span></code></pre><p>The·default·value·for·a·field·is·an·arbitrary·expression,·except·that·it·must
133 not·use·any·variables.</p><p>A·record·definition·can·be·placed·anywhere·among·the·attributes·and·function133 not·use·any·variables.</p><p>A·record·definition·can·be·placed·anywhere·among·the·attributes·and·function
134 declarations·of·a·module,·but·the·definition·must·come·before·any·usage·of·the134 declarations·of·a·module,·but·the·definition·must·come·before·any·usage·of·the
135 record.</p><p>If·a·record·is·used·in·several·modules,·it·is·recommended·that·the·record135 record.</p><p>If·a·record·is·used·in·several·modules,·it·is·recommended·that·the·record
136 definition·is·placed·in·an·include·file.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Starting·from·Erlang/OTP·26,·records·can·be·defined·in·the·Erlang·shell136 definition·is·placed·in·an·include·file.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Starting·from·Erlang/OTP·26,·records·can·be·defined·in·the·Erlang·shell
137 using·the·syntax·described·in·this·section.·In·earlier·releases,·it·was137 using·the·syntax·described·in·this·section.·In·earlier·releases,·it·was
138 necessary·to·use·the·<a·href="../../lib/stdlib-6.2/doc/html/shell.html"><code·class="inline">shell</code></a>·built-in·function·<code·class="inline">rd/2</code>.</p></section><h2·id="creating-records"·class="section-heading">138 necessary·to·use·the·<a·href="../../lib/stdlib-6.2/doc/html/shell.html"><code·class="inline">shell</code></a>·built-in·function·<code·class="inline">rd/2</code>.</p></section><h2·id="creating-records"·class="section-heading">
139 ··<a·href="#creating-records"·class="hover-link">139 ··<a·href="#creating-records"·class="hover-link">
Offset 143, 32 lines modifiedOffset 143, 32 lines modified
143 </h2>143 </h2>
144 <p>The·following·expression·creates·a·new·<code·class="inline">Name</code>·record·where·the·value·of·each144 <p>The·following·expression·creates·a·new·<code·class="inline">Name</code>·record·where·the·value·of·each
145 field·<code·class="inline">FieldI</code>·is·the·value·of·evaluating·the·corresponding·expression·<code·class="inline">ExprI</code>:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p>The·fields·can·be·in·any·order,·not·necessarily·the·same·order·as·in·the·record145 field·<code·class="inline">FieldI</code>·is·the·value·of·evaluating·the·corresponding·expression·<code·class="inline">ExprI</code>:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p>The·fields·can·be·in·any·order,·not·necessarily·the·same·order·as·in·the·record
146 definition,·and·fields·can·be·omitted.·Omitted·fields·get·their·respective146 definition,·and·fields·can·be·omitted.·Omitted·fields·get·their·respective
147 default·value·instead.</p><p>If·several·fields·are·to·be·assigned·the·same·value,·the·following·construction147 default·value·instead.</p><p>If·several·fields·are·to·be·assigned·the·same·value,·the·following·construction
148 can·be·used:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK,·_=ExprL}</code></pre><p>Omitted·fields·then·get·the·value·of·evaluating·<code·class="inline">ExprL</code>·instead·of·their·default148 can·be·used:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK,·_=ExprL}</code></pre><p>Omitted·fields·then·get·the·value·of·evaluating·<code·class="inline">ExprL</code>·instead·of·their·default
149 values.·This·feature·is·primarily·intended·to·be·used·to·create·patterns·for·ETS149 values.·This·feature·is·primarily·intended·to·be·used·to·create·patterns·for·ETS
150 and·Mnesia·match·functions.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1578013670-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1578013670-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·174,·SHA:·6433bed33a54a2bd120423d943040dc5faada8024ce48369daa64079573452c3·...·]0-1">)</span><span·class="p">.</span><span·class="w">150 and·Mnesia·match·functions.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2554838700-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2554838700-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·174,·SHA:·42d9552b8753d80ee079950a6ea9384cd49e9007a9cedb370516d35f18095a72·...·]0-1">)</span><span·class="p">.</span><span·class="w">
  
151 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="1578013670-3">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p"·data-group-id="1578013670-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="2554838700-3">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p"·data-group-id="2554838700-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
152 ····</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_object</span><span·class="p"·data-group-id="1578013670-4">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1578013670-5">{</span><span·class="ss">name</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·250,·SHA:·5b440cf42680393abadad0390378639f1542a32b2abdeb64dc739a1f946d5ef4·...·]0-4">)</span><span·class="p">.</span></code></pre><h2·id="accessing-record-fields"·class="section-heading">152 ····</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_object</span><span·class="p"·data-group-id="2554838700-4">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2554838700-5">{</span><span·class="ss">name</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·250,·SHA:·bfb30de20b135f7abd29c568fca0c66e7a626b5368465f18111064a357f4e30a·...·]0-4">)</span><span·class="p">.</span></code></pre><h2·id="accessing-record-fields"·class="section-heading">
153 ··<a·href="#accessing-record-fields"·class="hover-link">153 ··<a·href="#accessing-record-fields"·class="hover-link">
154 ····<i·class="ri-link-m"·aria-hidden="true"></i>154 ····<i·class="ri-link-m"·aria-hidden="true"></i>
155 ··</a>155 ··</a>
156 ··<span·class="text">Accessing·Record·Fields</span>156 ··<span·class="text">Accessing·Record·Fields</span>
157 </h2>157 </h2>
158 <pre><code·class="text">Expr#Name.Field</code></pre><p>Returns·the·value·of·the·specified·field.·<code·class="inline">Expr</code>·is·to·evaluate·to·a·<code·class="inline">Name</code>158 <pre><code·class="text">Expr#Name.Field</code></pre><p>Returns·the·value·of·the·specified·field.·<code·class="inline">Expr</code>·is·to·evaluate·to·a·<code·class="inline">Name</code>
159 record.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="9979253773-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9979253773-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·48edb9ecd092dc02444f33713a3fdaf413786154ee666ae37e79ee4fa2f04a98·...·]-1">)</span><span·class="p">.</span><span·class="w">159 record.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2802270421-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2802270421-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·1abdd9c3b8c7e2580d9ca67ec8f7992ce0ee169c499ea4a9e67f4b028311a9b1·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">get_person_name</span><span·class="p"·data-group-id="9979253773-3">(</span><span·class="n">Person</span><span·class="p"·data-group-id="9979253773-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">160 </span><span·class="nf">get_person_name</span><span·class="p"·data-group-id="2802270421-3">(</span><span·class="n">Person</span><span·class="p"·data-group-id="2802270421-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
161 ····</span><span·class="n">Person</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">.</span></code></pre><p>The·following·expression·returns·the·position·of·the·specified·field·in·the161 ····</span><span·class="n">Person</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">.</span></code></pre><p>The·following·expression·returns·the·position·of·the·specified·field·in·the
162 tuple·representation·of·the·record:</p><pre><code·class="text">#Name.Field</code></pre><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="7726817771-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7726817771-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·861e9be25eb3975132aa5df082c84d1eedfb1d0eb90e5f46423b406871c841b4·...·]-1">)</span><span·class="p">.</span><span·class="w">162 tuple·representation·of·the·record:</p><pre><code·class="text">#Name.Field</code></pre><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1567746039-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1567746039-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·e6fb561520548d69ece3c9e8171dd6612911c2ace51c0d18bb0633a68b7955bc·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="7726817771-3">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="7726817771-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">163 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="1567746039-3">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="1567746039-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
164 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keyfind</span><span·class="p"·data-group-id="7726817771-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·09aadaeeb94d6e856082f8f2f91777510bf091d78185d40ef64c7c1d86437fe8·...·]-4">)</span><span·class="p">.</span></code></pre><h2·id="updating-records"·class="section-heading">164 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keyfind</span><span·class="p"·data-group-id="1567746039-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·f9d5ef08ccb2a63c60df41857f2d9fd1add62b463f4dd0fc882233e0e22de742·...·]-4">)</span><span·class="p">.</span></code></pre><h2·id="updating-records"·class="section-heading">
165 ··<a·href="#updating-records"·class="hover-link">165 ··<a·href="#updating-records"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">Updating·Records</span>168 ··<span·class="text">Updating·Records</span>
169 </h2>169 </h2>
170 <pre><code·class="text">Expr#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p><code·class="inline">Expr</code>·is·to·evaluate·to·a·<code·class="inline">Name</code>·record.·A·copy·of·this·record·is·returned,170 <pre><code·class="text">Expr#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p><code·class="inline">Expr</code>·is·to·evaluate·to·a·<code·class="inline">Name</code>·record.·A·copy·of·this·record·is·returned,
171 with·the·value·of·each·specified·field·<code·class="inline">FieldI</code>·changed·to·the·value·of171 with·the·value·of·each·specified·field·<code·class="inline">FieldI</code>·changed·to·the·value·of
Offset 178, 51 lines modifiedOffset 178, 51 lines modified
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Records·in·Guards</span>180 ··<span·class="text">Records·in·Guards</span>
181 </h2>181 </h2>
182 <p>Since·record·expressions·are·expanded·to·tuple·expressions,·creating182 <p>Since·record·expressions·are·expanded·to·tuple·expressions,·creating
183 records·and·accessing·record·fields·are·allowed·in·guards.·However,183 records·and·accessing·record·fields·are·allowed·in·guards.·However,
184 all·subexpressions·(for·initializing·fields),·must·be·valid·guard184 all·subexpressions·(for·initializing·fields),·must·be·valid·guard
185 expressions·as·well.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle</span><span·class="p"·data-group-id="8736604297-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="8736604297-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·442,·SHA:·61c1861d53d5a2d2542bfa26983b3033ba30d46b103adaff795de5b381818137·...·]-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">185 expressions·as·well.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle</span><span·class="p"·data-group-id="3958479776-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3958479776-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·442,·SHA:·42b046a7c6c2b11ef3a4e3de933a312ce64f9479b32d6f3072eb9265727496fb·...·]-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
186 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">186 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">handle</span><span·class="p"·data-group-id="8736604297-3">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="8736604297-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">running</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">187 </span><span·class="nf">handle</span><span·class="p"·data-group-id="3958479776-3">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3958479776-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">running</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
188 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>There·is·also·a·type·test·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_record/2"><code·class="inline">is_record(Term,·RecordTag)</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">is_person</span><span·class="p"·data-group-id="8143865829-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="8143865829-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="8143865829-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·a69d57b28f6eb9d841ab9f1053a304356f9d20b502eefe1cdd4011781093e50e·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>There·is·also·a·type·test·BIF·<a·href="../../erts-15.2.2/doc/html/erlang.html#is_record/2"><code·class="inline">is_record(Term,·RecordTag)</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">is_person</span><span·class="p"·data-group-id="7046624556-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="7046624556-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="7046624556-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·e153796fa74b50c3c05be79c948aa68d98779311903b00d83e0c6fc55382ba49·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
189 ····</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">189 ····</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
190 </span><span·class="nf">is_person</span><span·class="p"·data-group-id="8143865829-3">(</span><span·class="p">_</span><span·class="n">P</span><span·class="p"·data-group-id="8143865829-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">190 </span><span·class="nf">is_person</span><span·class="p"·data-group-id="7046624556-3">(</span><span·class="p">_</span><span·class="n">P</span><span·class="p"·data-group-id="7046624556-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="ss">false</span><span·class="p">.</span></code></pre><h2·id="records-in-patterns"·class="section-heading">191 ····</span><span·class="ss">false</span><span·class="p">.</span></code></pre><h2·id="records-in-patterns"·class="section-heading">
192 ··<a·href="#records-in-patterns"·class="hover-link">192 ··<a·href="#records-in-patterns"·class="hover-link">
193 ····<i·class="ri-link-m"·aria-hidden="true"></i>193 ····<i·class="ri-link-m"·aria-hidden="true"></i>
194 ··</a>194 ··</a>
195 ··<span·class="text">Records·in·Patterns</span>195 ··<span·class="text">Records·in·Patterns</span>
196 </h2>196 </h2>
197 <p>A·pattern·that·matches·a·certain·record·is·created·in·the·same·way·as·a·record197 <p>A·pattern·that·matches·a·certain·record·is·created·in·the·same·way·as·a·record
198 is·created:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p>In·this·case,·one·or·more·of·<code·class="inline">Expr1</code>·...·<code·class="inline">ExprK</code>·can·be·unbound·variables.</p><h2·id="nested-records"·class="section-heading">198 is·created:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p>In·this·case,·one·or·more·of·<code·class="inline">Expr1</code>·...·<code·class="inline">ExprK</code>·can·be·unbound·variables.</p><h2·id="nested-records"·class="section-heading">
199 ··<a·href="#nested-records"·class="hover-link">199 ··<a·href="#nested-records"·class="hover-link">
200 ····<i·class="ri-link-m"·aria-hidden="true"></i>200 ····<i·class="ri-link-m"·aria-hidden="true"></i>
201 ··</a>201 ··</a>
202 ··<span·class="text">Nested·Records</span>202 ··<span·class="text">Nested·Records</span>
203 </h2>203 </h2>
204 <p>Assume·the·following·record·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4978114115-1">(</span><span·class="ss">nrec0</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4978114115-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·132,·SHA:·ffdcb80f2e72c264d6bb9e7e6d56376dd59d90c2a8a492615d2218275e717dad·...·]-1">)</span><span·class="p">.</span><span·class="w">204 <p>Assume·the·following·record·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2681918036-1">(</span><span·class="ss">nrec0</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2681918036-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·132,·SHA:·3e951a799ee46ad719861ceb1059755126a486a0376455264ce3f336772869f8·...·]-1">)</span><span·class="p">.</span><span·class="w">
205 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4978114115-3">(</span><span·class="ss">nrec1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4978114115-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·52c736eebfd49705689634c4d1ac9a59d4fc8fafac8c1920082e402a8b1e2a63·...·]-3">)</span><span·class="p">.</span><span·class="w">205 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2681918036-3">(</span><span·class="ss">nrec1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2681918036-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·0a26260b15a09050e8a93088c9ab1a14dbd8e360be3615115fa8da1d0cbecda5·...·]-3">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4978114115-6">(</span><span·class="ss">nrec2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4978114115-7">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·fc0a7839603ac0a5971a2542e36f880b57c6d5a7cd8fe833f00707d80de4e3d6·...·]-6">)</span><span·class="p">.</span><span·class="w">206 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2681918036-6">(</span><span·class="ss">nrec2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2681918036-7">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·4d308d5bd2d270fbc4b786edca8879be36d2f19d7692a664ae094b1af90b38f0·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="n">N2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">nrec2</span><span·class="p"·data-group-id="4978114115-9">{</span><span·class="p"·data-group-id="4978114115-9">}</span><span·class="p">,</span></code></pre><p>Accessing·or·updating·nested·records·can·be·written·without·parentheses:</p><pre><code·class="text">&quot;nested0&quot;·=·N2#nrec2.nrec1#nrec1.nrec0#nrec0.name,207 </span><span·class="n">N2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">nrec2</span><span·class="p"·data-group-id="2681918036-9">{</span><span·class="p"·data-group-id="2681918036-9">}</span><span·class="p">,</span></code></pre><p>Accessing·or·updating·nested·records·can·be·written·without·parentheses:</p><pre><code·class="text">&quot;nested0&quot;·=·N2#nrec2.nrec1#nrec1.nrec0#nrec0.name,
208 ····N0n·=·N2#nrec2.nrec1#nrec1.nrec0#nrec0{name·=·&quot;nested0a&quot;},</code></pre><p>which·is·equivalent·to:</p><pre><code·class="text">&quot;nested0&quot;·=·((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0.name,208 ····N0n·=·N2#nrec2.nrec1#nrec1.nrec0#nrec0{name·=·&quot;nested0a&quot;},</code></pre><p>which·is·equivalent·to:</p><pre><code·class="text">&quot;nested0&quot;·=·((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0.name,
209 N0n·=·((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0{name·=·&quot;nested0a&quot;},</code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·R14,·parentheses·were·necessary·when·accessing·or·updating209 N0n·=·((N2#nrec2.nrec1)#nrec1.nrec0)#nrec0{name·=·&quot;nested0a&quot;},</code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·R14,·parentheses·were·necessary·when·accessing·or·updating
210 nested·records.</p></section><h2·id="internal-representation-of-records"·class="section-heading">210 nested·records.</p></section><h2·id="internal-representation-of-records"·class="section-heading">
211 ··<a·href="#internal-representation-of-records"·class="hover-link">211 ··<a·href="#internal-representation-of-records"·class="hover-link">
212 ····<i·class="ri-link-m"·aria-hidden="true"></i>212 ····<i·class="ri-link-m"·aria-hidden="true"></i>
213 ··</a>213 ··</a>
214 ··<span·class="text">Internal·Representation·of·Records</span>214 ··<span·class="text">Internal·Representation·of·Records</span>
215 </h2>215 </h2>
216 <p>Record·expressions·are·translated·to·tuple·expressions·during·compilation.·A216 <p>Record·expressions·are·translated·to·tuple·expressions·during·compilation.·A
217 record·defined·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4320588472-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4320588472-2">{</span><span·class="n">Field1</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FieldN</span><span·class="p"·data-group-id="4320588472-2">}</span><span·class="p"·data-group-id="4320588472-1">)</span><span·class="p">.</span></code></pre><p>is·internally·represented·by·the·tuple:</p><pre><code·class="text">{Name,·Value1,·...,·ValueN}</code></pre><p>Here·each·<code·class="inline">ValueI</code>·is·the·default·value·for·<code·class="inline">FieldI</code>.</p><p>To·each·module·using·records,·a·pseudo·function·is·added·during·compilation·to 
218 obtain·information·about·records:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">record_info</span><span·class="p"·data-group-id="1115232337-1">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="1115232337-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1115232337-2">[</span><span·class="n">Field</span><span·class="p"·data-group-id="1115232337-2">]</span><span·class="w"> 
219 </span><span·class="nf">record_info</span><span·class="p"·data-group-id="1115232337-3">(</span><span·class="nb">size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="1115232337-3">)</span><sp[·...·truncated·by·diffoscope;·len:·216,·SHA:·dbe5cd2b032485dac7384e2d3ff22e1357da302e3c3e9f59d7f5b684c3d56890·...·]217 record·defined·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8801215321-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·721,·SHA:·0a4813785bb70970bd9e8f96fdfa5acd4a1edeb125ef7dce7ed1ebb6e8d57c83·...·]
 218 obtain·information·about·records:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">record_info</span><span·class="p"·data-group-id="2174240025-1">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="2174240025-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2174240025-2">[</span><span·class="n">Field</span><span·class="p"·data-group-id="2174240025-2">]</span><span·class="w">
 219 </span><span·class="nf">record_info</span><span·class="p"·data-group-id="2174240025-3">(</span><span·class="nb">size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="2174240025-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Size</span></code></pre><p><code·class="inline">Size</code>·is·the·size·of·the·tuple·representation,·that·is,·one·more·than·the
220 number·of·fields.</p>220 number·of·fields.</p>
221 </div>221 </div>
  
222 <div·class="bottom-actions"·id="bottom-actions">222 <div·class="bottom-actions"·id="bottom-actions">
223 ··<div·class="bottom-actions-item">223 ··<div·class="bottom-actions-item">
  
224 ······<a·href="macros.html"·class="bottom-actions-button"·rel="prev">224 ······<a·href="macros.html"·class="bottom-actions-button"·rel="prev">
67.5 KB
./usr/share/doc/erlang-doc/html/doc/system/release_handling.html
    
Offset 223, 38 lines modifiedOffset 223, 38 lines modified
223 ··<span·class="text">update</span>223 ··<span·class="text">update</span>
224 </h3>224 </h3>
225 <p>If·a·more·complex·change·has·been·made,·for·example,·a·change·to·the·format·of225 <p>If·a·more·complex·change·has·been·made,·for·example,·a·change·to·the·format·of
226 the·internal·state·of·a·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>,·simple·code·replacement·is·not·sufficient.226 the·internal·state·of·a·<a·href="../../lib/stdlib-6.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>,·simple·code·replacement·is·not·sufficient.
227 Instead,·it·is·necessary·to:</p><ul><li>Suspend·the·processes·using·the·module·(to·avoid·that·they·try·to·handle·any227 Instead,·it·is·necessary·to:</p><ul><li>Suspend·the·processes·using·the·module·(to·avoid·that·they·try·to·handle·any
228 requests·before·the·code·replacement·is·completed).</li><li>Ask·them·to·transform·the·internal·state·format·and·switch·to·the·new·version228 requests·before·the·code·replacement·is·completed).</li><li>Ask·them·to·transform·the·internal·state·format·and·switch·to·the·new·version
229 of·the·module.</li><li>Remove·the·old·version.</li><li>Resume·the·processes.</li></ul><p>This·is·called·<em>synchronized·code·replacement</em>·and·for·this·the·following229 of·the·module.</li><li>Remove·the·old·version.</li><li>Resume·the·processes.</li></ul><p>This·is·called·<em>synchronized·code·replacement</em>·and·for·this·the·following
230 instructions·are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5610649081-1">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5610649081-2">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Extra</span><span·class="p"·data-group-id="5610649081-2">}</span><span·class="p"·data-group-id="5610649081-1">}</span><span·class="w"> 
231 </span><span·class="p"·data-group-id="5610649081-3">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">supervisor</span><span·c[·...·truncated·by·diffoscope;·len:·190,·SHA:·03f346bdead31819ca76ab244304b6dafc2b0a3017d9139043aaec489d3da991·...·]230 instructions·are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0945532731-1">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·309,·SHA:·77b4234f1044b09836cf6447f0ba319ef84394bccbbf0fa4730921ce7a9579dd·...·]
 231 </span><span·class="p"·data-group-id="0945532731-3">{</span><span·class="ss">update</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="0945532731-3">}</span></code></pre><p><code·class="inline">update</code>·with·argument·<code·class="inline">{advanced,Extra}</code>·is·used·when·changing·the·internal
232 state·of·a·behaviour·as·described·above.·It·causes·behaviour·processes·to·call232 state·of·a·behaviour·as·described·above.·It·causes·behaviour·processes·to·call
233 the·callback·function·<code·class="inline">code_change/3</code>,·passing·the·term·<code·class="inline">Extra</code>·and·some·other233 the·callback·function·<code·class="inline">code_change/3</code>,·passing·the·term·<code·class="inline">Extra</code>·and·some·other
234 information·as·arguments.·See·the·manual·pages·for·the·respective·behaviours·and234 information·as·arguments.·See·the·manual·pages·for·the·respective·behaviours·and
235 <a·href="appup_cookbook.html#int_state">Appup·Cookbook</a>.</p><p><code·class="inline">update</code>·with·argument·<code·class="inline">supervisor</code>·is·used·when·changing·the·start235 <a·href="appup_cookbook.html#int_state">Appup·Cookbook</a>.</p><p><code·class="inline">update</code>·with·argument·<code·class="inline">supervisor</code>·is·used·when·changing·the·start
236 specification·of·a·supervisor.·See·<a·href="appup_cookbook.html#sup">Appup·Cookbook</a>.</p><p>When·a·module·is·to·be·updated,·the·release·handler·finds·which·processes·that236 specification·of·a·supervisor.·See·<a·href="appup_cookbook.html#sup">Appup·Cookbook</a>.</p><p>When·a·module·is·to·be·updated,·the·release·handler·finds·which·processes·that
237 are·<em>using</em>·the·module·by·traversing·the·supervision·tree·of·each·running237 are·<em>using</em>·the·module·by·traversing·the·supervision·tree·of·each·running
238 application·and·checking·all·the·child·specifications:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9129938830-1">{</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StartFunc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Restart</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·222,·SHA:·207250f82707616ff4fe6b4379419ac5a5994050b0d6d823810867bb755281a7·...·]-1">}</span></code></pre><p>A·process·uses·a·module·if·the·name·is·listed·in·<code·class="inline">Modules</code>·in·the·child238 application·and·checking·all·the·child·specifications:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7074353714-1">{</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StartFunc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Restart</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·222,·SHA:·228e8e57457306c9d92e732bb8f0630fc5ca1676121c1bdbcc069309f29b6d60·...·]-1">}</span></code></pre><p>A·process·uses·a·module·if·the·name·is·listed·in·<code·class="inline">Modules</code>·in·the·child
239 specification·for·the·process.</p><p>If·<code·class="inline">Modules=dynamic</code>,·which·is·the·case·for·event·managers,·the·event·manager239 specification·for·the·process.</p><p>If·<code·class="inline">Modules=dynamic</code>,·which·is·the·case·for·event·managers,·the·event·manager
240 process·informs·the·release·handler·about·the·list·of·currently·installed·event240 process·informs·the·release·handler·about·the·list·of·currently·installed·event
241 handlers·(<code·class="inline">gen_event</code>),·and·it·is·checked·if·the·module·name·is·in·this·list241 handlers·(<code·class="inline">gen_event</code>),·and·it·is·checked·if·the·module·name·is·in·this·list
242 instead.</p><p>The·release·handler·suspends,·asks·for·code·change,·and·resumes·processes·by242 instead.</p><p>The·release·handler·suspends,·asks·for·code·change,·and·resumes·processes·by
243 calling·the·functions·<code·class="inline">sys:suspend/1,2</code>,·<code·class="inline">sys:change_code/4,5</code>,·and243 calling·the·functions·<code·class="inline">sys:suspend/1,2</code>,·<code·class="inline">sys:change_code/4,5</code>,·and
244 <code·class="inline">sys:resume/1,2</code>,·respectively.</p><h3·id="add_module-and-delete_module"·class="section-heading">244 <code·class="inline">sys:resume/1,2</code>,·respectively.</p><h3·id="add_module-and-delete_module"·class="section-heading">
245 ··<a·href="#add_module-and-delete_module"·class="hover-link">245 ··<a·href="#add_module-and-delete_module"·class="hover-link">
246 ····<i·class="ri-link-m"·aria-hidden="true"></i>246 ····<i·class="ri-link-m"·aria-hidden="true"></i>
247 ··</a>247 ··</a>
248 ··<span·class="text">add_module·and·delete_module</span>248 ··<span·class="text">add_module·and·delete_module</span>
249 </h3>249 </h3>
250 <p>If·a·new·module·is·introduced,·the·following·instruction·is·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4573050202-1">{</span><span·class="ss">add_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data-group-id="4573050202-1">}</span></code></pre><p>This·instruction·loads·module·<code·class="inline">Module</code>.·When·running·Erlang·in250 <p>If·a·new·module·is·introduced,·the·following·instruction·is·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6691471465-1">{</span><span·class="ss">add_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data-group-id="6691471465-1">}</span></code></pre><p>This·instruction·loads·module·<code·class="inline">Module</code>.·When·running·Erlang·in
251 embedded·mode·it·is·necessary·to·use·this·this·instruction.·It·is·not251 embedded·mode·it·is·necessary·to·use·this·this·instruction.·It·is·not
252 strictly·required·when·running·Erlang·in·interactive·mode,·since·the252 strictly·required·when·running·Erlang·in·interactive·mode,·since·the
253 code·server·automatically·searches·for·and·loads·unloaded·modules.</p><p>The·opposite·of·<code·class="inline">add_module</code>·is·<code·class="inline">delete_module</code>,·which·unloads·a·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9743651927-1">{</span><span·class="nb">delete_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data-group-id="9743651927-1">}</span></code></pre><p>Any·process,·in·any·application,·with·<code·class="inline">Module</code>·as·residence·module,·is253 code·server·automatically·searches·for·and·loads·unloaded·modules.</p><p>The·opposite·of·<code·class="inline">add_module</code>·is·<code·class="inline">delete_module</code>,·which·unloads·a·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3998553092-1">{</span><span·class="nb">delete_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data-group-id="3998553092-1">}</span></code></pre><p>Any·process,·in·any·application,·with·<code·class="inline">Module</code>·as·residence·module,·is
254 killed·when·the·instruction·is·evaluated.·Therefore,·the·user·must254 killed·when·the·instruction·is·evaluated.·Therefore,·the·user·must
255 ensure·that·all·such·processes·are·terminated·before·deleting·module255 ensure·that·all·such·processes·are·terminated·before·deleting·module
256 <code·class="inline">Module</code>·to·avoid·a·situation·with·failing·supervisor·restarts.</p><h3·id="application-instructions"·class="section-heading">256 <code·class="inline">Module</code>·to·avoid·a·situation·with·failing·supervisor·restarts.</p><h3·id="application-instructions"·class="section-heading">
257 ··<a·href="#application-instructions"·class="hover-link">257 ··<a·href="#application-instructions"·class="hover-link">
258 ····<i·class="ri-link-m"·aria-hidden="true"></i>258 ····<i·class="ri-link-m"·aria-hidden="true"></i>
259 ··</a>259 ··</a>
260 ··<span·class="text">Application·Instructions</span>260 ··<span·class="text">Application·Instructions</span>
Offset 341, 60 lines modifiedOffset 341, 60 lines modified
341 <code·class="inline">.app</code>·file.</li><li>Each·<code·class="inline">UpFromVsn</code>·is·a·previous·version·of·the·application·to·upgrade·from.</li><li>Each·<code·class="inline">DownToVsn</code>·is·a·previous·version·of·the·application·to·downgrade·to.</li><li>Each·<code·class="inline">Instructions</code>·is·a·list·of·release·handling·instructions.</li></ul><p><code·class="inline">UpFromVsn</code>·and·<code·class="inline">DownToVsn</code>·can·also·be·specified·as·regular·expressions.·For341 <code·class="inline">.app</code>·file.</li><li>Each·<code·class="inline">UpFromVsn</code>·is·a·previous·version·of·the·application·to·upgrade·from.</li><li>Each·<code·class="inline">DownToVsn</code>·is·a·previous·version·of·the·application·to·downgrade·to.</li><li>Each·<code·class="inline">Instructions</code>·is·a·list·of·release·handling·instructions.</li></ul><p><code·class="inline">UpFromVsn</code>·and·<code·class="inline">DownToVsn</code>·can·also·be·specified·as·regular·expressions.·For
342 more·information·about·the·syntax·and·contents·of·the·<code·class="inline">.appup</code>·file,·see342 more·information·about·the·syntax·and·contents·of·the·<code·class="inline">.appup</code>·file,·see
343 <a·href="../../lib/sasl-4.2.2/doc/html/appup.html"><code·class="inline">appup</code></a>·in·SASL.</p><p><a·href="appup_cookbook.html">Appup·Cookbook</a>·includes·examples·of·<code·class="inline">.appup</code>·files·for343 <a·href="../../lib/sasl-4.2.2/doc/html/appup.html"><code·class="inline">appup</code></a>·in·SASL.</p><p><a·href="appup_cookbook.html">Appup·Cookbook</a>·includes·examples·of·<code·class="inline">.appup</code>·files·for
344 typical·upgrade/downgrade·cases.</p><p><em>Example:</em>·Consider·the·release·<code·class="inline">ch_rel-1</code>·from344 typical·upgrade/downgrade·cases.</p><p><em>Example:</em>·Consider·the·release·<code·class="inline">ch_rel-1</code>·from
345 <a·href="release_structure.html#ch_rel">Releases</a>.·Assume·you·want·to·add·a·function345 <a·href="release_structure.html#ch_rel">Releases</a>.·Assume·you·want·to·add·a·function
346 <code·class="inline">available/0</code>·to·server·<code·class="inline">ch3</code>,·which·returns·the·number·of·available·channels346 <code·class="inline">available/0</code>·to·server·<code·class="inline">ch3</code>,·which·returns·the·number·of·available·channels
347 (when·trying·out·the·example,·make·the·change·in·a·copy·of·the·original347 (when·trying·out·the·example,·make·the·change·in·a·copy·of·the·original
348 directory,·to·ensure·that·the·first·version·is·still·available):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9438947683-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="9438947683-1">)</span><span·class="p">.</span><span·class="w">348 directory,·to·ensure·that·the·first·version·is·still·available):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6959466154-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="6959466154-1">)</span><span·class="p">.</span><span·class="w">
349 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="9438947683-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="9438947683-2">)</span><span·class="p">.</span><span·class="w">349 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="6959466154-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="6959466154-2">)</span><span·class="p">.</span><span·class="w">
350 </span><span·class="w">350 </span><span·class="w">
351 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9438947683-3">(</span><span·class="p"·data-group-id="9438947683-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9438947683-4">]</span><span·class="p"·data-group-id="9438947683-3">)</span><span·class="p">.</span><span·class="w">351 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6959466154-3">(</span><span·class="p"·data-group-id="6959466154-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6959466154-4">]</span><span·class="p"·data-group-id="6959466154-3">)</span><span·class="p">.</span><span·class="w">
352 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9438947683-5">(</span><span·class="p"·data-group-id="9438947683-6">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·a549751dffd3186bdb873e6758f2a5744ada7feb84037be522e4e1c7abef89f0·...·]-5">)</span><span·class="p">.</span><span·class="w">352 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6959466154-5">(</span><span·class="p"·data-group-id="6959466154-6">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·6b72ad370d1671d81c385cd1f5e190520085e0f2e4eff45dda1ab2e3effcefe5·...·]-5">)</span><span·class="p">.</span><span·class="w">
353 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9438947683-7">(</span><span·class="p"·data-group-id="9438947683-8">[</span><span·class="ss">available</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9438947683-8">]</span><span·class="p"·data-group-id="9438947683-7">)</span><span·class="p">.</span><span·class="w">353 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6959466154-7">(</span><span·class="p"·data-group-id="6959466154-8">[</span><span·class="ss">available</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6959466154-8">]</span><span·class="p"·data-group-id="6959466154-7">)</span><span·class="p">.</span><span·class="w">
354 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9438947683-9">(</span><span·class="p"·data-group-id="9438947683-10">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</s[·...·truncated·by·diffoscope;·len:·256,·SHA:·133f89114d26a5a69f4b606c8dfe26413d99797d1b1736fd207816f3e67cc9de·...·]-9">)</span><span·class="p">.</span><span·class="w">354 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6959466154-9">(</span><span·class="p"·data-group-id="6959466154-10">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</s[·...·truncated·by·diffoscope;·len:·256,·SHA:·0349a55e42f1bfacd347c04669d1a7e264082f536dba95b741ee32cf68d46aac·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
355 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="9438947683-11">(</span><span·class="p"·data-group-id="9438947683-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">355 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="6959466154-11">(</span><span·class="p"·data-group-id="6959466154-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
356 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="9438947683-12">(</span><span·class="p"·data-group-id="9438947683-13">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="9438947683-13">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·43e54a4b764f86ef8e12131d126b7d13a48802a3786373d16aec2486555e004e·...·]-12">)</span><span·class="p">.</span><span·class="w">356 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="6959466154-12">(</span><span·class="p"·data-group-id="6959466154-13">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p"·data-group-id="6959466154-13">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·046b02a889f0028643536d59f1db66ca86dcfd2524fe8ad42c627fb485cfc44c·...·]-12">)</span><span·class="p">.</span><span·class="w">
  
357 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="9438947683-16">(</span><span·class="p"·data-group-id="9438947683-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">357 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="6959466154-16">(</span><span·class="p"·data-group-id="6959466154-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
358 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="9438947683-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="9438947683-17">)</span><span·class="p">.</span><span·class="w">358 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="6959466154-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="6959466154-17">)</span><span·class="p">.</span><span·class="w">
  
359 </span><span·class="nf">free</span><span·class="p"·data-group-id="9438947683-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="9438947683-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">359 </span><span·class="nf">free</span><span·class="p"·data-group-id="6959466154-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="6959466154-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
360 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="9438947683-19">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9438947683-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·cc704fa5233569c614cc8dc85c5910650f1c8985cd0db7a461b2ce19dc5b4c0f·...·]-19">)</span><span·class="p">.</span><span·class="w">360 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="6959466154-19">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6959466154-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·8f6baf0049db6211734103a3b645cc77e6d211a338d1f3a38866db703aefc420·...·]-19">)</span><span·class="p">.</span><span·class="w">
  
361 </span><span·class="nf">available</span><span·class="p"·data-group-id="9438947683-21">(</span><span·class="p"·data-group-id="9438947683-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">361 </span><span·class="nf">available</span><span·class="p"·data-group-id="6959466154-21">(</span><span·class="p"·data-group-id="6959466154-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
362 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="9438947683-22">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">available</span><span·class="p"·data-group-id="9438947683-22">)</span><span·class="p">.</span><span·class="w">362 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="6959466154-22">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">available</span><span·class="p"·data-group-id="6959466154-22">)</span><span·class="p">.</span><span·class="w">
  
363 </span><span·class="nf">init</span><span·class="p"·data-group-id="9438947683-23">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="9438947683-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">363 </span><span·class="nf">init</span><span·class="p"·data-group-id="6959466154-23">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="6959466154-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
364 ····</span><span·class="p"·data-group-id="9438947683-24">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="9438947683-25">(</span><span·class="p"·data-group-id="9438947683-25">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·88ed874d37fe5992264ccfa9fc199c1d2ddc8f9adacf81fbb826b8bf99039c92·...·]-24">}</span><span·class="p">.</span><span·class="w">364 ····</span><span·class="p"·data-group-id="6959466154-24">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="6959466154-25">(</span><span·class="p"·data-group-id="6959466154-25">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·5b4d0f530ed2c18fe9d6fa78d209c572c1ed103b84197a6732c86ca024ac1659·...·]-24">}</span><span·class="p">.</span><span·class="w">
  
365 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="9438947683-26">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·f7d2e0aaca7b83bff42c563bc9fac049aec987ffe1f69285386d6ee4813cd9bd·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">365 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="6959466154-26">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·fc0ec5b4b9d83b9092950cd5638a22ed50f6c7844f970800e41c1d0c239537d5·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
366 ····</span><span·class="p"·data-group-id="9438947683-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9438947683-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·f4925a9c964ebfc2ca8040c9a8a6ef72318b8e319d1920e1f9ac66127da027ba·...·]-28">)</span><span·class="p">,</span><span·class="w">366 ····</span><span·class="p"·data-group-id="6959466154-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="6959466154-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·97e35784e031961af43d668098cf0dac33f246c96719b3fabec0a7b9d1696290·...·]-28">)</span><span·class="p">,</span><span·class="w">
367 ····</span><span·class="p"·data-group-id="9438947683-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9438947683-29">}</span><span·class="p">;</span><span·class="w">367 ····</span><span·class="p"·data-group-id="6959466154-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="6959466154-29">}</span><span·class="p">;</span><span·class="w">
368 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="9438947683-30">(</span><span·class="ss">available</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·0a817bf68be0305448b1a49015c424a4b08aea5075bef7a2a72e979df5c80186·...·]-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">368 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="6959466154-30">(</span><span·class="ss">available</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·86aad3ab3588ba0cee512cec1c493c5d2f7b476c2ef2d9125c81b3822873940f·...·]-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
369 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">available</span><span·class="p"·data-group-id="9438947683-31">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="9438947683-31">)</span><span·class="p">,</span><span·class="w">369 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">available</span><span·class="p"·data-group-id="6959466154-31">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="6959466154-31">)</span><span·class="p">,</span><span·class="w">
370 ····</span><span·class="p"·data-group-id="9438947683-32">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="9438947683-32">}</span><span·class="p">.</span><span·class="w">370 ····</span><span·class="p"·data-group-id="6959466154-32">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="6959466154-32">}</span><span·class="p">.</span><span·class="w">
  
371 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="9438947683-33">(</span><span·class="p"·data-group-id="9438947683-34">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="9438947683-34">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·8907402e78a354bfc64974f6fa761b758143e3df1f68ed671dbefb2c577ff26c·...·]-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">371 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="6959466154-33">(</span><span·class="p"·data-group-id="6959466154-34">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="6959466154-34">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·b1d628c395552623d14c932bc96fa05f59c5c1000b925efae7e95f6134f696ba·...·]-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
372 ····</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="9438947683-35">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="9438947683-35">)</span><span·class="p">,</span><span·class="w">372 ····</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="6959466154-35">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="6959466154-35">)</span><span·class="p">,</span><span·class="w">
373 ····</span><span·class="p"·data-group-id="9438947683-36">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9438947683-36">}</span><span·class="p">.</span></code></pre><p>A·new·version·of·the·<code·class="inline">ch_app.app</code>·file·must·now·be·created,·where·the·version·is373 ····</span><span·class="p"·data-group-id="6959466154-36">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="6959466154-36">}</span><span·class="p">.</span></code></pre><p>A·new·version·of·the·<code·class="inline">ch_app.app</code>·file·must·now·be·created,·where·the·version·is
374 updated:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4814448746-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">374 updated:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6908686794-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">
375 ·</span><span·class="p"·data-group-id="4814448746-2">[</span><span·class="p"·data-group-id="4814448746-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="4814448746-3">}</span><span·class="p">,</span><span·class="w">375 ·</span><span·class="p"·data-group-id="6908686794-2">[</span><span·class="p"·data-group-id="6908686794-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="6908686794-3">}</span><span·class="p">,</span><span·class="w">
376 ··</span><span·class="p"·data-group-id="4814448746-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2&quot;</span><span·class="p"·data-group-id="4814448746-4">}</span><span·class="p">,</span><span·class="w">376 ··</span><span·class="p"·data-group-id="6908686794-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2&quot;</span><span·class="p"·data-group-id="6908686794-4">}</span><span·class="p">,</span><span·class="w">
377 ··</span><span·class="p"·data-group-id="4814448746-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4814448746-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup<[·...·truncated·by·diffoscope;·len:·175,·SHA:·4fc2b88cf35358e5b74491b20abe4e38176e8acea69bf08a6171d8fbcc3ecbef·...·]-5">}</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="p"·data-group-id="6908686794-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6908686794-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup<[·...·truncated·by·diffoscope;·len:·175,·SHA:·0ff4a3cbcb50dfd31bf2009563de54a274b3469ee2d7879ff104f306d89a16ed·...·]-5">}</span><span·class="p">,</span><span·class="w">
378 ··</span><span·class="p"·data-group-id="4814448746-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4814448746-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4814448746-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·d6c2daa9cfc6924195ca35bfe0238aa13f2b742e1c1118614bb5eee238340bcc·...·]-7">}</span><span·class="p">,</span><span·class="w">378 ··</span><span·class="p"·data-group-id="6908686794-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6908686794-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="6908686794-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·156be333637e942a54896c58a188907ea2ae9bb2f40beae352faac9fa25333cc·...·]-7">}</span><span·class="p">,</span><span·class="w">
379 ··</span><span·class="p"·data-group-id="4814448746-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4814448746-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·c1ab9f2761d6174c3d42d8ef689f8d95e03c3aafb5de887121cdf2bcb1329b55·...·]-9">}</span><span·class="p">,</span><span·class="w">379 ··</span><span·class="p"·data-group-id="6908686794-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6908686794-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·0eec34fddd8249fe304e0bf90c2eee3a85ee9279dc9e60013afdf0a473e7d28d·...·]-9">}</span><span·class="p">,</span><span·class="w">
380 ··</span><span·class="p"·data-group-id="4814448746-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4814448746-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="4814448746-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·57ff0002e480b18f8735d9c8ae53c37b46638953cbd406e64969295de3c698f0·...·]-11">}</span><span·class="w">380 ··</span><span·class="p"·data-group-id="6908686794-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6908686794-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="6908686794-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·344912b97b5dfad7f471973992ae136b71884b238bea6538fe202fbae61d2c3b·...·]-11">}</span><span·class="w">
381 ·</span><span·class="p"·data-group-id="4814448746-2">]</span><span·class="p"·data-group-id="4814448746-1">}</span><span·class="p">.</span></code></pre><p>To·upgrade·<code·class="inline">ch_app</code>·from·<code·class="inline">&quot;1&quot;</code>·to·<code·class="inline">&quot;2&quot;</code>·(and·to·downgrade·from·<code·class="inline">&quot;2&quot;</code>·to·<code·class="inline">&quot;1&quot;</code>),381 ·</span><span·class="p"·data-group-id="6908686794-2">]</span><span·class="p"·data-group-id="6908686794-1">}</span><span·class="p">.</span></code></pre><p>To·upgrade·<code·class="inline">ch_app</code>·from·<code·class="inline">&quot;1&quot;</code>·to·<code·class="inline">&quot;2&quot;</code>·(and·to·downgrade·from·<code·class="inline">&quot;2&quot;</code>·to·<code·class="inline">&quot;1&quot;</code>),
382 you·only·need·to·load·the·new·(old)·version·of·the·<code·class="inline">ch3</code>·callback·module.·Create382 you·only·need·to·load·the·new·(old)·version·of·the·<code·class="inline">ch3</code>·callback·module.·Create
383 the·application·upgrade·file·<code·class="inline">ch_app.appup</code>·in·the·<code·class="inline">ebin</code>·directory:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0898704575-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">383 the·application·upgrade·file·<code·class="inline">ch_app.appup</code>·in·the·<code·class="inline">ebin</code>·directory:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5471992515-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
384 ·</span><span·class="p"·data-group-id="0898704575-2">[</span><span·class="p"·data-group-id="0898704575-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0898704575-4">[</span><span·class="p"·data-group-id="0898704575-5"[·...·truncated·by·diffoscope;·len:·318,·SHA:·219c49a1d90120fa4da41984cae214eead52888fc74045b94770e1398feea4c4·...·]5-2">]</span><span·class="p">,</span><span·class="w">384 ·</span><span·class="p"·data-group-id="5471992515-2">[</span><span·class="p"·data-group-id="5471992515-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5471992515-4">[</span><span·class="p"·data-group-id="5471992515-5"[·...·truncated·by·diffoscope;·len:·318,·SHA:·8e2cfdca8d6d805afe6c10f7090d51609fbaee960b2b682531ce2c884157cf33·...·]5-2">]</span><span·class="p">,</span><span·class="w">
385 ·</span><span·class="p"·data-group-id="0898704575-6">[</span><span·class="p"·data-group-id="0898704575-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0898704575-8">[</span><span·class="p"·data-group-id="0898704575-9"[·...·truncated·by·diffoscope;·len:·318,·SHA:·0c9a6d3c1ca5eefa0ca48ba981781d8992a79efc0fe0640283eadae51fa936f2·...·]5-6">]</span><span·class="w">385 ·</span><span·class="p"·data-group-id="5471992515-6">[</span><span·class="p"·data-group-id="5471992515-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5471992515-8">[</span><span·class="p"·data-group-id="5471992515-9"[·...·truncated·by·diffoscope;·len:·318,·SHA:·332fe53ea0d156cce80da085e9162a02e6b8884cd55979c329085d58e06a1bb0·...·]5-6">]</span><span·class="w">
386 </span><span·class="p"·data-group-id="0898704575-1">}</span><span·class="p">.</span></code></pre><p><a·href=""·id="relup"></a></p><h2·id="release-upgrade-file"·class="section-heading">386 </span><span·class="p"·data-group-id="5471992515-1">}</span><span·class="p">.</span></code></pre><p><a·href=""·id="relup"></a></p><h2·id="release-upgrade-file"·class="section-heading">
387 ··<a·href="#release-upgrade-file"·class="hover-link">387 ··<a·href="#release-upgrade-file"·class="hover-link">
388 ····<i·class="ri-link-m"·aria-hidden="true"></i>388 ····<i·class="ri-link-m"·aria-hidden="true"></i>
389 ··</a>389 ··</a>
390 ··<span·class="text">Release·Upgrade·File</span>390 ··<span·class="text">Release·Upgrade·File</span>
391 </h2>391 </h2>
392 <p>To·define·how·to·upgrade/downgrade·between·the·new·version·and·previous·versions392 <p>To·define·how·to·upgrade/downgrade·between·the·new·version·and·previous·versions
393 of·a·release,·a·<em>release·upgrade·file</em>,·or·in·short·<code·class="inline">.relup</code>·file,·is·to·be393 of·a·release,·a·<em>release·upgrade·file</em>,·or·in·short·<code·class="inline">.relup</code>·file,·is·to·be
Offset 405, 22 lines modifiedOffset 405, 22 lines modified
405 are·to·be·added·and·deleted,·and·which·applications·that·must·be·upgraded·and/or405 are·to·be·added·and·deleted,·and·which·applications·that·must·be·upgraded·and/or
406 downgraded.·The·instructions·for·this·are·fetched·from·the·<code·class="inline">.appup</code>·files·and406 downgraded.·The·instructions·for·this·are·fetched·from·the·<code·class="inline">.appup</code>·files·and
407 transformed·into·a·single·list·of·low-level·instructions·in·the·right·order.</p><p>If·the·<code·class="inline">relup</code>·file·is·relatively·simple,·it·can·be·created·manually.·It·is·only407 transformed·into·a·single·list·of·low-level·instructions·in·the·right·order.</p><p>If·the·<code·class="inline">relup</code>·file·is·relatively·simple,·it·can·be·created·manually.·It·is·only
408 to·contain·low-level·instructions.</p><p>For·details·about·the·syntax·and·contents·of·the·release·upgrade·file,·see408 to·contain·low-level·instructions.</p><p>For·details·about·the·syntax·and·contents·of·the·release·upgrade·file,·see
409 <a·href="../../lib/sasl-4.2.2/doc/html/relup.html"><code·class="inline">relup</code></a>·in·SASL.</p><p><em>Example,·continued·from·the·previous·section:</em>·You·have·a·new·version·&quot;2&quot;·of409 <a·href="../../lib/sasl-4.2.2/doc/html/relup.html"><code·class="inline">relup</code></a>·in·SASL.</p><p><em>Example,·continued·from·the·previous·section:</em>·You·have·a·new·version·&quot;2&quot;·of
410 <code·class="inline">ch_app</code>·and·an·<code·class="inline">.appup</code>·file.·A·new·version·of·the·<code·class="inline">.rel</code>·file·is·also·needed.410 <code·class="inline">ch_app</code>·and·an·<code·class="inline">.appup</code>·file.·A·new·version·of·the·<code·class="inline">.rel</code>·file·is·also·needed.
411 This·time·the·file·is·called·<code·class="inline">ch_rel-2.rel</code>·and·the·release·version·string·is411 This·time·the·file·is·called·<code·class="inline">ch_rel-2.rel</code>·and·the·release·version·string·is
412 changed·from·&quot;A&quot;·to·&quot;B&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1064627222-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">412 changed·from·&quot;A&quot;·to·&quot;B&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9797409427-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
413 ·</span><span·class="p"·data-group-id="1064627222-2">{</span><span·class="s">&quot;ch_rel&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group-id="1064627222-2">}</span><span·class="p">,</span><span·class="w">413 ·</span><span·class="p"·data-group-id="9797409427-2">{</span><span·class="s">&quot;ch_rel&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group-id="9797409427-2">}</span><span·class="p">,</span><span·class="w">
414 ·</span><span·class="p"·data-group-id="1064627222-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;14.2.5&quot;</span><span·class="p"·data-group-id="1064627222-3">}</span><span·class="p">,</span><span·class="w">414 ·</span><span·class="p"·data-group-id="9797409427-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;14.2.5&quot;</span><span·class="p"·data-group-id="9797409427-3">}</span><span·class="p">,</span><span·class="w">
415 ·</span><span·class="p"·data-group-id="1064627222-4">[</span><span·class="p"·data-group-id="1064627222-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;9.2.4&quot;</span><span·class="p"·data-group-id="1064627222-5">}</span><span·class="p">,</span><span·class="w">415 ·</span><span·class="p"·data-group-id="9797409427-4">[</span><span·class="p"·data-group-id="9797409427-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;9.2.4&quot;</span><span·class="p"·data-group-id="9797409427-5">}</span><span·class="p">,</span><span·class="w">
416 ··</span><span·class="p"·data-group-id="1064627222-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.2.3&quot;</span><span·class="p"·data-group-id="1064627222-6">}</span><span·class="p">,</span><span·class="w">416 ··</span><span·class="p"·data-group-id="9797409427-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.2.3&quot;</span><span·class="p"·data-group-id="9797409427-6">}</span><span·class="p">,</span><span·class="w">
417 ··</span><span·class="p"·data-group-id="1064627222-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.2.1&quot;</span><span·class="p"·data-group-id="1064627222-7">}</span><span·class="p">,</span><span·class="w">417 ··</span><span·class="p"·data-group-id="9797409427-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.2.1&quot;</span><span·class="p"·data-group-id="9797409427-7">}</span><span·class="p">,</span><span·class="w">
418 ··</span><span·class="p"·data-group-id="1064627222-8">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2&quot;</span><span·class="p"·data-group-id="1064627222-8">}</span><span·class="p"·data-group-id="1064627222-4">]</span><span·class="w">418 ··</span><span·class="p"·data-group-id="9797409427-8">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2&quot;</span><span·class="p"·data-group-id="9797409427-8">}</span><span·class="p"·data-group-id="9797409427-4">]</span><span·class="w">
419 </span><span·class="p"·data-group-id="1064627222-1">}</span><span·class="p">.</span></code></pre><p>Now·the·<code·class="inline">relup</code>·file·can·be·generated:</p><pre><code·class="text">1&gt;·systools:make_relup(&quot;ch_rel-2&quot;,·[&quot;ch_rel-1&quot;],·[&quot;ch_rel-1&quot;]).419 </span><span·class="p"·data-group-id="9797409427-1">}</span><span·class="p">.</span></code></pre><p>Now·the·<code·class="inline">relup</code>·file·can·be·generated:</p><pre><code·class="text">1&gt;·systools:make_relup(&quot;ch_rel-2&quot;,·[&quot;ch_rel-1&quot;],·[&quot;ch_rel-1&quot;]).
420 ok</code></pre><p>This·generates·a·<code·class="inline">relup</code>·file·with·instructions·for·how·to·upgrade·from·version420 ok</code></pre><p>This·generates·a·<code·class="inline">relup</code>·file·with·instructions·for·how·to·upgrade·from·version
421 &quot;A&quot;·(&quot;ch_rel-1&quot;)·to·version·&quot;B&quot;·(&quot;ch_rel-2&quot;)·and·how·to·downgrade·from·version421 &quot;A&quot;·(&quot;ch_rel-1&quot;)·to·version·&quot;B&quot;·(&quot;ch_rel-2&quot;)·and·how·to·downgrade·from·version
422 &quot;B&quot;·to·version·&quot;A&quot;.</p><p>Both·the·old·and·new·versions·of·the·<code·class="inline">.app</code>·and·<code·class="inline">.rel</code>·files·must·be·in·the·code422 &quot;B&quot;·to·version·&quot;A&quot;.</p><p>Both·the·old·and·new·versions·of·the·<code·class="inline">.app</code>·and·<code·class="inline">.rel</code>·files·must·be·in·the·code
423 path,·as·well·as·the·<code·class="inline">.appup</code>·and·(new)·<code·class="inline">.beam</code>·files.·The·code·path·can·be423 path,·as·well·as·the·<code·class="inline">.appup</code>·and·(new)·<code·class="inline">.beam</code>·files.·The·code·path·can·be
424 extended·by·using·the·option·<code·class="inline">path</code>:</p><pre><code·class="text">1&gt;·systools:make_relup(&quot;ch_rel-2&quot;,·[&quot;ch_rel-1&quot;],·[&quot;ch_rel-1&quot;],424 extended·by·using·the·option·<code·class="inline">path</code>:</p><pre><code·class="text">1&gt;·systools:make_relup(&quot;ch_rel-2&quot;,·[&quot;ch_rel-1&quot;],·[&quot;ch_rel-1&quot;],
425 [{path,[&quot;../ch_rel-1&quot;,425 [{path,[&quot;../ch_rel-1&quot;,
426 &quot;../ch_rel-1/lib/ch_app-1/ebin&quot;]}]).426 &quot;../ch_rel-1/lib/ch_app-1/ebin&quot;]}]).
Offset 433, 25 lines modifiedOffset 433, 25 lines modified
433 <p>When·you·have·made·a·new·version·of·a·release,·a·release·package·can·be·created433 <p>When·you·have·made·a·new·version·of·a·release,·a·release·package·can·be·created
434 with·this·new·version·and·transferred·to·the·target·environment.</p><p>To·install·the·new·version·of·the·release·in·runtime,·the·<em>release434 with·this·new·version·and·transferred·to·the·target·environment.</p><p>To·install·the·new·version·of·the·release·in·runtime,·the·<em>release
435 handler</em>·is·used.·This·is·a·process·belonging·to·the·SASL·application,435 handler</em>·is·used.·This·is·a·process·belonging·to·the·SASL·application,
Max diff block lines reached; 22463/68949 bytes (32.58%) of diff not shown.
18.1 KB
./usr/share/doc/erlang-doc/html/doc/system/release_structure.html
    
Offset 136, 37 lines modifiedOffset 136, 37 lines modified
136 ··<a·href="#release-resource-file"·class="hover-link">136 ··<a·href="#release-resource-file"·class="hover-link">
137 ····<i·class="ri-link-m"·aria-hidden="true"></i>137 ····<i·class="ri-link-m"·aria-hidden="true"></i>
138 ··</a>138 ··</a>
139 ··<span·class="text">Release·Resource·File</span>139 ··<span·class="text">Release·Resource·File</span>
140 </h2>140 </h2>
141 <p>To·define·a·release,·create·a·<em>release·resource·file</em>,·or·in·short·a·<code·class="inline">.rel</code>141 <p>To·define·a·release,·create·a·<em>release·resource·file</em>,·or·in·short·a·<code·class="inline">.rel</code>
142 file.·In·the·file,·specify·the·name·and·version·of·the·release,·which·ERTS142 file.·In·the·file,·specify·the·name·and·version·of·the·release,·which·ERTS
143 version·it·is·based·on,·and·which·applications·it·consists·of:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1385111188-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1385111188-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Vsn</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·273,·SHA:·8690b92d9ede450d0a71f1de2313a91f264ac3cba0daae78331fa774ed540e36·...·]-3">}</span><span·class="p">,</span><span·class="w">143 version·it·is·based·on,·and·which·applications·it·consists·of:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6099701386-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6099701386-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Vsn</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·273,·SHA:·93344bc51c5ed10d28f77eb13f63c1ca1144f1b388e5e6779733edc9da6e6a37·...·]-3">}</span><span·class="p">,</span><span·class="w">
144 ·</span><span·class="p"·data-group-id="1385111188-4">[</span><span·class="p"·data-group-id="1385111188-5">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn1</span><span·class="p"·data-group-id="1385111188-5">}</span><span·class="p">,</span><span·class="w">144 ·</span><span·class="p"·data-group-id="6099701386-4">[</span><span·class="p"·data-group-id="6099701386-5">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn1</span><span·class="p"·data-group-id="6099701386-5">}</span><span·class="p">,</span><span·class="w">
145 ···</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">145 ···</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
146 ··</span><span·class="p"·data-group-id="1385111188-6">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsnN</span><span·class="p"·data-group-id="1385111188-6">}</span><span·class="p"·data-group-id="1385111188-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·0fdd34f13b0aee595e703900ed1c1896c703dbfb216f1f6f5c5d4665fcc57ba9·...·]-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">Name</code>,·<code·class="inline">Vsn</code>,·<code·class="inline">EVsn</code>,·and·<code·class="inline">AppVsn</code>·are·strings.</p><p>The·file·must·be·named·<code·class="inline">Rel.rel</code>,·where·<code·class="inline">Rel</code>·is·a·unique·name.</p><p>Each·<code·class="inline">Application</code>·(atom)·and·<code·class="inline">AppVsn</code>·is·the·name·and·version·of·an·application146 ··</span><span·class="p"·data-group-id="6099701386-6">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsnN</span><span·class="p"·data-group-id="6099701386-6">}</span><span·class="p"·data-group-id="6099701386-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·e6924865418839dd8123dac7bed61fd14b21b4731481e7a582a55f1e6f6b4f31·...·]-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">Name</code>,·<code·class="inline">Vsn</code>,·<code·class="inline">EVsn</code>,·and·<code·class="inline">AppVsn</code>·are·strings.</p><p>The·file·must·be·named·<code·class="inline">Rel.rel</code>,·where·<code·class="inline">Rel</code>·is·a·unique·name.</p><p>Each·<code·class="inline">Application</code>·(atom)·and·<code·class="inline">AppVsn</code>·is·the·name·and·version·of·an·application
147 included·in·the·release.·The·minimal·release·based·on·Erlang/OTP·consists·of·the147 included·in·the·release.·The·minimal·release·based·on·Erlang/OTP·consists·of·the
148 Kernel·and·STDLIB·applications,·so·these·applications·must·be·included·in·the148 Kernel·and·STDLIB·applications,·so·these·applications·must·be·included·in·the
149 list.</p><p>If·the·release·is·to·be·upgraded,·it·must·also·include·the·SASL·application.</p><p><a·href=""·id="ch_rel"></a></p><p>Here·is·an·example·showing·the·<code·class="inline">.app</code>·file·for·a·release·of·<code·class="inline">ch_app</code>·from149 list.</p><p>If·the·release·is·to·be·upgraded,·it·must·also·include·the·SASL·application.</p><p><a·href=""·id="ch_rel"></a></p><p>Here·is·an·example·showing·the·<code·class="inline">.app</code>·file·for·a·release·of·<code·class="inline">ch_app</code>·from
150 the·<a·href="applications.html#ch_app">Applications</a>·section:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2469318614-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">150 the·<a·href="applications.html#ch_app">Applications</a>·section:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0042503744-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">
151 ·</span><span·class="p"·data-group-id="2469318614-2">[</span><span·class="p"·data-group-id="2469318614-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="2469318614-3">}</span><span·class="p">,</span><span·class="w">151 ·</span><span·class="p"·data-group-id="0042503744-2">[</span><span·class="p"·data-group-id="0042503744-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Channel·allocator&quot;</span><span·class="p"·data-group-id="0042503744-3">}</span><span·class="p">,</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="2469318614-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="2469318614-4">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="0042503744-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="0042503744-4">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="2469318614-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2469318614-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup<[·...·truncated·by·diffoscope;·len:·174,·SHA:·1a27ed509229b07d1f13d2e485dd227b431542c98e80cdd9c73414432b62ce50·...·]4-5">}</span><span·class="p">,</span><span·class="w">153 ··</span><span·class="p"·data-group-id="0042503744-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0042503744-6">[</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ch_sup<[·...·truncated·by·diffoscope;·len:·174,·SHA:·b5c3dd86646b7223745f959da6bb7a3a7dd950cfafa68c988bf4e0ad13a7dda3·...·]4-5">}</span><span·class="p">,</span><span·class="w">
154 ··</span><span·class="p"·data-group-id="2469318614-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2469318614-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2469318614-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·adb9d8ecac922a084cabad799da12527427b89841d1261a80817ef61071e1553·...·]4-7">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="0042503744-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0042503744-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0042503744-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·cd15211c072f8ad6fcead563c011025d1386aa66338c989df307858517b89f00·...·]4-7">}</span><span·class="p">,</span><span·class="w">
155 ··</span><span·class="p"·data-group-id="2469318614-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2469318614-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·182,·SHA:·7dae679b757858cb6779c0fbb711079c0a07c4fabb6e85c1da6dc2404cd5b4b9·...·]4-9">}</span><span·class="p">,</span><span·class="w">155 ··</span><span·class="p"·data-group-id="0042503744-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0042503744-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·182,·SHA:·8870904683c93865f0908df90773969f99fd33841be00f02b9298ba4ae219486·...·]4-9">}</span><span·class="p">,</span><span·class="w">
156 ··</span><span·class="p"·data-group-id="2469318614-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2469318614-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="2469318614-13">[</s[·...·truncated·by·diffoscope;·len:·152,·SHA:·df43e47edadb21efd4a2d3e383db6e9ddc50ed7e829ad2bc7b087fd7bd551d4e·...·]4-11">}</span><span·class="w">156 ··</span><span·class="p"·data-group-id="0042503744-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0042503744-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="0042503744-13">[</s[·...·truncated·by·diffoscope;·len:·152,·SHA:·e4e6cd5d759a4ff576e36bfdf7bddc7bfc7440072449490dd0c3b4d7f8a0c3a9·...·]4-11">}</span><span·class="w">
157 ·</span><span·class="p"·data-group-id="2469318614-2">]</span><span·class="p"·data-group-id="2469318614-1">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">.rel</code>·file·must·also·contain·<code·class="inline">kernel</code>,·<code·class="inline">stdlib</code>,·and·<code·class="inline">sasl</code>,·as·these157 ·</span><span·class="p"·data-group-id="0042503744-2">]</span><span·class="p"·data-group-id="0042503744-1">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">.rel</code>·file·must·also·contain·<code·class="inline">kernel</code>,·<code·class="inline">stdlib</code>,·and·<code·class="inline">sasl</code>,·as·these
158 applications·are·required·by·<code·class="inline">ch_app</code>.·The·file·is·called·<code·class="inline">ch_rel-1.rel</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9994540863-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">158 applications·are·required·by·<code·class="inline">ch_app</code>.·The·file·is·called·<code·class="inline">ch_rel-1.rel</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1363010138-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
159 ·</span><span·class="p"·data-group-id="9994540863-2">{</span><span·class="s">&quot;ch_rel&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="9994540863-2">}</span><span·class="p">,</span><span·class="w">159 ·</span><span·class="p"·data-group-id="1363010138-2">{</span><span·class="s">&quot;ch_rel&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="1363010138-2">}</span><span·class="p">,</span><span·class="w">
160 ·</span><span·class="p"·data-group-id="9994540863-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;14.2.5&quot;</span><span·class="p"·data-group-id="9994540863-3">}</span><span·class="p">,</span><span·class="w">160 ·</span><span·class="p"·data-group-id="1363010138-3">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;14.2.5&quot;</span><span·class="p"·data-group-id="1363010138-3">}</span><span·class="p">,</span><span·class="w">
161 ·</span><span·class="p"·data-group-id="9994540863-4">[</span><span·class="p"·data-group-id="9994540863-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;9.2.4&quot;</span><span·class="p"·data-group-id="9994540863-5">}</span><span·class="p">,</span><span·class="w">161 ·</span><span·class="p"·data-group-id="1363010138-4">[</span><span·class="p"·data-group-id="1363010138-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;9.2.4&quot;</span><span·class="p"·data-group-id="1363010138-5">}</span><span·class="p">,</span><span·class="w">
162 ··</span><span·class="p"·data-group-id="9994540863-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.2.3&quot;</span><span·class="p"·data-group-id="9994540863-6">}</span><span·class="p">,</span><span·class="w">162 ··</span><span·class="p"·data-group-id="1363010138-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.2.3&quot;</span><span·class="p"·data-group-id="1363010138-6">}</span><span·class="p">,</span><span·class="w">
163 ··</span><span·class="p"·data-group-id="9994540863-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.2.1&quot;</span><span·class="p"·data-group-id="9994540863-7">}</span><span·class="p">,</span><span·class="w">163 ··</span><span·class="p"·data-group-id="1363010138-7">{</span><span·class="ss">sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.2.1&quot;</span><span·class="p"·data-group-id="1363010138-7">}</span><span·class="p">,</span><span·class="w">
164 ··</span><span·class="p"·data-group-id="9994540863-8">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="9994540863-8">}</span><span·class="p"·data-group-id="9994540863-4">]</span><span·class="w">164 ··</span><span·class="p"·data-group-id="1363010138-8">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="1363010138-8">}</span><span·class="p"·data-group-id="1363010138-4">]</span><span·class="w">
165 </span><span·class="p"·data-group-id="9994540863-1">}</span><span·class="p">.</span></code></pre><p><a·href=""·id="boot"></a></p><h2·id="generating-boot-scripts"·class="section-heading">165 </span><span·class="p"·data-group-id="1363010138-1">}</span><span·class="p">.</span></code></pre><p><a·href=""·id="boot"></a></p><h2·id="generating-boot-scripts"·class="section-heading">
166 ··<a·href="#generating-boot-scripts"·class="hover-link">166 ··<a·href="#generating-boot-scripts"·class="hover-link">
167 ····<i·class="ri-link-m"·aria-hidden="true"></i>167 ····<i·class="ri-link-m"·aria-hidden="true"></i>
168 ··</a>168 ··</a>
169 ··<span·class="text">Generating·Boot·Scripts</span>169 ··<span·class="text">Generating·Boot·Scripts</span>
170 </h2>170 </h2>
171 <p><a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·in·the·SASL·application·includes·tools·to·build·and·check171 <p><a·href="../../lib/sasl-4.2.2/doc/html/systools.html"><code·class="inline">systools</code></a>·in·the·SASL·application·includes·tools·to·build·and·check
172 releases.·The·functions·read·the·<code·class="inline">.rel</code>·and·<code·class="inline">.app</code>·files·and·perform172 releases.·The·functions·read·the·<code·class="inline">.rel</code>·and·<code·class="inline">.app</code>·files·and·perform
Offset 190, 17 lines modifiedOffset 190, 17 lines modified
190 ··<a·href="#creating-a-release-package"·class="hover-link">190 ··<a·href="#creating-a-release-package"·class="hover-link">
191 ····<i·class="ri-link-m"·aria-hidden="true"></i>191 ····<i·class="ri-link-m"·aria-hidden="true"></i>
192 ··</a>192 ··</a>
193 ··<span·class="text">Creating·a·Release·Package</span>193 ··<span·class="text">Creating·a·Release·Package</span>
194 </h2>194 </h2>
195 <p>The·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html#make_tar/2"><code·class="inline">systools:make_tar/1,2</code></a>·function·takes·a195 <p>The·<a·href="../../lib/sasl-4.2.2/doc/html/systools.html#make_tar/2"><code·class="inline">systools:make_tar/1,2</code></a>·function·takes·a
196 <code·class="inline">.rel</code>·file·as·input·and·creates·a·zipped·tar·file·with·the·code·for196 <code·class="inline">.rel</code>·file·as·input·and·creates·a·zipped·tar·file·with·the·code·for
197 the·specified·applications,·a·<em>release·package</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">systools</span><span·class="p">:</span><span·class="nf">make_script</span><span·class="p"·data-group-id="6232885263-1">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="6232885263-1">)</span><span·class="p">.</span><span·class="w">197 the·specified·applications,·a·<em>release·package</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">systools</span><span·class="p">:</span><span·class="nf">make_script</span><span·class="p"·data-group-id="4662167098-1">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="4662167098-1">)</span><span·class="p">.</span><span·class="w">
198 </span><span·class="ss">ok</span><span·class="gp·unselectable">198 </span><span·class="ss">ok</span><span·class="gp·unselectable">
199 2&gt;·</span><span·class="nc">systools</span><span·class="p">:</span><span·class="nf">make_tar</span><span·class="p"·data-group-id="6232885263-2">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="6232885263-2">)</span><span·class="p">.</span><span·class="w">199 2&gt;·</span><span·class="nc">systools</span><span·class="p">:</span><span·class="nf">make_tar</span><span·class="p"·data-group-id="4662167098-2">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="4662167098-2">)</span><span·class="p">.</span><span·class="w">
200 </span><span·class="ss">ok</span></code></pre><p>The·release·package·by·default·contains:</p><ul><li>The·<code·class="inline">.app</code>·files</li><li>The·<code·class="inline">.rel</code>·file</li><li>The·object·code·for·all·applications,·structured·according·to·the200 </span><span·class="ss">ok</span></code></pre><p>The·release·package·by·default·contains:</p><ul><li>The·<code·class="inline">.app</code>·files</li><li>The·<code·class="inline">.rel</code>·file</li><li>The·object·code·for·all·applications,·structured·according·to·the
201 <a·href="applications.html#app_dir">application·directory·structure</a></li><li>The·binary·boot·script·renamed·to·<code·class="inline">start.boot</code></li></ul><pre><code·class="text">%·tar·tf·ch_rel-1.tar201 <a·href="applications.html#app_dir">application·directory·structure</a></li><li>The·binary·boot·script·renamed·to·<code·class="inline">start.boot</code></li></ul><pre><code·class="text">%·tar·tf·ch_rel-1.tar
202 lib/kernel-9.2.4/ebin/kernel.app202 lib/kernel-9.2.4/ebin/kernel.app
203 lib/kernel-9.2.4/ebin/application.beam203 lib/kernel-9.2.4/ebin/application.beam
204 ...204 ...
205 lib/stdlib-5.2.3/ebin/stdlib.app205 lib/stdlib-5.2.3/ebin/stdlib.app
206 lib/stdlib-5.2.3/ebin/argparse.beam206 lib/stdlib-5.2.3/ebin/argparse.beam
113 KB
./usr/share/doc/erlang-doc/html/doc/system/robustness.html
    
Offset 128, 68 lines modifiedOffset 128, 68 lines modified
128 </h2>128 </h2>
129 <p>Before·improving·the·messenger·program,·let·us·look·at·some·general·principles,129 <p>Before·improving·the·messenger·program,·let·us·look·at·some·general·principles,
130 using·the·ping·pong·program·as·an·example.·Recall·that·when·&quot;ping&quot;·finishes,·it130 using·the·ping·pong·program·as·an·example.·Recall·that·when·&quot;ping&quot;·finishes,·it
131 tells·&quot;pong&quot;·that·it·has·done·so·by·sending·the·atom·<code·class="inline">finished</code>·as·a·message·to131 tells·&quot;pong&quot;·that·it·has·done·so·by·sending·the·atom·<code·class="inline">finished</code>·as·a·message·to
132 &quot;pong&quot;·so·that·&quot;pong&quot;·can·also·finish.·Another·way·to·let·&quot;pong&quot;·finish·is·to132 &quot;pong&quot;·so·that·&quot;pong&quot;·can·also·finish.·Another·way·to·let·&quot;pong&quot;·finish·is·to
133 make·&quot;pong&quot;·exit·if·it·does·not·receive·a·message·from·ping·within·a·certain133 make·&quot;pong&quot;·exit·if·it·does·not·receive·a·message·from·ping·within·a·certain
134 time.·This·can·be·done·by·adding·a·<em>time-out</em>·to·<code·class="inline">pong</code>·as·shown·in·the134 time.·This·can·be·done·by·adding·a·<em>time-out</em>·to·<code·class="inline">pong</code>·as·shown·in·the
135 following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5130380977-1">(</span><span·class="ss">tut19</span><span·class="p"·data-group-id="5130380977-1">)</span><span·class="p">.</span><span·class="w">135 following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3743308422-1">(</span><span·class="ss">tut19</span><span·class="p"·data-group-id="3743308422-1">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="w">136 </span><span·class="w">
137 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5130380977-2">(</span><span·class="p"·data-group-id="5130380977-3">[</span><span·class="ss">start_ping</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_pong</span><span·class="p">[·...·truncated·by·diffoscope;·len:·378,·SHA:·5cda81e7f574e3fc614274cbffa97f57a07799825f7c0af0688a7bbb908b2860·...·]-2">)</span><span·class="p">.</span><span·class="w">137 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3743308422-2">(</span><span·class="p"·data-group-id="3743308422-3">[</span><span·class="ss">start_ping</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_pong</span><span·class="p">[·...·truncated·by·diffoscope;·len:·378,·SHA:·d975e96261cc1bdefcf12c82dbc0e2298574aa6cf6714daabd65e92cade7f8bf·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">ping</span><span·class="p"·data-group-id="5130380977-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="5130380977-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 </span><span·class="nf">ping</span><span·class="p"·data-group-id="3743308422-4">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="3743308422-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5130380977-5">(</span><span·class="s">&quot;ping·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5130380977-6">[</span><span·class="p"·data-group-id="51303[·...·truncated·by·diffoscope;·len:·58,·SHA:·21667318afc28c6a30d8d923f61d364ccfd79ba5575bdca45bd822df54563dc7·...·]-5">)</span><span·class="p">;</span><span·class="w">139 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3743308422-5">(</span><span·class="s">&quot;ping·finished</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3743308422-6">[</span><span·class="p"·data-group-id="37433[·...·truncated·by·diffoscope;·len:·58,·SHA:·3977eaf4fbfd96583a29fd4fd838468a0d4f5c41191853d634a3f2ea6549ef19·...·]-5">)</span><span·class="p">;</span><span·class="w">
  
140 </span><span·class="nf">ping</span><span·class="p"·data-group-id="5130380977-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="5130380977-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 </span><span·class="nf">ping</span><span·class="p"·data-group-id="3743308422-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="3743308422-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="p"·data-group-id="5130380977-8">{</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="5130380977-8">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·305,·SHA:·86cb546bf409139c4b60fe64db92cf00f4667f240da3427fabe92ca389a67452·...·]-9">}</span><span·class="p">,</span><span·class="w">141 ····</span><span·class="p"·data-group-id="3743308422-8">{</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="3743308422-8">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·305,·SHA:·9d265ec8c848cd70beda557323e1c16faa5ea4314fc447f911be88c89d3f005a·...·]-9">}</span><span·class="p">,</span><span·class="w">
142 ····</span><span·class="k">receive</span><span·class="w">142 ····</span><span·class="k">receive</span><span·class="w">
143 ········</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">143 ········</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5130380977-11">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5130380977-12">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·4d0280d1a8fab9fbd7fa22ac0909e60ccb21c22fbadcd4b307794cfa725b877e·...·]-11">)</span><span·class="w">144 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3743308422-11">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3743308422-12">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·e425334152c4bc2e8c0af2d9f0ae12aa4154dcd6c332a5fc35f55b9a5889225f·...·]-11">)</span><span·class="w">
145 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">145 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="5130380977-13">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·9,·SHA:·6fb7da118fe8a523d7281789b15c062ad19e435defa1c3a0e8bfbb38d324e946·...·]-13">)</span><span·class="p">.</span><span·class="w">146 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="3743308422-13">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·9,·SHA:·09f8d1971406a6cee7ad3010589e454decefae934122d68975184d89ca453975·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
147 </span><span·class="nf">pong</span><span·class="p"·data-group-id="5130380977-14">(</span><span·class="p"·data-group-id="5130380977-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">147 </span><span·class="nf">pong</span><span·class="p"·data-group-id="3743308422-14">(</span><span·class="p"·data-group-id="3743308422-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
148 ····</span><span·class="k">receive</span><span·class="w">148 ····</span><span·class="k">receive</span><span·class="w">
149 ········</span><span·class="p"·data-group-id="5130380977-15">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="5130380977-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ········</span><span·class="p"·data-group-id="3743308422-15">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="3743308422-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5130380977-16">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5130380977-17">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·9b7e56c9a89c9dd7a7a1bbf40e55a304bac9ae34cd1b333e542a6851eb85b61b·...·]-16">)</span><span·class="p">,</span><span·class="w">150 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3743308422-16">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3743308422-17">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·3c79e63e0d3edff9fe12ff77f5327ddf036c90a603ae5de2c2657f66cf168305·...·]-16">)</span><span·class="p">,</span><span·class="w">
151 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">151 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">
152 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="5130380977-18">(</span><span·class="p"·data-group-id="5130380977-18">)</span><span·class="w">152 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="3743308422-18">(</span><span·class="p"·data-group-id="3743308422-18">)</span><span·class="w">
153 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">153 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
154 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5130380977-19">(</span><span·class="s">&quot;Pong·timed·out</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5130380977-20">[</span><span·class="p"·data-group-id="51[·...·truncated·by·diffoscope;·len:·62,·SHA:·b96d867ecc657d8d6004ab94d551a5031a4c54f8d48ae1497433254890794d9c·...·]-19">)</span><span·class="w">154 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3743308422-19">(</span><span·class="s">&quot;Pong·timed·out</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3743308422-20">[</span><span·class="p"·data-group-id="37[·...·truncated·by·diffoscope;·len:·62,·SHA:·811e129eb53934543a0920c330b0734ad6c96c7e19f191644394172744703ece·...·]-19">)</span><span·class="w">
155 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">155 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
156 </span><span·class="nf">start_pong</span><span·class="p"·data-group-id="5130380977-21">(</span><span·class="p"·data-group-id="5130380977-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 </span><span·class="nf">start_pong</span><span·class="p"·data-group-id="3743308422-21">(</span><span·class="p"·data-group-id="3743308422-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="5130380977-22">(</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5130380977-23">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·ecde2af1cea4dac97d5d5511c23dc96ebdbd43e0c96ece7030e97be8d130d2fe·...·]-22">)</span><span·class="p">.</span><span·class="w">157 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="3743308422-22">(</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="3743308422-23">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·1a0a35ba3f4880ae8865943a3b9ffe97873b0a9dc429f45b9f4567b89f92b46d·...·]-22">)</span><span·class="p">.</span><span·class="w">
  
158 </span><span·class="nf">start_ping</span><span·class="p"·data-group-id="5130380977-25">(</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="5130380977-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">158 </span><span·class="nf">start_ping</span><span·class="p"·data-group-id="3743308422-25">(</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="3743308422-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
159 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5130380977-26">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5130380977-27">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·174,·SHA:·b530ae8f3011215501985cd54f19d4a3af3dd77435c127749c98fb91f6d0d845·...·]-26">)</span><span·class="p">.</span></code></pre><p>After·this·is·compiled·and·the·file·<code·class="inline">tut19.beam</code>·is·copied·to·the·necessary159 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="3743308422-26">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3743308422-27">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·174,·SHA:·8c1aaef402a35f774ccb81a5d1092edc8c88356958cbf77e92f6adb4517e0ca2·...·]-26">)</span><span·class="p">.</span></code></pre><p>After·this·is·compiled·and·the·file·<code·class="inline">tut19.beam</code>·is·copied·to·the·necessary
160 directories,·the·following·is·seen·on·(pong@kosken):</p><pre><code·class="text">(pong@kosken)1&gt;·tut19:start_pong().160 directories,·the·following·is·seen·on·(pong@kosken):</p><pre><code·class="text">(pong@kosken)1&gt;·tut19:start_pong().
161 true161 true
162 Pong·received·ping162 Pong·received·ping
163 Pong·received·ping163 Pong·received·ping
164 Pong·received·ping164 Pong·received·ping
165 Pong·timed·out</code></pre><p>And·the·following·is·seen·on·(ping@gollum):</p><pre><code·class="text">(ping@gollum)1&gt;·tut19:start_ping(pong@kosken).165 Pong·timed·out</code></pre><p>And·the·following·is·seen·on·(ping@gollum):</p><pre><code·class="text">(ping@gollum)1&gt;·tut19:start_ping(pong@kosken).
166 &lt;0.36.0&gt;166 &lt;0.36.0&gt;
167 Ping·received·pong167 Ping·received·pong
168 Ping·received·pong168 Ping·received·pong
169 Ping·received·pong169 Ping·received·pong
170 ping·finished</code></pre><p>The·time-out·is·set·in:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">pong</span><span·class="p"·data-group-id="6085142357-1">(</span><span·class="p"·data-group-id="6085142357-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">170 ping·finished</code></pre><p>The·time-out·is·set·in:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">pong</span><span·class="p"·data-group-id="2446984542-1">(</span><span·class="p"·data-group-id="2446984542-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
171 ····</span><span·class="k">receive</span><span·class="w">171 ····</span><span·class="k">receive</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="6085142357-2">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="6085142357-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ········</span><span·class="p"·data-group-id="2446984542-2">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="2446984542-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
173 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6085142357-3">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6085142357-4">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·0df16e1d699b032149af0e7a1b77cca2789e51ed9bb91cf468dbeb5084c575cd·...·]-3">)</span><span·class="p">,</span><span·class="w">173 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2446984542-3">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2446984542-4">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·72c5a7a392bc8148f9b2a1b5bf91ffb1a8259a273f46ec0702b8ace3d056131f·...·]-3">)</span><span·class="p">,</span><span·class="w">
174 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">174 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">
175 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="6085142357-5">(</span><span·class="p"·data-group-id="6085142357-5">)</span><span·class="w">175 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="2446984542-5">(</span><span·class="p"·data-group-id="2446984542-5">)</span><span·class="w">
176 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6085142357-6">(</span><span·class="s">&quot;Pong·timed·out</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6085142357-7">[</span><span·class="p"·data-group-id="6085[·...·truncated·by·diffoscope;·len:·59,·SHA:·e56d26611fb0fe58ac2d15d2321bc059e135d6380b4f86792a69c9ed013b6983·...·]-6">)</span><span·class="w">177 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2446984542-6">(</span><span·class="s">&quot;Pong·timed·out</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2446984542-7">[</span><span·class="p"·data-group-id="2446[·...·truncated·by·diffoscope;·len:·59,·SHA:·ec9636387203e7d8d834430109dcd2bf3cca5babe16a9c3ea955342cc041223e·...·]-6">)</span><span·class="w">
178 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·time-out·(<code·class="inline">after·5000</code>)·is·started·when·<code·class="inline">receive</code>·is·entered.·The·time-out178 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·time-out·(<code·class="inline">after·5000</code>)·is·started·when·<code·class="inline">receive</code>·is·entered.·The·time-out
179 is·canceled·if·<code·class="inline">{ping,Ping_PID}</code>·is·received.·If·<code·class="inline">{ping,Ping_PID}</code>·is·not179 is·canceled·if·<code·class="inline">{ping,Ping_PID}</code>·is·received.·If·<code·class="inline">{ping,Ping_PID}</code>·is·not
180 received,·the·actions·following·the·time-out·are·done·after·5000·milliseconds.180 received,·the·actions·following·the·time-out·are·done·after·5000·milliseconds.
181 <code·class="inline">after</code>·must·be·last·in·the·<code·class="inline">receive</code>,·that·is,·preceded·by·all·other·message181 <code·class="inline">after</code>·must·be·last·in·the·<code·class="inline">receive</code>,·that·is,·preceded·by·all·other·message
182 reception·specifications·in·the·<code·class="inline">receive</code>.·It·is·also·possible·to·call·a182 reception·specifications·in·the·<code·class="inline">receive</code>.·It·is·also·possible·to·call·a
183 function·that·returned·an·integer·for·the·time-out:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">after</span><span·class="w">·</span><span·class="nf">pong_timeout</span><span·class="p"·data-group-id="7862281944-1">(</span><span·class="p"·data-group-id="7862281944-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span></code></pre><p>In·general,·there·are·better·ways·than·using·time-outs·to·supervise·parts·of·a183 function·that·returned·an·integer·for·the·time-out:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">after</span><span·class="w">·</span><span·class="nf">pong_timeout</span><span·class="p"·data-group-id="2787769635-1">(</span><span·class="p"·data-group-id="2787769635-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span></code></pre><p>In·general,·there·are·better·ways·than·using·time-outs·to·supervise·parts·of·a
184 distributed·Erlang·system.·Time-outs·are·usually·appropriate·to·supervise184 distributed·Erlang·system.·Time-outs·are·usually·appropriate·to·supervise
185 external·events,·for·example,·if·you·have·expected·a·message·from·some·external185 external·events,·for·example,·if·you·have·expected·a·message·from·some·external
186 system·within·a·specified·time.·For·example,·a·time-out·can·be·used·to·log·a186 system·within·a·specified·time.·For·example,·a·time-out·can·be·used·to·log·a
187 user·out·of·the·messenger·system·if·they·have·not·accessed·it·for,·say,·ten187 user·out·of·the·messenger·system·if·they·have·not·accessed·it·for,·say,·ten
188 minutes.</p><h2·id="error-handling"·class="section-heading">188 minutes.</p><h2·id="error-handling"·class="section-heading">
189 ··<a·href="#error-handling"·class="hover-link">189 ··<a·href="#error-handling"·class="hover-link">
190 ····<i·class="ri-link-m"·aria-hidden="true"></i>190 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 209, 96 lines modifiedOffset 209, 96 lines modified
209 something·called·a·<em>signal</em>·to·all·the·processes·it·has·links·to.</p><p>The·signal·carries·information·about·the·pid·it·was·sent·from·and·the·exit209 something·called·a·<em>signal</em>·to·all·the·processes·it·has·links·to.</p><p>The·signal·carries·information·about·the·pid·it·was·sent·from·and·the·exit
210 reason.</p><p>The·default·behaviour·of·a·process·that·receives·a·normal·exit·is·to·ignore·the210 reason.</p><p>The·default·behaviour·of·a·process·that·receives·a·normal·exit·is·to·ignore·the
211 signal.</p><p>The·default·behaviour·in·the·two·other·cases·(that·is,·abnormal·exit)·above·is211 signal.</p><p>The·default·behaviour·in·the·two·other·cases·(that·is,·abnormal·exit)·above·is
212 to:</p><ul><li>Bypass·all·messages·to·the·receiving·process.</li><li>Kill·the·receiving·process.</li><li>Propagate·the·same·error·signal·to·the·links·of·the·killed·process.</li></ul><p>In·this·way·you·can·connect·all·processes·in·a·transaction·together·using·links.212 to:</p><ul><li>Bypass·all·messages·to·the·receiving·process.</li><li>Kill·the·receiving·process.</li><li>Propagate·the·same·error·signal·to·the·links·of·the·killed·process.</li></ul><p>In·this·way·you·can·connect·all·processes·in·a·transaction·together·using·links.
213 If·one·of·the·processes·exits·abnormally,·all·the·processes·in·the·transaction213 If·one·of·the·processes·exits·abnormally,·all·the·processes·in·the·transaction
214 are·killed.·As·it·is·often·wanted·to·create·a·process·and·link·to·it·at·the·same214 are·killed.·As·it·is·often·wanted·to·create·a·process·and·link·to·it·at·the·same
215 time,·there·is·a·special·BIF,·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_link/1">spawn_link</a>·that·does·the215 time,·there·is·a·special·BIF,·<a·href="../../erts-15.2.2/doc/html/erlang.html#spawn_link/1">spawn_link</a>·that·does·the
216 same·as·<code·class="inline">spawn</code>,·but·also·creates·a·link·to·the·spawned·process.</p><p>Now·an·example·of·the·ping·pong·example·using·links·to·terminate·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6686749409-1">(</span><span·class="ss">tut20</span><span·class="p"·data-group-id="6686749409-1">)</span><span·class="p">.</span><span·class="w">216 same·as·<code·class="inline">spawn</code>,·but·also·creates·a·link·to·the·spawned·process.</p><p>Now·an·example·of·the·ping·pong·example·using·links·to·terminate·&quot;pong&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7734225147-1">(</span><span·class="ss">tut20</span><span·class="p"·data-group-id="7734225147-1">)</span><span·class="p">.</span><span·class="w">
217 </span><span·class="w">217 </span><span·class="w">
218 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6686749409-2">(</span><span·class="p"·data-group-id="6686749409-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">··</span><span·class="ss">ping</span><span·class="p">/</span><s[·...·truncated·by·diffoscope;·len:·242,·SHA:·ba5d5313fc8cb2f3eb1d5f0c5a7a819c5733623884e1f3f19d97819e8874fb20·...·]-2">)</span><span·class="p">.</span><span·class="w">218 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7734225147-2">(</span><span·class="p"·data-group-id="7734225147-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">··</span><span·class="ss">ping</span><span·class="p">/</span><s[·...·truncated·by·diffoscope;·len:·242,·SHA:·57e3c0ac4df297ead3eb19473a4c9d747181538895f9404baa631552a7f16a82·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">ping</span><span·class="p"·data-group-id="6686749409-4">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="6686749409-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 </span><span·class="nf">ping</span><span·class="p"·data-group-id="7734225147-4">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="7734225147-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ····</span><span·class="nf">link</span><span·class="p"·data-group-id="6686749409-5">(</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="6686749409-5">)</span><span·class="p">,</span><span·class="w">220 ····</span><span·class="nf">link</span><span·class="p"·data-group-id="7734225147-5">(</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="7734225147-5">)</span><span·class="p">,</span><span·class="w">
221 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="6686749409-6">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="6686749409-6">)</span><span·class="p">.</span><span·class="w">221 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="7734225147-6">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="7734225147-6">)</span><span·class="p">.</span><span·class="w">
  
222 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="6686749409-7">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="6686749409-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="7734225147-7">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="7734225147-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="6686749409-8">(</span><span·class="ss">ping</span><span·class="p"·data-group-id="6686749409-8">)</span><span·class="p">;</span><span·class="w">223 ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="7734225147-8">(</span><span·class="ss">ping</span><span·class="p"·data-group-id="7734225147-8">)</span><span·class="p">;</span><span·class="w">
  
224 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="6686749409-9">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="6686749409-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="7734225147-9">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="7734225147-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····</span><span·class="n">Pong_Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6686749409-10">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="6686749409-11">(</span><span·class="p"·data-group-id="6686749409-11">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·9be2384453e3afa21a4f8c25368fbe15e8bdb44d32d8280bfbdd70801653e03c·...·]-10">}</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="n">Pong_Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7734225147-10">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="7734225147-11">(</span><span·class="p"·data-group-id="7734225147-11">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·0dc48e995be6c6cb32e4d3615e48c2a4b7e880da12fa56f85dffc8387bf10358·...·]-10">}</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="k">receive</span><span·class="w">226 ····</span><span·class="k">receive</span><span·class="w">
227 ········</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 ········</span><span·class="ss">pong</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6686749409-12">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6686749409-13">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·3cfa5a548dd69f90960b48e50fd7dba9a6c0175f154557bd4661d5ba61ac8a6e·...·]-12">)</span><span·class="w">228 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7734225147-12">(</span><span·class="s">&quot;Ping·received·pong</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7734225147-13">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·ad268a0ab8ec5283335cbffa3d498240cda7d61d94df42e4ec265c60db61f72c·...·]-12">)</span><span·class="w">
229 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">229 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="6686749409-14">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="66[·...·truncated·by·diffoscope;·len:·8,·SHA:·bdcd951225b125fa732ce1d0d6051be19a264cc1cb6200b6a7bf1598bfe7e94f·...·]-14">)</span><span·class="p">.</span><span·class="w">230 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="7734225147-14">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="77[·...·truncated·by·diffoscope;·len:·8,·SHA:·37c38de2741f1ee2b8fd6515479f0df29889daf878304a9689f367349f283bc3·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
231 </span><span·class="nf">pong</span><span·class="p"·data-group-id="6686749409-15">(</span><span·class="p"·data-group-id="6686749409-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 </span><span·class="nf">pong</span><span·class="p"·data-group-id="7734225147-15">(</span><span·class="p"·data-group-id="7734225147-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="k">receive</span><span·class="w">232 ····</span><span·class="k">receive</span><span·class="w">
233 ········</span><span·class="p"·data-group-id="6686749409-16">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="6686749409-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">233 ········</span><span·class="p"·data-group-id="7734225147-16">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ping_PID</span><span·class="p"·data-group-id="7734225147-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
234 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6686749409-17">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6686749409-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·a920133293bb91303ebfd2833b703ef378cbef645d7cb303f51079f56604efb8·...·]-17">)</span><span·class="p">,</span><span·class="w">234 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7734225147-17">(</span><span·class="s">&quot;Pong·received·ping</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7734225147-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·b38a439a5a28b55a93260386f5035955055da3c146cd1cc361c15d3db849f73f·...·]-17">)</span><span·class="p">,</span><span·class="w">
235 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">235 ············</span><span·class="n">Ping_PID</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">
236 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="6686749409-19">(</span><span·class="p"·data-group-id="6686749409-19">)</span><span·class="w">236 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="7734225147-19">(</span><span·class="p"·data-group-id="7734225147-19">)</span><span·class="w">
237 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">237 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
238 </span><span·class="nf">start</span><span·class="p"·data-group-id="6686749409-20">(</span><span·class="n">Ping_Node</span><span·class="p"·data-group-id="6686749409-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">238 </span><span·class="nf">start</span><span·class="p"·data-group-id="7734225147-20">(</span><span·class="n">Ping_Node</span><span·class="p"·data-group-id="7734225147-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
239 ····</span><span·class="n">PongPID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6686749409-21">(</span><span·class="ss">tut20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6686749409-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·1f5e6f0137c74821bf1b08e0f13c7466532685f3f6d4ffbfad4b4aa2c081f346·...·]-21">)</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="n">PongPID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7734225147-21">(</span><span·class="ss">tut20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7734225147-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·4cccdc98b62537adec7fddaa1bf2fdf7e40039ac885e4e4c617e824503328d33·...·]-21">)</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6686749409-23">(</span><span·class="n">Ping_Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tut20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·252,·SHA:·58b8ee98246cd67506738beec6ac3c4f6a09f495bf7fedd59b6b4346d858b6dc·...·]-23">)</span><span·class="p">.</span></code></pre><pre><code·class="text">(s1@bill)3&gt;·tut20:start(s2@kosken).240 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7734225147-23">(</span><span·class="n">Ping_Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tut20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·252,·SHA:·56aa30f553ec6d6fcc150f3303e846d863717b47be2a8bb26fe451ae69902ca7·...·]-23">)</span><span·class="p">.</span></code></pre><pre><code·class="text">(s1@bill)3&gt;·tut20:start(s2@kosken).
241 Pong·received·ping241 Pong·received·ping
242 &lt;3820.41.0&gt;242 &lt;3820.41.0&gt;
243 Ping·received·pong243 Ping·received·pong
244 Pong·received·ping244 Pong·received·ping
245 Ping·received·pong245 Ping·received·pong
246 Pong·received·ping246 Pong·received·ping
247 Ping·received·pong</code></pre><p>This·is·a·slight·modification·of·the·ping·pong·program·where·both·processes·are247 Ping·received·pong</code></pre><p>This·is·a·slight·modification·of·the·ping·pong·program·where·both·processes·are
248 spawned·from·the·same·<code·class="inline">start/1</code>·function,·and·the·&quot;ping&quot;·process·can·be·spawned248 spawned·from·the·same·<code·class="inline">start/1</code>·function,·and·the·&quot;ping&quot;·process·can·be·spawned
249 on·a·separate·node.·Notice·the·use·of·the·<code·class="inline">link</code>·BIF.·&quot;Ping&quot;·calls249 on·a·separate·node.·Notice·the·use·of·the·<code·class="inline">link</code>·BIF.·&quot;Ping&quot;·calls
250 <a·href="../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit(ping)</code></a>·when·it·finishes·and·this·causes·an·exit·signal·to·be250 <a·href="../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit(ping)</code></a>·when·it·finishes·and·this·causes·an·exit·signal·to·be
251 sent·to·&quot;pong&quot;,·which·also·terminates.</p><p>It·is·possible·to·modify·the·default·behaviour·of·a·process·so·that·it·does·not251 sent·to·&quot;pong&quot;,·which·also·terminates.</p><p>It·is·possible·to·modify·the·default·behaviour·of·a·process·so·that·it·does·not
252 get·killed·when·it·receives·abnormal·exit·signals.·Instead,·all·signals·are252 get·killed·when·it·receives·abnormal·exit·signals.·Instead,·all·signals·are
253 turned·into·normal·messages·on·the·format·<code·class="inline">{'EXIT',FromPID,Reason}</code>·and·added·to253 turned·into·normal·messages·on·the·format·<code·class="inline">{'EXIT',FromPID,Reason}</code>·and·added·to
254 the·end·of·the·receiving·process'·message·queue.·This·behaviour·is·set·by:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">process_flag</span><span·class="p"·data-group-id="1030504304-1">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1030504304-1">)</span></code></pre><p>There·are·several·other·process·flags,·see·<a·href="../../erts-15.2.2/doc/html/erlang.html#process_flag/2">erlang(3)</a>.254 the·end·of·the·receiving·process'·message·queue.·This·behaviour·is·set·by:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">process_flag</span><span·class="p"·data-group-id="9555693394-1">(</span><span·class="ss">trap_exit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="9555693394-1">)</span></code></pre><p>There·are·several·other·process·flags,·see·<a·href="../../erts-15.2.2/doc/html/erlang.html#process_flag/2">erlang(3)</a>.
255 Changing·the·default·behaviour·of·a·process·in·this·way·is·usually·not·done·in255 Changing·the·default·behaviour·of·a·process·in·this·way·is·usually·not·done·in
256 standard·user·programs,·but·is·left·to·the·supervisory·programs·in·OTP.·However,256 standard·user·programs,·but·is·left·to·the·supervisory·programs·in·OTP.·However,
257 the·ping·pong·program·is·modified·to·illustrate·exit·trapping.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5044916039-1">(</span><span·class="ss">tut21</span><span·class="p"·data-group-id="5044916039-1">)</span><span·class="p">.</span><span·class="w">257 the·ping·pong·program·is·modified·to·illustrate·exit·trapping.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2713681768-1">(</span><span·class="ss">tut21</span><span·class="p"·data-group-id="2713681768-1">)</span><span·class="p">.</span><span·class="w">
258 </span><span·class="w">258 </span><span·class="w">
259 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5044916039-2">(</span><span·class="p"·data-group-id="5044916039-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">··</span><span·class="ss">ping</span><span·class="p">/</span><s[·...·truncated·by·diffoscope;·len:·242,·SHA:·9650db60382f6f40b99d374e5c8db957e0912f0db5e2edcd82a60cffd4e31100·...·]-2">)</span><span·class="p">.</span><span·class="w">259 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2713681768-2">(</span><span·class="p"·data-group-id="2713681768-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">··</span><span·class="ss">ping</span><span·class="p">/</span><s[·...·truncated·by·diffoscope;·len:·242,·SHA:·de2965455d6cfef8dbedf8cfc2038141e632a3b662644b0581ad8244af38915e·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
260 </span><span·class="nf">ping</span><span·class="p"·data-group-id="5044916039-4">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="5044916039-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 </span><span·class="nf">ping</span><span·class="p"·data-group-id="2713681768-4">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="2713681768-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 72732/115788 bytes (62.81%) of diff not shown.
426 KB
./usr/share/doc/erlang-doc/html/doc/system/seq_prog.html
    
Offset 136, 293 lines modifiedOffset 136, 293 lines modified
136 </span><span·class="mi">7</span><span·class="gp·unselectable">136 </span><span·class="mi">7</span><span·class="gp·unselectable">
137 2&gt;·</span></code></pre><p>As·shown,·the·Erlang·shell·numbers·the·lines·that·can·be·entered,·(as·1&gt;·2&gt;)·and137 2&gt;·</span></code></pre><p>As·shown,·the·Erlang·shell·numbers·the·lines·that·can·be·entered,·(as·1&gt;·2&gt;)·and
138 that·it·correctly·says·that·2·+·5·is·7.·If·you·make·writing·mistakes·in·the138 that·it·correctly·says·that·2·+·5·is·7.·If·you·make·writing·mistakes·in·the
139 shell,·you·can·delete·with·the·backspace·key,·as·in·most·shells.·There·are·many139 shell,·you·can·delete·with·the·backspace·key,·as·in·most·shells.·There·are·many
140 more·editing·commands·in·the·shell·(see140 more·editing·commands·in·the·shell·(see
141 <a·href="../../erts-15.2.2/doc/html/tty.html">tty·-·A·command·line·interface</a>·in·ERTS·User's·Guide).</p><p>(Notice·that·many·line·numbers·given·by·the·shell·in·the·following·examples·are141 <a·href="../../erts-15.2.2/doc/html/tty.html">tty·-·A·command·line·interface</a>·in·ERTS·User's·Guide).</p><p>(Notice·that·many·line·numbers·given·by·the·shell·in·the·following·examples·are
142 out·of·sequence.·This·is·because·this·tutorial·was·written·and·code-tested·in142 out·of·sequence.·This·is·because·this·tutorial·was·written·and·code-tested·in
143 separate·sessions).</p><p>Here·is·a·bit·more·complex·calculation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="p"·data-group-id="2102807289-1">(</span><span·class="mi">42</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">77</span><span·class="p"·data-group-id="2102807289-1">)</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="mi">66</span><span·class="w">·</span><span·class="o">/</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">.</span><span·class="w">143 separate·sessions).</p><p>Here·is·a·bit·more·complex·calculation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="p"·data-group-id="9012873353-1">(</span><span·class="mi">42</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">77</span><span·class="p"·data-group-id="9012873353-1">)</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="mi">66</span><span·class="w">·</span><span·class="o">/</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">.</span><span·class="w">
144 </span><span·class="mf">2618.0</span></code></pre><p>Notice·the·use·of·brackets,·the·multiplication·operator·<code·class="inline">*</code>,·and·the·division144 </span><span·class="mf">2618.0</span></code></pre><p>Notice·the·use·of·brackets,·the·multiplication·operator·<code·class="inline">*</code>,·and·the·division
145 operator·<code·class="inline">/</code>,·as·in·normal·arithmetic·(see145 operator·<code·class="inline">/</code>,·as·in·normal·arithmetic·(see
146 <a·href="../../doc/system/expressions.html">Expressions</a>).</p><p>Press·Control-C·to·shut·down·the·Erlang·system·and·the·Erlang·shell.</p><p>The·following·output·is·shown:</p><pre><code·class="text">BREAK:·(a)bort·(c)ontinue·(p)roc·info·(i)nfo·(l)oaded146 <a·href="../../doc/system/expressions.html">Expressions</a>).</p><p>Press·Control-C·to·shut·down·the·Erlang·system·and·the·Erlang·shell.</p><p>The·following·output·is·shown:</p><pre><code·class="text">BREAK:·(a)bort·(c)ontinue·(p)roc·info·(i)nfo·(l)oaded
147 ·······(v)ersion·(k)ill·(D)b-tables·(d)istribution147 ·······(v)ersion·(k)ill·(D)b-tables·(d)istribution
148 a148 a
149 $</code></pre><p>Type·<code·class="inline">a</code>·to·leave·the·Erlang·system.</p><p>Another·way·to·shut·down·the·Erlang·system·is·by·entering·<a·href="../../erts-15.2.2/doc/html/erlang.html#halt/0"><code·class="inline">halt/0</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nf">halt</span><span·class="p"·data-group-id="3043293847-1">(</span><span·class="p"·data-group-id="3043293847-1">)</span><span·class="p">.</span><span·class="w">149 $</code></pre><p>Type·<code·class="inline">a</code>·to·leave·the·Erlang·system.</p><p>Another·way·to·shut·down·the·Erlang·system·is·by·entering·<a·href="../../erts-15.2.2/doc/html/erlang.html#halt/0"><code·class="inline">halt/0</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nf">halt</span><span·class="p"·data-group-id="7090182300-1">(</span><span·class="p"·data-group-id="7090182300-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="err">$</span></code></pre><h2·id="modules-and-functions"·class="section-heading">150 </span><span·class="err">$</span></code></pre><h2·id="modules-and-functions"·class="section-heading">
151 ··<a·href="#modules-and-functions"·class="hover-link">151 ··<a·href="#modules-and-functions"·class="hover-link">
152 ····<i·class="ri-link-m"·aria-hidden="true"></i>152 ····<i·class="ri-link-m"·aria-hidden="true"></i>
153 ··</a>153 ··</a>
154 ··<span·class="text">Modules·and·Functions</span>154 ··<span·class="text">Modules·and·Functions</span>
155 </h2>155 </h2>
156 <p>A·programming·language·is·not·much·use·if·you·only·can·run·code·from·the·shell.156 <p>A·programming·language·is·not·much·use·if·you·only·can·run·code·from·the·shell.
157 So·here·is·a·small·Erlang·program.·Enter·it·into·a·file·named·<code·class="inline">tut.erl</code>·using·a157 So·here·is·a·small·Erlang·program.·Enter·it·into·a·file·named·<code·class="inline">tut.erl</code>·using·a
158 suitable·text·editor.·The·file·name·<code·class="inline">tut.erl</code>·is·important,·and·also·that·it·is158 suitable·text·editor.·The·file·name·<code·class="inline">tut.erl</code>·is·important,·and·also·that·it·is
159 in·the·same·directory·as·the·one·where·you·started·<code·class="inline">erl</code>).·If·you·are·lucky·your159 in·the·same·directory·as·the·one·where·you·started·<code·class="inline">erl</code>).·If·you·are·lucky·your
160 editor·has·an·Erlang·mode·that·makes·it·easier·for·you·to·enter·and·format·your160 editor·has·an·Erlang·mode·that·makes·it·easier·for·you·to·enter·and·format·your
161 code·nicely·(see·<a·href="../../lib/tools-4.1.1/doc/html/erlang_mode_chapter.html">The·Erlang·mode·for·Emacs</a>161 code·nicely·(see·<a·href="../../lib/tools-4.1.1/doc/html/erlang_mode_chapter.html">The·Erlang·mode·for·Emacs</a>
162 in·Tools·User's·Guide),·but·you·can·manage·perfectly·well·without.·Here·is·the162 in·Tools·User's·Guide),·but·you·can·manage·perfectly·well·without.·Here·is·the
163 code·to·enter:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5293609036-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="5293609036-1">)</span><span·class="p">.</span><span·class="w"> 
164 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5293609036-2">(</span><span·class="p"·data-group-id="5293609036-3">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·clas[·...·truncated·by·diffoscope;·len:·86,·SHA:·3b2692979fc664e036bd14173bf7865a4c96d496275528f039a13aafec1f176d·...·]">)</span><span·class="p">.</span><span·class="w">163 code·to·enter:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1464776780-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="1464776780-1">)</span><span·class="p">.</span><span·class="w">
 164 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1464776780-2">(</span><span·class="p"·data-group-id="1464776780-3">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1464776780-3">]</span><span·class="p"·data-group-id="1464776780-2">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">double</span><span·class="p"·data-group-id="5293609036-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="5293609036-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">165 </span><span·class="nf">double</span><span·class="p"·data-group-id="1464776780-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="1464776780-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="n">X</span><span·class="p">.</span></code></pre><p>It·is·not·hard·to·guess·that·this·program·doubles·the·value·of·numbers.·The166 ····</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="n">X</span><span·class="p">.</span></code></pre><p>It·is·not·hard·to·guess·that·this·program·doubles·the·value·of·numbers.·The
167 first·two·lines·of·the·code·are·described·later.·Let·us·compile·the·program.167 first·two·lines·of·the·code·are·described·later.·Let·us·compile·the·program.
168 This·can·be·done·in·an·Erlang·shell·as·follows,·where·<code·class="inline">c</code>·means·compile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="8498405601-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="8498405601-1">)</span><span·class="p">.</span><span·class="w">168 This·can·be·done·in·an·Erlang·shell·as·follows,·where·<code·class="inline">c</code>·means·compile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="0103017700-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="0103017700-1">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="p"·data-group-id="8498405601-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut</span><span·class="p"·data-group-id="8498405601-2">}</span></code></pre><p>The·<code·class="inline">{ok,tut}</code>·means·that·the·compilation·is·OK.·If·it·says·<code·class="inline">error</code>·it·means169 </span><span·class="p"·data-group-id="0103017700-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut</span><span·class="p"·data-group-id="0103017700-2">}</span></code></pre><p>The·<code·class="inline">{ok,tut}</code>·means·that·the·compilation·is·OK.·If·it·says·<code·class="inline">error</code>·it·means
170 that·there·is·some·mistake·in·the·text·that·you·entered.·Additional·error170 that·there·is·some·mistake·in·the·text·that·you·entered.·Additional·error
171 messages·gives·an·idea·to·what·is·wrong·so·you·can·modify·the·text·and·then·try171 messages·gives·an·idea·to·what·is·wrong·so·you·can·modify·the·text·and·then·try
172 to·compile·the·program·again.</p><p>Now·run·the·program:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">tut</span><span·class="p">:</span><span·class="nf">double</span><span·class="p"·data-group-id="7853381659-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="7853381659-1">)</span><span·class="p">.</span><span·class="w">172 to·compile·the·program·again.</p><p>Now·run·the·program:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">tut</span><span·class="p">:</span><span·class="nf">double</span><span·class="p"·data-group-id="4230531763-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="4230531763-1">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="mi">20</span></code></pre><p>As·expected,·double·of·10·is·20.</p><p>Now·let·us·get·back·to·the·first·two·lines·of·the·code.·Erlang·programs·are173 </span><span·class="mi">20</span></code></pre><p>As·expected,·double·of·10·is·20.</p><p>Now·let·us·get·back·to·the·first·two·lines·of·the·code.·Erlang·programs·are
174 written·in·files.·Each·file·contains·an·Erlang·<em>module</em>.·The·first·line·of·code174 written·in·files.·Each·file·contains·an·Erlang·<em>module</em>.·The·first·line·of·code
175 in·the·module·is·the·module·name·(see·<a·href="../../doc/system/modules.html">Modules</a>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2095548972-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="2095548972-1">)</span><span·class="p">.</span></code></pre><p>Thus,·the·module·is·called·<em>tut</em>.·Notice·the·full·stop·<code·class="inline">.</code>·at·the·end·of·the175 in·the·module·is·the·module·name·(see·<a·href="../../doc/system/modules.html">Modules</a>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7735425492-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="7735425492-1">)</span><span·class="p">.</span></code></pre><p>Thus,·the·module·is·called·<em>tut</em>.·Notice·the·full·stop·<code·class="inline">.</code>·at·the·end·of·the
176 line.·The·files·which·are·used·to·store·the·module·must·have·the·same·name·as176 line.·The·files·which·are·used·to·store·the·module·must·have·the·same·name·as
177 the·module·but·with·the·extension·<code·class="inline">.erl</code>.·In·this·case·the·file·name·is177 the·module·but·with·the·extension·<code·class="inline">.erl</code>.·In·this·case·the·file·name·is
178 <code·class="inline">tut.erl</code>.·When·using·a·function·in·another·module,·the·syntax178 <code·class="inline">tut.erl</code>.·When·using·a·function·in·another·module,·the·syntax
179 <code·class="inline">module_name:function_name(arguments)</code>·is·used.·So·the·following·means·call179 <code·class="inline">module_name:function_name(arguments)</code>·is·used.·So·the·following·means·call
180 function·<code·class="inline">double</code>·in·module·<code·class="inline">tut</code>·with·argument·<code·class="inline">10</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">tut</span><span·class="p">:</span><span·class="nf">double</span><span·class="p"·data-group-id="8963291764-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="8963291764-1">)</span><span·class="p">.</span></code></pre><p>The·second·line·says·that·the·module·<code·class="inline">tut</code>·contains·a·function·called·<code·class="inline">double</code>,180 function·<code·class="inline">double</code>·in·module·<code·class="inline">tut</code>·with·argument·<code·class="inline">10</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">tut</span><span·class="p">:</span><span·class="nf">double</span><span·class="p"·data-group-id="3311075901-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="3311075901-1">)</span><span·class="p">.</span></code></pre><p>The·second·line·says·that·the·module·<code·class="inline">tut</code>·contains·a·function·called·<code·class="inline">double</code>,
181 which·takes·one·argument·(<code·class="inline">X</code>·in·our·example):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5631750420-1">(</span><span·class="p"·data-group-id="5631750420-2">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5631750420-2">]</span><span·class="p"·data-group-id="5631750420-1">)</span><span·class="p">.</span></code></pre><p>The·second·line·also·says·that·this·function·can·be·called·from·outside·the181 which·takes·one·argument·(<code·class="inline">X</code>·in·our·example):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3175277680-1">(</span><span·class="p"·data-group-id="3175277680-2">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3175277680-2">]</span><span·class="p"·data-group-id="3175277680-1">)</span><span·class="p">.</span></code></pre><p>The·second·line·also·says·that·this·function·can·be·called·from·outside·the
182 module·<code·class="inline">tut</code>.·More·about·this·later.·Again,·notice·the·<code·class="inline">.</code>·at·the·end·of·the182 module·<code·class="inline">tut</code>.·More·about·this·later.·Again,·notice·the·<code·class="inline">.</code>·at·the·end·of·the
183 line.</p><p>Now·for·a·more·complicated·example,·the·factorial·of·a·number.·For·example,·the183 line.</p><p>Now·for·a·more·complicated·example,·the·factorial·of·a·number.·For·example,·the
184 factorial·of·4·is·4·<em>·3·</em>·2·*·1,·which·equals·24.</p><p>Enter·the·following·code·in·a·file·named·<code·class="inline">tut1.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4039402199-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="4039402199-1">)</span><span·class="p">.</span><span·class="w">184 factorial·of·4·is·4·<em>·3·</em>·2·*·1,·which·equals·24.</p><p>Enter·the·following·code·in·a·file·named·<code·class="inline">tut1.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2440309551-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2440309551-1">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4039402199-2">(</span><span·class="p"·data-group-id="4039402199-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4039402199-3">]</span><span·class="p"·data-group-id="4039402199-2">)</span><span·class="p">.</span><span·class="w">185 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2440309551-2">(</span><span·class="p"·data-group-id="2440309551-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2440309551-3">]</span><span·class="p"·data-group-id="2440309551-2">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">fac</span><span·class="p"·data-group-id="4039402199-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="4039402199-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">186 </span><span·class="nf">fac</span><span·class="p"·data-group-id="2440309551-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2440309551-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">187 ····</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
188 </span><span·class="nf">fac</span><span·class="p"·data-group-id="4039402199-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="4039402199-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 </span><span·class="nf">fac</span><span·class="p"·data-group-id="2440309551-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="2440309551-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
189 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="4039402199-6">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4039402199-6">)</span><span·class="p">.</span></code></pre><p>So·this·is·a·module,·called·<code·class="inline">tut1</code>·that·contains·a·function·called·<code·class="inline">fac&gt;</code>,·which189 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="2440309551-6">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="2440309551-6">)</span><span·class="p">.</span></code></pre><p>So·this·is·a·module,·called·<code·class="inline">tut1</code>·that·contains·a·function·called·<code·class="inline">fac&gt;</code>,·which
190 takes·one·argument,·<code·class="inline">N</code>.</p><p>The·first·part·says·that·the·factorial·of·1·is·1.:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fac</span><span·class="p"·data-group-id="5205784087-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="5205784087-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">190 takes·one·argument,·<code·class="inline">N</code>.</p><p>The·first·part·says·that·the·factorial·of·1·is·1.:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fac</span><span·class="p"·data-group-id="2073006944-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2073006944-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="mi">1</span><span·class="p">;</span></code></pre><p>Notice·that·this·part·ends·with·a·semicolon·<code·class="inline">;</code>·that·indicates·that·there·is191 ····</span><span·class="mi">1</span><span·class="p">;</span></code></pre><p>Notice·that·this·part·ends·with·a·semicolon·<code·class="inline">;</code>·that·indicates·that·there·is
192 more·of·the·function·<code·class="inline">fac&gt;</code>·to·come.</p><p>The·second·part·says·that·the·factorial·of·N·is·N·multiplied·by·the·factorial·of192 more·of·the·function·<code·class="inline">fac&gt;</code>·to·come.</p><p>The·second·part·says·that·the·factorial·of·N·is·N·multiplied·by·the·factorial·of
193 N·-·1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fac</span><span·class="p"·data-group-id="9614858775-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="9614858775-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 N·-·1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fac</span><span·class="p"·data-group-id="7975081763-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="7975081763-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="9614858775-2">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="9614858775-2">)</span><span·class="p">.</span></code></pre><p>Notice·that·this·part·ends·with·a·<code·class="inline">.</code>·saying·that·there·are·no·more·parts·of194 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="7975081763-2">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="7975081763-2">)</span><span·class="p">.</span></code></pre><p>Notice·that·this·part·ends·with·a·<code·class="inline">.</code>·saying·that·there·are·no·more·parts·of
195 this·function.</p><p>Compile·the·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="9899921011-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="9899921011-1">)</span><span·class="p">.</span><span·class="w"> 
196 </span><span·class="p"·data-group-id="9899921011-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="9899921011-2">}</span></code></pre><p>And·now·calculate·the·factorial·of·4.</p><pre><co[·...·truncated·by·diffoscope;·len:·281,·SHA:·07908b1ec21a6985575623ba73ed4cb1fe522d695e672f4a5e17ce6d5f1438f3·...·]-1">)</span><span·class="p">.</span><span·class="w">195 this·function.</p><p>Compile·the·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="4490382358-1">(</span><span·class="ss">tut1</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7dfa7da49903e49a9236d53f5b5f6470dca3460ea379d8ffc5dcd07279e0ad3d·...·]-1">)</span><span·class="p">.</span><span·class="w">
 196 </span><span·class="p"·data-group-id="4490382358-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="4490382358-2">}</span></code></pre><p>And·now·calculate·the·factorial·of·4.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="nc">tut1</span><span·class="p">:</span><span·class="nf">fac</span><span·class="p"·data-group-id="5314430757-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="5314430757-1">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="mi">24</span></code></pre><p>Here·the·function·<code·class="inline">fac&gt;</code>·in·module·<code·class="inline">tut1</code>·is·called·with·argument·<code·class="inline">4</code>.</p><p>A·function·can·have·many·arguments.·Let·us·expand·the·module·<code·class="inline">tut1</code>·with·the197 </span><span·class="mi">24</span></code></pre><p>Here·the·function·<code·class="inline">fac&gt;</code>·in·module·<code·class="inline">tut1</code>·is·called·with·argument·<code·class="inline">4</code>.</p><p>A·function·can·have·many·arguments.·Let·us·expand·the·module·<code·class="inline">tut1</code>·with·the
198 function·to·multiply·two·numbers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1859035777-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="1859035777-1">)</span><span·class="p">.</span><span·class="w">198 function·to·multiply·two·numbers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4153921435-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="4153921435-1">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1859035777-2">(</span><span·class="p"·data-group-id="1859035777-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mult</span><span·class="p">/</span><span[·...·truncated·by·diffoscope;·len:·114,·SHA:·9bc66ac6f7167cca18d9d287877b4e6804453cff48870ee4bb38f1d1094e0f45·...·]-2">)</span><span·class="p">.</span><span·class="w">199 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4153921435-2">(</span><span·class="p"·data-group-id="4153921435-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mult</span><span·class="p">/</span><span[·...·truncated·by·diffoscope;·len:·114,·SHA:·a16ad3d00c30b644afd30933f0467bfb541debe998dbb750a056d25ff780a6ca·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">fac</span><span·class="p"·data-group-id="1859035777-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1859035777-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 </span><span·class="nf">fac</span><span·class="p"·data-group-id="4153921435-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="4153921435-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ····</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">201 ····</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
202 </span><span·class="nf">fac</span><span·class="p"·data-group-id="1859035777-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="1859035777-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 </span><span·class="nf">fac</span><span·class="p"·data-group-id="4153921435-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="4153921435-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="1859035777-6">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1859035777-6">)</span><span·class="p">.</span><span·class="w">203 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="4153921435-6">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4153921435-6">)</span><span·class="p">.</span><span·class="w">
  
204 </span><span·class="nf">mult</span><span·class="p"·data-group-id="1859035777-7">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="1859035777-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 </span><span·class="nf">mult</span><span·class="p"·data-group-id="4153921435-7">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="4153921435-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ····</span><span·class="n">X</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Y</span><span·class="p">.</span></code></pre><p>Notice·that·it·is·also·required·to·expand·the·<code·class="inline">-export</code>·line·with·the205 ····</span><span·class="n">X</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Y</span><span·class="p">.</span></code></pre><p>Notice·that·it·is·also·required·to·expand·the·<code·class="inline">-export</code>·line·with·the
206 information·that·there·is·another·function·<code·class="inline">mult</code>·with·two·arguments.</p><p>Compile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="5029200147-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="5029200147-1">)</span><span·class="p">.</span><span·class="w">206 information·that·there·is·another·function·<code·class="inline">mult</code>·with·two·arguments.</p><p>Compile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="3046402228-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="3046402228-1">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="5029200147-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="5029200147-2">}</span></code></pre><p>Try·out·the·new·function·<code·class="inline">mult</code>:</p><pre><code·class="makeup·[·...·truncated·by·diffoscope;·len:·314,·SHA:·06178252ec1296a47a036e79a932b17f25390d851fb539ae540d1da890a02dd3·...·]-1">)</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="3046402228-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="3046402228-2">}</span></code></pre><p>Try·out·the·new·function·<code·class="inline">mult</code>:</p><pre><code·class="makeup·[·...·truncated·by·diffoscope;·len:·314,·SHA:·78e509f36fa41f5a2d568e51a58f207eeb370debb539dc028491ff5294d1e971·...·]-1">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="mi">12</span></code></pre><p>In·this·example·the·numbers·are·integers·and·the·arguments·in·the·functions·in208 </span><span·class="mi">12</span></code></pre><p>In·this·example·the·numbers·are·integers·and·the·arguments·in·the·functions·in
209 the·code·<code·class="inline">N</code>,·<code·class="inline">X</code>,·and·<code·class="inline">Y</code>·are·called·variables.·Variables·must·start·with·a209 the·code·<code·class="inline">N</code>,·<code·class="inline">X</code>,·and·<code·class="inline">Y</code>·are·called·variables.·Variables·must·start·with·a
210 capital·letter·(see·<a·href="../../doc/system/expressions.html">Variables</a>).·Examples·of210 capital·letter·(see·<a·href="../../doc/system/expressions.html">Variables</a>).·Examples·of
211 variables·are·<code·class="inline">Number</code>,·<code·class="inline">ShoeSize</code>,·and·<code·class="inline">Age</code>.</p><h2·id="atoms"·class="section-heading">211 variables·are·<code·class="inline">Number</code>,·<code·class="inline">ShoeSize</code>,·and·<code·class="inline">Age</code>.</p><h2·id="atoms"·class="section-heading">
212 ··<a·href="#atoms"·class="hover-link">212 ··<a·href="#atoms"·class="hover-link">
213 ····<i·class="ri-link-m"·aria-hidden="true"></i>213 ····<i·class="ri-link-m"·aria-hidden="true"></i>
214 ··</a>214 ··</a>
215 ··<span·class="text">Atoms</span>215 ··<span·class="text">Atoms</span>
216 </h2>216 </h2>
217 <p>Atom·is·another·data·type·in·Erlang.·Atoms·start·with·a·small·letter·(see217 <p>Atom·is·another·data·type·in·Erlang.·Atoms·start·with·a·small·letter·(see
218 <a·href="../../doc/system/data_types.html">Atom</a>),·for·example,·<code·class="inline">charles</code>,·<code·class="inline">centimeter</code>,·and218 <a·href="../../doc/system/data_types.html">Atom</a>),·for·example,·<code·class="inline">charles</code>,·<code·class="inline">centimeter</code>,·and
219 <code·class="inline">inch</code>.·Atoms·are·simply·names,·nothing·else.·They·are·not·like·variables,·which219 <code·class="inline">inch</code>.·Atoms·are·simply·names,·nothing·else.·They·are·not·like·variables,·which
220 can·have·a·value.</p><p>Enter·the·next·program·in·a·file·named·<code·class="inline">tut2.erl</code>).·It·can·be·useful·for220 can·have·a·value.</p><p>Enter·the·next·program·in·a·file·named·<code·class="inline">tut2.erl</code>).·It·can·be·useful·for
221 converting·from·inches·to·centimeters·and·conversely:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4031219645-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="4031219645-1">)</span><span·class="p">.</span><span·class="w"> 
222 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4031219645-2">(</span><span·class="p"·data-group-id="4031219645-3">[</span><span·class="ss">convert</span><span·class="p">/</span><span·class="mi">2</span><span·cla[·...·truncated·by·diffoscope;·len:·87,·SHA:·d6683fbb1eacff8e5fa486d30de141f67cf5355ff72ef7a3c9c1c81095dc781f·...·]">)</span><span·class="p">.</span><span·class="w">221 converting·from·inches·to·centimeters·and·conversely:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7208535180-1">(</span><span·class="ss">tut2</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·27,·SHA:·0d32e3d2669564461eaa4653f5fd101c776c7708a481393c0e2e490d4821a432·...·]">)</span><span·class="p">.</span><span·class="w">
 222 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7208535180-2">(</span><span·class="p"·data-group-id="7208535180-3">[</span><span·class="ss">convert</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="7208535180-3">]</span><span·class="p"·data-group-id="7208535180-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">convert</span><span·class="p"·data-group-id="4031219645-4">(</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inch</span><span·class="p"·data-group-id="4031219645-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 </span><span·class="nf">convert</span><span·class="p"·data-group-id="7208535180-4">(</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inch</span><span·class="p"·data-group-id="7208535180-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="n">M</span><span·class="w">·</span><span·class="o">/</span><span·class="w">·</span><span·class="mf">2.54</span><span·class="p">;</span><span·class="w">224 ····</span><span·class="n">M</span><span·class="w">·</span><span·class="o">/</span><span·class="w">·</span><span·class="mf">2.54</span><span·class="p">;</span><span·class="w">
  
225 </span><span·class="nf">convert</span><span·class="p"·data-group-id="4031219645-5">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">centimeter</span><span·class="p"·data-group-id="4031219645-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 </span><span·class="nf">convert</span><span·class="p"·data-group-id="7208535180-5">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">centimeter</span><span·class="p"·data-group-id="7208535180-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="mf">2.54</span><span·class="p">.</span></code></pre><p>Compile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="6811455822-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="6811455822-1">)</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="mf">2.54</span><span·class="p">.</span></code></pre><p>Compile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="3006581767-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="3006581767-1">)</span><span·class="p">.</span><span·class="w">
227 </span><span·class="p"·data-group-id="6811455822-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut2</span><span·class="p"·data-group-id="6811455822-2">}</span></code></pre><p>Test:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">[·...·truncated·by·diffoscope;·len:·292,·SHA:·45cc1a06dd50a8c307afe281fa343fc5cc85069c00f772f3e1cba57840b77ac9·...·]-1">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="p"·data-group-id="3006581767-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut2</span><span·class="p"·data-group-id="3006581767-2">}</span></code></pre><p>Test:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">[·...·truncated·by·diffoscope;·len:·292,·SHA:·d54b2e33169d31d2282832c5a643368b081d400074b65eb621056b0cfc5387d3·...·]-1">)</span><span·class="p">.</span><span·class="w">
228 </span><span·class="mf">1.1811023622047243</span><span·class="gp·unselectable">228 </span><span·class="mf">1.1811023622047243</span><span·class="gp·unselectable">
229 11&gt;·</span><span·class="nc">tut2</span><span·class="p">:</span><span·class="nf">convert</span><span·class="p"·data-group-id="0306368210-2">(</span><span·class="mi">7</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">centimeter</span><span·class="p"·data-group-id="0306368210-2">)</span><span·class="p">.</span><span·class="w">229 11&gt;·</span><span·class="nc">tut2</span><span·class="p">:</span><span·class="nf">convert</span><span·class="p"·data-group-id="0704973845-2">(</span><span·class="mi">7</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">centimeter</span><span·class="p"·data-group-id="0704973845-2">)</span><span·class="p">.</span><span·class="w">
230 </span><span·class="mf">17.78</span></code></pre><p>Notice·the·introduction·of·decimals·(floating·point·numbers)·without·any230 </span><span·class="mf">17.78</span></code></pre><p>Notice·the·introduction·of·decimals·(floating·point·numbers)·without·any
231 explanation.·Hopefully·you·can·cope·with·that.</p><p>Let·us·see·what·happens·if·something·other·than·<code·class="inline">centimeter</code>·or·<code·class="inline">inch</code>·is231 explanation.·Hopefully·you·can·cope·with·that.</p><p>Let·us·see·what·happens·if·something·other·than·<code·class="inline">centimeter</code>·or·<code·class="inline">inch</code>·is
232 entered·in·the·<code·class="inline">convert</code>·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">12&gt;·</span><span·class="nc">tut2</span><span·class="p">:</span><span·class="nf">convert</span><span·class="p"·data-group-id="6260471558-1">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">miles</span><span·class="p"·data-group-id="6260471558-1">)</span><span·class="p">.</span><span·class="w">232 entered·in·the·<code·class="inline">convert</code>·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">12&gt;·</span><span·class="nc">tut2</span><span·class="p">:</span><span·class="nf">convert</span><span·class="p"·data-group-id="2048966611-1">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">miles</span><span·class="p"·data-group-id="2048966611-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="gt">**·exception·error:·no·function·clause·matching·tut2:convert(3,miles)·(tut2.erl,·line·4)</span></code></pre><p>The·two·parts·of·the·<code·class="inline">convert</code>·function·are·called·its·clauses.·As·shown,233 </span><span·class="gt">**·exception·error:·no·function·clause·matching·tut2:convert(3,miles)·(tut2.erl,·line·4)</span></code></pre><p>The·two·parts·of·the·<code·class="inline">convert</code>·function·are·called·its·clauses.·As·shown,
234 <code·class="inline">miles</code>·is·not·part·of·either·of·the·clauses.·The·Erlang·system·cannot·<em>match</em>234 <code·class="inline">miles</code>·is·not·part·of·either·of·the·clauses.·The·Erlang·system·cannot·<em>match</em>
235 either·of·the·clauses·so·an·error·message·<code·class="inline">function_clause</code>·is·returned.·The235 either·of·the·clauses·so·an·error·message·<code·class="inline">function_clause</code>·is·returned.·The
236 shell·formats·the·error·message·nicely,·but·the·error·tuple·is·saved·in·the236 shell·formats·the·error·message·nicely,·but·the·error·tuple·is·saved·in·the
237 shell's·history·list·and·can·be·output·by·the·shell·command·<code·class="inline">v/1</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">13&gt;·</span><span·class="nf">v</span><span·class="p"·data-group-id="7916654560-1">(</span><span·class="mi">12</span><span·class="p"·data-group-id="7916654560-1">)</span><span·class="p">.</span><span·class="w">237 shell's·history·list·and·can·be·output·by·the·shell·command·<code·class="inline">v/1</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">13&gt;·</span><span·class="nf">v</span><span·class="p"·data-group-id="8878174428-1">(</span><span·class="mi">12</span><span·class="p"·data-group-id="8878174428-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="7916654560-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7916654560-3">{</span><span·class="ss">function_clause</span><span·class="p">,</span><span·class="p"·data-group-id="7916654560-4">[</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·31fbfcedbe08359742cfaff662d7e117545c1435f152e2219df96c663e72ca1d·...·]-5">{</span><span·class="ss">tut2</span><span·class="p">,</span><span·class="ss">convert</span><span·class="p">,</span><span·class="w">238 </span><span·class="p"·data-group-id="8878174428-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8878174428-3">{</span><span·class="ss">function_clause</span><span·class="p">,</span><span·class="p"·data-group-id="8878174428-4">[</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·c3e6c0143aefc4d2dc4735d47b35f60bbb0531a522b18aa5b7f56d5d25db3aa7·...·]-5">{</span><span·class="ss">tut2</span><span·class="p">,</span><span·class="ss">convert</span><span·class="p">,</span><span·class="w">
239 ································</span><span·class="p"·data-group-id="7916654560-6">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">miles</span><span·class="p"·data-group-id="7916654560-6">]</span><span·class="p">,</span><span·class="w">239 ································</span><span·class="p"·data-group-id="8878174428-6">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">miles</span><span·class="p"·data-group-id="8878174428-6">]</span><span·class="p">,</span><span·class="w">
240 ································</span><span·class="p"·data-group-id="7916654560-7">[</span><span·class="p"·data-group-id="7916654560-8">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;tut2.erl&quot;</span><span·class="p"·data-group-id="7916654560-8">}</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·268,·SHA:·84051c61ffd3bd8123fb291d5f5e0f05c551be1f4fe30bbe5941324cd81dfdc8·...·]-5">}</span><span·class="p">,</span><span·class="w">240 ································</span><span·class="p"·data-group-id="8878174428-7">[</span><span·class="p"·data-group-id="8878174428-8">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;tut2.erl&quot;</span><span·class="p"·data-group-id="8878174428-8">}</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·268,·SHA:·f08e7e59a021cf0612549f464489f75a1247bd8ceea53d6d1f71be1adff5f476·...·]-5">}</span><span·class="p">,</span><span·class="w">
241 ··························</span><span·class="p"·data-group-id="7916654560-10">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">241 ··························</span><span·class="p"·data-group-id="8878174428-10">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">
242 ····································</span><span·class="p"·data-group-id="7916654560-11">[</span><span·class="p"·data-group-id="7916654560-12">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;erl_eval.erl&quot;</span><span·class="p"·data-group-id="7916654560-12">}</span><span·class="p">,</span><span·class="p"·data-group-id="7916654560-13">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">677</span><span·class="p"·data-group-id="7916654560-13">}</span><span·class="p"·data-group-id="7916654560-11">]</span><span·class="p"·data-group-id="7916654560-10">}</span><span·class="p">,</span><span·class="w"> 
243 ··························</span><span·class="p"·data-group-id="7916654560-14">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="7916654560-15">[</span><span·class="p"·data-group-id="7916654560-16">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;shell.erl&quot;</span><span·class="p"·data-group-id="7916654560-16">}</span><span·class="p">,</span><span·class="p"·data-group-id="7916654560-17">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">687</span><span·class="p"·data-group-id="7916654560-17">}</span><span·class="p"·data-group-id="7916654560-15">]</span><span·class="p"·data-group-id="7916654560-14">}</span><span·class="p">,</span><span·class="w"> 
244 ··························</span><span·class="p"·data-group-id="7916654560-18">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="7916[·...·truncated·by·diffoscope;·len:·532,·SHA:·14d1dd3b5652f38ce4d1cfa50ce88b551188e59a254f6da957ad5194ee2ab083·...·]">}</span><span·class="p">,</span><span·class="w">242 ····································</span><span·class="p"·data-group-id="8878174428-11">[</span><span·class="p"·data-group-id="8878174428-12">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;erl_eval.erl&quot;</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·331,·SHA:·dfd160791b03ee1e9997fe3987b532bd741bbc7a650e3093097b2b886dc3b84e·...·]">}</span><span·class="p">,</span><span·class="w">
 243 ··························</span><span·class="p"·data-group-id="8878174428-14">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="8878174428-15">[</span><span·class="p"·data-group-id="8878174428-16">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;shell.erl&quot;</span><span·class="p"·data-group-id="8878174428-16">}</span><span·class="p">,</span><span·class="p"·data-group-id="8878174428-17">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">687</span><span·class="p"·data-group-id="8878174428-17">}</span><span·class="p"·data-group-id="8878174428-15">]</span><span·class="p"·data-group-id="8878174428-14">}</span><span·class="p">,</span><span·class="w">
 244 ··························</span><span·class="p"·data-group-id="8878174428-18">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="8878174428-19">[</span><span·class="p"·data-group-id="8878174428-20">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;shell.erl&quot;</span><span·class="p"·data-group-id="8878174428-20">}</span><span·class="p">,</span><span·class="p"·data-group-id="8878174428-21">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">642</span><span·class="p"·data-group-id="8878174428-21">}</span><span·class="p"·data-group-id="8878174428-19">]</span><span·class="p"·data-group-id="8878174428-18">}</span><span·class="p">,</span><span·class="w">
245 ··························</span><span·class="p"·data-group-id="7916654560-22">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_loop</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">245 ··························</span><span·class="p"·data-group-id="8878174428-22">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_loop</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
246 ·································</span><span·class="p"·data-group-id="7916654560-23">[</span><span·class="p"·data-group-id="7916654560-24">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;shell.erl&quot;</span><span·class="p"·data-group-id="7916654560-24">}</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·437,·SHA:·6560a0fb8766affe41060d7fc1bc45eeac7fe9f36284699d2ed10dabf7d11974·...·]-2">}</span></code></pre><h2·id="tuples"·class="section-heading">246 ·································</span><span·class="p"·data-group-id="8878174428-23">[</span><span·class="p"·data-group-id="8878174428-24">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;shell.erl&quot;</span><span·class="p"·data-group-id="8878174428-24">}</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·437,·SHA:·6d20062d92e11af12cc31018c821f9ec37a0295cb233b5aeead6418f04c2641b·...·]-2">}</span></code></pre><h2·id="tuples"·class="section-heading">
247 ··<a·href="#tuples"·class="hover-link">247 ··<a·href="#tuples"·class="hover-link">
248 ····<i·class="ri-link-m"·aria-hidden="true"></i>248 ····<i·class="ri-link-m"·aria-hidden="true"></i>
249 ··</a>249 ··</a>
250 ··<span·class="text">Tuples</span>250 ··<span·class="text">Tuples</span>
251 </h2>251 </h2>
Max diff block lines reached; 386610/436219 bytes (88.63%) of diff not shown.
196 KB
./usr/share/doc/erlang-doc/html/doc/system/spec_proc.html
    
Offset 123, 72 lines modifiedOffset 123, 72 lines modified
123 ··<a·href="#simple-debugging"·class="hover-link">123 ··<a·href="#simple-debugging"·class="hover-link">
124 ····<i·class="ri-link-m"·aria-hidden="true"></i>124 ····<i·class="ri-link-m"·aria-hidden="true"></i>
125 ··</a>125 ··</a>
126 ··<span·class="text">Simple·Debugging</span>126 ··<span·class="text">Simple·Debugging</span>
127 </h2>127 </h2>
128 <p>The·<a·href="../../lib/stdlib-6.2/doc/html/sys.html"><code·class="inline">sys</code></a>·module·has·functions·for·simple·debugging·of·processes·implemented128 <p>The·<a·href="../../lib/stdlib-6.2/doc/html/sys.html"><code·class="inline">sys</code></a>·module·has·functions·for·simple·debugging·of·processes·implemented
129 using·behaviours.·The·<code·class="inline">code_lock</code>·example·from129 using·behaviours.·The·<code·class="inline">code_lock</code>·example·from
130 <a·href="statem.html#example">gen_statem·Behaviour</a>·is·used·to·illustrate·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">27</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="7294648431-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1073,·SHA:·59b4200becc9fa0a791a7ef03cef7821bcaaeb5f15327e3b36d1ada5713c3d55·...·]-6">]</span><span·class="w">130 <a·href="statem.html#example">gen_statem·Behaviour</a>·is·used·to·illustrate·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">27</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="1624062374-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1073,·SHA:·efa6c0f4b76364992da5e8af587cc97a78cef343e2e01ba9f51f2bf8e4c3d112·...·]-6">]</span><span·class="w">
  
131 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-7">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·3068a9805494f0bde7801ea35db9b67095e1472ab5d70b7c65c17a066e1f95e6·...·]-7">)</span><span·class="gp·unselectable">131 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-7">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·b0b30b9737a93319510765437272003b6f8c9f4ec92ecf32b7ab7d4cfa6414c9·...·]-7">)</span><span·class="gp·unselectable">
132 1&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="7294648431-9">(</span><span·class="p"·data-group-id="7294648431-10">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cl[·...·truncated·by·diffoscope;·len:·87,·SHA:·d866ceb007c8990a822015bf4dbd75a72aa4e58c72ec07d5ecd4daa934e9f9ae·...·]-9">)</span><span·class="p">.</span><span·class="w">132 1&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="1624062374-9">(</span><span·class="p"·data-group-id="1624062374-10">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cl[·...·truncated·by·diffoscope;·len:·87,·SHA:·7b6585cf53f327407819495ea2cf6d118232917c1de04eb173a9f519c2c43cf2·...·]-9">)</span><span·class="p">.</span><span·class="w">
133 </span><span·class="n">Lock</span><span·class="w">133 </span><span·class="n">Lock</span><span·class="w">
134 </span><span·class="p"·data-group-id="7294648431-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7294648431-11">}</span><span·class="gp·unselectable">134 </span><span·class="p"·data-group-id="1624062374-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1624062374-11">}</span><span·class="gp·unselectable">
135 2&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">statistics</span><span·class="p"·data-group-id="7294648431-12">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="7294648431-12">)</span><span·class="p">.</span><span·class="w">135 2&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">statistics</span><span·class="p"·data-group-id="1624062374-12">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1624062374-12">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="ss">ok</span><span·class="gp·unselectable">136 </span><span·class="ss">ok</span><span·class="gp·unselectable">
137 3&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="7294648431-13">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="7294648431-13">)</span><span·class="p">.</span><span·class="w">137 3&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="1624062374-13">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1624062374-13">)</span><span·class="p">.</span><span·class="w">
138 </span><span·class="ss">ok</span><span·class="gp·unselectable">138 </span><span·class="ss">ok</span><span·class="gp·unselectable">
139 4&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="7294648431-14">(</span><span·class="mi">1</span><span·class="p"·data-group-id="7294648431-14">)</span><span·class="p">.</span><span·class="w">139 4&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="1624062374-14">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1624062374-14">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-15">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7294648431-15">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">140 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-15">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1624062374-15">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">
141 </span><span·class="ss">ok</span><span·class="w">141 </span><span·class="ss">ok</span><span·class="w">
142 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-16">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7294648431-16">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">142 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-16">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1624062374-16">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">
143 5&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="7294648431-17">(</span><span·class="mi">2</span><span·class="p"·data-group-id="7294648431-17">)</span><span·class="p">.</span><span·class="w">143 5&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="1624062374-17">(</span><span·class="mi">2</span><span·class="p"·data-group-id="1624062374-17">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7294648431-18">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">144 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1624062374-18">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">
145 </span><span·class="ss">ok</span><span·class="w">145 </span><span·class="ss">ok</span><span·class="w">
146 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-19">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7294648431-19">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">146 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-19">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1624062374-19">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">
147 6&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="7294648431-20">(</span><span·class="mi">3</span><span·class="p"·data-group-id="7294648431-20">)</span><span·class="p">.</span><span·class="w">147 6&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="1624062374-20">(</span><span·class="mi">3</span><span·class="p"·data-group-id="1624062374-20">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-21">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7294648431-21">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">148 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-21">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1624062374-21">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">
149 </span><span·class="ss">ok</span><span·class="w">149 </span><span·class="ss">ok</span><span·class="w">
150 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-22">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7294648431-22">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">150 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-22">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1624062374-22">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">
151 7&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="7294648431-23">(</span><span·class="mi">4</span><span·class="p"·data-group-id="7294648431-23">)</span><span·class="p">.</span><span·class="w">151 7&gt;·</span><span·class="nc">code_lock</span><span·class="p">:</span><span·class="nf">button</span><span·class="p"·data-group-id="1624062374-23">(</span><span·class="mi">4</span><span·class="p"·data-group-id="1624062374-23">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-24">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="7294648431-24">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">152 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-24">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="1624062374-24">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">
153 </span><span·class="ss">ok</span><span·class="w">153 </span><span·class="ss">ok</span><span·class="w">
154 </span><span·class="n">Unlock</span><span·class="w">154 </span><span·class="n">Unlock</span><span·class="w">
155 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="7294648431-25">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">155 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">cast</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="1624062374-25">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">
156 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="nb">start_timer</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-26">{</span><span·class="ss">state_timeout</span><span·class="p">,</span><span·class="mi">10000</span><span·class="p">,</span><span·class="ss">lock</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-27">[</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·2bd65f42c53c6e24c361a8314feb9c06619311f851a6d9b118c28d2fd902a210·...·]-26">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">156 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="nb">start_timer</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-26">{</span><span·class="ss">state_timeout</span><span·class="p">,</span><span·class="mi">10000</span><span·class="p">,</span><span·class="ss">lock</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-27">[</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·f39230daa626beb8246cda9e59b4d76fb9afd55374f02c9637b580a84798ae91·...·]-26">}</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">
157 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">state_timeout</span><span·class="w">·</span><span·class="ss">lock</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">157 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">state_timeout</span><span·class="w">·</span><span·class="ss">lock</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">
158 </span><span·class="n">Lock</span><span·class="w">158 </span><span·class="n">Lock</span><span·class="w">
159 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">state_timeout</span><span·class="w">·</span><span·class="ss">lock</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">159 </span><span·class="o">*</span><span·class="n">DBG</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="w">·</span><span·class="ss">consume</span><span·class="w">·</span><span·class="ss">state_timeout</span><span·class="w">·</span><span·class="ss">lock</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">open</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">locked</span><span·class="gp·unselectable">
160 8&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">statistics</span><span·class="p"·data-group-id="7294648431-28">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">get</span><span·class="p"·data-group-id="7294648431-28">)</span><span·class="p">.</span><span·class="w">160 8&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">statistics</span><span·class="p"·data-group-id="1624062374-28">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">get</span><span·class="p"·data-group-id="1624062374-28">)</span><span·class="p">.</span><span·class="w">
161 </span><span·class="p"·data-group-id="7294648431-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-30">[</span><span·class="p"·data-group-id="7294648431-31">{</span><span·class="ss">start_time</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·622,·SHA:·ae06c45891b0294375312312dc0e8bd8a44a809f2e18bc67c1c4e5f5097c1f00·...·]-31">}</span><span·class="p">,</span><span·class="w">161 </span><span·class="p"·data-group-id="1624062374-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-30">[</span><span·class="p"·data-group-id="1624062374-31">{</span><span·class="ss">start_time</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·622,·SHA:·8c7dbe8d7194755dfd7f4908adbb70007d61df338ff3f39b4c4672e1245ca7c5·...·]-31">}</span><span·class="p">,</span><span·class="w">
162 ·····</span><span·class="p"·data-group-id="7294648431-35">{</span><span·class="ss">current_time</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-36">{</span><span·class="p"·data-group-id="7294648431-37">{</span><span·class="mi">2024</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·467,·SHA:·a361abfffcee558115a258cc4f23f2418684fca42dd867225ad06d696bfe343d·...·]-35">}</span><span·class="p">,</span><span·class="w">162 ·····</span><span·class="p"·data-group-id="1624062374-35">{</span><span·class="ss">current_time</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-36">{</span><span·class="p"·data-group-id="1624062374-37">{</span><span·class="mi">2024</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·467,·SHA:·bb8bb7b2e77b6be5c9bec6f9d8c52669aa4356c5ec3936bf7331bc3437584736·...·]-35">}</span><span·class="p">,</span><span·class="w">
163 ·····</span><span·class="p"·data-group-id="7294648431-39">{</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="mi">4098</span><span·class="p"·data-group-id="7294648431-39">}</span><span·class="p">,</span><span·class="w">163 ·····</span><span·class="p"·data-group-id="1624062374-39">{</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="mi">4098</span><span·class="p"·data-group-id="1624062374-39">}</span><span·class="p">,</span><span·class="w">
164 ·····</span><span·class="p"·data-group-id="7294648431-40">{</span><span·class="ss">messages_in</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="7294648431-40">}</span><span·class="p">,</span><span·class="w">164 ·····</span><span·class="p"·data-group-id="1624062374-40">{</span><span·class="ss">messages_in</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="1624062374-40">}</span><span·class="p">,</span><span·class="w">
165 ·····</span><span·class="p"·data-group-id="7294648431-41">{</span><span·class="ss">messages_out</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7294648431-41">}</span><span·class="p"·data-group-id="7294648431-30">]</span><span·class="p"·data-group-id="729464843[·...·truncated·by·diffoscope;·len:·1,·SHA:·6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b·...·]-29">}</span><span·class="gp·unselectable">165 ·····</span><span·class="p"·data-group-id="1624062374-41">{</span><span·class="ss">messages_out</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="1624062374-41">}</span><span·class="p"·data-group-id="1624062374-30">]</span><span·class="p"·data-group-id="162406237[·...·truncated·by·diffoscope;·len:·1,·SHA:·4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a·...·]-29">}</span><span·class="gp·unselectable">
166 9&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">statistics</span><span·class="p"·data-group-id="7294648431-42">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="7294648431-42">)</span><span·class="p">.</span><span·class="w">166 9&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">statistics</span><span·class="p"·data-group-id="1624062374-42">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="1624062374-42">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="ss">ok</span><span·class="gp·unselectable">167 </span><span·class="ss">ok</span><span·class="gp·unselectable">
168 10&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="7294648431-43">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="7294648431-43">)</span><span·class="p">.</span><span·class="w">168 10&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="1624062374-43">(</span><span·class="ss">code_lock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="1624062374-43">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="ss">ok</span><span·class="gp·unselectable">169 </span><span·class="ss">ok</span><span·class="gp·unselectable">
170 11&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">get_status</span><span·class="p"·data-group-id="7294648431-44">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="7294648431-44">)</span><span·class="p">.</span><span·class="w">170 11&gt;·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">get_status</span><span·class="p"·data-group-id="1624062374-44">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="1624062374-44">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="7294648431-45">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">171 </span><span·class="p"·data-group-id="1624062374-45">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="7294648431-46">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="7294648431-46">}</span><span·class="p">,</span><span·class="w">172 ········</span><span·class="p"·data-group-id="1624062374-46">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="1624062374-46">}</span><span·class="p">,</span><span·class="w">
173 ········</span><span·class="p"·data-group-id="7294648431-47">[</span><span·class="p"·data-group-id="7294648431-48">[</span><span·class="p"·data-group-id="7294648431-49">{</span><span·class="ss">&#39;$initial_call&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-50">{</span>[·...·truncated·by·diffoscope;·len:·229,·SHA:·692f79c360e71a5363bdcb843130b3af693b3c4a34cc7d46c8179489a9063ccf·...·]-49">}</span><span·class="p">,</span><span·class="w">173 ········</span><span·class="p"·data-group-id="1624062374-47">[</span><span·class="p"·data-group-id="1624062374-48">[</span><span·class="p"·data-group-id="1624062374-49">{</span><span·class="ss">&#39;$initial_call&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-50">{</span>[·...·truncated·by·diffoscope;·len:·229,·SHA:·ff4be1aebb3ff6a317eb8683d051714866547640791c4a7233c4905c0c4f3acd·...·]-49">}</span><span·class="p">,</span><span·class="w">
174 ··········</span><span·class="p"·data-group-id="7294648431-51">{</span><span·class="ss">&#39;$ancestors&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-52">[</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.87</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.70</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.65</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.69</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">174 ··········</span><span·class="p"·data-group-id="1624062374-51">{</span><span·class="ss">&#39;$ancestors&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-52">[</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.87</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.70</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.65</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.69</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">
175 ·························</span><span·class="o">&lt;</span><span·class="mf">0.64</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">kernel_sup</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.47</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7294648431-52">]</span><span·class="p"·data-group-id="7294648431-51">}</span><span·class="p"·data-group-id="7294648431-48">]</span><span·class="p">,</span><span·class="w">175 ·························</span><span·class="o">&lt;</span><span·class="mf">0.64</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">kernel_sup</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.47</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1624062374-52">]</span><span·class="p"·data-group-id="1624062374-51">}</span><span·class="p"·data-group-id="1624062374-48">]</span><span·class="p">,</span><span·class="w">
176 ·········</span><span·class="ss">running</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-53">[</span><span·class="p"·data-group-id="7294648431-53">]</span><span·class="p">,</span><span·class="w">176 ·········</span><span·class="ss">running</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-53">[</span><span·class="p"·data-group-id="1624062374-53">]</span><span·class="p">,</span><span·class="w">
177 ·········</span><span·class="p"·data-group-id="7294648431-54">[</span><span·class="p"·data-group-id="7294648431-55">{</span><span·class="ss">header</span><span·class="p">,</span><span·class="s">&quot;Status·for·state·machine·code_lock&quot;</span><span·class="p"·data-group-id="7294648431-55">}</span><span·class="p">,</span><span·class="w">177 ·········</span><span·class="p"·data-group-id="1624062374-54">[</span><span·class="p"·data-group-id="1624062374-55">{</span><span·class="ss">header</span><span·class="p">,</span><span·class="s">&quot;Status·for·state·machine·code_lock&quot;</span><span·class="p"·data-group-id="1624062374-55">}</span><span·class="p">,</span><span·class="w">
178 ··········</span><span·class="p"·data-group-id="7294648431-56">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-57">[</span><span·class="p"·data-group-id="7294648431-58">{</span><span·class="s">&quot;Status&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·64,·SHA:·37d4d0d5f33d69bc49b8a95e0df8e998262d76d2a8d899feb21f7c62c77f9249·...·]-58">}</span><span·class="p">,</span><span·class="w">178 ··········</span><span·class="p"·data-group-id="1624062374-56">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-57">[</span><span·class="p"·data-group-id="1624062374-58">{</span><span·class="s">&quot;Status&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·64,·SHA:·a18b30fdd4f6d7c77fe74784cf7c4835fa4bc53f619417153cd1ae0cb3f45e39·...·]-58">}</span><span·class="p">,</span><span·class="w">
179 ·················</span><span·class="p"·data-group-id="7294648431-59">{</span><span·class="s">&quot;Parent&quot;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="729464[·...·truncated·by·diffoscope;·len:·4,·SHA:·13b92326aee45b686501b518930032a92c937945b258b461840f4b2572ed9d68·...·]-59">}</span><span·class="p">,</span><span·class="w">179 ·················</span><span·class="p"·data-group-id="1624062374-59">{</span><span·class="s">&quot;Parent&quot;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="162406[·...·truncated·by·diffoscope;·len:·4,·SHA:·92128c7fc22f3f685e9914450a0bd855e258aafff9351663260b080a4a7c5188·...·]-59">}</span><span·class="p">,</span><span·class="w">
180 ·················</span><span·class="p"·data-group-id="7294648431-60">{</span><span·class="s">&quot;Modules&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-61">[</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="7294648431-61">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·882dce9380426b297d03cfe385096d66c98cc250af594af068d236d10ee34c6b·...·]-60">}</span><span·class="p">,</span><span·class="w">180 ·················</span><span·class="p"·data-group-id="1624062374-60">{</span><span·class="s">&quot;Modules&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-61">[</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="1624062374-61">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·a929e536d0382a74ab7331a01f7a557ec7e406b052877ff5d11c98c74cc2f089·...·]-60">}</span><span·class="p">,</span><span·class="w">
181 ·················</span><span·class="p"·data-group-id="7294648431-62">{</span><span·class="s">&quot;Time-outs&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-63">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-64">[</span><span·cl[·...·truncated·by·diffoscope;·len:·141,·SHA:·6e6aa2a73cd0182d9f16739a4b2ee0f9624c64abfe6fad24db874930baa10925·...·]-62">}</span><span·class="p">,</span><span·class="w">181 ·················</span><span·class="p"·data-group-id="1624062374-62">{</span><span·class="s">&quot;Time-outs&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-63">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-64">[</span><span·cl[·...·truncated·by·diffoscope;·len:·141,·SHA:·158577677c333cc0c6ea8d6a9c23e76826b8325884fc087930bd7299dfe03328·...·]-62">}</span><span·class="p">,</span><span·class="w">
182 ·················</span><span·class="p"·data-group-id="7294648431-65">{</span><span·class="s">&quot;Logged·Events&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-66">[</span><span·class="p"·data-group-id="7294648431-66">]</span><span·class="p"·data-group-id="7294648431-65">}</span><span·class="p">,</span><span·class="w">182 ·················</span><span·class="p"·data-group-id="1624062374-65">{</span><span·class="s">&quot;Logged·Events&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-66">[</span><span·class="p"·data-group-id="1624062374-66">]</span><span·class="p"·data-group-id="1624062374-65">}</span><span·class="p">,</span><span·class="w">
183 ·················</span><span·class="p"·data-group-id="7294648431-67">{</span><span·class="s">&quot;Postponed&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-68">[</span><span·class="p"·data-group-id="7294648431-68">]</span><span·class="p"·data-group-id="7294648431-67">}</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·9e7570004b585d668c02ff68b4dc7f5b38689b8791d5998f191888cb7b8d5167·...·]-56">}</span><span·class="p">,</span><span·class="w">183 ·················</span><span·class="p"·data-group-id="1624062374-67">{</span><span·class="s">&quot;Postponed&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-68">[</span><span·class="p"·data-group-id="1624062374-68">]</span><span·class="p"·data-group-id="1624062374-67">}</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·1bb90f57394f595e3bfbf4676fffaf39b82d2548ac7e4ceb21bcd9d7372e2526·...·]-56">}</span><span·class="p">,</span><span·class="w">
184 ··········</span><span·class="p"·data-group-id="7294648431-69">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-70">[</span><span·class="p"·data-group-id="7294648431-71">{</span><span·class="s">&quot;State&quot;</span><span·class="p">,</span><span·class="w">184 ··········</span><span·class="p"·data-group-id="1624062374-69">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-70">[</span><span·class="p"·data-group-id="1624062374-71">{</span><span·class="s">&quot;State&quot;</span><span·class="p">,</span><span·class="w">
185 ··················</span><span·class="p"·data-group-id="7294648431-72">{</span><span·class="ss">locked</span><span·class="p">,</span><span·class="p"·data-group-id="7294648431-73">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·247,·SHA:·7c3ba1dc3ab0d600a0438d1ec5664646320aa6e12c24e21644579feea741cf5b·...·]-74">]</span><span·class="p">,</span><span·class="w">185 ··················</span><span·class="p"·data-group-id="1624062374-72">{</span><span·class="ss">locked</span><span·class="p">,</span><span·class="p"·data-group-id="1624062374-73">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·247,·SHA:·ef8e795d714b4e3095a2d11810fc6f6e6e51c970b857455bc8fc9ac1c5d874c8·...·]-74">]</span><span·class="p">,</span><span·class="w">
186 ····························</span><span·class="nb">length</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">buttons</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7294648431-75">[</span><span·class="p"·data-group-id="7294648431-75">]</span><span·class="p"·data-group-id="7294648431-73">}</span><span·class="p"·data-group-id="7294648431-72">}</span><span·class="p"·data-group-id="7294648431-71">}</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·240,·SHA:·51814c40a86a51762a66908725ded7f2f79291bcc7b53f4ad7f0f27436eec913·...·]-45">}</span></code></pre><h2·id="special-processes"·class="section-heading">186 ····························</span><span·class="nb">length</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">buttons</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1624062374-75">[</span><span·class="p"·data-group-id="1624062374-75">]</span><span·class="p"·data-group-id="1624062374-73">}</span><span·class="p"·data-group-id="1624062374-72">}</span><span·class="p"·data-group-id="1624062374-71">}</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·240,·SHA:·687fa971df4bdb524d63adddacbdb36b166c9953fcabe8d21113e406b563df40·...·]-45">}</span></code></pre><h2·id="special-processes"·class="section-heading">
187 ··<a·href="#special-processes"·class="hover-link">187 ··<a·href="#special-processes"·class="hover-link">
188 ····<i·class="ri-link-m"·aria-hidden="true"></i>188 ····<i·class="ri-link-m"·aria-hidden="true"></i>
189 ··</a>189 ··</a>
190 ··<span·class="text">Special·Processes</span>190 ··<span·class="text">Special·Processes</span>
191 </h2>191 </h2>
192 <p>This·section·describes·how·to·write·a·process·that·complies·to·the·OTP·design192 <p>This·section·describes·how·to·write·a·process·that·complies·to·the·OTP·design
193 principles,·without·using·a·standard·behaviour.·Such·a·process·is·to:</p><ul><li>Be·started·in·a·way·that·makes·the·process·fit·into·a·supervision·tree</li><li>Support·the·<code·class="inline">sys</code>·<a·href="spec_proc.html#debug">debug·facilities</a></li><li>Take·care·of·<a·href="spec_proc.html#msg">system·messages</a>.</li></ul><p>System·messages·are·messages·with·a·special·meaning,·used·in·the·supervision193 principles,·without·using·a·standard·behaviour.·Such·a·process·is·to:</p><ul><li>Be·started·in·a·way·that·makes·the·process·fit·into·a·supervision·tree</li><li>Support·the·<code·class="inline">sys</code>·<a·href="spec_proc.html#debug">debug·facilities</a></li><li>Take·care·of·<a·href="spec_proc.html#msg">system·messages</a>.</li></ul><p>System·messages·are·messages·with·a·special·meaning,·used·in·the·supervision
Offset 198, 238 lines modifiedOffset 198, 238 lines modified
198 ··<a·href="#example"·class="hover-link">198 ··<a·href="#example"·class="hover-link">
199 ····<i·class="ri-link-m"·aria-hidden="true"></i>199 ····<i·class="ri-link-m"·aria-hidden="true"></i>
200 ··</a>200 ··</a>
201 ··<span·class="text">Example</span>201 ··<span·class="text">Example</span>
202 </h3>202 </h3>
203 <p>Here·follows·the·simple·server·from203 <p>Here·follows·the·simple·server·from
204 <a·href="design_principles.html#ch1">Overview</a>,204 <a·href="design_principles.html#ch1">Overview</a>,
205 implemented·using·<code·class="inline">sys</code>·and·<code·class="inline">proc_lib</code>·to·fit·into·a·supervision·tree:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4076838488-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="4076838488-1">)</span><span·class="p">.</span><span·class="w">205 implemented·using·<code·class="inline">sys</code>·and·<code·class="inline">proc_lib</code>·to·fit·into·a·supervision·tree:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8600011491-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="8600011491-1">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4076838488-2">(</span><span·class="p"·data-group-id="4076838488-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4076838488-3">]</span><span·class="p"·data-group-id="4076838488-2">)</span><span·class="p">.</span><span·class="w">206 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8600011491-2">(</span><span·class="p"·data-group-id="8600011491-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8600011491-3">]</span><span·class="p"·data-group-id="8600011491-2">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4076838488-4">(</span><span·class="p"·data-group-id="4076838488-5">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·45e28ebb1ab447c7c62e2b37fd02cded17c40715b86326f808b6aa5e6bf9e914·...·]-4">)</span><span·class="p">.</span><span·class="w">207 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8600011491-4">(</span><span·class="p"·data-group-id="8600011491-5">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">free</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·116,·SHA:·1fb71b5c2f2053de4e5bb60a24ea93751a56d8205ef3dbf76ce65d026eb1612c·...·]-4">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4076838488-6">(</span><span·class="p"·data-group-id="4076838488-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4076838488-7">]</span><span·class="p"·data-group-id="4076838488-6">)</span><span·class="p">.</span><span·class="w">208 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8600011491-6">(</span><span·class="p"·data-group-id="8600011491-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8600011491-7">]</span><span·class="p"·data-group-id="8600011491-6">)</span><span·class="p">.</span><span·class="w">
209 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4076838488-8">(</span><span·class="p"·data-group-id="4076838488-9">[</span><span·class="ss">system_continue</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">system_terminate</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">209 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8600011491-8">(</span><span·class="p"·data-group-id="8600011491-9">[</span><span·class="ss">system_continue</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">system_terminate</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">
210 ·········</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">210 ·········</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
211 ·········</span><span·class="ss">system_get_state</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">system_replace_state</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="4076838488-9">]</span><span·class="p"·data-group-id="4076838488-8">)</span><span·class="p">.</span><span·class="w">211 ·········</span><span·class="ss">system_get_state</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">system_replace_state</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="8600011491-9">]</span><span·class="p"·data-group-id="8600011491-8">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="4076838488-10">(</span><span·class="p"·data-group-id="4076838488-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="8600011491-10">(</span><span·class="p"·data-group-id="8600011491-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4076838488-11">(</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-12">[</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·03da1e81087756c2f8fd9ab39ffe1b2d7e10db7878c2a2daace77105df81364c·...·]-11">)</span><span·class="p">.</span><span·class="w">213 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="8600011491-11">(</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-12">[</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·8835d2a7882f8f77eb346a7c328f67fb49afe4cc1b2e955921dcf03679009c5d·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
214 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="4076838488-14">(</span><span·class="p"·data-group-id="4076838488-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8600011491-14">(</span><span·class="p"·data-group-id="8600011491-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····</span><span·class="ss">ch4</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-15">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4076838488-16">(</span><span·class="p"·data-group-id="4076838488-16">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9e353d4487d0e2ada377f52042e6100c8983b2f552b55205e5ec5a70a96dc2c7·...·]-15">}</span><span·class="p">,</span><span·class="w">215 ····</span><span·class="ss">ch4</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-15">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8600011491-16">(</span><span·class="p"·data-group-id="8600011491-16">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·eeed2793273614fcbfabb60c61c721b98b0902ba12c3a6494c1cfbf97f8d2df0·...·]-15">}</span><span·class="p">,</span><span·class="w">
216 ····</span><span·class="k">receive</span><span·class="w">216 ····</span><span·class="k">receive</span><span·class="w">
217 ········</span><span·class="p"·data-group-id="4076838488-17">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="4076838488-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 ········</span><span·class="p"·data-group-id="8600011491-17">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Res</span><span·class="p"·data-group-id="8600011491-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 ············</span><span·class="n">Res</span><span·class="w">218 ············</span><span·class="n">Res</span><span·class="w">
219 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">219 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
220 </span><span·class="nf">free</span><span·class="p"·data-group-id="4076838488-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="4076838488-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">220 </span><span·class="nf">free</span><span·class="p"·data-group-id="8600011491-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="8600011491-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
221 ····</span><span·class="ss">ch4</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-19">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="4076838488-19">}</span><span·class="p">,</span><span·class="w">221 ····</span><span·class="ss">ch4</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-19">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="8600011491-19">}</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">222 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">init</span><span·class="p"·data-group-id="4076838488-20">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="4076838488-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 </span><span·class="nf">init</span><span·class="p"·data-group-id="8600011491-20">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="8600011491-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="4076838488-21">(</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="4076838488-22">(</span><span·class="p"·data-group-id="4076838488-22">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·5751919b97b05f9fd821ae8406e508998d74658967602f27c632fa05b582b3f9·...·]-21">)</span><span·class="p">,</span><span·class="w">224 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="8600011491-21">(</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="8600011491-22">(</span><span·class="p"·data-group-id="8600011491-22">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·06102c74340341e9117086e786f5fd570a0b4a4cfddf5b15125428db714ed422·...·]-21">)</span><span·class="p">,</span><span·class="w">
225 ····</span><span·class="n">Chs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="4076838488-23">(</span><span·class="p"·data-group-id="4076838488-23">)</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="n">Chs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">channels</span><span·class="p"·data-group-id="8600011491-23">(</span><span·class="p"·data-group-id="8600011491-23">)</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="n">Deb</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">debug_options</span><span·class="p"·data-group-id="4076838488-24">(</span><span·class="p"·data-group-id="4076838488-25">[</span><span·class="p"·data-group-id="4076838488-25">]</span><span·class="p"·data-group-id="4076838488-24">)</span><span·class="p">,</span><span·class="w">226 ····</span><span·class="n">Deb</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">debug_options</span><span·class="p"·data-group-id="8600011491-24">(</span><span·class="p"·data-group-id="8600011491-25">[</span><span·class="p"·data-group-id="8600011491-25">]</span><span·class="p"·data-group-id="8600011491-24">)</span><span·class="p">,</span><span·class="w">
227 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_ack</span><span·class="p"·data-group-id="4076838488-26">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-27">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·a3c9d1ce442309a24133813b4d77e924aa3a277d75114de812abffb40d0382b7·...·]-26">)</span><span·class="p">,</span><span·class="w">227 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_ack</span><span·class="p"·data-group-id="8600011491-26">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-27">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·e8d24e20ddb354198556dce8ef5e5e968f2e40721094fdd6b531c5d5b264d386·...·]-26">)</span><span·class="p">,</span><span·class="w">
228 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4076838488-29">(</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb</span><span·class="p"·data-group-id="4076838488-29">)</span><span·class="p">.</span><span·class="w">228 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8600011491-29">(</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb</span><span·class="p"·data-group-id="8600011491-29">)</span><span·class="p">.</span><span·class="w">
  
229 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4076838488-30">(</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb</span><span·class="p"·data-group-id="4076838488-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 </span><span·class="nf">loop</span><span·class="p"·data-group-id="8600011491-30">(</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb</span><span·class="p"·data-group-id="8600011491-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ····</span><span·class="k">receive</span><span·class="w">230 ····</span><span·class="k">receive</span><span·class="w">
231 ········</span><span·class="p"·data-group-id="4076838488-31">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="4076838488-31">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ········</span><span·class="p"·data-group-id="8600011491-31">{</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="8600011491-31">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ············</span><span·class="n">Deb2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_debug</span><span·class="p"·data-group-id="4076838488-32">(</span><span·class="n">Deb</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">ch4</span><span·class="p">:</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">232 ············</span><span·class="n">Deb2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_debug</span><span·class="p"·data-group-id="8600011491-32">(</span><span·class="n">Deb</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">ch4</span><span·class="p">:</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
233 ····································</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-33">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="4076838488-33">}</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·39fe0acffa3eab25a4457c23ba5738699dc10d8cd762403167d901db11622ff8·...·]-32">)</span><span·class="p">,</span><span·class="w">233 ····································</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-33">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="8600011491-33">}</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·324cead34fc5468cc85bfcda8b928f2466c3dd0fb1351a12f07410ae37af617c·...·]-32">)</span><span·class="p">,</span><span·class="w">
234 ············</span><span·class="p"·data-group-id="4076838488-34">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="4076838488-34">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·e2a561e3e32918e5a07ed03593a5330ba2b9f254a16016b193ee38ccc32fab3f·...·]-35">)</span><span·class="p">,</span><span·class="w">234 ············</span><span·class="p"·data-group-id="8600011491-34">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs2</span><span·class="p"·data-group-id="8600011491-34">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·47c890b19ab668eba4538e12cebca3681819b384bc4cc143b814f74a284c8cbe·...·]-35">)</span><span·class="p">,</span><span·class="w">
235 ············</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-36">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="4076838488-36">}</span><span·class="p">,</span><span·class="w">235 ············</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-36">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="8600011491-36">}</span><span·class="p">,</span><span·class="w">
236 ············</span><span·class="n">Deb3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_debug</span><span·class="p"·data-group-id="4076838488-37">(</span><span·class="n">Deb2</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">ch4</span><span·class="p">:</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">236 ············</span><span·class="n">Deb3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_debug</span><span·class="p"·data-group-id="8600011491-37">(</span><span·class="n">Deb2</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">ch4</span><span·class="p">:</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
237 ····································</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-38">{</span><span·class="ss">out</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-39">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><spa[·...·truncated·by·diffoscope;·len:·220,·SHA:·7815b2237e56b90d3e0b42359528cabd99f5a5f5a864734d590aa2c23787be28·...·]-37">)</span><span·class="p">,</span><span·class="w">237 ····································</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-38">{</span><span·class="ss">out</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-39">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><spa[·...·truncated·by·diffoscope;·len:·220,·SHA:·e599429b0ecab06f0ff3cddd6708e5e2d8d5277147b9cfb676741d6ef8f7371b·...·]-37">)</span><span·class="p">,</span><span·class="w">
238 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="4076838488-40">(</span><span·class="n">Chs2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb3</span><span·class="p"·data-group-id="4076838488-40">)</span><span·class="p">;</span><span·class="w">238 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8600011491-40">(</span><span·class="n">Chs2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb3</span><span·class="p"·data-group-id="8600011491-40">)</span><span·class="p">;</span><span·class="w">
239 ········</span><span·class="p"·data-group-id="4076838488-41">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="4076838488-41">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 ········</span><span·class="p"·data-group-id="8600011491-41">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span·class="p"·data-group-id="8600011491-41">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ············</span><span·class="n">Deb2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_debug</span><span·class="p"·data-group-id="4076838488-42">(</span><span·class="n">Deb</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">ch4</span><span·class="p">:</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">240 ············</span><span·class="n">Deb2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_debug</span><span·class="p"·data-group-id="8600011491-42">(</span><span·class="n">Deb</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">ch4</span><span·class="p">:</span><span·class="ss">write_debug</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
241 ····································</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-43">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4076838488-44">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·a953f70ec41f653d6e4f9c2954c55067752f96fb19cc564cd398ad8001145094·...·]-42">)</span><span·class="p">,</span><span·class="w">241 ····································</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-43">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600011491-44">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·545cff04f9eaadab8e5ef45402c5df69fe690172a715fcdd13795e9bebab6354·...·]-42">)</span><span·class="p">,</span><span·class="w">
242 ············</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="4076838488-45">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="4076838488-45">)</span><span·class="p">,</span><span·class="w">242 ············</span><span·class="n">Chs2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="8600011491-45">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Chs</span><span·class="p"·data-group-id="8600011491-45">)</span><span·class="p">,</span><span·class="w">
243 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="4076838488-46">(</span><span·class="n">Chs2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb2</span><span·class="p"·data-group-id="4076838488-46">)</span><span·class="p">;</span><span·class="w">243 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8600011491-46">(</span><span·class="n">Chs2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Deb2</span><span·class="p"·data-group-id="8600011491-46">)</span><span·class="p">;</span><span·class="w">
  
244 ········</span><span·class="p"·data-group-id="4076838488-47">{</span><span·class="ss">system</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p"·data-group-id="4076838488-47">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">244 ········</span><span·class="p"·data-group-id="8600011491-47">{</span><span·class="ss">system</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p"·data-group-id="8600011491-47">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
245 ············</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_system_msg</span><span·class="p"·data-group-id="4076838488-48">(</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">245 ············</span><span·class="nc">sys</span><span·class="p">:</span><span·class="nf">handle_system_msg</span><span·class="p"·data-group-id="8600011491-48">(</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 121643/200903 bytes (60.55%) of diff not shown.
368 KB
./usr/share/doc/erlang-doc/html/doc/system/statem.html
    
Offset 124, 15 lines modifiedOffset 124, 15 lines modified
124 </h2>124 </h2>
125 <p>Established·Automata·Theory·does·not·deal·much·with·how·a·<em>state·transition</em>125 <p>Established·Automata·Theory·does·not·deal·much·with·how·a·<em>state·transition</em>
126 is·triggered,·but·assumes·that·the·output·is·a·function·of·the·input126 is·triggered,·but·assumes·that·the·output·is·a·function·of·the·input
127 (and·the·state)·and·that·they·are·some·kind·of·values.</p><p>For·an·Event-Driven·State·Machine,·the·input·is·an·<em>event</em>·that·triggers127 (and·the·state)·and·that·they·are·some·kind·of·values.</p><p>For·an·Event-Driven·State·Machine,·the·input·is·an·<em>event</em>·that·triggers
128 a·<em>state·transition</em>·and·the·output·is·actions·executed·during128 a·<em>state·transition</em>·and·the·output·is·actions·executed·during
129 the·<em>state·transition</em>.··Analogously·to·the·mathematical·model129 the·<em>state·transition</em>.··Analogously·to·the·mathematical·model
130 of·a·Finite·State·Machine,·it·can·be·described·as·a·set·of·relations130 of·a·Finite·State·Machine,·it·can·be·described·as·a·set·of·relations
131 of·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">State</span><span·class="p"·data-group-id="6368309531-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="6368309531-1">)</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Event</span><span·class="p"·data-group-id="6368309531-2">(</span><sp[·...·truncated·by·diffoscope;·len:·534,·SHA:·dcf1e10fd925cf8b231f0c3d7f427f9550a00295061d4e5edc2a87de671af6d9·...·]-4">)</span></code></pre><p>These·relations·are·interpreted·as·follows:·if·we·are·in·state·<code·class="inline">S</code>,131 of·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">State</span><span·class="p"·data-group-id="9623885923-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="9623885923-1">)</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Event</span><span·class="p"·data-group-id="9623885923-2">(</span><sp[·...·truncated·by·diffoscope;·len:·534,·SHA:·7c55f6e692aa7c6186051abc513eb118e7f5f71c5b32541ac3e27a9dea795648·...·]-4">)</span></code></pre><p>These·relations·are·interpreted·as·follows:·if·we·are·in·state·<code·class="inline">S</code>,
132 and·event·<code·class="inline">E</code>·occurs,·we·are·to·perform·actions·<code·class="inline">A</code>,·and·make·a·transition132 and·event·<code·class="inline">E</code>·occurs,·we·are·to·perform·actions·<code·class="inline">A</code>,·and·make·a·transition
133 to·state·<code·class="inline">S'</code>.··Notice·that·<code·class="inline">S'</code>·can·be·equal·to·<code·class="inline">S</code>,133 to·state·<code·class="inline">S'</code>.··Notice·that·<code·class="inline">S'</code>·can·be·equal·to·<code·class="inline">S</code>,
134 and·that·<code·class="inline">A</code>·can·be·empty.</p><p>In·<code·class="inline">gen_statem</code>·we·define·a·<em>state·change</em>·as·a·<em>state·transition</em>·in·which·the134 and·that·<code·class="inline">A</code>·can·be·empty.</p><p>In·<code·class="inline">gen_statem</code>·we·define·a·<em>state·change</em>·as·a·<em>state·transition</em>·in·which·the
135 new·state·<code·class="inline">S'</code>·is·different·from·the·current·state·<code·class="inline">S</code>,·where·&quot;different&quot;·means135 new·state·<code·class="inline">S'</code>·is·different·from·the·current·state·<code·class="inline">S</code>,·where·&quot;different&quot;·means
136 Erlang's·strict·inequality:·<code·class="inline">=/=</code>·also·known·as·&quot;does·not·match&quot;.·<code·class="inline">gen_statem</code>136 Erlang's·strict·inequality:·<code·class="inline">=/=</code>·also·known·as·&quot;does·not·match&quot;.·<code·class="inline">gen_statem</code>
137 does·more·things·during·<em>state·changes</em>·than·during·other·<em>state·transitions</em>.</p><p>As·<code·class="inline">A</code>·and·<code·class="inline">S'</code>·depend·only·on·<code·class="inline">S</code>·and·<code·class="inline">E</code>,·the·kind·of·state·machine·described137 does·more·things·during·<em>state·changes</em>·than·during·other·<em>state·transitions</em>.</p><p>As·<code·class="inline">A</code>·and·<code·class="inline">S'</code>·depend·only·on·<code·class="inline">S</code>·and·<code·class="inline">E</code>,·the·kind·of·state·machine·described
138 here·is·a·Mealy·machine·(see,·for·example,·the·Wikipedia·article138 here·is·a·Mealy·machine·(see,·for·example,·the·Wikipedia·article
Offset 405, 20 lines modifiedOffset 405, 20 lines modified
405 ··</a>405 ··</a>
406 ··<span·class="text">State·Enter·Calls</span>406 ··<span·class="text">State·Enter·Calls</span>
407 </h2>407 </h2>
408 <p>The·<code·class="inline">gen_statem</code>·behaviour·can,·if·this·is·enabled,·regardless·of·<em>callback408 <p>The·<code·class="inline">gen_statem</code>·behaviour·can,·if·this·is·enabled,·regardless·of·<em>callback
409 mode</em>,·automatically·call·the·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#t:state_enter/0"><em>state·callback</em></a>409 mode</em>,·automatically·call·the·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#t:state_enter/0"><em>state·callback</em></a>
410 with·special·arguments·whenever·the·state·changes,·so·you·can·write410 with·special·arguments·whenever·the·state·changes,·so·you·can·write
411 state·enter·actions·near·the·rest·of·the·<em>state·transition</em>·rules.411 state·enter·actions·near·the·rest·of·the·<em>state·transition</em>·rules.
412 It·typically·looks·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">StateName</span><span·class="p"·data-group-id="6730683376-1">(</span><span·class="ss">enter</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OldState</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="6730683376-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">412 It·typically·looks·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">StateName</span><span·class="p"·data-group-id="8436236717-1">(</span><span·class="ss">enter</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OldState</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="8436236717-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
413 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">enter</span><span·class="w">·</span><span·class="ss">actions</span><span·class="w">·</span><span·class="ss">here</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">413 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">state</span><span·class="w">·</span><span·class="ss">enter</span><span·class="w">·</span><span·class="ss">actions</span><span·class="w">·</span><span·class="ss">here</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
414 ····</span><span·class="p"·data-group-id="6730683376-2">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewData</span><span·class="p"·data-group-id="6730683376-2">}</span><span·class="p">;</span><span·class="w">414 ····</span><span·class="p"·data-group-id="8436236717-2">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewData</span><span·class="p"·data-group-id="8436236717-2">}</span><span·class="p">;</span><span·class="w">
415 </span><span·class="n">StateName</span><span·class="p"·data-group-id="6730683376-3">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="6730683376-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">415 </span><span·class="n">StateName</span><span·class="p"·data-group-id="8436236717-3">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="8436236717-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
416 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">actions</span><span·class="w">·</span><span·class="ss">here</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">416 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">actions</span><span·class="w">·</span><span·class="ss">here</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
417 ····</span><span·class="p"·data-group-id="6730683376-4">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewStateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewData</span><span·class="p"·data-group-id="67306833[·...·truncated·by·diffoscope;·len:·2,·SHA:·f74efabef12ea619e30b79bddef89cffa9dda494761681ca862cff2871a85980·...·]-4">}</span><span·class="p">.</span></code></pre><p>Since·the·<em>state·enter·call</em>·is·not·an·event·there·are·restrictions·on·the417 ····</span><span·class="p"·data-group-id="8436236717-4">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewStateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewData</span><span·class="p"·data-group-id="84362367[·...·truncated·by·diffoscope;·len:·2,·SHA:·4523540f1504cd17100c4835e85b7eefd49911580f8efff0599a8f283be6b9e3·...·]-4">}</span><span·class="p">.</span></code></pre><p>Since·the·<em>state·enter·call</em>·is·not·an·event·there·are·restrictions·on·the
418 allowed·return·value·and·state·<a·href="#transition-actions"><em>transition·actions</em></a>.418 allowed·return·value·and·state·<a·href="#transition-actions"><em>transition·actions</em></a>.
419 You·must·not·change·the·state,·<a·href="#postponing-events">postpone</a>·this·non-event,419 You·must·not·change·the·state,·<a·href="#postponing-events">postpone</a>·this·non-event,
420 <a·href="#inserted-events">insert·any·events</a>,·or·change·the420 <a·href="#inserted-events">insert·any·events</a>,·or·change·the
421 <a·href="#callback-module"><em>callback·module</em></a>.</p><p>The·first·state·that·is·entered·after·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#c:init/1"><code·class="inline">gen_statem:init/1</code></a>·will·get421 <a·href="#callback-module"><em>callback·module</em></a>.</p><p>The·first·state·that·is·entered·after·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#c:init/1"><code·class="inline">gen_statem:init/1</code></a>·will·get
422 a·<em>state·enter·call</em>·with·<code·class="inline">OldState</code>·equal·to·the·current·state.</p><p>You·may·repeat·the·<em>state·enter·call</em>·using·the·<code·class="inline">{repeat_state,...}</code>·return422 a·<em>state·enter·call</em>·with·<code·class="inline">OldState</code>·equal·to·the·current·state.</p><p>You·may·repeat·the·<em>state·enter·call</em>·using·the·<code·class="inline">{repeat_state,...}</code>·return
423 value·from·the·<a·href="#state-callback"><em>state·callback</em></a>.·In·this·case423 value·from·the·<a·href="#state-callback"><em>state·callback</em></a>.·In·this·case
424 <code·class="inline">OldState</code>·will·also·be·equal·to·the·current·state.</p><p>Depending·on·how·your·state·machine·is·specified,·this·can·be·a·very·useful424 <code·class="inline">OldState</code>·will·also·be·equal·to·the·current·state.</p><p>Depending·on·how·your·state·machine·is·specified,·this·can·be·a·very·useful
Offset 499, 72 lines modifiedOffset 499, 72 lines modified
  
499 ····locked······--&gt;·check_code·:·{button, Button}\n* Collect·Buttons499 ····locked······--&gt;·check_code·:·{button, Button}\n* Collect·Buttons
500 ····check_code··--&gt;·locked·····:·Incorrect·code500 ····check_code··--&gt;·locked·····:·Incorrect·code
501 ····check_code··--&gt;·open·······:·Correct·code\n* do_unlock()\n* Clear·Buttons\n* Set·state_timeout·10·s501 ····check_code··--&gt;·open·······:·Correct·code\n* do_unlock()\n* Clear·Buttons\n* Set·state_timeout·10·s
  
502 ····open········--&gt;·open···:·{button, Digit}502 ····open········--&gt;·open···:·{button, Digit}
503 ····open········--&gt;·locked·:·state_timeout\n* do_lock()</code></pre><p>This·code·lock·state·machine·can·be·implemented·using·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html"><code·class="inline">gen_statem</code></a>·with503 ····open········--&gt;·locked·:·state_timeout\n* do_lock()</code></pre><p>This·code·lock·state·machine·can·be·implemented·using·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html"><code·class="inline">gen_statem</code></a>·with
504 the·following·<em>callback·module</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4425269045-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="4425269045-1">)</span><span·class="p">.</span><span·class="w">504 the·following·<em>callback·module</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6638808292-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="6638808292-1">)</span><span·class="p">.</span><span·class="w">
505 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="4425269045-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="4425269045-2">)</span><span·class="p">.</span><span·class="w">505 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="6638808292-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="6638808292-2">)</span><span·class="p">.</span><span·class="w">
506 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4425269045-3">(</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="4425269045-3">)</span><span·class="p">.</span><span·class="w">506 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="6638808292-3">(</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="6638808292-3">)</span><span·class="p">.</span><span·class="w">
507 </span><span·class="w">507 </span><span·class="w">
508 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4425269045-4">(</span><span·class="p"·data-group-id="4425269045-5">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4425269045-5">]</span><span·class="p"·data-group-id="4425269045-4">)</span><span·class="p">.</span><span·class="w"> 
509 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4425269045-6">(</span><span·class="p"·data-group-id="4425269045-7">[</span><span·class="ss">button</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4425269045-7">]</span><span·class="p"·data-group-id="4425269045-6">)</span><span·class="p">.</span><span·class="w">508 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6638808292-4">(</span><span·class="p"·data-group-id="6638808292-5">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6638808292-5">]</span><span·class="p"·data-group-id="6638808292-4">)</span><span·class="p">.</span><span·class="w">
 509 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6638808292-6">(</span><span·class="p"·data-group-id="6638808292-7">[</span><span·class="ss">button</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6638808292-7">]</span><span·class="p"·data-group-id="6638808292-6">)</span><span·class="p">.</span><span·class="w">
510 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4425269045-8">(</span><span·class="p"·data-group-id="4425269045-9">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">callback_mode</span><span·class="p">/</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·206,·SHA:·57df77b560566daf740e14e152ad7b09d29da05db8cbd13b8f391c26b8ac4056·...·]-8">)</span><span·class="p">.</span><span·class="w">510 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6638808292-8">(</span><span·class="p"·data-group-id="6638808292-9">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">callback_mode</span><span·class="p">/</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·206,·SHA:·be84e464b8f9480d1abddbb7babced0c0324a8f2b53ca6bf62c60aadb127d99f·...·]-8">)</span><span·class="p">.</span><span·class="w">
511 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4425269045-10">(</span><span·class="p"·data-group-id="4425269045-11">[</span><span·class="ss">locked</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">open</span><span·class="p">/</span><span·class="mi">3</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·390fed7d68ea1b3252af3dedb11dc8fc25d98f25892660b842210d573ed55057·...·]-10">)</span><span·class="p">.</span><span·class="w">511 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6638808292-10">(</span><span·class="p"·data-group-id="6638808292-11">[</span><span·class="ss">locked</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">open</span><span·class="p">/</span><span·class="mi">3</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·1070d90c1e0d4ad009744a080a75c553c23823021e575a01e87a73dd19e37b92·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
512 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="4425269045-12">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4425269045-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">512 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="6638808292-12">(</span><span·class="n">Code</span><span·class="p"·data-group-id="6638808292-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
513 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4425269045-13">(</span><span·class="p"·data-group-id="4425269045-14">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="4425269045-14">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·30851ff8dcc837ffb8d60ef061aeccf4f3ff04dbbe3c5c6579ba73d62f667ac4·...·]-13">)</span><span·class="p">.</span><span·class="w">513 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="6638808292-13">(</span><span·class="p"·data-group-id="6638808292-14">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="6638808292-14">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·586a133a07e6a63115fda7bcbc8fe3c12099f792bdccd9207a56da7e1a139447·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
514 </span><span·class="nf">button</span><span·class="p"·data-group-id="4425269045-16">(</span><span·class="n">Button</span><span·class="p"·data-group-id="4425269045-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">514 </span><span·class="nf">button</span><span·class="p"·data-group-id="6638808292-16">(</span><span·class="n">Button</span><span·class="p"·data-group-id="6638808292-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
515 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="4425269045-17">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4425269045-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·0d20eb2e8307019d9e4e28090d189a674581e7bff2ea25474e6433f74cee95ff·...·]-17">)</span><span·class="p">.</span><span·class="w">515 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="6638808292-17">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6638808292-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·fc1f7f76b3d23f3043eced8f4ba5071b1ef0bd7c95776ad1dd09eac014a0a576·...·]-17">)</span><span·class="p">.</span><span·class="w">
  
516 </span><span·class="nf">init</span><span·class="p"·data-group-id="4425269045-19">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4425269045-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">516 </span><span·class="nf">init</span><span·class="p"·data-group-id="6638808292-19">(</span><span·class="n">Code</span><span·class="p"·data-group-id="6638808292-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
517 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="4425269045-20">(</span><span·class="p"·data-group-id="4425269045-20">)</span><span·class="p">,</span><span·class="w">517 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="6638808292-20">(</span><span·class="p"·data-group-id="6638808292-20">)</span><span·class="p">,</span><span·class="w">
518 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4425269045-21">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">length</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·522,·SHA:·bc37adf09d45f73fef160e69bb986c14cd5ce23f81ee4d2fef9005aac4e679db·...·]-21">}</span><span·class="p">,</span><span·class="w">518 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6638808292-21">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">length</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·522,·SHA:·10efedaa85628a9c9b62a8b1a9e8385b81f554d310e8b6c783234707d50e617c·...·]-21">}</span><span·class="p">,</span><span·class="w">
519 ····</span><span·class="p"·data-group-id="4425269045-24">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="4425269045-24">}</span><span·class="p">.</span><span·class="w">519 ····</span><span·class="p"·data-group-id="6638808292-24">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="6638808292-24">}</span><span·class="p">.</span><span·class="w">
  
520 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="4425269045-25">(</span><span·class="p"·data-group-id="4425269045-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">520 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="6638808292-25">(</span><span·class="p"·data-group-id="6638808292-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
521 ····</span><span·class="ss">state_functions</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">locked</span><span·class="p"·data-group-id="1715050643-1">(</span><span·class="w">521 ····</span><span·class="ss">state_functions</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">locked</span><span·class="p"·data-group-id="2718036815-1">(</span><span·class="w">
522 ··</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1715050643-2">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</span><span·class="p"·data-group-id="1715050643-2">}</span><span·class="p">,</span><span·class="w">522 ··</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2718036815-2">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</span><span·class="p"·data-group-id="2718036815-2">}</span><span·class="p">,</span><span·class="w">
523 ··</span><span·class="p"·data-group-id="1715050643-3">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">length</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·450,·SHA:·97a866d3d59d81cf7bdc87f27b8f783df5c89705ec9d482a949351b8390c8ccd·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">523 ··</span><span·class="p"·data-group-id="2718036815-3">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">length</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·450,·SHA:·0919a2ab3ca930572ae7e69a2c812c8cbf6d8ae78ba20a4c3e4053201c353aef·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
524 ····</span><span·class="n">NewButtons</span><span·class="w">·</span><span·class="o">=</span><span·class="w">524 ····</span><span·class="n">NewButtons</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
525 ········</span><span·class="k">if</span><span·class="w">525 ········</span><span·class="k">if</span><span·class="w">
526 ············</span><span·class="nf">length</span><span·class="p"·data-group-id="1715050643-4">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="1715050643-4">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="n">Length</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">526 ············</span><span·class="nf">length</span><span·class="p"·data-group-id="2718036815-4">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="2718036815-4">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="n">Length</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
527 ················</span><span·class="n">Buttons</span><span·class="p">;</span><span·class="w">527 ················</span><span·class="n">Buttons</span><span·class="p">;</span><span·class="w">
528 ············</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">528 ············</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
529 ················</span><span·class="nf">tl</span><span·class="p"·data-group-id="1715050643-5">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="1715050643-5">)</span><span·class="w">529 ················</span><span·class="nf">tl</span><span·class="p"·data-group-id="2718036815-5">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="2718036815-5">)</span><span·class="w">
530 ········</span><span·class="k">end</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="1715050643-6">[</span><span·class="n">Button</span><span·class="p"·data-group-id="1715050643-6">]</span><span·class="p">,</span><span·class="w">530 ········</span><span·class="k">end</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="2718036815-6">[</span><span·class="n">Button</span><span·class="p"·data-group-id="2718036815-6">]</span><span·class="p">,</span><span·class="w">
531 ····</span><span·class="k">if</span><span·class="w">531 ····</span><span·class="k">if</span><span·class="w">
532 ········</span><span·class="n">NewButtons</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Code</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%·Correct</span><span·class="w">532 ········</span><span·class="n">NewButtons</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Code</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%·Correct</span><span·class="w">
533 »       ····</span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="1715050643-7">(</span><span·class="p"·data-group-id="1715050643-7">)</span><span·class="p">,</span><span·class="w">533 »       ····</span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="2718036815-7">(</span><span·class="p"·data-group-id="2718036815-7">)</span><span·class="p">,</span><span·class="w">
534 ············</span><span·class="p"·data-group-id="1715050643-8">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="1715050643-9">#{</[·...·truncated·by·diffoscope;·len:·258,·SHA:·fc03758d118348ab7bb4fbf5ae5a61936ef9e7ec065cbbca70fcdc47ecb9d9c5·...·]-9">}</span><span·class="p">,</span><span·class="w">534 ············</span><span·class="p"·data-group-id="2718036815-8">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="2718036815-9">#{</[·...·truncated·by·diffoscope;·len:·258,·SHA:·8c980b6ea1453d0697930cac0ffae0c1044ab27743c49c2fdec4bffbfa6d9190·...·]-9">}</span><span·class="p">,</span><span·class="w">
535 ·············</span><span·class="p"·data-group-id="1715050643-11">[</span><span·class="p"·data-group-id="1715050643-12">{</span><span·class="ss">state_timeout</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">_</span><span·class="mi">000</span><span·class="p">,</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·160,·SHA:·1a8e01369ebf90b56e79fcce3b39ed614f18c95ef366abcafe5e7c12d2c90101·...·]-8">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·Time·in·milliseconds</span><span·class="w">535 ·············</span><span·class="p"·data-group-id="2718036815-11">[</span><span·class="p"·data-group-id="2718036815-12">{</span><span·class="ss">state_timeout</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">_</span><span·class="mi">000</span><span·class="p">,</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·160,·SHA:·56d3702286c8c4557c8977bba46ebd882445f3701436101eaab957959671bd60·...·]-8">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·Time·in·milliseconds</span><span·class="w">
536 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%·Incomplete·|·Incorrect</span><span·class="w">536 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%·Incomplete·|·Incorrect</span><span·class="w">
537 ············</span><span·class="p"·data-group-id="1715050643-13">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="1715050643-14">[·...·truncated·by·diffoscope;·len:·241,·SHA:·05cd4c584d5d6dd497eb2fe5ed1642aa892ef86066bc5c87c1b810b12fa36b9b·...·]-13">}</span><span·class="w">537 ············</span><span·class="p"·data-group-id="2718036815-13">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="2718036815-14">[·...·truncated·by·diffoscope;·len:·241,·SHA:·f76920378f7def36d2d12ac249b401627588fce2b8846bede893fcfc30d29364·...·]-13">}</span><span·class="w">
538 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">open</span><span·class="p"·data-group-id="5308767863-1">(</span><span·class="ss">state_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lock</span><span·class="p">,</span><span·class="w">··</span><span·class="n">Data</span><span·class="p"·data-group-id="5308767863-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">538 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">open</span><span·class="p"·data-group-id="4402349023-1">(</span><span·class="ss">state_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lock</span><span·class="p">,</span><span·class="w">··</span><span·class="n">Data</span><span·class="p"·data-group-id="4402349023-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
539 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="5308767863-2">(</span><span·class="p"·data-group-id="5308767863-2">)</span><span·class="p">,</span><span·class="w">539 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="4402349023-2">(</span><span·class="p"·data-group-id="4402349023-2">)</span><span·class="p">,</span><span·class="w">
540 ····</span><span·class="p"·data-group-id="5308767863-3">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="5308767863-3">}</span><span·class="p">;</span><span·class="w">540 ····</span><span·class="p"·data-group-id="4402349023-3">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="4402349023-3">}</span><span·class="p">;</span><span·class="w">
541 </span><span·class="nf">open</span><span·class="p"·data-group-id="5308767863-4">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5308767863-5">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·141,·SHA:·805f8cff578f66bbbae102f4222cc875dbf929395775f67aba2ce465220924fa·...·]3-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">541 </span><span·class="nf">open</span><span·class="p"·data-group-id="4402349023-4">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4402349023-5">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·141,·SHA:·113c1eb2e737ed2a91cce4a931b89f62c7eb92cba082e77567aee12eb9f23b15·...·]3-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
542 ····</span><span·class="p"·data-group-id="5308767863-6">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="5308767863-6">}</s[·...·truncated·by·diffoscope;·len:·214,·SHA:·d99328390c060b940b23da109783f974b1b5b49ea88556b8bb64991f3af4a790·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">542 ····</span><span·class="p"·data-group-id="4402349023-6">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="4402349023-6">}</s[·...·truncated·by·diffoscope;·len:·214,·SHA:·da78222288c02138b47c389c4a22d5464fa3870d66a4bb9a633f5cedeb31d341·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
543 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9935058763-2">(</span><span·class="s">&quot;Lock</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9935058763-3">[</span><span·class="p"·data-group-id="9935058763-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·b064e0ecf3e8e8a29f8d0ee1772b22d0a3ff256028738c12a3a10c517f35807c·...·]-2">)</span><span·class="p">.</span><span·class="w">543 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4592296785-2">(</span><span·class="s">&quot;Lock</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4592296785-3">[</span><span·class="p"·data-group-id="4592296785-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·0608f7b276a80c081a539b806ed1557fb23b4f8e60cb468590de6bb7ad58d51d·...·]-2">)</span><span·class="p">.</span><span·class="w">
544 </span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="9935058763-4">(</span><span·class="p"·data-group-id="9935058763-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">544 </span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="4592296785-4">(</span><span·class="p"·data-group-id="4592296785-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
545 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9935058763-5">(</span><span·class="s">&quot;Unlock</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9935058763-6">[</span><span·class="p"·data-group-id="9935058763-6[·...·truncated·by·diffoscope;·len:·51,·SHA:·3585e0dff45e0d927bf1baa84daf926e8bce9676cf4935ab0f11d052c858c6bb·...·]-5">)</span><span·class="p">.</span><span·class="w">545 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4592296785-5">(</span><span·class="s">&quot;Unlock</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4592296785-6">[</span><span·class="p"·data-group-id="4592296785-6[·...·truncated·by·diffoscope;·len:·51,·SHA:·efd0bf0041fcc30a51b0e8eb85ede66ca0a6171b613f32752c4d67618d1606f0·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
546 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="9935058763-7">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Data</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·364af7a2cb669fc06e68133609520a88bd6d9ca3d85d9267855703bdbb59e757·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">546 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="4592296785-7">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Data</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·d29cc35838fc7fc1632297235b7174360ced97271da4182064768fa124be4779·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
547 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=/=</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">·</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="9935058763-8">(</span><span·class="p"·data-group-id="9935058763-8">)</span><span·class="p">,</span><span·class="w">547 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=/=</span><span·class="w">·</span><span·class="ss">locked</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">·</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="4592296785-8">(</span><span·class="p"·data-group-id="4592296785-8">)</span><span·class="p">,</span><span·class="w">
548 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>The·code·is·explained·in·the·next·sections.</p><h2·id="starting-gen_statem"·class="section-heading">548 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>The·code·is·explained·in·the·next·sections.</p><h2·id="starting-gen_statem"·class="section-heading">
549 ··<a·href="#starting-gen_statem"·class="hover-link">549 ··<a·href="#starting-gen_statem"·class="hover-link">
550 ····<i·class="ri-link-m"·aria-hidden="true"></i>550 ····<i·class="ri-link-m"·aria-hidden="true"></i>
551 ··</a>551 ··</a>
552 ··<span·class="text">Starting·gen_statem</span>552 ··<span·class="text">Starting·gen_statem</span>
553 </h2>553 </h2>
554 <p>In·the·example·in·the·previous·section,·<code·class="inline">gen_statem</code>·is·started·by·calling554 <p>In·the·example·in·the·previous·section,·<code·class="inline">gen_statem</code>·is·started·by·calling
555 <code·class="inline">code_lock:start_link(Code)</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start_link</span><span·class="p"·data-group-id="0644143306-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="0644143306-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">555 <code·class="inline">code_lock:start_link(Code)</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start_link</span><span·class="p"·data-group-id="5717457481-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="5717457481-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
556 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="0644143306-2">(</span><span·class="p"·data-group-id="0644143306-3">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="0644143306-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·347,·SHA:·e73403504ceef7dd7615ab9d793da2a15d958948f66782ac64f00667b448f7f4·...·]-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">start_link/1</code>·calls·function·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/4</code></a>,556 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="5717457481-2">(</span><span·class="p"·data-group-id="5717457481-3">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="5717457481-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·347,·SHA:·a52dd56a110506ea9b51eda65a13ff15b980cef28c6d3119a1cfad44cbc9e1b4·...·]-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">start_link/1</code>·calls·function·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/4</code></a>,
557 which·spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_statem</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,?NAME}</code>,·specifies·the·name.·In·this·case,·the557 which·spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_statem</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,?NAME}</code>,·specifies·the·name.·In·this·case,·the
558 <code·class="inline">gen_statem</code>·is·locally·registered·as·<code·class="inline">code_lock</code>·through·the·macro·<code·class="inline">?NAME</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_statem</code>·is·not·registered.·Instead·its·pid558 <code·class="inline">gen_statem</code>·is·locally·registered·as·<code·class="inline">code_lock</code>·through·the·macro·<code·class="inline">?NAME</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_statem</code>·is·not·registered.·Instead·its·pid
559 must·be·used.·The·name·can·also·be·specified·as·<code·class="inline">{global, Name}</code>,·then·the559 must·be·used.·The·name·can·also·be·specified·as·<code·class="inline">{global, Name}</code>,·then·the
560 <code·class="inline">gen_statem</code>·is·registered·using·<a·href="../../lib/kernel-10.2.2/doc/html/global.html#register_name/2"><code·class="inline">global:register_name/2</code></a>·in·Kernel.</p></li><li><p>The·second·argument,·<code·class="inline">?MODULE</code>,·is·the·name·of·the·<em>callback·module</em>,560 <code·class="inline">gen_statem</code>·is·registered·using·<a·href="../../lib/kernel-10.2.2/doc/html/global.html#register_name/2"><code·class="inline">global:register_name/2</code></a>·in·Kernel.</p></li><li><p>The·second·argument,·<code·class="inline">?MODULE</code>,·is·the·name·of·the·<em>callback·module</em>,
561 that·is,·the·module·where·the·callback·functions·are·located,561 that·is,·the·module·where·the·callback·functions·are·located,
562 which·is·this·module.</p><p>The·interface·functions·(<code·class="inline">start_link/1</code>·and·<code·class="inline">button/1</code>)·are·located·in·the562 which·is·this·module.</p><p>The·interface·functions·(<code·class="inline">start_link/1</code>·and·<code·class="inline">button/1</code>)·are·located·in·the
563 same·module·as·the·callback·functions·(<code·class="inline">init/1</code>,·<code·class="inline">locked/3</code>,·and·<code·class="inline">open/3</code>).563 same·module·as·the·callback·functions·(<code·class="inline">init/1</code>,·<code·class="inline">locked/3</code>,·and·<code·class="inline">open/3</code>).
Offset 574, 184 lines modifiedOffset 574, 184 lines modified
574 see·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3</code></a>.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_statem</code>·process·calls·callback574 see·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3</code></a>.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_statem</code>·process·calls·callback
575 function·<code·class="inline">code_lock:init(Code)</code>.·This·function·is·expected·to·return575 function·<code·class="inline">code_lock:init(Code)</code>.·This·function·is·expected·to·return
576 <code·class="inline">{ok,·State,·Data}</code>,·where·<code·class="inline">State</code>·is·the·initial·state·of·the·<code·class="inline">gen_statem</code>,576 <code·class="inline">{ok,·State,·Data}</code>,·where·<code·class="inline">State</code>·is·the·initial·state·of·the·<code·class="inline">gen_statem</code>,
577 in·this·case·<code·class="inline">locked</code>;·assuming·that·the·door·is·locked·to·begin·with.577 in·this·case·<code·class="inline">locked</code>;·assuming·that·the·door·is·locked·to·begin·with.
578 <code·class="inline">Data</code>·is·the·internal·server·data·of·the·<code·class="inline">gen_statem</code>.·Here·the·server·data578 <code·class="inline">Data</code>·is·the·internal·server·data·of·the·<code·class="inline">gen_statem</code>.·Here·the·server·data
579 is·a·<a·href="../../lib/stdlib-6.2/doc/html/maps.html"><code·class="inline">map()</code></a>·with·key·<code·class="inline">code</code>·that·stores·the·correct579 is·a·<a·href="../../lib/stdlib-6.2/doc/html/maps.html"><code·class="inline">map()</code></a>·with·key·<code·class="inline">code</code>·that·stores·the·correct
580 button·sequence,·key·<code·class="inline">length</code>·store·its·length,·and·key·<code·class="inline">buttons</code>580 button·sequence,·key·<code·class="inline">length</code>·store·its·length,·and·key·<code·class="inline">buttons</code>
581 that·stores·the·collected·buttons·up·to·the·same·length.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="3802885951-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="3802885951-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">581 that·stores·the·collected·buttons·up·to·the·same·length.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="1680756894-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="1680756894-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
582 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="3802885951-2">(</span><span·class="p"·data-group-id="3802885951-2">)</span><span·class="p">,</span><span·class="w">582 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="1680756894-2">(</span><span·class="p"·data-group-id="1680756894-2">)</span><span·class="p">,</span><span·class="w">
583 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3802885951-3">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">length</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·517,·SHA:·68b63920e4e1bf8c21f4766e1443e2c626b85f774a873c12368061b8f0257f95·...·]-3">}</span><span·class="p">,</span><span·class="w">583 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1680756894-3">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">length</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·517,·SHA:·4bf0a3c75aa92e679882ab4d33e9d83fdb784b6117ef36e96809cd27d81ad5f2·...·]-3">}</span><span·class="p">,</span><span·class="w">
584 ····</span><span·class="p"·data-group-id="3802885951-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3802885951-6">}</span><span·class="p">.</span></code></pre><p>Function·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>584 ····</span><span·class="p"·data-group-id="1680756894-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="1680756894-6">}</span><span·class="p">.</span></code></pre><p>Function·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>
585 is·synchronous.·It·does·not·return·until·the·<code·class="inline">gen_statem</code>·is·initialized585 is·synchronous.·It·does·not·return·until·the·<code·class="inline">gen_statem</code>·is·initialized
586 and·is·ready·to·receive·events.</p><p>Function·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>586 and·is·ready·to·receive·events.</p><p>Function·<a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>
587 must·be·used·if·the·<code·class="inline">gen_statem</code>·is·part·of·a·supervision·tree,·that·is,587 must·be·used·if·the·<code·class="inline">gen_statem</code>·is·part·of·a·supervision·tree,·that·is,
588 started·by·a·supervisor.··Function,588 started·by·a·supervisor.··Function,
589 <a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start/3"><code·class="inline">gen_statem:start/3,4</code></a>·can·be·used·to·start589 <a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start/3"><code·class="inline">gen_statem:start/3,4</code></a>·can·be·used·to·start
Max diff block lines reached; 326272/377076 bytes (86.53%) of diff not shown.
63.8 KB
./usr/share/doc/erlang-doc/html/doc/system/sup_princ.html
    
Offset 128, 48 lines modifiedOffset 128, 48 lines modified
128 the·order·specified·by·this·list,·and·are·terminated·in·the·reverse·order.</p><h2·id="example"·class="section-heading">128 the·order·specified·by·this·list,·and·are·terminated·in·the·reverse·order.</p><h2·id="example"·class="section-heading">
129 ··<a·href="#example"·class="hover-link">129 ··<a·href="#example"·class="hover-link">
130 ····<i·class="ri-link-m"·aria-hidden="true"></i>130 ····<i·class="ri-link-m"·aria-hidden="true"></i>
131 ··</a>131 ··</a>
132 ··<span·class="text">Example</span>132 ··<span·class="text">Example</span>
133 </h2>133 </h2>
134 <p>The·callback·module·for·a·supervisor·starting·the·server·from134 <p>The·callback·module·for·a·supervisor·starting·the·server·from
135 <a·href="gen_server_concepts.html#ex">gen_server·Behaviour</a>·can·look·as·follows:</p><p><a·href=""·id="ex"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0801918702-1">(</span><span·class="ss">ch_sup</span><span·class="p"·data-group-id="0801918702-1">)</span><span·class="p">.</span><span·class="w">135 <a·href="gen_server_concepts.html#ex">gen_server·Behaviour</a>·can·look·as·follows:</p><p><a·href=""·id="ex"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4295981916-1">(</span><span·class="ss">ch_sup</span><span·class="p"·data-group-id="4295981916-1">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="0801918702-2">(</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="0801918702-2">)</span><span·class="p">.</span><span·class="w">136 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="4295981916-2">(</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="4295981916-2">)</span><span·class="p">.</span><span·class="w">
137 </span><span·class="w">137 </span><span·class="w">
138 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0801918702-3">(</span><span·class="p"·data-group-id="0801918702-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0801918702-4">]</span><span·class="p"·data-group-id="0801918702-3">)</span><span·class="p">.</span><span·class="w"> 
139 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0801918702-5">(</span><span·class="p"·data-group-id="0801918702-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0801918702-6">]</span><span·class="p"·data-group-id="0801918702-5">)</span><span·class="p">.</span><span·class="w">138 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4295981916-3">(</span><span·class="p"·data-group-id="4295981916-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4295981916-4">]</span><span·class="p"·data-group-id="4295981916-3">)</span><span·class="p">.</span><span·class="w">
 139 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4295981916-5">(</span><span·class="p"·data-group-id="4295981916-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4295981916-6">]</span><span·class="p"·data-group-id="4295981916-5">)</span><span·class="p">.</span><span·class="w">
  
140 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="0801918702-7">(</span><span·class="p"·data-group-id="0801918702-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="4295981916-7">(</span><span·class="p"·data-group-id="4295981916-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="0801918702-8">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0801918702-9">[</span><span·class="p"·data-group-id="0801918702-9">]</span><span·class="p"·data-group-id="0801918702-8">)</span><span·class="p">.</span><span·class="w">141 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4295981916-8">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4295981916-9">[</span><span·class="p"·data-group-id="4295981916-9">]</span><span·class="p"·data-group-id="4295981916-8">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">init</span><span·class="p"·data-group-id="0801918702-10">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="0801918702-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">142 </span><span·class="nf">init</span><span·class="p"·data-group-id="4295981916-10">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="4295981916-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
143 ····</span><span·class="n">SupFlags</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0801918702-11">#{</span><span·class="ss">strategy</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">one_for_one</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">intensity</span><span·cl[·...·truncated·by·diffoscope;·len:·313,·SHA:·67e0d0ae37b73cefdf5ab55fc35c6bebaff9d12771232a04755f78fb9d92158a·...·]-11">}</span><span·class="p">,</span><span·class="w">143 ····</span><span·class="n">SupFlags</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4295981916-11">#{</span><span·class="ss">strategy</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">one_for_one</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">intensity</span><span·cl[·...·truncated·by·diffoscope;·len:·313,·SHA:·73c67a337137b8cc28d0177cba52406675e24592d162a8859f870385031aa38b·...·]-11">}</span><span·class="p">,</span><span·class="w">
144 ····</span><span·class="n">ChildSpecs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0801918702-12">[</span><span·class="p"·data-group-id="0801918702-13">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">144 ····</span><span·class="n">ChildSpecs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4295981916-12">[</span><span·class="p"·data-group-id="4295981916-13">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">
145 ····················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0801918702-14">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0801918702-15">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·57fe7906c4e991789fd984cd0840343dc720b224c0d100864986041b133cbad6·...·]-14">}</span><span·class="p">,</span><span·class="w">145 ····················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4295981916-14">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4295981916-15">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·d7afc7046557df744912a73fbb876bf74fa4782da12ef67c6075cd32937611a3·...·]-14">}</span><span·class="p">,</span><span·class="w">
146 ····················</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">permanent</span><span·class="p">,</span><span·class="w">146 ····················</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">permanent</span><span·class="p">,</span><span·class="w">
147 ····················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p">,</span><span·class="w">147 ····················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p">,</span><span·class="w">
148 ····················</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">worker</span><span·class="p">,</span><span·class="w">148 ····················</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">worker</span><span·class="p">,</span><span·class="w">
149 ····················</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0801918702-16">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0801918702-16">]</span><span·class="p"·data-group-id="0801918702-13">}</span><span·class="p"·data-group-id="0801918702-12">]</span><span·class="p">,</span><span·class="w">149 ····················</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4295981916-16">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4295981916-16">]</span><span·class="p"·data-group-id="4295981916-13">}</span><span·class="p"·data-group-id="4295981916-12">]</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="p"·data-group-id="0801918702-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0801918702-18">{</span><span·class="n">SupFlags</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChildSpecs[·...·truncated·by·diffoscope;·len:·102,·SHA:·592ced93441c28f22aae99234c09ed40061a8e1af11981771f7c0958fb1555da·...·]-17">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">SupFlags</code>·variable·in·the·return·value·from·<code·class="inline">init/1</code>·represents·the150 ····</span><span·class="p"·data-group-id="4295981916-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4295981916-18">{</span><span·class="n">SupFlags</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChildSpecs[·...·truncated·by·diffoscope;·len:·102,·SHA:·cd52ccfce4f2a52359f8b402acf28ce4cd460d277caa6c3e0c2aed645781abf8·...·]-17">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">SupFlags</code>·variable·in·the·return·value·from·<code·class="inline">init/1</code>·represents·the
151 <a·href="sup_princ.html#flags">supervisor·flags</a>.</p><p>The·<code·class="inline">ChildSpecs</code>·variable·in·the·return·value·from·<code·class="inline">init/1</code>·is·a·list·of151 <a·href="sup_princ.html#flags">supervisor·flags</a>.</p><p>The·<code·class="inline">ChildSpecs</code>·variable·in·the·return·value·from·<code·class="inline">init/1</code>·is·a·list·of
152 <a·href="sup_princ.html#spec">child·specifications</a>.</p><p><a·href=""·id="flags"></a></p><h2·id="supervisor-flags"·class="section-heading">152 <a·href="sup_princ.html#spec">child·specifications</a>.</p><p><a·href=""·id="flags"></a></p><h2·id="supervisor-flags"·class="section-heading">
153 ··<a·href="#supervisor-flags"·class="hover-link">153 ··<a·href="#supervisor-flags"·class="hover-link">
154 ····<i·class="ri-link-m"·aria-hidden="true"></i>154 ····<i·class="ri-link-m"·aria-hidden="true"></i>
155 ··</a>155 ··</a>
156 ··<span·class="text">Supervisor·Flags</span>156 ··<span·class="text">Supervisor·Flags</span>
157 </h2>157 </h2>
158 <p>This·is·the·type·definition·for·the·supervisor·flags:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sup_flags</span><span·class="p"·data-group-id="6843231068-1">(</span><span·class="p"·data-group-id="6843231068-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6843231068-2">#{</span><span·class="ss">strategy</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">strategy</span><span·class="p"·data-group-id="6843231068-3">(</span><span·class="p"·data-group-id="6843231068-3">)</span><span·class="p">,</span><span·class="w">···········</span><span·class="c1">%·optional</span><span·class="w"> 
159 ················</span><span·class="ss">intensity</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="6843231068-4">(</span><span·class="p"·data-group-id="6843231068-4">)</span><span·class="p">,</span><span·class="w">···</span><span·class="c1">%·optional</span><span·class="w"> 
160 ················</span><span·class="ss">period</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="6843231068-5">(</span><span·class="p"·data-group-id="68432310[·...·truncated·by·diffoscope;·len:·54,·SHA:·fbe540563c8adee5f1d1bb4f2fd4022a1006b40f7dfef7e6e3411beec65a7470·...·]··········</span><span·class="c1">%·optional</span><span·class="w">158 <p>This·is·the·type·definition·for·the·supervisor·flags:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sup_flags</span><span·class="p"·data-group-id="3915999224-1">(</span><span·class="p"·data-group-id="3915999224-1">)</span><span·cla[·...·truncated·by·diffoscope;·len:·404,·SHA:·ef5d0b93d1d1b4721be644f4bb6366b9f4ee95468b7ab56e51a3c7f63fb6a874·...·]··········</span><span·class="c1">%·optional</span><span·class="w">
 159 ················</span><span·class="ss">intensity</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="3915999224-4">(</span><span·class="p"·data-group-id="3915999224-4">)</span><span·class="p">,</span><span·class="w">···</span><span·class="c1">%·optional</span><span·class="w">
 160 ················</span><span·class="ss">period</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="3915999224-5">(</span><span·class="p"·data-group-id="3915999224-5">)</span><span·class="p">,</span><span·class="w">··········</span><span·class="c1">%·optional</span><span·class="w">
161 ················</span><span·class="ss">auto_shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">auto_shutdown</span><span·class="p"·data-group-id="6843231068-6">(</span><span·class="p"·data-group-id="6843231068-6">)</span><span·class="p"·data-group-id="6843231068-2">}</span><span·class="w">·</span><span·class="c1">%·optional</span><span·class="w">161 ················</span><span·class="ss">auto_shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">auto_shutdown</span><span·class="p"·data-group-id="3915999224-6">(</span><span·class="p"·data-group-id="3915999224-6">)</span><span·class="p"·data-group-id="3915999224-2">}</span><span·class="w">·</span><span·class="c1">%·optional</span><span·class="w">
162 ····</span><span·class="nf">strategy</span><span·class="p"·data-group-id="6843231068-7">(</span><span·class="p"·data-group-id="6843231068-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">one_for_all</span><span·class="w">162 ····</span><span·class="nf">strategy</span><span·class="p"·data-group-id="3915999224-7">(</span><span·class="p"·data-group-id="3915999224-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">one_for_all</span><span·class="w">
163 ···············</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">one_for_one</span><span·class="w">163 ···············</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">one_for_one</span><span·class="w">
164 ···············</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">rest_for_one</span><span·class="w">164 ···············</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">rest_for_one</span><span·class="w">
165 ···············</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">simple_one_for_one</span><span·class="w">165 ···············</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">simple_one_for_one</span><span·class="w">
166 ····</span><span·class="nf">auto_shutdown</span><span·class="p"·data-group-id="6843231068-8">(</span><span·class="p"·data-group-id="6843231068-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">never</span><span·class="w">166 ····</span><span·class="nf">auto_shutdown</span><span·class="p"·data-group-id="3915999224-8">(</span><span·class="p"·data-group-id="3915999224-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">never</span><span·class="w">
167 ····················</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">any_significant</span><span·class="w">167 ····················</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">any_significant</span><span·class="w">
168 ····················</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">all_significant</span></code></pre><ul><li><code·class="inline">strategy</code>·specifies·the·<a·href="sup_princ.html#strategy">restart·strategy</a>.</li><li><code·class="inline">intensity</code>·and·<code·class="inline">period</code>·specify·the168 ····················</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">all_significant</span></code></pre><ul><li><code·class="inline">strategy</code>·specifies·the·<a·href="sup_princ.html#strategy">restart·strategy</a>.</li><li><code·class="inline">intensity</code>·and·<code·class="inline">period</code>·specify·the
169 <a·href="sup_princ.html#max_intensity">maximum·restart·intensity</a>.</li><li><code·class="inline">auto_shutdown</code>·specifies·whether·and·when·a·supervisor·should169 <a·href="sup_princ.html#max_intensity">maximum·restart·intensity</a>.</li><li><code·class="inline">auto_shutdown</code>·specifies·whether·and·when·a·supervisor·should
170 <a·href="sup_princ.html#automatic-shutdown">automatically·shut·itself·down</a>.</li></ul><p><a·href=""·id="strategy"></a></p><h2·id="restart-strategy"·class="section-heading">170 <a·href="sup_princ.html#automatic-shutdown">automatically·shut·itself·down</a>.</li></ul><p><a·href=""·id="strategy"></a></p><h2·id="restart-strategy"·class="section-heading">
171 ··<a·href="#restart-strategy"·class="hover-link">171 ··<a·href="#restart-strategy"·class="hover-link">
172 ····<i·class="ri-link-m"·aria-hidden="true"></i>172 ····<i·class="ri-link-m"·aria-hidden="true"></i>
173 ··</a>173 ··</a>
Offset 408, 28 lines modifiedOffset 408, 28 lines modified
408 exhaust·the·<a·href="sup_princ.html#max_intensity">Maximum·Restart·Intensity</a>·of·the408 exhaust·the·<a·href="sup_princ.html#max_intensity">Maximum·Restart·Intensity</a>·of·the
409 parent·supervisor.</p></section><p><a·href=""·id="spec"></a></p><h2·id="child-specification"·class="section-heading">409 parent·supervisor.</p></section><p><a·href=""·id="spec"></a></p><h2·id="child-specification"·class="section-heading">
410 ··<a·href="#child-specification"·class="hover-link">410 ··<a·href="#child-specification"·class="hover-link">
411 ····<i·class="ri-link-m"·aria-hidden="true"></i>411 ····<i·class="ri-link-m"·aria-hidden="true"></i>
412 ··</a>412 ··</a>
413 ··<span·class="text">Child·Specification</span>413 ··<span·class="text">Child·Specification</span>
414 </h2>414 </h2>
415 <p>The·type·definition·for·a·child·specification·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">child_spec</span><span·class="p"·data-group-id="6691248024-1">(</span><span·class="p"·data-group-id="6691248024-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6691248024-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·5b4a0264df00492786bf0b5f227941ac2fd78b455d17b59efab6ec5baca199e4·...·]-3">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·mandatory</span><span·class="w">415 <p>The·type·definition·for·a·child·specification·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">child_spec</span><span·class="p"·data-group-id="9939604411-1">(</span><span·class="p"·data-group-id="9939604411-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9939604411-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·1cb7803e8e4513903ace09cc476e6e4ecf327c4cc1c13f42d67b94ba65156433·...·]-3">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·mandatory</span><span·class="w">
416 ·················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="6691248024-4">(</span><span·class="p"·data-group-id="6691248024-4">)</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·mandatory</span><span·class="w">416 ·················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="9939604411-4">(</span><span·class="p"·data-group-id="9939604411-4">)</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·mandatory</span><span·class="w">
417 ·················</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">restart</span><span·class="p"·data-group-id="6691248024-5">(</span><span·class="p"·data-group-id="6691248024-5">)</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·optional</span><span·class="w">417 ·················</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">restart</span><span·class="p"·data-group-id="9939604411-5">(</span><span·class="p"·data-group-id="9939604411-5">)</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·optional</span><span·class="w">
418 ·················</span><span·class="ss">significant</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">significant</span><span·class="p"·data-group-id="6691248024-6">(</span><span·class="p"·data-group-id="6691248024-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·optional</span><span·class="w">418 ·················</span><span·class="ss">significant</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">significant</span><span·class="p"·data-group-id="9939604411-6">(</span><span·class="p"·data-group-id="9939604411-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·optional</span><span·class="w">
419 ·················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="6691248024-7">(</span><span·class="p"·data-group-id="6691248024-7">)</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·optional</span><span·class="w">419 ·················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="9939604411-7">(</span><span·class="p"·data-group-id="9939604411-7">)</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·optional</span><span·class="w">
420 ·················</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">worker</span><span·class="p"·data-group-id="6691248024-8">(</span><span·class="p"·data-group-id="6691248024-8">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·optional</span><span·class="w">420 ·················</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">worker</span><span·class="p"·data-group-id="9939604411-8">(</span><span·class="p"·data-group-id="9939604411-8">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·optional</span><span·class="w">
421 ·················</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="6691248024-9">(</span><span·class="p"·data-group-id="6691248024-9">)</span><span·class="p"·data-group-id="6691248024-2">}</span><span·class="w">·········</span><span·class="c1">%·optional</span><span·class="w">421 ·················</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="9939604411-9">(</span><span·class="p"·data-group-id="9939604411-9">)</span><span·class="p"·data-group-id="9939604411-2">}</span><span·class="w">·········</span><span·class="c1">%·optional</span><span·class="w">
422 ····</span><span·class="nf">child_id</span><span·class="p"·data-group-id="6691248024-10">(</span><span·class="p"·data-group-id="6691248024-10">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="6691248024-11">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·3f96bace15b5a5d374971b078905706ca97a0e3697c48b9cf7bef065e3c511df·...·]-11">)</span><span·class="w">422 ····</span><span·class="nf">child_id</span><span·class="p"·data-group-id="9939604411-10">(</span><span·class="p"·data-group-id="9939604411-10">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="9939604411-11">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·134cb30827e0ecc4a90c61c3bee9b250d531b0085229a4fdd4a6dd9137f4061b·...·]-11">)</span><span·class="w">
423 ····</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="6691248024-12">(</span><span·class="p"·data-group-id="6691248024-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6691248024-13">{</span><span·class="n">M</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·962,·SHA:·2b60ad708eb5c242c9d9d18126b8c7232ba195c5506ee7e6bc82a00748482901·...·]-13">}</span><span·class="w">423 ····</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="9939604411-12">(</span><span·class="p"·data-group-id="9939604411-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9939604411-13">{</span><span·class="n">M</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·962,·SHA:·a017c497cfa086c5d05b61266297c037981346b3e022124dc8b31284f6cca29f·...·]-13">}</span><span·class="w">
424 ····</span><span·class="nf">modules</span><span·class="p"·data-group-id="6691248024-18">(</span><span·class="p"·data-group-id="6691248024-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6691248024-19">[</span><span·class="nf">module</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·126,·SHA:·0720b26ae3580fba4ef5a2b8397dc7a2a0cc989c6e3fa96322171c719a9d9ffd·...·]-19">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">dynamic</span><span·class="w">424 ····</span><span·class="nf">modules</span><span·class="p"·data-group-id="9939604411-18">(</span><span·class="p"·data-group-id="9939604411-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9939604411-19">[</span><span·class="nf">module</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·126,·SHA:·b1832769af665720c7c84263db72c2b4e62f8236ccc235b0226b57ca6199c8be·...·]-19">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">dynamic</span><span·class="w">
425 ····</span><span·class="nf">restart</span><span·class="p"·data-group-id="6691248024-21">(</span><span·class="p"·data-group-id="6691248024-21">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">permanent</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">transient</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">temporary</span><span·class="w">425 ····</span><span·class="nf">restart</span><span·class="p"·data-group-id="9939604411-21">(</span><span·class="p"·data-group-id="9939604411-21">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">permanent</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">transient</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">temporary</span><span·class="w">
426 ····</span><span·class="nf">significant</span><span·class="p"·data-group-id="6691248024-22">(</span><span·class="p"·data-group-id="6691248024-22">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="6691248024-23">(</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·be416562ec29834f4e0e1c86feb767bc971407e981861d25fecd6a8a36d477fd·...·]-23">)</span><span·class="w">426 ····</span><span·class="nf">significant</span><span·class="p"·data-group-id="9939604411-22">(</span><span·class="p"·data-group-id="9939604411-22">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="9939604411-23">(</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·165f19d8dafeccfddf7b40876aac1d12d364ff0231f6419b2a15a1232a6a2254·...·]-23">)</span><span·class="w">
427 ····</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="6691248024-24">(</span><span·class="p"·data-group-id="6691248024-24">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·126,·SHA:·6e4a0185fb12e692167bbc47c125b62ac9a516e6f9896886d4565d1bd362523a·...·]-25">)</span><span·class="w">427 ····</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="9939604411-24">(</span><span·class="p"·data-group-id="9939604411-24">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·126,·SHA:·12829f955618795ea2e698981687c6ecab69b134dd39356bade215bf6fb6663a·...·]-25">)</span><span·class="w">
428 ····</span><span·class="nf">worker</span><span·class="p"·data-group-id="6691248024-26">(</span><span·class="p"·data-group-id="6691248024-26">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">worker</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">supervisor</span></code></pre><ul><li><p><code·class="inline">id</code>·is·used·to·identify·the·child·specification·internally·by·the·supervisor.</p><p>The·<code·class="inline">id</code>·key·is·mandatory.</p><p>Note·that·this·identifier·occasionally·has·been·called·&quot;name&quot;.·As·far·as428 ····</span><span·class="nf">worker</span><span·class="p"·data-group-id="9939604411-26">(</span><span·class="p"·data-group-id="9939604411-26">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">worker</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">supervisor</span></code></pre><ul><li><p><code·class="inline">id</code>·is·used·to·identify·the·child·specification·internally·by·the·supervisor.</p><p>The·<code·class="inline">id</code>·key·is·mandatory.</p><p>Note·that·this·identifier·occasionally·has·been·called·&quot;name&quot;.·As·far·as
429 possible,·the·terms·&quot;identifier&quot;·or·&quot;id&quot;·are·now·used·but·in·order·to·keep429 possible,·the·terms·&quot;identifier&quot;·or·&quot;id&quot;·are·now·used·but·in·order·to·keep
430 backwards·compatibility,·some·occurrences·of·&quot;name&quot;·can·still·be·found,·for430 backwards·compatibility,·some·occurrences·of·&quot;name&quot;·can·still·be·found,·for
431 example·in·error·messages.</p></li><li><p><code·class="inline">start</code>·defines·the·function·call·used·to·start·the·child·process.·It·is·a431 example·in·error·messages.</p></li><li><p><code·class="inline">start</code>·defines·the·function·call·used·to·start·the·child·process.·It·is·a
432 module-function-arguments·tuple·used·as·<a·href="../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,·F,·A)</code></a>.</p><p>It·is·to·be·(or·result·in)·a·call·to·any·of·the·following:</p><ul><li><a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link/2,3</code></a></li><li><a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2/doc/html/gen_event.html#start_link/2"><code·class="inline">gen_event:start_link/0,1,2</code></a></li><li>A·function·compliant·with·these·functions.·For·details,·see432 module-function-arguments·tuple·used·as·<a·href="../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,·F,·A)</code></a>.</p><p>It·is·to·be·(or·result·in)·a·call·to·any·of·the·following:</p><ul><li><a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link/2,3</code></a></li><li><a·href="../../lib/stdlib-6.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2/doc/html/gen_event.html#start_link/2"><code·class="inline">gen_event:start_link/0,1,2</code></a></li><li>A·function·compliant·with·these·functions.·For·details,·see
433 <a·href="../../lib/stdlib-6.2/doc/html/supervisor.html"><code·class="inline">supervisor</code></a>.</li></ul><p>The·<code·class="inline">start</code>·key·is·mandatory.</p></li><li><p><a·href=""·id="restart"></a>·<code·class="inline">restart</code>·defines·when·a·terminated·child·process·is·to·be433 <a·href="../../lib/stdlib-6.2/doc/html/supervisor.html"><code·class="inline">supervisor</code></a>.</li></ul><p>The·<code·class="inline">start</code>·key·is·mandatory.</p></li><li><p><a·href=""·id="restart"></a>·<code·class="inline">restart</code>·defines·when·a·terminated·child·process·is·to·be
434 restarted.</p><ul><li>A·<code·class="inline">permanent</code>·child·process·is·always·restarted.</li><li>A·<code·class="inline">temporary</code>·child·process·is·never·restarted·(not·even·when·the·supervisor434 restarted.</p><ul><li>A·<code·class="inline">permanent</code>·child·process·is·always·restarted.</li><li>A·<code·class="inline">temporary</code>·child·process·is·never·restarted·(not·even·when·the·supervisor
435 restart·strategy·is·<code·class="inline">rest_for_one</code>·or·<code·class="inline">one_for_all</code>·and·a·sibling·death435 restart·strategy·is·<code·class="inline">rest_for_one</code>·or·<code·class="inline">one_for_all</code>·and·a·sibling·death
Offset 457, 53 lines modifiedOffset 457, 53 lines modified
457 <code·class="inline">supervisor</code>,·the·default·value·<code·class="inline">infinity</code>·will·be·used.</p></li><li><p><code·class="inline">type</code>·specifies·whether·the·child·process·is·a·supervisor·or·a·worker.</p><p>The·<code·class="inline">type</code>·key·is·optional.·If·it·is·not·given,·the·default·value·<code·class="inline">worker</code>457 <code·class="inline">supervisor</code>,·the·default·value·<code·class="inline">infinity</code>·will·be·used.</p></li><li><p><code·class="inline">type</code>·specifies·whether·the·child·process·is·a·supervisor·or·a·worker.</p><p>The·<code·class="inline">type</code>·key·is·optional.·If·it·is·not·given,·the·default·value·<code·class="inline">worker</code>
458 will·be·used.</p></li><li><p><code·class="inline">modules</code>·has·to·be·a·list·consisting·of·a·single·element.·The·value458 will·be·used.</p></li><li><p><code·class="inline">modules</code>·has·to·be·a·list·consisting·of·a·single·element.·The·value
459 of·that·element·depends·on·the·behaviour·of·the·process:</p><ul><li>If·the·child·process·is·a·<code·class="inline">gen_event</code>,·the·element·has·to·be·the·atom459 of·that·element·depends·on·the·behaviour·of·the·process:</p><ul><li>If·the·child·process·is·a·<code·class="inline">gen_event</code>,·the·element·has·to·be·the·atom
460 <code·class="inline">dynamic</code>.</li><li>Otherwise,·the·element·should·be·<code·class="inline">Module</code>,·where·<code·class="inline">Module</code>·is·the460 <code·class="inline">dynamic</code>.</li><li>Otherwise,·the·element·should·be·<code·class="inline">Module</code>,·where·<code·class="inline">Module</code>·is·the
461 name·of·the·callback·module.</li></ul><p>This·information·is·used·by·the·release·handler·during·upgrades·and461 name·of·the·callback·module.</li></ul><p>This·information·is·used·by·the·release·handler·during·upgrades·and
462 downgrades;·see·<a·href="release_handling.html">Release·Handling</a>.</p><p>The·<code·class="inline">modules</code>·key·is·optional.·If·it·is·not·given,·it·defaults·to·<code·class="inline">[M]</code>,·where462 downgrades;·see·<a·href="release_handling.html">Release·Handling</a>.</p><p>The·<code·class="inline">modules</code>·key·is·optional.·If·it·is·not·given,·it·defaults·to·<code·class="inline">[M]</code>,·where
463 <code·class="inline">M</code>·comes·from·the·child's·start·<code·class="inline">{M,F,A}</code>.</p></li></ul><p><em>Example:</em>·The·child·specification·to·start·the·server·<code·class="inline">ch3</code>·in·the·previous463 <code·class="inline">M</code>·comes·from·the·child's·start·<code·class="inline">{M,F,A}</code>.</p></li></ul><p><em>Example:</em>·The·child·specification·to·start·the·server·<code·class="inline">ch3</code>·in·the·previous
464 example·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7460115710-1">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">464 example·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0415671178-1">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">
465 ··</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7460115710-2">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7460115710-3">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·d52f2946158707dfed3a5f7a190ef515224779c04e86e1fe8832c9965eeac2c0·...·]-2">}</span><span·class="p">,</span><span·class="w">465 ··</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0415671178-2">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0415671178-3">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·c1eae2af3fdc479b076efc973619f436d632532a218ac31a9994a1ff6a5fb2f0·...·]-2">}</span><span·class="p">,</span><span·class="w">
466 ··</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">permanent</span><span·class="p">,</span><span·class="w">466 ··</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">permanent</span><span·class="p">,</span><span·class="w">
467 ··</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p">,</span><span·class="w">467 ··</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p">,</span><span·class="w">
468 ··</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">worker</span><span·class="p">,</span><span·class="w">468 ··</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">worker</span><span·class="p">,</span><span·class="w">
469 ··</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7460115710-4">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7460115710-4">]</span><span·class="p"·data-group-id="7460115710-1">}</span></code></pre><p>or·simplified,·relying·on·the·default·values:</p><pre><code·class="text">#{id·=&gt;·ch3,469 ··</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0415671178-4">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0415671178-4">]</span><span·class="p"·data-group-id="0415671178-1">}</span></code></pre><p>or·simplified,·relying·on·the·default·values:</p><pre><code·class="text">#{id·=&gt;·ch3,
470 ··start·=&gt;·{ch3,·start_link,·[]},470 ··start·=&gt;·{ch3,·start_link,·[]},
471 ··shutdown·=&gt;·brutal_kill}</code></pre><p>Example:·A·child·specification·to·start·the·event·manager·from·the·chapter·about471 ··shutdown·=&gt;·brutal_kill}</code></pre><p>Example:·A·child·specification·to·start·the·event·manager·from·the·chapter·about
472 <a·href="events.html#mgr">gen_event</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4949839164-1">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">error_man</span><span·class="p">,</span><span·class="w">472 <a·href="events.html#mgr">gen_event</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2802996554-1">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">error_man</span><span·class="p">,</span><span·class="w">
473 ··</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4949839164-2">{</span><span·class="ss">gen_event</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4949839164-3">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·291,·SHA:·b6aabf82f2e42d9b7e6eecda72bece2a97a4e2aab2ff852d3aa1c7691cb3d3df·...·]4-2">}</span><span·class="p">,</span><span·class="w">473 ··</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2802996554-2">{</span><span·class="ss">gen_event</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2802996554-3">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·291,·SHA:·53c987a2791d2bf260e6287fb4b9ce988306e31893a6e4bfc2fea86ae7347945·...·]4-2">}</span><span·class="p">,</span><span·class="w">
474 ··</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">dynamic</span><span·class="p"·data-group-id="4949839164-1">}</span></code></pre><p>Both·server·and·event·manager·are·registered·processes·which·can·be·expected·to474 ··</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">dynamic</span><span·class="p"·data-group-id="2802996554-1">}</span></code></pre><p>Both·server·and·event·manager·are·registered·processes·which·can·be·expected·to
475 be·always·accessible.·Thus·they·are·specified·to·be·<code·class="inline">permanent</code>.</p><p><code·class="inline">ch3</code>·does·not·need·to·do·any·cleaning·up·before·termination.·Thus,·no·shutdown475 be·always·accessible.·Thus·they·are·specified·to·be·<code·class="inline">permanent</code>.</p><p><code·class="inline">ch3</code>·does·not·need·to·do·any·cleaning·up·before·termination.·Thus,·no·shutdown
476 time·is·needed,·but·<code·class="inline">brutal_kill</code>·is·sufficient.·<code·class="inline">error_man</code>·can·need·some·time476 time·is·needed,·but·<code·class="inline">brutal_kill</code>·is·sufficient.·<code·class="inline">error_man</code>·can·need·some·time
477 for·the·event·handlers·to·clean·up,·thus·the·shutdown·time·is·set·to·5000·ms477 for·the·event·handlers·to·clean·up,·thus·the·shutdown·time·is·set·to·5000·ms
478 (which·is·the·default·value).</p><p>Example:·A·child·specification·to·start·another·supervisor:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1321805622-1">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sup</span><span·class="p">,</span><span·class="w">478 (which·is·the·default·value).</p><p>Example:·A·child·specification·to·start·another·supervisor:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1112536401-1">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sup</span><span·class="p">,</span><span·class="w">
479 ··</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1321805622-2">{</span><span·class="ss">sup</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1321805622-3">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·14cf8faf5474b45fa10c783448b876a7294d0d6a82da9c1344f596fe3ed891c8·...·]-2">}</span><span·class="p">,</span><span·class="w">479 ··</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1112536401-2">{</span><span·class="ss">sup</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1112536401-3">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·0a842631fc461b8c0ed676741c9d9f30ceb3513e4ec858c6545a7d85b1db9280·...·]-2">}</span><span·class="p">,</span><span·class="w">
480 ··</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">transient</span><span·class="p">,</span><span·class="w">480 ··</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">transient</span><span·class="p">,</span><span·class="w">
481 ··</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="1321805622-1">}</span><span·class="w">·</span><span·class="c1">%·will·cause·default·shutdown=&gt;infinity</span></code></pre><p><a·href=""·id="super_tree"></a></p><h2·id="starting-a-supervisor"·class="section-heading">481 ··</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="1112536401-1">}</span><span·class="w">·</span><span·class="c1">%·will·cause·default·shutdown=&gt;infinity</span></code></pre><p><a·href=""·id="super_tree"></a></p><h2·id="starting-a-supervisor"·class="section-heading">
482 ··<a·href="#starting-a-supervisor"·class="hover-link">482 ··<a·href="#starting-a-supervisor"·class="hover-link">
483 ····<i·class="ri-link-m"·aria-hidden="true"></i>483 ····<i·class="ri-link-m"·aria-hidden="true"></i>
484 ··</a>484 ··</a>
485 ··<span·class="text">Starting·a·Supervisor</span>485 ··<span·class="text">Starting·a·Supervisor</span>
486 </h2>486 </h2>
487 <p>In·the·previous·example,·the·supervisor·is·started·by·calling487 <p>In·the·previous·example,·the·supervisor·is·started·by·calling
488 <code·class="inline">ch_sup:start_link()</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start_link</span><span·class="p"·data-group-id="3480759469-1">(</span><span·class="p"·data-group-id="3480759469-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">488 <code·class="inline">ch_sup:start_link()</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start_link</span><span·class="p"·data-group-id="4923251930-1">(</span><span·class="p"·data-group-id="4923251930-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
489 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="3480759469-2">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3480759469-3">[</span><span·class="p"·data-group-id="3480759469-3">]</span><span·class="p"·data-group-id="3480759469-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">ch_sup:start_link</code>·calls·function·<a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/2"><code·class="inline">supervisor:start_link/2</code></a>,·which·spawns·and489 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4923251930-2">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4923251930-3">[</span><span·class="p"·data-group-id="4923251930-3">]</span><span·class="p"·data-group-id="4923251930-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">ch_sup:start_link</code>·calls·function·<a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/2"><code·class="inline">supervisor:start_link/2</code></a>,·which·spawns·and
490 links·to·a·new·process,·a·supervisor.</p><ul><li>The·first·argument,·<code·class="inline">ch_sup</code>,·is·the·name·of·the·callback·module,·that·is,·the490 links·to·a·new·process,·a·supervisor.</p><ul><li>The·first·argument,·<code·class="inline">ch_sup</code>,·is·the·name·of·the·callback·module,·that·is,·the
491 module·where·the·<code·class="inline">init</code>·callback·function·is·located.</li><li>The·second·argument,·<code·class="inline">[]</code>,·is·a·term·that·is·passed·as·is·to·the·callback491 module·where·the·<code·class="inline">init</code>·callback·function·is·located.</li><li>The·second·argument,·<code·class="inline">[]</code>,·is·a·term·that·is·passed·as·is·to·the·callback
492 function·<code·class="inline">init</code>.·Here,·<code·class="inline">init</code>·does·not·need·any·data·and·ignores·the·argument.</li></ul><p>In·this·case,·the·supervisor·is·not·registered.·Instead·its·pid·must·be·used.·A492 function·<code·class="inline">init</code>.·Here,·<code·class="inline">init</code>·does·not·need·any·data·and·ignores·the·argument.</li></ul><p>In·this·case,·the·supervisor·is·not·registered.·Instead·its·pid·must·be·used.·A
493 name·can·be·specified·by·calling493 name·can·be·specified·by·calling
494 <a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({local,·Name},·Module,·Args)</code></a>494 <a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({local,·Name},·Module,·Args)</code></a>
495 or495 or
496 <a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({global,·Name},·Module,·Args)</code></a>.</p><p>The·new·supervisor·process·calls·the·callback·function·<code·class="inline">ch_sup:init([])</code>.·<code·class="inline">init</code>496 <a·href="../../lib/stdlib-6.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({global,·Name},·Module,·Args)</code></a>.</p><p>The·new·supervisor·process·calls·the·callback·function·<code·class="inline">ch_sup:init([])</code>.·<code·class="inline">init</code>
497 has·to·return·<code·class="inline">{ok,·{SupFlags,·ChildSpecs}}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="1735689605-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="1735689605-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">497 has·to·return·<code·class="inline">{ok,·{SupFlags,·ChildSpecs}}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="3543464202-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3543464202-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
498 ····</span><span·class="n">SupFlags</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1735689605-2">#{</span><span·class="p"·data-group-id="1735689605-2">}</span><span·class="p">,</span><span·class="w">498 ····</span><span·class="n">SupFlags</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3543464202-2">#{</span><span·class="p"·data-group-id="3543464202-2">}</span><span·class="p">,</span><span·class="w">
499 ····</span><span·class="n">ChildSpecs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1735689605-3">[</span><span·class="p"·data-group-id="1735689605-4">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">499 ····</span><span·class="n">ChildSpecs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3543464202-3">[</span><span·class="p"·data-group-id="3543464202-4">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">
500 ····················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1735689605-5">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1735689605-6">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·1de8ebdc6ddabed88e17bf8d0a1c418378f77e7fdb30a35ae5907f0c99096952·...·]-5">}</span><span·class="p">,</span><span·class="w">500 ····················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3543464202-5">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3543464202-6">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·587d7f4bbdbcaa2775ac3fbe32208cd2c841ee40f4154f0e3d809968a919d89f·...·]-5">}</span><span·class="p">,</span><span·class="w">
501 ····················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p"·data-group-id="1735689605-4">}</span><span·class="p"·data-group-id="1735689605-3">]</span><span·class="p">,</span><span·class="w">501 ····················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p"·data-group-id="3543464202-4">}</span><span·class="p"·data-group-id="3543464202-3">]</span><span·class="p">,</span><span·class="w">
502 ····</span><span·class="p"·data-group-id="1735689605-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1735689605-8">{</span><span·class="n">SupFlags</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChildSpecs</[·...·truncated·by·diffoscope;·len:·99,·SHA:·f185553b216691e95db409d9040c33fe5a3022f47492879acbdf4658d125c78e·...·]-7">}</span><span·class="p">.</span></code></pre><p>Subsequently,·the·supervisor·starts·its·child·processes·according·to·the·child502 ····</span><span·class="p"·data-group-id="3543464202-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3543464202-8">{</span><span·class="n">SupFlags</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChildSpecs</[·...·truncated·by·diffoscope;·len:·99,·SHA:·c78e21f759ebd964d9251ba531069273d9c5517023a16048f2449e1b961b97d1·...·]-7">}</span><span·class="p">.</span></code></pre><p>Subsequently,·the·supervisor·starts·its·child·processes·according·to·the·child
Max diff block lines reached; 12020/65214 bytes (18.43%) of diff not shown.
70.1 KB
./usr/share/doc/erlang-doc/html/doc/system/tablesdatabases.html
    
Offset 146, 73 lines modifiedOffset 146, 73 lines modified
146 ····<i·class="ri-link-m"·aria-hidden="true"></i>146 ····<i·class="ri-link-m"·aria-hidden="true"></i>
147 ··</a>147 ··</a>
148 ··<span·class="text">Deleting·an·Element</span>148 ··<span·class="text">Deleting·an·Element</span>
149 </h3>149 </h3>
150 <p>The·<code·class="inline">delete</code>·operation·is·considered·successful·if·the·element·was·not·present150 <p>The·<code·class="inline">delete</code>·operation·is·considered·successful·if·the·element·was·not·present
151 in·the·table.·Hence·all·attempts·to·check·that·the·element·is·present·in·the151 in·the·table.·Hence·all·attempts·to·check·that·the·element·is·present·in·the
152 Ets/Mnesia·table·before·deletion·are·unnecessary.·Here·follows·an·example·for152 Ets/Mnesia·table·before·deletion·are·unnecessary.·Here·follows·an·example·for
153 Ets·tables:</p><p><strong>DO</strong></p><pre><code·class="text">ets:delete(Tab,·Key),</code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="8778413097-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8778413097-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">153 Ets·tables:</p><p><strong>DO</strong></p><pre><code·class="text">ets:delete(Tab,·Key),</code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="8521579723-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8521579723-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
154 ····</span><span·class="p"·data-group-id="8778413097-2">[</span><span·class="p"·data-group-id="8778413097-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 ····</span><span·class="p"·data-group-id="8521579723-2">[</span><span·class="p"·data-group-id="8521579723-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
155 ········</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">155 ········</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
156 ····</span><span·class="p"·data-group-id="8778413097-3">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p"·data-group-id="8778413097-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 ····</span><span·class="p"·data-group-id="8521579723-3">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p"·data-group-id="8521579723-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ········</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="8778413097-4">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8778413097-4">)</span><span·class="w">157 ········</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="8521579723-4">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8521579723-4">)</span><span·class="w">
158 </span><span·class="k">end</span><span·class="p">,</span></code></pre><h3·id="fetching-data"·class="section-heading">158 </span><span·class="k">end</span><span·class="p">,</span></code></pre><h3·id="fetching-data"·class="section-heading">
159 ··<a·href="#fetching-data"·class="hover-link">159 ··<a·href="#fetching-data"·class="hover-link">
160 ····<i·class="ri-link-m"·aria-hidden="true"></i>160 ····<i·class="ri-link-m"·aria-hidden="true"></i>
161 ··</a>161 ··</a>
162 ··<span·class="text">Fetching·Data</span>162 ··<span·class="text">Fetching·Data</span>
163 </h3>163 </h3>
164 <p>Do·not·fetch·data·that·you·already·have.</p><p>Consider·that·you·have·a·module·that·handles·the·abstract·data·type·<code·class="inline">Person</code>.164 <p>Do·not·fetch·data·that·you·already·have.</p><p>Consider·that·you·have·a·module·that·handles·the·abstract·data·type·<code·class="inline">Person</code>.
165 You·export·the·interface·function·<code·class="inline">print_person/1</code>,·which·uses·the·internal165 You·export·the·interface·function·<code·class="inline">print_person/1</code>,·which·uses·the·internal
166 functions·<code·class="inline">print_name/1</code>,·<code·class="inline">print_age/1</code>,·and·<code·class="inline">print_occupation/1</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·the·function·<code·class="inline">print_name/1</code>,·and·so·on,·had·been·interface·functions,·the166 functions·<code·class="inline">print_name/1</code>,·<code·class="inline">print_age/1</code>,·and·<code·class="inline">print_occupation/1</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·the·function·<code·class="inline">print_name/1</code>,·and·so·on,·had·been·interface·functions,·the
167 situation·would·have·been·different,·as·you·do·not·want·the·user·of·the167 situation·would·have·been·different,·as·you·do·not·want·the·user·of·the
168 interface·to·know·about·the·internal·data·representation.</p></section><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%·Interface·function</span><span·class="w">168 interface·to·know·about·the·internal·data·representation.</p></section><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%·Interface·function</span><span·class="w">
169 </span><span·class="nf">print_person</span><span·class="p"·data-group-id="3981741086-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="3981741086-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">169 </span><span·class="nf">print_person</span><span·class="p"·data-group-id="5483415974-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="5483415974-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ····</span><span·class="c1">%%·Look·up·the·person·in·the·named·table·person,</span><span·class="w">170 ····</span><span·class="c1">%%·Look·up·the·person·in·the·named·table·person,</span><span·class="w">
171 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="3981741086-2">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PersonId</span><span·class="p"·data-group-id="3981741086-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">171 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="5483415974-2">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PersonId</span><span·class="p"·data-group-id="5483415974-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="3981741086-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="3981741086-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ········</span><span·class="p"·data-group-id="5483415974-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="5483415974-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
173 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="3981741086-4">(</span><span·class="n">Person</span><span·class="p"·data-group-id="3981741086-4">)</span><span·class="p">,</span><span·class="w">173 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="5483415974-4">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5483415974-4">)</span><span·class="p">,</span><span·class="w">
174 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="3981741086-5">(</span><span·class="n">Person</span><span·class="p"·data-group-id="3981741086-5">)</span><span·class="p">,</span><span·class="w">174 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="5483415974-5">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5483415974-5">)</span><span·class="p">,</span><span·class="w">
175 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="3981741086-6">(</span><span·class="n">Person</span><span·class="p"·data-group-id="3981741086-6">)</span><span·class="p">;</span><span·class="w">175 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="5483415974-6">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5483415974-6">)</span><span·class="p">;</span><span·class="w">
176 ········</span><span·class="p"·data-group-id="3981741086-7">[</span><span·class="p"·data-group-id="3981741086-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 ········</span><span·class="p"·data-group-id="5483415974-7">[</span><span·class="p"·data-group-id="5483415974-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3981741086-8">(</span><span·class="s">&quot;No·person·with·ID·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3981741086-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·d50b186ab2699fa02179e95ec699f04438075f59a0c61f63193eae68053ff171·...·]-8">)</span><span·class="w">177 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5483415974-8">(</span><span·class="s">&quot;No·person·with·ID·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5483415974-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·bf204e8d6b578c9adf9409e45631217f4763e50931e28788dc045c0698aa4016·...·]-8">)</span><span·class="w">
178 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">178 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="c1">%%%·Internal·functions</span><span·class="w">179 </span><span·class="c1">%%%·Internal·functions</span><span·class="w">
180 </span><span·class="nf">print_name</span><span·class="p"·data-group-id="3981741086-10">(</span><span·class="n">Person</span><span·class="p"·data-group-id="3981741086-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 </span><span·class="nf">print_name</span><span·class="p"·data-group-id="5483415974-10">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5483415974-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3981741086-11">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3981741086-12">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·a2540f4a413f1017576171fc5f0df80cb05c6a8c3ec33b8fb766089d1378d028·...·]-11">)</span><span·class="p">.</span><span·class="w">181 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5483415974-11">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5483415974-12">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·e88219ed47fe99046ce72ed40ec2f7e8cd01d8203f010c8d39e6a186ca5d8115·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="3981741086-13">(</span><span·class="n">Person</span><span·class="p"·data-group-id="3981741086-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="5483415974-13">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5483415974-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3981741086-14">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3981741086-15">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·72e925ddfa2ea0ea6d3f1322978f446fc5c6a91ad9231dd950df84c0dc32b3c8·...·]-14">)</span><span·class="p">.</span><span·class="w">183 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5483415974-14">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5483415974-15">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·863d5590522f0fd9fa7fd5bd017bd42929e288c3079b07a78b1f16971a867446·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="3981741086-16">(</span><span·class="n">Person</span><span·class="p"·data-group-id="3981741086-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="5483415974-16">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5483415974-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3981741086-17">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3981741086-18">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·67401deb961e15e5de114ad6fce0e723fbbb69e449946d4702782b2e5847ee67·...·]-17">)</span><span·class="p">.</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%·Interface·function</span><span·class="w">185 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5483415974-17">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5483415974-18">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·9ee94a4ec619ef34aa387fb7d84c1283fecb5e43635111cf6a29455b0e211e6f·...·]-17">)</span><span·class="p">.</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%·Interface·function</span><span·class="w">
186 </span><span·class="nf">print_person</span><span·class="p"·data-group-id="6156393724-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="6156393724-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">186 </span><span·class="nf">print_person</span><span·class="p"·data-group-id="5223427753-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="5223427753-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="c1">%%·Look·up·the·person·in·the·named·table·person,</span><span·class="w">187 ····</span><span·class="c1">%%·Look·up·the·person·in·the·named·table·person,</span><span·class="w">
188 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="6156393724-2">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PersonId</span><span·class="p"·data-group-id="6156393724-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">188 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="5223427753-2">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PersonId</span><span·class="p"·data-group-id="5223427753-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
189 ········</span><span·class="p"·data-group-id="6156393724-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6156393724-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 ········</span><span·class="p"·data-group-id="5223427753-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="5223427753-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="6156393724-4">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6156393724-4">)</span><span·class="p">,</span><span·class="w">190 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="5223427753-4">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="5223427753-4">)</span><span·class="p">,</span><span·class="w">
191 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="6156393724-5">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6156393724-5">)</span><span·class="p">,</span><span·class="w">191 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="5223427753-5">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="5223427753-5">)</span><span·class="p">,</span><span·class="w">
192 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="6156393724-6">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6156393724-6">)</span><span·class="p">;</span><span·class="w">192 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="5223427753-6">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="5223427753-6">)</span><span·class="p">;</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="6156393724-7">[</span><span·class="p"·data-group-id="6156393724-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="5223427753-7">[</span><span·class="p"·data-group-id="5223427753-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6156393724-8">(</span><span·class="s">&quot;No·person·with·ID·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6156393724-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·04ab93fa27e301b1eec0eba86684e0ca7b20403539fc2a8cbe2ac9a18639bac7·...·]-8">)</span><span·class="w">194 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5223427753-8">(</span><span·class="s">&quot;No·person·with·ID·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5223427753-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·c5c1e9e5cb2325c78e2454578f0df00a18961221bb4724d0d7203383599b0aa3·...·]-8">)</span><span·class="w">
195 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="c1">%%%·Internal·functions</span><span·class="w">196 </span><span·class="c1">%%%·Internal·functions</span><span·class="w">
197 </span><span·class="nf">print_name</span><span·class="p"·data-group-id="6156393724-10">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6156393724-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">197 </span><span·class="nf">print_name</span><span·class="p"·data-group-id="5223427753-10">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="5223427753-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
198 ····</span><span·class="p"·data-group-id="6156393724-11">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6156393724-11">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</sp[·...·truncated·by·diffoscope;·len:·207,·SHA:·d8362e18de3e0c01839e200ee4fbe79b5e96a042ad38ea6734bb43e86397e64c·...·]-12">)</span><span·class="p">,</span><span·class="w">198 ····</span><span·class="p"·data-group-id="5223427753-11">[</span><span·class="n">Person</span><span·class="p"·data-group-id="5223427753-11">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</sp[·...·truncated·by·diffoscope;·len:·207,·SHA:·52d32990ac0897dc1d00d456c6438d832e80a694010919db9056e868f4e1044f·...·]-12">)</span><span·class="p">,</span><span·class="w">
199 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6156393724-13">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6156393724-14">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·1d4e79b95a2498d723acadc7886497b51269946772a8ff672e7de97a908d71eb·...·]-13">)</span><span·class="p">.</span><span·class="w">199 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5223427753-13">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5223427753-14">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·8b49c48097f8886da4caa981ea7b2738f6b194d6ebd1a094280934e5ccf1eeab·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="6156393724-15">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6156393724-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="5223427753-15">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="5223427753-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ····</span><span·class="p"·data-group-id="6156393724-16">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6156393724-16">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</sp[·...·truncated·by·diffoscope;·len:·207,·SHA:·4ef1609eae6cb13301c1b7c6a54f234f8aadf2da2e46c2df735b361610ededce·...·]-17">)</span><span·class="p">,</span><span·class="w">201 ····</span><span·class="p"·data-group-id="5223427753-16">[</span><span·class="n">Person</span><span·class="p"·data-group-id="5223427753-16">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</sp[·...·truncated·by·diffoscope;·len:·207,·SHA:·b6d02dff7ab2f14df54f5d065cb3b3dc70bb7f1f084302c9f1ccc2687d75aa16·...·]-17">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6156393724-18">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6156393724-19">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·7c23f297f6314992bd2784db2d9baabdf2a5803f6ddf7626843cb1f0ec78f7e0·...·]-18">)</span><span·class="p">.</span><span·class="w">202 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5223427753-18">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5223427753-19">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·16051b70e98e139d0fc0636b6bae040af7ad686237bd5535b9d2574563572675·...·]-18">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="6156393724-20">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6156393724-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">203 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="5223427753-20">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="5223427753-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="p"·data-group-id="6156393724-21">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6156393724-21">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</sp[·...·truncated·by·diffoscope;·len:·207,·SHA:·913dea8332f158990b386ba71d3a19c3ff21586bf7c87d780066aa72e628cbeb·...·]-22">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="p"·data-group-id="5223427753-21">[</span><span·class="n">Person</span><span·class="p"·data-group-id="5223427753-21">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</sp[·...·truncated·by·diffoscope;·len:·207,·SHA:·5af0333b52624a3c8568f9a6a2baca139d195cb9f3aef25e0e2e14a4a97a1493·...·]-22">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6156393724-23">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6156393724-24">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·f16ec4f03dbd43115df2f9d9e5d14c1bfab2fad379dba6498f73b2c349708457·...·]-23">)</span><span·class="p">.</span></code></pre><h3·id="non-persistent-database-storage"·class="section-heading">205 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5223427753-23">(</span><span·class="s">&quot;No·person·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5223427753-24">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·545a14d6164b1776d1467675e86a9b9ac74a10201df2a1eaaae68b076c7ebbad·...·]-23">)</span><span·class="p">.</span></code></pre><h3·id="non-persistent-database-storage"·class="section-heading">
206 ··<a·href="#non-persistent-database-storage"·class="hover-link">206 ··<a·href="#non-persistent-database-storage"·class="hover-link">
207 ····<i·class="ri-link-m"·aria-hidden="true"></i>207 ····<i·class="ri-link-m"·aria-hidden="true"></i>
208 ··</a>208 ··</a>
209 ··<span·class="text">Non-Persistent·Database·Storage</span>209 ··<span·class="text">Non-Persistent·Database·Storage</span>
210 </h3>210 </h3>
211 <p>For·non-persistent·database·storage,·prefer·Ets·tables·over·Mnesia211 <p>For·non-persistent·database·storage,·prefer·Ets·tables·over·Mnesia
212 <code·class="inline">local_content</code>·tables.·Even·the·Mnesia·<code·class="inline">dirty_write</code>·operations·carry·a·fixed212 <code·class="inline">local_content</code>·tables.·Even·the·Mnesia·<code·class="inline">dirty_write</code>·operations·carry·a·fixed
Offset 226, 38 lines modifiedOffset 226, 38 lines modified
226 </h3>226 </h3>
227 <p>Assuming·an·Ets·table·that·uses·<code·class="inline">idno</code>·as·key·and·contains·the·following:</p><pre><code·class="text">[#person{idno·=·1,·name·=·&quot;Adam&quot;,··age·=·31,·occupation·=·&quot;mailman&quot;},227 <p>Assuming·an·Ets·table·that·uses·<code·class="inline">idno</code>·as·key·and·contains·the·following:</p><pre><code·class="text">[#person{idno·=·1,·name·=·&quot;Adam&quot;,··age·=·31,·occupation·=·&quot;mailman&quot;},
228 ·#person{idno·=·2,·name·=·&quot;Bryan&quot;,·age·=·31,·occupation·=·&quot;cashier&quot;},228 ·#person{idno·=·2,·name·=·&quot;Bryan&quot;,·age·=·31,·occupation·=·&quot;cashier&quot;},
229 ·#person{idno·=·3,·name·=·&quot;Bryan&quot;,·age·=·35,·occupation·=·&quot;banker&quot;},229 ·#person{idno·=·3,·name·=·&quot;Bryan&quot;,·age·=·35,·occupation·=·&quot;banker&quot;},
230 ·#person{idno·=·4,·name·=·&quot;Carl&quot;,··age·=·25,·occupation·=·&quot;mailman&quot;}]</code></pre><p>If·you·<em>must</em>·return·all·data·stored·in·the·Ets·table,·you·can·use230 ·#person{idno·=·4,·name·=·&quot;Carl&quot;,··age·=·25,·occupation·=·&quot;mailman&quot;}]</code></pre><p>If·you·<em>must</em>·return·all·data·stored·in·the·Ets·table,·you·can·use
231 <a·href="../../lib/stdlib-6.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>.·However,·usually·you·are·only·interested·in·a·subset·of·the231 <a·href="../../lib/stdlib-6.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>.·However,·usually·you·are·only·interested·in·a·subset·of·the
232 information·in·which·case·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>·is·expensive.·If·you·only·want·to232 information·in·which·case·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>·is·expensive.·If·you·only·want·to
233 extract·one·field·from·each·record,·for·example,·the·age·of·every·person,·then:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="2963064924-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2963064924-2">[</span><span·class="p"·data-group-id="2963064924-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·b55dece8bf5204318cd0d2397128373f5ea1cc8b528756e0bf3925e48b970f9e·...·]-4">{</span><span·class="ss">idno</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">233 extract·one·field·from·each·record,·for·example,·the·age·of·every·person,·then:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="5405483352-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5405483352-2">[</span><span·class="p"·data-group-id="5405483352-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·8a12ae097b5e5d88035a4db7bab1c338e05caff7a3771a93870a525715802c22·...·]-4">{</span><span·class="ss">idno</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
234 ··························</span><span·class="ss">name</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">234 ··························</span><span·class="ss">name</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
235 ··························</span><span·class="ss">age</span><span·class="o">=</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">235 ··························</span><span·class="ss">age</span><span·class="o">=</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
236 ··························</span><span·class="ss">occupation</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="2963064924-4">}</span><span·class="p">,</span><span·class="w">236 ··························</span><span·class="ss">occupation</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="5405483352-4">}</span><span·class="p">,</span><span·class="w">
237 ················</span><span·class="p"·data-group-id="2963064924-5">[</span><span·class="p"·data-group-id="2963064924-5">]</span><span·class="p">,</span><span·class="w">237 ················</span><span·class="p"·data-group-id="5405483352-5">[</span><span·class="p"·data-group-id="5405483352-5">]</span><span·class="p">,</span><span·class="w">
238 ················</span><span·class="p"·data-group-id="2963064924-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2963064924-6">]</span><span·class="p"·data-group-id="2963064924-3">}</span><span·class="p"·data-group-id="2963064924-2">]</span><span·class="p"·data-group-id="29630649[·...·truncated·by·diffoscope;·len:·434,·SHA:·a0e1285c62117cdb8585b52e8246276dbdea30abfb725ea5324818c27382cc31·...·]-1">)</span><span·class="p">,</span><span·class="w">238 ················</span><span·class="p"·data-group-id="5405483352-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="5405483352-6">]</span><span·class="p"·data-group-id="5405483352-3">}</span><span·class="p"·data-group-id="5405483352-2">]</span><span·class="p"·data-group-id="54054833[·...·truncated·by·diffoscope;·len:·434,·SHA:·093fa90ec4214fb64a77dbf44c90745a611d72cc9cd3b3c6266173435bda1917·...·]-1">)</span><span·class="p">,</span><span·class="w">
239 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="7532436636-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7532436636-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="7532436636-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·919,·SHA:·39e6c5ed3276533122d018e3add0891d57832f53e4929140729e047725fdeb6e·...·]-4">{</span><span·class="ss">idno</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">239 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="3652973134-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3652973134-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="3652973134-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·919,·SHA:·122e30e896659d42e422771957bbbb23a31db2efa0e1d4a79e16043f7a7f9e84·...·]-4">{</span><span·class="ss">idno</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
240 ··························</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Bryan&quot;</span><span·class="p">,</span><span·class="w">240 ··························</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Bryan&quot;</span><span·class="p">,</span><span·class="w">
241 ··························</span><span·class="ss">age</span><span·class="o">=</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">241 ··························</span><span·class="ss">age</span><span·class="o">=</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
242 ··························</span><span·class="ss">occupation</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="4211419242-4">}</span><span·class="p">,</span><span·class="w">242 ··························</span><span·class="ss">occupation</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="1487002301-4">}</span><span·class="p">,</span><span·class="w">
243 ················</span><span·class="p"·data-group-id="4211419242-5">[</span><span·class="p"·data-group-id="4211419242-5">]</span><span·class="p">,</span><span·class="w">243 ················</span><span·class="p"·data-group-id="1487002301-5">[</span><span·class="p"·data-group-id="1487002301-5">]</span><span·class="p">,</span><span·class="w">
244 ················</span><span·class="p"·data-group-id="4211419242-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="4211419242-6">]</span><span·class="p"·data-group-id="4211419242-3">}</span><span·class="p"·data-group-id="4211419242-2">]</span><span·class="p"·data-group-id="42114192[·...·truncated·by·diffoscope;·len:·410,·SHA:·a6c71357fb7c3eed8867a929900277017b3b2483449bd8272a4519975aca15dd·...·]-1">)</span><span·class="p">,</span><span·class="w">244 ················</span><span·class="p"·data-group-id="1487002301-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="1487002301-6">]</span><span·class="p"·data-group-id="1487002301-3">}</span><span·class="p"·data-group-id="1487002301-2">]</span><span·class="p"·data-group-id="14870023[·...·truncated·by·diffoscope;·len:·410,·SHA:·a804aec2e1906207064f583f57028dda54e50e4ae2224a2d5df15e60675c976e·...·]-1">)</span><span·class="p">,</span><span·class="w">
245 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="5757727456-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5757727456-3">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="5757727456-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="w">·</span><span·class="k">of</span><span·class="w">245 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="1472107042-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1472107042-3">(</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="1472107042-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
246 ································</span><span·class="s">&quot;Bryan&quot;</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">246 ································</span><span·class="s">&quot;Bryan&quot;</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
247 ····································</span><span·class="p"·data-group-id="5757727456-4">[</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">age</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="5757727456-4">]</span><span·class="p">;</span><span·class="w">247 ····································</span><span·class="p"·data-group-id="1472107042-4">[</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">age</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="1472107042-4">]</span><span·class="p">;</span><span·class="w">
248 ·································</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">248 ·································</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
249 ·····································</span><span·class="n">Acc</span><span·class="w">249 ·····································</span><span·class="n">Acc</span><span·class="w">
250 ···························</span><span·class="k">end</span><span·class="w">250 ···························</span><span·class="k">end</span><span·class="w">
251 ·············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5757727456-5">[</span><span·class="p"·data-group-id="5757727456-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabList</span><span·class="p"·data-group-id="5757727456-2">)</span></code></pre><p>If·you·need·all·information·stored·in·the·Ets·table·about·persons·named·&quot;Bryan&quot;,251 ·············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1472107042-5">[</span><span·class="p"·data-group-id="1472107042-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabList</span><span·class="p"·data-group-id="1472107042-2">)</span></code></pre><p>If·you·need·all·information·stored·in·the·Ets·table·about·persons·named·&quot;Bryan&quot;,
252 then:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="2957249584-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2957249584-2">[</span><span·class="p"·data-group-id="2957249584-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·74b7539e6be451306c8fb53e167b4e7d064612461f2a912f26b8189bd8d34eb4·...·]4-4">{</span><span·class="ss">idno</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">252 then:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="7850786674-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7850786674-2">[</span><span·class="p"·data-group-id="7850786674-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·95e6edde6691f8e9c3a348ad727c2c2d83feffc8ad7e1182805bceed17cd48ed·...·]4-4">{</span><span·class="ss">idno</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
253 ··························</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Bryan&quot;</span><span·class="p">,</span><span·class="w">253 ··························</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Bryan&quot;</span><span·class="p">,</span><span·class="w">
254 ··························</span><span·class="ss">age</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">254 ··························</span><span·class="ss">age</span><span·class="o">=</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
255 ··························</span><span·class="ss">occupation</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="2957249584-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2957249584-5">[</span><span·class="p"·data-group-id="2957249584-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2[·...·truncated·by·diffoscope;·len:·689,·SHA:·0f0e0f8bb828a33ac30a4a4a79e271307d0b821c6b0b2b5aaccdceb841eaad48·...·]-1">)</span><span·class="p">,</span><span·class="w">255 ··························</span><span·class="ss">occupation</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="7850786674-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7850786674-5">[</span><span·class="p"·data-group-id="7850786674-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7[·...·truncated·by·diffoscope;·len:·689,·SHA:·042e58c64aab651729fc7202fd43499eda8edb649c0d0c65737b40ca3a030bad·...·]-1">)</span><span·class="p">,</span><span·class="w">
256 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="2276797358-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2276797358-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="2276797358-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·a3185c2042a27595795c36281e661fae8ccfdfb4d31205765049b60475fe32d5·...·]-2">)</span><span·class="p">,</span></code></pre><h3·id="ordered_set-tables"·class="section-heading">256 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="3230617321-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3230617321-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="3230617321-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·9f222ddacbacf1f546cd73c2c85792290a4463a31659b457b4b4d89cd3ea1a92·...·]-2">)</span><span·class="p">,</span></code></pre><h3·id="ordered_set-tables"·class="section-heading">
257 ··<a·href="#ordered_set-tables"·class="hover-link">257 ··<a·href="#ordered_set-tables"·class="hover-link">
258 ····<i·class="ri-link-m"·aria-hidden="true"></i>258 ····<i·class="ri-link-m"·aria-hidden="true"></i>
259 ··</a>259 ··</a>
260 ··<span·class="text"><code·class="inline">ordered_set</code>·Tables</span>260 ··<span·class="text"><code·class="inline">ordered_set</code>·Tables</span>
261 </h3>261 </h3>
262 <p>If·the·data·in·the·table·is·to·be·accessed·so·that·the·order·of·the·keys·in·the262 <p>If·the·data·in·the·table·is·to·be·accessed·so·that·the·order·of·the·keys·in·the
263 table·is·significant,·the·table·type·<code·class="inline">ordered_set</code>·can·be·used·instead·of·the263 table·is·significant,·the·table·type·<code·class="inline">ordered_set</code>·can·be·used·instead·of·the
Offset 293, 20 lines modifiedOffset 293, 20 lines modified
293 Clearly,·the·second·table·would·have·to·be·kept·consistent·with·the·master293 Clearly,·the·second·table·would·have·to·be·kept·consistent·with·the·master
294 table.·Mnesia·can·do·this·for·you,·but·a·home-brew·index·table·can·be·very294 table.·Mnesia·can·do·this·for·you,·but·a·home-brew·index·table·can·be·very
295 efficient·compared·to·the·overhead·involved·in·using·Mnesia.</p><p>An·index·table·for·the·table·in·the·previous·examples·would·have·to·be·a·bag·(as295 efficient·compared·to·the·overhead·involved·in·using·Mnesia.</p><p>An·index·table·for·the·table·in·the·previous·examples·would·have·to·be·a·bag·(as
296 keys·would·appear·more·than·once)·and·can·have·the·following·contents:</p><pre><code·class="text">[#index_entry{name=&quot;Adam&quot;,·idno=1},296 keys·would·appear·more·than·once)·and·can·have·the·following·contents:</p><pre><code·class="text">[#index_entry{name=&quot;Adam&quot;,·idno=1},
297 ·#index_entry{name=&quot;Bryan&quot;,·idno=2},297 ·#index_entry{name=&quot;Bryan&quot;,·idno=2},
298 ·#index_entry{name=&quot;Bryan&quot;,·idno=3},298 ·#index_entry{name=&quot;Bryan&quot;,·idno=3},
299 ·#index_entry{name=&quot;Carl&quot;,·idno=4}]</code></pre><p>Given·this·index·table,·a·lookup·of·the·<code·class="inline">age</code>·fields·for·all·persons·named299 ·#index_entry{name=&quot;Carl&quot;,·idno=4}]</code></pre><p>Given·this·index·table,·a·lookup·of·the·<code·class="inline">age</code>·fields·for·all·persons·named
300 &quot;Bryan&quot;·can·be·done·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MatchingIDs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="3965347325-1">(</span><span·class="n">IndexTable</span><span·class="p">,</span><span·class="s">&quot;Bryan&quot;</span><span·class="p"·data-group-id="3965347325-1">)</span><span·class="p">,</span><span·class="w">300 &quot;Bryan&quot;·can·be·done·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MatchingIDs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="5381784970-1">(</span><span·class="n">IndexTable</span><span·class="p">,</span><span·class="s">&quot;Bryan&quot;</span><span·class="p"·data-group-id="5381784970-1">)</span><span·class="p">,</span><span·class="w">
301 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="3965347325-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3965347325-3">(</span><span·class="o">#</span><span·class="ss">index_entry</span><span·class="p"·data-group-id="3965347325-4">{</span><span·class="ss">idno</span><span·class="w[·...·truncated·by·diffoscope;·len:·177,·SHA:·13112b5cc55c7e0d6ac2b8667822982bdc317eb89dc822b41131536d0e53bc37·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">301 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="5381784970-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5381784970-3">(</span><span·class="o">#</span><span·class="ss">index_entry</span><span·class="p"·data-group-id="5381784970-4">{</span><span·class="ss">idno</span><span·class="w[·...·truncated·by·diffoscope;·len:·177,·SHA:·5aa39b77068bd80d484067fc60d1d9bcf26538ed6ba61ba3e24b88f69444c8d5·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 ·················</span><span·class="p"·data-group-id="3965347325-5">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="3965347325-6">{</span><span·class="ss">age</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Age</span><s[·...·truncated·by·diffoscope;·len:·458,·SHA:·225b8b99c815828209d6211fa34eaf33b7c736f3f214089167fa01df7b8d24ad·...·]-7">)</span><span·class="p">,</span><span·class="w">302 ·················</span><span·class="p"·data-group-id="5381784970-5">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5381784970-6">{</span><span·class="ss">age</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Age</span><s[·...·truncated·by·diffoscope;·len:·458,·SHA:·8fd6c915b78e1edfb7a352496dc509e0e0f41eff9f7d6bc343d79adb8d332286·...·]-7">)</span><span·class="p">,</span><span·class="w">
303 ·················</span><span·class="n">Age</span><span·class="w">303 ·················</span><span·class="n">Age</span><span·class="w">
304 ··········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">304 ··········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
305 ··········</span><span·class="n">MatchingIDs</span><span·class="p"·data-group-id="3965347325-2">)</span><span·class="p">,</span></code></pre><p>Notice·that·this·code·does·not·use·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>,·but·instead·uses·the305 ··········</span><span·class="n">MatchingIDs</span><span·class="p"·data-group-id="5381784970-2">)</span><span·class="p">,</span></code></pre><p>Notice·that·this·code·does·not·use·<a·href="../../lib/stdlib-6.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>,·but·instead·uses·the
306 <a·href="../../lib/stdlib-6.2/doc/html/ets.html#lookup/2"><code·class="inline">ets:lookup/2</code></a>·call.·The·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#map/2"><code·class="inline">lists:map/2</code></a>·call·is·only·used·to·traverse·the·<code·class="inline">idno</code>s306 <a·href="../../lib/stdlib-6.2/doc/html/ets.html#lookup/2"><code·class="inline">ets:lookup/2</code></a>·call.·The·<a·href="../../lib/stdlib-6.2/doc/html/lists.html#map/2"><code·class="inline">lists:map/2</code></a>·call·is·only·used·to·traverse·the·<code·class="inline">idno</code>s
Max diff block lines reached; 16275/71663 bytes (22.71%) of diff not shown.
68.7 KB
./usr/share/doc/erlang-doc/html/doc/system/typespec.html
    
Offset 238, 124 lines modifiedOffset 238, 124 lines modified
238 and·optional·<code·class="inline">(=&gt;)</code>·association·types.·If·an·association·type·is·mandatory,·an238 and·optional·<code·class="inline">(=&gt;)</code>·association·types.·If·an·association·type·is·mandatory,·an
239 association·with·that·type·needs·to·be·present.·In·the·case·of·an·optional239 association·with·that·type·needs·to·be·present.·In·the·case·of·an·optional
240 association·type·it·is·not·required·for·the·key·type·to·be·present.</p><p>The·notation·<code·class="inline">#{}</code>·specifies·the·singleton·type·for·the·empty·map.·Note·that240 association·type·it·is·not·required·for·the·key·type·to·be·present.</p><p>The·notation·<code·class="inline">#{}</code>·specifies·the·singleton·type·for·the·empty·map.·Note·that
241 this·notation·is·not·a·shorthand·for·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:map/0"><code·class="inline">map/0</code></a>·type.</p><p>For·convenience,·the·following·types·are·also·built-in.·They·can·be·thought·as241 this·notation·is·not·a·shorthand·for·the·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:map/0"><code·class="inline">map/0</code></a>·type.</p><p>For·convenience,·the·following·types·are·also·built-in.·They·can·be·thought·as
242 predefined·aliases·for·the·type·unions·also·shown·in·the·table.</p><p><a·href=""·id="builtin_types"></a></p><table><thead><tr><th·style="text-align:·left;"><em>Built-in·type</em></th><th·style="text-align:·left;"><em>Defined·as</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:any/0"><code·class="inline">any/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:_*8&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_binary/0"><code·class="inline">nonempty_binary/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:8,·_:_*8&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:bitstring/0"><code·class="inline">bitstring/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:_*1&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_bitstring/0"><code·class="inline">nonempty_bitstring/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:1,·_:_*1&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:boolean/0"><code·class="inline">boolean/0</code></a></td><td·style="text-align:·left;"><code·class="inline">'false'</code>·|·<code·class="inline">'true'</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..255</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:char/0"><code·class="inline">char/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..16#10ffff</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nil/0"><code·class="inline">nil/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:number/0"><code·class="inline">number/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>·|·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:float/0"><code·class="inline">float/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[any()]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:maybe_improper_list/0"><code·class="inline">maybe_improper_list/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:maybe_improper_list/2"><code·class="inline">maybe_improper_list(any(),·any())</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_list/0"><code·class="inline">nonempty_list/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_list/1"><code·class="inline">nonempty_list(any())</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:string/0"><code·class="inline">string/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[char()]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_string/0"><code·class="inline">nonempty_string/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[char(),...]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:iodata/0"><code·class="inline">iodata/0</code></a></td><td·style="text-align:·left;"><code·class="inline">iolist()</code>·|·<code·class="inline">binary()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:iolist/0"><code·class="inline">iolist/0</code></a></td><td·style="text-align:·left;"><code·class="inline">maybe_improper_list(byte()</code>·|·<code·class="inline">binary()</code>·|·<code·class="inline">iolist(),·binary()</code>·|·<code·class="inline">[])</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:map/0"><code·class="inline">map/0</code></a></td><td·style="text-align:·left;"><code·class="inline">#{any()·=&gt;·any()}</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:function/0"><code·class="inline">function/0</code></a></td><td·style="text-align:·left;"><code·class="inline">fun()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:module/0"><code·class="inline">module/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:atom/0"><code·class="inline">atom/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:mfa/0"><code·class="inline">mfa/0</code></a></td><td·style="text-align:·left;"><code·class="inline">{module(),atom(),arity()}</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:arity/0"><code·class="inline">arity/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..255</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:identifier/0"><code·class="inline">identifier/0</code></a></td><td·style="text-align:·left;"><code·class="inline">pid()</code>·|·<code·class="inline">port()</code>·|·<code·class="inline">reference()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#node/0"><code·class="inline">node/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:atom/0"><code·class="inline">atom/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:timeout/0"><code·class="inline">timeout/0</code></a></td><td·style="text-align:·left;"><code·class="inline">'infinity'</code>·|·<code·class="inline">non_neg_integer()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:no_return/0"><code·class="inline">no_return/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:none/0"><code·class="inline">none/0</code></a></td></tr></tbody></table><p><em>Table:·Built-in·types,·predefined·aliases</em></p><p>In·addition,·the·following·three·built-in·types·exist·and·can·be·thought·as242 predefined·aliases·for·the·type·unions·also·shown·in·the·table.</p><p><a·href=""·id="builtin_types"></a></p><table><thead><tr><th·style="text-align:·left;"><em>Built-in·type</em></th><th·style="text-align:·left;"><em>Defined·as</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:any/0"><code·class="inline">any/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:_*8&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_binary/0"><code·class="inline">nonempty_binary/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:8,·_:_*8&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:bitstring/0"><code·class="inline">bitstring/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:_*1&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_bitstring/0"><code·class="inline">nonempty_bitstring/0</code></a></td><td·style="text-align:·left;"><code·class="inline">&lt;&lt;_:1,·_:_*1&gt;&gt;</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:boolean/0"><code·class="inline">boolean/0</code></a></td><td·style="text-align:·left;"><code·class="inline">'false'</code>·|·<code·class="inline">'true'</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..255</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:char/0"><code·class="inline">char/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..16#10ffff</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nil/0"><code·class="inline">nil/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:number/0"><code·class="inline">number/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>·|·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:float/0"><code·class="inline">float/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[any()]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:maybe_improper_list/0"><code·class="inline">maybe_improper_list/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:maybe_improper_list/2"><code·class="inline">maybe_improper_list(any(),·any())</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_list/0"><code·class="inline">nonempty_list/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_list/1"><code·class="inline">nonempty_list(any())</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:string/0"><code·class="inline">string/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[char()]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:nonempty_string/0"><code·class="inline">nonempty_string/0</code></a></td><td·style="text-align:·left;"><code·class="inline">[char(),...]</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:iodata/0"><code·class="inline">iodata/0</code></a></td><td·style="text-align:·left;"><code·class="inline">iolist()</code>·|·<code·class="inline">binary()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:iolist/0"><code·class="inline">iolist/0</code></a></td><td·style="text-align:·left;"><code·class="inline">maybe_improper_list(byte()</code>·|·<code·class="inline">binary()</code>·|·<code·class="inline">iolist(),·binary()</code>·|·<code·class="inline">[])</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:map/0"><code·class="inline">map/0</code></a></td><td·style="text-align:·left;"><code·class="inline">#{any()·=&gt;·any()}</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:function/0"><code·class="inline">function/0</code></a></td><td·style="text-align:·left;"><code·class="inline">fun()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:module/0"><code·class="inline">module/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:atom/0"><code·class="inline">atom/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:mfa/0"><code·class="inline">mfa/0</code></a></td><td·style="text-align:·left;"><code·class="inline">{module(),atom(),arity()}</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:arity/0"><code·class="inline">arity/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..255</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:identifier/0"><code·class="inline">identifier/0</code></a></td><td·style="text-align:·left;"><code·class="inline">pid()</code>·|·<code·class="inline">port()</code>·|·<code·class="inline">reference()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#node/0"><code·class="inline">node/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:atom/0"><code·class="inline">atom/0</code></a></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:timeout/0"><code·class="inline">timeout/0</code></a></td><td·style="text-align:·left;"><code·class="inline">'infinity'</code>·|·<code·class="inline">non_neg_integer()</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:no_return/0"><code·class="inline">no_return/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:none/0"><code·class="inline">none/0</code></a></td></tr></tbody></table><p><em>Table:·Built-in·types,·predefined·aliases</em></p><p>In·addition,·the·following·three·built-in·types·exist·and·can·be·thought·as
243 defined·below,·though·strictly·their·&quot;type·definition&quot;·is·not·valid·syntax243 defined·below,·though·strictly·their·&quot;type·definition&quot;·is·not·valid·syntax
244 according·to·the·type·language·defined·above.</p><table><thead><tr><th·style="text-align:·left;"><em>Built-in·type</em></th><th·style="text-align:·left;"><em>Can·be·thought·defined·by·the·syntax</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:pos_integer/0"><code·class="inline">pos_integer/0</code></a></td><td·style="text-align:·left;"><code·class="inline">1..</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:neg_integer/0"><code·class="inline">neg_integer/0</code></a></td><td·style="text-align:·left;"><code·class="inline">..-1</code></td></tr></tbody></table><p><em>Table:·Additional·built-in·types</em></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·following·built-in·list·types·also·exist,·but·they·are·expected·to·be244 according·to·the·type·language·defined·above.</p><table><thead><tr><th·style="text-align:·left;"><em>Built-in·type</em></th><th·style="text-align:·left;"><em>Can·be·thought·defined·by·the·syntax</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></td><td·style="text-align:·left;"><code·class="inline">0..</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:pos_integer/0"><code·class="inline">pos_integer/0</code></a></td><td·style="text-align:·left;"><code·class="inline">1..</code></td></tr><tr><td·style="text-align:·left;"><a·href="../../erts-15.2.2/doc/html/erlang.html#t:neg_integer/0"><code·class="inline">neg_integer/0</code></a></td><td·style="text-align:·left;"><code·class="inline">..-1</code></td></tr></tbody></table><p><em>Table:·Additional·built-in·types</em></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·following·built-in·list·types·also·exist,·but·they·are·expected·to·be
245 rarely·used.·Hence,·they·have·long·names:</p></section><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="9584502832-1">(</span><span·class="p"·data-group-id="9584502832-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="95[·...·truncated·by·diffoscope;·len:·374,·SHA:·cf870c683b6c25882653295b610085d270bce6f884a8ccc67b7855596f9a8a66·...·]2-2">)</span><span·class="w">245 rarely·used.·Hence,·they·have·long·names:</p></section><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="8869494992-1">(</span><span·class="p"·data-group-id="8869494992-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="88[·...·truncated·by·diffoscope;·len:·374,·SHA:·6389b508a56f313807e295af2d721abe15588333493aa53d5190f4bf8020c979·...·]2-2">)</span><span·class="w">
246 </span><span·class="nf">nonempty_improper_list</span><span·class="p"·data-group-id="9584502832-5">(</span><span·class="n">Type1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type2</span><span·class="p"·data-group-id="9584502832-5">)</span><span·class="w">246 </span><span·class="nf">nonempty_improper_list</span><span·class="p"·data-group-id="8869494992-5">(</span><span·class="n">Type1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type2</span><span·class="p"·data-group-id="8869494992-5">)</span><span·class="w">
247 </span><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="9584502832-6">(</span><span·class="n">Type1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type2</span><span·class="p"·data-group-id="9584502832-6">)</span></code></pre><p>where·the·last·two·types·define·the·set·of·Erlang·terms·one·would·expect.</p><p>Also·for·convenience,·record·notation·is·allowed·to·be·used.·Records·are247 </span><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="8869494992-6">(</span><span·class="n">Type1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type2</span><span·class="p"·data-group-id="8869494992-6">)</span></code></pre><p>where·the·last·two·types·define·the·set·of·Erlang·terms·one·would·expect.</p><p>Also·for·convenience,·record·notation·is·allowed·to·be·used.·Records·are
248 shorthands·for·the·corresponding·tuples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Record</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Erlang_Atom</span><span·class="p"·data-group-id="0800502164-1">{</span><span·class="p"·data-group-id="0800502164-1">}</span><span·class="w">248 shorthands·for·the·corresponding·tuples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Record</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Erlang_Atom</span><span·class="p"·data-group-id="7082108183-1">{</span><span·class="p"·data-group-id="7082108183-1">}</span><span·class="w">
249 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Erlang_Atom</span><span·class="p"·data-group-id="0800502164-2">{</span><span·class="n">Fields</span><span·class="p"·data-group-id="0800502164-2">}</span></code></pre><p>Records·are·extended·to·possibly·contain·type·information.·This·is·described·in249 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Erlang_Atom</span><span·class="p"·data-group-id="7082108183-2">{</span><span·class="n">Fields</span><span·class="p"·data-group-id="7082108183-2">}</span></code></pre><p>Records·are·extended·to·possibly·contain·type·information.·This·is·described·in
250 <a·href="typespec.html#typeinrecords">Type·Information·in·Record·Declarations</a>.</p><h3·id="redefining-built-in-types"·class="section-heading">250 <a·href="typespec.html#typeinrecords">Type·Information·in·Record·Declarations</a>.</p><h3·id="redefining-built-in-types"·class="section-heading">
251 ··<a·href="#redefining-built-in-types"·class="hover-link">251 ··<a·href="#redefining-built-in-types"·class="hover-link">
252 ····<i·class="ri-link-m"·aria-hidden="true"></i>252 ····<i·class="ri-link-m"·aria-hidden="true"></i>
253 ··</a>253 ··</a>
254 ··<span·class="text">Redefining·built-in·types</span>254 ··<span·class="text">Redefining·built-in·types</span>
255 </h3>255 </h3>
256 <section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Starting·from·Erlang/OTP·26,·it·is·permitted·to·define·a·type·having·the·same256 <section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Starting·from·Erlang/OTP·26,·it·is·permitted·to·define·a·type·having·the·same
257 name·as·a·built-in·type.</p></section><p>It·is·recommended·to·avoid·deliberately·reusing·built-in·names·because·it·can·be257 name·as·a·built-in·type.</p></section><p>It·is·recommended·to·avoid·deliberately·reusing·built-in·names·because·it·can·be
258 confusing.·However,·when·an·Erlang/OTP·release·introduces·a·new·type,·code·that258 confusing.·However,·when·an·Erlang/OTP·release·introduces·a·new·type,·code·that
259 happened·to·define·its·own·type·having·the·same·name·will·continue·to·work.</p><p>As·an·example,·imagine·that·the·Erlang/OTP·42·release·introduces·a·new·type259 happened·to·define·its·own·type·having·the·same·name·will·continue·to·work.</p><p>As·an·example,·imagine·that·the·Erlang/OTP·42·release·introduces·a·new·type
260 <code·class="inline">gadget()</code>·defined·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">gadget</span><span·class="p"·data-group-id="2545872083-1">(</span><span·class="p"·data-group-id="2545872083-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2545872083-2">{</span><span·class="ss">&#39;gadget&#39[·...·truncated·by·diffoscope;·len:·236,·SHA:·51158aa912233eb4b5ad5246f5c4f5674572d3849d92b844f55060e930edc1ed·...·]-2">}</span><span·class="p">.</span></code></pre><p>Further·imagine·that·some·code·has·its·own·(different)·definition·of·<code·class="inline">gadget()</code>,260 <code·class="inline">gadget()</code>·defined·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">gadget</span><span·class="p"·data-group-id="4294460420-1">(</span><span·class="p"·data-group-id="4294460420-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4294460420-2">{</span><span·class="ss">&#39;gadget&#39[·...·truncated·by·diffoscope;·len:·236,·SHA:·b2b0675ac3118a8fd972d66533fe849be5a36a0830b6f3a4b80a34f0fdf5a82c·...·]-2">}</span><span·class="p">.</span></code></pre><p>Further·imagine·that·some·code·has·its·own·(different)·definition·of·<code·class="inline">gadget()</code>,
261 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">gadget</span><span·class="p"·data-group-id="6361442512-1">(</span><span·class="p"·data-group-id="6361442512-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="6361442512-2">#{</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·9,·SHA:·4cfacbf236269fc28cc38eb993210ccf5addc470c239d850e3ecd7dd077625e7·...·]-2">}</span><span·class="p">.</span></code></pre><p>Since·redefinitions·are·allowed,·the·code·will·still·compile·(but·with·a261 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">gadget</span><span·class="p"·data-group-id="6855643484-1">(</span><span·class="p"·data-group-id="6855643484-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="6855643484-2">#{</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·9,·SHA:·842bc6ac9807445ea268d3bc466bc8f4a9b08e32e0eeafe2da9f872ff28e8f18·...·]-2">}</span><span·class="p">.</span></code></pre><p>Since·redefinitions·are·allowed,·the·code·will·still·compile·(but·with·a
262 warning),·and·Dialyzer·will·not·emit·any·additional·warnings.</p><h2·id="type-declarations-of-user-defined-types"·class="section-heading">262 warning),·and·Dialyzer·will·not·emit·any·additional·warnings.</p><h2·id="type-declarations-of-user-defined-types"·class="section-heading">
263 ··<a·href="#type-declarations-of-user-defined-types"·class="hover-link">263 ··<a·href="#type-declarations-of-user-defined-types"·class="hover-link">
264 ····<i·class="ri-link-m"·aria-hidden="true"></i>264 ····<i·class="ri-link-m"·aria-hidden="true"></i>
265 ··</a>265 ··</a>
266 ··<span·class="text">Type·Declarations·of·User-Defined·Types</span>266 ··<span·class="text">Type·Declarations·of·User-Defined·Types</span>
267 </h2>267 </h2>
268 <p>As·seen,·the·basic·syntax·of·a·type·is·an·atom·followed·by·closed·parentheses.268 <p>As·seen,·the·basic·syntax·of·a·type·is·an·atom·followed·by·closed·parentheses.
269 New·types·are·declared·using·<code·class="inline">-type</code>·and·<code·class="inline">-opaque</code>·attributes·as·in·the269 New·types·are·declared·using·<code·class="inline">-type</code>·and·<code·class="inline">-opaque</code>·attributes·as·in·the
270 following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">my_struct_type</span><span·class="p"·data-group-id="6972133939-1">(</span><span·class="p"·data-group-id="6972133939-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">.</span><span·class="w">270 following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">my_struct_type</span><span·class="p"·data-group-id="3455110550-1">(</span><span·class="p"·data-group-id="3455110550-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">.</span><span·class="w">
271 </span><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">my_opaq_type</span><span·class="p"·data-group-id="6972133939-2">(</span><span·class="p"·data-group-id="6972133939-2">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">.</span></code></pre><p>The·type·name·is·the·atom·<code·class="inline">my_struct_type</code>,·followed·by·parentheses.·<code·class="inline">Type</code>·is·a271 </span><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">my_opaq_type</span><span·class="p"·data-group-id="3455110550-2">(</span><span·class="p"·data-group-id="3455110550-2">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">.</span></code></pre><p>The·type·name·is·the·atom·<code·class="inline">my_struct_type</code>,·followed·by·parentheses.·<code·class="inline">Type</code>·is·a
272 type·as·defined·in·the·previous·section.·A·current·restriction·is·that·<code·class="inline">Type</code>272 type·as·defined·in·the·previous·section.·A·current·restriction·is·that·<code·class="inline">Type</code>
273 can·contain·only·predefined·types,·or·user-defined·types·which·are·either·of·the273 can·contain·only·predefined·types,·or·user-defined·types·which·are·either·of·the
274 following:</p><ul><li>Module-local·type,·that·is,·with·a·definition·that·is·present·in·the·code·of274 following:</p><ul><li>Module-local·type,·that·is,·with·a·definition·that·is·present·in·the·code·of
275 the·module</li><li>Remote·type,·that·is,·type·defined·in,·and·exported·by,·other·modules;·more275 the·module</li><li>Remote·type,·that·is,·type·defined·in,·and·exported·by,·other·modules;·more
276 about·this·soon.</li></ul><p>For·module-local·types,·the·restriction·that·their·definition·exists·in·the276 about·this·soon.</li></ul><p>For·module-local·types,·the·restriction·that·their·definition·exists·in·the
277 module·is·enforced·by·the·compiler·and·results·in·a·compilation·error.·(A277 module·is·enforced·by·the·compiler·and·results·in·a·compilation·error.·(A
278 similar·restriction·currently·exists·for·records.)</p><p>Type·declarations·can·also·be·parameterized·by·including·type·variables·between278 similar·restriction·currently·exists·for·records.)</p><p>Type·declarations·can·also·be·parameterized·by·including·type·variables·between
279 the·parentheses.·The·syntax·of·type·variables·is·the·same·as·Erlang·variables,279 the·parentheses.·The·syntax·of·type·variables·is·the·same·as·Erlang·variables,
280 that·is,·starts·with·an·upper-case·letter.·These·variables·is·to280 that·is,·starts·with·an·upper-case·letter.·These·variables·is·to
281 appear·on·the·RHS·of·the·definition.·A·concrete·example·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">orddict</span><span·class="p"·data-group-id="1474081463-1">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="1474081463-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="1474081463-2">[</span><span·class="p"·data-group-id="1474081463-3">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="1474081463-3">}</span><span·class="p"·data-group-id="1474081463-2">]</span><span·class="p">.</span></code></pre><p>A·module·can·export·some·types·to·declare·that·other·modules·are·allowed·to 
282 refer·to·them·as·<em>remote·types</em>.·This·declaration·has·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">export_type</span><span·class="p"·data-group-id="6853363780-1">(</span><span·class=[·...·truncated·by·diffoscope;·len:·1338,·SHA:·380e13772c2646a3558cc8990e05643f1cbd2b05d156acd2f6b76883db2ad224·...·]·to281 appear·on·the·RHS·of·the·definition.·A·concrete·example·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">orddict</span><span·class="p"·data-group-id="90[·...·truncated·by·diffoscope;·len:·693,·SHA:·6e5e202f71e86457b7ceaeab10ef7d5d57f2645d90b4f8ec55115840f841d04f·...·]·to
 282 refer·to·them·as·<em>remote·types</em>.·This·declaration·has·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">export_type</span><span·class="p"·data-group-id="0273128286-1">(</span><span·class="p"·data-group-id="0273128286-2">[</span><span·class="n">T1</span><span·class="o">/</span><span·class="n">A1</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tk</span><span·class="o">/</span><span·class="n">Ak</span><span·class="p"·data-group-id="0273128286-2">]</span><span·class="p"·data-group-id="0273128286-1">)</span><span·class="p">.</span></code></pre><p>Here·the·<code·class="inline">Ti</code>s·are·atoms·(the·name·of·the·type)·and·the·<code·class="inline">Ai</code>s·are·their·arguments.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">export_type</span><span·class="p"·data-group-id="9860671406-1">(</span><span·class="p"·data-group-id="9860671406-2">[</span><span·class="ss">my_struct_type</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">orddict</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="9860671406-2">]</span><span·class="p"·data-group-id="9860671406-1">)</span><span·class="p">.</span></code></pre><p>Assuming·that·these·types·are·exported·from·module·<code·class="inline">'mod'</code>,·you·can·refer·to
283 them·from·other·modules·using·remote·type·expressions·like·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mod</span><span·class="p">:</span><span·class="nf">my_struct_type</span><span·class="p"·data-group-id="0670198813-1">(</span><span·class="p"·data-group-id="0670198813-1">)</span><span·class="w">283 them·from·other·modules·using·remote·type·expressions·like·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mod</span><span·class="p">:</span><span·class="nf">my_struct_type</span><span·class="p"·data-group-id="3309766248-1">(</span><span·class="p"·data-group-id="3309766248-1">)</span><span·class="w">
284 </span><span·class="nc">mod</span><span·class="p">:</span><span·class="nf">orddict</span><span·class="p"·data-group-id="0670198813-2">(</span><span·class="nf">atom</span><span·class="p"·data-group-id="0670198813-3">(</span><span·class="p"·data-group-id="0670198813-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·123,·SHA:·da26b609734aa1b70b9630a0d9d50b4754d4ef19cdde777a8b990faf79cdbd7a·...·]-2">)</span></code></pre><p>It·is·not·allowed·to·refer·to·types·that·are·not·declared·as·exported.</p><p>Types·declared·as·<code·class="inline">opaque</code>·represent·sets·of·terms·whose·structure·is·not284 </span><span·class="nc">mod</span><span·class="p">:</span><span·class="nf">orddict</span><span·class="p"·data-group-id="3309766248-2">(</span><span·class="nf">atom</span><span·class="p"·data-group-id="3309766248-3">(</span><span·class="p"·data-group-id="3309766248-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·123,·SHA:·86131c2f4eae1be4816e7f31bcef6342c664560740ecc914e76ab4ce0baf3c9d·...·]-2">)</span></code></pre><p>It·is·not·allowed·to·refer·to·types·that·are·not·declared·as·exported.</p><p>Types·declared·as·<code·class="inline">opaque</code>·represent·sets·of·terms·whose·structure·is·not
285 supposed·to·be·visible·from·outside·of·their·defining·module.·That·is,·only·the285 supposed·to·be·visible·from·outside·of·their·defining·module.·That·is,·only·the
286 module·defining·them·is·allowed·to·depend·on·their·term·structure.·Consequently,286 module·defining·them·is·allowed·to·depend·on·their·term·structure.·Consequently,
287 such·types·do·not·make·much·sense·as·module·local·-·module·local·types·are·not287 such·types·do·not·make·much·sense·as·module·local·-·module·local·types·are·not
288 accessible·by·other·modules·anyway·-·and·is·always·to·be·exported.</p><p>Read·more·on·<a·href="opaques.html">Opaques</a></p><p><a·href=""·id="typeinrecords"></a></p><h2·id="type-information-in-record-declarations"·class="section-heading">288 accessible·by·other·modules·anyway·-·and·is·always·to·be·exported.</p><p>Read·more·on·<a·href="opaques.html">Opaques</a></p><p><a·href=""·id="typeinrecords"></a></p><h2·id="type-information-in-record-declarations"·class="section-heading">
289 ··<a·href="#type-information-in-record-declarations"·class="hover-link">289 ··<a·href="#type-information-in-record-declarations"·class="hover-link">
290 ····<i·class="ri-link-m"·aria-hidden="true"></i>290 ····<i·class="ri-link-m"·aria-hidden="true"></i>
291 ··</a>291 ··</a>
292 ··<span·class="text">Type·Information·in·Record·Declarations</span>292 ··<span·class="text">Type·Information·in·Record·Declarations</span>
293 </h2>293 </h2>
294 <p>The·types·of·record·fields·can·be·specified·in·the·declaration·of·the·record.294 <p>The·types·of·record·fields·can·be·specified·in·the·declaration·of·the·record.
295 The·syntax·for·this·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="9692501508-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9692501508-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·422,·SHA:·9a89a418603e9708255f937c6b2191d8453850a34e969c2df598f81661bef34c·...·]-1">)</span><span·class="p">.</span></code></pre><p>For·fields·without·type·annotations,·their·type·defaults·to·<code·class="inline">any()</code>.·That·is,·the295 The·syntax·for·this·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0078230379-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0078230379-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·422,·SHA:·10dcc2c9347dd38e5aa4248fb7ab47f27651b69a70b454e5c3f98e711c15f6c1·...·]-1">)</span><span·class="p">.</span></code></pre><p>For·fields·without·type·annotations,·their·type·defaults·to·<code·class="inline">any()</code>.·That·is,·the
296 previous·example·is·a·shorthand·for·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8320713100-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8320713100-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span[·...·truncated·by·diffoscope;·len:·650,·SHA:·bd40eaef9854568781f32f71005ab8e94a4e1169dd781b76306a5f219eda3e36·...·]-1">)</span><span·class="p">.</span></code></pre><p>In·the·presence·of·initial·values·for·fields,·the·type·must·be·declared·after296 previous·example·is·a·shorthand·for·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8677044021-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8677044021-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span[·...·truncated·by·diffoscope;·len:·650,·SHA:·596a41b357b4257e16d740a2f6339a74a9a3573ea95d357542de6ac9d78b2b48·...·]-1">)</span><span·class="p">.</span></code></pre><p>In·the·presence·of·initial·values·for·fields,·the·type·must·be·declared·after
297 the·initialization,·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4370037894-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4370037894-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·698,·SHA:·04c1c172dc40ca0b62f0a3d49bcfb8aef67bae1093e8dd4245d2519a6a9e5efb·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·initial·values·for·fields·are·to·be·compatible·with·(that·is,·a·member·of)297 the·initialization,·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="9680863820-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9680863820-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·698,·SHA:·532e00cd756ac48523d5b32fc93ab795ff6ab0feb1426b53ce046d2f271ceeb5·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·initial·values·for·fields·are·to·be·compatible·with·(that·is,·a·member·of)
298 the·corresponding·types.·This·is·checked·by·the·compiler·and·results·in·a298 the·corresponding·types.·This·is·checked·by·the·compiler·and·results·in·a
299 compilation·error·if·a·violation·is·detected.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·19,·for·fields·without·initial·values,·the·singleton·type299 compilation·error·if·a·violation·is·detected.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·19,·for·fields·without·initial·values,·the·singleton·type
300 <code·class="inline">'undefined'</code>·was·added·to·all·declared·types.·In·other·words,·the·following300 <code·class="inline">'undefined'</code>·was·added·to·all·declared·types.·In·other·words,·the·following
301 two·record·declarations·had·identical·effects:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5787601736-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5787601736-2">{</span><span·class="ss">f1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·239,·SHA:·14170224cd4f8584468a7479a79777e1592239d3d1bf65852adff0df2be986db·...·]-3">)</span><span·class="p">,</span><span·class="w">301 two·record·declarations·had·identical·effects:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2128418202-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2128418202-2">{</span><span·class="ss">f1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·239,·SHA:·bd6ca1e331224a42079d79c37ba79d007ebf99219c695118b98db585f997d619·...·]-3">)</span><span·class="p">,</span><span·class="w">
302 ·············</span><span·class="ss">f2</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">float</span><span·class="p"·data-group-id="5787601736-4">(</span><span·class="p"·data-group-id="5787601736-4">)</span><span·class="p">,</span><span·class="w">302 ·············</span><span·class="ss">f2</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">float</span><span·class="p"·data-group-id="2128418202-4">(</span><span·class="p"·data-group-id="2128418202-4">)</span><span·class="p">,</span><span·class="w">
303 ·············</span><span·class="ss">f3</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="5787601736-2">}</span><span·class="p"·data-group-id="5787601736-1">)</span><span·class="p">.</span><span·class="w">303 ·············</span><span·class="ss">f3</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="2128418202-2">}</span><span·class="p"·data-group-id="2128418202-1">)</span><span·class="p">.</span><span·class="w">
304 </span><span·class="w">304 </span><span·class="w">
305 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5787601736-5">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5787601736-6">{</span><span·class="ss">f1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·239,·SHA:·e1fca43a2aed93bdcf57087b48c81b23b6658c691ccef11f0e760b24f91a4ae1·...·]-7">)</span><span·class="p">,</span><span·class="w">305 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2128418202-5">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2128418202-6">{</span><span·class="ss">f1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·239,·SHA:·ef91c7b8294812d11e5e3e50b612828a65d00198a3467db03bc7ad669d823b6e·...·]-7">)</span><span·class="p">,</span><span·class="w">
306 ··············</span><span·class="ss">f2</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;undefined&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">float</span><span·class="p"·data-group-id="5787601736-8">(</span><span·class="p"·data-group-id="5787601736-8">)</span><span·class="p">,</span><span·class="w">306 ··············</span><span·class="ss">f2</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;undefined&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">float</span><span·class="p"·data-group-id="2128418202-8">(</span><span·class="p"·data-group-id="2128418202-8">)</span><span·class="p">,</span><span·class="w">
307 ··············</span><span·class="ss">f3</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;undefined&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="5787601736-6">}</span><span·class="p"·data-group-id="5787601736-5">)</span><span·class="p">.</span></code></pre><p>This·is·no·longer·the·case.·If·you·require·<code·class="inline">'undefined'</code>·in·your·record·field307 ··············</span><span·class="ss">f3</span><span·class="w">······</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;undefined&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="2128418202-6">}</span><span·class="p"·data-group-id="2128418202-5">)</span><span·class="p">.</span></code></pre><p>This·is·no·longer·the·case.·If·you·require·<code·class="inline">'undefined'</code>·in·your·record·field
308 type,·you·must·explicitly·add·it·to·the·typespec,·as·in·the·2nd·example.</p></section><p>Any·record,·containing·type·information·or·not,·once·defined,·can·be·used·as·a308 type,·you·must·explicitly·add·it·to·the·typespec,·as·in·the·2nd·example.</p></section><p>Any·record,·containing·type·information·or·not,·once·defined,·can·be·used·as·a
309 type·using·the·following·syntax:</p><pre><code·class="text">#rec{}</code></pre><p>In·addition,·the·record·fields·can·be·further·specified·when·using·a·record·type309 type·using·the·following·syntax:</p><pre><code·class="text">#rec{}</code></pre><p>In·addition,·the·record·fields·can·be·further·specified·when·using·a·record·type
310 by·adding·type·information·about·the·field·as·follows:</p><pre><code·class="text">#rec{some_field·::·Type}</code></pre><p>Any·unspecified·fields·are·assumed·to·have·the·type·in·the·original·record310 by·adding·type·information·about·the·field·as·follows:</p><pre><code·class="text">#rec{some_field·::·Type}</code></pre><p>Any·unspecified·fields·are·assumed·to·have·the·type·in·the·original·record
311 declaration.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>When·records·are·used·to·create·patterns·for·ETS·and·Mnesia·match·functions,311 declaration.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>When·records·are·used·to·create·patterns·for·ETS·and·Mnesia·match·functions,
312 Dialyzer·may·need·some·help·not·to·emit·bad·warnings.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">height</span><span·class="p"·data-group-id="4772704518-1">(</span><span·class="p"·data-group-id="4772704518-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="4772704518-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·00a0e16164d4bc39d40d1d0c398c4758a153f3812b5de36ddc9c7ae200620503·...·]-2">)</span><span·class="p">.</span><span·class="w">312 Dialyzer·may·need·some·help·not·to·emit·bad·warnings.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">height</span><span·class="p"·data-group-id="7736814377-1">(</span><span·class="p"·data-group-id="7736814377-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="7736814377-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·5e79b0225d3d2a80c7ffc8a0f3be7c552b76d18c71ec5db261abf0e4fb495827·...·]-2">)</span><span·class="p">.</span><span·class="w">
313 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4772704518-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4772704518-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><sp[·...·truncated·by·diffoscope;·len:·561,·SHA:·372ba0c2ee04e03c3f71c61cc6fee3ede9c333b30e287cf108f8ccc467100e2d·...·]-3">)</span><span·class="p">.</span><span·class="w">313 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="7736814377-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7736814377-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><sp[·...·truncated·by·diffoscope;·len:·561,·SHA:·2678ee34a2a779371c46054be91e98dbb80261dca98161d0024419e01607699b·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
314 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="4772704518-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p"·data-group-id="4772704518-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">314 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="7736814377-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p"·data-group-id="7736814377-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
315 ····</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_object</span><span·class="p"·data-group-id="4772704518-8">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="4772704518-9">{</span><span·class="ss">name</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·467516f50861b7618c3871f78ba2448f3835a7c15d8bb8de43522e7e57947494·...·]-8">)</span><span·class="p">.</span></code></pre><p>Dialyzer·will·emit·a·warning·since·<code·class="inline">'_'</code>·is·not·in·the·type·of·record·field315 ····</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_object</span><span·class="p"·data-group-id="7736814377-8">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="7736814377-9">{</span><span·class="ss">name</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·00479acebbb56961fc2bfcf3c0e904b19279fb40c4c5f1317da5392871ff619a·...·]-8">)</span><span·class="p">.</span></code></pre><p>Dialyzer·will·emit·a·warning·since·<code·class="inline">'_'</code>·is·not·in·the·type·of·record·field
316 <code·class="inline">height</code>.</p><p>The·recommended·way·of·dealing·with·this·is·to·declare·the·smallest·record316 <code·class="inline">height</code>.</p><p>The·recommended·way·of·dealing·with·this·is·to·declare·the·smallest·record
317 field·types·to·accommodate·all·your·needs,·and·then·create·refinements·as317 field·types·to·accommodate·all·your·needs,·and·then·create·refinements·as
318 needed.·The·modified·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8239485769-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8239485769-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><sp[·...·truncated·by·diffoscope;·len:·668,·SHA:·810a27f114be302a8ed1c6c00d3d081f70a5643cd5772db0f74138ba46d76e8c·...·]-1">)</span><span·class="p">.</span><span·class="w">318 needed.·The·modified·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4613930874-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4613930874-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><sp[·...·truncated·by·diffoscope;·len:·668,·SHA:·57108092b389b8683737117f04607cb4dd8bfef053f61a01835d76ad3d1bfb70·...·]-1">)</span><span·class="p">.</span><span·class="w">
319 </span><span·class="w">319 </span><span·class="w">
320 </span><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">person</span><span·class="p"·data-group-id="8239485769-5">(</span><span·class="p"·data-group-id="8239485769-5">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·325,·SHA:·d1e431d07cedb9b24ab84a05a66b774095ddd01b0113167c433bb1acda4972d2·...·]-6">}</span><span·class="p">.</span></code></pre><p>In·specifications·and·type·declarations·the·type·<code·class="inline">person()</code>·is·to·be·preferred320 </span><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">person</span><span·class="p"·data-group-id="4613930874-5">(</span><span·class="p"·data-group-id="4613930874-5">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·325,·SHA:·5c99b82789947ae6c7c901480ba6d47788957e0f51a5aec3e3ca4075bf76e057·...·]-6">}</span><span·class="p">.</span></code></pre><p>In·specifications·and·type·declarations·the·type·<code·class="inline">person()</code>·is·to·be·preferred
321 before·<code·class="inline">#person{}</code>.</p></section><h2·id="specifications-for-functions"·class="section-heading">321 before·<code·class="inline">#person{}</code>.</p></section><h2·id="specifications-for-functions"·class="section-heading">
322 ··<a·href="#specifications-for-functions"·class="hover-link">322 ··<a·href="#specifications-for-functions"·class="hover-link">
323 ····<i·class="ri-link-m"·aria-hidden="true"></i>323 ····<i·class="ri-link-m"·aria-hidden="true"></i>
324 ··</a>324 ··</a>
325 ··<span·class="text">Specifications·for·Functions</span>325 ··<span·class="text">Specifications·for·Functions</span>
326 </h2>326 </h2>
327 <p>A·specification·(or·contract)·for·a·function·is·given·using·the·<code·class="inline">-spec</code>327 <p>A·specification·(or·contract)·for·a·function·is·given·using·the·<code·class="inline">-spec</code>
328 attribute.·The·general·format·is·as·follows:</p><pre><code·class="text">-spec·Function(ArgType1,·...,·ArgTypeN)·-&gt;·ReturnType.</code></pre><p>An·implementation·of·the·function·with·the·same·name·<code·class="inline">Function</code>·must·exist·in328 attribute.·The·general·format·is·as·follows:</p><pre><code·class="text">-spec·Function(ArgType1,·...,·ArgTypeN)·-&gt;·ReturnType.</code></pre><p>An·implementation·of·the·function·with·the·same·name·<code·class="inline">Function</code>·must·exist·in
329 the·current·module,·and·the·arity·of·the·function·must·match·the·number·of329 the·current·module,·and·the·arity·of·the·function·must·match·the·number·of
330 arguments,·otherwise·the·compilation·fails.</p><p>The·following·longer·format·with·module·name·is·also·valid·as·long·as·<code·class="inline">Module</code>330 arguments,·otherwise·the·compilation·fails.</p><p>The·following·longer·format·with·module·name·is·also·valid·as·long·as·<code·class="inline">Module</code>
331 is·the·name·of·the·current·module.·This·can·be·useful·for·documentation331 is·the·name·of·the·current·module.·This·can·be·useful·for·documentation
332 purposes.</p><pre><code·class="text">-spec·Module:Function(ArgType1,·...,·ArgTypeN)·-&gt;·ReturnType.</code></pre><p>Also,·for·documentation·purposes,·argument·names·can·be·given:</p><pre><code·class="text">-spec·Function(ArgName1·::·Type1,·...,·ArgNameN·::·TypeN)·-&gt;·RT.</code></pre><p>A·function·specification·can·be·overloaded.·That·is,·it·can·have·several·types,332 purposes.</p><pre><code·class="text">-spec·Module:Function(ArgType1,·...,·ArgTypeN)·-&gt;·ReturnType.</code></pre><p>Also,·for·documentation·purposes,·argument·names·can·be·given:</p><pre><code·class="text">-spec·Function(ArgName1·::·Type1,·...,·ArgNameN·::·TypeN)·-&gt;·RT.</code></pre><p>A·function·specification·can·be·overloaded.·That·is,·it·can·have·several·types,
333 separated·by·a·semicolon·(<code·class="inline">;</code>).·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="6695577652-1">(</span><span·class="n">T1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T2</span><span·class="p"·data-group-id="6695577652-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">T3</span><span·class="p">;</span><span·class="w">333 separated·by·a·semicolon·(<code·class="inline">;</code>).·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="8283283187-1">(</span><span·class="n">T1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T2</span><span·class="p"·data-group-id="8283283187-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">T3</span><span·class="p">;</span><span·class="w">
334 ·········</span><span·class="p"·data-group-id="6695577652-2">(</span><span·class="n">T4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T5</span><span·class="p"·data-group-id="6695577652-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">T6</span><span·class="p">.</span></code></pre><p>A·current·restriction,·which·currently·results·in·a·warning·by·Dialyzer,·is·that334 ·········</span><span·class="p"·data-group-id="8283283187-2">(</span><span·class="n">T4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T5</span><span·class="p"·data-group-id="8283283187-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">T6</span><span·class="p">.</span></code></pre><p>A·current·restriction,·which·currently·results·in·a·warning·by·Dialyzer,·is·that
335 the·domains·of·the·argument·types·cannot·overlap.·For·example,·the·following335 the·domains·of·the·argument·types·cannot·overlap.·For·example,·the·following
336 specification·results·in·a·warning:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="2457456355-1">(</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="2457456355-2">(</span><span·class="p"·data-group-id="2457456355-2">)</span><span·class="p"·data-group-id="2457456355-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="2457456355-3">(</span><span·class="p"·data-group-id="2457456355-3">)</span><span·class="p">;</span><span·class="w"> 
337 ·········</span><span·class="p"·data-group-id="2457456355-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="2457456355-5">(</span><span·class="p"·data-group-id="2457456355-5">)</span><span·class="p"·data-group-id="2457456355-4">)</sp[·...·truncated·by·diffoscope;·len:·335,·SHA:·0ad6622f7f8d7b48c639e0d1c93025a45818895468793c5a077b42ece7b98fa6·...·]336 specification·results·in·a·warning:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="9541177918-1">(</span><span·class="[·...·truncated·by·diffoscope;·len:·438,·SHA:·6e0e87222599bc5414cd56b50492adb64309274b9458f318a189c3db5f950019·...·]
 337 ·········</span><span·class="p"·data-group-id="9541177918-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="9541177918-5">(</span><span·class="p"·data-group-id="9541177918-5">)</span><span·class="p"·data-group-id="9541177918-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9541177918-6">(</span><span·class="p"·data-group-id="9541177918-6">)</span><span·class="p">.</span></code></pre><p>Type·variables·can·be·used·in·specifications·to·specify·relations·for·the·input
338 and·output·arguments·of·a·function.·For·example,·the·following·specification338 and·output·arguments·of·a·function.·For·example,·the·following·specification
339 defines·the·type·of·a·polymorphic·identity·function:</p><pre><code·class="text">-spec·id(X)·-&gt;·X.</code></pre><p>Notice·that·the·above·specification·does·not·restrict·the·input·and·output·type339 defines·the·type·of·a·polymorphic·identity·function:</p><pre><code·class="text">-spec·id(X)·-&gt;·X.</code></pre><p>Notice·that·the·above·specification·does·not·restrict·the·input·and·output·type
340 in·any·way.·These·types·can·be·constrained·by·guard-like·subtype·constraints·and340 in·any·way.·These·types·can·be·constrained·by·guard-like·subtype·constraints·and
341 provide·bounded·quantification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">id</span><span·class="p"·data-group-id="2776397421-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2776397421-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·261,·SHA:·2e5327a8eda420e0db5d759b6f2728d4fa2a8290e162f2005be0df5ebaf2fc9e·...·]-2">)</span><span·class="p">.</span></code></pre><p>Currently,·the·<code·class="inline">::</code>·constraint·(read·as·&quot;is·a·subtype·of&quot;)·is·the·only·guard341 provide·bounded·quantification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">id</span><span·class="p"·data-group-id="5669379319-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="5669379319-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·261,·SHA:·155350185d4a4f8b0e242959100248fd99d57b41c20c7eabb52c0b3286e4e795·...·]-2">)</span><span·class="p">.</span></code></pre><p>Currently,·the·<code·class="inline">::</code>·constraint·(read·as·&quot;is·a·subtype·of&quot;)·is·the·only·guard
342 constraint·that·can·be·used·in·the·<code·class="inline">when</code>·part·of·a·<code·class="inline">-spec</code>·attribute.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·above·function·specification·uses·multiple·occurrences·of·the·same·type342 constraint·that·can·be·used·in·the·<code·class="inline">when</code>·part·of·a·<code·class="inline">-spec</code>·attribute.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·above·function·specification·uses·multiple·occurrences·of·the·same·type
343 variable.·That·provides·more·type·information·than·the·following·function343 variable.·That·provides·more·type·information·than·the·following·function
344 specification,·where·the·type·variables·are·missing:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">id</span><span·class="p"·data-group-id="1611532032-1">(</span><span·class="nf">tuple</span><span·class="p"·data-group-id="1611532032-2">(</span><span·class="p"·data-group-id="1611532032-2">)</span><span·class="p"·data-group-id="1611532032-1">)</span><span·class="w">·</span><span·class="p">-&gt;<[·...·truncated·by·diffoscope;·len:·153,·SHA:·7975b6b9732ba68eb473ff12e9e1b2e634ba26f736b88d4fe8638e4c9d0f91c4·...·]-3">)</span><span·class="p">.</span></code></pre><p>The·latter·specification·says·that·the·function·takes·some·tuple·and·returns344 specification,·where·the·type·variables·are·missing:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">id</span><span·class="p"·data-group-id="4967034919-1">(</span><span·class="nf">tuple</span><span·class="p"·data-group-id="4967034919-2">(</span><span·class="p"·data-group-id="4967034919-2">)</span><span·class="p"·data-group-id="4967034919-1">)</span><span·class="w">·</span><span·class="p">-&gt;<[·...·truncated·by·diffoscope;·len:·153,·SHA:·3f91f7b1c5dba15ff502a24663a41b4419b34a853f394f4ce43052859b9a8458·...·]-3">)</span><span·class="p">.</span></code></pre><p>The·latter·specification·says·that·the·function·takes·some·tuple·and·returns
345 some·tuple.·The·specification·with·the·<code·class="inline">X</code>·type·variable·specifies·that·the345 some·tuple.·The·specification·with·the·<code·class="inline">X</code>·type·variable·specifies·that·the
346 function·takes·a·tuple·and·returns·<em>the·same</em>·tuple.</p><p>However,·it·is·up·to·the·tools·that·process·the·specifications·to·choose346 function·takes·a·tuple·and·returns·<em>the·same</em>·tuple.</p><p>However,·it·is·up·to·the·tools·that·process·the·specifications·to·choose
347 whether·to·take·this·extra·information·into·account·or·not.</p></section><p>The·scope·of·a·<code·class="inline">::</code>·constraint·is·the·<code·class="inline">(...)·-&gt;·RetType</code>·specification·after347 whether·to·take·this·extra·information·into·account·or·not.</p></section><p>The·scope·of·a·<code·class="inline">::</code>·constraint·is·the·<code·class="inline">(...)·-&gt;·RetType</code>·specification·after
348 which·it·appears.·To·avoid·confusion,·it·is·suggested·that·different·variables348 which·it·appears.·To·avoid·confusion,·it·is·suggested·that·different·variables
349 are·used·in·different·constituents·of·an·overloaded·contract,·as·shown·in·the349 are·used·in·different·constituents·of·an·overloaded·contract,·as·shown·in·the
350 following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="5261935261-1">(</span><span·class="p"·data-group-id="5261935261-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5261935261-3">(</span><span·class="p"·data-group-id="5261935261-3">)</span><span·class="p"·data-group-id="5261935261-2">}</span><span·class="p"·data-group-id="5261935261-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="5261935261-4">(</span><span·class="p"·data-group-id="5261935261-4">)</span><span·class="p">;</span><span·class="w"> 
351 ·········</span><span·class="p"·data-group-id="5261935261-5">(</span><span·class="p"·data-group-id="5261935261-6">[</span><span·class="n">Y</span><span·class="p"·data-group-id="5261935261-6">]</span><span·class="p"·data-group-id="5261935261-5">)</span><spa[·...·truncated·by·diffoscope;·len:·543,·SHA:·4cdf6e16f329da56cc1b0ad878f339c291c3ad1406d48395870884d61689fcb7·...·]350 following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="3245723356-1">(</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·807,·SHA:·9fc480cd20235f1748bb902f46eb0cac6367cc077f986064171f5cfb129ed29b·...·]
 351 ·········</span><span·class="p"·data-group-id="3245723356-5">(</span><span·class="p"·data-group-id="3245723356-6">[</span><span·class="n">Y</span><span·class="p"·data-group-id="3245723356-6">]</span><span·class="p"·data-group-id="3245723356-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">number</span><span·class="p"·data-group-id="3245723356-7">(</span><span·class="p"·data-group-id="3245723356-7">)</span><span·class="p">.</span></code></pre><p>Some·functions·in·Erlang·are·not·meant·to·return;·either·because·they·define
352 servers·or·because·they·are·used·to·throw·exceptions,·as·in·the·following352 servers·or·because·they·are·used·to·throw·exceptions,·as·in·the·following
353 function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_error</span><span·class="p"·data-group-id="4075360174-1">(</span><span·class="n">Err</span><span·class="p"·data-group-id="4075360174-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">throw</span><span·class="p"·data-group-id="4075360174-2">(</sp[·...·truncated·by·diffoscope;·len:·252,·SHA:·ae1c004f1b41f013c1662e1b2ea6a01728d6b04239017f1629660c839dddf157·...·]4-2">)</span><span·class="p">.</span></code></pre><p>For·such·functions,·it·is·recommended·to·use·the·special·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:no_return/0"><code·class="inline">no_return/0</code></a>·type353 function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_error</span><span·class="p"·data-group-id="0667830404-1">(</span><span·class="n">Err</span><span·class="p"·data-group-id="0667830404-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">throw</span><span·class="p"·data-group-id="0667830404-2">(</sp[·...·truncated·by·diffoscope;·len:·252,·SHA:·5f77fb688f0164f9823cb295a318604c02031da505a7aca752164446f334ab67·...·]4-2">)</span><span·class="p">.</span></code></pre><p>For·such·functions,·it·is·recommended·to·use·the·special·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:no_return/0"><code·class="inline">no_return/0</code></a>·type
354 for·their·&quot;return&quot;,·through·a·contract·of·the·following·form:</p><pre><code·class="text">-spec·my_error(term())·-&gt;·no_return().</code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Erlang·uses·the·shorthand·version·<code·class="inline">_</code>·as·an·anonymous·type·variable·equivalent354 for·their·&quot;return&quot;,·through·a·contract·of·the·following·form:</p><pre><code·class="text">-spec·my_error(term())·-&gt;·no_return().</code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Erlang·uses·the·shorthand·version·<code·class="inline">_</code>·as·an·anonymous·type·variable·equivalent
355 to·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a>·or·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:any/0"><code·class="inline">any/0</code></a>.·For·example,·the·following·function</p><pre><code·class="text">-spec·Function(string(),·_)·-&gt;·string().</code></pre><p>is·equivalent·to:</p><pre><code·class="text">-spec·Function(string(),·any())·-&gt;·string().</code></pre></section>355 to·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a>·or·<a·href="../../erts-15.2.2/doc/html/erlang.html#t:any/0"><code·class="inline">any/0</code></a>.·For·example,·the·following·function</p><pre><code·class="text">-spec·Function(string(),·_)·-&gt;·string().</code></pre><p>is·equivalent·to:</p><pre><code·class="text">-spec·Function(string(),·any())·-&gt;·string().</code></pre></section>
356 </div>356 </div>
  
357 <div·class="bottom-actions"·id="bottom-actions">357 <div·class="bottom-actions"·id="bottom-actions">
358 ··<div·class="bottom-actions-item">358 ··<div·class="bottom-actions-item">
  
Max diff block lines reached; -1/70226 bytes (-0.00%) of diff not shown.
3.84 KB
./usr/share/doc/erlang-doc/html/doc/system_principles.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>System·Principles··Erlang/OTP·v27.2.2</title>9 ····<title>System·Principles\n\n<script>window.location.replace("../doc/system/system_principles.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/system_principles.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/system_principles.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>System·Principles</span>112 ····<span>System·Principles\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/system_principles.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/system_principles.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="getting_started.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="getting_started.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 Getting·Started·With·Erlang122 Getting·Started·With·Erlang\n\n<script>window.location.replace("../doc/system/getting_started.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="design_principles.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="design_principles.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 OTP·Design·Principles132 OTP·Design·Principles\n\n<script>window.location.replace("../doc/system/design_principles.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.29 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 S\x8Sy\x8ys\x8st\x8te\x8em\x8m·P\x8Pr\x8ri\x8in\x8nc\x8ci\x8ip\x8pl\x8le\x8es\x8s9 S\x8Sy\x8ys\x8st\x8te\x8em\x8m·P\x8Pr\x8ri\x8in\x8nc\x8ci\x8ip\x8pl\x8le\x8es\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 s\x8sy\x8ys\x8st\x8te\x8em\x8m_\x8_p\x8pr\x8ri\x8in\x8nc\x8ci\x8ip\x8pl\x8le\x8es\x8s.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8G_\x8e_\x8t_\x8t_\x8i_\x8n_\x8g_\x8·_\x8S_\x8t_\x8a_\x8r_\x8t_\x8e_\x8d_\x8·_\x8W_\x8i_\x8t_\x8h_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8G_\x8e_\x8t_\x8t_\x8i_\x8n_\x8g_\x8·_\x8S_\x8t_\x8a_\x8r_\x8t_\x8e_\x8d_\x8·_\x8W_\x8i_\x8t_\x8h_\x8·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8O_\x8T_\x8P_\x8·_\x8D_\x8e_\x8s_\x8i_\x8g_\x8n_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8O_\x8T_\x8P_\x8·_\x8D_\x8e_\x8s_\x8i_\x8g_\x8n_\x8·_\x8P_\x8r_\x8i_\x8n_\x8c_\x8i_\x8p_\x8l_\x8e_\x8s_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.33 KB
./usr/share/doc/erlang-doc/html/doc/tftp.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>tftp··Erlang/OTP·v27.2.2</title>9 ····<title>tftp\n\n<script>window.location.replace("../lib/tftp-1.2.2/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/tftp.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/tftp.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>tftp</span>112 ····<span>tftp\n\n&lt;script&gt;window.location.replace(&quot;../lib/tftp-1.2.2/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/tftp-1.2.2/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="ssl.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="ssl.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 ssl122 ssl\n\n<script>window.location.replace("../lib/ssl-11.2.7/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="wx.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="wx.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 wx132 wx\n\n<script>window.location.replace("../lib/wx-2.4.3/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
996 B
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 t\x8tf\x8ft\x8tp\x8p9 t\x8tf\x8ft\x8tp\x8p\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./t.tf.ft.tp.p-.-1.1...2.2...2.2/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8s_\x8l11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8s_\x8l_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8w_\x8x12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8w_\x8x_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.52 KB
./usr/share/doc/erlang-doc/html/doc/tools.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>tools··Erlang/OTP·v27.2.2</title>9 ····<title>tools\n\n<script>window.location.replace("../lib/tools-4.1.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/tools.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/tools/tools.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>tools</span>112 ····<span>tools\n\n&lt;script&gt;window.location.replace(&quot;../lib/tools-4.1.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/tools-4.1.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="syntax_tools.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="syntax_tools.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 syntax_tools122 syntax_tools\n\n<script>window.location.replace("../lib/syntax_tools-3.2.1/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="common_test.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="common_test.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 common_test132 common_test\n\n<script>window.location.replace("../lib/common_test-1.27.6/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.09 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 t\x8to\x8oo\x8ol\x8ls\x8s9 t\x8to\x8oo\x8ol\x8ls\x8s\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./t.to.oo.ol.ls.s-.-4.4...1.1...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8y_\x8n_\x8t_\x8a_\x8x_\x8__\x8t_\x8o_\x8o_\x8l_\x8s11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8s_\x8y_\x8n_\x8t_\x8a_\x8x_\x8__\x8t_\x8o_\x8o_\x8l_\x8s_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8c_\x8o_\x8m_\x8m_\x8o_\x8n_\x8__\x8t_\x8e_\x8s_\x8t12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8c_\x8o_\x8m_\x8m_\x8o_\x8n_\x8__\x8t_\x8e_\x8s_\x8t_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.8 KB
./usr/share/doc/erlang-doc/html/doc/tutorial.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>Interoperability·Tutorial··Erlang/OTP·v27.2.2</title>9 ····<title>Interoperability·Tutorial\n\n<script>window.location.replace("../doc/system/tutorial.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/tutorial.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/system/tutorial.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>Interoperability·Tutorial</span>112 ····<span>Interoperability·Tutorial\n\n&lt;script&gt;window.location.replace(&quot;../doc/system/tutorial.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../doc/system/tutorial.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="efficiency_guide.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="efficiency_guide.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 Efficiency·Guide122 Efficiency·Guide\n\n<script>window.location.replace("../doc/system/efficiency_guide.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="embedded.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="embedded.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 Embedded·Systems·User's·Guide132 Embedded·Systems·User's·Guide\n\n<script>window.location.replace("../doc/system/embedded.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.3 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 I\x8In\x8nt\x8te\x8er\x8ro\x8op\x8pe\x8er\x8ra\x8ab\x8bi\x8il\x8li\x8it\x8ty\x8y·T\x8Tu\x8ut\x8to\x8or\x8ri\x8ia\x8al\x8l9 I\x8In\x8nt\x8te\x8er\x8ro\x8op\x8pe\x8er\x8ra\x8ab\x8bi\x8il\x8li\x8it\x8ty\x8y·T\x8Tu\x8ut\x8to\x8or\x8ri\x8ia\x8al\x8l\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././d.do.oc.c/./s.sy.ys.st.te.em.m/./
 10 t\x8tu\x8ut\x8to\x8or\x8ri\x8ia\x8al\x8l.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8E_\x8f_\x8f_\x8i_\x8c_\x8i_\x8e_\x8n_\x8c_\x8y_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8E_\x8f_\x8f_\x8i_\x8c_\x8i_\x8e_\x8n_\x8c_\x8y_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8E_\x8m_\x8b_\x8e_\x8d_\x8d_\x8e_\x8d_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8s_\x8·_\x8U_\x8s_\x8e_\x8r_\x8'_\x8s_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8E_\x8m_\x8b_\x8e_\x8d_\x8d_\x8e_\x8d_\x8·_\x8S_\x8y_\x8s_\x8t_\x8e_\x8m_\x8s_\x8·_\x8U_\x8s_\x8e_\x8r_\x8'_\x8s_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
17.4 KB
./usr/share/doc/erlang-doc/html/doc/upcoming_incompatibilities.html
    
Offset 10, 15 lines modifiedOffset 10, 15 lines modified
  
10 ····<title>Upcoming·Potential·Incompatibilities··Erlang/OTP·v27.2.2</title>10 ····<title>Upcoming·Potential·Incompatibilities··Erlang/OTP·v27.2.2</title>
11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>11 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>12 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>13 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
14 ····<script·src="dist/sidebar_items-712764E3.js"></script>14 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
15 ····<script·src="docs_config.js"></script>15 ····<script·src="docs_config.js"></script>
16 ····<script·async·src="dist/html-55NP3CS6.js"></script>16 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
17 ··</head>17 ··</head>
18 ··<body·data-type="extras"·class="page-extra">18 ··<body·data-type="extras"·class="page-extra">
19 ····<script>19 ····<script>
  
Offset 149, 45 lines modifiedOffset 149, 45 lines modified
149 occurrences·of·<code·class="inline">maybe</code>·without·quotes.</p><p><a·href=""·id="float_matching"></a></p><h3·id="0-0-and-0-0-will-no-longer-be-exactly-equal"·class="section-heading">149 occurrences·of·<code·class="inline">maybe</code>·without·quotes.</p><p><a·href=""·id="float_matching"></a></p><h3·id="0-0-and-0-0-will-no-longer-be-exactly-equal"·class="section-heading">
150 ··<a·href="#0-0-and-0-0-will-no-longer-be-exactly-equal"·class="hover-link">150 ··<a·href="#0-0-and-0-0-will-no-longer-be-exactly-equal"·class="hover-link">
151 ····<i·class="ri-link-m"·aria-hidden="true"></i>151 ····<i·class="ri-link-m"·aria-hidden="true"></i>
152 ··</a>152 ··</a>
153 ··<span·class="text">0.0·and·-0.0·will·no·longer·be·exactly·equal</span>153 ··<span·class="text">0.0·and·-0.0·will·no·longer·be·exactly·equal</span>
154 </h3>154 </h3>
155 <p>Currently,·the·floating·point·numbers·<code·class="inline">0.0</code>·and·<code·class="inline">-0.0</code>·have·distinct·internal155 <p>Currently,·the·floating·point·numbers·<code·class="inline">0.0</code>·and·<code·class="inline">-0.0</code>·have·distinct·internal
156 representations.·That·can·be·seen·if·they·are·converted·to·binaries:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="6604436405-1">&lt;&lt;</span><span·class="mf">0.0</span><span·class="o">/</span><span·class="nb">float</span><span·class="p"·data-group-id="6604436405-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">156 representations.·That·can·be·seen·if·they·are·converted·to·binaries:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="4508035478-1">&lt;&lt;</span><span·class="mf">0.0</span><span·class="o">/</span><span·class="nb">float</span><span·class="p"·data-group-id="4508035478-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="6604436405-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·182,·SHA:·9dc7225bee97e4edf7fb4c2cb2ba48fcd73b05bf004e82740cd61e9d2d708194·...·]-2">&gt;&gt;</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="4508035478-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·182,·SHA:·170c7bf1178bdc69da835c09307b64f95a3c3ad8a0ebadc9b653d0533d404810·...·]-2">&gt;&gt;</span><span·class="gp·unselectable">
158 2&gt;·</span><span·class="p"·data-group-id="6604436405-3">&lt;&lt;</span><span·class="o">-</span><span·class="mf">0.0</span><span·class="o">/</span><span·class="nb">float</span><span·class="p"·data-group-id="6604436405-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">158 2&gt;·</span><span·class="p"·data-group-id="4508035478-3">&lt;&lt;</span><span·class="o">-</span><span·class="mf">0.0</span><span·class="o">/</span><span·class="nb">float</span><span·class="p"·data-group-id="4508035478-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="6604436405-4">&lt;&lt;</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·6a17d381b8ab0a568d10250854ba6ff52ef4fd687ce57e19fd6d38450377488c·...·]-4">&gt;&gt;</span></code></pre><p>However,·when·they·are·matched·against·each·other·or·compared·using·the·<code·class="inline">=:=</code>159 </span><span·class="p"·data-group-id="4508035478-4">&lt;&lt;</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·dc62aaf1980b3d620d136b1ebd71fda73c3651c028dd62fe8a76b23f95df7251·...·]-4">&gt;&gt;</span></code></pre><p>However,·when·they·are·matched·against·each·other·or·compared·using·the·<code·class="inline">=:=</code>
160 operator,·they·are·considered·to·be·equal.·Thus,·<code·class="inline">0.0·=:=·-0.0</code>·currently160 operator,·they·are·considered·to·be·equal.·Thus,·<code·class="inline">0.0·=:=·-0.0</code>·currently
161 returns·<code·class="inline">true</code>.</p><p>In·Erlang/OTP·27,·<code·class="inline">0.0·=:=·-0.0</code>·will·return·<code·class="inline">false</code>,·and·matching·<code·class="inline">0.0</code>·against161 returns·<code·class="inline">true</code>.</p><p>In·Erlang/OTP·27,·<code·class="inline">0.0·=:=·-0.0</code>·will·return·<code·class="inline">false</code>,·and·matching·<code·class="inline">0.0</code>·against
162 <code·class="inline">-0.0</code>·will·fail.·When·used·as·map·keys,·<code·class="inline">0.0</code>·and·<code·class="inline">-0.0</code>·will·be·considered·to162 <code·class="inline">-0.0</code>·will·fail.·When·used·as·map·keys,·<code·class="inline">0.0</code>·and·<code·class="inline">-0.0</code>·will·be·considered·to
163 be·distinct.</p><p>The·<code·class="inline">==</code>·operator·will·continue·to·return·<code·class="inline">true</code>·for·<code·class="inline">0.0·==·-0.0</code>.</p><p>To·help·to·find·code·that·might·need·to·be·revised,·in·OTP·27·there·will·be·a163 be·distinct.</p><p>The·<code·class="inline">==</code>·operator·will·continue·to·return·<code·class="inline">true</code>·for·<code·class="inline">0.0·==·-0.0</code>.</p><p>To·help·to·find·code·that·might·need·to·be·revised,·in·OTP·27·there·will·be·a
164 new·compiler·warning·when·matching·against·<code·class="inline">0.0</code>·or·comparing·to·that·value164 new·compiler·warning·when·matching·against·<code·class="inline">0.0</code>·or·comparing·to·that·value
165 using·the·<code·class="inline">=:=</code>·operator.·The·warning·can·be·suppressed·by·matching·against165 using·the·<code·class="inline">=:=</code>·operator.·The·warning·can·be·suppressed·by·matching·against
166 <code·class="inline">+0.0</code>·instead·of·<code·class="inline">0.0</code>.</p><p>We·plan·to·introduce·the·same·warning·in·OTP·26.1,·but·by·default·it·will·be166 <code·class="inline">+0.0</code>·instead·of·<code·class="inline">0.0</code>.</p><p>We·plan·to·introduce·the·same·warning·in·OTP·26.1,·but·by·default·it·will·be
167 disabled.</p><p><a·href=""·id="singleton_typevars"></a></p><h3·id="singleton-type-variables-will-become-a-compile-time-error"·class="section-heading">167 disabled.</p><p><a·href=""·id="singleton_typevars"></a></p><h3·id="singleton-type-variables-will-become-a-compile-time-error"·class="section-heading">
168 ··<a·href="#singleton-type-variables-will-become-a-compile-time-error"·class="hover-link">168 ··<a·href="#singleton-type-variables-will-become-a-compile-time-error"·class="hover-link">
169 ····<i·class="ri-link-m"·aria-hidden="true"></i>169 ····<i·class="ri-link-m"·aria-hidden="true"></i>
170 ··</a>170 ··</a>
171 ··<span·class="text">Singleton·type·variables·will·become·a·compile-time·error</span>171 ··<span·class="text">Singleton·type·variables·will·become·a·compile-time·error</span>
172 </h3>172 </h3>
173 <p>Before·Erlang/OTP·26,·the·compiler·would·silenty·accept·the·following·spec:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">f</span><span·class="p"·data-group-id="3942053156-1">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="3942053156-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="3942053156-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·03166e93ff3ec41a23c62832eeb682d63d28c153dbf2e8176111fbd84b063dae·...·]-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">173 <p>Before·Erlang/OTP·26,·the·compiler·would·silenty·accept·the·following·spec:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">f</span><span·class="p"·data-group-id="0452291162-1">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="0452291162-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0452291162-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·2d369fed93b3986d228cbea0c60febff881d03a5e68c842e91833f9e68410175·...·]-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">
174 ····</span><span·class="n">Opts</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3942053156-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Unknown</span><span·class="p"·data-group-id="3942053156-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·196,·SHA:·d9982b29183d8d615589e4d8012d4f68b77339a9d946f73818f10ad070012adf·...·]-4">}</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="n">Opts</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0452291162-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Unknown</span><span·class="p"·data-group-id="0452291162-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·196,·SHA:·4f4c94c79250037bb33b894ff1159184bcbf325638b85806dc7719e478c00d0c·...·]-4">}</span><span·class="p">.</span><span·class="w">
175 </span><span·class="nf">f</span><span·class="p"·data-group-id="3942053156-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="3942053156-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>In·OTP·26,·the·compiler·emits·a·warning·pointing·out·that·the·type·variable175 </span><span·class="nf">f</span><span·class="p"·data-group-id="0452291162-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="0452291162-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>In·OTP·26,·the·compiler·emits·a·warning·pointing·out·that·the·type·variable
176 <code·class="inline">Unknown</code>·is·unbound:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">t</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">6</span><span·class="p">:</span><span·class="mi">18</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><span·class="ss">variable</span><span·class="w">·</span><span·class="ss">&#39;Unknown&#39;</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">only</span><span·class="w">·</span><span·class="ss">used</span><span·class="w">·</span><span·class="nf">once</span><span·class="w">·</span><span·class="p"·data-group-id="4823343034-1">(</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unbound</span><span·class="p"·data-group-id="4823343034-1">)</span><span·class="w">176 <code·class="inline">Unknown</code>·is·unbound:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">t</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">6</span><span·class="p">:</span><span·class="mi">18</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><span·class="ss">variable</span><span·class="w">·</span><span·class="ss">&#39;Unknown&#39;</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">only</span><span·class="w">·</span><span·class="ss">used</span><span·class="w">·</span><span·class="nf">once</span><span·class="w">·</span><span·class="p"·data-group-id="8133896046-1">(</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unbound</span><span·class="p"·data-group-id="8133896046-1">)</span><span·class="w">
177 </span><span·class="c1">%····6|·····Opts·::·{ok,·Unknown}·|·{error,·Unknown}.</span><span·class="w">177 </span><span·class="c1">%····6|·····Opts·::·{ok,·Unknown}·|·{error,·Unknown}.</span><span·class="w">
178 </span><span·class="c1">%·····|··················^</span></code></pre><p>In·OTP·27,·that·warning·will·become·an·error.</p><p><a·href=""·id="escripts_will_be_compiled"></a></p><h3·id="escripts-will-be-compiled-by-default"·class="section-heading">178 </span><span·class="c1">%·····|··················^</span></code></pre><p>In·OTP·27,·that·warning·will·become·an·error.</p><p><a·href=""·id="escripts_will_be_compiled"></a></p><h3·id="escripts-will-be-compiled-by-default"·class="section-heading">
179 ··<a·href="#escripts-will-be-compiled-by-default"·class="hover-link">179 ··<a·href="#escripts-will-be-compiled-by-default"·class="hover-link">
180 ····<i·class="ri-link-m"·aria-hidden="true"></i>180 ····<i·class="ri-link-m"·aria-hidden="true"></i>
181 ··</a>181 ··</a>
182 ··<span·class="text">Escripts·will·be·compiled·by·default</span>182 ··<span·class="text">Escripts·will·be·compiled·by·default</span>
183 </h3>183 </h3>
184 <p>Escripts·will·be·compiled·by·default·instead·of·interpreted.·That·means·that·the184 <p>Escripts·will·be·compiled·by·default·instead·of·interpreted.·That·means·that·the
185 <code·class="inline">compiler</code>·application·must·be·available.</p><p>The·old·behavior·of·interpreting·escripts·can·be·restored·by·adding·the185 <code·class="inline">compiler</code>·application·must·be·available.</p><p>The·old·behavior·of·interpreting·escripts·can·be·restored·by·adding·the
186 following·line·to·the·script·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">mode</span><span·class="p"·data-group-id="8272655896-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="8272655896-1">)</span><span·class="p">.</span></code></pre><p>In·OTP·28,·support·for·interpreting·an·escript·will·be·removed.</p><h3·id="code_path_choice-will-default-to-strict"·class="section-heading">186 following·line·to·the·script·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">mode</span><span·class="p"·data-group-id="0221976772-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="0221976772-1">)</span><span·class="p">.</span></code></pre><p>In·OTP·28,·support·for·interpreting·an·escript·will·be·removed.</p><h3·id="code_path_choice-will-default-to-strict"·class="section-heading">
187 ··<a·href="#code_path_choice-will-default-to-strict"·class="hover-link">187 ··<a·href="#code_path_choice-will-default-to-strict"·class="hover-link">
188 ····<i·class="ri-link-m"·aria-hidden="true"></i>188 ····<i·class="ri-link-m"·aria-hidden="true"></i>
189 ··</a>189 ··</a>
190 ··<span·class="text">-code_path_choice·will·default·to·strict</span>190 ··<span·class="text">-code_path_choice·will·default·to·strict</span>
191 </h3>191 </h3>
192 <p>This·command·line·option·controls·if·paths·given·in·the·command·line,·boot192 <p>This·command·line·option·controls·if·paths·given·in·the·command·line,·boot
193 scripts,·and·the·code·server·should·be·interpreted·as·is·strict·or·relaxed.</p><p>OTP·26·and·earlier·defaults·to·<code·class="inline">relaxed</code>,·which·means·<code·class="inline">-pa·myapp/ebin</code>·would193 scripts,·and·the·code·server·should·be·interpreted·as·is·strict·or·relaxed.</p><p>OTP·26·and·earlier·defaults·to·<code·class="inline">relaxed</code>,·which·means·<code·class="inline">-pa·myapp/ebin</code>·would
Offset 231, 18 lines modifiedOffset 231, 18 lines modified
231 &quot;231 &quot;
232 String·Content232 String·Content
233 &quot;233 &quot;
234 %%234 %%
235 %%·In·OTP·27·it·is·instead·interpreted·as·a235 %%·In·OTP·27·it·is·instead·interpreted·as·a
236 %%·Triple-Quoted·String·equivalent·to236 %%·Triple-Quoted·String·equivalent·to
237 &quot;String·Content&quot;</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="s">&quot;&quot;</span><span·class="s">&quot;&quot;</span><span·class="w">237 &quot;String·Content&quot;</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="s">&quot;&quot;</span><span·class="s">&quot;&quot;</span><span·class="w">
238 </span><span·class="o">++</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="9436254408-1">(</span><span·class="p"·data-group-id="9436254408-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">238 </span><span·class="o">++</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="0025583831-1">(</span><span·class="p"·data-group-id="0025583831-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">
239 </span><span·class="s">&quot;&quot;</span><span·class="s">&quot;&quot;</span><span·class="w">239 </span><span·class="s">&quot;&quot;</span><span·class="s">&quot;&quot;</span><span·class="w">
240 </span><span·class="c1">%%·Became</span><span·class="w">240 </span><span·class="c1">%%·Became</span><span·class="w">
241 </span><span·class="s">&quot;&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="9436254408-2">(</span><span·class="p"·data-group-id="9436254408-2">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="w">241 </span><span·class="s">&quot;&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="0025583831-2">(</span><span·class="p"·data-group-id="0025583831-2">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="w">
242 </span><span·class="c1">%%</span><span·class="w">242 </span><span·class="c1">%%</span><span·class="w">
243 </span><span·class="c1">%%·In·OTP·27·it·is·instead·interpreted·as·a</span><span·class="w">243 </span><span·class="c1">%%·In·OTP·27·it·is·instead·interpreted·as·a</span><span·class="w">
244 </span><span·class="c1">%%·Triple-Quoted·String·(triple-or-more)·equivalent·to</span><span·class="w">244 </span><span·class="c1">%%·Triple-Quoted·String·(triple-or-more)·equivalent·to</span><span·class="w">
245 </span><span·class="s">&quot;++·foo()·++&quot;</span></code></pre><p>From·Erlang/OTP·26.1·up·to·27.0·the·compiler·issues·a·warning·for·a·sequence·of245 </span><span·class="s">&quot;++·foo()·++&quot;</span></code></pre><p>From·Erlang/OTP·26.1·up·to·27.0·the·compiler·issues·a·warning·for·a·sequence·of
246 3·or·more·double-quote·characters·since·that·is·almost·certainly·a·mistake·or246 3·or·more·double-quote·characters·since·that·is·almost·certainly·a·mistake·or
247 something·like·a·result·of·bad·automatic·code·generation.·If·a·users·gets·that247 something·like·a·result·of·bad·automatic·code·generation.·If·a·users·gets·that
248 warning,·the·code·should·be·corrected·for·example·by·inserting·appropriate248 warning,·the·code·should·be·corrected·for·example·by·inserting·appropriate
Offset 334, 15 lines modifiedOffset 334, 15 lines modified
334 ··<div·class="bottom-actions-item">334 ··<div·class="bottom-actions-item">
  
335 ······<a·href="installation_guide.html"·class="bottom-actions-button"·rel="next">335 ······<a·href="installation_guide.html"·class="bottom-actions-button"·rel="next">
336 ········<span·class="subheader">336 ········<span·class="subheader">
337 ··········Next·Page·337 ··········Next·Page·
338 ········</span>338 ········</span>
339 ········<span·class="title">339 ········<span·class="title">
340 Installation·Guide340 Installation·Guide\n\n<script>window.location.replace("../doc/system/installation_guide.html")</script>
341 ········</span>341 ········</span>
342 ······</a>342 ······</a>
  
343 ··</div>343 ··</div>
344 </div>344 </div>
345 ····<footer·class="footer">345 ····<footer·class="footer">
346 ······<p>346 ······<p>
951 B
html2text {}
    
Offset 161, 11 lines modifiedOffset 161, 11 lines modified
161 It·is·recommend·to·quote·all·uses·of·the·atom·maybe·as·soon·as·possible.·The161 It·is·recommend·to·quote·all·uses·of·the·atom·maybe·as·soon·as·possible.·The
162 compiler·option·warn_keywords·can·be·used·to·emit·warnings·about·all162 compiler·option·warn_keywords·can·be·used·to·emit·warnings·about·all
163 occurrences·of·maybe·without·quotes.163 occurrences·of·maybe·without·quotes.
164 c\x8cp\x8pr\x8ro\x8of\x8f·a\x8an\x8nd\x8d·e\x8ep\x8pr\x8ro\x8of\x8f·w\x8wi\x8il\x8ll\x8l·b\x8be\x8e·r\x8re\x8ep\x8pl\x8la\x8ac\x8ce\x8ed\x8d·b\x8by\x8y·t\x8tp\x8pr\x8ro\x8of\x8f164 c\x8cp\x8pr\x8ro\x8of\x8f·a\x8an\x8nd\x8d·e\x8ep\x8pr\x8ro\x8of\x8f·w\x8wi\x8il\x8ll\x8l·b\x8be\x8e·r\x8re\x8ep\x8pl\x8la\x8ac\x8ce\x8ed\x8d·b\x8by\x8y·t\x8tp\x8pr\x8ro\x8of\x8f
165 As·of·OTP·29,·the·cprof·and·eprof·will·be·removed·in·favor·of·_\x8t_\x8p_\x8r_\x8o_\x8f·added·in165 As·of·OTP·29,·the·cprof·and·eprof·will·be·removed·in·favor·of·_\x8t_\x8p_\x8r_\x8o_\x8f·added·in
166 OTP·27.166 OTP·27.
167 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8S_\x8c_\x8h_\x8e_\x8d_\x8u_\x8l_\x8e_\x8d_\x8·_\x8f_\x8o_\x8r_\x8·_\x8R_\x8e_\x8m_\x8o_\x8v_\x8a_\x8l167 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8S_\x8c_\x8h_\x8e_\x8d_\x8u_\x8l_\x8e_\x8d_\x8·_\x8f_\x8o_\x8r_\x8·_\x8R_\x8e_\x8m_\x8o_\x8v_\x8a_\x8l
168 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8I_\x8n_\x8s_\x8t_\x8a_\x8l_\x8l_\x8a_\x8t_\x8i_\x8o_\x8n_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e168 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8I_\x8n_\x8s_\x8t_\x8a_\x8l_\x8l_\x8a_\x8t_\x8i_\x8o_\x8n_\x8·_\x8G_\x8u_\x8i_\x8d_\x8e_.\_.n_.\_.n
169 Search·HexDocs169 Search·HexDocs
170 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e170 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
171 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B171 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.33 KB
./usr/share/doc/erlang-doc/html/doc/wx.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>wx··Erlang/OTP·v27.2.2</title>9 ····<title>wx\n\n<script>window.location.replace("../lib/wx-2.4.3/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/wx.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/wx.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>wx</span>112 ····<span>wx\n\n&lt;script&gt;window.location.replace(&quot;../lib/wx-2.4.3/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/wx-2.4.3/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="tftp.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="tftp.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 tftp122 tftp\n\n<script>window.location.replace("../lib/tftp-1.2.2/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="xmerl.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="xmerl.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 xmerl132 xmerl\n\n<script>window.location.replace("../lib/xmerl-2.1/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1000 B
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 w\x8wx\x8x9 w\x8wx\x8x\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./w.wx.x-.-2.2...4.4...3.3/./d.do.oc.c/./h.ht.tm.ml.l/./i.in.nd.de.ex.x...h.ht.tm.ml.l".").)<.</./
 10 s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8t_\x8f_\x8t_\x8p11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8t_\x8f_\x8t_\x8p_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8x_\x8m_\x8e_\x8r_\x8l12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8x_\x8m_\x8e_\x8r_\x8l_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
3.38 KB
./usr/share/doc/erlang-doc/html/doc/xmerl.html
    
Offset 4, 21 lines modifiedOffset 4, 21 lines modified
4 ····<meta·charset="utf-8">4 ····<meta·charset="utf-8">
5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">5 ····<meta·http-equiv="x-ua-compatible"·content="ie=edge">
6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">6 ····<meta·name="viewport"·content="width=device-width,·initial-scale=1.0">
7 ····<meta·name="generator"·content="ExDoc·v0.35.1">7 ····<meta·name="generator"·content="ExDoc·v0.35.1">
8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">8 ····<meta·name="project"·content="Erlang/OTP·v27.2.2">
  
  
9 ····<title>xmerl··Erlang/OTP·v27.2.2</title>9 ····<title>xmerl\n\n<script>window.location.replace("../lib/xmerl-2.1/doc/html/index.html")</script>··Erlang/OTP·v27.2.2</title>
10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>10 ····<link·rel="stylesheet"·href="dist/html-erlang-WGRVP7UZ.css"·/>
  
  
11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>11 ····<script·src="dist/handlebars.runtime-CFQAK6SD.js"></script>
12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>12 ····<script·src="dist/handlebars.templates-K7URE6B4.js"></script>
13 ····<script·src="dist/sidebar_items-712764E3.js"></script>13 ····<script·src="dist/sidebar_items-FA8819B1.js"></script>
14 ····<script·src="docs_config.js"></script>14 ····<script·src="docs_config.js"></script>
15 ····<script·async·src="dist/html-55NP3CS6.js"></script>15 ····<script·async·src="dist/html-55NP3CS6.js"></script>
  
16 ··</head>16 ··</head>
17 ··<body·data-type="extras"·class="page-extra">17 ··<body·data-type="extras"·class="page-extra">
18 ····<script>18 ····<script>
  
Offset 108, 41 lines modifiedOffset 108, 41 lines modified
  
108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/xmerl.md#L1"·title="View·Source"·class="icon-action"·rel="help">108 ······<a·href="https://github.com/erlang/otp/blob/master/system/doc/top/interfaces/xmerl.md#L1"·title="View·Source"·class="icon-action"·rel="help">
109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>109 ········<i·class="ri-code-s-slash-line"·aria-hidden="true"></i>
110 ········<span·class="sr-only">View·Source</span>110 ········<span·class="sr-only">View·Source</span>
111 ······</a>111 ······</a>
  
  
112 ····<span>xmerl</span>112 ····<span>xmerl\n\n&lt;script&gt;window.location.replace(&quot;../lib/xmerl-2.1/doc/html/index.html&quot;)&lt;/script&gt;</span>
113 ··</h1>113 ··</h1>
  
114 <script>window.location.replace("../lib/xmerl-2.1/doc/html/index.html")</script> 
115 </div>114 </div>
  
116 <div·class="bottom-actions"·id="bottom-actions">115 <div·class="bottom-actions"·id="bottom-actions">
117 ··<div·class="bottom-actions-item">116 ··<div·class="bottom-actions-item">
  
118 ······<a·href="wx.html"·class="bottom-actions-button"·rel="prev">117 ······<a·href="wx.html"·class="bottom-actions-button"·rel="prev">
119 ········<span·class="subheader">118 ········<span·class="subheader">
120 ···········Previous·Page119 ···········Previous·Page
121 ········</span>120 ········</span>
122 ········<span·class="title">121 ········<span·class="title">
123 wx122 wx\n\n<script>window.location.replace("../lib/wx-2.4.3/doc/html/index.html")</script>
124 ········</span>123 ········</span>
125 ······</a>124 ······</a>
  
126 ··</div>125 ··</div>
127 ··<div·class="bottom-actions-item">126 ··<div·class="bottom-actions-item">
  
128 ······<a·href="debugger.html"·class="bottom-actions-button"·rel="next">127 ······<a·href="debugger.html"·class="bottom-actions-button"·rel="next">
129 ········<span·class="subheader">128 ········<span·class="subheader">
130 ··········Next·Page·129 ··········Next·Page·
131 ········</span>130 ········</span>
132 ········<span·class="title">131 ········<span·class="title">
133 debugger132 debugger\n\n<script>window.location.replace("../lib/debugger-5.5/doc/html/index.html")</script>
134 ········</span>133 ········</span>
135 ······</a>134 ······</a>
  
136 ··</div>135 ··</div>
137 </div>136 </div>
138 ····<footer·class="footer">137 ····<footer·class="footer">
139 ······<p>138 ······<p>
1.0 KB
html2text {}
    
Offset 1, 13 lines modifiedOffset 1, 15 lines modified
 1 ·Erlang/OTP·v27.2.2
1 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]2 _\x8[_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P_\x8]
2 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P3 _\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8/_\x8O_\x8T_\x8P
3 v27.2.24 v27.2.2
4 ····*·Pages5 ····*·Pages
5 Search·documentation·of·Erlang/OTP[q···················]6 Search·documentation·of·Erlang/OTP[q···················]
6 Settings7 Settings
7 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e8 _\x8V\x8V_\x8i\x8i_\x8e\x8e_\x8w\x8w_\x8·_\x8S\x8S_\x8o\x8o_\x8u\x8u_\x8r\x8r_\x8c\x8c_\x8e\x8e
8 x\x8xm\x8me\x8er\x8rl\x8l9 x\x8xm\x8me\x8er\x8rl\x8l\.\n.n\.\n.n<.<s.sc.cr.ri.ip.pt.t>.>w.wi.in.nd.do.ow.w...l.lo.oc.ca.at.ti.io.on.n...r.re.ep.pl.la.ac.ce.e(.(".".....././l.li.ib.b/./x.xm.me.er.rl.l-.-2.2...1.1/./d.do.oc.c/./h.ht.tm.ml.l/./
 10 i\x8in\x8nd\x8de\x8ex\x8x.\x8.h\x8ht\x8tm\x8ml\x8l"\x8")\x8)<\x8</\x8/s\x8sc\x8cr\x8ri\x8ip\x8pt\x8t>\x8>
9 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8w_\x8x11 _\x8←_\x8·_\x8P_\x8r_\x8e_\x8v_\x8i_\x8o_\x8u_\x8s_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8w_\x8x_.\_.n_.\_.n
10 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8d_\x8e_\x8b_\x8u_\x8g_\x8g_\x8e_\x8r12 _\x8N_\x8e_\x8x_\x8t_\x8·_\x8P_\x8a_\x8g_\x8e_\x8·_\x8→_\x8·_\x8d_\x8e_\x8b_\x8u_\x8g_\x8g_\x8e_\x8r_.\_.n_.\_.n
11 Search·HexDocs13 Search·HexDocs
12 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e14 Built·using·_\x8E_\x8x_\x8D_\x8o_\x8c·(v0.35.1)·for·the·_\x8E_\x8r_\x8l_\x8a_\x8n_\x8g_\x8·_\x8p_\x8r_\x8o_\x8g_\x8r_\x8a_\x8m_\x8m_\x8i_\x8n_\x8g_\x8·_\x8l_\x8a_\x8n_\x8g_\x8u_\x8a_\x8g_\x8e
13 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B15 Copyright·©·1996-2025·_\x8E_\x8r_\x8i_\x8c_\x8s_\x8s_\x8o_\x8n_\x8·_\x8A_\x8B
53.7 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/alt_dist.html
    
Offset 237, 50 lines modifiedOffset 237, 50 lines modified
237 <code·class="inline">uds_dist</code>·example·using·a·port·driver·written·in·C,·<code·class="inline">erl_uds_dist</code>·is·written237 <code·class="inline">uds_dist</code>·example·using·a·port·driver·written·in·C,·<code·class="inline">erl_uds_dist</code>·is·written
238 entirely·in·Erlang.</p><h3·id="exported-callback-functions"·class="section-heading">238 entirely·in·Erlang.</p><h3·id="exported-callback-functions"·class="section-heading">
239 ··<a·href="#exported-callback-functions"·class="hover-link">239 ··<a·href="#exported-callback-functions"·class="hover-link">
240 ····<i·class="ri-link-m"·aria-hidden="true"></i>240 ····<i·class="ri-link-m"·aria-hidden="true"></i>
241 ··</a>241 ··</a>
242 ··<span·class="text">Exported·Callback·Functions</span>242 ··<span·class="text">Exported·Callback·Functions</span>
243 </h3>243 </h3>
244 <p>The·following·functions·are·mandatory:</p><ul><li><pre·id="listen"><code·class="makeup·erlang"·translate="no"><span·class="nf">listen</span><span·class="p"·data-group-id="9086205509-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="9086205509-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">244 <p>The·following·functions·are·mandatory:</p><ul><li><pre·id="listen"><code·class="makeup·erlang"·translate="no"><span·class="nf">listen</span><span·class="p"·data-group-id="5537614625-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="5537614625-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
245 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="9086205509-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9086205509-3">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span>[·...·truncated·by·diffoscope;·len:·456,·SHA:·3536733ac71c30c9000b9b9fc771eab8464d79fcd1dacadf479242faf5c5285c·...·]-4">}</span><span·class="w">245 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="5537614625-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5537614625-3">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span>[·...·truncated·by·diffoscope;·len:·456,·SHA:·d4bb6df2f5a3a95842e3e375e70865df8e90bc672f9ecd0bfa0a539c23c75fac·...·]-4">}</span><span·class="w">
246 </span><span·class="nf">listen</span><span·class="p"·data-group-id="9086205509-5">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Host</span><span·class="p"·data-group-id="9086205509-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">246 </span><span·class="nf">listen</span><span·class="p"·data-group-id="5537614625-5">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Host</span><span·class="p"·data-group-id="5537614625-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
247 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="9086205509-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9086205509-7">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span>[·...·truncated·by·diffoscope;·len:·456,·SHA:·30512dbe4f37ac123e55e8eb4ed56f29f27b54867193c6f3d75bae0e2f6af5b9·...·]-8">}</span></code></pre><p><code·class="inline">listen/2</code>·is·called·once·in·order·to·listen·for·incoming·connection·requests.247 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="5537614625-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5537614625-7">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span>[·...·truncated·by·diffoscope;·len:·456,·SHA:·75c6d46f3fdba056ba5328c9bdf0c2e8664ea8444ee1697f3616f50a9e481b4b·...·]-8">}</span></code></pre><p><code·class="inline">listen/2</code>·is·called·once·in·order·to·listen·for·incoming·connection·requests.
248 The·call·is·made·when·the·distribution·is·brought·up.·The·argument·<code·class="inline">Name</code>·is248 The·call·is·made·when·the·distribution·is·brought·up.·The·argument·<code·class="inline">Name</code>·is
249 the·part·of·the·node·name·before·the·<code·class="inline">@</code>·sign·in·the·full·node·name.·It·can·be249 the·part·of·the·node·name·before·the·<code·class="inline">@</code>·sign·in·the·full·node·name.·It·can·be
250 either·an·atom·or·a·string.·The·argument·<code·class="inline">Host</code>·is·the·part·of·the·node·name250 either·an·atom·or·a·string.·The·argument·<code·class="inline">Host</code>·is·the·part·of·the·node·name
251 after·the·<code·class="inline">@</code>·sign·in·the·full·node·name.·It·is·always·a·string.</p><p>The·return·value·consists·of·a·<code·class="inline">Listen</code>·handle·(which·is·later·passed·to·the251 after·the·<code·class="inline">@</code>·sign·in·the·full·node·name.·It·is·always·a·string.</p><p>The·return·value·consists·of·a·<code·class="inline">Listen</code>·handle·(which·is·later·passed·to·the
252 <a·href="alt_dist.html#accept"><code·class="inline">accept/1</code></a>·callback),·<code·class="inline">Address</code>·which·is·a252 <a·href="alt_dist.html#accept"><code·class="inline">accept/1</code></a>·callback),·<code·class="inline">Address</code>·which·is·a
253 <code·class="inline">#net_address{}</code>·record·with·information·about·the·address·for·the·node·(the253 <code·class="inline">#net_address{}</code>·record·with·information·about·the·address·for·the·node·(the
254 <code·class="inline">#net_address{}</code>·record·is·defined·in·<code·class="inline">kernel/include/net_address.hrl</code>),·and254 <code·class="inline">#net_address{}</code>·record·is·defined·in·<code·class="inline">kernel/include/net_address.hrl</code>),·and
255 <code·class="inline">Creation</code>·which·(currently)·is·an·integer·<code·class="inline">1</code>,·<code·class="inline">2</code>,·or·<code·class="inline">3</code>.</p><p>If·<a·href="epmd_cmd.html"><code·class="inline">epmd</code></a>·is·to·be·used·for·node·discovery,·you·typically·want255 <code·class="inline">Creation</code>·which·(currently)·is·an·integer·<code·class="inline">1</code>,·<code·class="inline">2</code>,·or·<code·class="inline">3</code>.</p><p>If·<a·href="epmd_cmd.html"><code·class="inline">epmd</code></a>·is·to·be·used·for·node·discovery,·you·typically·want
256 to·use·the·<code·class="inline">erl_epmd</code>·module·(part·of·the·<code·class="inline">kernel</code>·application)·in·order·to256 to·use·the·<code·class="inline">erl_epmd</code>·module·(part·of·the·<code·class="inline">kernel</code>·application)·in·order·to
257 register·the·listen·port·with·<code·class="inline">epmd</code>·and·retrieve·<code·class="inline">Creation</code>·to·use.</p></li><li><pre·id="address"><code·class="makeup·erlang"·translate="no"><span·class="nf">address</span><span·class="p"·data-group-id="9984649366-1">(</span><span·class="p"·data-group-id="9984649366-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">257 register·the·listen·port·with·<code·class="inline">epmd</code>·and·retrieve·<code·class="inline">Creation</code>·to·use.</p></li><li><pre·id="address"><code·class="makeup·erlang"·translate="no"><span·class="nf">address</span><span·class="p"·data-group-id="9157172578-1">(</span><span·class="p"·data-group-id="9157172578-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
258 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">Address</span></code></pre><p><code·class="inline">address/0</code>·is·called·in·order·to·get·the·<code·class="inline">Address</code>·part·of·the258 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">Address</span></code></pre><p><code·class="inline">address/0</code>·is·called·in·order·to·get·the·<code·class="inline">Address</code>·part·of·the
259 <a·href="alt_dist.html#listen"><code·class="inline">listen/2</code></a>·function·without·creating·a·listen·socket.259 <a·href="alt_dist.html#listen"><code·class="inline">listen/2</code></a>·function·without·creating·a·listen·socket.
260 All·fields·except·<code·class="inline">address</code>·have·to·be·set·in·the·returned·record</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">address</span><span·class="p"·data-group-id="4906142080-1">(</span><span·class="p"·data-group-id="4906142080-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 All·fields·except·<code·class="inline">address</code>·have·to·be·set·in·the·returned·record</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">address</span><span·class="p"·data-group-id="3121541376-1">(</span><span·class="p"·data-group-id="3121541376-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ····</span><span·class="p"·data-group-id="4906142080-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Host</span><span·class="p"·data-group-id="4906142080-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·173,·SHA:·3e3bde12328fadb1c6fb85ef175533f16c21cf091a42cf0a9dd22b54fe2b3f05·...·]-3">)</span><span·class="p">,</span><span·class="w">261 ····</span><span·class="p"·data-group-id="3121541376-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Host</span><span·class="p"·data-group-id="3121541376-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·173,·SHA:·ecf885b8ae32b72d6bb4eb8987b2dd46907567aa3633813e4acfd3de8d5e3c97·...·]-3">)</span><span·class="p">,</span><span·class="w">
262 ····</span><span·class="o">#</span><span·class="ss">net_address</span><span·class="p"·data-group-id="4906142080-4">{</span><span·class="w">·</span><span·class="ss">host</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Host</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">protocol</span><sp[·...·truncated·by·diffoscope;·len:·611,·SHA:·4ea354b78d74c559e77c709b1850851cccf9578cd14ce11fc166d50c986e7a60·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">262 ····</span><span·class="o">#</span><span·class="ss">net_address</span><span·class="p"·data-group-id="3121541376-4">{</span><span·class="w">·</span><span·class="ss">host</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Host</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">protocol</span><sp[·...·truncated·by·diffoscope;·len:·611,·SHA:·184b7f252b3e84eb8dd5a421494e15f1d277f6ce24d1721ed7b4e67e3f72cd6b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
263 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">AcceptorPid</span></code></pre><p><code·class="inline">accept/1</code>·should·spawn·a·process·that·accepts·connections.·This·process263 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">AcceptorPid</span></code></pre><p><code·class="inline">accept/1</code>·should·spawn·a·process·that·accepts·connections.·This·process
264 should·preferably·execute·on·<code·class="inline">max</code>·priority.·The·process·identifier·of·this264 should·preferably·execute·on·<code·class="inline">max</code>·priority.·The·process·identifier·of·this
265 process·should·be·returned.</p><p>The·<code·class="inline">Listen</code>·argument·will·be·the·same·as·the·<code·class="inline">Listen</code>·handle·part·of·the265 process·should·be·returned.</p><p>The·<code·class="inline">Listen</code>·argument·will·be·the·same·as·the·<code·class="inline">Listen</code>·handle·part·of·the
266 return·value·of·the·<a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback·above.266 return·value·of·the·<a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback·above.
267 <code·class="inline">accept/1</code>·is·called·only·once·when·the·distribution·protocol·is·started.</p><p>The·caller·of·this·function·is·a·representative·for·<code·class="inline">net_kernel</code>·(this·may·or267 <code·class="inline">accept/1</code>·is·called·only·once·when·the·distribution·protocol·is·started.</p><p>The·caller·of·this·function·is·a·representative·for·<code·class="inline">net_kernel</code>·(this·may·or
268 may·not·be·the·process·registered·as·<code·class="inline">net_kernel</code>)·and·is·in·this·document268 may·not·be·the·process·registered·as·<code·class="inline">net_kernel</code>)·and·is·in·this·document
269 identified·as·<code·class="inline">Kernel</code>.·When·a·connection·has·been·accepted·by·the·acceptor269 identified·as·<code·class="inline">Kernel</code>.·When·a·connection·has·been·accepted·by·the·acceptor
270 process,·it·needs·to·inform·<code·class="inline">Kernel</code>·about·the·accepted·connection.·This·is270 process,·it·needs·to·inform·<code·class="inline">Kernel</code>·about·the·accepted·connection.·This·is
271 done·by·passing·a·message·on·the·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Kernel</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6184309050-1">{</span><span·class="ss">accept</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AcceptorPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DistController</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·157,·SHA:·6c566ebe4ddeb182b7cdced60794afca740d741a337aa267112c28c0ff2016cd·...·]-1">}</span></code></pre><p><code·class="inline">DistController</code>·is·either·the·process·or·port·identifier·of·the·distribution271 done·by·passing·a·message·on·the·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Kernel</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5659053061-1">{</span><span·class="ss">accept</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AcceptorPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DistController</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·157,·SHA:·392a03b6875978484d8e415df05d69ead6da204e9a34356afd43ab60ae9e7411·...·]-1">}</span></code></pre><p><code·class="inline">DistController</code>·is·either·the·process·or·port·identifier·of·the·distribution
272 controller·for·the·connection.·The·distribution·controller·should·be·created272 controller·for·the·connection.·The·distribution·controller·should·be·created
273 by·the·acceptor·processes·when·a·new·connection·is·accepted.·Its·job·is·to273 by·the·acceptor·processes·when·a·new·connection·is·accepted.·Its·job·is·to
274 dispatch·traffic·on·the·connection.</p><p><code·class="inline">Kernel</code>·responds·with·one·of·the·following·messages:</p><ul><li><p><strong><code·class="inline">{Kernel,·controller,·SupervisorPid}</code></strong>·-·The·request·was·accepted·and274 dispatch·traffic·on·the·connection.</p><p><code·class="inline">Kernel</code>·responds·with·one·of·the·following·messages:</p><ul><li><p><strong><code·class="inline">{Kernel,·controller,·SupervisorPid}</code></strong>·-·The·request·was·accepted·and
275 <code·class="inline">SupervisorPid</code>·is·the·process·identifier·of·the·connection·supervisor275 <code·class="inline">SupervisorPid</code>·is·the·process·identifier·of·the·connection·supervisor
276 process·(which·is·created·in·the276 process·(which·is·created·in·the
277 <a·href="alt_dist.html#accept_connection"><code·class="inline">accept_connection/5</code></a>·callback).</p></li><li><p><strong><code·class="inline">{Kernel,·unsupported_protocol}</code></strong>·-·The·request·was·rejected.·This·is·a277 <a·href="alt_dist.html#accept_connection"><code·class="inline">accept_connection/5</code></a>·callback).</p></li><li><p><strong><code·class="inline">{Kernel,·unsupported_protocol}</code></strong>·-·The·request·was·rejected.·This·is·a
278 fatal·error.·The·acceptor·process·should·terminate.</p></li></ul><p>When·an·accept·sequence·has·been·completed·the·acceptor·process·is·expected·to278 fatal·error.·The·acceptor·process·should·terminate.</p></li></ul><p>When·an·accept·sequence·has·been·completed·the·acceptor·process·is·expected·to
279 continue·accepting·further·requests.</p></li><li><pre·id="accept_connection"><code·class="makeup·erlang"·translate="no"><span·class="nf">accept_connection</span><span·class="p"·data-group-id="1480264819-1">(</span><span·class="n">AcceptorPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DistCtrl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyNode</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·155,·SHA:·56fcbe3382d8b13dc09f9e88acd42b3484ace0c0d5d2c559142183c02ded3f58·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">279 continue·accepting·further·requests.</p></li><li><pre·id="accept_connection"><code·class="makeup·erlang"·translate="no"><span·class="nf">accept_connection</span><span·class="p"·data-group-id="4057982545-1">(</span><span·class="n">AcceptorPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DistCtrl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyNode</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·155,·SHA:·4723339b6e1c1d530ddb70e1bfc5913581ec7a6d47f3eaa757f262d965039dd8·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
280 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">ConnectionSupervisorPid</span></code></pre><p><code·class="inline">accept_connection/5</code>·should·spawn·a·process·that·will·perform·the·Erlang280 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">ConnectionSupervisorPid</span></code></pre><p><code·class="inline">accept_connection/5</code>·should·spawn·a·process·that·will·perform·the·Erlang
281 distribution·handshake·for·the·connection.·If·the·handshake·successfully281 distribution·handshake·for·the·connection.·If·the·handshake·successfully
282 completes·it·should·continue·to·function·as·a·connection·supervisor.·This282 completes·it·should·continue·to·function·as·a·connection·supervisor.·This
283 process·should·preferably·execute·on·<code·class="inline">max</code>·priority·and·should·be·linked·to283 process·should·preferably·execute·on·<code·class="inline">max</code>·priority·and·should·be·linked·to
284 the·caller.·The·<code·class="inline">dist_util:net_ticker_spawn_options()</code>·function·can·be·called284 the·caller.·The·<code·class="inline">dist_util:net_ticker_spawn_options()</code>·function·can·be·called
285 to·get·spawn·options·suitable·for·this·process·which·can·be·passed·directly·to285 to·get·spawn·options·suitable·for·this·process·which·can·be·passed·directly·to
286 <a·href="erlang.html#spawn_opt/4"><code·class="inline">erlang:spawn_opt/4</code></a>.·<code·class="inline">dist_util:net_ticker_spawn_options()</code>·will·by·default286 <a·href="erlang.html#spawn_opt/4"><code·class="inline">erlang:spawn_opt/4</code></a>.·<code·class="inline">dist_util:net_ticker_spawn_options()</code>·will·by·default
Offset 294, 15 lines modifiedOffset 294, 15 lines modified
294 <code·class="inline">dist_util:handshake_other_started(HsData)</code>.</p></li><li><p><strong><code·class="inline">Allowed</code></strong>·-·To·be·passed·along·to294 <code·class="inline">dist_util:handshake_other_started(HsData)</code>.</p></li><li><p><strong><code·class="inline">Allowed</code></strong>·-·To·be·passed·along·to
295 <code·class="inline">dist_util:handshake_other_started(HsData)</code>.</p></li><li><p><strong><code·class="inline">SetupTime</code></strong>·-·Time·used·for·creating·a·setup·timer·by·a·call·to295 <code·class="inline">dist_util:handshake_other_started(HsData)</code>.</p></li><li><p><strong><code·class="inline">SetupTime</code></strong>·-·Time·used·for·creating·a·setup·timer·by·a·call·to
296 <code·class="inline">dist_util:start_timer(SetupTime)</code>.·The·timer·should·be·passed·along·to296 <code·class="inline">dist_util:start_timer(SetupTime)</code>.·The·timer·should·be·passed·along·to
297 <code·class="inline">dist_util:handshake_other_started(HsData)</code>.</p></li></ul><p>The·created·process·should·provide·callbacks·and·other·information·needed·for297 <code·class="inline">dist_util:handshake_other_started(HsData)</code>.</p></li></ul><p>The·created·process·should·provide·callbacks·and·other·information·needed·for
298 the·handshake·in·a·<a·href="alt_dist.html#hs_data_record"><code·class="inline">#hs_data{}</code></a>·record·and·call298 the·handshake·in·a·<a·href="alt_dist.html#hs_data_record"><code·class="inline">#hs_data{}</code></a>·record·and·call
299 <code·class="inline">dist_util:handshake_other_started(HsData)</code>·with·this·record.</p><p><code·class="inline">dist_util:handshake_other_started(HsData)</code>·will·perform·the·handshake·and·if299 <code·class="inline">dist_util:handshake_other_started(HsData)</code>·with·this·record.</p><p><code·class="inline">dist_util:handshake_other_started(HsData)</code>·will·perform·the·handshake·and·if
300 the·handshake·successfully·completes·this·process·will·then·continue·in·a300 the·handshake·successfully·completes·this·process·will·then·continue·in·a
301 connection·supervisor·loop·as·long·as·the·connection·is·up.</p></li><li><pre·id="setup"><code·class="makeup·erlang"·translate="no"><span·class="nf">setup</span><span·class="p"·data-group-id="7274698402-1">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyNode</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·153,·SHA:·3ce30946bbc7274bcd6747d17c93847680aedc373233a255abbcfb0717514f1f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">301 connection·supervisor·loop·as·long·as·the·connection·is·up.</p></li><li><pre·id="setup"><code·class="makeup·erlang"·translate="no"><span·class="nf">setup</span><span·class="p"·data-group-id="8375128556-1">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyNode</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·153,·SHA:·307fbdbe11ae216a83d30a2a267cace41b273a84f5e6543a56d143bb7375ac42·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">ConnectionSupervisorPid</span></code></pre><p><code·class="inline">setup/5</code>·should·spawn·a·process·that·connects·to·<code·class="inline">Node</code>.·When·connection·has302 </span><span·class="err"> </span><span·class="err"> </span><span·class="n">ConnectionSupervisorPid</span></code></pre><p><code·class="inline">setup/5</code>·should·spawn·a·process·that·connects·to·<code·class="inline">Node</code>.·When·connection·has
303 been·established·it·should·perform·the·Erlang·distribution·handshake·for·the303 been·established·it·should·perform·the·Erlang·distribution·handshake·for·the
304 connection.·If·the·handshake·successfully·completes·it·should·continue·to304 connection.·If·the·handshake·successfully·completes·it·should·continue·to
305 function·as·a·connection·supervisor.·This·process·should·preferably·execute·on305 function·as·a·connection·supervisor.·This·process·should·preferably·execute·on
306 <code·class="inline">max</code>·priority·and·should·be·linked·to·the·caller.·The306 <code·class="inline">max</code>·priority·and·should·be·linked·to·the·caller.·The
307 <code·class="inline">dist_util:net_ticker_spawn_options()</code>·function·can·be·called·to·get·spawn307 <code·class="inline">dist_util:net_ticker_spawn_options()</code>·function·can·be·called·to·get·spawn
308 options·suitable·for·this·process·which·can·be·passed·directly·to308 options·suitable·for·this·process·which·can·be·passed·directly·to
Offset 320, 23 lines modifiedOffset 320, 23 lines modified
320 may·not·be·the·process·registered·as·<code·class="inline">net_kernel</code>)·and·is·in·this·document320 may·not·be·the·process·registered·as·<code·class="inline">net_kernel</code>)·and·is·in·this·document
321 identified·as·<code·class="inline">Kernel</code>.</p><p>This·function·should,·besides·spawning·the·connection·supervisor,·also·create321 identified·as·<code·class="inline">Kernel</code>.</p><p>This·function·should,·besides·spawning·the·connection·supervisor,·also·create
322 a·distribution·controller.·The·distribution·controller·is·either·a·process·or322 a·distribution·controller.·The·distribution·controller·is·either·a·process·or
323 a·port·which·is·responsible·for·dispatching·traffic.</p><p>The·created·process·should·provide·callbacks·and·other·information·needed·for323 a·port·which·is·responsible·for·dispatching·traffic.</p><p>The·created·process·should·provide·callbacks·and·other·information·needed·for
324 the·handshake·in·a·<a·href="alt_dist.html#hs_data_record"><code·class="inline">#hs_data{}</code></a>·record·and·call324 the·handshake·in·a·<a·href="alt_dist.html#hs_data_record"><code·class="inline">#hs_data{}</code></a>·record·and·call
325 <code·class="inline">dist_util:handshake_we_started(HsData)</code>·with·this·record.</p><p><code·class="inline">dist_util:handshake_we_started(HsData)</code>·will·perform·the·handshake·and·the325 <code·class="inline">dist_util:handshake_we_started(HsData)</code>·with·this·record.</p><p><code·class="inline">dist_util:handshake_we_started(HsData)</code>·will·perform·the·handshake·and·the
326 handshake·successfully·completes·this·process·will·then·continue·in·a326 handshake·successfully·completes·this·process·will·then·continue·in·a
327 connection·supervisor·loop·as·long·as·the·connection·is·up.</p></li><li><pre·id="close"><code·class="makeup·erlang"·translate="no"><span·class="nf">close</span><span·class="p"·data-group-id="1752585512-1">(</span><span·class="n">Listen</span><span·class="p"·data-group-id="1752585512-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">327 connection·supervisor·loop·as·long·as·the·connection·is·up.</p></li><li><pre·id="close"><code·class="makeup·erlang"·translate="no"><span·class="nf">close</span><span·class="p"·data-group-id="0157393806-1">(</span><span·class="n">Listen</span><span·class="p"·data-group-id="0157393806-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
328 </span><span·class="err"> </span><span·class="err"> </span><span·class="nf">void</span><span·class="p"·data-group-id="1752585512-2">(</span><span·class="p"·data-group-id="1752585512-2">)</span></code></pre><p>Called·in·order·to·close·the·<code·class="inline">Listen</code>·handle·that·originally·was·passed·from328 </span><span·class="err"> </span><span·class="err"> </span><span·class="nf">void</span><span·class="p"·data-group-id="0157393806-2">(</span><span·class="p"·data-group-id="0157393806-2">)</span></code></pre><p>Called·in·order·to·close·the·<code·class="inline">Listen</code>·handle·that·originally·was·passed·from
329 the·<a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback.</p></li><li><pre·id="select"><code·class="makeup·erlang"·translate="no"><span·class="nf">select</span><span·class="p"·data-group-id="8192726138-1">(</span><span·class="n">NodeName</span><span·class="p"·data-group-id="8192726138-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">329 the·<a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback.</p></li><li><pre·id="select"><code·class="makeup·erlang"·translate="no"><span·class="nf">select</span><span·class="p"·data-group-id="0552210431-1">(</span><span·class="n">NodeName</span><span·class="p"·data-group-id="0552210431-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
330 </span><span·class="err"> </span><span·class="err"> </span><span·class="nf">boolean</span><span·class="p"·data-group-id="8192726138-2">(</span><span·class="p"·data-group-id="8192726138-2">)</span></code></pre><p>Return·<code·class="inline">true</code>·if·the·host·name·part·of·the·<code·class="inline">NodeName</code>·is·valid·for·use·with330 </span><span·class="err"> </span><span·class="err"> </span><span·class="nf">boolean</span><span·class="p"·data-group-id="0552210431-2">(</span><span·class="p"·data-group-id="0552210431-2">)</span></code></pre><p>Return·<code·class="inline">true</code>·if·the·host·name·part·of·the·<code·class="inline">NodeName</code>·is·valid·for·use·with
331 this·protocol;·otherwise,·<code·class="inline">false</code>.</p></li></ul><p>There·are·also·two·optional·functions·that·may·be·exported:</p><ul><li><pre·id="setopts"><code·class="makeup·erlang"·translate="no"><span·class="nf">setopts</span><span·class="p"·data-group-id="3778167770-1">(</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p"·data-group-id="3778167770-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">331 this·protocol;·otherwise,·<code·class="inline">false</code>.</p></li></ul><p>There·are·also·two·optional·functions·that·may·be·exported:</p><ul><li><pre·id="setopts"><code·class="makeup·erlang"·translate="no"><span·class="nf">setopts</span><span·class="p"·data-group-id="2882851296-1">(</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p"·data-group-id="2882851296-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
332 </span><span·class="err"> </span><span·class="err"> </span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="3778167770-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p"·data-group-id="3778167770-2">}</span></code></pre><p>The·argument·<code·class="inline">Listen</code>·is·the·handle·originally·passed·from·the332 </span><span·class="err"> </span><span·class="err"> </span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2882851296-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p"·data-group-id="2882851296-2">}</span></code></pre><p>The·argument·<code·class="inline">Listen</code>·is·the·handle·originally·passed·from·the
333 <a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback.·The·argument·<code·class="inline">Opts</code>·is·a·list·of333 <a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback.·The·argument·<code·class="inline">Opts</code>·is·a·list·of
334 options·to·set·on·future·connections.</p></li><li><pre·id="getopts"><code·class="makeup·erlang"·translate="no"><span·class="nf">getopts</span><span·class="p"·data-group-id="2227176430-1">(</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p"·data-group-id="2227176430-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">334 options·to·set·on·future·connections.</p></li><li><pre·id="getopts"><code·class="makeup·erlang"·translate="no"><span·class="nf">getopts</span><span·class="p"·data-group-id="7301603484-1">(</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p"·data-group-id="7301603484-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
335 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="2227176430-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OptionValues</span><span·class="p"·data-group-id="2227176430-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·199,·SHA:·0e52c9424325d2b172ad17ad846262df48ff9eb44d32ea60a165c72c6d3b58c5·...·]-3">}</span></code></pre><p>The·argument·<code·class="inline">Listen</code>·is·the·handle·originally·passed·from·the335 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="7301603484-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OptionValues</span><span·class="p"·data-group-id="7301603484-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·199,·SHA:·ec38ffb7a7e7a14c73746079527112a665c22acb11b53aad8f7edb57fff3e933·...·]-3">}</span></code></pre><p>The·argument·<code·class="inline">Listen</code>·is·the·handle·originally·passed·from·the
336 <a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback.·The·argument·<code·class="inline">Opts</code>·is·a·list·of336 <a·href="alt_dist.html#listen"><code·class="inline">listen/1</code></a>·callback.·The·argument·<code·class="inline">Opts</code>·is·a·list·of
337 options·to·read·for·future·connections.</p></li></ul><p><a·href=""·id="hs_data_record"></a></p><h3·id="the-hs_data-record"·class="section-heading">337 options·to·read·for·future·connections.</p></li></ul><p><a·href=""·id="hs_data_record"></a></p><h3·id="the-hs_data-record"·class="section-heading">
338 ··<a·href="#the-hs_data-record"·class="hover-link">338 ··<a·href="#the-hs_data-record"·class="hover-link">
339 ····<i·class="ri-link-m"·aria-hidden="true"></i>339 ····<i·class="ri-link-m"·aria-hidden="true"></i>
340 ··</a>340 ··</a>
341 ··<span·class="text">The·#hs_data{}·Record</span>341 ··<span·class="text">The·#hs_data{}·Record</span>
342 </h3>342 </h3>
Offset 350, 44 lines modifiedOffset 350, 44 lines modified
350 <a·href="alt_dist.html#accept_connection"><code·class="inline">accept_connection/5</code></a>.</p></li><li><p><strong><code·class="inline"·id="hs_data_other_node">other_node</code></strong>·-·Name·of·the·other·node.·This·field350 <a·href="alt_dist.html#accept_connection"><code·class="inline">accept_connection/5</code></a>.</p></li><li><p><strong><code·class="inline"·id="hs_data_other_node">other_node</code></strong>·-·Name·of·the·other·node.·This·field
351 is·only·mandatory·when·this·node·initiates·the·connection.·That·is,·when351 is·only·mandatory·when·this·node·initiates·the·connection.·That·is,·when
352 connection·is·set·up·via·<a·href="alt_dist.html#setup"><code·class="inline">setup/5</code></a>.</p></li><li><p><strong><code·class="inline"·id="hs_data_this_node">this_node</code></strong>·-·The·node·name·of·this·node.</p></li><li><p><strong><code·class="inline"·id="hs_data_socket">socket</code></strong>·-·The·identifier·of·the·distribution352 connection·is·set·up·via·<a·href="alt_dist.html#setup"><code·class="inline">setup/5</code></a>.</p></li><li><p><strong><code·class="inline"·id="hs_data_this_node">this_node</code></strong>·-·The·node·name·of·this·node.</p></li><li><p><strong><code·class="inline"·id="hs_data_socket">socket</code></strong>·-·The·identifier·of·the·distribution
353 controller.</p></li><li><p><strong><code·class="inline"·id="hs_data_timer">timer</code></strong>·-·The·timer·created·using353 controller.</p></li><li><p><strong><code·class="inline"·id="hs_data_timer">timer</code></strong>·-·The·timer·created·using
354 <code·class="inline">dist_util:start_timer/1</code>.</p></li><li><p><strong><code·class="inline"·id="hs_data_allowed">allowed</code></strong>·-·Information·passed·as·<code·class="inline">Allowed</code>·to354 <code·class="inline">dist_util:start_timer/1</code>.</p></li><li><p><strong><code·class="inline"·id="hs_data_allowed">allowed</code></strong>·-·Information·passed·as·<code·class="inline">Allowed</code>·to
355 <code·class="inline">accept_connection/5</code>.·This·field·is·only·mandatory·when·the·remote·node355 <code·class="inline">accept_connection/5</code>.·This·field·is·only·mandatory·when·the·remote·node
356 initiated·the·connection.·That·is,·when·the·connection·is·set·up·via356 initiated·the·connection.·That·is,·when·the·connection·is·set·up·via
357 <a·href="alt_dist.html#accept_connection"><code·class="inline">accept_connection/5</code></a>.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_send">f_send</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6523467826-1">(</span><span·class="n">DistCtrlr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="6523467826-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·299,·SHA:·ce70e2f50f3ec3025ed3343244d7688e0ea95648b47b8e1b2143bd220e35bbc2·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">Data</code>357 <a·href="alt_dist.html#accept_connection"><code·class="inline">accept_connection/5</code></a>.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_send">f_send</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9213849008-1">(</span><span·class="n">DistCtrlr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="9213849008-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·299,·SHA:·162bff95bfcd801f360dd39d9cb28c39cb6b4fda672bfa85491f1bc34d3380a1·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">Data</code>
358 is·io·data·to·pass·to·the·other·side.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_recv">f_recv</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7142285072-1">(</span><span·class="n">DistCtrlr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Length</span><span·class="p"·data-group-id="7142285072-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·485,·SHA:·b5d6c531f0faf8b810785b6c543ff717cf90a2c1d30cebd84ced9f1e0a6b2cd5·...·]-3">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·If358 is·io·data·to·pass·to·the·other·side.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_recv">f_recv</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1132873967-1">(</span><span·class="n">DistCtrlr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Length</span><span·class="p"·data-group-id="1132873967-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·485,·SHA:·e887a9490843413a4a13f4e8a6ed8f9a17d46bf337787b0c8c2720689ddfc727·...·]-3">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·If
359 <code·class="inline">Length</code>·is·<code·class="inline">0</code>,·all·available·bytes·should·be·returned.·If·<code·class="inline">Length·&gt;·0</code>,359 <code·class="inline">Length</code>·is·<code·class="inline">0</code>,·all·available·bytes·should·be·returned.·If·<code·class="inline">Length·&gt;·0</code>,
360 exactly·<code·class="inline">Length</code>·bytes·should·be·returned,·or·an·error;·possibly·discarding360 exactly·<code·class="inline">Length</code>·bytes·should·be·returned,·or·an·error;·possibly·discarding
361 less·than·<code·class="inline">Length</code>·bytes·of·data·when·the·connection·is·closed·from·the·other361 less·than·<code·class="inline">Length</code>·bytes·of·data·when·the·connection·is·closed·from·the·other
362 side.·It·is·used·for·passive·receive·of·data·from·the·other·end.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_setopts_pre_nodeup">f_setopts_pre_nodeup</code></strong>·-·A·fun·with·the362 side.·It·is·used·for·passive·receive·of·data·from·the·other·end.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_setopts_pre_nodeup">f_setopts_pre_nodeup</code></strong>·-·A·fun·with·the
363 following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0173429814-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="0173429814-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span[·...·truncated·by·diffoscope;·len:·224,·SHA:·a62dee021c7ebb3a54e9ed162ce94d02ebcb38ee11277bc28325fe97f7ce48dd·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·Called363 following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5751507122-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="5751507122-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span[·...·truncated·by·diffoscope;·len:·224,·SHA:·2380f37e50b73664b55c10a44f1494c1735d94f98cb4b3bfe24c74b93ac67ed4·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·Called
364 just·before·the·distribution·channel·is·taken·up·for·normal·traffic.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_setopts_post_nodeup">f_setopts_post_nodeup</code></strong>·-·A·fun·with364 just·before·the·distribution·channel·is·taken·up·for·normal·traffic.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_setopts_post_nodeup">f_setopts_post_nodeup</code></strong>·-·A·fun·with
365 the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7679268704-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="7679268704-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span[·...·truncated·by·diffoscope;·len:·224,·SHA:·3075d0610fea410d9602a0d552452cc28fb7d37fa3f41279b598d946a30a020d·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·Called365 the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6283077722-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="6283077722-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span[·...·truncated·by·diffoscope;·len:·224,·SHA:·454201967058694152377a9bba583fc766f9618a49caf041b5f0e2d523e7c3e1·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·Called
366 just·after·distribution·channel·has·been·taken·up·for·normal·traffic.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_getll">f_getll</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7016851591-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="7016851591-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">ID</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">ID</code>·is366 just·after·distribution·channel·has·been·taken·up·for·normal·traffic.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_getll">f_getll</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0664435577-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="0664435577-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">ID</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">ID</code>·is
367 the·identifier·of·the·low·level·entity·that·handles·the·connection·(often367 the·identifier·of·the·low·level·entity·that·handles·the·connection·(often
368 <code·class="inline">DistCtrlr</code>·itself).</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_address">f_address</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2626355284-1">(</span><span·class="n">DistCtrlr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="2626355284-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">NetAddress</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller,·<code·class="inline">Node</code>·is368 <code·class="inline">DistCtrlr</code>·itself).</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_f_address">f_address</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2362940843-1">(</span><span·class="n">DistCtrlr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="2362940843-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">NetAddress</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller,·<code·class="inline">Node</code>·is
369 the·node·name·of·the·node·on·the·other·end,·and·<code·class="inline">NetAddress</code>·is·a369 the·node·name·of·the·node·on·the·other·end,·and·<code·class="inline">NetAddress</code>·is·a
370 <code·class="inline">#net_address{}</code>·record·with·information·about·the·address·for·the·<code·class="inline">Node</code>·on370 <code·class="inline">#net_address{}</code>·record·with·information·about·the·address·for·the·<code·class="inline">Node</code>·on
371 the·other·end·of·the·connection.·The·<code·class="inline">#net_address{}</code>·record·is·defined·in371 the·other·end·of·the·connection.·The·<code·class="inline">#net_address{}</code>·record·is·defined·in
372 <code·class="inline">kernel/include/net_address.hrl</code>.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_tick">mf_tick</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2721602882-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="2721602882-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">void</span><span·class="p"·data-group-id="2721602882-2">([·...·truncated·by·diffoscope;·len:·48,·SHA:·1d23cbcc3f63faf238558441ca9bbda8129ce0142de135618e24207ea9fac85a·...·]-2">)</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·This372 <code·class="inline">kernel/include/net_address.hrl</code>.</p><p>Only·used·during·handshake·phase.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_tick">mf_tick</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2276393554-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="2276393554-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">void</span><span·class="p"·data-group-id="2276393554-2">([·...·truncated·by·diffoscope;·len:·48,·SHA:·0b78a99d5af1a1e54fc98931f8e211001efca37fc7317f1b28b8ae9030ef0707·...·]-2">)</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller.·This
373 function·should·send·information·over·the·connection·that·is·not·interpreted373 function·should·send·information·over·the·connection·that·is·not·interpreted
374 by·the·other·end·while·increasing·the·statistics·of·received·packets·on·the374 by·the·other·end·while·increasing·the·statistics·of·received·packets·on·the
375 other·end.·This·is·usually·implemented·by·sending·an·empty·packet.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>It·is·of·vital·importance·that·this·operation·does·not·block·the·caller·for375 other·end.·This·is·usually·implemented·by·sending·an·empty·packet.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>It·is·of·vital·importance·that·this·operation·does·not·block·the·caller·for
376 a·long·time.·This·since·it·is·called·from·the·connection·supervisor.</p></section><p>Used·when·connection·is·up.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_getstat">mf_getstat</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4803511388-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="4803511388-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4803511388-2">{</span><span·class="ss">ok<[·...·truncated·by·diffoscope;·len:·280,·SHA:·d7d1f14759588f432cd0e31ff2b6e8918a7711379fcea2a3f97262bc1b8ba144·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller,·<code·class="inline">Received</code>376 a·long·time.·This·since·it·is·called·from·the·connection·supervisor.</p></section><p>Used·when·connection·is·up.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_getstat">mf_getstat</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9500809964-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="9500809964-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9500809964-2">{</span><span·class="ss">ok<[·...·truncated·by·diffoscope;·len:·280,·SHA:·c221745e3af7b768ed61ca7ccb3b960207747ec736e39ceb5ca31d167d9f5e0d·...·]-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller,·<code·class="inline">Received</code>
377 is·received·packets,·<code·class="inline">Sent</code>·is·sent·packets,·and·<code·class="inline">PendSend</code>·is·amount·of·data377 is·received·packets,·<code·class="inline">Sent</code>·is·sent·packets,·and·<code·class="inline">PendSend</code>·is·amount·of·data
378 in·queue·to·be·sent·(typically·in·bytes,·but·<code·class="inline">dist_util</code>·only·checks·whether378 in·queue·to·be·sent·(typically·in·bytes,·but·<code·class="inline">dist_util</code>·only·checks·whether
379 the·value·is·non-zero·to·know·there·is·data·in·queue)·or·a·<a·href="erlang.html#t:boolean/0"><code·class="inline">boolean/0</code></a>379 the·value·is·non-zero·to·know·there·is·data·in·queue)·or·a·<a·href="erlang.html#t:boolean/0"><code·class="inline">boolean/0</code></a>
380 indicating·whether·there·are·packets·in·queue·to·be·sent.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>It·is·of·vital·importance·that·this·operation·does·not·block·the·caller·for380 indicating·whether·there·are·packets·in·queue·to·be·sent.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>It·is·of·vital·importance·that·this·operation·does·not·block·the·caller·for
381 a·long·time.·This·since·it·is·called·from·the·connection·supervisor.</p></section><p>Used·when·connection·is·up.</p></li><li><p><strong><code·class="inline"·id="hs_data_request_type">request_type</code></strong>·-·The·request·<code·class="inline">Type</code>·as·passed·to381 a·long·time.·This·since·it·is·called·from·the·connection·supervisor.</p></section><p>Used·when·connection·is·up.</p></li><li><p><strong><code·class="inline"·id="hs_data_request_type">request_type</code></strong>·-·The·request·<code·class="inline">Type</code>·as·passed·to
382 <a·href="alt_dist.html#setup"><code·class="inline">setup/5</code></a>.·This·is·only·mandatory·when·the·connection·has382 <a·href="alt_dist.html#setup"><code·class="inline">setup/5</code></a>.·This·is·only·mandatory·when·the·connection·has
383 been·initiated·by·this·node.·That·is,·the·connection·is·set·up·via·<code·class="inline">setup/5</code>.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_setopts">mf_setopts</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8590628373-1">(</span><span·class="n">DistCtrl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p"·data-group-id="8590628373-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8590628373-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p"·data-group-id="8590628373-2">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">Opts</code> 
384 is·a·list·of·options·to·set·on·the·connection.</p><p>This·function·is·optional.·Used·when·connection·is·up.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_getopts">mf_getopts</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·c[·...·truncated·by·diffoscope;·len:·863,·SHA:·5441041581985cdba0c3ec873badf7a75e0452196d1edccf52af4d0c66b5cfd6·...·]">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">Opts</code>383 been·initiated·by·this·node.·That·is,·the·connection·is·set·up·via·<code·class="inline">setup/5</code>.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_setopts">mf_setopts</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class[·...·truncated·by·diffoscope;·len:·670,·SHA:·b1b85162269521316c4a8a0f5f360e5fc22f07fc0c6b9dc60c92fe048311ff1e·...·]">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">Opts</code>
 384 is·a·list·of·options·to·set·on·the·connection.</p><p>This·function·is·optional.·Used·when·connection·is·up.</p></li><li><p><strong><code·class="inline"·id="hs_data_mf_getopts">mf_getopts</code></strong>·-·A·fun·with·the·following·signature:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0778168617-1">(</span><span·class="n">DistCtrl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p"·data-group-id="0778168617-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0778168617-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OptionValues</span><span·class="p"·data-group-id="0778168617-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="0778168617-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p"·data-group-id="0778168617-3">}</span></code></pre><p>where·<code·class="inline">DistCtrlr</code>·is·the·identifier·of·the·distribution·controller·and·<code·class="inline">Opts</code>
Max diff block lines reached; 2862/54876 bytes (5.22%) of diff not shown.
2.49 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/automaticyieldingofccode.html
    
Offset 209, 17 lines modifiedOffset 209, 17 lines modified
209 they·have·to·follow·certain·restrictions.·The·convention·for·making209 they·have·to·follow·certain·restrictions.·The·convention·for·making
210 this·clear·is·to·have·a·comment·above·the·function·that·explains·that210 this·clear·is·to·have·a·comment·above·the·function·that·explains·that
211 the·function·is·transformed·by·YCF·(see·<code·class="inline">maps_values_1_helper</code>·in211 the·function·is·transformed·by·YCF·(see·<code·class="inline">maps_values_1_helper</code>·in
212 <code·class="inline">erl_map.c</code>·for·an·example).·If·only·the·transformed·version·of·the212 <code·class="inline">erl_map.c</code>·for·an·example).·If·only·the·transformed·version·of·the
213 function·is·used,·the·convention·is·to·&quot;comment·out&quot;·the·source·for·the213 function·is·used,·the·convention·is·to·&quot;comment·out&quot;·the·source·for·the
214 function·by·surrounding·it·with·the·following·<code·class="inline">#ifdef</code>·(this·way,·one214 function·by·surrounding·it·with·the·following·<code·class="inline">#ifdef</code>·(this·way,·one
215 will·not·get·warnings·about·unused·functions):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">#</span><span·class="ss">ifdef</span><span·class="w">·</span><span·class="n">INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS</span><span·class="w">215 will·not·get·warnings·about·unused·functions):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">#</span><span·class="ss">ifdef</span><span·class="w">·</span><span·class="n">INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS</span><span·class="w">
216 </span><span·class="ss">void</span><span·class="w">·</span><span·class="nf">my_fun</span><span·class="p"·data-group-id="8674811426-1">(</span><span·class="p"·data-group-id="8674811426-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="8674811426-2">{</span><span·class="w">216 </span><span·class="ss">void</span><span·class="w">·</span><span·class="nf">my_fun</span><span·class="p"·data-group-id="7498951550-1">(</span><span·class="p"·data-group-id="7498951550-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="7498951550-2">{</span><span·class="w">
217 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">217 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
218 </span><span·class="p"·data-group-id="8674811426-2">}</span><span·class="w">218 </span><span·class="p"·data-group-id="7498951550-2">}</span><span·class="w">
219 </span><span·class="p">#</span><span·class="ss">endif</span><span·class="w">·</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span></code></pre><p>While·editing·the·function·one·can·define219 </span><span·class="p">#</span><span·class="ss">endif</span><span·class="w">·</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span></code></pre><p>While·editing·the·function·one·can·define
220 <code·class="inline">INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS</code>·so·that·one·can·see·errors220 <code·class="inline">INCLUDE_YCF_TRANSFORMED_ONLY_FUNCTIONS</code>·so·that·one·can·see·errors
221 and·warnings·in·the·non-transformed·source.</p><h3·id="where-to-place-ycf-transformed-functions"·class="section-heading">221 and·warnings·in·the·non-transformed·source.</p><h3·id="where-to-place-ycf-transformed-functions"·class="section-heading">
222 ··<a·href="#where-to-place-ycf-transformed-functions"·class="hover-link">222 ··<a·href="#where-to-place-ycf-transformed-functions"·class="hover-link">
223 ····<i·class="ri-link-m"·aria-hidden="true"></i>223 ····<i·class="ri-link-m"·aria-hidden="true"></i>
224 ··</a>224 ··</a>
225 ··<span·class="text">Where·to·Place·YCF·Transformed·Functions</span>225 ··<span·class="text">Where·to·Place·YCF·Transformed·Functions</span>
283 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/beam_makeops.html
    
Offset 151, 17 lines modifiedOffset 151, 17 lines modified
151 The·loader·translates·generic·instructions·to·specific·instructions.151 The·loader·translates·generic·instructions·to·specific·instructions.
152 In·general,·for·each·generic·instruction,·there·exists·a·family·of152 In·general,·for·each·generic·instruction,·there·exists·a·family·of
153 specific·instructions.··The·OTP·20·release·has·389·specific153 specific·instructions.··The·OTP·20·release·has·389·specific
154 instructions.</p></li><li><p>The·implementation·of·specific·instructions·for·the·traditional154 instructions.</p></li><li><p>The·implementation·of·specific·instructions·for·the·traditional
155 BEAM·interpreter.·For·the·<a·href="beamasm.html">BeamAsm·JIT</a>·introduced155 BEAM·interpreter.·For·the·<a·href="beamasm.html">BeamAsm·JIT</a>·introduced
156 in·OTP·24,·the·implementation·of·instructions·are·defined·in·emitter156 in·OTP·24,·the·implementation·of·instructions·are·defined·in·emitter
157 functions·written·in·C++.</p></li></ul><p>Generic·instructions·have·typed·operands.·Here·are·a·few·examples·of157 functions·written·in·C++.</p></li></ul><p>Generic·instructions·have·typed·operands.·Here·are·a·few·examples·of
158 operands·for·<code·class="inline">move/2</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6237602771-1">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="6237602771-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">id</span><span·class="p"·data-group-id="6237602771-2">}</spa[·...·truncated·by·diffoscope;·len:·247,·SHA:·989f752b1bf0190bdb6c73dadd22da6dcd92a777c68ccca070388b6e51323485·...·]-1">}</span><span·class="p">.</span><span·class="w">158 operands·for·<code·class="inline">move/2</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7249174723-1">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="7249174723-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">id</span><span·class="p"·data-group-id="7249174723-2">}</spa[·...·truncated·by·diffoscope;·len:·247,·SHA:·d6cb1dd3c916495e72654dcddc40157e2cca4cde5654ece686658830c4d535f9·...·]-1">}</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="6237602771-4">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="6237602771-5">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6237602771-5">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·ca1eecb062fe3894e6c12151d82217b7fa672de74df520fdeb92ae235045e3f8·...·]-4">}</span><span·class="p">.</span><span·class="w">159 </span><span·class="p"·data-group-id="7249174723-4">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="7249174723-5">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7249174723-5">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·0f5f1aa1cc0b11df690105a27f45b5568f2f2eaa55d5782f4512050055c5b26e·...·]-4">}</span><span·class="p">.</span><span·class="w">
160 </span><span·class="p"·data-group-id="6237602771-7">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="6237602771-8">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6237602771-8">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·a11c698dec66452e2a6421e86eb63e929d32c80d3dff77e28623c2e533ebf094·...·]-7">}</span><span·class="p">.</span></code></pre><p>When·those·instructions·are·loaded,·the·loader·rewrites·them160 </span><span·class="p"·data-group-id="7249174723-7">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="7249174723-8">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7249174723-8">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·c018f525ea0f131f81c05fc82852b1a4843496dfea4556a83c4d4b37ed10959a·...·]-7">}</span><span·class="p">.</span></code></pre><p>When·those·instructions·are·loaded,·the·loader·rewrites·them
161 to·specific·instructions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">move_cx</span><span·class="w">·</span><span·class="ss">id</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">161 to·specific·instructions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">move_cx</span><span·class="w">·</span><span·class="ss">id</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">
162 </span><span·class="ss">move_xx</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">162 </span><span·class="ss">move_xx</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">
163 </span><span·class="ss">move_xy</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="mi">1</span></code></pre><p>Corresponding·to·each·generic·instruction,·there·is·a·family·of163 </span><span·class="ss">move_xy</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="mi">1</span></code></pre><p>Corresponding·to·each·generic·instruction,·there·is·a·family·of
164 specific·instructions.··The·types·that·an·instance·of·a·specific164 specific·instructions.··The·types·that·an·instance·of·a·specific
165 instruction·can·handle·are·encoded·in·the·instruction·names.··For165 instruction·can·handle·are·encoded·in·the·instruction·names.··For
166 example,·<code·class="inline">move_xy</code>·takes·an·X·register·number·as·the·first·operand·and166 example,·<code·class="inline">move_xy</code>·takes·an·X·register·number·as·the·first·operand·and
167 a·Y·register·number·as·the·second·operand.··<code·class="inline">move_cx</code>·takes·a·tagged167 a·Y·register·number·as·the·second·operand.··<code·class="inline">move_cx</code>·takes·a·tagged
Offset 185, 17 lines modifiedOffset 185, 17 lines modified
185 </span><span·class="ss">move</span><span·class="w">·</span><span·class="ss">c</span><span·class="w">·</span><span·class="ss">x</span></code></pre><p>Each·specific·instructions·is·defined·by·following·the·name·of·the185 </span><span·class="ss">move</span><span·class="w">·</span><span·class="ss">c</span><span·class="w">·</span><span·class="ss">x</span></code></pre><p>Each·specific·instructions·is·defined·by·following·the·name·of·the
186 instruction·with·the·types·for·each·operand.··An·operand·type·is·a186 instruction·with·the·types·for·each·operand.··An·operand·type·is·a
187 single·letter.··For·example,·<code·class="inline">x</code>·means·an·X·register,·<code·class="inline">y</code>187 single·letter.··For·example,·<code·class="inline">x</code>·means·an·X·register,·<code·class="inline">y</code>
188 means·a·Y·register,·and·<code·class="inline">c</code>·is·a·&quot;constant&quot;·(a·tagged·term·such·as188 means·a·Y·register,·and·<code·class="inline">c</code>·is·a·&quot;constant&quot;·(a·tagged·term·such·as
189 an·integer,·an·atom,·or·a·literal).</p><p>Now·let's·look·at·the·implementation·of·the·<code·class="inline">move</code>·instruction.··There189 an·integer,·an·atom,·or·a·literal).</p><p>Now·let's·look·at·the·implementation·of·the·<code·class="inline">move</code>·instruction.··There
190 are·multiple·files·containing·implementations·of·instructions·in·the190 are·multiple·files·containing·implementations·of·instructions·in·the
191 <code·class="inline">erts/emulator/beam/emu</code>·directory.··The·<code·class="inline">move</code>·instruction·is·defined191 <code·class="inline">erts/emulator/beam/emu</code>·directory.··The·<code·class="inline">move</code>·instruction·is·defined
192 in·<code·class="inline">instrs.tab</code>.··It·looks·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">move</span><span·class="p"·data-group-id="4961364863-1">(</span><span·class="n">Src</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dst</span><span·class="p"·data-group-id="4961364863-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="4961364863-2">{</span><span·class="w">192 in·<code·class="inline">instrs.tab</code>.··It·looks·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">move</span><span·class="p"·data-group-id="7834862549-1">(</span><span·class="n">Src</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dst</span><span·class="p"·data-group-id="7834862549-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="7834862549-2">{</span><span·class="w">
193 ····</span><span·class="sc">$D</span><span·class="ss">st</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="sc">$S</span><span·class="ss">rc</span><span·class="p">;</span><span·class="w">193 ····</span><span·class="sc">$D</span><span·class="ss">st</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="sc">$S</span><span·class="ss">rc</span><span·class="p">;</span><span·class="w">
194 </span><span·class="p"·data-group-id="4961364863-2">}</span></code></pre><p>The·implementation·for·an·instruction·largely·follows·the·C·syntax,194 </span><span·class="p"·data-group-id="7834862549-2">}</span></code></pre><p>The·implementation·for·an·instruction·largely·follows·the·C·syntax,
195 except·that·the·variables·in·the·function·head·don't·have·any·types.195 except·that·the·variables·in·the·function·head·don't·have·any·types.
196 The·<code·class="inline">$</code>·before·an·identifier·denotes·a·macro·expansion.··Thus,196 The·<code·class="inline">$</code>·before·an·identifier·denotes·a·macro·expansion.··Thus,
197 <code·class="inline">$Src</code>·will·expand·to·the·code·to·pick·up·the·source·operand·for197 <code·class="inline">$Src</code>·will·expand·to·the·code·to·pick·up·the·source·operand·for
198 the·instruction·and·<code·class="inline">$Dst</code>·to·the·code·for·the·destination·register.</p><p>We·will·look·at·the·code·for·each·specific·instruction·in·turn.··To198 the·instruction·and·<code·class="inline">$Dst</code>·to·the·code·for·the·destination·register.</p><p>We·will·look·at·the·code·for·each·specific·instruction·in·turn.··To
199 make·the·code·easier·to·understand,·let's·first·look·at·the·memory199 make·the·code·easier·to·understand,·let's·first·look·at·the·memory
200 layout·for·the·instruction·<code·class="inline">{move,{atom,id},{x,5}}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·····</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span><span·class="w">200 layout·for·the·instruction·<code·class="inline">{move,{atom,id},{x,5}}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·····</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span><span·class="w">
201 </span><span·class="n">I</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·················</span><span·class="mi">40</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·······</span><span·class="p">&amp;&amp;</span><span·class="ss">lb_move_cx</span><span·class="w">·</span><span·class="p">|</span><span·class="w">201 </span><span·class="n">I</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·················</span><span·class="mi">40</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·······</span><span·class="p">&amp;&amp;</span><span·class="ss">lb_move_cx</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
Offset 204, 61 lines modifiedOffset 204, 61 lines modified
204 ·····</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span></code></pre><p>This·example·and·all·other·examples·in·the·document·assumes·a·64-bit204 ·····</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">+</span></code></pre><p>This·example·and·all·other·examples·in·the·document·assumes·a·64-bit
205 architecture,·and·furthermore·that·pointers·to·C·code·fit·in·32·bits.</p><p><code·class="inline">I</code>·in·the·BEAM·virtual·machine·is·the·instruction·pointer.··When·BEAM205 architecture,·and·furthermore·that·pointers·to·C·code·fit·in·32·bits.</p><p><code·class="inline">I</code>·in·the·BEAM·virtual·machine·is·the·instruction·pointer.··When·BEAM
206 executes·an·instruction,·<code·class="inline">I</code>·points·to·the·first·word·of·the206 executes·an·instruction,·<code·class="inline">I</code>·points·to·the·first·word·of·the
207 instruction.</p><p><code·class="inline">&amp;&amp;lb_move_cx</code>·is·the·address·to·C·code·that·implements·<code·class="inline">move_cx</code>.··It207 instruction.</p><p><code·class="inline">&amp;&amp;lb_move_cx</code>·is·the·address·to·C·code·that·implements·<code·class="inline">move_cx</code>.··It
208 is·stored·in·the·lower·32·bits·of·the·word.··In·the·upper·32·bits·is208 is·stored·in·the·lower·32·bits·of·the·word.··In·the·upper·32·bits·is
209 the·byte·offset·to·the·X·register;·the·register·number·5·has·been209 the·byte·offset·to·the·X·register;·the·register·number·5·has·been
210 multiplied·by·the·word·size·size·8.</p><p>In·the·next·word·the·tagged·atom·<code·class="inline">id</code>·is·stored.</p><p>With·that·background,·we·can·look·at·the·generated·code·for·<code·class="inline">move_cx</code>210 multiplied·by·the·word·size·size·8.</p><p>In·the·next·word·the·tagged·atom·<code·class="inline">id</code>·is·stored.</p><p>With·that·background,·we·can·look·at·the·generated·code·for·<code·class="inline">move_cx</code>
211 in·<code·class="inline">beam_hot.h</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OpCase</span><span·class="p"·data-group-id="9590660420-1">(</span><span·class="ss">move_cx</span><span·class="p"·data-group-id="9590660420-1">)</span><span·class="p">:</span><span·class="w">211 in·<code·class="inline">beam_hot.h</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OpCase</span><span·class="p"·data-group-id="7810438473-1">(</span><span·class="ss">move_cx</span><span·class="p"·data-group-id="7810438473-1">)</span><span·class="p">:</span><span·class="w">
212 </span><span·class="p"·data-group-id="9590660420-2">{</span><span·class="w">212 </span><span·class="p"·data-group-id="7810438473-2">{</span><span·class="w">
213 ··</span><span·class="n">BeamInstr</span><span·class="w">·</span><span·class="ss">next_pf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamCodeAddr</span><span·class="p"·data-group-id="9590660420-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="9590660420-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="9590660420-4">]</span><span·class="p"·data-group-id="9590660420-3">)</span><span·class="p">;</span><span·class="w">213 ··</span><span·class="n">BeamInstr</span><span·class="w">·</span><span·class="ss">next_pf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamCodeAddr</span><span·class="p"·data-group-id="7810438473-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="7810438473-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="7810438473-4">]</span><span·class="p"·data-group-id="7810438473-3">)</span><span·class="p">;</span><span·class="w">
214 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="9590660420-5">(</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="9590660420-6">(</span><span·class="n">I</span><span·class="p"·data-group-id="9590660420-7">[</span><span·class="mi">0</span><span·class="p"·data-group-id="9590660420-7[·...·truncated·by·diffoscope;·len:·331,·SHA:·737fc1645ff30dddf6c9009202fd98200986e7df401abbdedb28812297b337a3·...·]-8">]</span><span·class="p">;</span><span·class="w">214 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="7810438473-5">(</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="7810438473-6">(</span><span·class="n">I</span><span·class="p"·data-group-id="7810438473-7">[</span><span·class="mi">0</span><span·class="p"·data-group-id="7810438473-7[·...·truncated·by·diffoscope;·len:·331,·SHA:·3be1fdff5fbae76ff1156a21715c09193d8591f47c7b3b202da17b91256c6b29·...·]-8">]</span><span·class="p">;</span><span·class="w">
215 ··</span><span·class="n">I</span><span·class="w">·</span><span·class="o">+</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">215 ··</span><span·class="n">I</span><span·class="w">·</span><span·class="o">+</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">
216 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="9590660420-9">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="9590660420-10">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="9590660420-10">)</span><span·class="p"·data-group-id="9590660420-9">)</span><span·class="p">;</span><span·class="w">216 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="7810438473-9">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="7810438473-10">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="7810438473-10">)</span><span·class="p"·data-group-id="7810438473-9">)</span><span·class="p">;</span><span·class="w">
217 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="9590660420-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="9590660420-11">)</span><span·class="p">;</span><span·class="w">217 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="7810438473-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="7810438473-11">)</span><span·class="p">;</span><span·class="w">
218 </span><span·class="p"·data-group-id="9590660420-2">}</span></code></pre><p>We·will·go·through·each·line·in·turn.</p><ul><li><p><code·class="inline">OpCase(move_cx):</code>·defines·a·label·for·the·instruction.··The218 </span><span·class="p"·data-group-id="7810438473-2">}</span></code></pre><p>We·will·go·through·each·line·in·turn.</p><ul><li><p><code·class="inline">OpCase(move_cx):</code>·defines·a·label·for·the·instruction.··The
219 <code·class="inline">OpCase()</code>·macro·is·defined·in·<code·class="inline">beam_emu.c</code>.··It·will·expand·this·line219 <code·class="inline">OpCase()</code>·macro·is·defined·in·<code·class="inline">beam_emu.c</code>.··It·will·expand·this·line
220 to·<code·class="inline">lb_move_cx:</code>.</p></li><li><p><code·class="inline">BeamInstr·next_pf·=·BeamCodeAddr(I[2]);</code>·fetches·the·pointer·to220 to·<code·class="inline">lb_move_cx:</code>.</p></li><li><p><code·class="inline">BeamInstr·next_pf·=·BeamCodeAddr(I[2]);</code>·fetches·the·pointer·to
221 code·for·the·next·instruction·to·be·executed.··The·<code·class="inline">BeamCodeAddr()</code>221 code·for·the·next·instruction·to·be·executed.··The·<code·class="inline">BeamCodeAddr()</code>
222 macro·extracts·the·pointer·from·the·lower·32·bits·of·the·instruction222 macro·extracts·the·pointer·from·the·lower·32·bits·of·the·instruction
223 word.</p></li><li><p><code·class="inline">xb(BeamExtraData(I[0]))·=·I[1];</code>·is·the·expansion·of·<code·class="inline">$Dst·=·$Src</code>.223 word.</p></li><li><p><code·class="inline">xb(BeamExtraData(I[0]))·=·I[1];</code>·is·the·expansion·of·<code·class="inline">$Dst·=·$Src</code>.
224 <code·class="inline">BeamExtraData()</code>·is·a·macro·that·will·extract·the·upper·32·bits·from224 <code·class="inline">BeamExtraData()</code>·is·a·macro·that·will·extract·the·upper·32·bits·from
225 the·instruction·word.··In·this·example,·it·will·return·40·which·is·the225 the·instruction·word.··In·this·example,·it·will·return·40·which·is·the
226 byte·offset·for·X·register·5.··The·<code·class="inline">xb()</code>·macro·will·cast·a·byte226 byte·offset·for·X·register·5.··The·<code·class="inline">xb()</code>·macro·will·cast·a·byte
227 pointer·to·an·<code·class="inline">Eterm</code>·pointer·and·dereference·it.··The·<code·class="inline">I[1]</code>·on227 pointer·to·an·<code·class="inline">Eterm</code>·pointer·and·dereference·it.··The·<code·class="inline">I[1]</code>·on
228 the·right-hand·side·of·the·<code·class="inline">=</code>·fetches·an·Erlang·term·(the·atom·<code·class="inline">id</code>·in228 the·right-hand·side·of·the·<code·class="inline">=</code>·fetches·an·Erlang·term·(the·atom·<code·class="inline">id</code>·in
229 this·case).</p></li><li><p><code·class="inline">I·+=·2</code>·advances·the·instruction·pointer·to·the·next229 this·case).</p></li><li><p><code·class="inline">I·+=·2</code>·advances·the·instruction·pointer·to·the·next
230 instruction.</p></li><li><p>In·a·debug-compiled·emulator,·<code·class="inline">ASSERT(VALID_INSTR(next_pf));</code>·makes230 instruction.</p></li><li><p>In·a·debug-compiled·emulator,·<code·class="inline">ASSERT(VALID_INSTR(next_pf));</code>·makes
231 sure·that·<code·class="inline">next_pf</code>·is·a·valid·instruction·(that·is,·that·it·points231 sure·that·<code·class="inline">next_pf</code>·is·a·valid·instruction·(that·is,·that·it·points
232 within·the·<code·class="inline">process_main()</code>·function·in·<code·class="inline">beam_emu.c</code>).</p></li><li><p><code·class="inline">GotoPF(next_pf);</code>·transfers·control·to·the·next·instruction.</p></li></ul><p>Now·let's·look·at·the·implementation·of·<code·class="inline">move_xx</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OpCase</span><span·class="p"·data-group-id="8287289903-1">(</span><span·class="ss">move_xx</span><span·class="p"·data-group-id="8287289903-1">)</span><span·class="p">:</span><span·class="w">232 within·the·<code·class="inline">process_main()</code>·function·in·<code·class="inline">beam_emu.c</code>).</p></li><li><p><code·class="inline">GotoPF(next_pf);</code>·transfers·control·to·the·next·instruction.</p></li></ul><p>Now·let's·look·at·the·implementation·of·<code·class="inline">move_xx</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OpCase</span><span·class="p"·data-group-id="3719414571-1">(</span><span·class="ss">move_xx</span><span·class="p"·data-group-id="3719414571-1">)</span><span·class="p">:</span><span·class="w">
233 </span><span·class="p"·data-group-id="8287289903-2">{</span><span·class="w">233 </span><span·class="p"·data-group-id="3719414571-2">{</span><span·class="w">
234 ··</span><span·class="n">Eterm</span><span·class="w">·</span><span·class="ss">tmp_packed1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="8287289903-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="8287289903-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8287289903-4">]</span><span·class="p"·data-group-id="8287289903-3">)</span><span·class="p">;</span><span·class="w">234 ··</span><span·class="n">Eterm</span><span·class="w">·</span><span·class="ss">tmp_packed1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="3719414571-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="3719414571-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="3719414571-4">]</span><span·class="p"·data-group-id="3719414571-3">)</span><span·class="p">;</span><span·class="w">
235 ··</span><span·class="n">BeamInstr</span><span·class="w">·</span><span·class="ss">next_pf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamCodeAddr</span><span·class="p"·data-group-id="8287289903-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="8287289903-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="8287289903-6">]</span><span·class="p"·data-group-id="8287289903-5">)</span><span·class="p">;</span><span·class="w">235 ··</span><span·class="n">BeamInstr</span><span·class="w">·</span><span·class="ss">next_pf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamCodeAddr</span><span·class="p"·data-group-id="3719414571-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="3719414571-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="3719414571-6">]</span><span·class="p"·data-group-id="3719414571-5">)</span><span·class="p">;</span><span·class="w">
236 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="8287289903-7">(</span><span·class="p"·data-group-id="8287289903-8">(</span><span·class="ss">tmp_packed1</span><span·class="p">&gt;&gt;</span><span·class="n">BEAM_TIGHT_SHIFT</span><span·class="p"·data-group-id="8287289903-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·9054be6b9f0a90fed0d87a7bea24e9d16b789d2782fd342be046c81370945274·...·]-9">)</span><span·class="p">;</span><span·class="w">236 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="3719414571-7">(</span><span·class="p"·data-group-id="3719414571-8">(</span><span·class="ss">tmp_packed1</span><span·class="p">&gt;&gt;</span><span·class="n">BEAM_TIGHT_SHIFT</span><span·class="p"·data-group-id="3719414571-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·b33694774f0e2acf0f4d8e4aebba8a5dc53c34c2115d0ae3c407941b41a10d51·...·]-9">)</span><span·class="p">;</span><span·class="w">
237 ··</span><span·class="n">I</span><span·class="w">·</span><span·class="o">+</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">237 ··</span><span·class="n">I</span><span·class="w">·</span><span·class="o">+</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
238 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="8287289903-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="8287289903-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="8287289903-11">)</span><span·class="p"·data-group-id="8287289903-10">)</span><span·class="p">;</span><span·class="w">238 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="3719414571-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="3719414571-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="3719414571-11">)</span><span·class="p"·data-group-id="3719414571-10">)</span><span·class="p">;</span><span·class="w">
239 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="8287289903-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="8287289903-12">)</span><span·class="p">;</span><span·class="w">239 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="3719414571-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="3719414571-12">)</span><span·class="p">;</span><span·class="w">
240 </span><span·class="p"·data-group-id="8287289903-2">}</span></code></pre><p>We·will·go·through·the·lines·that·are·new·or·have·changed·compared·to240 </span><span·class="p"·data-group-id="3719414571-2">}</span></code></pre><p>We·will·go·through·the·lines·that·are·new·or·have·changed·compared·to
241 <code·class="inline">move_cx</code>.</p><ul><li><p><code·class="inline">Eterm·tmp_packed1·=·BeamExtraData(I[0]);</code>·picks·up·both·X·register241 <code·class="inline">move_cx</code>.</p><ul><li><p><code·class="inline">Eterm·tmp_packed1·=·BeamExtraData(I[0]);</code>·picks·up·both·X·register
242 numbers·packed·into·the·upper·32·bits·of·the·instruction·word.</p></li><li><p><code·class="inline">BeamInstr·next_pf·=·BeamCodeAddr(I[1]);</code>·pre-fetches·the·address·of242 numbers·packed·into·the·upper·32·bits·of·the·instruction·word.</p></li><li><p><code·class="inline">BeamInstr·next_pf·=·BeamCodeAddr(I[1]);</code>·pre-fetches·the·address·of
243 the·next·instruction.·Note·that·because·both·X·registers·operands·fits243 the·next·instruction.·Note·that·because·both·X·registers·operands·fits
244 into·the·instruction·word,·the·next·instruction·is·in·the·very·next244 into·the·instruction·word,·the·next·instruction·is·in·the·very·next
245 word.</p></li><li><p><code·class="inline">xb((tmp_packed1&gt;&gt;BEAM_TIGHT_SHIFT))·=·xb(tmp_packed1&amp;BEAM_TIGHT_MASK);</code>245 word.</p></li><li><p><code·class="inline">xb((tmp_packed1&gt;&gt;BEAM_TIGHT_SHIFT))·=·xb(tmp_packed1&amp;BEAM_TIGHT_MASK);</code>
246 copies·the·source·to·the·destination.··(For·a·64-bit·architecture,246 copies·the·source·to·the·destination.··(For·a·64-bit·architecture,
247 <code·class="inline">BEAM_TIGHT_SHIFT</code>·is·16·and·<code·class="inline">BEAM_TIGHT_MASK</code>·is·<code·class="inline">0xFFFF</code>.)</p></li><li><p><code·class="inline">I·+=·1;</code>·advances·the·instruction·pointer·to·the·next·instruction.</p></li></ul><p><code·class="inline">move_xy</code>·is·almost·identical·to·<code·class="inline">move_xx</code>.··The·only·difference·is247 <code·class="inline">BEAM_TIGHT_SHIFT</code>·is·16·and·<code·class="inline">BEAM_TIGHT_MASK</code>·is·<code·class="inline">0xFFFF</code>.)</p></li><li><p><code·class="inline">I·+=·1;</code>·advances·the·instruction·pointer·to·the·next·instruction.</p></li></ul><p><code·class="inline">move_xy</code>·is·almost·identical·to·<code·class="inline">move_xx</code>.··The·only·difference·is
248 the·use·of·the·<code·class="inline">yb()</code>·macro·instead·of·<code·class="inline">xb()</code>·to·reference·the248 the·use·of·the·<code·class="inline">yb()</code>·macro·instead·of·<code·class="inline">xb()</code>·to·reference·the
249 destination·register:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OpCase</span><span·class="p"·data-group-id="7508293195-1">(</span><span·class="ss">move_xy</span><span·class="p"·data-group-id="7508293195-1">)</span><span·class="p">:</span><span·class="w">249 destination·register:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OpCase</span><span·class="p"·data-group-id="6017094606-1">(</span><span·class="ss">move_xy</span><span·class="p"·data-group-id="6017094606-1">)</span><span·class="p">:</span><span·class="w">
250 </span><span·class="p"·data-group-id="7508293195-2">{</span><span·class="w">250 </span><span·class="p"·data-group-id="6017094606-2">{</span><span·class="w">
251 ··</span><span·class="n">Eterm</span><span·class="w">·</span><span·class="ss">tmp_packed1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="7508293195-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="7508293195-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="7508293195-4">]</span><span·class="p"·data-group-id="7508293195-3">)</span><span·class="p">;</span><span·class="w">251 ··</span><span·class="n">Eterm</span><span·class="w">·</span><span·class="ss">tmp_packed1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="6017094606-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="6017094606-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="6017094606-4">]</span><span·class="p"·data-group-id="6017094606-3">)</span><span·class="p">;</span><span·class="w">
252 ··</span><span·class="n">BeamInstr</span><span·class="w">·</span><span·class="ss">next_pf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamCodeAddr</span><span·class="p"·data-group-id="7508293195-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="7508293195-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="7508293195-6">]</span><span·class="p"·data-group-id="7508293195-5">)</span><span·class="p">;</span><span·class="w">252 ··</span><span·class="n">BeamInstr</span><span·class="w">·</span><span·class="ss">next_pf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">BeamCodeAddr</span><span·class="p"·data-group-id="6017094606-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="6017094606-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="6017094606-6">]</span><span·class="p"·data-group-id="6017094606-5">)</span><span·class="p">;</span><span·class="w">
253 ··</span><span·class="nf">yb</span><span·class="p"·data-group-id="7508293195-7">(</span><span·class="p"·data-group-id="7508293195-8">(</span><span·class="ss">tmp_packed1</span><span·class="p">&gt;&gt;</span><span·class="n">BEAM_TIGHT_SHIFT</span><span·class="p"·data-group-id="7508293195-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·0ff8ddb1da06d6355d443960c41204fe3f58eb40b4c9b654ed6b30c03dd3ffbe·...·]-9">)</span><span·class="p">;</span><span·class="w">253 ··</span><span·class="nf">yb</span><span·class="p"·data-group-id="6017094606-7">(</span><span·class="p"·data-group-id="6017094606-8">(</span><span·class="ss">tmp_packed1</span><span·class="p">&gt;&gt;</span><span·class="n">BEAM_TIGHT_SHIFT</span><span·class="p"·data-group-id="6017094606-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·f3c0f4f1f710e15ea731bc5179e5ec13e28516c4f992294b87bb5583d4d98ab6·...·]-9">)</span><span·class="p">;</span><span·class="w">
254 ··</span><span·class="n">I</span><span·class="w">·</span><span·class="o">+</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">254 ··</span><span·class="n">I</span><span·class="w">·</span><span·class="o">+</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
255 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="7508293195-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="7508293195-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="7508293195-11">)</span><span·class="p"·data-group-id="7508293195-10">)</span><span·class="p">;</span><span·class="w">255 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="6017094606-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="6017094606-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="6017094606-11">)</span><span·class="p"·data-group-id="6017094606-10">)</span><span·class="p">;</span><span·class="w">
256 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="7508293195-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="7508293195-12">)</span><span·class="p">;</span><span·class="w">256 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="6017094606-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="6017094606-12">)</span><span·class="p">;</span><span·class="w">
257 </span><span·class="p"·data-group-id="7508293195-2">}</span></code></pre><h3·id="transformation-rules"·class="section-heading">257 </span><span·class="p"·data-group-id="6017094606-2">}</span></code></pre><h3·id="transformation-rules"·class="section-heading">
258 ··<a·href="#transformation-rules"·class="hover-link">258 ··<a·href="#transformation-rules"·class="hover-link">
259 ····<i·class="ri-link-m"·aria-hidden="true"></i>259 ····<i·class="ri-link-m"·aria-hidden="true"></i>
260 ··</a>260 ··</a>
261 ··<span·class="text">Transformation·rules</span>261 ··<span·class="text">Transformation·rules</span>
262 </h3>262 </h3>
263 <p>Next·let's·look·at·how·we·can·do·some·optimizations·using·transformation263 <p>Next·let's·look·at·how·we·can·do·some·optimizations·using·transformation
264 rules.··For·simple·instructions·such·as·<code·class="inline">move/2</code>,·the·instruction·dispatch264 rules.··For·simple·instructions·such·as·<code·class="inline">move/2</code>,·the·instruction·dispatch
Offset 271, 21 lines modifiedOffset 271, 21 lines modified
271 with·an·uppercase·letter·just·as·in·Erlang.··A·pattern·variable·may·be271 with·an·uppercase·letter·just·as·in·Erlang.··A·pattern·variable·may·be
272 followed·<code·class="inline">=</code>·and·one·or·more·type·letters·to·constrain·the·match·to272 followed·<code·class="inline">=</code>·and·one·or·more·type·letters·to·constrain·the·match·to
273 one·of·those·types.··The·variables·that·are·bound·on·the·left-hand·side·can273 one·of·those·types.··The·variables·that·are·bound·on·the·left-hand·side·can
274 be·used·on·the·right-hand·side.</p><p>We·will·also·need·to·define·a·specific·instruction·and·an·implementation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">#</span><span·class="w">·</span><span·class="n">In</span><span·class="w">·</span><span·class="ss">ops</span><span·class="p">.</span><span·class="ss">tab</span><span·class="w">274 be·used·on·the·right-hand·side.</p><p>We·will·also·need·to·define·a·specific·instruction·and·an·implementation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">#</span><span·class="w">·</span><span·class="n">In</span><span·class="w">·</span><span·class="ss">ops</span><span·class="p">.</span><span·class="ss">tab</span><span·class="w">
275 </span><span·class="ss">move2</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="ss">y</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="ss">y</span><span·class="w">275 </span><span·class="ss">move2</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="ss">y</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="ss">y</span><span·class="w">
  
276 </span><span·class="o">/</span><span·class="o">/</span><span·class="w">·</span><span·class="n">In</span><span·class="w">·</span><span·class="ss">instrs</span><span·class="p">.</span><span·class="ss">tab</span><span·class="w">276 </span><span·class="o">/</span><span·class="o">/</span><span·class="w">·</span><span·class="n">In</span><span·class="w">·</span><span·class="ss">instrs</span><span·class="p">.</span><span·class="ss">tab</span><span·class="w">
277 </span><span·class="nf">move2</span><span·class="p"·data-group-id="6462414335-1">(</span><span·class="n">S1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S2</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·128,·SHA:·149acfce5f9c4eb1da4e13d5a24273b47801319926fa283b60f62535f138c0eb·...·]-2">{</span><span·class="w">277 </span><span·class="nf">move2</span><span·class="p"·data-group-id="2993855878-1">(</span><span·class="n">S1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S2</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·128,·SHA:·1c9b10f1d2acbbf1c6fd1cee13edf7595cb0a2626d707f859a2a6d5c799d20ba·...·]-2">{</span><span·class="w">
278 ····</span><span·class="n">Eterm</span><span·class="w">·</span><span·class="n">V1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V2</span><span·class="p">;</span><span·class="w">278 ····</span><span·class="n">Eterm</span><span·class="w">·</span><span·class="n">V1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V2</span><span·class="p">;</span><span·class="w">
279 ····</span><span·class="n">V1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="sc">$S</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">279 ····</span><span·class="n">V1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="sc">$S</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
280 ····</span><span·class="n">V2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="sc">$S</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">280 ····</span><span·class="n">V2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="sc">$S</span><span·class="mi">2</span><span·class="p">;</span><span·class="w">
281 ····</span><span·class="sc">$D</span><span·class="mi">1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">V1</span><span·class="p">;</span><span·class="w">281 ····</span><span·class="sc">$D</span><span·class="mi">1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">V1</span><span·class="p">;</span><span·class="w">
282 ····</span><span·class="sc">$D</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">V2</span><span·class="p">;</span><span·class="w">282 ····</span><span·class="sc">$D</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">V2</span><span·class="p">;</span><span·class="w">
283 </span><span·class="p"·data-group-id="6462414335-2">}</span></code></pre><p>When·the·loader·has·found·a·match·and·replaced·the·matched·instructions,283 </span><span·class="p"·data-group-id="2993855878-2">}</span></code></pre><p>When·the·loader·has·found·a·match·and·replaced·the·matched·instructions,
284 it·will·match·the·new·instructions·against·the·transformation·rules.284 it·will·match·the·new·instructions·against·the·transformation·rules.
285 Because·of·that,·we·can·define·the·rule·for·a·<code·class="inline">move3/6</code>·instruction285 Because·of·that,·we·can·define·the·rule·for·a·<code·class="inline">move3/6</code>·instruction
286 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">move2</span><span·class="w">·</span><span·class="n">X1</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y1</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="n">X2</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y2</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">move</span><span·class="w">·</span><span·class="n">X3</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y3</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">286 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">move2</span><span·class="w">·</span><span·class="n">X1</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y1</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="n">X2</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y2</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">move</span><span·class="w">·</span><span·class="n">X3</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y3</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
287 ······</span><span·class="ss">move3</span><span·class="w">·</span><span·class="n">X1</span><span·class="w">·</span><span·class="n">Y1</span><span·class="w">·</span><span·class="n">X2</span><span·class="w">·</span><span·class="n">Y2</span><span·class="w">·</span><span·class="n">X3</span><span·class="w">·</span><span·class="n">Y3</span></code></pre><p>(For·readability,·a·long·transformation·line·can·be·broken·after·<code·class="inline">|</code>287 ······</span><span·class="ss">move3</span><span·class="w">·</span><span·class="n">X1</span><span·class="w">·</span><span·class="n">Y1</span><span·class="w">·</span><span·class="n">X2</span><span·class="w">·</span><span·class="n">Y2</span><span·class="w">·</span><span·class="n">X3</span><span·class="w">·</span><span·class="n">Y3</span></code></pre><p>(For·readability,·a·long·transformation·line·can·be·broken·after·<code·class="inline">|</code>
288 and·<code·class="inline">=&gt;</code>·operators.)</p><p>It·would·also·be·possible·to·define·it·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">move</span><span·class="w">·</span><span·class="n">X1</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y1</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">move</span><span·class="w">·</span><span·class="n">X2</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y2</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">move</span><span·class="w">·</span><span·class="n">X3</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y3</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">288 and·<code·class="inline">=&gt;</code>·operators.)</p><p>It·would·also·be·possible·to·define·it·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">move</span><span·class="w">·</span><span·class="n">X1</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y1</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">move</span><span·class="w">·</span><span·class="n">X2</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y2</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">move</span><span·class="w">·</span><span·class="n">X3</span><span·class="o">=</span><span·class="ss">x</span><span·class="w">·</span><span·class="n">Y3</span><span·class="o">=</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
289 ·····</span><span·class="ss">move3</span><span·class="w">·</span><span·class="n">X1</span><span·class="w">·</span><span·class="n">Y1</span><span·class="w">·</span><span·class="n">X2</span><span·class="w">·</span><span·class="n">Y2</span><span·class="w">·</span><span·class="n">X3</span><span·class="w">·</span><span·class="n">Y3</span></code></pre><p>but·in·that·case·it·must·be·defined·before·the·rule·for·<code·class="inline">move2/4</code>289 ·····</span><span·class="ss">move3</span><span·class="w">·</span><span·class="n">X1</span><span·class="w">·</span><span·class="n">Y1</span><span·class="w">·</span><span·class="n">X2</span><span·class="w">·</span><span·class="n">Y2</span><span·class="w">·</span><span·class="n">X3</span><span·class="w">·</span><span·class="n">Y3</span></code></pre><p>but·in·that·case·it·must·be·defined·before·the·rule·for·<code·class="inline">move2/4</code>
290 because·the·first·matching·rule·will·be·applied.</p><p>One·must·be·careful·not·to·create·infinite·loops.··For·example,·if·we290 because·the·first·matching·rule·will·be·applied.</p><p>One·must·be·careful·not·to·create·infinite·loops.··For·example,·if·we
Offset 433, 29 lines modifiedOffset 433, 29 lines modified
433 </span><span·class="ss">i_bs_get_integer_32</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="ss">f</span><span·class="o">?</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">433 </span><span·class="ss">i_bs_get_integer_32</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">·</span><span·class="ss">f</span><span·class="o">?</span><span·class="w">·</span><span·class="ss">x</span><span·class="w">
434 </span><span·class="c1">%endif</span></code></pre><p>The·specific·instruction·<code·class="inline">i_bs_get_integer_32</code>·will·only·be·defined434 </span><span·class="c1">%endif</span></code></pre><p>The·specific·instruction·<code·class="inline">i_bs_get_integer_32</code>·will·only·be·defined
435 on·a·64-bit·machine.</p><p>The·condition·can·be·inverted·by·using·<code·class="inline">%unless</code>·instead·of·<code·class="inline">%if</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%unless·NO_FPE_SIGNALS</span><span·class="w">435 on·a·64-bit·machine.</p><p>The·condition·can·be·inverted·by·using·<code·class="inline">%unless</code>·instead·of·<code·class="inline">%if</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%unless·NO_FPE_SIGNALS</span><span·class="w">
436 </span><span·class="ss">fcheckerror</span><span·class="w">·</span><span·class="ss">p</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">i_fcheckerror</span><span·class="w">436 </span><span·class="ss">fcheckerror</span><span·class="w">·</span><span·class="ss">p</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">i_fcheckerror</span><span·class="w">
437 </span><span·class="ss">i_fcheckerror</span><span·class="w">437 </span><span·class="ss">i_fcheckerror</span><span·class="w">
438 </span><span·class="ss">fclearerror</span><span·class="w">438 </span><span·class="ss">fclearerror</span><span·class="w">
439 </span><span·class="c1">%endif</span></code></pre><p>It·is·also·possible·to·add·an·<code·class="inline">%else</code>·clause:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%if·ARCH_64</span><span·class="w">439 </span><span·class="c1">%endif</span></code></pre><p>It·is·also·possible·to·add·an·<code·class="inline">%else</code>·clause:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%if·ARCH_64</span><span·class="w">
Max diff block lines reached; 247911/289523 bytes (85.63%) of diff not shown.
44.5 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/beamasm.html
    
Offset 145, 26 lines modifiedOffset 145, 26 lines modified
145 </h2>145 </h2>
146 <p>The·code·is·loaded·very·similarly·to·how·it·is·loaded·for·the·interpreter.·Each·beam146 <p>The·code·is·loaded·very·similarly·to·how·it·is·loaded·for·the·interpreter.·Each·beam
147 file·is·parsed·and·then·optimized·through·the·transformations·described·in147 file·is·parsed·and·then·optimized·through·the·transformations·described·in
148 <a·href="beam_makeops.html#defining-transformation-rules">beam_makeops</a>.·The·transformations148 <a·href="beam_makeops.html#defining-transformation-rules">beam_makeops</a>.·The·transformations
149 used·in·BeamAsm·are·much·simpler·than·the·interpreter's,·as·most·of·the149 used·in·BeamAsm·are·much·simpler·than·the·interpreter's,·as·most·of·the
150 transformations·for·the·interpreter·are·done·only·to·eliminate·the·instruction150 transformations·for·the·interpreter·are·done·only·to·eliminate·the·instruction
151 dispatch·overhead.</p><p>Then·each·instruction·is·encoded·using·the·C++·functions·in·the151 dispatch·overhead.</p><p>Then·each·instruction·is·encoded·using·the·C++·functions·in·the
152 <code·class="inline">jit/$ARCH/instr_*.cpp</code>·files.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">void</span><span·class="w">·</span><span·class="n">BeamModuleAssembler</span><span·class="p">:</span><span·class="p">:</span><span·class="nf">emit_is_nonempty_list</span><span·class="p"·data-group-id="6952079461-1">(</span><span·class="ss">const</span><span·class="w">·</span><span·class="n">ArgVal</span><span·class="w">·</span><span·class="err">&amp;</span><span·class="n">Fail</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">const<[·...·truncated·by·diffoscope;·len:·257,·SHA:·5fdc0c6a241e688d992ea29fa6569fea31af12336de1e47980c23ea526db5665·...·]-2">{</span><span·class="w">152 <code·class="inline">jit/$ARCH/instr_*.cpp</code>·files.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">void</span><span·class="w">·</span><span·class="n">BeamModuleAssembler</span><span·class="p">:</span><span·class="p">:</span><span·class="nf">emit_is_nonempty_list</span><span·class="p"·data-group-id="8324874876-1">(</span><span·class="ss">const</span><span·class="w">·</span><span·class="n">ArgVal</span><span·class="w">·</span><span·class="err">&amp;</span><span·class="n">Fail</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">const<[·...·truncated·by·diffoscope;·len:·257,·SHA:·36191f637c8b13c848dfceaeb68919cc3c99c02a946249be34d342d5c4fd5933·...·]-2">{</span><span·class="w">
153 ··</span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">test</span><span·class="p"·data-group-id="6952079461-3">(</span><span·class="nf">getArgRef</span><span·class="p"·data-group-id="6952079461-4">(</span><span·class="n">Src</span><span·class="p"·data-group-id="6952079461-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">imm<[·...·truncated·by·diffoscope;·len:·327,·SHA:·eb2e717ffabf1104361139d8ba64541b1f26dfe79c6bb1a299489637517dd3a6·...·]-3">)</span><span·class="p">;</span><span·class="w">153 ··</span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">test</span><span·class="p"·data-group-id="8324874876-3">(</span><span·class="nf">getArgRef</span><span·class="p"·data-group-id="8324874876-4">(</span><span·class="n">Src</span><span·class="p"·data-group-id="8324874876-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">imm<[·...·truncated·by·diffoscope;·len:·327,·SHA:·9006ac330175679bb313def5b6869007b381059a17b93691f15a862164e10e90·...·]-3">)</span><span·class="p">;</span><span·class="w">
154 ··</span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">jne</span><span·class="p"·data-group-id="6952079461-6">(</span><span·class="ss">labels</span><span·class="p"·data-group-id="6952079461-7">[</span><span·class="n">Fail</span><span·class="p">.</span><span·class="nf">getLabel</span><span·class="p"·data-group-id="6952079461-8">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·132,·SHA:·c31f782c68fba13350e86b901ce6d8d08f824e077ec56b57667bfe9ffe14fb00·...·]-6">)</span><span·class="p">;</span><span·class="w">154 ··</span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">jne</span><span·class="p"·data-group-id="8324874876-6">(</span><span·class="ss">labels</span><span·class="p"·data-group-id="8324874876-7">[</span><span·class="n">Fail</span><span·class="p">.</span><span·class="nf">getLabel</span><span·class="p"·data-group-id="8324874876-8">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·132,·SHA:·2dbc1f22454c4b6cc94129920af649c22243d737a51c90817a071edc2dcab373·...·]-6">)</span><span·class="p">;</span><span·class="w">
155 </span><span·class="p"·data-group-id="6952079461-2">}</span></code></pre><p><a·href="https://github.com/asmjit/asmjit">asmjit</a>·provides·a·fairly·straightforward155 </span><span·class="p"·data-group-id="8324874876-2">}</span></code></pre><p><a·href="https://github.com/asmjit/asmjit">asmjit</a>·provides·a·fairly·straightforward
156 mapping·from·a·C++·function·call·to·the·x86·assembly·instruction.·The·above156 mapping·from·a·C++·function·call·to·the·x86·assembly·instruction.·The·above
157 instruction·tests·if·the·value·in·the·<code·class="inline">Src</code>·register·is·a·non-empty·list·and·if157 instruction·tests·if·the·value·in·the·<code·class="inline">Src</code>·register·is·a·non-empty·list·and·if
158 it·is·not·then·it·jumps·to·the·fail·label.</p><p>For·comparison,·the·interpreter·has·8·combinations·and·specializations·of158 it·is·not·then·it·jumps·to·the·fail·label.</p><p>For·comparison,·the·interpreter·has·8·combinations·and·specializations·of
159 this·implementation·to·minimize·the·instruction·dispatch·overhead·for159 this·implementation·to·minimize·the·instruction·dispatch·overhead·for
160 common·patterns.</p><p>The·original·register·allocation·done·by·the·Erlang·compiler·is·used·to·manage·the160 common·patterns.</p><p>The·original·register·allocation·done·by·the·Erlang·compiler·is·used·to·manage·the
161 liveness·of·values·and·the·physical·registers·are·statically·allocated·to·keep161 liveness·of·values·and·the·physical·registers·are·statically·allocated·to·keep
162 the·necessary·process·state.·At·the·moment·this·is·the·static·register162 the·necessary·process·state.·At·the·moment·this·is·the·static·register
163 allocation·on·x86-64:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">rbx</span><span·class="p">:</span><span·class="w">·</span><span·class="n">ErtsSchedulerRegisters</span><span·class="w">·</span><span·class="nf">struct</span><span·class="w">·</span><span·class="p"·data-group-id="4544879272-1">(</span><span·class="ss">contains</span><span·class="w">·</span><span·class="ss">x</span><span·class="o">/</span><span·class="nb">float</span><span·class="w">·</span><span·class="ss">registers</span><span·class="w">·</span><span·class="ow">an[·...·truncated·by·diffoscope;·len:·157,·SHA:·96498c75cba80ef000e15bb7e4e974753660e22d446e4ed103e64919bc2c70e8·...·]-1">)</span><span·class="w">163 allocation·on·x86-64:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">rbx</span><span·class="p">:</span><span·class="w">·</span><span·class="n">ErtsSchedulerRegisters</span><span·class="w">·</span><span·class="nf">struct</span><span·class="w">·</span><span·class="p"·data-group-id="2697841713-1">(</span><span·class="ss">contains</span><span·class="w">·</span><span·class="ss">x</span><span·class="o">/</span><span·class="nb">float</span><span·class="w">·</span><span·class="ss">registers</span><span·class="w">·</span><span·class="ow">an[·...·truncated·by·diffoscope;·len:·157,·SHA:·cf5889f9213f41ab3164902546f2f141f11f87661061f5849a9d443bb78cc007·...·]-1">)</span><span·class="w">
164 </span><span·class="nc">rbp</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Current</span><span·class="w">·</span><span·class="ss">frame</span><span·class="w">·</span><span·class="ss">pointer</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="err">`</span><span·class="ss">perf</span><span·class="err">`</span><span·class="w">·</span><span·class="ss">support</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">enabled</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">otherwise</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">164 </span><span·class="nc">rbp</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Current</span><span·class="w">·</span><span·class="ss">frame</span><span·class="w">·</span><span·class="ss">pointer</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="err">`</span><span·class="ss">perf</span><span·class="err">`</span><span·class="w">·</span><span·class="ss">support</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">enabled</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">otherwise</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">
165 ·····</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">an</span><span·class="w">·</span><span·class="ss">optional</span><span·class="w">·</span><span·class="ss">save</span><span·class="w">·</span><span·class="ss">slot</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">stack</span><span·class="w">·</span><span·class="ss">pointer</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="ss">executing</span><span·class="w">·</span><span·class="n">C</span><span·class="w">165 ·····</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">an</span><span·class="w">·</span><span·class="ss">optional</span><span·class="w">·</span><span·class="ss">save</span><span·class="w">·</span><span·class="ss">slot</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">stack</span><span·class="w">·</span><span·class="ss">pointer</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="ss">executing</span><span·class="w">·</span><span·class="n">C</span><span·class="w">
166 ·····</span><span·class="ss">code</span><span·class="p">.</span><span·class="w">166 ·····</span><span·class="ss">code</span><span·class="p">.</span><span·class="w">
167 </span><span·class="nc">r12</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Active</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">index</span><span·class="w">167 </span><span·class="nc">r12</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Active</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">index</span><span·class="w">
168 </span><span·class="nc">r13</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Current</span><span·class="w">·</span><span·class="ss">running</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">168 </span><span·class="nc">r13</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Current</span><span·class="w">·</span><span·class="ss">running</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">
169 </span><span·class="nc">r14</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Remaining</span><span·class="w">·</span><span·class="ss">reductions</span><span·class="w">169 </span><span·class="nc">r14</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Remaining</span><span·class="w">·</span><span·class="ss">reductions</span><span·class="w">
170 </span><span·class="nc">r15</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">heap</span><span·class="w">·</span><span·class="ss">pointer</span></code></pre><p>Note·that·all·of·these·are·callee·save·registers·under·the·System·V·and·Windows170 </span><span·class="nc">r15</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">heap</span><span·class="w">·</span><span·class="ss">pointer</span></code></pre><p>Note·that·all·of·these·are·callee·save·registers·under·the·System·V·and·Windows
Offset 183, 21 lines modifiedOffset 183, 21 lines modified
183 shared·and·only·the·arguments·to·the·instructions·vary.·Using·as·little·memory·as183 shared·and·only·the·arguments·to·the·instructions·vary.·Using·as·little·memory·as
184 possible·has·many·advantages;·less·memory·is·used,·loading·time·decreases,184 possible·has·many·advantages;·less·memory·is·used,·loading·time·decreases,
185 higher·cache·hit-rate.</p><p>In·BeamAsm·we·need·to·achieve·something·similar·since·the·load-time·of·a·module185 higher·cache·hit-rate.</p><p>In·BeamAsm·we·need·to·achieve·something·similar·since·the·load-time·of·a·module
186 scales·almost·linearly·with·the·amount·of·memory·it·uses.·Early·BeamAsm·prototypes186 scales·almost·linearly·with·the·amount·of·memory·it·uses.·Early·BeamAsm·prototypes
187 used·about·double·the·amount·of·memory·for·code·as·the·interpreter,·while·current187 used·about·double·the·amount·of·memory·for·code·as·the·interpreter,·while·current
188 versions·use·about·10%·more.·How·was·this·achieved?</p><p>In·BeamAsm·we·heavily·use·shared·code·fragments·to·try·to·emit·as·much·code·as188 versions·use·about·10%·more.·How·was·this·achieved?</p><p>In·BeamAsm·we·heavily·use·shared·code·fragments·to·try·to·emit·as·much·code·as
189 possible·as·global·shared·fragments·instead·of·duplicating·the·code·unnecessarily.189 possible·as·global·shared·fragments·instead·of·duplicating·the·code·unnecessarily.
190 For·instance,·the·return·instruction·looks·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Label</span><span·class="w">·</span><span·class="ss">yield</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">newLabel</span><span·class="p"·data-group-id="4603655945-1">(</span><span·class="p"·data-group-id="4603655945-1">)</span><span·class="p">;</span><span·class="w">190 For·instance,·the·return·instruction·looks·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Label</span><span·class="w">·</span><span·class="ss">yield</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">newLabel</span><span·class="p"·data-group-id="0503489100-1">(</span><span·class="p"·data-group-id="0503489100-1">)</span><span·class="p">;</span><span·class="w">
  
191 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Decrement</span><span·class="w">·</span><span·class="ss">reduction</span><span·class="w">·</span><span·class="ss">counter</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">191 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Decrement</span><span·class="w">·</span><span·class="ss">reduction</span><span·class="w">·</span><span·class="ss">counter</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
192 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">dec</span><span·class="p"·data-group-id="4603655945-2">(</span><span·class="n">FCALLS</span><span·class="p"·data-group-id="4603655945-2">)</span><span·class="p">;</span><span·class="w">192 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">dec</span><span·class="p"·data-group-id="0503489100-2">(</span><span·class="n">FCALLS</span><span·class="p"·data-group-id="0503489100-2">)</span><span·class="p">;</span><span·class="w">
193 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">If</span><span·class="w">·</span><span·class="n">FCALLS</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">jump</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">yield</span><span·class="o">-</span><span·class="ss">on</span><span·class="o">-</span><span·class="ss">return</span><span·class="w">·</span><span·class="ss">fragment</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">193 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">If</span><span·class="w">·</span><span·class="n">FCALLS</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">jump</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">yield</span><span·class="o">-</span><span·class="ss">on</span><span·class="o">-</span><span·class="ss">return</span><span·class="w">·</span><span·class="ss">fragment</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
194 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">jl</span><span·class="p"·data-group-id="4603655945-3">(</span><span·class="nf">resolve_fragment</span><span·class="p"·data-group-id="4603655945-4">(</span><span·class="ss">ga</span><span·class="p">-&gt;</span><span·class="nf">get_dispatch_return</span><span·class="p"·data-group-id="4603655945-5"[·...·truncated·by·diffoscope;·len:·156,·SHA:·bd7f897984e70630d9b07faa42fdfc297ad778d9910c2f48804c969a966a9861·...·]-3">)</span><span·class="p">;</span><span·class="w">194 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">jl</span><span·class="p"·data-group-id="0503489100-3">(</span><span·class="nf">resolve_fragment</span><span·class="p"·data-group-id="0503489100-4">(</span><span·class="ss">ga</span><span·class="p">-&gt;</span><span·class="nf">get_dispatch_return</span><span·class="p"·data-group-id="0503489100-5"[·...·truncated·by·diffoscope;·len:·156,·SHA:·7054aea155820486778cadae2967e130b86e728cf5f388a04693ad6cd253e8ae·...·]-3">)</span><span·class="p">;</span><span·class="w">
195 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">ret</span><span·class="p"·data-group-id="4603655945-6">(</span><span·class="p"·data-group-id="4603655945-6">)</span><span·class="p">;</span></code></pre><p>The·code·above·is·not·exactly·what·is·emitted,·but·close·enough.·The·thing·to·note195 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">ret</span><span·class="p"·data-group-id="0503489100-6">(</span><span·class="p"·data-group-id="0503489100-6">)</span><span·class="p">;</span></code></pre><p>The·code·above·is·not·exactly·what·is·emitted,·but·close·enough.·The·thing·to·note
196 is·that·the·code·for·doing·the·context·switch·is·never·emitted.·Instead,·we·jump196 is·that·the·code·for·doing·the·context·switch·is·never·emitted.·Instead,·we·jump
197 to·a·global·fragment·that·all·return·instructions·share.·This·greatly·reduces197 to·a·global·fragment·that·all·return·instructions·share.·This·greatly·reduces
198 the·amount·of·code·that·has·to·be·emitted·for·each·module.</p><h2·id="running-erlang-code"·class="section-heading">198 the·amount·of·code·that·has·to·be·emitted·for·each·module.</p><h2·id="running-erlang-code"·class="section-heading">
199 ··<a·href="#running-erlang-code"·class="hover-link">199 ··<a·href="#running-erlang-code"·class="hover-link">
200 ····<i·class="ri-link-m"·aria-hidden="true"></i>200 ····<i·class="ri-link-m"·aria-hidden="true"></i>
201 ··</a>201 ··</a>
202 ··<span·class="text">Running·Erlang·code</span>202 ··<span·class="text">Running·Erlang·code</span>
Offset 239, 43 lines modifiedOffset 239, 43 lines modified
239 ··<a·href="#running-c-code"·class="hover-link">239 ··<a·href="#running-c-code"·class="hover-link">
240 ····<i·class="ri-link-m"·aria-hidden="true"></i>240 ····<i·class="ri-link-m"·aria-hidden="true"></i>
241 ··</a>241 ··</a>
242 ··<span·class="text">Running·C·code</span>242 ··<span·class="text">Running·C·code</span>
243 </h2>243 </h2>
244 <p>As·Erlang·stacks·can·be·very·small,·we·have·to·switch·over·to·a·different·stack244 <p>As·Erlang·stacks·can·be·very·small,·we·have·to·switch·over·to·a·different·stack
245 when·we·need·to·execute·C·code·(which·may·expect·a·much·larger·stack).·This·is245 when·we·need·to·execute·C·code·(which·may·expect·a·much·larger·stack).·This·is
246 done·through·<code·class="inline">emit_enter_runtime</code>·and·<code·class="inline">emit_leave_runtime</code>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">mov_arg</span><span·class="p"·data-group-id="0880300722-1">(</span><span·class="n">ARG4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NumFree</span><span·class="p"·data-group-id="0880300722-1">)</span><span·class="p">;</span><span·class="w">246 done·through·<code·class="inline">emit_enter_runtime</code>·and·<code·class="inline">emit_leave_runtime</code>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">mov_arg</span><span·class="p"·data-group-id="6320639160-1">(</span><span·class="n">ARG4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NumFree</span><span·class="p"·data-group-id="6320639160-1">)</span><span·class="p">;</span><span·class="w">
  
247 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Move</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="ss">stack</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="ss">swap</span><span·class="w">·</span><span·class="ss">out</span><span·class="w">·</span><span·class="ss">our</span><span·class="w">·</span><span·class="ss">current</span><span·class="w">·</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stack</span><span·class="o">-</span><span·class="p">,</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">247 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Move</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="ss">stack</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="ss">swap</span><span·class="w">·</span><span·class="ss">out</span><span·class="w">·</span><span·class="ss">our</span><span·class="w">·</span><span·class="ss">current</span><span·class="w">·</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stack</span><span·class="o">-</span><span·class="p">,</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">
248 ·</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">heap</span><span·class="w">·</span><span·class="ss">pointer</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">·</span><span·class="ss">structure</span><span·class="p">.</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">248 ·</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">heap</span><span·class="w">·</span><span·class="ss">pointer</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">·</span><span·class="ss">structure</span><span·class="p">.</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
249 </span><span·class="ss">emit_enter_runtime</span><span·class="o">&lt;</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eReductions</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eStack</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eHeap</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0880300722-2">(</span><span·class="p"·data-group-id="0880300722-2">)</span><span·class="p">;</span><span·class="w">249 </span><span·class="ss">emit_enter_runtime</span><span·class="o">&lt;</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eReductions</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eStack</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eHeap</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6320639160-2">(</span><span·class="p"·data-group-id="6320639160-2">)</span><span·class="p">;</span><span·class="w">
  
250 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">mov</span><span·class="p"·data-group-id="0880300722-3">(</span><span·class="n">ARG1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c_p</span><span·class="p"·data-group-id="0880300722-3">)</span><span·class="p">;</span><span·class="w">250 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">mov</span><span·class="p"·data-group-id="6320639160-3">(</span><span·class="n">ARG1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c_p</span><span·class="p"·data-group-id="6320639160-3">)</span><span·class="p">;</span><span·class="w">
251 </span><span·class="nf">load_x_reg_array</span><span·class="p"·data-group-id="0880300722-4">(</span><span·class="n">ARG2</span><span·class="p"·data-group-id="0880300722-4">)</span><span·class="p">;</span><span·class="w">251 </span><span·class="nf">load_x_reg_array</span><span·class="p"·data-group-id="6320639160-4">(</span><span·class="n">ARG2</span><span·class="p"·data-group-id="6320639160-4">)</span><span·class="p">;</span><span·class="w">
252 </span><span·class="nf">make_move_patch</span><span·class="p"·data-group-id="0880300722-5">(</span><span·class="n">ARG3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lambdas</span><span·class="p"·data-group-id="0880300722-6">[</span><span·class="n">Fun</span><span·class="p">.</span><span·class="nf">getValue[·...·truncated·by·diffoscope;·len:·262,·SHA:·3978fa9e19e38d168fc49242e7b50dfd25bc2f6a94460706298293a1174fa985·...·]-5">)</span><span·class="p">;</span><span·class="w">252 </span><span·class="nf">make_move_patch</span><span·class="p"·data-group-id="6320639160-5">(</span><span·class="n">ARG3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lambdas</span><span·class="p"·data-group-id="6320639160-6">[</span><span·class="n">Fun</span><span·class="p">.</span><span·class="nf">getValue[·...·truncated·by·diffoscope;·len:·262,·SHA:·2703504ceb5e623b467ea1dc0a5185809a1b102d17d49c222684233fcea71272·...·]-5">)</span><span·class="p">;</span><span·class="w">
  
253 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Call</span><span·class="w">·</span><span·class="err">`</span><span·class="ss">new_fun</span><span·class="err">`</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">asserting</span><span·class="w">·</span><span·class="ss">that</span><span·class="w">·</span><span·class="ss">we</span><span·class="err">&#39;</span><span·class="ss">re</span><span·class="w">·</span><span·class="ss">on</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="ss">stack</span><span·class="p">.</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">253 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Call</span><span·class="w">·</span><span·class="err">`</span><span·class="ss">new_fun</span><span·class="err">`</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">asserting</span><span·class="w">·</span><span·class="ss">that</span><span·class="w">·</span><span·class="ss">we</span><span·class="err">&#39;</span><span·class="ss">re</span><span·class="w">·</span><span·class="ss">on</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="ss">stack</span><span·class="p">.</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
254 </span><span·class="ss">runtime_call</span><span·class="o">&lt;</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0880300722-8">(</span><span·class="ss">new_fun</span><span·class="p"·data-group-id="0880300722-8">)</span><span·class="p">;</span><span·class="w">254 </span><span·class="ss">runtime_call</span><span·class="o">&lt;</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6320639160-8">(</span><span·class="ss">new_fun</span><span·class="p"·data-group-id="6320639160-8">)</span><span·class="p">;</span><span·class="w">
  
255 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Move</span><span·class="w">·</span><span·class="ss">back</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="ss">stack</span><span·class="p">,</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="ss">read</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">updated</span><span·class="w">·</span><span·class="ss">values</span><span·class="w">·</span><span·class="ss">from</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">255 </span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Move</span><span·class="w">·</span><span·class="ss">back</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">C</span><span·class="w">·</span><span·class="ss">stack</span><span·class="p">,</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="ss">read</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">updated</span><span·class="w">·</span><span·class="ss">values</span><span·class="w">·</span><span·class="ss">from</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">
256 ·</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">structure</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">256 ·</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">structure</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
257 </span><span·class="ss">emit_leave_runtime</span><span·class="o">&lt;</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eReductions</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eStack</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eHeap</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0880300722-9">(</span><span·class="p"·data-group-id="0880300722-9">)</span><span·class="p">;</span><span·class="w">257 </span><span·class="ss">emit_leave_runtime</span><span·class="o">&lt;</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eReductions</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eStack</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Update</span><span·class="p">:</span><span·class="p">:</span><span·class="ss">eHeap</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6320639160-9">(</span><span·class="p"·data-group-id="6320639160-9">)</span><span·class="p">;</span><span·class="w">
  
258 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">mov</span><span·class="p"·data-group-id="0880300722-10">(</span><span·class="nf">getXRef</span><span·class="p"·data-group-id="0880300722-11">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0880300722-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RET</[·...·truncated·by·diffoscope;·len:·46,·SHA:·78ada9310897df96f0426bbe4f0ba1705e61e8e9f871c59d55dd5d296c3ae8ce·...·]-10">)</span><span·class="p">;</span></code></pre><p>All·combinations·of·the·<code·class="inline">Update</code>·constants·are·legal,·but·the·ones·given·to258 </span><span·class="ss">a</span><span·class="p">.</span><span·class="nf">mov</span><span·class="p"·data-group-id="6320639160-10">(</span><span·class="nf">getXRef</span><span·class="p"·data-group-id="6320639160-11">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6320639160-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RET</[·...·truncated·by·diffoscope;·len:·46,·SHA:·6e8ab39beab5dec081239d16d45ae4a81cad8a09bd0208fa6339478ab0e07bb0·...·]-10">)</span><span·class="p">;</span></code></pre><p>All·combinations·of·the·<code·class="inline">Update</code>·constants·are·legal,·but·the·ones·given·to
259 <code·class="inline">emit_leave_runtime</code>·<em>must</em>·be·the·same·as·those·given·to·<code·class="inline">emit_enter_runtime</code>.</p><h2·id="tracing-and-nif-loading"·class="section-heading">259 <code·class="inline">emit_leave_runtime</code>·<em>must</em>·be·the·same·as·those·given·to·<code·class="inline">emit_enter_runtime</code>.</p><h2·id="tracing-and-nif-loading"·class="section-heading">
260 ··<a·href="#tracing-and-nif-loading"·class="hover-link">260 ··<a·href="#tracing-and-nif-loading"·class="hover-link">
261 ····<i·class="ri-link-m"·aria-hidden="true"></i>261 ····<i·class="ri-link-m"·aria-hidden="true"></i>
262 ··</a>262 ··</a>
263 ··<span·class="text">Tracing·and·NIF·Loading</span>263 ··<span·class="text">Tracing·and·NIF·Loading</span>
264 </h2>264 </h2>
265 <p>To·make·tracing·and·NIF·loading·work·there·needs·to·be·a·way·to·intercept265 <p>To·make·tracing·and·NIF·loading·work·there·needs·to·be·a·way·to·intercept
266 any·function·call.·In·the·interpreter,·this·is·done·by·rewriting·the·loaded266 any·function·call.·In·the·interpreter,·this·is·done·by·rewriting·the·loaded
267 BEAM·code,·but·this·is·more·complicated·in·BeamAsm·as·we·want·to·have·a·fast267 BEAM·code,·but·this·is·more·complicated·in·BeamAsm·as·we·want·to·have·a·fast
268 and·compact·way·to·do·this.·This·is·solved·by·emitting·the·code·below·at·the268 and·compact·way·to·do·this.·This·is·solved·by·emitting·the·code·below·at·the
269 start·of·each·function·(x86·variant·below):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">0</span><span·class="nc">x0</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">short</span><span·class="w">·</span><span·class="ss">jmp</span><span·class="w">·</span><span·class="mi">6</span><span·class="w">·</span><span·class="p"·data-group-id="2378204900-1">(</span><span·class="ss">address</span><span·class="w">·</span><span·class="mi">0</span><span·class="ss">x8</span><span·class="p"·data-group-id="2378204900-1">)</span><span·class="w">269 start·of·each·function·(x86·variant·below):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">0</span><span·class="nc">x0</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">short</span><span·class="w">·</span><span·class="ss">jmp</span><span·class="w">·</span><span·class="mi">6</span><span·class="w">·</span><span·class="p"·data-group-id="6311480042-1">(</span><span·class="ss">address</span><span·class="w">·</span><span·class="mi">0</span><span·class="ss">x8</span><span·class="p"·data-group-id="6311480042-1">)</span><span·class="w">
270 ··</span><span·class="mi">0</span><span·class="nc">x2</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nop</span><span·class="w">270 ··</span><span·class="mi">0</span><span·class="nc">x2</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nop</span><span·class="w">
271 ··</span><span·class="mi">0</span><span·class="nc">x3</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">relative</span><span·class="w">·</span><span·class="ss">near</span><span·class="w">·</span><span·class="ss">call</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">shared</span><span·class="w">·</span><span·class="ss">breakpoint</span><span·class="w">·</span><span·class="ss">fragment</span><span·class="w">271 ··</span><span·class="mi">0</span><span·class="nc">x3</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">relative</span><span·class="w">·</span><span·class="ss">near</span><span·class="w">·</span><span·class="ss">call</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">shared</span><span·class="w">·</span><span·class="ss">breakpoint</span><span·class="w">·</span><span·class="ss">fragment</span><span·class="w">
272 ··</span><span·class="mi">0</span><span·class="nc">x8</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">actual</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">function</span></code></pre><p>When·code·starts·to·execute·it·will·simply·see·the·<code·class="inline">short·jmp·6</code>·instruction272 ··</span><span·class="mi">0</span><span·class="nc">x8</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">actual</span><span·class="w">·</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">function</span></code></pre><p>When·code·starts·to·execute·it·will·simply·see·the·<code·class="inline">short·jmp·6</code>·instruction
273 which·skips·the·prologue·and·starts·to·execute·the·code·directly.</p><p>When·we·want·to·enable·a·certain·breakpoint·we·set·the·jmp·target·to·be·1,273 which·skips·the·prologue·and·starts·to·execute·the·code·directly.</p><p>When·we·want·to·enable·a·certain·breakpoint·we·set·the·jmp·target·to·be·1,
274 which·means·it·will·land·on·the·call·to·the·shared·breakpoint·fragment.·This274 which·means·it·will·land·on·the·call·to·the·shared·breakpoint·fragment.·This
275 fragment·checks·the·current·<code·class="inline">breakpoint_flag</code>·stored·in·the·ErtsCodeInfo·of275 fragment·checks·the·current·<code·class="inline">breakpoint_flag</code>·stored·in·the·ErtsCodeInfo·of
276 this·function,·and·then·calls·<code·class="inline">erts_call_nif_early</code>·and276 this·function,·and·then·calls·<code·class="inline">erts_call_nif_early</code>·and
Offset 289, 31 lines modifiedOffset 289, 31 lines modified
289 ··<span·class="text">Updating·code</span>289 ··<span·class="text">Updating·code</span>
290 </h3>290 </h3>
291 <p>Because·many·environments·enforce·<a·href="https://en.wikipedia.org/wiki/W%5EX"·title="">W^X</a>·it's·not·always·possible·to·write291 <p>Because·many·environments·enforce·<a·href="https://en.wikipedia.org/wiki/W%5EX"·title="">W^X</a>·it's·not·always·possible·to·write
292 directly·to·the·code·pages.·Because·of·this·we·map·code·twice:·once·with·an292 directly·to·the·code·pages.·Because·of·this·we·map·code·twice:·once·with·an
293 executable·page·and·once·with·a·writable·page.·Since·they're·backed·by·the293 executable·page·and·once·with·a·writable·page.·Since·they're·backed·by·the
294 same·memory,·writes·to·the·writable·page·appear·magically·in·the·executable294 same·memory,·writes·to·the·writable·page·appear·magically·in·the·executable
295 one.</p><p>The·<code·class="inline">erts_writable_code_ptr</code>·function·can·be·used·to·get·writable·pointers295 one.</p><p>The·<code·class="inline">erts_writable_code_ptr</code>·function·can·be·used·to·get·writable·pointers
296 given·a·module·instance,·provided·that·it·has·been·unsealed·first:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">for</span><span·class="w">·</span><span·class="p"·data-group-id="5437023588-1">(</span><span·class="ss">i</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">;</span><span·class="w">·</span><span·class="ss">i</span><span·class="w">·</span><span·class="o"[·...·truncated·by·diffoscope;·len:·277,·SHA:·43b95628189f448f57de320f747f7aa03370a23f21c6040365c4ee4d16783168·...·]-2">{</span><span·class="w">296 given·a·module·instance,·provided·that·it·has·been·unsealed·first:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">for</span><span·class="w">·</span><span·class="p"·data-group-id="7502796509-1">(</span><span·class="ss">i</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">;</span><span·class="w">·</span><span·class="ss">i</span><span·class="w">·</span><span·class="o"[·...·truncated·by·diffoscope;·len:·277,·SHA:·b02b5d87e5c0a089f5c4b15ce257b0b0513dc1221391670390c59d5c65f62b4b·...·]-2">{</span><span·class="w">
297 ····</span><span·class="ss">const</span><span·class="w">·</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">ci_exec</span><span·class="p">;</span><span·class="w">297 ····</span><span·class="ss">const</span><span·class="w">·</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">ci_exec</span><span·class="p">;</span><span·class="w">
298 ····</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">ci_rw</span><span·class="p">;</span><span·class="w">298 ····</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">ci_rw</span><span·class="p">;</span><span·class="w">
299 ····</span><span·class="ss">void</span><span·class="w">·</span><span·class="o">*</span><span·class="ss">w_ptr</span><span·class="p">;</span><span·class="w">299 ····</span><span·class="ss">void</span><span·class="w">·</span><span·class="o">*</span><span·class="ss">w_ptr</span><span·class="p">;</span><span·class="w">
  
300 ····</span><span·class="nf">erts_unseal_module</span><span·class="p"·data-group-id="5437023588-3">(</span><span·class="err">&amp;</span><span·class="ss">modp</span><span·class="p">-&gt;</span><span·class="ss">curr</span><span·class="p"·data-group-id="5437023588-3">)</span><span·class="p">;</span><span·class="w">300 ····</span><span·class="nf">erts_unseal_module</span><span·class="p"·data-group-id="7502796509-3">(</span><span·class="err">&amp;</span><span·class="ss">modp</span><span·class="p">-&gt;</span><span·class="ss">curr</span><span·class="p"·data-group-id="7502796509-3">)</span><span·class="p">;</span><span·class="w">
  
301 ····</span><span·class="ss">ci_exec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">code_hdr</span><span·class="p">-&gt;</span><span·class="ss">functions</span><span·class="p"·data-group-id="5437023588-4">[</span><span·class="ss">i</span><span·class="p"·data-group-id="5437023588-4">]</span><span·class="p">;</span><span·class="w">301 ····</span><span·class="ss">ci_exec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">code_hdr</span><span·class="p">-&gt;</span><span·class="ss">functions</span><span·class="p"·data-group-id="7502796509-4">[</span><span·class="ss">i</span><span·class="p"·data-group-id="7502796509-4">]</span><span·class="p">;</span><span·class="w">
302 ····</span><span·class="ss">w_ptr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">erts_writable_code_ptr</span><span·class="p"·data-group-id="5437023588-5">(</span><span·class="err">&amp;</span><span·class="ss">modp</span><span·class="p">-&gt;</span><span·class="ss">curr</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ci_exec</span><span·class="p"·data-group-id="5437023588-5">)</span><span·class="p">;</span><span·class="w">302 ····</span><span·class="ss">w_ptr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">erts_writable_code_ptr</span><span·class="p"·data-group-id="7502796509-5">(</span><span·class="err">&amp;</span><span·class="ss">modp</span><span·class="p">-&gt;</span><span·class="ss">curr</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ci_exec</span><span·class="p"·data-group-id="7502796509-5">)</span><span·class="p">;</span><span·class="w">
303 ····</span><span·class="ss">ci_rw</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5437023588-6">(</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="p"·data-group-id="5437023588-6">)</span><span·class="ss">w_ptr</span><span·class="p">;</span><span·class="w">303 ····</span><span·class="ss">ci_rw</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7502796509-6">(</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="p"·data-group-id="7502796509-6">)</span><span·class="ss">w_ptr</span><span·class="p">;</span><span·class="w">
  
304 ····</span><span·class="nf">uninstall_breakpoint</span><span·class="p"·data-group-id="5437023588-7">(</span><span·class="ss">ci_rw</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ci_exec</span><span·class="p"·data-group-id="5437023588-7">)</span><span·class="p">;</span><span·class="w">304 ····</span><span·class="nf">uninstall_breakpoint</span><span·class="p"·data-group-id="7502796509-7">(</span><span·class="ss">ci_rw</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ci_exec</span><span·class="p"·data-group-id="7502796509-7">)</span><span·class="p">;</span><span·class="w">
305 ····</span><span·class="nf">consolidate_bp_data</span><span·class="p"·data-group-id="5437023588-8">(</span><span·class="ss">modp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ci_rw</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="5437023588-8">)</span><span·class="p">;</span><span·class="w">305 ····</span><span·class="nf">consolidate_bp_data</span><span·class="p"·data-group-id="7502796509-8">(</span><span·class="ss">modp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ci_rw</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="7502796509-8">)</span><span·class="p">;</span><span·class="w">
306 ····</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="5437023588-9">(</span><span·class="ss">ci_rw</span><span·class="p">-&gt;</span><span·class="ss">gen_bp</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">NULL</span><span·class="p"·data-group-id="5437023588-9">)</span><span·class="p">;</span><span·class="w">306 ····</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="7502796509-9">(</span><span·class="ss">ci_rw</span><span·class="p">-&gt;</span><span·class="ss">gen_bp</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">NULL</span><span·class="p"·data-group-id="7502796509-9">)</span><span·class="p">;</span><span·class="w">
  
307 ····</span><span·class="nf">erts_seal_module</span><span·class="p"·data-group-id="5437023588-10">(</span><span·class="err">&amp;</span><span·class="ss">modp</span><span·class="p">-&gt;</span><span·class="ss">curr</span><span·class="p"·data-group-id="5437023588-10">)</span><span·class="p">;</span><span·class="w">307 ····</span><span·class="nf">erts_seal_module</span><span·class="p"·data-group-id="7502796509-10">(</span><span·class="err">&amp;</span><span·class="ss">modp</span><span·class="p">-&gt;</span><span·class="ss">curr</span><span·class="p"·data-group-id="7502796509-10">)</span><span·class="p">;</span><span·class="w">
308 </span><span·class="p"·data-group-id="5437023588-2">}</span></code></pre><p>Without·the·module·instance·there's·no·reliable·way·to·figure·out·the·writable308 </span><span·class="p"·data-group-id="7502796509-2">}</span></code></pre><p>Without·the·module·instance·there's·no·reliable·way·to·figure·out·the·writable
309 address·of·a·code·page,·and·we·rely·on·<em>address·space·layout·randomization</em>309 address·of·a·code·page,·and·we·rely·on·<em>address·space·layout·randomization</em>
310 (ASLR)·to·make·it·difficult·to·guess.·On·some·platforms,·security·is·further310 (ASLR)·to·make·it·difficult·to·guess.·On·some·platforms,·security·is·further
311 enhanced·by·protecting·the·writable·area·from·writes·until·the·module·has·been311 enhanced·by·protecting·the·writable·area·from·writes·until·the·module·has·been
312 unsealed·by·<code·class="inline">erts_unseal_module</code>.</p><h3·id="export-tracing"·class="section-heading">312 unsealed·by·<code·class="inline">erts_unseal_module</code>.</p><h3·id="export-tracing"·class="section-heading">
313 ··<a·href="#export-tracing"·class="hover-link">313 ··<a·href="#export-tracing"·class="hover-link">
314 ····<i·class="ri-link-m"·aria-hidden="true"></i>314 ····<i·class="ri-link-m"·aria-hidden="true"></i>
315 ··</a>315 ··</a>
Offset 393, 15 lines modifiedOffset 393, 15 lines modified
393 </span><span·class="ss">perf</span><span·class="w">·</span><span·class="ss">script</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">out</span><span·class="p">.</span><span·class="ss">perf</span><span·class="w">393 </span><span·class="ss">perf</span><span·class="w">·</span><span·class="ss">script</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">out</span><span·class="p">.</span><span·class="ss">perf</span><span·class="w">
394 </span><span·class="p">#</span><span·class="p">#</span><span·class="w">·</span><span·class="ss">run</span><span·class="w">·</span><span·class="ss">stackcollapse</span><span·class="w">394 </span><span·class="p">#</span><span·class="p">#</span><span·class="w">·</span><span·class="ss">run</span><span·class="w">·</span><span·class="ss">stackcollapse</span><span·class="w">
Max diff block lines reached; 5280/45417 bytes (11.63%) of diff not shown.
3.31 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/codeloading.html
    
Offset 163, 16 lines modifiedOffset 163, 16 lines modified
163 only·be·done·by·one·loader·process·at·a·time.·A·second·loader·process163 only·be·done·by·one·loader·process·at·a·time.·A·second·loader·process
164 trying·to·enter·finishing·phase·will·be·suspended·until·the·first164 trying·to·enter·finishing·phase·will·be·suspended·until·the·first
165 loader·is·done.·This·will·only·block·the·process,·the·scheduler·is165 loader·is·done.·This·will·only·block·the·process,·the·scheduler·is
166 free·to·schedule·other·work·while·the·second·loader·is·waiting.·(See166 free·to·schedule·other·work·while·the·second·loader·is·waiting.·(See
167 <code·class="inline">erts_try_seize_code_load_permission</code>·and167 <code·class="inline">erts_try_seize_code_load_permission</code>·and
168 <code·class="inline">erts_release_code_load_permission</code>).</p><p>The·ability·to·prepare·several·modules·in·parallel·is·not·currently168 <code·class="inline">erts_release_code_load_permission</code>).</p><p>The·ability·to·prepare·several·modules·in·parallel·is·not·currently
169 used·as·almost·all·code·loading·is·serialized·by·the·code_server169 used·as·almost·all·code·loading·is·serialized·by·the·code_server
170 process.·The·BIF·interface·is·however·prepared·for·this.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">prepare_loading</span><span·class="p"·data-group-id="1794955032-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Code</span><span·class="p"·data-group-id="1794955032-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">LoaderState</span><span·class="w">170 process.·The·BIF·interface·is·however·prepared·for·this.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">prepare_loading</span><span·class="p"·data-group-id="0382890705-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Code</span><span·class="p"·data-group-id="0382890705-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">LoaderState</span><span·class="w">
171 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">finish_loading</span><span·class="p"·data-group-id="1794955032-2">(</span><span·class="p"·data-group-id="1794955032-3">[</span><span·class="n">LoaderState</span><span·class="p"·data-group-id="1794955032-3">]</span><span·class="p"·data-group-id="1794955032-2">)</span></code></pre><p>The·idea·is·that·<code·class="inline">prepare_loading</code>·could·be·called·in·parallel·for171 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">finish_loading</span><span·class="p"·data-group-id="0382890705-2">(</span><span·class="p"·data-group-id="0382890705-3">[</span><span·class="n">LoaderState</span><span·class="p"·data-group-id="0382890705-3">]</span><span·class="p"·data-group-id="0382890705-2">)</span></code></pre><p>The·idea·is·that·<code·class="inline">prepare_loading</code>·could·be·called·in·parallel·for
172 different·modules·and·returns·a·&quot;magic·binary&quot;·containing·the·internal172 different·modules·and·returns·a·&quot;magic·binary&quot;·containing·the·internal
173 state·of·each·prepared·module.·Function·<code·class="inline">finish_loading</code>·could·take·a173 state·of·each·prepared·module.·Function·<code·class="inline">finish_loading</code>·could·take·a
174 list·of·such·states·and·do·the·finishing·of·all·of·them·in·one·go.</p><p>Currently·we·use·the·legacy·BIF·<code·class="inline">erlang:load_module</code>·which·is·now174 list·of·such·states·and·do·the·finishing·of·all·of·them·in·one·go.</p><p>Currently·we·use·the·legacy·BIF·<code·class="inline">erlang:load_module</code>·which·is·now
175 implemented·in·Erlang·by·calling·the·above·two·functions·in175 implemented·in·Erlang·by·calling·the·above·two·functions·in
176 sequence.·Function·<code·class="inline">finish_loading</code>·is·limited·to·only·accepts·a·list176 sequence.·Function·<code·class="inline">finish_loading</code>·is·limited·to·only·accepts·a·list
177 with·one·module·state·as·we·do·not·yet·use·the·multi·module·loading177 with·one·module·state·as·we·do·not·yet·use·the·multi·module·loading
178 feature.</p><h2·id="the-finishing-sequence"·class="section-heading">178 feature.</p><h2·id="the-finishing-sequence"·class="section-heading">
10.6 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/crash_dump.html
    
Offset 401, 21 lines modifiedOffset 401, 21 lines modified
401 <a·href="erlang.html#put/2"><code·class="inline">put/2</code></a>·and·<a·href="erlang.html#get/1"><code·class="inline">get/1</code></a>·thing)·is·non-empty.</p><p>The·raw·memory·information·can·be·decoded·by·the·Crashdump·Viewer·tool.·You·can401 <a·href="erlang.html#put/2"><code·class="inline">put/2</code></a>·and·<a·href="erlang.html#get/1"><code·class="inline">get/1</code></a>·thing)·is·non-empty.</p><p>The·raw·memory·information·can·be·decoded·by·the·Crashdump·Viewer·tool.·You·can
402 then·see·the·stack·dump,·the·message·queue·(if·any),·and·the·dictionary·(if402 then·see·the·stack·dump,·the·message·queue·(if·any),·and·the·dictionary·(if
403 any).</p><p>The·stack·dump·is·a·dump·of·the·Erlang·process·stack.·Most·of·the·live·data403 any).</p><p>The·stack·dump·is·a·dump·of·the·Erlang·process·stack.·Most·of·the·live·data
404 (that·is,·variables·currently·in·use)·are·placed·on·the·stack;·thus·this·can·be404 (that·is,·variables·currently·in·use)·are·placed·on·the·stack;·thus·this·can·be
405 interesting.·One·has·to·&quot;guess&quot;·what·is·what,·but·as·the·information·is405 interesting.·One·has·to·&quot;guess&quot;·what·is·what,·but·as·the·information·is
406 symbolic,·thorough·reading·of·this·information·can·be·useful.·As·an·example,·we406 symbolic,·thorough·reading·of·this·information·can·be·useful.·As·an·example,·we
407 can·find·the·state·variable·of·the·Erlang·primitive·loader·online·<code·class="inline">(5)</code>·and407 can·find·the·state·variable·of·the·Erlang·primitive·loader·online·<code·class="inline">(5)</code>·and
408 <code·class="inline">(6)</code>·in·the·following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2216887858-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2216887858-1">)</span><span·class="w">··</span><span·class="mi">3</span><span·class="ss">cac44</span><span·class="w">···</span><span·class="n">Return</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·426,·SHA:·0e56ff2dda4220d7ccdedfad826dc5b9f38e978788a577b67c3fc5e8f068c234·...·]-2">)</span><span·class="w">408 <code·class="inline">(6)</code>·in·the·following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5423391516-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="5423391516-1">)</span><span·class="w">··</span><span·class="mi">3</span><span·class="ss">cac44</span><span·class="w">···</span><span·class="n">Return</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·426,·SHA:·e4de87c58c9186375e685133ba395a29aac728664985cd8b7149d2817b29e0c8·...·]-2">)</span><span·class="w">
409 </span><span·class="p"·data-group-id="2216887858-3">(</span><span·class="mi">2</span><span·class="p"·data-group-id="2216887858-3">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="2216887858-4">(</span><span·class="mi">0</span><span·class="p"·data-group-id="2216887858-4">)</span><span·class="w">·····</span><span·class="p"·data-group-id="2216887858-5">[</span><span·class="s">&quot;/view/siri_r10_dev/clearcase/otp/erts/lib/kernel/ebin&quot;</span><span·class="p">,</span><span·class="w"> 
410 </span><span·class="p"·data-group-id="2216887858-6">(</span><span·class="mi">3</span><span·class="p"·data-group-id="2216887858-6">)</span><span·class="w">············</span><span·class="s">&quot;/view/siri_r10_dev/clearcase/otp/erts/lib/stdlib/ebin&quot;</span><span·class="p"·data-group-id="22[·...·truncated·by·diffoscope;·len:·13,·SHA:·d48b00a19692a4b02eaea4c8f6fae8911956012fde23bdb79d742e5ad8a9f39a·...·]</span><span·class="w">409 </span><span·class="p"·data-group-id="5423391516-3">(</span><span·class="mi">2</span><span·class="p"·data-group-id="5423391516-3">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5423391516-4">(</span><span·class="mi">0</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·211,·SHA:·37700ff50c834f641c42b0219bc98acbe5a6a14f335675b2377e7469f0182eed·...·]</span><span·class="w">
 410 </span><span·class="p"·data-group-id="5423391516-6">(</span><span·class="mi">3</span><span·class="p"·data-group-id="5423391516-6">)</span><span·class="w">············</span><span·class="s">&quot;/view/siri_r10_dev/clearcase/otp/erts/lib/stdlib/ebin&quot;</span><span·class="p"·data-group-id="5423391516-5">]</span><span·class="w">
411 </span><span·class="p"·data-group-id="2216887858-7">(</span><span·class="mi">4</span><span·class="p"·data-group-id="2216887858-7">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="2216887858-8">(</span><span·class="mi">1</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·f5bd0ab0f0e826357a47ca5c776d2d25470114148a61ad77c8e2b4b8e6cf2d3f·...·]-8">)</span><span·class="w">·····</span><span·class="o">&lt;</span><span·class="mf">0.1</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">411 </span><span·class="p"·data-group-id="5423391516-7">(</span><span·class="mi">4</span><span·class="p"·data-group-id="5423391516-7">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5423391516-8">(</span><span·class="mi">1</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·d19e25d36ffb8e5be6f117d4c3a4bade115df0ce9675f89953c043c6e8d7071c·...·]-8">)</span><span·class="w">·····</span><span·class="o">&lt;</span><span·class="mf">0.1</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
412 </span><span·class="p"·data-group-id="2216887858-9">(</span><span·class="mi">5</span><span·class="p"·data-group-id="2216887858-9">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="2216887858-10">(</span><span·class="mi">2</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·257,·SHA:·cc54b1a004a153f1c31f9c8b24aa7cc3f52f7d4798e9c40c21b44744ef57e37a·...·]-12">]</span><span·class="p">,</span><span·class="ss">none</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><span·class="p">.</span><span·class="mf">6.7085890</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><span·class="p">.</span><span·class="mf">7.9000327</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">412 </span><span·class="p"·data-group-id="5423391516-9">(</span><span·class="mi">5</span><span·class="p"·data-group-id="5423391516-9">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5423391516-10">(</span><span·class="mi">2</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·257,·SHA:·f63ee0417fcbefd08360c3c700ff7619259dbaefe68a7a4d3ffc1842e8ba83c6·...·]-12">]</span><span·class="p">,</span><span·class="ss">none</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><span·class="p">.</span><span·class="mf">6.7085890</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><span·class="p">.</span><span·class="mf">7.9000327</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">
413 </span><span·class="p"·data-group-id="2216887858-13">(</span><span·class="mi">6</span><span·class="p"·data-group-id="2216887858-13">)</span><span·class="w">············</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><sp[·...·truncated·by·diffoscope;·len:·561,·SHA:·fa24c4bcd0280224f24c4860c0e0bbd41186f92beee7985db5bec5b9d835b0cf·...·]-11">}</span><span·class="w">413 </span><span·class="p"·data-group-id="5423391516-13">(</span><span·class="mi">6</span><span·class="p"·data-group-id="5423391516-13">)</span><span·class="w">············</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><sp[·...·truncated·by·diffoscope;·len:·561,·SHA:·af82efa2bded2dbf9daf5d663f33f8b9906975a4f3f020999ab1ebcfde01a71f·...·]-11">}</span><span·class="w">
414 </span><span·class="p"·data-group-id="2216887858-14">(</span><span·class="mi">7</span><span·class="p"·data-group-id="2216887858-14">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="2216887858-15">(</span><span·class="mi">3</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·503c452d1ed5625bb70c6128ba5c86d59149d26bf341c55ce30815073cc9d0fe·...·]-15">)</span><span·class="w">·····</span><span·class="ss">infinity</span></code></pre><p>When·interpreting·the·data·for·a·process,·it·is·helpful·to·know·that·anonymous414 </span><span·class="p"·data-group-id="5423391516-14">(</span><span·class="mi">7</span><span·class="p"·data-group-id="5423391516-14">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5423391516-15">(</span><span·class="mi">3</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·d7cb1ba64e74fd2516763d6a4ea7a9a36271150bb0efe6857932c6f066b0561f·...·]-15">)</span><span·class="w">·····</span><span·class="ss">infinity</span></code></pre><p>When·interpreting·the·data·for·a·process,·it·is·helpful·to·know·that·anonymous
415 function·objects·(funs)·are·given·the·following:</p><ul><li>A·name·constructed·from·the·name·of·the·function·in·which·they·are·created</li><li>A·number·(starting·with·0)·indicating·the·number·of·that·fun·within·that415 function·objects·(funs)·are·given·the·following:</p><ul><li>A·name·constructed·from·the·name·of·the·function·in·which·they·are·created</li><li>A·number·(starting·with·0)·indicating·the·number·of·that·fun·within·that
416 function</li></ul><h2·id="atoms"·class="section-heading">416 function</li></ul><h2·id="atoms"·class="section-heading">
417 ··<a·href="#atoms"·class="hover-link">417 ··<a·href="#atoms"·class="hover-link">
418 ····<i·class="ri-link-m"·aria-hidden="true"></i>418 ····<i·class="ri-link-m"·aria-hidden="true"></i>
419 ··</a>419 ··</a>
420 ··<span·class="text">Atoms</span>420 ··<span·class="text">Atoms</span>
421 </h2>421 </h2>
56.8 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/driver.html
    
Offset 364, 41 lines modifiedOffset 364, 41 lines modified
364 <p>Before·a·driver·can·be·called·from·Erlang,·it·must·be·loaded·and·opened.·Loading364 <p>Before·a·driver·can·be·called·from·Erlang,·it·must·be·loaded·and·opened.·Loading
365 is·done·using·the·<a·href="../../../lib/kernel-10.2.2/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·module·(the·<a·href="../../../lib/kernel-10.2.2/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·driver·that·loads·dynamic365 is·done·using·the·<a·href="../../../lib/kernel-10.2.2/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·module·(the·<a·href="../../../lib/kernel-10.2.2/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·driver·that·loads·dynamic
366 driver·is·actually·a·driver·itself).·If·loading·is·successful,·the·port·can·be366 driver·is·actually·a·driver·itself).·If·loading·is·successful,·the·port·can·be
367 opened·with·<a·href="erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>.·The·port·name·must·match·the·name·of367 opened·with·<a·href="erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>.·The·port·name·must·match·the·name·of
368 the·shared·library·and·the·name·in·the·driver·entry·structure.</p><p>When·the·port·has·been·opened,·the·driver·can·be·called.·In·the·<code·class="inline">pg_sync</code>368 the·shared·library·and·the·name·in·the·driver·entry·structure.</p><p>When·the·port·has·been·opened,·the·driver·can·be·called.·In·the·<code·class="inline">pg_sync</code>
369 example,·we·do·not·have·any·data·from·the·port,·only·the·return·value·from·the369 example,·we·do·not·have·any·data·from·the·port,·only·the·return·value·from·the
370 <a·href="erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>.</p><p>The·following·code·is·the·Erlang·part·of·the·synchronous·postgres·driver,370 <a·href="erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>.</p><p>The·following·code·is·the·Erlang·part·of·the·synchronous·postgres·driver,
371 <code·class="inline">pg_sync.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2107729334-1">(</span><span·class="ss">pg_sync</span><span·class="p"·data-group-id="2107729334-1">)</span><span·class="p">.</span><span·class="w">371 <code·class="inline">pg_sync.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4230802959-1">(</span><span·class="ss">pg_sync</span><span·class="p"·data-group-id="4230802959-1">)</span><span·class="p">.</span><span·class="w">
372 </span><span·class="w">372 </span><span·class="w">
373 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2107729334-2">(</span><span·class="n">DRV_CONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="2107729334-2">)</span><span·class="p">.</span><span·class="w">373 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4230802959-2">(</span><span·class="n">DRV_CONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4230802959-2">)</span><span·class="p">.</span><span·class="w">
374 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2107729334-3">(</span><span·class="n">DRV_DISCONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="2107729334-3">)</span><span·class="p">.</span><span·class="w">374 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4230802959-3">(</span><span·class="n">DRV_DISCONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4230802959-3">)</span><span·class="p">.</span><span·class="w">
375 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2107729334-4">(</span><span·class="n">DRV_SELECT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="2107729334-4">)</span><span·class="p">.</span><span·class="w">375 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4230802959-4">(</span><span·class="n">DRV_SELECT</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="4230802959-4">)</span><span·class="p">.</span><span·class="w">
376 </span><span·class="w">376 </span><span·class="w">
377 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2107729334-5">(</span><span·class="p"·data-group-id="2107729334-6">[</span><span·class="ss">connect</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disconnect</span><span·class="p">/</[·...·truncated·by·diffoscope;·len:·251,·SHA:·125f64af38831b7ffb9e1187ef3817ea91a23229e6eb4a2016447631bbf3df51·...·]-5">)</span><span·class="p">.</span><span·class="w">377 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4230802959-5">(</span><span·class="p"·data-group-id="4230802959-6">[</span><span·class="ss">connect</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disconnect</span><span·class="p">/</[·...·truncated·by·diffoscope;·len:·251,·SHA:·2f209b639751ff5091178c9f17f676ddcb3a67e71c24e8165905247d8a7c994b·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
378 </span><span·class="nf">connect</span><span·class="p"·data-group-id="2107729334-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="2107729334-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">378 </span><span·class="nf">connect</span><span·class="p"·data-group-id="4230802959-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="4230802959-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
379 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="2107729334-8">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;pg_sync&quot;</span><span·class="p"·data-group-id="2107729334-8">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">379 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="4230802959-8">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;pg_sync&quot;</span><span·class="p"·data-group-id="4230802959-8">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
380 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">380 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
381 ········</span><span·class="p"·data-group-id="2107729334-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="2107729334-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">381 ········</span><span·class="p"·data-group-id="4230802959-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="4230802959-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
382 ········</span><span·class="n">E</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="2107729334-10">(</span><span·class="p"·data-group-id="2107729334-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="2107729334-11">}</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·3a0ddba4492ca446df7f85641efa9fe5d39f4f8a62b09db22223d5aea265976c·...·]-10">)</span><span·class="w">382 ········</span><span·class="n">E</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="4230802959-10">(</span><span·class="p"·data-group-id="4230802959-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="4230802959-11">}</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·160e626bd47ad4c40afa3c59ded2651e6a037ca5b36694b97668f6b8cfd379f1·...·]-10">)</span><span·class="w">
383 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">383 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
384 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="2107729334-12">(</span><span·class="p"·data-group-id="2107729334-13">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p"·data-group-id="2107729334-13">}</[·...·truncated·by·diffoscope;·len:·202,·SHA:·6d3d8ff5079144c94bf2e16b8346e26006facf16155860131155b3b9c78968b8·...·]-12">)</span><span·class="p">,</span><span·class="w">384 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="4230802959-12">(</span><span·class="p"·data-group-id="4230802959-13">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p"·data-group-id="4230802959-13">}</[·...·truncated·by·diffoscope;·len:·202,·SHA:·9d1da0c73ab9ba6df1b875e4194d6c7e900502f9b9baceb58aa9bbc670bcbb39·...·]-12">)</span><span·class="p">,</span><span·class="w">
385 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="2107729334-15">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="2107729334-16">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_CONNECT</span><span·clas[·...·truncated·by·diffoscope;·len:·166,·SHA:·db8ea1c61c2315fdd9a38d37fc606a3d16efa0cebbe31cfe624c0f80fd67635e·...·]-15">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">385 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="4230802959-15">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="4230802959-16">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_CONNECT</span><span·clas[·...·truncated·by·diffoscope;·len:·166,·SHA:·353c99cafe9c20785a3a0b63ebe88eb4e9c7a65278f551d662d50ab80576f1d1·...·]-15">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
386 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2107729334-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="2107729334-17">}</span><span·class="p">;</span><span·class="w">386 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4230802959-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="4230802959-17">}</span><span·class="p">;</span><span·class="w">
387 ········</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Error</span><span·class="w">387 ········</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Error</span><span·class="w">
388 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">388 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
389 </span><span·class="nf">disconnect</span><span·class="p"·data-group-id="2107729334-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2107729334-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">389 </span><span·class="nf">disconnect</span><span·class="p"·data-group-id="4230802959-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4230802959-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
390 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="2107729334-19">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="2107729334-20">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_DISCONNECT</span><span·c[·...·truncated·by·diffoscope;·len:·171,·SHA:·af11da0a235626e1588a7ebf277a54e4ff26265814c1c6f29c28715eb1dd9f46·...·]-19">)</span><span·class="p">,</span><span·class="w">390 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="4230802959-19">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="4230802959-20">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_DISCONNECT</span><span·c[·...·truncated·by·diffoscope;·len:·171,·SHA:·ad1c92941627af1877aa8bd225400e027c8d0f8e3360de5372a6c037ed92c5ea·...·]-19">)</span><span·class="p">,</span><span·class="w">
391 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="2107729334-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2107729334-21">)</span><span·class="p">,</span><span·class="w">391 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="4230802959-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4230802959-21">)</span><span·class="p">,</span><span·class="w">
392 ····</span><span·class="n">R</span><span·class="p">.</span><span·class="w">392 ····</span><span·class="n">R</span><span·class="p">.</span><span·class="w">
  
393 </span><span·class="nf">select</span><span·class="p"·data-group-id="2107729334-22">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Query</span><span·class="p"·data-group-id="2107729334-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">393 </span><span·class="nf">select</span><span·class="p"·data-group-id="4230802959-22">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Query</span><span·class="p"·data-group-id="4230802959-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
394 ····</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="2107729334-23">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="2107729334-24">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_SELECT</span><span·class[·...·truncated·by·diffoscope;·len:·160,·SHA:·e5f409b9385785d306e3761a142ad36165d71ac3f2e5077dec41909fe1dea432·...·]-23">)</span><span·class="p">.</span></code></pre><p>The·API·is·simple:</p><ul><li><code·class="inline">connect/1</code>·loads·the·driver,·opens·it,·and·logs·on·to·the·database,·returning394 ····</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="4230802959-23">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="4230802959-24">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_SELECT</span><span·class[·...·truncated·by·diffoscope;·len:·160,·SHA:·326ebfcb7132399b22c1a69e2adb9af378d7df2e5df507ad81bf96c1b7f48a25·...·]-23">)</span><span·class="p">.</span></code></pre><p>The·API·is·simple:</p><ul><li><code·class="inline">connect/1</code>·loads·the·driver,·opens·it,·and·logs·on·to·the·database,·returning
395 the·Erlang·port·if·successful.</li><li><code·class="inline">select/2</code>·sends·a·query·to·the·driver·and·returns·the·result.</li><li><code·class="inline">disconnect/1</code>·closes·the·database·connection·and·the·driver.·(However,·it395 the·Erlang·port·if·successful.</li><li><code·class="inline">select/2</code>·sends·a·query·to·the·driver·and·returns·the·result.</li><li><code·class="inline">disconnect/1</code>·closes·the·database·connection·and·the·driver.·(However,·it
396 does·not·unload·it.)</li></ul><p>The·connection·string·is·to·be·a·connection·string·for·postgres.</p><p>The·driver·is·loaded·with·<a·href="../../../lib/kernel-10.2.2/doc/html/erl_ddll.html#load_driver/2"><code·class="inline">erl_ddll:load_driver/2</code></a>.·If·this·is·successful,·or·if396 does·not·unload·it.)</li></ul><p>The·connection·string·is·to·be·a·connection·string·for·postgres.</p><p>The·driver·is·loaded·with·<a·href="../../../lib/kernel-10.2.2/doc/html/erl_ddll.html#load_driver/2"><code·class="inline">erl_ddll:load_driver/2</code></a>.·If·this·is·successful,·or·if
397 it·is·already·loaded,·it·is·opened.·This·will·call·the·<code·class="inline">start</code>·function·in·the397 it·is·already·loaded,·it·is·opened.·This·will·call·the·<code·class="inline">start</code>·function·in·the
398 driver.</p><p>We·use·the·<a·href="erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>·function·for·all·calls·into·the398 driver.</p><p>We·use·the·<a·href="erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>·function·for·all·calls·into·the
399 driver.·The·result·from·the·driver·is·returned·immediately·and·converted·to399 driver.·The·result·from·the·driver·is·returned·immediately·and·converted·to
400 terms·by·calling·<a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>.·(We·trust·that·the400 terms·by·calling·<a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>.·(We·trust·that·the
401 terms·returned·from·the·driver·are·well-formed,·otherwise·the·<a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>401 terms·returned·from·the·driver·are·well-formed,·otherwise·the·<a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>
Offset 536, 51 lines modifiedOffset 536, 51 lines modified
536 successful,·or·error·if·it·is·not.·If·the·connection·is·not·yet·established,·we536 successful,·or·error·if·it·is·not.·If·the·connection·is·not·yet·established,·we
537 simply·return;·<code·class="inline">ready_io</code>·is·called·again.</p><p>If·we·have·a·result·from·a·connect,·indicated·by·having·data·in·the·<code·class="inline">x</code>·buffer,537 simply·return;·<code·class="inline">ready_io</code>·is·called·again.</p><p>If·we·have·a·result·from·a·connect,·indicated·by·having·data·in·the·<code·class="inline">x</code>·buffer,
538 we·no·longer·need·to·select·on·output·(<a·href="../../../erts-15.2.2/doc/html/driver_entry.html#ready_output"·title=""><code·class="inline">ready_output</code></a>),·so·we·remove·this·by538 we·no·longer·need·to·select·on·output·(<a·href="../../../erts-15.2.2/doc/html/driver_entry.html#ready_output"·title=""><code·class="inline">ready_output</code></a>),·so·we·remove·this·by
539 calling·<a·href="../../../erts-15.2.2/doc/html/erl_driver.html#driver_select"·title=""><code·class="inline">driver_select</code></a>.</p><p>If·we·are·not·connecting,·we·wait·for·results·from·a·<code·class="inline">PQsendQuery</code>,·so·we·get539 calling·<a·href="../../../erts-15.2.2/doc/html/erl_driver.html#driver_select"·title=""><code·class="inline">driver_select</code></a>.</p><p>If·we·are·not·connecting,·we·wait·for·results·from·a·<code·class="inline">PQsendQuery</code>,·so·we·get
540 the·result·and·return·it.·The·encoding·is·done·with·the·same·functions·as·in·the540 the·result·and·return·it.·The·encoding·is·done·with·the·same·functions·as·in·the
541 earlier·example.</p><p>Error·handling·is·to·be·added·here,·for·example,·checking·that·the·socket·is541 earlier·example.</p><p>Error·handling·is·to·be·added·here,·for·example,·checking·that·the·socket·is
542 still·open,·but·this·is·only·a·simple·example.</p><p>The·Erlang·part·of·the·asynchronous·driver·consists·of·the·sample·file542 still·open,·but·this·is·only·a·simple·example.</p><p>The·Erlang·part·of·the·asynchronous·driver·consists·of·the·sample·file
543 <code·class="inline">pg_async.erl</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3576766188-1">(</span><span·class="ss">pg_async</span><span·class="p"·data-group-id="3576766188-1">)</span><span·class="p">.</span><span·class="w">543 <code·class="inline">pg_async.erl</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5733260288-1">(</span><span·class="ss">pg_async</span><span·class="p"·data-group-id="5733260288-1">)</span><span·class="p">.</span><span·class="w">
544 </span><span·class="w">544 </span><span·class="w">
545 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3576766188-2">(</span><span·class="n">DRV_CONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$C</span><span·class="p"·data-group-id="3576766188-2">)</span><span·class="p">.</span><span·class="w">545 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="5733260288-2">(</span><span·class="n">DRV_CONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$C</span><span·class="p"·data-group-id="5733260288-2">)</span><span·class="p">.</span><span·class="w">
546 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3576766188-3">(</span><span·class="n">DRV_DISCONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$D</span><span·class="p"·data-group-id="3576766188-3">)</span><span·class="p">.</span><span·class="w">546 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="5733260288-3">(</span><span·class="n">DRV_DISCONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$D</span><span·class="p"·data-group-id="5733260288-3">)</span><span·class="p">.</span><span·class="w">
547 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3576766188-4">(</span><span·class="n">DRV_SELECT</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$S</span><span·class="p"·data-group-id="3576766188-4">)</span><span·class="p">.</span><span·class="w">547 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="5733260288-4">(</span><span·class="n">DRV_SELECT</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$S</span><span·class="p"·data-group-id="5733260288-4">)</span><span·class="p">.</span><span·class="w">
548 </span><span·class="w">548 </span><span·class="w">
549 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3576766188-5">(</span><span·class="p"·data-group-id="3576766188-6">[</span><span·class="ss">connect</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disconnect</span><span·class="p">/</[·...·truncated·by·diffoscope;·len:·249,·SHA:·df48896c850a10cd812286e53e7f196515671dd1ffcd7c84ebd206d5710c8f68·...·]88-5">)</span><span·class="p">.</span><span·class="w">549 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5733260288-5">(</span><span·class="p"·data-group-id="5733260288-6">[</span><span·class="ss">connect</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disconnect</span><span·class="p">/</[·...·truncated·by·diffoscope;·len:·249,·SHA:·4a9d8d539d16e885844404c8c23c687ba74e01af7799826be336f8b5218733b9·...·]88-5">)</span><span·class="p">.</span><span·class="w">
  
550 </span><span·class="nf">connect</span><span·class="p"·data-group-id="3576766188-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="3576766188-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">550 </span><span·class="nf">connect</span><span·class="p"·data-group-id="5733260288-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="5733260288-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
551 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="3576766188-8">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;pg_async&quot;</span><span·class="p"·data-group-id="3576766188-8">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">551 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="5733260288-8">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;pg_async&quot;</span><span·class="p"·data-group-id="5733260288-8">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
552 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">552 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
553 ········</span><span·class="p"·data-group-id="3576766188-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="3576766188-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">553 ········</span><span·class="p"·data-group-id="5733260288-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="5733260288-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
554 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="3576766188-10">(</span><span·class="p"·data-group-id="3576766188-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">could_not_load_driver</span><span·class="p"·data-group-id="3576766188-11">}</span><sp[·...·truncated·by·diffoscope;·len:·36,·SHA:·49781d6ef6cf3fa3ee8ffcd6598f51337a01a24a2a7e00df6518a698aa8675ae·...·]88-10">)</span><span·class="w">554 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="5733260288-10">(</span><span·class="p"·data-group-id="5733260288-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">could_not_load_driver</span><span·class="p"·data-group-id="5733260288-11">}</span><sp[·...·truncated·by·diffoscope;·len:·36,·SHA:·90c129343af35031790d6c4c688a996943258bb10d6510dceb195ff81c7120b7·...·]88-10">)</span><span·class="w">
555 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">555 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
556 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="3576766188-12">(</span><span·class="p"·data-group-id="3576766188-13">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p"·data-group-id="3576766188-13">}</[·...·truncated·by·diffoscope;·len:·230,·SHA:·6f169592d63543ff8c38efd2a15e8e08dc721cfaa0a7664538776d8b8bbbe163·...·]88-12">)</span><span·class="p">,</span><span·class="w">556 ····</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="5733260288-12">(</span><span·class="p"·data-group-id="5733260288-13">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p"·data-group-id="5733260288-13">}</[·...·truncated·by·diffoscope;·len:·230,·SHA:·4b092a05430c8c730ee292b6888e5bb232c652e5a83a116199dd6dc1de4a0f0b·...·]88-12">)</span><span·class="p">,</span><span·class="w">
557 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3576766188-15">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_CONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectStr</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·20,·SHA:·25023ca183503a520bd43122080951a8c4af2e5decf19eb6629c37302a38568c·...·]88-15">)</span><span·class="p">,</span><span·class="w">557 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="5733260288-15">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_CONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectStr</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·20,·SHA:·013dca6934877ec70872d82ab1e19d08effa31ce066abe5813c15e7fa760ea78·...·]88-15">)</span><span·class="p">,</span><span·class="w">
558 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="3576766188-16">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3576766188-16">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">558 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="5733260288-16">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5733260288-16">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
559 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">559 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
560 ············</span><span·class="p"·data-group-id="3576766188-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="3576766188-17">}</span><span·class="p">;</span><span·class="w">560 ············</span><span·class="p"·data-group-id="5733260288-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="5733260288-17">}</span><span·class="p">;</span><span·class="w">
561 ········</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">561 ········</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
562 ············</span><span·class="n">Error</span><span·class="w">562 ············</span><span·class="n">Error</span><span·class="w">
563 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">563 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
564 </span><span·class="nf">disconnect</span><span·class="p"·data-group-id="3576766188-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3576766188-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">564 </span><span·class="nf">disconnect</span><span·class="p"·data-group-id="5733260288-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5733260288-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
565 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3576766188-19">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_DISCONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p[·...·truncated·by·diffoscope;·len:·25,·SHA:·5ba483aed046ec198413b854c31e6e1da54970e0cdd2bc64804d2bbfeb494fb9·...·]88-19">)</span><span·class="p">,</span><span·class="w">565 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="5733260288-19">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_DISCONNECT</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p[·...·truncated·by·diffoscope;·len:·25,·SHA:·d6e20480f99ca5d1e2c5cef61683546029248d4a933e0551f98a1a472aed7d51·...·]88-19">)</span><span·class="p">,</span><span·class="w">
566 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="3576766188-20">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3576766188-20">)</span><span·class="p">,</span><span·class="w">566 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="5733260288-20">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5733260288-20">)</span><span·class="p">,</span><span·class="w">
567 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="3576766188-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3576766188-21">)</span><span·class="p">,</span><span·class="w">567 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="5733260288-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5733260288-21">)</span><span·class="p">,</span><span·class="w">
568 ····</span><span·class="n">R</span><span·class="p">.</span><span·class="w">568 ····</span><span·class="n">R</span><span·class="p">.</span><span·class="w">
  
569 </span><span·class="nf">select</span><span·class="p"·data-group-id="3576766188-22">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Query</span><span·class="p"·data-group-id="3576766188-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">569 </span><span·class="nf">select</span><span·class="p"·data-group-id="5733260288-22">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Query</span><span·class="p"·data-group-id="5733260288-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
570 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3576766188-23">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_SELECT</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Query</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·14,·SHA:·c0cd01c0587d179dd48584a2b0191670f775e342f9cbacae40db54560fe59dc6·...·]88-23">)</span><span·class="p">,</span><span·class="w">570 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="5733260288-23">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">DRV_SELECT</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Query</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·14,·SHA:·eee7ad7ee7404032b30320ac58bbe3e55c35b846c57d0e040f2e97bb1f78ab66·...·]88-23">)</span><span·class="p">,</span><span·class="w">
571 ····</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="3576766188-24">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3576766188-24">)</span><span·class="p">.</span><span·class="w">571 ····</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="5733260288-24">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5733260288-24">)</span><span·class="p">.</span><span·class="w">
  
572 </span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="3576766188-25">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3576766188-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">572 </span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="5733260288-25">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5733260288-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
573 ····</span><span·class="k">receive</span><span·class="w">573 ····</span><span·class="k">receive</span><span·class="w">
574 ········</span><span·class="p"·data-group-id="3576766188-26">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3576766188-27">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·e3ca21ac2372eede14aa330c4804052de36644e447868e8bf226035019704e83·...·]88-26">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">574 ········</span><span·class="p"·data-group-id="5733260288-26">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5733260288-27">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·49cf2ba8aa9ad7b2e41a692cac68d47c25065d131ca8595c031f961c7be71782·...·]88-26">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
575 ············</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="3576766188-28">(</span><span·class="n">Data</span><span·class="p"·data-group-id="3576766188-28">)</span><span·class="w">575 ············</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="5733260288-28">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5733260288-28">)</span><span·class="w">
576 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·Erlang·code·is·slightly·different,·as·we·do·not·return·the·result576 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·Erlang·code·is·slightly·different,·as·we·do·not·return·the·result
577 synchronously·from·<a·href="erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>,·instead·we·get·it·from·<a·href="../../../erts-15.2.2/doc/html/erl_driver.html#driver_output"·title=""><code·class="inline">driver_output</code></a>·as577 synchronously·from·<a·href="erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>,·instead·we·get·it·from·<a·href="../../../erts-15.2.2/doc/html/erl_driver.html#driver_output"·title=""><code·class="inline">driver_output</code></a>·as
578 data·in·the·message·queue.·The·function·<code·class="inline">return_port_data</code>·above·receives·data578 data·in·the·message·queue.·The·function·<code·class="inline">return_port_data</code>·above·receives·data
579 from·the·port.·As·the·data·is·in·binary·format,·we·use579 from·the·port.·As·the·data·is·in·binary·format,·we·use
580 <a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>·to·convert·it·to·an·Erlang·term.·Notice580 <a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>·to·convert·it·to·an·Erlang·term.·Notice
581 that·the·driver·is·opened·in·binary·mode·(<a·href="erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>·is581 that·the·driver·is·opened·in·binary·mode·(<a·href="erlang.html#open_port/2"><code·class="inline">open_port/2</code></a>·is
582 called·with·option·<code·class="inline">[binary]</code>).·This·means·that·data·sent·from·the·driver·to·the582 called·with·option·<code·class="inline">[binary]</code>).·This·means·that·data·sent·from·the·driver·to·the
Offset 677, 59 lines modifiedOffset 677, 59 lines modified
677 ····*rp++·=·ERL_DRV_LIST;677 ····*rp++·=·ERL_DRV_LIST;
678 ····*rp++·=·n+1;678 ····*rp++·=·n+1;
679 ····driver_output_term(port,·result,·result_n);679 ····driver_output_term(port,·result,·result_n);
680 ····delete[]·result;680 ····delete[]·result;
681 ····delete·d;681 ····delete·d;
682 }</code></pre><p>This·driver·is·called·like·the·others·from·Erlang.·However,·as·we·use682 }</code></pre><p>This·driver·is·called·like·the·others·from·Erlang.·However,·as·we·use
683 <a·href="../../../erts-15.2.2/doc/html/erl_driver.html#driver_output_term"·title=""><code·class="inline">driver_output_term</code></a>,·there·is·no·need·to·call·<a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>.·The·Erlang·code683 <a·href="../../../erts-15.2.2/doc/html/erl_driver.html#driver_output_term"·title=""><code·class="inline">driver_output_term</code></a>,·there·is·no·need·to·call·<a·href="erlang.html#binary_to_term/1"><code·class="inline">binary_to_term/1</code></a>.·The·Erlang·code
684 is·in·the·sample·file·<code·class="inline">next_perm.erl</code>.</p><p>The·input·is·changed·into·a·list·of·integers·and·sent·to·the·driver.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9168326910-1">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="9168326910-1">)</span><span·class="p">.</span><span·class="w">684 is·in·the·sample·file·<code·class="inline">next_perm.erl</code>.</p><p>The·input·is·changed·into·a·list·of·integers·and·sent·to·the·driver.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0977167667-1">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="0977167667-1">)</span><span·class="p">.</span><span·class="w">
685 </span><span·class="w">685 </span><span·class="w">
686 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9168326910-2">(</span><span·class="p"·data-group-id="9168326910-3">[</span><span·class="ss">next_perm</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prev_perm</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·379,·SHA:·eb0294c19253580bde9eab2e0479101bc5fdc83e49f6a638bd4ba4e36544ead1·...·]-2">)</span><span·class="p">.</span><span·class="w">686 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0977167667-2">(</span><span·class="p"·data-group-id="0977167667-3">[</span><span·class="ss">next_perm</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prev_perm</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·379,·SHA:·989735d0c3781f916b222f8257c8a045bd66da9bed6338ed41626d33f5cbde74·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
687 </span><span·class="nf">load</span><span·class="p"·data-group-id="9168326910-4">(</span><span·class="p"·data-group-id="9168326910-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">687 </span><span·class="nf">load</span><span·class="p"·data-group-id="0977167667-4">(</span><span·class="p"·data-group-id="0977167667-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
688 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">whereis</span><span·class="p"·data-group-id="9168326910-5">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="9168326910-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">688 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">whereis</span><span·class="p"·data-group-id="0977167667-5">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="0977167667-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
689 ········</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">689 ········</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
690 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="9168326910-6">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;next_perm&quot;</span><span·class="p"·data-group-id="9168326910-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">690 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">erl_ddll</span><span·class="p">:</span><span·class="nf">load_driver</span><span·class="p"·data-group-id="0977167667-6">(</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;next_perm&quot;</span><span·class="p"·data-group-id="0977167667-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
691 ················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">691 ················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
692 ················</span><span·class="p"·data-group-id="9168326910-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="9168326910-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">692 ················</span><span·class="p"·data-group-id="0977167667-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">already_loaded</span><span·class="p"·data-group-id="0977167667-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
693 ················</span><span·class="n">E</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="9168326910-8">(</span><span·class="n">E</span><span·class="p"·data-group-id="9168326910-8">)</span><span·class="w">693 ················</span><span·class="n">E</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">exit</span><span·class="p"·data-group-id="0977167667-8">(</span><span·class="n">E</span><span·class="p"·data-group-id="0977167667-8">)</span><span·class="w">
694 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">694 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
695 ············</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="9168326910-9">(</span><span·class="p"·data-group-id="9168326910-10">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;next_perm&quot;</span><span·class="p"·data-group-id="9168326910-10">}</span><span[·...·truncated·by·diffoscope;·len:·192,·SHA:·bf949ba47b9845050c7a764f7448c27688804f7e8ec7d42c962df86fe005cee8·...·]-9">)</span><span·class="p">,</span><span·class="w">695 ············</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="0977167667-9">(</span><span·class="p"·data-group-id="0977167667-10">{</span><span·class="nb">spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;next_perm&quot;</span><span·class="p"·data-group-id="0977167667-10">}</span><span[·...·truncated·by·diffoscope;·len:·192,·SHA:·60d03f97353071a21dcf9e2819d2bc2bd0ca6aacb829a64f16e1b21ab6909217·...·]-9">)</span><span·class="p">,</span><span·class="w">
696 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="9168326910-12">(</span><span·class="ss">next_perm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="9168326910-12">)</span><span·class="p">;</span><span·class="w">696 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="0977167667-12">(</span><span·class="ss">next_perm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="0977167667-12">)</span><span·class="p">;</span><span·class="w">
697 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">697 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
698 ············</span><span·class="ss">ok</span><span·class="w">698 ············</span><span·class="ss">ok</span><span·class="w">
699 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">699 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
700 </span><span·class="nf">list_to_integer_binaries</span><span·class="p"·data-group-id="9168326910-13">(</span><span·class="n">L</span><span·class="p"·data-group-id="9168326910-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">700 </span><span·class="nf">list_to_integer_binaries</span><span·class="p"·data-group-id="0977167667-13">(</span><span·class="n">L</span><span·class="p"·data-group-id="0977167667-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
701 ····</span><span·class="p"·data-group-id="9168326910-14">[</span><span·class="p"·data-group-id="9168326910-15">&lt;&lt;</span><span·class="n">I</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><span·class="ss">integer</span><span·class="o">-</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·310,·SHA:·e77bab0949868bd2f73d6af2f3580d7a375e9af71b20518da8fb5a34d42a265e·...·]-14">]</span><span·class="p">.</span><span·class="w">701 ····</span><span·class="p"·data-group-id="0977167667-14">[</span><span·class="p"·data-group-id="0977167667-15">&lt;&lt;</span><span·class="n">I</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><span·class="ss">integer</span><span·class="o">-</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·310,·SHA:·35654206845a66f6435ad8d4592ef5ce40042ced2713942adbd5993b83041fe5·...·]-14">]</span><span·class="p">.</span><span·class="w">
  
702 </span><span·class="nf">next_perm</span><span·class="p"·data-group-id="9168326910-16">(</span><span·class="n">L</span><span·class="p"·data-group-id="9168326910-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">702 </span><span·class="nf">next_perm</span><span·class="p"·data-group-id="0977167667-16">(</span><span·class="n">L</span><span·class="p"·data-group-id="0977167667-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
703 ····</span><span·class="nf">next_perm</span><span·class="p"·data-group-id="9168326910-17">(</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="9168326910-17">)</span><span·class="p">.</span><span·class="w">703 ····</span><span·class="nf">next_perm</span><span·class="p"·data-group-id="0977167667-17">(</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0977167667-17">)</span><span·class="p">.</span><span·class="w">
  
704 </span><span·class="nf">prev_perm</span><span·class="p"·data-group-id="9168326910-18">(</span><span·class="n">L</span><span·class="p"·data-group-id="9168326910-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">704 </span><span·class="nf">prev_perm</span><span·class="p"·data-group-id="0977167667-18">(</span><span·class="n">L</span><span·class="p"·data-group-id="0977167667-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
705 ····</span><span·class="nf">next_perm</span><span·class="p"·data-group-id="9168326910-19">(</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="9168326910-19">)</span><span·class="p">.</span><span·class="w">705 ····</span><span·class="nf">next_perm</span><span·class="p"·data-group-id="0977167667-19">(</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="0977167667-19">)</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 8410/58065 bytes (14.48%) of diff not shown.
33.7 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/erl_cmd.html
    
Offset 150, 26 lines modifiedOffset 150, 26 lines modified
150 runtime·system,·more·specifically·to·the·<code·class="inline">init</code>·system·process,·see·<a·href="init.html"><code·class="inline">init</code></a>.</p><p>The·<code·class="inline">init</code>·process·itself·interprets·some·of·these·flags,·the·<em>init·flags</em>.·It150 runtime·system,·more·specifically·to·the·<code·class="inline">init</code>·system·process,·see·<a·href="init.html"><code·class="inline">init</code></a>.</p><p>The·<code·class="inline">init</code>·process·itself·interprets·some·of·these·flags,·the·<em>init·flags</em>.·It
151 also·stores·any·remaining·flags,·the·<em>user·flags</em>.·The·latter·can·be·retrieved151 also·stores·any·remaining·flags,·the·<em>user·flags</em>.·The·latter·can·be·retrieved
152 by·calling·<a·href="init.html#get_argument/1"><code·class="inline">init:get_argument/1</code></a>.</p><p>A·small·number·of·&quot;-&quot;·flags·exist,·which·now·actually·are·emulator·flags,·see152 by·calling·<a·href="init.html#get_argument/1"><code·class="inline">init:get_argument/1</code></a>.</p><p>A·small·number·of·&quot;-&quot;·flags·exist,·which·now·actually·are·emulator·flags,·see
153 the·description·below.</p></li><li><p>Plain·arguments·are·not·interpreted·in·any·way.·They·are·also·stored·by·the153 the·description·below.</p></li><li><p>Plain·arguments·are·not·interpreted·in·any·way.·They·are·also·stored·by·the
154 <code·class="inline">init</code>·process·and·can·be·retrieved·by·calling·<a·href="init.html#get_plain_arguments/0"><code·class="inline">init:get_plain_arguments/0</code></a>.154 <code·class="inline">init</code>·process·and·can·be·retrieved·by·calling·<a·href="init.html#get_plain_arguments/0"><code·class="inline">init:get_plain_arguments/0</code></a>.
155 Plain·arguments·can·occur·before·the·first·flag,·or·after·a·<code·class="inline">--</code>·flag.·Also,155 Plain·arguments·can·occur·before·the·first·flag,·or·after·a·<code·class="inline">--</code>·flag.·Also,
156 the·<code·class="inline">-extra</code>·flag·causes·everything·that·follows·to·become·plain·arguments.</p></li></ul><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·+W·w·-sname·arnie·+R·9·-s·my_init·-extra·+bertie</span><span·class="gp·unselectable">156 the·<code·class="inline">-extra</code>·flag·causes·everything·that·follows·to·become·plain·arguments.</p></li></ul><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·+W·w·-sname·arnie·+R·9·-s·my_init·-extra·+bertie</span><span·class="gp·unselectable">
157 (arnie@host)1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="2681325440-1">(</span><span·class="ss">sname</span><span·class="p"·data-group-id="2681325440-1">)</span><span·class="p">.</span><span·class="w">157 (arnie@host)1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="0111812033-1">(</span><span·class="ss">sname</span><span·class="p"·data-group-id="0111812033-1">)</span><span·class="p">.</span><span·class="w">
158 </span><span·class="p"·data-group-id="2681325440-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2681325440-3">[</span><span·class="p"·data-group-id="2681325440-4">[</span><span·class="s">&quot;arnie&quot;</span><span·class="p"·data-group-id="2681325[·...·truncated·by·diffoscope;·len:·109,·SHA:·8c6869852a724e46f450fe42bef3da7e3d4c9a049abf9b7ce731e23b767029b6·...·]-2">}</span><span·class="gp·unselectable">158 </span><span·class="p"·data-group-id="0111812033-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0111812033-3">[</span><span·class="p"·data-group-id="0111812033-4">[</span><span·class="s">&quot;arnie&quot;</span><span·class="p"·data-group-id="0111812[·...·truncated·by·diffoscope;·len:·109,·SHA:·889db155272d28c6932a871b3524d91aef26f864e90bd0c1fb774d3bf48a06c4·...·]-2">}</span><span·class="gp·unselectable">
159 (arnie@host)2&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="2681325440-5">(</span><span·class="p"·data-group-id="2681325440-5">)</span><span·class="p">.</span><span·class="w">159 (arnie@host)2&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="0111812033-5">(</span><span·class="p"·data-group-id="0111812033-5">)</span><span·class="p">.</span><span·class="w">
160 </span><span·class="p"·data-group-id="2681325440-6">[</span><span·class="s">&quot;+bertie&quot;</span><span·class="p"·data-group-id="2681325440-6">]</span></code></pre><p>Here·<code·class="inline">+W·w</code>·and·<code·class="inline">+R·9</code>·are·emulator·flags.·<code·class="inline">-s·my_init</code>·is·an·init·flag,160 </span><span·class="p"·data-group-id="0111812033-6">[</span><span·class="s">&quot;+bertie&quot;</span><span·class="p"·data-group-id="0111812033-6">]</span></code></pre><p>Here·<code·class="inline">+W·w</code>·and·<code·class="inline">+R·9</code>·are·emulator·flags.·<code·class="inline">-s·my_init</code>·is·an·init·flag,
161 interpreted·by·<code·class="inline">init</code>.·<code·class="inline">-sname·arnie</code>·is·a·user·flag,·stored·by·<code·class="inline">init</code>.·It·is161 interpreted·by·<code·class="inline">init</code>.·<code·class="inline">-sname·arnie</code>·is·a·user·flag,·stored·by·<code·class="inline">init</code>.·It·is
162 read·by·Kernel·and·causes·the·Erlang·runtime·system·to·become·distributed.162 read·by·Kernel·and·causes·the·Erlang·runtime·system·to·become·distributed.
163 Finally,·everything·after·<code·class="inline">-extra</code>·(that·is,·<code·class="inline">+bertie</code>)·is·considered·as·plain163 Finally,·everything·after·<code·class="inline">-extra</code>·(that·is,·<code·class="inline">+bertie</code>)·is·considered·as·plain
164 arguments.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-myflag·1</span><span·class="gp·unselectable">164 arguments.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-myflag·1</span><span·class="gp·unselectable">
165 1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="5554937974-1">(</span><span·class="ss">myflag</span><span·class="p"·data-group-id="5554937974-1">)</span><span·class="p">.</span><span·class="w">165 1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="9126223262-1">(</span><span·class="ss">myflag</span><span·class="p"·data-group-id="9126223262-1">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="p"·data-group-id="5554937974-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5554937974-3">[</span><span·class="p"·data-group-id="5554937974-4">[</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="5554937974-[·...·truncated·by·diffoscope;·len:·105,·SHA:·55144cd27f79f70bd7e2f89e0268533b4f0b07c00ab350940a44690c68f7a634·...·]-2">}</span><span·class="gp·unselectable">166 </span><span·class="p"·data-group-id="9126223262-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9126223262-3">[</span><span·class="p"·data-group-id="9126223262-4">[</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="9126223262-[·...·truncated·by·diffoscope;·len:·105,·SHA:·dfb27813607cc0398b778e5bf16af4aeff29870beb920359c6fc19d81a32c91c·...·]-2">}</span><span·class="gp·unselectable">
167 2&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="5554937974-5">(</span><span·class="p"·data-group-id="5554937974-5">)</span><span·class="p">.</span><span·class="w">167 2&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="9126223262-5">(</span><span·class="p"·data-group-id="9126223262-5">)</span><span·class="p">.</span><span·class="w">
168 </span><span·class="p"·data-group-id="5554937974-6">[</span><span·class="p"·data-group-id="5554937974-6">]</span></code></pre><p>Here·the·user·flag·<code·class="inline">-myflag·1</code>·is·passed·to·and·stored·by·the·<code·class="inline">init</code>·process.·It168 </span><span·class="p"·data-group-id="9126223262-6">[</span><span·class="p"·data-group-id="9126223262-6">]</span></code></pre><p>Here·the·user·flag·<code·class="inline">-myflag·1</code>·is·passed·to·and·stored·by·the·<code·class="inline">init</code>·process.·It
169 is·a·user-defined·flag,·presumably·used·by·some·user-defined·application.</p><p><a·href=""·id="init_flags"></a></p><h2·id="flags"·class="section-heading">169 is·a·user-defined·flag,·presumably·used·by·some·user-defined·application.</p><p><a·href=""·id="init_flags"></a></p><h2·id="flags"·class="section-heading">
170 ··<a·href="#flags"·class="hover-link">170 ··<a·href="#flags"·class="hover-link">
171 ····<i·class="ri-link-m"·aria-hidden="true"></i>171 ····<i·class="ri-link-m"·aria-hidden="true"></i>
172 ··</a>172 ··</a>
173 ··<span·class="text">Flags</span>173 ··<span·class="text">Flags</span>
174 </h2>174 </h2>
175 <p>In·the·following·list,·init·flags·are·marked·&quot;(init·flag)&quot;.·Unless·otherwise175 <p>In·the·following·list,·init·flags·are·marked·&quot;(init·flag)&quot;.·Unless·otherwise
Offset 699, 15 lines modifiedOffset 699, 15 lines modified
699 work).·This·is·accomplished·by·migrating·load·(for·example,·runnable699 work).·This·is·accomplished·by·migrating·load·(for·example,·runnable
700 processes)·into·a·smaller·set·of·schedulers·when·schedulers·frequently·run700 processes)·into·a·smaller·set·of·schedulers·when·schedulers·frequently·run
701 out·of·work.·When·disabled,·the·frequency·with·which·schedulers·run·out·of701 out·of·work.·When·disabled,·the·frequency·with·which·schedulers·run·out·of
702 work·is·not·taken·into·account·by·the·load·balancing·logic.</p><p><code·class="inline">+scl·false</code>·is·similar·to·<a·href="erl_cmd.html#%2Bsub"><code·class="inline">+sub·true</code></a>,·but·<code·class="inline">+sub·true</code>702 work·is·not·taken·into·account·by·the·load·balancing·logic.</p><p><code·class="inline">+scl·false</code>·is·similar·to·<a·href="erl_cmd.html#%2Bsub"><code·class="inline">+sub·true</code></a>,·but·<code·class="inline">+sub·true</code>
703 also·balances·scheduler·utilization·between·schedulers.</p></li><li><p><strong><code·class="inline"·id="+sct">+sct·CpuTopology</code></strong>·-·Sets·a·user-defined·CPU·topology.703 also·balances·scheduler·utilization·between·schedulers.</p></li><li><p><strong><code·class="inline"·id="+sct">+sct·CpuTopology</code></strong>·-·Sets·a·user-defined·CPU·topology.
704 The·user-defined·CPU·topology·overrides704 The·user-defined·CPU·topology·overrides
705 any·automatically·detected·CPU·topology.·The·CPU·topology·is·used·when705 any·automatically·detected·CPU·topology.·The·CPU·topology·is·used·when
706 <a·href="erl_cmd.html#%2Bsbt">binding·schedulers·to·logical·processors</a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="6850839800-1">(</span><span·class="p"·data-group-id="6850839800-1">)</span><span·class="p">;</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="mi">65535</span><span·class="w">706 <a·href="erl_cmd.html#%2Bsbt">binding·schedulers·to·logical·processors</a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5404749641-1">(</span><span·class="p"·data-group-id="5404749641-1">)</span><span·class="p">;</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="mi">65535</span><span·class="w">
707 </span><span·class="o">&lt;</span><span·class="n">IdRange</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="o">-</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">707 </span><span·class="o">&lt;</span><span·class="n">IdRange</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="o">-</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">
708 </span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">IdRange</span><span·class="o">&gt;</span><span·class="w">708 </span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Id</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">IdRange</span><span·class="o">&gt;</span><span·class="w">
709 </span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="w">709 </span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">IdOrIdRange</span><span·class="o">&gt;</span><span·class="w">
710 </span><span·class="o">&lt;</span><span·class="n">LogicalIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">710 </span><span·class="o">&lt;</span><span·class="n">LogicalIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">
711 </span><span·class="o">&lt;</span><span·class="n">ThreadIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">T</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">t</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">711 </span><span·class="o">&lt;</span><span·class="n">ThreadIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">T</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">t</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">
712 </span><span·class="o">&lt;</span><span·class="n">CoreIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">C</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">c</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">712 </span><span·class="o">&lt;</span><span·class="n">CoreIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">C</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">c</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">
713 </span><span·class="o">&lt;</span><span·class="n">ProcessorIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">p</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">713 </span><span·class="o">&lt;</span><span·class="n">ProcessorIds</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">p</span><span·class="o">&lt;</span><span·class="n">IdList</span><span·class="o">&gt;</span><span·class="w">
Offset 732, 30 lines modifiedOffset 732, 30 lines modified
732 node.</li><li><code·class="inline">&lt;LogicalIds&gt;&lt;ThreadIds&gt;&lt;CoreIds&gt;&lt;NodeIds&gt;&lt;ProcessorIds&gt;</code>,·that·is,·thread732 node.</li><li><code·class="inline">&lt;LogicalIds&gt;&lt;ThreadIds&gt;&lt;CoreIds&gt;&lt;NodeIds&gt;&lt;ProcessorIds&gt;</code>,·that·is,·thread
733 is·part·of·a·core·that·is·part·of·a·NUMA·node,·which·is·part·of·a733 is·part·of·a·core·that·is·part·of·a·NUMA·node,·which·is·part·of·a
734 processor.</li></ul><p>A·CPU·topology·can·consist·of·both·processor·external,·and·processor734 processor.</li></ul><p>A·CPU·topology·can·consist·of·both·processor·external,·and·processor
735 internal·NUMA·nodes·as·long·as·each·logical·processor·belongs·to·only·one735 internal·NUMA·nodes·as·long·as·each·logical·processor·belongs·to·only·one
736 NUMA·node.·If·<code·class="inline">&lt;ProcessorIds&gt;</code>·is·omitted,·its·default·position·is·before736 NUMA·node.·If·<code·class="inline">&lt;ProcessorIds&gt;</code>·is·omitted,·its·default·position·is·before
737 <code·class="inline">&lt;NodeIds&gt;</code>.·That·is,·the·default·is·processor·external·NUMA·nodes.</p><p>If·a·list·of·identifiers·is·used·in·an·<code·class="inline">&lt;IdDefs&gt;</code>:</p><ul><li><code·class="inline">&lt;LogicalIds&gt;</code>·must·be·a·list·of·identifiers.</li><li>At·least·one·other·identifier·type·besides·<code·class="inline">&lt;LogicalIds&gt;</code>·must·also·have·a737 <code·class="inline">&lt;NodeIds&gt;</code>.·That·is,·the·default·is·processor·external·NUMA·nodes.</p><p>If·a·list·of·identifiers·is·used·in·an·<code·class="inline">&lt;IdDefs&gt;</code>:</p><ul><li><code·class="inline">&lt;LogicalIds&gt;</code>·must·be·a·list·of·identifiers.</li><li>At·least·one·other·identifier·type·besides·<code·class="inline">&lt;LogicalIds&gt;</code>·must·also·have·a
738 list·of·identifiers.</li><li>All·lists·of·identifiers·must·produce·the·same·number·of·identifiers.</li></ul><p>A·simple·example.·A·single·quad·core·processor·can·be·described·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·+sct·L0-3c0-3</span><span·class="gp·unselectable">738 list·of·identifiers.</li><li>All·lists·of·identifiers·must·produce·the·same·number·of·identifiers.</li></ul><p>A·simple·example.·A·single·quad·core·processor·can·be·described·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·+sct·L0-3c0-3</span><span·class="gp·unselectable">
739 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="1113495782-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="1113495782-1">)</span><span·class="p">.</span><span·class="w">739 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="6747977246-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="6747977246-1">)</span><span·class="p">.</span><span·class="w">
740 </span><span·class="p"·data-group-id="1113495782-2">[</span><span·class="p"·data-group-id="1113495782-3">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="1113495782-4">[</span><span·class="p"·data-group-id="1113495782-5">{</span><span·class="ss">c[·...·truncated·by·diffoscope;·len:·261,·SHA:·c68b769ed0c7362a4235cc4f25c0963d1b4154c29a198ab6b19a3af3addc25d1·...·]-5">}</span><span·class="p">,</span><span·class="w">740 </span><span·class="p"·data-group-id="6747977246-2">[</span><span·class="p"·data-group-id="6747977246-3">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="6747977246-4">[</span><span·class="p"·data-group-id="6747977246-5">{</span><span·class="ss">c[·...·truncated·by·diffoscope;·len:·261,·SHA:·fbed2202aab4a771d9c7022c482a51acaed9d5527c516c340ae026c09dd9d3bf·...·]-5">}</span><span·class="p">,</span><span·class="w">
741 ·············</span><span·class="p"·data-group-id="1113495782-7">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1113495782-8">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1113495782-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·cc3747cc890f9f7082c9e23b1983af3caedf8072f6937ff81c88c55cd5fca944·...·]-7">}</span><span·class="p">,</span><span·class="w">741 ·············</span><span·class="p"·data-group-id="6747977246-7">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6747977246-8">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6747977246-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·7342a30de6d425dc9ce908ef9313fd22c9f0e6baf5e6cd87e5b7bcca5845ff12·...·]-7">}</span><span·class="p">,</span><span·class="w">
742 ·············</span><span·class="p"·data-group-id="1113495782-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1113495782-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1113495782-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·a55102ca0727ab3cc8d590b5009308ddd5afa2a4e659e608adee7635cf067f6c·...·]-9">}</span><span·class="p">,</span><span·class="w">742 ·············</span><span·class="p"·data-group-id="6747977246-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6747977246-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6747977246-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·e205915ff7b6af3e7f00ff73af3ac3ffc2c9ee423f4dd6aa63343f845919b44d·...·]-9">}</span><span·class="p">,</span><span·class="w">
743 ·············</span><span·class="p"·data-group-id="1113495782-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1113495782-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1113495782-12">}[·...·truncated·by·diffoscope;·len:·208,·SHA:·483ae2690e0c9ba0097069e7bcec2da3570879e495f663a8f632bdb497489c21·...·]-2">]</span></code></pre><p>A·more·complicated·example·with·two·quad·core·processors,·each·processor·in743 ·············</span><span·class="p"·data-group-id="6747977246-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6747977246-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6747977246-12">}[·...·truncated·by·diffoscope;·len:·208,·SHA:·53798971b16085e9273905a010f34b8bc176278c9f30abe2526dd5999e3c48cc·...·]-2">]</span></code></pre><p>A·more·complicated·example·with·two·quad·core·processors,·each·processor·in
744 its·own·NUMA·node.·The·ordering·of·logical·processors·is·a·bit·weird.·This744 its·own·NUMA·node.·The·ordering·of·logical·processors·is·a·bit·weird.·This
745 to·give·a·better·example·of·identifier·lists:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·+sct·L0-1,3-2c0-3p0N0:L7,4,6-5c0-3p1N1</span><span·class="gp·unselectable">745 to·give·a·better·example·of·identifier·lists:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·+sct·L0-1,3-2c0-3p0N0:L7,4,6-5c0-3p1N1</span><span·class="gp·unselectable">
746 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="5544211687-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="5544211687-1">)</span><span·class="p">.</span><span·class="w">746 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="6719730493-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="6719730493-1">)</span><span·class="p">.</span><span·class="w">
747 </span><span·class="p"·data-group-id="5544211687-2">[</span><span·class="p"·data-group-id="5544211687-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-4">[</span><span·class="p"·data-group-id="5544211687-5">{</span><span·class="ss">proces[·...·truncated·by·diffoscope;·len:·419,·SHA:·d37904260b461c4a90c74c9e2b6bf47b0f69f8ec85c0a7f5ba58a293a05e7984·...·]-7">}</span><span·class="p">,</span><span·class="w">747 </span><span·class="p"·data-group-id="6719730493-2">[</span><span·class="p"·data-group-id="6719730493-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-4">[</span><span·class="p"·data-group-id="6719730493-5">{</span><span·class="ss">proces[·...·truncated·by·diffoscope;·len:·419,·SHA:·e97ddd1f78a57a37e33a0eb24f202895362ecc3896cf9415bda652011acd78dd·...·]-7">}</span><span·class="p">,</span><span·class="w">
748 ····················</span><span·class="p"·data-group-id="5544211687-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5544211687-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·7720bfa716427365f6c0892c543de2c90fd23b5d17cc445ed0fba25ba4afd8f9·...·]-9">}</span><span·class="p">,</span><span·class="w">748 ····················</span><span·class="p"·data-group-id="6719730493-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6719730493-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·8629ef5f4c13595f3471d98e1fea8812feba227b10eb51c9c1a709718c7731fa·...·]-9">}</span><span·class="p">,</span><span·class="w">
749 ····················</span><span·class="p"·data-group-id="5544211687-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="5544211687-12">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·6a0d446f12a72661a6eb339919492c0b37a0664d6b8cb4124e5a5a3306aa34b0·...·]-11">}</span><span·class="p">,</span><span·class="w">749 ····················</span><span·class="p"·data-group-id="6719730493-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6719730493-12">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·d802ed5424928c8ebf7ac7c6052356da75d1f0b9523600838a8cbbe41f1401e4·...·]-11">}</span><span·class="p">,</span><span·class="w">
750 ····················</span><span·class="p"·data-group-id="5544211687-13">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-14">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5544211687-14">}</span><span·class="p"·data-group-id="5544211687-13">}</span><span·class="p"·data-group-id="5544211687-6">]</span><span·class="p"·data-group-id="5544211687-5">}</span><span·class="p"·data-group-id="5544211687-4">]</span><span·class="p"·data-group-id="5544211687-3">}</span><span·class="p">,</span><span·class="w"> 
751 ·</span><span·class="p"·data-group-id="5544211687-15">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-16">[</span><span·class="p"·data-group-id="5544211687-17">{</span><span·class="ss">processor</span><s[·...·truncated·by·diffoscope;·len:·414,·SHA:·dffa46074fbe1e0b13fe262fe3454e1b4899e47406c623cb136a44157511a6d9·...·]">}</span><span·class="p">,</span><span·class="w">750 ····················</span><span·class="p"·data-group-id="6719730493-13">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-14">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·320,·SHA:·f0f10e088139acdb51e8ee35c0ab4621326edc796c7e83b8ee48e7d78d0fbf73·...·]">}</span><span·class="p">,</span><span·class="w">
 751 ·</span><span·class="p"·data-group-id="6719730493-15">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-16">[</span><span·class="p"·data-group-id="6719730493-17">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-18">[</span><span·class="p"·data-group-id="6719730493-19">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-20">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="6719730493-20">}</span><span·class="p"·data-group-id="6719730493-19">}</span><span·class="p">,</span><span·class="w">
752 ····················</span><span·class="p"·data-group-id="5544211687-21">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-22">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="5544211687-22">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·6a0d446f12a72661a6eb339919492c0b37a0664d6b8cb4124e5a5a3306aa34b0·...·]-21">}</span><span·class="p">,</span><span·class="w">752 ····················</span><span·class="p"·data-group-id="6719730493-21">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-22">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="6719730493-22">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·d802ed5424928c8ebf7ac7c6052356da75d1f0b9523600838a8cbbe41f1401e4·...·]-21">}</span><span·class="p">,</span><span·class="w">
753 ····················</span><span·class="p"·data-group-id="5544211687-23">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-24">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="5544211687-24">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·6a0d446f12a72661a6eb339919492c0b37a0664d6b8cb4124e5a5a3306aa34b0·...·]-23">}</span><span·class="p">,</span><span·class="w">753 ····················</span><span·class="p"·data-group-id="6719730493-23">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-24">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6719730493-24">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·d802ed5424928c8ebf7ac7c6052356da75d1f0b9523600838a8cbbe41f1401e4·...·]-23">}</span><span·class="p">,</span><span·class="w">
754 ····················</span><span·class="p"·data-group-id="5544211687-25">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="5544211687-26">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="5544211687-26">}[·...·truncated·by·diffoscope;·len:·318,·SHA:·c3bf026d5117407bd25fd6937e21fc238bea3e93ea7ce8435f0ffdc5b67753d8·...·]-2">]</span></code></pre><p>As·long·as·real·identifiers·are·correct,·it·is·OK·to·pass·a·CPU·topology754 ····················</span><span·class="p"·data-group-id="6719730493-25">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6719730493-26">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="6719730493-26">}[·...·truncated·by·diffoscope;·len:·318,·SHA:·9c60205583dfbfbc020130af98212e773082887c9e5ec03d1223e3bcbe2bedb6·...·]-2">]</span></code></pre><p>As·long·as·real·identifiers·are·correct,·it·is·OK·to·pass·a·CPU·topology
755 that·is·not·a·correct·description·of·the·CPU·topology.·When·used·with·care755 that·is·not·a·correct·description·of·the·CPU·topology.·When·used·with·care
756 this·can·be·very·useful.·This·to·trick·the·emulator·to·bind·its·schedulers756 this·can·be·very·useful.·This·to·trick·the·emulator·to·bind·its·schedulers
757 as·you·want.·For·example,·if·you·want·to·run·multiple·Erlang·runtime·systems757 as·you·want.·For·example,·if·you·want·to·run·multiple·Erlang·runtime·systems
758 on·the·same·machine,·you·want·to·reduce·the·number·of·schedulers·used·and758 on·the·same·machine,·you·want·to·reduce·the·number·of·schedulers·used·and
759 manipulate·the·CPU·topology·so·that·they·bind·to·different·logical·CPUs.·An759 manipulate·the·CPU·topology·so·that·they·bind·to·different·logical·CPUs.·An
760 example,·with·two·Erlang·runtime·systems·on·a·quad·core·machine:</p><pre><code·class="text">%·erl·+sct·L0-3c0-3·+sbt·db·+S3:2·-detached·-noinput·-noshell·-sname·one760 example,·with·two·Erlang·runtime·systems·on·a·quad·core·machine:</p><pre><code·class="text">%·erl·+sct·L0-3c0-3·+sbt·db·+S3:2·-detached·-noinput·-noshell·-sname·one
761 %·erl·+sct·L3-0c0-3·+sbt·db·+S3:2·-detached·-noinput·-noshell·-sname·two</code></pre><p>In·this·example,·each·runtime·system·have·two·schedulers·each·online,·and761 %·erl·+sct·L3-0c0-3·+sbt·db·+S3:2·-detached·-noinput·-noshell·-sname·two</code></pre><p>In·this·example,·each·runtime·system·have·two·schedulers·each·online,·and
Offset 922, 18 lines modifiedOffset 922, 18 lines modified
922 </h2>922 </h2>
923 <p>The·standard·Erlang/OTP·system·can·be·reconfigured·to·change·the·default923 <p>The·standard·Erlang/OTP·system·can·be·reconfigured·to·change·the·default
924 behavior·on·startup.</p><ul><li><p><strong>The·<code·class="inline">.erlang</code>·startup·file</strong>·-·When·Erlang/OTP·is·started,·the·system924 behavior·on·startup.</p><ul><li><p><strong>The·<code·class="inline">.erlang</code>·startup·file</strong>·-·When·Erlang/OTP·is·started,·the·system
925 searches·for·a·file·named·<code·class="inline">.erlang</code>·in·the925 searches·for·a·file·named·<code·class="inline">.erlang</code>·in·the
926 <a·href="init.html#home">user's·home·directory</a>·and·then926 <a·href="init.html#home">user's·home·directory</a>·and·then
927 <a·href="../../../lib/stdlib-6.2/doc/html/filename.html#user_config"><code·class="inline">filename:basedir(user_config,·&quot;erlang&quot;)</code></a>.</p><p>If·an·<code·class="inline">.erlang</code>·file·is·found,·it·is·assumed·to·contain·valid·Erlang927 <a·href="../../../lib/stdlib-6.2/doc/html/filename.html#user_config"><code·class="inline">filename:basedir(user_config,·&quot;erlang&quot;)</code></a>.</p><p>If·an·<code·class="inline">.erlang</code>·file·is·found,·it·is·assumed·to·contain·valid·Erlang
928 expressions.·These·expressions·are·evaluated·as·if·they·were·input·to·the928 expressions.·These·expressions·are·evaluated·as·if·they·were·input·to·the
929 shell.</p><p>A·typical·<code·class="inline">.erlang</code>·file·contains·a·set·of·search·paths,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6481074994-1">(</span><span·class="s">&quot;executing·user·profile·in·$HOME/.erlang\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6481074994-2">[</span><span·class="p"·data-group-id="6481074994-2">]</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·13abe634db1411e37ff01eb74a00e360eec7e109282b5e08c6e7538f23e1f473·...·]-1">)</span><span·class="p">.</span><span·class="w">929 shell.</p><p>A·typical·<code·class="inline">.erlang</code>·file·contains·a·set·of·search·paths,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7335261565-1">(</span><span·class="s">&quot;executing·user·profile·in·$HOME/.erlang\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7335261565-2">[</span><span·class="p"·data-group-id="7335261565-2">]</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·a9dee4c665bac59bccba053a1ae74c2214a54deb8214fdb11aa5558c92974274·...·]-1">)</span><span·class="p">.</span><span·class="w">
930 </span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">add_path</span><span·class="p"·data-group-id="6481074994-3">(</span><span·class="s">&quot;/home/calvin/test/ebin&quot;</span><span·class="p"·data-group-id="6481074994-3">)</span><span·class="p">.</span><span·class="w">930 </span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">add_path</span><span·class="p"·data-group-id="7335261565-3">(</span><span·class="s">&quot;/home/calvin/test/ebin&quot;</span><span·class="p"·data-group-id="7335261565-3">)</span><span·class="p">.</span><span·class="w">
931 </span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">add_path</span><span·class="p"·data-group-id="6481074994-4">(</span><span·class="s">&quot;/home/hobbes/bigappl-1.2/ebin&quot;</span><span·class="p"·data-group-id="6481074994-4">)</span><span·class="p">.</span><span·class="w">931 </span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">add_path</span><span·class="p"·data-group-id="7335261565-4">(</span><span·class="s">&quot;/home/hobbes/bigappl-1.2/ebin&quot;</span><span·class="p"·data-group-id="7335261565-4">)</span><span·class="p">.</span><span·class="w">
932 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6481074994-5">(</span><span·class="s">&quot;.erlang·rc·finished\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6481074994-6">[</span><span·class="p"·data-group-id="6481074994-6">]</span><span·class="p"·data-group-id="6481074994-5">)</span><span·class="p">.</span></code></pre></li><li><p><strong>user_default</strong>·and·<strong>shell_default</strong>·-·Functions·in·the·shell·that·are·not932 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7335261565-5">(</span><span·class="s">&quot;.erlang·rc·finished\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7335261565-6">[</span><span·class="p"·data-group-id="7335261565-6">]</span><span·class="p"·data-group-id="7335261565-5">)</span><span·class="p">.</span></code></pre></li><li><p><strong>user_default</strong>·and·<strong>shell_default</strong>·-·Functions·in·the·shell·that·are·not
933 prefixed·by·a·module·name·are·assumed·to·be·functional·objects·(funs),933 prefixed·by·a·module·name·are·assumed·to·be·functional·objects·(funs),
934 built-in·functions·(BIFs),·or·belong·to·the·module·<code·class="inline">user_default</code>·or934 built-in·functions·(BIFs),·or·belong·to·the·module·<code·class="inline">user_default</code>·or
935 <code·class="inline">shell_default</code>.</p><p>To·include·private·shell·commands,·define·them·in·a·module·<code·class="inline">user_default</code>·and935 <code·class="inline">shell_default</code>.</p><p>To·include·private·shell·commands,·define·them·in·a·module·<code·class="inline">user_default</code>·and
936 add·the·following·argument·as·the·first·line·in·the·<code·class="inline">.erlang</code>·file:</p><pre><code·class="text">code:load_abs(&quot;..../user_default&quot;).</code></pre></li><li><p><strong>erl</strong>·-·If·the·contents·of·<code·class="inline">.erlang</code>·are·changed·and·a·private·version·of936 add·the·following·argument·as·the·first·line·in·the·<code·class="inline">.erlang</code>·file:</p><pre><code·class="text">code:load_abs(&quot;..../user_default&quot;).</code></pre></li><li><p><strong>erl</strong>·-·If·the·contents·of·<code·class="inline">.erlang</code>·are·changed·and·a·private·version·of
937 <code·class="inline">user_default</code>·is·defined,·the·Erlang/OTP·environment·can·be·customized.·More937 <code·class="inline">user_default</code>·is·defined,·the·Erlang/OTP·environment·can·be·customized.·More
938 powerful·changes·can·be·made·by·supplying·command-line·arguments·in·the938 powerful·changes·can·be·made·by·supplying·command-line·arguments·in·the
939 startup·script·<code·class="inline">erl</code>.·For·more·information,·see·<a·href="init.html"><code·class="inline">init</code></a>.</p></li></ul><h2·id="see-also"·class="section-heading">939 startup·script·<code·class="inline">erl</code>.·For·more·information,·see·<a·href="init.html"><code·class="inline">init</code></a>.</p></li></ul><h2·id="see-also"·class="section-heading">
27.0 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/erl_dist_protocol.html
    
Offset 252, 32 lines modifiedOffset 252, 32 lines modified
252 ---252 ---
253 sequenceDiagram253 sequenceDiagram
254 ····participant·client·as·Client·(or·Node)254 ····participant·client·as·Client·(or·Node)
255 ····participant·EPMD255 ····participant·EPMD
256 ····256 ····
257 ····client·-&gt;&gt;·EPMD:·NAMES_REQ257 ····client·-&gt;&gt;·EPMD:·NAMES_REQ
258 ····EPMD·--&gt;&gt;·client:·NAMES_RESP</code></pre><table><thead><tr><th·style="text-align:·left;">1</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">110</code></td></tr></tbody></table><p><em>Table:·NAMES_REQ·(110)</em></p><p>The·response·for·a·<code·class="inline">NAMES_REQ</code>·is·as·follows:</p><table><thead><tr><th·style="text-align:·left;">4</th><th·style="text-align:·left;"></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">EPMDPortNo</code></td><td·style="text-align:·left;"><code·class="inline">NodeInfo*</code></td></tr></tbody></table><p><em>Table:·NAMES_RESP</em></p><p><code·class="inline">NodeInfo</code>·is·a·string·written·for·each·active·node.·When·all·<code·class="inline">NodeInfo</code>·has258 ····EPMD·--&gt;&gt;·client:·NAMES_RESP</code></pre><table><thead><tr><th·style="text-align:·left;">1</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">110</code></td></tr></tbody></table><p><em>Table:·NAMES_REQ·(110)</em></p><p>The·response·for·a·<code·class="inline">NAMES_REQ</code>·is·as·follows:</p><table><thead><tr><th·style="text-align:·left;">4</th><th·style="text-align:·left;"></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">EPMDPortNo</code></td><td·style="text-align:·left;"><code·class="inline">NodeInfo*</code></td></tr></tbody></table><p><em>Table:·NAMES_RESP</em></p><p><code·class="inline">NodeInfo</code>·is·a·string·written·for·each·active·node.·When·all·<code·class="inline">NodeInfo</code>·has
259 been·written·the·connection·is·closed·by·the·EPMD.</p><p><code·class="inline">NodeInfo</code>·is,·as·expressed·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3152787641-1">(</span><span·class="s">&quot;name·~ts·at·port·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3152787641-2">[</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·5acccafb721c56f5887bd068201a8c8c1926fd4f7f9a82f7f5aa6d478ea6b7be·...·]-1">)</span><span·class="p">.</span></code></pre><h3·id="dump-all-data-from-epmd"·class="section-heading">259 been·written·the·connection·is·closed·by·the·EPMD.</p><p><code·class="inline">NodeInfo</code>·is,·as·expressed·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2238614036-1">(</span><span·class="s">&quot;name·~ts·at·port·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2238614036-2">[</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·9c985f7adcd3d60cfa7f31920bc6f9ddd129d6fedf3db00e0d47f0579570b23b·...·]-1">)</span><span·class="p">.</span></code></pre><h3·id="dump-all-data-from-epmd"·class="section-heading">
260 ··<a·href="#dump-all-data-from-epmd"·class="hover-link">260 ··<a·href="#dump-all-data-from-epmd"·class="hover-link">
261 ····<i·class="ri-link-m"·aria-hidden="true"></i>261 ····<i·class="ri-link-m"·aria-hidden="true"></i>
262 ··</a>262 ··</a>
263 ··<span·class="text">Dump·All·Data·from·EPMD</span>263 ··<span·class="text">Dump·All·Data·from·EPMD</span>
264 </h3>264 </h3>
265 <p>This·request·is·not·really·used,·it·is·to·be·regarded·as·a·debug·feature.</p><pre><code·class="mermaid">---265 <p>This·request·is·not·really·used,·it·is·to·be·regarded·as·a·debug·feature.</p><pre><code·class="mermaid">---
266 title:·Dump·All·Data·from·EPMD266 title:·Dump·All·Data·from·EPMD
267 ---267 ---
268 sequenceDiagram268 sequenceDiagram
269 ····participant·client·as·Client·(or·Node)269 ····participant·client·as·Client·(or·Node)
270 ····participant·EPMD270 ····participant·EPMD
271 ····271 ····
272 ····client·-&gt;&gt;·EPMD:·DUMP_REQ272 ····client·-&gt;&gt;·EPMD:·DUMP_REQ
273 ····EPMD·--&gt;&gt;·client:·DUMP_RESP</code></pre><table><thead><tr><th·style="text-align:·left;">1</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">100</code></td></tr></tbody></table><p><em>Table:·DUMP_REQ</em></p><p>The·response·for·a·<code·class="inline">DUMP_REQ</code>·is·as·follows:</p><table><thead><tr><th·style="text-align:·left;">4</th><th·style="text-align:·left;"></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">EPMDPortNo</code></td><td·style="text-align:·left;"><code·class="inline">NodeInfo*</code></td></tr></tbody></table><p><em>Table:·DUMP_RESP</em></p><p><code·class="inline">NodeInfo</code>·is·a·string·written·for·each·node·kept·in·the·EPMD.·When·all273 ····EPMD·--&gt;&gt;·client:·DUMP_RESP</code></pre><table><thead><tr><th·style="text-align:·left;">1</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">100</code></td></tr></tbody></table><p><em>Table:·DUMP_REQ</em></p><p>The·response·for·a·<code·class="inline">DUMP_REQ</code>·is·as·follows:</p><table><thead><tr><th·style="text-align:·left;">4</th><th·style="text-align:·left;"></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">EPMDPortNo</code></td><td·style="text-align:·left;"><code·class="inline">NodeInfo*</code></td></tr></tbody></table><p><em>Table:·DUMP_RESP</em></p><p><code·class="inline">NodeInfo</code>·is·a·string·written·for·each·node·kept·in·the·EPMD.·When·all
274 <code·class="inline">NodeInfo</code>·has·been·written·the·connection·is·closed·by·the·EPMD.</p><p><code·class="inline">NodeInfo</code>·is,·as·expressed·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2731149214-1">(</span><span·class="s">&quot;active·name·····~ts·at·port·</span><span·class="si">~p</span><span·class="s">,·fd·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">274 <code·class="inline">NodeInfo</code>·has·been·written·the·connection·is·closed·by·the·EPMD.</p><p><code·class="inline">NodeInfo</code>·is,·as·expressed·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9429878324-1">(</span><span·class="s">&quot;active·name·····~ts·at·port·</span><span·class="si">~p</span><span·class="s">,·fd·=·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
275 ··········</span><span·class="p"·data-group-id="2731149214-2">[</span><span·class="n">NodeName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="2731149214-2">]</span><s[·...·truncated·by·diffoscope;·len:·266,·SHA:·6945f7837a6c07fd539e7c47666769455f902c651a3a45e3fc3b47de4083610e·...·]-1">(</span><span·class="s">&quot;old/unused·name·~ts·at·port·</span><span·class="si">~p</span><span·class="s">,·fd·=·</span><span·class="si">~p</span><span·class="s">·</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">275 ··········</span><span·class="p"·data-group-id="9429878324-2">[</span><span·class="n">NodeName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="9429878324-2">]</span><s[·...·truncated·by·diffoscope;·len:·266,·SHA:·60ea215a660a0f8632bc2b318c5531f4937d483424c3481109d8529e58938e62·...·]-1">(</span><span·class="s">&quot;old/unused·name·~ts·at·port·</span><span·class="si">~p</span><span·class="s">,·fd·=·</span><span·class="si">~p</span><span·class="s">·</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
276 ··········</span><span·class="p"·data-group-id="2890526643-2">[</span><span·class="n">NodeName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="2890526643-2">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·cb5573df1f616eec7062442ea6ef27b0a150c8a68854eadab6ab63c8ff2f5a29·...·]-1">)</span><span·class="p">.</span></code></pre><h3·id="kill-epmd"·class="section-heading">276 ··········</span><span·class="p"·data-group-id="0886194926-2">[</span><span·class="n">NodeName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="0886194926-2">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·0bcf19091cf77c8eff626587b909a10722ff732c08b0ada60fc5c71b42ebfc68·...·]-1">)</span><span·class="p">.</span></code></pre><h3·id="kill-epmd"·class="section-heading">
277 ··<a·href="#kill-epmd"·class="hover-link">277 ··<a·href="#kill-epmd"·class="hover-link">
278 ····<i·class="ri-link-m"·aria-hidden="true"></i>278 ····<i·class="ri-link-m"·aria-hidden="true"></i>
279 ··</a>279 ··</a>
280 ··<span·class="text">Kill·EPMD</span>280 ··<span·class="text">Kill·EPMD</span>
281 </h3>281 </h3>
282 <p>This·request·kills·the·running·EPMD.·It·is·almost·never·used.</p><pre><code·class="mermaid">---282 <p>This·request·kills·the·running·EPMD.·It·is·almost·never·used.</p><pre><code·class="mermaid">---
283 title:·Kill·EPMD283 title:·Kill·EPMD
Offset 407, 54 lines modifiedOffset 407, 54 lines modified
407 received·from·<code·class="inline">A</code>·is·correct·and·generates·a·digest·from·the·challenge407 received·from·<code·class="inline">A</code>·is·correct·and·generates·a·digest·from·the·challenge
408 received·from·<code·class="inline">A</code>.·The·digest·is·then·sent·to·<code·class="inline">A</code>.·The·message·is·as·follows:</p><table><thead><tr><th·style="text-align:·left;">1</th><th·style="text-align:·left;">16</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">'a'</code></td><td·style="text-align:·left;"><code·class="inline">Digest</code></td></tr></tbody></table><p><em>Table:·The·challenge_ack·message</em></p><p><code·class="inline">Digest</code>·is·the·digest·calculated·by·<code·class="inline">B</code>·for·<code·class="inline">A</code>'s·challenge.</p></li><li><p><strong>7)·check</strong>·-·<code·class="inline">A</code>·checks·the·digest·from·<code·class="inline">B</code>·and·the·connection·is·up.</p></li></ul><h3·id="semigraphic-view"·class="section-heading">408 received·from·<code·class="inline">A</code>.·The·digest·is·then·sent·to·<code·class="inline">A</code>.·The·message·is·as·follows:</p><table><thead><tr><th·style="text-align:·left;">1</th><th·style="text-align:·left;">16</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">'a'</code></td><td·style="text-align:·left;"><code·class="inline">Digest</code></td></tr></tbody></table><p><em>Table:·The·challenge_ack·message</em></p><p><code·class="inline">Digest</code>·is·the·digest·calculated·by·<code·class="inline">B</code>·for·<code·class="inline">A</code>'s·challenge.</p></li><li><p><strong>7)·check</strong>·-·<code·class="inline">A</code>·checks·the·digest·from·<code·class="inline">B</code>·and·the·connection·is·up.</p></li></ul><h3·id="semigraphic-view"·class="section-heading">
409 ··<a·href="#semigraphic-view"·class="hover-link">409 ··<a·href="#semigraphic-view"·class="hover-link">
410 ····<i·class="ri-link-m"·aria-hidden="true"></i>410 ····<i·class="ri-link-m"·aria-hidden="true"></i>
411 ··</a>411 ··</a>
412 ··<span·class="text">Semigraphic·View</span>412 ··<span·class="text">Semigraphic·View</span>
413 </h3>413 </h3>
414 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">A</span><span·class="w">·</span><span·class="p"·data-group-id="0455204233-1">(</span><span·class="ss">initiator</span><span·class="p"·data-group-id="0455204233-1">)</span><span·class="w">······································</span><span·class="n">B</span><span·class="w">·</span><span·class="p"·data-group-id="04552042[·...·truncated·by·diffoscope;·len:·87,·SHA:·a09fbf2cb07d63d675c1e019cb68e06a1746d1fa06802a13e781c8f0fbc588df·...·]-2">)</span><span·class="w">414 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">A</span><span·class="w">·</span><span·class="p"·data-group-id="2869745009-1">(</span><span·class="ss">initiator</span><span·class="p"·data-group-id="2869745009-1">)</span><span·class="w">······································</span><span·class="n">B</span><span·class="w">·</span><span·class="p"·data-group-id="28697450[·...·truncated·by·diffoscope;·len:·87,·SHA:·744898a8aebc3fc3cc1f45f900cf3a18506d10eddf1f60eaf5c1b3947a9ab350·...·]-2">)</span><span·class="w">
  
415 </span><span·class="n">TCP</span><span·class="w">·</span><span·class="ss">connect</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">&gt;</span><span·class="w">415 </span><span·class="n">TCP</span><span·class="w">·</span><span·class="ss">connect</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">&gt;</span><span·class="w">
416 ···················································</span><span·class="n">TCP</span><span·class="w">·</span><span·class="ss">accept</span><span·class="w">416 ···················································</span><span·class="n">TCP</span><span·class="w">·</span><span·class="ss">accept</span><span·class="w">
  
417 </span><span·class="ss">send_name</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">&gt;</span><span·class="w">417 </span><span·class="ss">send_name</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">&gt;</span><span·class="w">
418 ···················································</span><span·class="ss">recv_name</span><span·class="w">418 ···················································</span><span·class="ss">recv_name</span><span·class="w">
  
419 ··</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">·</span><span·class="ss">send_status</span><span·class="w">419 ··</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">·</span><span·class="ss">send_status</span><span·class="w">
420 </span><span·class="nf">recv_status</span><span·class="w">420 </span><span·class="nf">recv_status</span><span·class="w">
421 </span><span·class="p"·data-group-id="0455204233-3">(</span><span·class="k">if</span><span·class="w">·</span><span·class="ss">status</span><span·class="w">·</span><span·class="ss">was</span><span·class="w">·</span><span·class="ss">&#39;alive&#39;</span><span·class="w">421 </span><span·class="p"·data-group-id="2869745009-3">(</span><span·class="k">if</span><span·class="w">·</span><span·class="ss">status</span><span·class="w">·</span><span·class="ss">was</span><span·class="w">·</span><span·class="ss">&#39;alive&#39;</span><span·class="w">
422 ·</span><span·class="ss">send_status</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">422 ·</span><span·class="ss">send_status</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
423 ···················································</span><span·class="ss">recv_status</span><span·class="p"·data-group-id="0455204233-3">)</span><span·class="w">423 ···················································</span><span·class="ss">recv_status</span><span·class="p"·data-group-id="2869745009-3">)</span><span·class="w">
  
424 ··························</span><span·class="p"·data-group-id="0455204233-4">(</span><span·class="n">ChB</span><span·class="p"·data-group-id="0455204233-4">)</span><span·class="w">······················</span><span·class="n">ChB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·119,·SHA:·169485d18b11d57432583bf1a95ae795119f342fa2472b32fc3292aad48e1616·...·]-5">)</span><span·class="w">424 ··························</span><span·class="p"·data-group-id="2869745009-4">(</span><span·class="n">ChB</span><span·class="p"·data-group-id="2869745009-4">)</span><span·class="w">······················</span><span·class="n">ChB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·119,·SHA:·22b629f189d2211509cdd539d28d757042fe015405d820b63a97274aa61c8a26·...·]-5">)</span><span·class="w">
425 ··</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">·</span><span·class="ss">send_challenge</span><span·class="w">425 ··</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">·</span><span·class="ss">send_challenge</span><span·class="w">
426 </span><span·class="nf">recv_challenge</span><span·class="w">426 </span><span·class="nf">recv_challenge</span><span·class="w">
  
427 </span><span·class="p"·data-group-id="0455204233-6">(</span><span·class="k">if</span><span·class="w">·</span><span·class="ss">old</span><span·class="w">·</span><span·class="ss">send_name</span><span·class="w">427 </span><span·class="p"·data-group-id="2869745009-6">(</span><span·class="k">if</span><span·class="w">·</span><span·class="ss">old</span><span·class="w">·</span><span·class="ss">send_name</span><span·class="w">
428 ·</span><span·class="ss">send_complement</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">428 ·</span><span·class="ss">send_complement</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
429 ···················································</span><span·class="ss">recv_complement</span><span·class="p"·data-group-id="0455204233-6">)</span><span·class="w">429 ···················································</span><span·class="ss">recv_complement</span><span·class="p"·data-group-id="2869745009-6">)</span><span·class="w">
  
430 </span><span·class="n">ChA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">gen_challenge</span><span·class="p"·data-group-id="0455204233-7">(</span><span·class="p"·data-group-id="0455204233-7">)</span><span·class="p">,</span><span·class="w">430 </span><span·class="n">ChA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">gen_challenge</span><span·class="p"·data-group-id="2869745009-7">(</span><span·class="p"·data-group-id="2869745009-7">)</span><span·class="p">,</span><span·class="w">
431 </span><span·class="n">OCA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">out_cookie</span><span·class="p"·data-group-id="0455204233-8">(</span><span·class="n">B</span><span·class="p"·data-group-id="0455204233-8">)</span><span·class="p">,</span><span·class="w">431 </span><span·class="n">OCA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">out_cookie</span><span·class="p"·data-group-id="2869745009-8">(</span><span·class="n">B</span><span·class="p"·data-group-id="2869745009-8">)</span><span·class="p">,</span><span·class="w">
432 </span><span·class="n">DiA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="p"·data-group-id="0455204233-9">(</span><span·class="n">ChB</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OCA</span><span·class="p"·data-group-id="0455204233-9">)</span><span·class="w">432 </span><span·class="n">DiA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="p"·data-group-id="2869745009-9">(</span><span·class="n">ChB</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OCA</span><span·class="p"·data-group-id="2869745009-9">)</span><span·class="w">
433 ··························</span><span·class="p"·data-group-id="0455204233-10">(</span><span·class="n">ChA</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DiA</span><span·class="p"·data-group-id="0455204233-10">)</span><span·class="w">433 ··························</span><span·class="p"·data-group-id="2869745009-10">(</span><span·class="n">ChA</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DiA</span><span·class="p"·data-group-id="2869745009-10">)</span><span·class="w">
434 </span><span·class="ss">send_challenge_reply</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">434 </span><span·class="ss">send_challenge_reply</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">
435 ···················································</span><span·class="ss">recv_challenge_reply</span><span·class="w">435 ···················································</span><span·class="ss">recv_challenge_reply</span><span·class="w">
436 ···················································</span><span·class="n">ICB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">in_cookie</span><span·class="p"·data-group-id="0455204233-11">(</span><span·class="n">A</span><span·class="p"·data-group-id="0455204233-11">)</span><span·class="p">,</span><span·class="w">436 ···················································</span><span·class="n">ICB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">in_cookie</span><span·class="p"·data-group-id="2869745009-11">(</span><span·class="n">A</span><span·class="p"·data-group-id="2869745009-11">)</span><span·class="p">,</span><span·class="w">
437 ···················································</span><span·class="nc">check</span><span·class="p">:</span><span·class="w">437 ···················································</span><span·class="nc">check</span><span·class="p">:</span><span·class="w">
438 ···················································</span><span·class="n">DiA</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="w">·</span><span·class="p"·data-group-id="0455204233-12">(</span><span·class="n">ChB</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ICB</span><span·class="p"·data-group-id="0455204233-12">)</span><span·class="o">?</span><span·class="w">438 ···················································</span><span·class="n">DiA</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="w">·</span><span·class="p"·data-group-id="2869745009-12">(</span><span·class="n">ChB</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ICB</span><span·class="p"·data-group-id="2869745009-12">)</span><span·class="o">?</span><span·class="w">
439 </span><span·class="w">···················································</span><span·class="p">-</span><span·class="w">·</span><span·class="na">if</span><span·class="w">·</span><span·class="n">OK</span><span·class="p">:</span><span·class="w">439 </span><span·class="w">···················································</span><span·class="p">-</span><span·class="w">·</span><span·class="na">if</span><span·class="w">·</span><span·class="n">OK</span><span·class="p">:</span><span·class="w">
440 ····················································</span><span·class="n">OCB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">out_cookie</span><span·class="p"·data-group-id="0455204233-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="0455204233-13">)</span><span·class="p">,</span><span·class="w">440 ····················································</span><span·class="n">OCB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">out_cookie</span><span·class="p"·data-group-id="2869745009-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="2869745009-13">)</span><span·class="p">,</span><span·class="w">
441 ····················································</span><span·class="n">DiB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="w">·</span><span·class="p"·data-group-id="0455204233-14">(</span><span·class="n">ChA</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OCB</span><span·class="p"·data-group-id="0455204233-14">)</span><span·class="w">441 ····················································</span><span·class="n">DiB</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="w">·</span><span·class="p"·data-group-id="2869745009-14">(</span><span·class="n">ChA</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OCB</span><span·class="p"·data-group-id="2869745009-14">)</span><span·class="w">
442 ··························</span><span·class="p"·data-group-id="0455204233-15">(</span><span·class="n">DiB</span><span·class="p"·data-group-id="0455204233-15">)</span><span·class="w">442 ··························</span><span·class="p"·data-group-id="2869745009-15">(</span><span·class="n">DiB</span><span·class="p"·data-group-id="2869745009-15">)</span><span·class="w">
443 ··</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="w">·</span><span·class="ss">send_challenge_ack</span><span·class="w">443 ··</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="w">·</span><span·class="ss">send_challenge_ack</span><span·class="w">
444 </span><span·class="ss">recv_challenge_ack</span><span·class="w">··································</span><span·class="n">DONE</span><span·class="w">444 </span><span·class="ss">recv_challenge_ack</span><span·class="w">··································</span><span·class="n">DONE</span><span·class="w">
445 </span><span·class="n">ICA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">in_cookie</span><span·class="p"·data-group-id="0455204233-16">(</span><span·class="n">B</span><span·class="p"·data-group-id="0455204233-16">)</span><span·class="p">,</span><span·class="w">································</span><span·class="o">-</span><span·class="w">·</span><span·class="nc">else</span><span·class="p">:</span><span·class="w">445 </span><span·class="n">ICA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">in_cookie</span><span·class="p"·data-group-id="2869745009-16">(</span><span·class="n">B</span><span·class="p"·data-group-id="2869745009-16">)</span><span·class="p">,</span><span·class="w">································</span><span·class="o">-</span><span·class="w">·</span><span·class="nc">else</span><span·class="p">:</span><span·class="w">
446 </span><span·class="nc">check</span><span·class="p">:</span><span·class="w">··············································</span><span·class="n">CLOSE</span><span·class="w">446 </span><span·class="nc">check</span><span·class="p">:</span><span·class="w">··············································</span><span·class="n">CLOSE</span><span·class="w">
447 </span><span·class="n">DiB</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="p"·data-group-id="0455204233-17">(</span><span·class="n">ChA</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ICA</span><span·class="p"·data-group-id="0455204233-17">)</span><span·class="o">?</span><span·class="w">447 </span><span·class="n">DiB</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="nf">gen_digest</span><span·class="p"·data-group-id="2869745009-17">(</span><span·class="n">ChA</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ICA</span><span·class="p"·data-group-id="2869745009-17">)</span><span·class="o">?</span><span·class="w">
448 </span><span·class="p">-</span><span·class="w">·</span><span·class="na">if</span><span·class="w">·</span><span·class="n">OK</span><span·class="p">:</span><span·class="w">448 </span><span·class="p">-</span><span·class="w">·</span><span·class="na">if</span><span·class="w">·</span><span·class="n">OK</span><span·class="p">:</span><span·class="w">
449 ·</span><span·class="n">DONE</span><span·class="w">449 ·</span><span·class="n">DONE</span><span·class="w">
450 </span><span·class="p">-</span><span·class="w">·</span><span·class="na">else</span><span·class="p">:</span><span·class="w">450 </span><span·class="p">-</span><span·class="w">·</span><span·class="na">else</span><span·class="p">:</span><span·class="w">
451 ·</span><span·class="n">CLOSE</span></code></pre><p><a·href=""·id="dflags"></a></p><h3·id="distribution-flags"·class="section-heading">451 ·</span><span·class="n">CLOSE</span></code></pre><p><a·href=""·id="dflags"></a></p><h3·id="distribution-flags"·class="section-heading">
452 ··<a·href="#distribution-flags"·class="hover-link">452 ··<a·href="#distribution-flags"·class="hover-link">
453 ····<i·class="ri-link-m"·aria-hidden="true"></i>453 ····<i·class="ri-link-m"·aria-hidden="true"></i>
454 ··</a>454 ··</a>
4.62 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/erl_ext_dist.html
    
Offset 436, 15 lines modifiedOffset 436, 15 lines modified
436 ··</a>436 ··</a>
437 ··<span·class="text">SMALL_BIG_EXT</span>437 ··<span·class="text">SMALL_BIG_EXT</span>
438 </h2>438 </h2>
439 <table><thead><tr><th·style="text-align:·left;">1</th><th·style="text-align:·left;">1</th><th·style="text-align:·left;">1</th><th·style="text-align:·left;">n</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">110</code></td><td·style="text-align:·left;"><code·class="inline">n</code></td><td·style="text-align:·left;"><code·class="inline">Sign</code></td><td·style="text-align:·left;"><code·class="inline">d(0)</code>·...·<code·class="inline">d(n-1)</code></td></tr></tbody></table><p>Bignums·are·stored·in·unary·form·with·a·<code·class="inline">Sign</code>·byte,·that·is,·0·if·the·bignum·is439 <table><thead><tr><th·style="text-align:·left;">1</th><th·style="text-align:·left;">1</th><th·style="text-align:·left;">1</th><th·style="text-align:·left;">n</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">110</code></td><td·style="text-align:·left;"><code·class="inline">n</code></td><td·style="text-align:·left;"><code·class="inline">Sign</code></td><td·style="text-align:·left;"><code·class="inline">d(0)</code>·...·<code·class="inline">d(n-1)</code></td></tr></tbody></table><p>Bignums·are·stored·in·unary·form·with·a·<code·class="inline">Sign</code>·byte,·that·is,·0·if·the·bignum·is
440 positive·and·1·if·it·is·negative.·The·digits·are·stored·with·the·least440 positive·and·1·if·it·is·negative.·The·digits·are·stored·with·the·least
441 significant·byte·stored·first.·To·calculate·the·integer,·the·following·formula441 significant·byte·stored·first.·To·calculate·the·integer,·the·following·formula
442 can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">256</span><span·class="w">442 can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">256</span><span·class="w">
443 </span><span·class="p"·data-group-id="3892876612-1">(</span><span·class="ss">d0</span><span·class="o">*</span><span·class="n">B</span><span·class="err">^</span><span·class="mi">0</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="ss">d1</span><span·class[·...·truncated·by·diffoscope;·len:·952,·SHA:·43cd79cab3b211f6d7a916ebbf6d0f10b8e8b18bcccdb8afde0d1dc5a34f137e·...·]-1">)</span></code></pre><h2·id="large_big_ext"·class="section-heading">443 </span><span·class="p"·data-group-id="4106215924-1">(</span><span·class="ss">d0</span><span·class="o">*</span><span·class="n">B</span><span·class="err">^</span><span·class="mi">0</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="ss">d1</span><span·class[·...·truncated·by·diffoscope;·len:·952,·SHA:·d581ceba67bc318b8430e23d1a53f0b54b81520a480d4bdb2447bdd3bee2fb6e·...·]-1">)</span></code></pre><h2·id="large_big_ext"·class="section-heading">
444 ··<a·href="#large_big_ext"·class="hover-link">444 ··<a·href="#large_big_ext"·class="hover-link">
445 ····<i·class="ri-link-m"·aria-hidden="true"></i>445 ····<i·class="ri-link-m"·aria-hidden="true"></i>
446 ··</a>446 ··</a>
447 ··<span·class="text">LARGE_BIG_EXT</span>447 ··<span·class="text">LARGE_BIG_EXT</span>
448 </h2>448 </h2>
449 <table><thead><tr><th·style="text-align:·left;">1</th><th·style="text-align:·left;">4</th><th·style="text-align:·left;">1</th><th·style="text-align:·left;">n</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">111</code></td><td·style="text-align:·left;"><code·class="inline">n</code></td><td·style="text-align:·left;"><code·class="inline">Sign</code></td><td·style="text-align:·left;"><code·class="inline">d(0)</code>·...·<code·class="inline">d(n-1)</code></td></tr></tbody></table><p>Same·as·<a·href="erl_ext_dist.html#small_big_ext"><code·class="inline">SMALL_BIG_EXT</code></a>·except·that·the·length449 <table><thead><tr><th·style="text-align:·left;">1</th><th·style="text-align:·left;">4</th><th·style="text-align:·left;">1</th><th·style="text-align:·left;">n</th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">111</code></td><td·style="text-align:·left;"><code·class="inline">n</code></td><td·style="text-align:·left;"><code·class="inline">Sign</code></td><td·style="text-align:·left;"><code·class="inline">d(0)</code>·...·<code·class="inline">d(n-1)</code></td></tr></tbody></table><p>Same·as·<a·href="erl_ext_dist.html#small_big_ext"><code·class="inline">SMALL_BIG_EXT</code></a>·except·that·the·length
450 field·is·an·unsigned·4·byte·integer.</p><h2·id="reference_ext-deprecated"·class="section-heading">450 field·is·an·unsigned·4·byte·integer.</p><h2·id="reference_ext-deprecated"·class="section-heading">
6.17 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/erl_nif.html
    
Offset 161, 27 lines modifiedOffset 161, 27 lines modified
161 }161 }
  
162 static·ErlNifFunc·nif_funcs[]·=162 static·ErlNifFunc·nif_funcs[]·=
163 {163 {
164 ····{&quot;hello&quot;,·0,·hello}164 ····{&quot;hello&quot;,·0,·hello}
165 };165 };
  
166 ERL_NIF_INIT(niftest,nif_funcs,NULL,NULL,NULL,NULL)</code></pre><p>The·Erlang·module·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3140360097-1">(</span><span·class="ss">niftest</span><span·class="p"·data-group-id="3140360097-1">)</span><span·class="p">.</span><span·class="w">166 ERL_NIF_INIT(niftest,nif_funcs,NULL,NULL,NULL,NULL)</code></pre><p>The·Erlang·module·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3297350185-1">(</span><span·class="ss">niftest</span><span·class="p"·data-group-id="3297350185-1">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="w">167 </span><span·class="w">
168 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3140360097-2">(</span><span·class="p"·data-group-id="3140360097-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hello</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·115,·SHA:·b95db3b5522108c5c9b00f2731d7064512b12dd3172f0528feb5a00f901e64fd·...·]-2">)</span><span·class="p">.</span><span·class="w">168 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3297350185-2">(</span><span·class="p"·data-group-id="3297350185-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hello</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·115,·SHA:·3925c3ab1668eeb14310761655c2a0c1cf62e3dabc5f27f53a64be2976987849·...·]-2">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="w">169 </span><span·class="w">
170 </span><span·class="p">-</span><span·class="na">nifs</span><span·class="p"·data-group-id="3140360097-4">(</span><span·class="p"·data-group-id="3140360097-5">[</span><span·class="ss">hello</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3140360097-5">]</span><span·class="p"·data-group-id="3140360097-4">)</span><span·class="p">.</span><span·class="w">170 </span><span·class="p">-</span><span·class="na">nifs</span><span·class="p"·data-group-id="3297350185-4">(</span><span·class="p"·data-group-id="3297350185-5">[</span><span·class="ss">hello</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3297350185-5">]</span><span·class="p"·data-group-id="3297350185-4">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="w">171 </span><span·class="w">
172 </span><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="3140360097-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3140360097-6">)</span><span·class="p">.</span><span·class="w">172 </span><span·class="p">-</span><span·class="na">on_load</span><span·class="p"·data-group-id="3297350185-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3297350185-6">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">init</span><span·class="p"·data-group-id="3140360097-7">(</span><span·class="p"·data-group-id="3140360097-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="nf">init</span><span·class="p"·data-group-id="3297350185-7">(</span><span·class="p"·data-group-id="3297350185-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="3140360097-8">(</span><span·class="s">&quot;./niftest&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="3140360097-8">)</span><span·class="p">.</span><span·class="w">174 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="3297350185-8">(</span><span·class="s">&quot;./niftest&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="3297350185-8">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">hello</span><span·class="p"·data-group-id="3140360097-9">(</span><span·class="p"·data-group-id="3140360097-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 </span><span·class="nf">hello</span><span·class="p"·data-group-id="3297350185-9">(</span><span·class="p"·data-group-id="3297350185-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">nif_error</span><span·class="p"·data-group-id="3140360097-10">(</span><span·class="s">&quot;NIF·library·not·loaded&quot;</span><span·class="p"·data-group-id="3140360097-10">)</span><span·class="p">.</span></code></pre><p>Compile·and·test·can·look·as·follows·(on·Linux):</p><pre><code·class="text">$&gt;·gcc·-fPIC·-shared·-o·niftest.so·niftest.c·-I·$ERL_ROOT/usr/include/176 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">nif_error</span><span·class="p"·data-group-id="3297350185-10">(</span><span·class="s">&quot;NIF·library·not·loaded&quot;</span><span·class="p"·data-group-id="3297350185-10">)</span><span·class="p">.</span></code></pre><p>Compile·and·test·can·look·as·follows·(on·Linux):</p><pre><code·class="text">$&gt;·gcc·-fPIC·-shared·-o·niftest.so·niftest.c·-I·$ERL_ROOT/usr/include/
177 $&gt;·erl177 $&gt;·erl
  
178 1&gt;·c(niftest).178 1&gt;·c(niftest).
179 {ok,niftest}179 {ok,niftest}
180 2&gt;·niftest:hello().180 2&gt;·niftest:hello().
181 &quot;Hello·world!&quot;</code></pre><p>In·the·example·above·the·<a·href="../../../doc/system/code_loading.html#on_load"><em><code·class="inline">on_load</code></em></a>181 &quot;Hello·world!&quot;</code></pre><p>In·the·example·above·the·<a·href="../../../doc/system/code_loading.html#on_load"><em><code·class="inline">on_load</code></em></a>
182 directive·is·used·get·function·<code·class="inline">init</code>·called·automatically·when·the·module·is182 directive·is·used·get·function·<code·class="inline">init</code>·called·automatically·when·the·module·is
2.31 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/erl_prim_loader.html
    
Offset 398, 15 lines modifiedOffset 398, 15 lines modified
398 ························when·Filename·::·<a·href="erlang.html#t:string/0">string</a>(),·FileInfo·::·<a·href="../../../lib/kernel-10.2.2/doc/html/file.html#t:file_info/0">file:file_info</a>().</pre>398 ························when·Filename·::·<a·href="erlang.html#t:string/0">string</a>(),·FileInfo·::·<a·href="../../../lib/kernel-10.2.2/doc/html/file.html#t:file_info/0">file:file_info</a>().</pre>
  
399 ······</div>399 ······</div>
  
400 <p>Retrieves·information·about·a·file.</p><p>Returns·<code·class="inline">{ok,·FileInfo}</code>·if·successful,·otherwise·<code·class="inline">error</code>.·<code·class="inline">FileInfo</code>·is·a400 <p>Retrieves·information·about·a·file.</p><p>Returns·<code·class="inline">{ok,·FileInfo}</code>·if·successful,·otherwise·<code·class="inline">error</code>.·<code·class="inline">FileInfo</code>·is·a
401 record·<a·href="../../../lib/kernel-10.2.2/doc/html/file.html#t:file_info/0"><code·class="inline">file_info</code></a>,·defined·in·the·Kernel·include·file401 record·<a·href="../../../lib/kernel-10.2.2/doc/html/file.html#t:file_info/0"><code·class="inline">file_info</code></a>,·defined·in·the·Kernel·include·file
402 ·<code·class="inline">file.hrl</code>.·Include·the·following·directive·in·the·module·from·which·the402 ·<code·class="inline">file.hrl</code>.·Include·the·following·directive·in·the·module·from·which·the
403 function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4373258791-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="4373258791-1">)</span><span·class="p">.</span></code></pre><p>For·more·information·about·the·record·see·<a·href="../../../lib/kernel-10.2.2/doc/html/file.html#read_file_info/2"><code·class="inline">file:read_file_info/2</code></a>.</p><p><code·class="inline">Filename</code>·can·also·be·a·file·in·an·archive,·for·example,403 function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4434857154-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="4434857154-1">)</span><span·class="p">.</span></code></pre><p>For·more·information·about·the·record·see·<a·href="../../../lib/kernel-10.2.2/doc/html/file.html#read_file_info/2"><code·class="inline">file:read_file_info/2</code></a>.</p><p><code·class="inline">Filename</code>·can·also·be·a·file·in·an·archive,·for·example,
404 <code·class="inline">$OTPROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia</code>.·For·information404 <code·class="inline">$OTPROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia</code>.·For·information
405 about·archive·files,·see·<a·href="../../../lib/kernel-10.2.2/doc/html/code.html"><code·class="inline">code</code></a>.</p>405 about·archive·files,·see·<a·href="../../../lib/kernel-10.2.2/doc/html/code.html"><code·class="inline">code</code></a>.</p>
406 ··</section>406 ··</section>
407 </section>407 </section>
408 <section·class="detail"·id="read_link_info/1">408 <section·class="detail"·id="read_link_info/1">
  
409 ··<div·class="detail-header">409 ··<div·class="detail-header">
26.8 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/erl_tracer.html
    
Offset 145, 44 lines modifiedOffset 145, 44 lines modified
145 ··<span·class="text">Erl·Tracer·Module·Example</span>145 ··<span·class="text">Erl·Tracer·Module·Example</span>
146 </h2>146 </h2>
147 <p>In·this·example,·a·tracer·module·with·a·NIF·back·end·sends·a·message·for·each147 <p>In·this·example,·a·tracer·module·with·a·NIF·back·end·sends·a·message·for·each
148 <code·class="inline">send</code>·trace·tag·containing·only·the·sender·and·receiver.·Using·this·tracer148 <code·class="inline">send</code>·trace·tag·containing·only·the·sender·and·receiver.·Using·this·tracer
149 module,·a·much·more·lightweight·message·tracer·is·used,·which·only·records·who149 module,·a·much·more·lightweight·message·tracer·is·used,·which·only·records·who
150 sent·messages·to·who.</p><p>The·following·is·an·example·session·using·it·on·Linux:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">gcc</span><span·class="w">·</span><span·class="o">-</span><span·class="n">I</span><span·class="w">·</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8.0</span><span·class="o">/</span><span·class="ss">include</span><span·class="o">/</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">fPIC</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">shared</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">o</span><span·class="w">·</span><span·class="ss">erl_msg_tracer</span><span·class="p">.</span><span·class="ss">so</span><span·class="w">·</span><span·class="ss">erl_msg_tracer</span><span·class="p">.</span><span·class="ss">c</span><span·class="w">150 sent·messages·to·who.</p><p>The·following·is·an·example·session·using·it·on·Linux:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">gcc</span><span·class="w">·</span><span·class="o">-</span><span·class="n">I</span><span·class="w">·</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8.0</span><span·class="o">/</span><span·class="ss">include</span><span·class="o">/</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">fPIC</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">shared</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">o</span><span·class="w">·</span><span·class="ss">erl_msg_tracer</span><span·class="p">.</span><span·class="ss">so</span><span·class="w">·</span><span·class="ss">erl_msg_tracer</span><span·class="p">.</span><span·class="ss">c</span><span·class="w">
151 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">151 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">
152 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">19</span><span·class="w">·</span><span·class="p"·data-group-id="5214277703-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="5214277703-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="5214277703-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8[·...·truncated·by·diffoscope;·len:·1414,·SHA:·106bb13c90a5807bbd1f7353f17a0f7a2676387fa94449371aacdf8a349e71f5·...·]-8">]</span><span·class="w">152 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">19</span><span·class="w">·</span><span·class="p"·data-group-id="8624080117-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="8624080117-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8624080117-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8[·...·truncated·by·diffoscope;·len:·1414,·SHA:·d58807e9e17f480f469b517c904b1306fd72b0d7b718c6bb92108fb340166fab·...·]-8">]</span><span·class="w">
  
153 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V8</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="5214277703-9">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="5214277703-9">)</span><span·class="gp·unselectable">153 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V8</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="8624080117-9">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="8624080117-9">)</span><span·class="gp·unselectable">
154 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="5214277703-10">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="5214277703-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">erl_msg_tracer</span><span·class="p">:</span><span·class="nf">load</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·ef21ccb5838abaabb2d1d76dffa69be743e90f13d449878c87d557e845269627·...·]-11">)</span><span·class="p">.</span><span·class="w">154 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="8624080117-10">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="8624080117-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">erl_msg_tracer</span><span·class="p">:</span><span·class="nf">load</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·64cbbd76ba6cf8871dbe88958891c26d8fdb2fc9c89eff74e6cc4ea308e2c4fe·...·]-11">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="ss">ok</span><span·class="gp·unselectable">155 </span><span·class="ss">ok</span><span·class="gp·unselectable">
156 2&gt;·</span><span·class="n">Tracer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5214277703-12">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="5214277703-13">(</span><span·class="p"·data-group-id="5214277703-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·954,·SHA:·da4752bde5bd62fd94f5f2ccc33fa0e34b934b6c914e00f3db29e98d1635b1bf·...·]-12">)</span><span·class="p">.</span><span·class="w">156 2&gt;·</span><span·class="n">Tracer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8624080117-12">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="8624080117-13">(</span><span·class="p"·data-group-id="8624080117-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·954,·SHA:·54ee035b2b2688eeab2890c26f03de3d602e5636c6aaa4447218abb6bc43715f·...·]-12">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="o">&lt;</span><span·class="mf">0.37</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">157 </span><span·class="o">&lt;</span><span·class="mf">0.37</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
158 3&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="5214277703-17">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5214277703-18">[</span><span·class="nb">send</span>[·...·truncated·by·diffoscope;·len:·420,·SHA:·8f2d93abdbf4f153242331153ffdb170c71155661aeb85249c5e6219b963bdd5·...·]-17">)</span><span·class="p">.</span><span·class="w">158 3&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="8624080117-17">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8624080117-18">[</span><span·class="nb">send</span>[·...·truncated·by·diffoscope;·len:·420,·SHA:·d60a7527eea00fdff37ae990e2b08c4f31ce789b373bba46649b3208b8b7d9c0·...·]-17">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="mi">0</span><span·class="w">159 </span><span·class="mi">0</span><span·class="w">
160 </span><span·class="p"·data-group-id="5214277703-20">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.39</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·2acad08f4a839a7d796b0e4b10959d6224cff70a80982354fb7292382c429de6·...·]-20">}</span><span·class="gp·unselectable">160 </span><span·class="p"·data-group-id="8624080117-20">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.39</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·2188a0e41619351281fbb059f1ac76ffd5c68288b40fc70e61826c5b9114b004·...·]-20">}</span><span·class="gp·unselectable">
161 4&gt;·</span><span·class="p"·data-group-id="5214277703-21">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="5214277703-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·375,·SHA:·c28313b85e3b49d52e3c1365a94bc7c2455fd4d3338e048fc30b9bbd32f1aa1c·...·]-22">)</span><span·class="p">.</span><span·class="w">161 4&gt;·</span><span·class="p"·data-group-id="8624080117-21">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="8624080117-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·375,·SHA:·bf3439a0e79bd2cc3ae5d63e9eb48ad335d4c74a8733047cf8b6dec30df89d21·...·]-22">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="5214277703-24">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.486</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·150,·SHA:·55a8a568af8516da97093381eab2ae4f92cbe436caadf8ffead79ceb3c8ce908·...·]-24">}</span><span·class="w">162 </span><span·class="p"·data-group-id="8624080117-24">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.486</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·150,·SHA:·445ad108097be9d5d1fc7b23663b7c5f91873e2cce6de572136bc744dd3c469c·...·]-24">}</span><span·class="w">
163 </span><span·class="p"·data-group-id="5214277703-25">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·e01d03ae0943e1a8186afd1cca7176cdee73767a46ee6f2e251335d651b9619d·...·]-25">}</span><span·class="w">163 </span><span·class="p"·data-group-id="8624080117-25">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·9e4e5ae9c5550e4d3f4cfd21a2e0d982662539ea96f213ac55143e669b70606c·...·]-25">}</span><span·class="w">
164 </span><span·class="p"·data-group-id="5214277703-26">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.487</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·9085bbcadb0e4f69f1354e18dca0a4d252e97f977b21db8ce5a6a18e3cb92dbb·...·]-26">}</span><span·class="w">164 </span><span·class="p"·data-group-id="8624080117-26">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.487</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·7a983bdfb79c4f31df10a62c61b8c8bf0c2a7b781470a338cf7dd7c832c370be·...·]-26">}</span><span·class="w">
165 </span><span·class="p"·data-group-id="5214277703-27">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.488</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·9085bbcadb0e4f69f1354e18dca0a4d252e97f977b21db8ce5a6a18e3cb92dbb·...·]-27">}</span><span·class="w">165 </span><span·class="p"·data-group-id="8624080117-27">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.488</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·7a983bdfb79c4f31df10a62c61b8c8bf0c2a7b781470a338cf7dd7c832c370be·...·]-27">}</span><span·class="w">
166 </span><span·class="p"·data-group-id="5214277703-28">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.489</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·9085bbcadb0e4f69f1354e18dca0a4d252e97f977b21db8ce5a6a18e3cb92dbb·...·]-28">}</span><span·class="w">166 </span><span·class="p"·data-group-id="8624080117-28">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.489</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·7a983bdfb79c4f31df10a62c61b8c8bf0c2a7b781470a338cf7dd7c832c370be·...·]-28">}</span><span·class="w">
167 </span><span·class="p"·data-group-id="5214277703-29">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.490</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·9085bbcadb0e4f69f1354e18dca0a4d252e97f977b21db8ce5a6a18e3cb92dbb·...·]-29">}</span><span·class="w">167 </span><span·class="p"·data-group-id="8624080117-29">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.490</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</[·...·truncated·by·diffoscope;·len:·149,·SHA:·7a983bdfb79c4f31df10a62c61b8c8bf0c2a7b781470a338cf7dd7c832c370be·...·]-29">}</span><span·class="w">
168 </span><span·class="p"·data-group-id="5214277703-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5214277703-30">}</span><span·class="w">168 </span><span·class="p"·data-group-id="8624080117-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8624080117-30">}</span><span·class="w">
169 </span><span·class="p"·data-group-id="5214277703-31">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.41</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·2acad08f4a839a7d796b0e4b10959d6224cff70a80982354fb7292382c429de6·...·]-31">}</span><span·class="w">169 </span><span·class="p"·data-group-id="8624080117-31">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.41</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·2188a0e41619351281fbb059f1ac76ffd5c68288b40fc70e61826c5b9114b004·...·]-31">}</span><span·class="w">
170 </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p><code·class="inline">erl_msg_tracer.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3646802987-1">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="3646802987-1">)</span><span·class="p">.</span><span·class="w">170 </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p><code·class="inline">erl_msg_tracer.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5262094127-1">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="5262094127-1">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="w">171 </span><span·class="w">
172 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3646802987-2">(</span><span·class="p"·data-group-id="3646802987-3">[</span><span·class="ss">enabled</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">trace</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·243,·SHA:·ab99c8b210dc5b28384492055efadbc19c81930e153d8db533c32249ef51629a·...·]7-2">)</span><span·class="p">.</span><span·class="w">172 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5262094127-2">(</span><span·class="p"·data-group-id="5262094127-3">[</span><span·class="ss">enabled</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">trace</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·243,·SHA:·e3a33415fa4a06cccadf0fbcec9e4ca00359b4e1eee8c5f2ab5fb52dd4693332·...·]7-2">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">load</span><span·class="p"·data-group-id="3646802987-4">(</span><span·class="p"·data-group-id="3646802987-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="nf">load</span><span·class="p"·data-group-id="5262094127-4">(</span><span·class="p"·data-group-id="5262094127-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="3646802987-5">(</span><span·class="s">&quot;erl_msg_tracer&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3646802987-6">[</span><span·class="p"·data-group-id="3646802987-6">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·21f168f68951f39f093aa99cd7dd455b1142a5fab0365006b311be12e45fc59e·...·]7-5">)</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="5262094127-5">(</span><span·class="s">&quot;erl_msg_tracer&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5262094127-6">[</span><span·class="p"·data-group-id="5262094127-6">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·077806f77c4964d4e02684c61e7db092d72052f8fc3a119396c78d3a9bb0281e·...·]7-5">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">enabled</span><span·class="p"·data-group-id="3646802987-7">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="3646802987-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 </span><span·class="nf">enabled</span><span·class="p"·data-group-id="5262094127-7">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="5262094127-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="ss">error</span><span·class="p">.</span><span·class="w">176 ····</span><span·class="ss">error</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="nf">trace</span><span·class="p"·data-group-id="3646802987-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·118,·SHA:·4d6e03f42a039727e04bc5df2fd7d160423dbf768b9b7bfb6a281888d1bac323·...·]7-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">177 </span><span·class="nf">trace</span><span·class="p"·data-group-id="5262094127-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·118,·SHA:·5639cdfcfa73f29416a8e13ab77ef89c059e7cd9e9c1a1b288e411e52e66e799·...·]7-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ····</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p><code·class="inline">erl_msg_tracer.c</code>:</p><pre><code·class="c">#include·&lt;erl_nif.h&gt;178 ····</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p><code·class="inline">erl_msg_tracer.c</code>:</p><pre><code·class="c">#include·&lt;erl_nif.h&gt;
  
179 /*·NIF·interface·declarations·*/179 /*·NIF·interface·declarations·*/
180 static·int·load(ErlNifEnv*·env,·void**·priv_data,·ERL_NIF_TERM·load_info);180 static·int·load(ErlNifEnv*·env,·void**·priv_data,·ERL_NIF_TERM·load_info);
181 static·int·upgrade(ErlNifEnv*·env,·void**·priv_data,·void**·old_priv_data,·ERL_NIF_TERM·load_info);181 static·int·upgrade(ErlNifEnv*·env,·void**·priv_data,·void**·old_priv_data,·ERL_NIF_TERM·load_info);
182 static·void·unload(ErlNifEnv*·env,·void*·priv_data);182 static·void·unload(ErlNifEnv*·env,·void*·priv_data);
  
625 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/erlang.html
    
Offset 6846, 16 lines modifiedOffset 6846, 16 lines modified
6846 ······<div·class="specs">6846 ······<div·class="specs">
  
6847 ··········<pre·translate="no"><span·class="attribute">-spec</span>·adler32(OldAdler,·Data)·->·<a·href="#t:non_neg_integer/0">non_neg_integer</a>()·when·OldAdler·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),·Data·::·<a·href="#t:iodata/0">iodata</a>().</pre>6847 ··········<pre·translate="no"><span·class="attribute">-spec</span>·adler32(OldAdler,·Data)·->·<a·href="#t:non_neg_integer/0">non_neg_integer</a>()·when·OldAdler·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),·Data·::·<a·href="#t:iodata/0">iodata</a>().</pre>
  
6848 ······</div>6848 ······</div>
  
6849 <p>Continues·computing·the·adler32·checksum·by·combining·the·previous·checksum,6849 <p>Continues·computing·the·adler32·checksum·by·combining·the·previous·checksum,
6850 <code·class="inline">OldAdler</code>,·with·the·checksum·of·<code·class="inline">Data</code>.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="3470943161-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="3470943161-1">)</span><span·class="p">,</span><span·class="w">6850 <code·class="inline">OldAdler</code>,·with·the·checksum·of·<code·class="inline">Data</code>.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="1398512664-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="1398512664-1">)</span><span·class="p">,</span><span·class="w">
6851 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="3470943161-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="3470943161-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Y</code>·as·this:<[·...·truncated·by·diffoscope;·len:·512,·SHA:·c4966860451262474559639bb3df7c3cb0f2428da0cdb8b04c1db389cae898dd·...·]-1">)</span><span·class="p">.</span></code></pre>6851 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="1398512664-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="1398512664-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Y</code>·as·this:<[·...·truncated·by·diffoscope;·len:·512,·SHA:·c8cfba6a848209d225dc4e95cfee9c1019ed387a1ea785ee68c49c67eee78fc6·...·]-1">)</span><span·class="p">.</span></code></pre>
6852 ··</section>6852 ··</section>
6853 </section>6853 </section>
6854 <section·class="detail"·id="adler32_combine/3">6854 <section·class="detail"·id="adler32_combine/3">
  
6855 ··<div·class="detail-header">6855 ··<div·class="detail-header">
6856 ····<a·href="#adler32_combine/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">6856 ····<a·href="#adler32_combine/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
6857 ······<i·class="ri-link-m"·aria-hidden="true"></i>6857 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 6878, 18 lines modifiedOffset 6878, 18 lines modified
6878 ·····························FirstAdler·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),6878 ·····························FirstAdler·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),
6879 ·····························SecondAdler·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),6879 ·····························SecondAdler·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),
6880 ·····························SecondSize·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>().</pre>6880 ·····························SecondSize·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>().</pre>
  
6881 ······</div>6881 ······</div>
  
6882 <p>Combines·two·previously·computed·adler32·checksums.</p><p>This·computation·requires·the·size·of·the·data·object·for·the·second·checksum6882 <p>Combines·two·previously·computed·adler32·checksums.</p><p>This·computation·requires·the·size·of·the·data·object·for·the·second·checksum
6883 to·be·known.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="2541006750-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="2541006750-1">)</span><span·class="p">,</span><span·class="w">6883 to·be·known.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="1328487172-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="1328487172-1">)</span><span·class="p">,</span><span·class="w">
6884 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="2541006750-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="2541006750-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Z</code>·as·this:<[·...·truncated·by·diffoscope;·len:·354,·SHA:·72a31fabe3cf3379d2288fe195a29f95e3098fe8a699f521780313591408b353·...·]-1">)</span><span·class="p">,</span><span·class="w">6884 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="1328487172-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="1328487172-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Z</code>·as·this:<[·...·truncated·by·diffoscope;·len:·354,·SHA:·b129fed1d9324517db568cae440c9f4d972346ee4018433ad260e29f4bd5d4d2·...·]-1">)</span><span·class="p">,</span><span·class="w">
6885 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="5484680798-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="5484680798-2">)</span><span·class="p">,</span><span·class="w">6885 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32</span><span·class="p"·data-group-id="4038057806-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="4038057806-2">)</span><span·class="p">,</span><span·class="w">
6886 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32_combine</span><span·class="p"·data-group-id="5484680798-3">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="nf">iolist_size</span><span·class="p"·data-group-id="5484680798-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·601264dd90bc69ff9deb902570aefd7de60fa16acc6f690dc1fa27ab12ca6834·...·]-3">)</span><span·class="p">.</span></code></pre>6886 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">adler32_combine</span><span·class="p"·data-group-id="4038057806-3">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="nf">iolist_size</span><span·class="p"·data-group-id="4038057806-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·e283788bfe688a0450528e24a4e5b8b644c31749dccf5e55806b8d65ec77af80·...·]-3">)</span><span·class="p">.</span></code></pre>
6887 ··</section>6887 ··</section>
6888 </section>6888 </section>
6889 <section·class="detail"·id="crc32/1">6889 <section·class="detail"·id="crc32/1">
  
6890 ··<div·class="detail-header">6890 ··<div·class="detail-header">
6891 ····<a·href="#crc32/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">6891 ····<a·href="#crc32/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
6892 ······<i·class="ri-link-m"·aria-hidden="true"></i>6892 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 6934, 16 lines modifiedOffset 6934, 16 lines modified
6934 ······<div·class="specs">6934 ······<div·class="specs">
  
6935 ··········<pre·translate="no"><span·class="attribute">-spec</span>·crc32(OldCrc,·Data)·->·<a·href="#t:non_neg_integer/0">non_neg_integer</a>()·when·OldCrc·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),·Data·::·<a·href="#t:iodata/0">iodata</a>().</pre>6935 ··········<pre·translate="no"><span·class="attribute">-spec</span>·crc32(OldCrc,·Data)·->·<a·href="#t:non_neg_integer/0">non_neg_integer</a>()·when·OldCrc·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),·Data·::·<a·href="#t:iodata/0">iodata</a>().</pre>
  
6936 ······</div>6936 ······</div>
  
6937 <p>Continues·computing·the·crc32·checksum·by·combining·the·previous·checksum,6937 <p>Continues·computing·the·crc32·checksum·by·combining·the·previous·checksum,
6938 <code·class="inline">OldCrc</code>,·with·the·checksum·of·<code·class="inline">Data</code>.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="4198725267-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="4198725267-1">)</span><span·class="p">,</span><span·class="w">6938 <code·class="inline">OldCrc</code>,·with·the·checksum·of·<code·class="inline">Data</code>.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="7842423352-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="7842423352-1">)</span><span·class="p">,</span><span·class="w">
6939 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="4198725267-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="4198725267-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Y</code>·as·this:<[·...·truncated·by·diffoscope;·len:·510,·SHA:·d50169739a0fffbd7ba589e5b744ac6768e9063fe8de001b4a790acd5ca36c21·...·]-1">)</span><span·class="p">.</span></code></pre>6939 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="7842423352-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="7842423352-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Y</code>·as·this:<[·...·truncated·by·diffoscope;·len:·510,·SHA:·24c05e7c22a956398d82d38ffaa4310504102f27a3c23ee20cc47a6e462cc98b·...·]-1">)</span><span·class="p">.</span></code></pre>
6940 ··</section>6940 ··</section>
6941 </section>6941 </section>
6942 <section·class="detail"·id="crc32_combine/3">6942 <section·class="detail"·id="crc32_combine/3">
  
6943 ··<div·class="detail-header">6943 ··<div·class="detail-header">
6944 ····<a·href="#crc32_combine/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">6944 ····<a·href="#crc32_combine/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
6945 ······<i·class="ri-link-m"·aria-hidden="true"></i>6945 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 6966, 18 lines modifiedOffset 6966, 18 lines modified
6966 ···························FirstCrc·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),6966 ···························FirstCrc·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),
6967 ···························SecondCrc·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),6967 ···························SecondCrc·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>(),
6968 ···························SecondSize·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>().</pre>6968 ···························SecondSize·::·<a·href="#t:non_neg_integer/0">non_neg_integer</a>().</pre>
  
6969 ······</div>6969 ······</div>
  
6970 <p>Combines·two·previously·computed·crc32·checksums.</p><p>This·computation·requires·the·size·of·the·data·object·for·the·second·checksum6970 <p>Combines·two·previously·computed·crc32·checksums.</p><p>This·computation·requires·the·size·of·the·data·object·for·the·second·checksum
6971 to·be·known.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="7488070086-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="7488070086-1">)</span><span·class="p">,</span><span·class="w">6971 to·be·known.</p><p>The·following·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="3301970174-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="3301970174-1">)</span><span·class="p">,</span><span·class="w">
6972 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="7488070086-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="7488070086-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Z</code>·as·this:<[·...·truncated·by·diffoscope;·len:·352,·SHA:·d1051bef7ef27ee87403e767d6aa97175600cdd35d4fbc5747cb91340b34749a·...·]-1">)</span><span·class="p">,</span><span·class="w">6972 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="3301970174-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="3301970174-2">)</span><span·class="p">.</span></code></pre><p>assigns·the·same·value·to·<code·class="inline">Z</code>·as·this:<[·...·truncated·by·diffoscope;·len:·352,·SHA:·f2deda3bfeb6965deb6c7400beb33c778168a2161b195e8647db14067e22d41a·...·]-1">)</span><span·class="p">,</span><span·class="w">
6973 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="2748451303-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="2748451303-2">)</span><span·class="p">,</span><span·class="w">6973 </span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32</span><span·class="p"·data-group-id="8579081175-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="8579081175-2">)</span><span·class="p">,</span><span·class="w">
6974 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32_combine</span><span·class="p"·data-group-id="2748451303-3">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="nf">iolist_size</span><span·class="p"·data-group-id="2748451303-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·4de7f7492c02cf2d0e7512ffbeb1f58dc58123a6691b94bcdfb5a00fef3dcd61·...·]-3">)</span><span·class="p">.</span></code></pre>6974 </span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">crc32_combine</span><span·class="p"·data-group-id="8579081175-3">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="nf">iolist_size</span><span·class="p"·data-group-id="8579081175-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·24d5af219a2b36ea4b78a9853469da1768afbaeb7920a2b657a503e83723dce2·...·]-3">)</span><span·class="p">.</span></code></pre>
6975 ··</section>6975 ··</section>
6976 </section>6976 </section>
6977 <section·class="detail"·id="md5/1">6977 <section·class="detail"·id="md5/1">
  
6978 ··<div·class="detail-header">6978 ··<div·class="detail-header">
6979 ····<a·href="#md5/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">6979 ····<a·href="#md5/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
6980 ······<i·class="ri-link-m"·aria-hidden="true"></i>6980 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 8129, 19 lines modifiedOffset 8129, 19 lines modified
8129 the·<code·class="inline">Info</code>·map·in·the·returned·result·will·contain·the·key·<code·class="inline">node_type</code>8129 the·<code·class="inline">Info</code>·map·in·the·returned·result·will·contain·the·key·<code·class="inline">node_type</code>
8130 associated·with·the·value·<code·class="inline">NodeTypeInfo</code>.·Currently·the·following·node·types8130 associated·with·the·value·<code·class="inline">NodeTypeInfo</code>.·Currently·the·following·node·types
8131 exist:</p><ul><li><p><strong><code·class="inline">visible</code></strong>·-·The·node·is·connected·to·the·node·of·the·calling·process8131 exist:</p><ul><li><p><strong><code·class="inline">visible</code></strong>·-·The·node·is·connected·to·the·node·of·the·calling·process
8132 through·an·ordinary·visible·connection.·That·is,·the·node·name·would·appear8132 through·an·ordinary·visible·connection.·That·is,·the·node·name·would·appear
8133 in·the·result·returned·by·<a·href="#nodes/0"><code·class="inline">nodes/0</code></a>.</p></li><li><p><strong><code·class="inline">hidden</code></strong>·-·The·node·is·connected·to·the·node·of·the·calling·process8133 in·the·result·returned·by·<a·href="#nodes/0"><code·class="inline">nodes/0</code></a>.</p></li><li><p><strong><code·class="inline">hidden</code></strong>·-·The·node·is·connected·to·the·node·of·the·calling·process
8134 through·a·hidden·connection.·That·is,·the·node·name·would·<em>not</em>·appear·in8134 through·a·hidden·connection.·That·is,·the·node·name·would·<em>not</em>·appear·in
8135 the·result·returned·by·<a·href="#nodes/0"><code·class="inline">nodes/0</code></a>.</p></li><li><p><strong><code·class="inline">this</code></strong>·-·This·is·the·node·of·the·calling·process.</p></li><li><p><strong><code·class="inline">known</code></strong>·-·The·node·is·not·connected·but·known·to·the·node·of·the·calling8135 the·result·returned·by·<a·href="#nodes/0"><code·class="inline">nodes/0</code></a>.</p></li><li><p><strong><code·class="inline">this</code></strong>·-·This·is·the·node·of·the·calling·process.</p></li><li><p><strong><code·class="inline">known</code></strong>·-·The·node·is·not·connected·but·known·to·the·node·of·the·calling
8136 process.</p></li></ul></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(a@localhost)1&gt;·</span><span·class="nf">nodes</span><span·class="p"·data-group-id="0244556317-1">(</span><span·class="p"·data-group-id="0244556317-2">[</span><span·class="ss">this</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">connected</span><span·class="p"·data-group-id="0244556317-2">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·407,·SHA:·23faa0fa2a4114eea99d599f938b97887a18e7f76a45a2e3efe44aef43559191·...·]-1">)</span><span·class="p">.</span><span·class="w">8136 process.</p></li></ul></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(a@localhost)1&gt;·</span><span·class="nf">nodes</span><span·class="p"·data-group-id="1249754264-1">(</span><span·class="p"·data-group-id="1249754264-2">[</span><span·class="ss">this</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">connected</span><span·class="p"·data-group-id="1249754264-2">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·407,·SHA:·d96777041fd19fc0314460cbce9d28d45e2307cc8d40a3f2509d34b3e05d5d48·...·]-1">)</span><span·class="p">.</span><span·class="w">
8137 </span><span·class="p"·data-group-id="0244556317-4">[</span><span·class="p"·data-group-id="0244556317-5">{</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="0244556317-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·d27ebf2660cdecdcfb8d634e5dbe400a923e263ccd9fe84a1fdd962734ffac07·...·]-5">}</span><span·class="p">,</span><span·class="w">8137 </span><span·class="p"·data-group-id="1249754264-4">[</span><span·class="p"·data-group-id="1249754264-5">{</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="1249754264-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·491fa0e035f484950f798f178cd731d69bf4a04120f224d146ea820cf8c5441e·...·]-5">}</span><span·class="p">,</span><span·class="w">
8138 ·</span><span·class="p"·data-group-id="0244556317-7">{</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="0244556317-8">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·281,·SHA:·4b9e7dee3b752cedecabccb0e757de5a6031a2179c88d63f53806ed685a55040·...·]-7">}</span><span·class="p">,</span><span·class="w">8138 ·</span><span·class="p"·data-group-id="1249754264-7">{</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="1249754264-8">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·281,·SHA:·20e19e9658af124ed822d3dd92ad600fc73dcb288493e2f9a2ad6663868ddb97·...·]-7">}</span><span·class="p">,</span><span·class="w">
8139 ·</span><span·class="p"·data-group-id="0244556317-9">{</span><span·class="ss">a@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="0244556317-10">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·335,·SHA:·6ec19fc1302cf442f89e2c71efde62c6a601124fe9221408d3b331bfade4f351·...·]-4">]</span><span·class="w">8139 ·</span><span·class="p"·data-group-id="1249754264-9">{</span><span·class="ss">a@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="1249754264-10">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·335,·SHA:·b3e090f81664405a177cf7b06f6a593f7b09ceac268e5c9206f775f45ba2b4cf·...·]-4">]</span><span·class="w">
8140 </span><span·class="p"·data-group-id="0244556317-11">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="0244556317-11">)</span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre>8140 </span><span·class="p"·data-group-id="1249754264-11">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="1249754264-11">)</span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre>
8141 ··</section>8141 ··</section>
8142 </section>8142 </section>
8143 <section·class="detail"·id="set_cookie/1">8143 <section·class="detail"·id="set_cookie/1">
  
8144 ··<div·class="detail-header">8144 ··<div·class="detail-header">
8145 ····<a·href="#set_cookie/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">8145 ····<a·href="#set_cookie/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
8146 ······<i·class="ri-link-m"·aria-hidden="true"></i>8146 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 8237, 17 lines modifiedOffset 8237, 17 lines modified
  
8237 ··········<pre·translate="no"><span·class="attribute">-spec</span>·abs(Float)·->·<a·href="#t:float/0">float</a>()·when·Float·::·<a·href="#t:float/0">float</a>();8237 ··········<pre·translate="no"><span·class="attribute">-spec</span>·abs(Float)·->·<a·href="#t:float/0">float</a>()·when·Float·::·<a·href="#t:float/0">float</a>();
8238 ·········(Int)·->·<a·href="#t:non_neg_integer/0">non_neg_integer</a>()·when·Int·::·<a·href="#t:integer/0">integer</a>().</pre>8238 ·········(Int)·->·<a·href="#t:non_neg_integer/0">non_neg_integer</a>()·when·Int·::·<a·href="#t:integer/0">integer</a>().</pre>
  
8239 ······</div>8239 ······</div>
  
8240 <p>Returns·an·integer·or·float·that·is·the·arithmetical·absolute·value·of·<code·class="inline">Float</code>8240 <p>Returns·an·integer·or·float·that·is·the·arithmetical·absolute·value·of·<code·class="inline">Float</code>
8241 or·<code·class="inline">Int</code>.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">abs</span><span·class="p"·data-group-id="0978908135-1">(</span><span·class="o">-</span><span·class="mf">3.33</span><span·class="p"·data-group-id="0978908135-1">)</span><span·class="p">.</span><span·class="w">8241 or·<code·class="inline">Int</code>.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">abs</span><span·class="p"·data-group-id="2237931187-1">(</span><span·class="o">-</span><span·class="mf">3.33</span><span·class="p"·data-group-id="2237931187-1">)</span><span·class="p">.</span><span·class="w">
8242 </span><span·class="mf">3.33</span><span·class="gp·unselectable">8242 </span><span·class="mf">3.33</span><span·class="gp·unselectable">
8243 &gt;·</span><span·class="nf">abs</span><span·class="p"·data-group-id="0978908135-2">(</span><span·class="o">-</span><span·class="mi">3</span><span·class="p"·data-group-id="0978908135-2">)</span><span·class="p">.</span><span·class="w">8243 &gt;·</span><span·class="nf">abs</span><span·class="p"·data-group-id="2237931187-2">(</span><span·class="o">-</span><span·class="mi">3</span><span·class="p"·data-group-id="2237931187-2">)</span><span·class="p">.</span><span·class="w">
8244 </span><span·class="mi">3</span></code></pre>8244 </span><span·class="mi">3</span></code></pre>
8245 ··</section>8245 ··</section>
8246 </section>8246 </section>
8247 <section·class="detail"·id="append_element/2">8247 <section·class="detail"·id="append_element/2">
  
8248 ··<div·class="detail-header">8248 ··<div·class="detail-header">
8249 ····<a·href="#append_element/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">8249 ····<a·href="#append_element/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 8269, 16 lines modifiedOffset 8269, 16 lines modified
8269 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append_element(Tuple1,·Term)·->·Tuple2·when·Tuple1·::·<a·href="#t:tuple/0">tuple</a>(),·Tuple2·::·<a·href="#t:tuple/0">tuple</a>(),·Term·::·<a·href="#t:term/0">term</a>().</pre>8269 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append_element(Tuple1,·Term)·->·Tuple2·when·Tuple1·::·<a·href="#t:tuple/0">tuple</a>(),·Tuple2·::·<a·href="#t:tuple/0">tuple</a>(),·Term·::·<a·href="#t:term/0">term</a>().</pre>
  
8270 ······</div>8270 ······</div>
  
8271 <p>Returns·a·new·tuple·that·has·one·element·more·than·<code·class="inline">Tuple1</code>,·and·contains·the8271 <p>Returns·a·new·tuple·that·has·one·element·more·than·<code·class="inline">Tuple1</code>,·and·contains·the
8272 elements·in·<code·class="inline">Tuple1</code>·followed·by·<code·class="inline">Term</code>·as·the·last·element.</p><p>Semantically·equivalent·to8272 elements·in·<code·class="inline">Tuple1</code>·followed·by·<code·class="inline">Term</code>·as·the·last·element.</p><p>Semantically·equivalent·to
8273 <a·href="#list_to_tuple/1"><code·class="inline">list_to_tuple(tuple_to_list(Tuple1)·++·[Term])</code></a>,·but·much8273 <a·href="#list_to_tuple/1"><code·class="inline">list_to_tuple(tuple_to_list(Tuple1)·++·[Term])</code></a>,·but·much
8274 faster.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">append_element</span><span·class="p"·data-group-id="4518025846-1">(</span><span·class="p"·data-group-id="4518025846-2">{</span><span·class="ss">one</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">two</span><span·class="p"·data-group-id="4518025846-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">three</span><span·class="p"·data-group-id="4518025846-1">)</span><span·class="p">.</span><span·class="w"> 
8275 </span><span·class="p"·data-group-id="4518025846-3">{</span><span·class="ss">one</span><span·class="p">,</span><span·class="ss">two</span><span·class="p">,</span><span·class="ss">three</span><span·class="p"·data-group-id="4518025846-3">}</span></code></pre>8274 faster.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">append_element</span><span·class="p"·data-group-id="5729359419-1"[·...·truncated·by·diffoscope;·len:·386,·SHA:·196636d396346f983910567be29c0243b25faf91e3c621f1edc355dcb611ced0·...·]>
 8275 </span><span·class="p"·data-group-id="5729359419-3">{</span><span·class="ss">one</span><span·class="p">,</span><span·class="ss">two</span><span·class="p">,</span><span·class="ss">three</span><span·class="p"·data-group-id="5729359419-3">}</span></code></pre>
8276 ··</section>8276 ··</section>
8277 </section>8277 </section>
8278 <section·class="detail"·id="atom_to_binary/1">8278 <section·class="detail"·id="atom_to_binary/1">
  
8279 ··<div·class="detail-header">8279 ··<div·class="detail-header">
8280 ····<a·href="#atom_to_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">8280 ····<a·href="#atom_to_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
8281 ······<i·class="ri-link-m"·aria-hidden="true"></i>8281 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Max diff block lines reached; 609671/640218 bytes (95.23%) of diff not shown.
17.8 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/escript_cmd.html
    
Offset 127, 57 lines modifiedOffset 127, 57 lines modified
  
127 <p>Run·a·script·written·in·Erlang.</p><h2·id="synopsis"·class="section-heading">127 <p>Run·a·script·written·in·Erlang.</p><h2·id="synopsis"·class="section-heading">
128 ··<a·href="#synopsis"·class="hover-link">128 ··<a·href="#synopsis"·class="hover-link">
129 ····<i·class="ri-link-m"·aria-hidden="true"></i>129 ····<i·class="ri-link-m"·aria-hidden="true"></i>
130 ··</a>130 ··</a>
131 ··<span·class="text">Synopsis</span>131 ··<span·class="text">Synopsis</span>
132 </h2>132 </h2>
133 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">script</span><span·class="o">-</span><span·class="ss">name</span><span·class="w">·</span><span·class="p"·data-group-id="3709770881-1">[</span><span·class="ss">arg1</span><span·class="w">·</span><span·class="ss">arg2</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3709770881-1">]</span></code></pre><h2·id="description"·class="section-heading">133 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">script</span><span·class="o">-</span><span·class="ss">name</span><span·class="w">·</span><span·class="p"·data-group-id="7237939492-1">[</span><span·class="ss">arg1</span><span·class="w">·</span><span·class="ss">arg2</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7237939492-1">]</span></code></pre><h2·id="description"·class="section-heading">
134 ··<a·href="#description"·class="hover-link">134 ··<a·href="#description"·class="hover-link">
135 ····<i·class="ri-link-m"·aria-hidden="true"></i>135 ····<i·class="ri-link-m"·aria-hidden="true"></i>
136 ··</a>136 ··</a>
137 ··<span·class="text">Description</span>137 ··<span·class="text">Description</span>
138 </h2>138 </h2>
139 <p><code·class="inline">escript</code>·provides·support·for·running·short·Erlang·programs·without·having·to139 <p><code·class="inline">escript</code>·provides·support·for·running·short·Erlang·programs·without·having·to
140 compile·them·first,·and·an·easy·way·to·retrieve·the·command-line·arguments.140 compile·them·first,·and·an·easy·way·to·retrieve·the·command-line·arguments.
141 <code·class="inline">escript</code>s·are·created·by·either·writing·them·by·hand·or·using·<a·href="../../../lib/stdlib-6.2/doc/html/escript.html#create/2"><code·class="inline">escript:create/2</code></a>.</p><p>escripts·are·run·by·directly·invoking·them·(does·not·work·on·Windows):</p><pre><code·class="text">script-name·[arg1·arg2...]</code></pre><p>or·by·calling·the·<code·class="inline">escript</code>·program·(works·on·all·platforms):</p><pre><code·class="text">escript·[escript-flags]·script-name.escript·[arg1·arg2...]</code></pre><p>For·example:</p><pre><code·class="text">$·chmod·u+x·factorial141 <code·class="inline">escript</code>s·are·created·by·either·writing·them·by·hand·or·using·<a·href="../../../lib/stdlib-6.2/doc/html/escript.html#create/2"><code·class="inline">escript:create/2</code></a>.</p><p>escripts·are·run·by·directly·invoking·them·(does·not·work·on·Windows):</p><pre><code·class="text">script-name·[arg1·arg2...]</code></pre><p>or·by·calling·the·<code·class="inline">escript</code>·program·(works·on·all·platforms):</p><pre><code·class="text">escript·[escript-flags]·script-name.escript·[arg1·arg2...]</code></pre><p>For·example:</p><pre><code·class="text">$·chmod·u+x·factorial
142 $·cat·factorial</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="ch">#!/usr/bin/env·escript142 $·cat·factorial</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="ch">#!/usr/bin/env·escript
143 </span><span·class="c1">%%·-*-·erlang·-*-</span><span·class="w">143 </span><span·class="c1">%%·-*-·erlang·-*-</span><span·class="w">
144 </span><span·class="c1">%%!·-sname·factorial·-mnesia·debug·verbose</span><span·class="w">144 </span><span·class="c1">%%!·-sname·factorial·-mnesia·debug·verbose</span><span·class="w">
145 </span><span·class="nf">main</span><span·class="p"·data-group-id="7593439992-1">(</span><span·class="p"·data-group-id="7593439992-2">[</span><span·class="n">String</span><span·class="p"·data-group-id="7593439992-2">]</span><span·class="p"·data-group-id="7593439992-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">145 </span><span·class="nf">main</span><span·class="p"·data-group-id="9698906607-1">(</span><span·class="p"·data-group-id="9698906607-2">[</span><span·class="n">String</span><span·class="p"·data-group-id="9698906607-2">]</span><span·class="p"·data-group-id="9698906607-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
146 ····</span><span·class="k">try</span><span·class="w">146 ····</span><span·class="k">try</span><span·class="w">
147 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list_to_integer</span><span·class="p"·data-group-id="7593439992-3">(</span><span·class="n">String</span><span·class="p"·data-group-id="7593439992-3">)</span><span·class="p">,</span><span·class="w">147 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list_to_integer</span><span·class="p"·data-group-id="9698906607-3">(</span><span·class="n">String</span><span·class="p"·data-group-id="9698906607-3">)</span><span·class="p">,</span><span·class="w">
148 ········</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="7593439992-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="7593439992-4">)</span><span·class="p">,</span><span·class="w">148 ········</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="9698906607-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="9698906607-4">)</span><span·class="p">,</span><span·class="w">
149 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7593439992-5">(</span><span·class="s">&quot;factorial·</span><span·class="si">~w</span><span·class="s">·=·</span><span·class="si">~w</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7593439[·...·truncated·by·diffoscope;·len:·181,·SHA:·320e82188e4ec5fcec9f43deea64d0a5d686ea72e3b6457bc38751d2fe15d6db·...·]-5">)</span><span·class="w">149 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9698906607-5">(</span><span·class="s">&quot;factorial·</span><span·class="si">~w</span><span·class="s">·=·</span><span·class="si">~w</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9698906[·...·truncated·by·diffoscope;·len:·181,·SHA:·fb81504d28d83a3466e7c85fd27dfb49dc9cad6a272aa811e89a13b4387433c6·...·]-5">)</span><span·class="w">
150 ····</span><span·class="k">catch</span><span·class="w">150 ····</span><span·class="k">catch</span><span·class="w">
151 ········</span><span·class="p">_</span><span·class="p">:</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 ········</span><span·class="p">_</span><span·class="p">:</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
152 ············</span><span·class="nf">usage</span><span·class="p"·data-group-id="7593439992-7">(</span><span·class="p"·data-group-id="7593439992-7">)</span><span·class="w">152 ············</span><span·class="nf">usage</span><span·class="p"·data-group-id="9698906607-7">(</span><span·class="p"·data-group-id="9698906607-7">)</span><span·class="w">
153 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">153 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
154 </span><span·class="nf">main</span><span·class="p"·data-group-id="7593439992-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="7593439992-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 </span><span·class="nf">main</span><span·class="p"·data-group-id="9698906607-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="9698906607-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
155 ····</span><span·class="nf">usage</span><span·class="p"·data-group-id="7593439992-9">(</span><span·class="p"·data-group-id="7593439992-9">)</span><span·class="p">.</span><span·class="w">155 ····</span><span·class="nf">usage</span><span·class="p"·data-group-id="9698906607-9">(</span><span·class="p"·data-group-id="9698906607-9">)</span><span·class="p">.</span><span·class="w">
  
156 </span><span·class="nf">usage</span><span·class="p"·data-group-id="7593439992-10">(</span><span·class="p"·data-group-id="7593439992-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 </span><span·class="nf">usage</span><span·class="p"·data-group-id="9698906607-10">(</span><span·class="p"·data-group-id="9698906607-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7593439992-11">(</span><span·class="s">&quot;usage:·factorial·integer\n&quot;</span><span·class="p"·data-group-id="7593439992-11">)</span><span·class="p">,</span><span·class="w">157 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9698906607-11">(</span><span·class="s">&quot;usage:·factorial·integer\n&quot;</span><span·class="p"·data-group-id="9698906607-11">)</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="nf">halt</span><span·class="p"·data-group-id="7593439992-12">(</span><span·class="mi">1</span><span·class="p"·data-group-id="7593439992-12">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nf">halt</span><span·class="p"·data-group-id="9698906607-12">(</span><span·class="mi">1</span><span·class="p"·data-group-id="9698906607-12">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">fac</span><span·class="p"·data-group-id="7593439992-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7593439992-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">159 </span><span·class="nf">fac</span><span·class="p"·data-group-id="9698906607-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9698906607-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
160 </span><span·class="nf">fac</span><span·class="p"·data-group-id="7593439992-14">(</span><span·class="n">N</span><span·class="p"·data-group-id="7593439992-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·c[·...·truncated·by·diffoscope;·len:·212,·SHA:·90edfcfea69997b944dd016d502c57c249580c65ed05fd2391bb4fe8a969909e·...·]-15">)</span><span·class="p">.</span></code></pre><pre><code·class="text">$·./factorial·5160 </span><span·class="nf">fac</span><span·class="p"·data-group-id="9698906607-14">(</span><span·class="n">N</span><span·class="p"·data-group-id="9698906607-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">*</span><span·c[·...·truncated·by·diffoscope;·len:·212,·SHA:·dce9a64bead81179a30c1bd9c1c048c6abe053e2e92803dd4288831ec476f4e1·...·]-15">)</span><span·class="p">.</span></code></pre><pre><code·class="text">$·./factorial·5
161 factorial·5·=·120161 factorial·5·=·120
162 $·./factorial162 $·./factorial
163 usage:·factorial·integer163 usage:·factorial·integer
164 $·./factorial·five164 $·./factorial·five
165 usage:·factorial·integer</code></pre><p>The·header·of·the·Erlang·script·in·the·example·differs·from·a·normal·Erlang165 usage:·factorial·integer</code></pre><p>The·header·of·the·Erlang·script·in·the·example·differs·from·a·normal·Erlang
166 module.·The·first·line·is·intended·to·be·the·interpreter·line,·which·invokes166 module.·The·first·line·is·intended·to·be·the·interpreter·line,·which·invokes
167 <code·class="inline">escript</code>.</p><p>However,·if·you·invoke·the·<code·class="inline">escript</code>·as·follows,·the·contents·of·the·first·line167 <code·class="inline">escript</code>.</p><p>However,·if·you·invoke·the·<code·class="inline">escript</code>·as·follows,·the·contents·of·the·first·line
168 do·not·matter,·but·it·cannot·contain·Erlang·code·as·it·will·be·ignored:</p><pre><code·class="text">$·escript·factorial·5</code></pre><p>The·second·line·in·the·example·contains·an·optional·directive·to·the·<code·class="inline">Emacs</code>168 do·not·matter,·but·it·cannot·contain·Erlang·code·as·it·will·be·ignored:</p><pre><code·class="text">$·escript·factorial·5</code></pre><p>The·second·line·in·the·example·contains·an·optional·directive·to·the·<code·class="inline">Emacs</code>
169 editor,·which·causes·it·to·enter·the·major·mode·for·editing·Erlang·source·files.169 editor,·which·causes·it·to·enter·the·major·mode·for·editing·Erlang·source·files.
170 If·the·directive·is·present,·it·must·be·located·on·the·second·line.</p><p>If·a·comment·selecting·the·<a·href="../../../lib/stdlib-6.2/doc/html/epp.html#encoding">encoding</a>·exists,·it·can·be170 If·the·directive·is·present,·it·must·be·located·on·the·second·line.</p><p>If·a·comment·selecting·the·<a·href="../../../lib/stdlib-6.2/doc/html/epp.html#encoding">encoding</a>·exists,·it·can·be
171 located·on·the·second·line.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·encoding·specified·by·the·above·mentioned·comment·applies·to·the·script171 located·on·the·second·line.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·encoding·specified·by·the·above·mentioned·comment·applies·to·the·script
172 itself.·The·encoding·of·the·I/O-server,·however,·must·be·set·explicitly·as172 itself.·The·encoding·of·the·I/O-server,·however,·must·be·set·explicitly·as
173 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">setopts</span><span·class="p"·data-group-id="7546670935-1">(</span><span·class="p"·data-group-id="7546670935-2">[</span><span·class="p"·data-group-id="7546670935-3">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·129,·SHA:·2f0ff39c83f2960c5162d3c9ad73025b3ec99bba41aaa4f5d7e9ebf9cc2f8e1a·...·]-1">)</span></code></pre><p>The·default·encoding·of·the·I/O-server·for173 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">setopts</span><span·class="p"·data-group-id="8531392056-1">(</span><span·class="p"·data-group-id="8531392056-2">[</span><span·class="p"·data-group-id="8531392056-3">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·129,·SHA:·addd25083f59204bc95b40d28191dee2243af812ebd617be98605c2719680411·...·]-1">)</span></code></pre><p>The·default·encoding·of·the·I/O-server·for
174 <a·href="../../../lib/stdlib-6.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>·is·<code·class="inline">unicode</code>·if·its·supported.·(see174 <a·href="../../../lib/stdlib-6.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>·is·<code·class="inline">unicode</code>·if·its·supported.·(see
175 section175 section
176 <a·href="../../../lib/stdlib-6.2/doc/html/unicode_usage.html#unicode_options_summary">Summary·of·Options</a>)·in176 <a·href="../../../lib/stdlib-6.2/doc/html/unicode_usage.html#unicode_options_summary">Summary·of·Options</a>)·in
177 the·STDLIB·User's·Guide.</p></section><p>On·the·third·line·(or·second·line·depending·on·the·presence·of·the·Emacs177 the·STDLIB·User's·Guide.</p></section><p>On·the·third·line·(or·second·line·depending·on·the·presence·of·the·Emacs
178 directive),·arguments·can·be·specified·to·the·emulator,·for·example:</p><pre><code·class="text">%%!·-sname·factorial·-mnesia·debug·verbose</code></pre><p>Such·an·argument·line·must·start·with·<code·class="inline">%%!</code>·and·the·remaining·line·is178 directive),·arguments·can·be·specified·to·the·emulator,·for·example:</p><pre><code·class="text">%%!·-sname·factorial·-mnesia·debug·verbose</code></pre><p>Such·an·argument·line·must·start·with·<code·class="inline">%%!</code>·and·the·remaining·line·is
179 interpreted·as·arguments·to·the·emulator.</p><p>If·you·know·the·location·of·the·<code·class="inline">escript</code>·executable,·the·first·line·can179 interpreted·as·arguments·to·the·emulator.</p><p>If·you·know·the·location·of·the·<code·class="inline">escript</code>·executable,·the·first·line·can
180 directly·give·the·path·to·<code·class="inline">escript</code>,·for·example:</p><pre><code·class="text">#!/usr/local/bin/escript</code></pre><p>As·any·other·type·of·scripts,·Erlang·scripts·do·not·work·on·Unix·platforms·if180 directly·give·the·path·to·<code·class="inline">escript</code>,·for·example:</p><pre><code·class="text">#!/usr/local/bin/escript</code></pre><p>As·any·other·type·of·scripts,·Erlang·scripts·do·not·work·on·Unix·platforms·if
Offset 188, 23 lines modifiedOffset 188, 23 lines modified
188 arguments·specified·to·the·script·(not·changed·or·interpreted·in·any·way).</p><p>If·the·<code·class="inline">main/1</code>·function·in·the·script·returns·successfully,·the·exit·status·for188 arguments·specified·to·the·script·(not·changed·or·interpreted·in·any·way).</p><p>If·the·<code·class="inline">main/1</code>·function·in·the·script·returns·successfully,·the·exit·status·for
189 the·script·is·<code·class="inline">0</code>.·If·an·exception·is·generated·during·execution,·a·short189 the·script·is·<code·class="inline">0</code>.·If·an·exception·is·generated·during·execution,·a·short
190 message·is·printed·and·the·script·terminates·with·exit·status·<code·class="inline">127</code>.</p><p>To·return·your·own·non-zero·exit·code,·call·<a·href="erlang.html#halt/1"><code·class="inline">halt(ExitCode)</code></a>,·for190 message·is·printed·and·the·script·terminates·with·exit·status·<code·class="inline">127</code>.</p><p>To·return·your·own·non-zero·exit·code,·call·<a·href="erlang.html#halt/1"><code·class="inline">halt(ExitCode)</code></a>,·for
191 example:</p><pre><code·class="text">halt(1).</code></pre><p>To·retrieve·the·pathname·of·the·script,·call·<a·href="../../../lib/stdlib-6.2/doc/html/escript.html#script_name/0"><code·class="inline">escript:script_name/0</code></a>·from·your191 example:</p><pre><code·class="text">halt(1).</code></pre><p>To·retrieve·the·pathname·of·the·script,·call·<a·href="../../../lib/stdlib-6.2/doc/html/escript.html#script_name/0"><code·class="inline">escript:script_name/0</code></a>·from·your
192 script·(the·pathname·is·usually,·but·not·always,·absolute).</p><p>If·the·file·contains·source·code·(as·in·the·example·above),·it·is·processed·by192 script·(the·pathname·is·usually,·but·not·always,·absolute).</p><p>If·the·file·contains·source·code·(as·in·the·example·above),·it·is·processed·by
193 the·<a·href="../../../lib/stdlib-6.2/doc/html/epp.html"><code·class="inline">epp</code></a>·preprocessor.·This·means·that·you,·for·example,·can·use·predefined193 the·<a·href="../../../lib/stdlib-6.2/doc/html/epp.html"><code·class="inline">epp</code></a>·preprocessor.·This·means·that·you,·for·example,·can·use·predefined
194 macros·(such·as·<code·class="inline">?MODULE</code>)·and·include·directives·like·the·<code·class="inline">-include_lib</code>194 macros·(such·as·<code·class="inline">?MODULE</code>)·and·include·directives·like·the·<code·class="inline">-include_lib</code>
195 directive.·For·example,·use</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1068890825-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1068890825-1">)</span><span·class="p">.</span></code></pre><p>to·include·the·record·definitions·for·the·records·used·by·function195 directive.·For·example,·use</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="2443034076-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="2443034076-1">)</span><span·class="p">.</span></code></pre><p>to·include·the·record·definitions·for·the·records·used·by·function
196 <a·href="../../../lib/kernel-10.2.2/doc/html/file.html#read_link_info/1"><code·class="inline">file:read_link_info/1</code></a>.·You·can·also·select·encoding·by·including·an·encoding196 <a·href="../../../lib/kernel-10.2.2/doc/html/file.html#read_link_info/1"><code·class="inline">file:read_link_info/1</code></a>.·You·can·also·select·encoding·by·including·an·encoding
197 comment·here,·but·if·a·valid·encoding·comment·exists·on·the·second·line,·it197 comment·here,·but·if·a·valid·encoding·comment·exists·on·the·second·line,·it
198 takes·precedence.</p><p>The·script·is·checked·for·syntactic·and·semantic·correctness·before·it·is·run.198 takes·precedence.</p><p>The·script·is·checked·for·syntactic·and·semantic·correctness·before·it·is·run.
199 If·there·are·warnings·(such·as·unused·variables),·they·are·printed·and·the199 If·there·are·warnings·(such·as·unused·variables),·they·are·printed·and·the
200 script·will·still·be·run.·If·there·are·errors,·they·are·printed·and·the·script200 script·will·still·be·run.·If·there·are·errors,·they·are·printed·and·the·script
201 will·not·be·run·and·its·exit·status·is·<code·class="inline">127</code>.</p><p>Both·the·module·declaration·and·the·export·declaration·of·the·<code·class="inline">main/1</code>·function201 will·not·be·run·and·its·exit·status·is·<code·class="inline">127</code>.</p><p>Both·the·module·declaration·and·the·export·declaration·of·the·<code·class="inline">main/1</code>·function
202 are·optional.</p><p>By·default,·the·script·will·be·compiled·by·the·Erlang·compiler.</p><p>It·is·possible·to·force·it·to·be·interpreted·by·including·the·following·line202 are·optional.</p><p>By·default,·the·script·will·be·compiled·by·the·Erlang·compiler.</p><p>It·is·possible·to·force·it·to·be·interpreted·by·including·the·following·line
203 somewhere·in·the·script·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">mode</span><span·class="p"·data-group-id="0357265978-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="0357265978-1">)</span><span·class="p">.</span></code></pre><p>Execution·of·interpreted·code·is·slower·than·compiled·code,·and·some·language203 somewhere·in·the·script·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">mode</span><span·class="p"·data-group-id="9071478679-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="9071478679-1">)</span><span·class="p">.</span></code></pre><p>Execution·of·interpreted·code·is·slower·than·compiled·code,·and·some·language
204 constructs·will·not·work,·but·there·is·no·requirement·for·the·Erlang·compiler204 constructs·will·not·work,·but·there·is·no·requirement·for·the·Erlang·compiler
205 application·to·be·available.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·27·the·script·would·be·interpreted·by·default.</p></section><h2·id="precompiled-escripts"·class="section-heading">205 application·to·be·available.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·Erlang/OTP·27·the·script·would·be·interpreted·by·default.</p></section><h2·id="precompiled-escripts"·class="section-heading">
206 ··<a·href="#precompiled-escripts"·class="hover-link">206 ··<a·href="#precompiled-escripts"·class="hover-link">
207 ····<i·class="ri-link-m"·aria-hidden="true"></i>207 ····<i·class="ri-link-m"·aria-hidden="true"></i>
208 ··</a>208 ··</a>
209 ··<span·class="text">Precompiled·escripts</span>209 ··<span·class="text">Precompiled·escripts</span>
210 </h2>210 </h2>
37.0 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/garbagecollection.html
    
Offset 133, 33 lines modifiedOffset 133, 33 lines modified
133 </h2>133 </h2>
134 <p>Each·Erlang·process·has·its·own·stack·and·heap·which·are·allocated·in·the·same·memory·block·and·grow·towards·each·other.·When·the·stack·and·the·heap·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/beam_emu.c#L387">meet</a>,·the·garbage·collector·is·triggered·and·memory·is·reclaimed.·If·not·enough·memory·was·reclaimed,·the·heap·will·grow.</p><h3·id="creating-data"·class="section-heading">134 <p>Each·Erlang·process·has·its·own·stack·and·heap·which·are·allocated·in·the·same·memory·block·and·grow·towards·each·other.·When·the·stack·and·the·heap·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/beam_emu.c#L387">meet</a>,·the·garbage·collector·is·triggered·and·memory·is·reclaimed.·If·not·enough·memory·was·reclaimed,·the·heap·will·grow.</p><h3·id="creating-data"·class="section-heading">
135 ··<a·href="#creating-data"·class="hover-link">135 ··<a·href="#creating-data"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Creating·Data</span>138 ··<span·class="text">Creating·Data</span>
139 </h3>139 </h3>
140 <p>Terms·are·created·on·the·heap·by·evaluating·expressions.·There·are·two·major·types·of·terms:·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_term.h#L88-L97">immediate·terms</a>·which·require·no·heap·space·(small·integers,·atoms,·pids,·port·ids·etc)·and·cons·or·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_term.h#L106-L120">boxed·terms</a>·(tuple,·big·num,·binaries·etc)·that·do·require·heap·space.·Immediate·terms·do·not·need·any·heap·space·because·they·are·embedded·into·the·containing·structure.</p><p>Let's·look·at·an·example·that·returns·a·tuple·with·the·newly·created·data.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">data</span><span·class="p"·data-group-id="8472907277-1">(</span><span·class="n">Foo</span><span·class="p"·data-group-id="8472907277-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 <p>Terms·are·created·on·the·heap·by·evaluating·expressions.·There·are·two·major·types·of·terms:·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_term.h#L88-L97">immediate·terms</a>·which·require·no·heap·space·(small·integers,·atoms,·pids,·port·ids·etc)·and·cons·or·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_term.h#L106-L120">boxed·terms</a>·(tuple,·big·num,·binaries·etc)·that·do·require·heap·space.·Immediate·terms·do·not·need·any·heap·space·because·they·are·embedded·into·the·containing·structure.</p><p>Let's·look·at·an·example·that·returns·a·tuple·with·the·newly·created·data.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">data</span><span·class="p"·data-group-id="2521439592-1">(</span><span·class="n">Foo</span><span·class="p"·data-group-id="2521439592-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ···</span><span·class="n">Cons</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8472907277-2">[</span><span·class="mi">42</span><span·class="p">|</span><span·class="n">Foo</span><span·class="p"·data-group-id="8472907277-2">]</span><span·class="p">,</span><span·class="w">141 ···</span><span·class="n">Cons</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2521439592-2">[</span><span·class="mi">42</span><span·class="p">|</span><span·class="n">Foo</span><span·class="p"·data-group-id="2521439592-2">]</span><span·class="p">,</span><span·class="w">
142 ···</span><span·class="n">Literal</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8472907277-3">{</span><span·class="ss">text</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;hello·world!&quot;</span><span·class="p"·data-group-id="8472907277-3">}</span><span·class="p">,</span><span·class="w">142 ···</span><span·class="n">Literal</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2521439592-3">{</span><span·class="ss">text</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;hello·world!&quot;</span><span·class="p"·data-group-id="2521439592-3">}</span><span·class="p">,</span><span·class="w">
143 ···</span><span·class="p"·data-group-id="8472907277-4">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cons</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Literal</span><span·class="p"·data-group-id="8472907277-4">}</span><span·class="p">.</span></code></pre><p>In·this·example·we·first·create·a·new·cons·cell·with·an·integer·and·a·tuple·with·some·text.·Then·a·tuple·of·size·three·wrapping·the·other·values·with·an·atom·tag·is·created·and·returned.</p><p>On·the·heap·tuples·require·a·word·size·for·each·of·its·elements·as·well·as·for·the·header.·Cons·cells·always·require·two·words.·Adding·these·things·together,·we·get·seven·words·for·the·tuples·and·26·words·for·the·cons·cells.·The·string·<code·class="inline">&quot;hello·world!&quot;</code>·is·a·list·of·cons·cells·and·thus·requires·24·words.·The·atom·<code·class="inline">tag</code>·and·the·integer·<code·class="inline">42</code>·do·not·require·any·additional·heap·memory·since·it·is·an·<em>immediate</em>.·Adding·all·the·terms·together,·the·heap·space·required·in·this·example·should·be·33·words.</p><p>Compiling·this·code·to·beam·assembly·(<code·class="inline">erlc·-S</code>)·shows·exactly·what·is·happening.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">143 ···</span><span·class="p"·data-group-id="2521439592-4">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cons</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Literal</span><span·class="p"·data-group-id="2521439592-4">}</span><span·class="p">.</span></code></pre><p>In·this·example·we·first·create·a·new·cons·cell·with·an·integer·and·a·tuple·with·some·text.·Then·a·tuple·of·size·three·wrapping·the·other·values·with·an·atom·tag·is·created·and·returned.</p><p>On·the·heap·tuples·require·a·word·size·for·each·of·its·elements·as·well·as·for·the·header.·Cons·cells·always·require·two·words.·Adding·these·things·together,·we·get·seven·words·for·the·tuples·and·26·words·for·the·cons·cells.·The·string·<code·class="inline">&quot;hello·world!&quot;</code>·is·a·list·of·cons·cells·and·thus·requires·24·words.·The·atom·<code·class="inline">tag</code>·and·the·integer·<code·class="inline">42</code>·do·not·require·any·additional·heap·memory·since·it·is·an·<em>immediate</em>.·Adding·all·the·terms·together,·the·heap·space·required·in·this·example·should·be·33·words.</p><p>Compiling·this·code·to·beam·assembly·(<code·class="inline">erlc·-S</code>)·shows·exactly·what·is·happening.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p"·data-group-id="8433536588-1">{</span><span·class="ss">test_heap</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8433536588-1">}</span><span·class="p">.</span><span·class="w">144 </span><span·class="p"·data-group-id="7645168808-1">{</span><span·class="ss">test_heap</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7645168808-1">}</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p"·data-group-id="8433536588-2">{</span><span·class="ss">put_list</span><span·class="p">,</span><span·class="p"·data-group-id="8433536588-3">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="8433536588-3"[·...·truncated·by·diffoscope;·len:·457,·SHA:·881efc447a9d7280ab5df43be0f4386965fe7a103fb43dfc20a84e937d0eb705·...·]8-2">}</span><span·class="p">.</span><span·class="w">145 </span><span·class="p"·data-group-id="7645168808-2">{</span><span·class="ss">put_list</span><span·class="p">,</span><span·class="p"·data-group-id="7645168808-3">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="7645168808-3"[·...·truncated·by·diffoscope;·len:·457,·SHA:·20e21ff2ccc2d0e915e68f3c6873dd1aa27076f14a7c88ebc0d0614fd63d4ec2·...·]8-2">}</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="8433536588-6">{</span><span·class="ss">put_tuple</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-group-id="8433536588-7">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·67d091da9e1c52bb01fad5ca35dbd13d367286b074877681e252a795314da6ca·...·]8-6">}</span><span·class="p">.</span><span·class="w">146 </span><span·class="p"·data-group-id="7645168808-6">{</span><span·class="ss">put_tuple</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-group-id="7645168808-7">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·ea7994e0de3b5200504a1f78034f312ad61619bf81a18ec58c5344f8e6b6113c·...·]8-6">}</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="8433536588-8">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="8433536588-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">tag</span><span·class="p"·data-group-id="8433536588-9">}</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·8c1c67690ae5e14acaffcd01c18f69174237b940d2766b55a0473c69667fc392·...·]8-8">}</span><span·class="p">.</span><span·class="w">147 </span><span·class="p"·data-group-id="7645168808-8">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="7645168808-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">tag</span><span·class="p"·data-group-id="7645168808-9">}</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·fa49a9469c00d3cfc0ad8a20cd6e9ea916f510fe80f1fa717cbdc1a521d9283e·...·]8-8">}</span><span·class="p">.</span><span·class="w">
148 </span><span·class="p"·data-group-id="8433536588-10">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="8433536588-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8433536588-11">}</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·a94811b5c05bbaa44b4cf95517a0823be4350b7a4aab1590f30a9a5dc05fd842·...·]8-10">}</span><span·class="p">.</span><span·class="w">148 </span><span·class="p"·data-group-id="7645168808-10">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="7645168808-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7645168808-11">}</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·248e0fb51dd67f3edb2e3498d83b34cff027ee810e84a3a12d4a65e40b3c76b5·...·]8-10">}</span><span·class="p">.</span><span·class="w">
149 </span><span·class="p"·data-group-id="8433536588-12">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="8433536588-13">{</span><span·class="ss">literal</span><span·class="p">,</span><span·class="p"·data-group-id="8433536588-14">{</span><span·class="ss">te[·...·truncated·by·diffoscope;·len:·228,·SHA:·ab3108cca759bad14f456dd8d32a0021b5233bfb6ca16ec8afc5c4563af4f940·...·]8-12">}</span><span·class="p">.</span><span·class="w">149 </span><span·class="p"·data-group-id="7645168808-12">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="7645168808-13">{</span><span·class="ss">literal</span><span·class="p">,</span><span·class="p"·data-group-id="7645168808-14">{</span><span·class="ss">te[·...·truncated·by·diffoscope;·len:·228,·SHA:·732f8a86f36294bcdf1b4716ce64b7dcd291d3238dfcf588dac933e4b5c7f687·...·]8-12">}</span><span·class="p">.</span><span·class="w">
150 </span><span·class="ss">return</span><span·class="p">.</span></code></pre><p>Looking·at·the·assembler·code·we·can·see·three·things:·The·heap·requirement·in·this·function·turns·out·to·be·only·six·words,·as·seen·by·the·<code·class="inline">{test_heap,6,1}</code>·instruction.·All·the·allocations·are·combined·to·a·single·instruction.·The·bulk·of·the·data·<code·class="inline">{text,·&quot;hello·world!&quot;}</code>·is·a·<em>literal</em>.·Literals,·sometimes·referred·to·as·constants,·are·not·allocated·in·the·function·since·they·are·a·part·of·the·module·and·allocated·at·load·time.</p><p>If·there·is·not·enough·space·available·on·the·heap·to·satisfy·the·<code·class="inline">test_heap</code>·instructions·request·for·memory,·then·a·garbage·collection·is·initiated.·It·may·happen·immediately·in·the·<code·class="inline">test_heap</code>·instruction,·or·it·can·be·delayed·until·a·later·time·depending·on·what·state·the·process·is·in.·If·the·garbage·collection·is·delayed,·any·memory·needed·will·be·allocated·in·heap·fragments.·Heap·fragments·are·extra·memory·blocks·that·are·a·part·of·the·young·heap,·but·are·not·allocated·in·the·contiguous·area·where·terms·normally·reside.·See·<a·href="#the-young-heap">The·young·heap</a>·for·more·details.</p><h3·id="the-collector"·class="section-heading">150 </span><span·class="ss">return</span><span·class="p">.</span></code></pre><p>Looking·at·the·assembler·code·we·can·see·three·things:·The·heap·requirement·in·this·function·turns·out·to·be·only·six·words,·as·seen·by·the·<code·class="inline">{test_heap,6,1}</code>·instruction.·All·the·allocations·are·combined·to·a·single·instruction.·The·bulk·of·the·data·<code·class="inline">{text,·&quot;hello·world!&quot;}</code>·is·a·<em>literal</em>.·Literals,·sometimes·referred·to·as·constants,·are·not·allocated·in·the·function·since·they·are·a·part·of·the·module·and·allocated·at·load·time.</p><p>If·there·is·not·enough·space·available·on·the·heap·to·satisfy·the·<code·class="inline">test_heap</code>·instructions·request·for·memory,·then·a·garbage·collection·is·initiated.·It·may·happen·immediately·in·the·<code·class="inline">test_heap</code>·instruction,·or·it·can·be·delayed·until·a·later·time·depending·on·what·state·the·process·is·in.·If·the·garbage·collection·is·delayed,·any·memory·needed·will·be·allocated·in·heap·fragments.·Heap·fragments·are·extra·memory·blocks·that·are·a·part·of·the·young·heap,·but·are·not·allocated·in·the·contiguous·area·where·terms·normally·reside.·See·<a·href="#the-young-heap">The·young·heap</a>·for·more·details.</p><h3·id="the-collector"·class="section-heading">
151 ··<a·href="#the-collector"·class="hover-link">151 ··<a·href="#the-collector"·class="hover-link">
152 ····<i·class="ri-link-m"·aria-hidden="true"></i>152 ····<i·class="ri-link-m"·aria-hidden="true"></i>
153 ··</a>153 ··</a>
154 ··<span·class="text">The·collector</span>154 ··<span·class="text">The·collector</span>
155 </h3>155 </h3>
156 <p>Erlang·has·a·copying·semi-space·garbage·collector.·This·means·that·when·doing·a·garbage·collection,·the·terms·are·copied·from·one·distinct·area,·called·the·<em>from·space</em>,·to·a·new·clean·area,·called·the·<em>to·space</em>.·The·collector·starts·by·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1980">scanning·the·root-set</a>·(stack,·registers,·etc).</p><p><img·src="assets/gc-start.png"·alt="Garbage·collection:·initial·values"/></p><p>It·follows·all·the·pointers·from·the·root-set·to·the·heap·and·copies·each·term·word·by·word·to·the·<em>to·space</em>.</p><p>After·the·header·word·has·been·copied·a·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.h#L45-L46"><em>move·marker</em></a>·is·destructively·placed·in·it·pointing·to·the·term·in·the·<em>to·space</em>.·Any·other·term·that·points·to·the·already·moved·term·will·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1125">see·this·move·marker</a>·and·copy·the·referring·pointer·instead.·For·example,·if·the·have·the·following·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="2708023374-1">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2708023374-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 <p>Erlang·has·a·copying·semi-space·garbage·collector.·This·means·that·when·doing·a·garbage·collection,·the·terms·are·copied·from·one·distinct·area,·called·the·<em>from·space</em>,·to·a·new·clean·area,·called·the·<em>to·space</em>.·The·collector·starts·by·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1980">scanning·the·root-set</a>·(stack,·registers,·etc).</p><p><img·src="assets/gc-start.png"·alt="Garbage·collection:·initial·values"/></p><p>It·follows·all·the·pointers·from·the·root-set·to·the·heap·and·copies·each·term·word·by·word·to·the·<em>to·space</em>.</p><p>After·the·header·word·has·been·copied·a·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.h#L45-L46"><em>move·marker</em></a>·is·destructively·placed·in·it·pointing·to·the·term·in·the·<em>to·space</em>.·Any·other·term·that·points·to·the·already·moved·term·will·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1125">see·this·move·marker</a>·and·copy·the·referring·pointer·instead.·For·example,·if·the·have·the·following·Erlang·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="2488704549-1">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2488704549-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="n">T</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2708023374-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arg</span><span·class="p"·data-group-id="2708023374-2">}</span><span·class="p">,</span><span·class="w">157 ····</span><span·class="n">T</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2488704549-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arg</span><span·class="p"·data-group-id="2488704549-2">}</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="2708023374-3">{</span><span·class="ss">wrapper</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·53,·SHA:·de95c73b68abe6929dc94b623dfa1f802f796695a1291552dcaad89d40844ae2·...·]-3">}</span><span·class="p">.</span></code></pre><p>Only·one·copy·of·T·exists·on·the·heap·and·during·the·garbage·collection·only·the·first·time·T·is·encountered·will·it·be·copied.</p><p><img·src="assets/gc-rootset-scan.png"·alt="Garbage·collection:·root·set·scan"/></p><p>After·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1089">all·terms</a>·referenced·by·the·root-set·have·been·copied,·the·collector·scans·the·<em>to·space</em>·and·copies·all·terms·that·these·terms·reference.·When·scanning,·the·collector·steps·through·each·term·on·the·<em>to·space</em>·and·any·term·still·referencing·the·<em>from·space</em>·is·copied·over·to·the·<em>to·space</em>.·Some·terms·contain·non-term·data·(the·payload·of·a·on·heap·binary·for·instance).·When·encountered·by·the·collector,·these·values·are·simply·skipped.</p><p><img·src="assets/gc-heap-scan1.png"·alt="Garbage·collection:·heap·scan"/></p><p>Every·term·object·we·can·reach·is·copied·to·the·<em>to·space</em>·and·stored·on·top·off·the·<em>scan·stop</em>·line,·and·then·the·scan·stop·is·moved·to·the·end·of·the·last·object.</p><p><img·src="assets/gc-heap-stop.png"·alt="Garbage·collection:·heap·scan"/></p><p>When·<em>scan·stop</em>·marker·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1103">catches·up</a>·to·the·<em>scan·start</em>·marker,·the·garbage·collection·is·done.·At·this·point·we·can·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1206">deallocate</a>·the·entire·<em>from·space</em>·and·therefore·reclaim·the·entire·young·heap.</p><h2·id="generational-garbage-collection"·class="section-heading">158 ····</span><span·class="p"·data-group-id="2488704549-3">{</span><span·class="ss">wrapper</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·53,·SHA:·d41095ed61a94f7966122443aeaa442f86e3ce844021f26c25f01ac9a104559f·...·]-3">}</span><span·class="p">.</span></code></pre><p>Only·one·copy·of·T·exists·on·the·heap·and·during·the·garbage·collection·only·the·first·time·T·is·encountered·will·it·be·copied.</p><p><img·src="assets/gc-rootset-scan.png"·alt="Garbage·collection:·root·set·scan"/></p><p>After·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1089">all·terms</a>·referenced·by·the·root-set·have·been·copied,·the·collector·scans·the·<em>to·space</em>·and·copies·all·terms·that·these·terms·reference.·When·scanning,·the·collector·steps·through·each·term·on·the·<em>to·space</em>·and·any·term·still·referencing·the·<em>from·space</em>·is·copied·over·to·the·<em>to·space</em>.·Some·terms·contain·non-term·data·(the·payload·of·a·on·heap·binary·for·instance).·When·encountered·by·the·collector,·these·values·are·simply·skipped.</p><p><img·src="assets/gc-heap-scan1.png"·alt="Garbage·collection:·heap·scan"/></p><p>Every·term·object·we·can·reach·is·copied·to·the·<em>to·space</em>·and·stored·on·top·off·the·<em>scan·stop</em>·line,·and·then·the·scan·stop·is·moved·to·the·end·of·the·last·object.</p><p><img·src="assets/gc-heap-stop.png"·alt="Garbage·collection:·heap·scan"/></p><p>When·<em>scan·stop</em>·marker·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1103">catches·up</a>·to·the·<em>scan·start</em>·marker,·the·garbage·collection·is·done.·At·this·point·we·can·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1206">deallocate</a>·the·entire·<em>from·space</em>·and·therefore·reclaim·the·entire·young·heap.</p><h2·id="generational-garbage-collection"·class="section-heading">
159 ··<a·href="#generational-garbage-collection"·class="hover-link">159 ··<a·href="#generational-garbage-collection"·class="hover-link">
160 ····<i·class="ri-link-m"·aria-hidden="true"></i>160 ····<i·class="ri-link-m"·aria-hidden="true"></i>
161 ··</a>161 ··</a>
162 ··<span·class="text">Generational·Garbage·Collection</span>162 ··<span·class="text">Generational·Garbage·Collection</span>
163 </h2>163 </h2>
164 <p>In·addition·to·the·collection·algorithm·described·above,·the·Erlang·garbage·collector·also·provides·generational·garbage·collection.·An·additional·heap,·called·the·old·heap,·is·used·where·the·long·lived·data·is·stored.·The·original·heap·is·called·the·young·heap,·or·sometimes·the·allocation·heap.</p><p>With·this·in·mind·we·can·look·at·the·Erlang's·garbage·collection·again.·During·the·copy·stage·anything·that·should·be·copied·to·the·young·<em>to·space</em>·is·instead·copied·to·the·old·<em>to·space</em>·<em>if</em>·it·is·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1127">below·the·<em>high-watermark</em></a>.</p><p><img·src="assets/gc-watermark.png"·alt="Garbage·collection:·heap·scan"/></p><p>The·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_process.h#L1021"><em>high-watermark</em></a>·is·placed·where·the·previous·garbage·collection·(described·in·<a·href="#overview">Overview</a>)·ended·and·we·have·introduced·a·new·area·called·the·old·heap.·When·doing·the·normal·garbage·collection·pass,·any·term·that·is·located·below·the·high-watermark·is·copied·to·the·old·<em>to·space</em>·instead·of·the·young.</p><p><img·src="assets/gc-watermark-2.png"·alt="Garbage·collection:·heap·scan"/></p><p>In·the·next·garbage·collection,·any·pointers·to·the·old·heap·will·be·ignored·and·not·scanned.·This·way·the·garbage·collector·does·not·have·to·scan·the·long-lived·terms.</p><p>Generational·garbage·collection·aims·to·increase·performance·at·the·expense·of·memory.·This·is·achieved·because·only·the·young,·smaller,·heap·is·considered·in·most·garbage·collections.</p><p>The·generational·hypothesis·predicts·that·most·terms·tend·to·die·young·(see·D.·Ungar·in·<a·href="#references">References</a>),·and·for·an·immutable·language·such·as·Erlang,·young·terms·die·even·faster·than·in·other·languages.·So·for·most·usage·patterns·the·data·in·the·new·heap·will·die·very·soon·after·it·is·allocated.·This·is·good·because·it·limits·the·amount·of·data·copied·to·the·old·heap·and·also·because·the·garbage·collection·algorithm·used·is·proportional·to·the·amount·of·live·data·on·the·heap.</p><p>One·critical·issue·to·note·here·is·that·any·term·on·the·young·heap·can·reference·terms·on·the·old·heap·but·<em>no</em>·term·on·the·old·heap·may·refer·to·a·term·on·the·young·heap.·This·is·due·to·the·nature·of·the·copy·algorithm.·Anything·referenced·by·an·old·heap·term·is·not·included·in·the·reference·tree,·root-set·and·its·followers,·and·hence·is·not·copied.·If·it·was,·the·data·would·be·lost,·fire·and·brimstone·would·rise·to·cover·the·earth.·Fortunately,·this·comes·naturally·for·Erlang·because·the·terms·are·immutable·and·thus·there·can·be·no·pointers·modified·on·the·old·heap·to·point·to·the·young·heap.</p><p>To·reclaim·data·from·the·old·heap,·both·young·and·old·heaps·are·included·during·the·collection·and·copied·to·a·common·<em>to·space</em>.·Both·the·<em>from·space</em>·of·the·young·and·old·heap·are·then·deallocated·and·the·procedure·will·start·over·from·the·beginning.·This·type·of·garbage·collection·is·called·a·full·sweep·and·is·triggered·when·the·size·of·the·area·under·the·high-watermark·is·larger·than·the·size·of·the·free·area·of·the·old·heap.·It·can·also·be·triggered·by·doing·a·manual·call·to·<a·href="http://erlang.org/doc/man/erlang.html#garbage_collect-0">erlang:garbage_collect()</a>,·or·by·running·into·the·young·garbage·collection·limit·set·by·[spawn_opt(fun(),<a·href="http://erlang.org/doc/man/erlang.html#spawn_opt-4">{fullsweep_after,·N}])</a>·where·N·is·the·number·of·young·garbage·collections·to·do·before·forcing·a·garbage·collection·of·both·young·and·old·heap.</p><h2·id="the-young-heap"·class="section-heading">164 <p>In·addition·to·the·collection·algorithm·described·above,·the·Erlang·garbage·collector·also·provides·generational·garbage·collection.·An·additional·heap,·called·the·old·heap,·is·used·where·the·long·lived·data·is·stored.·The·original·heap·is·called·the·young·heap,·or·sometimes·the·allocation·heap.</p><p>With·this·in·mind·we·can·look·at·the·Erlang's·garbage·collection·again.·During·the·copy·stage·anything·that·should·be·copied·to·the·young·<em>to·space</em>·is·instead·copied·to·the·old·<em>to·space</em>·<em>if</em>·it·is·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L1127">below·the·<em>high-watermark</em></a>.</p><p><img·src="assets/gc-watermark.png"·alt="Garbage·collection:·heap·scan"/></p><p>The·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_process.h#L1021"><em>high-watermark</em></a>·is·placed·where·the·previous·garbage·collection·(described·in·<a·href="#overview">Overview</a>)·ended·and·we·have·introduced·a·new·area·called·the·old·heap.·When·doing·the·normal·garbage·collection·pass,·any·term·that·is·located·below·the·high-watermark·is·copied·to·the·old·<em>to·space</em>·instead·of·the·young.</p><p><img·src="assets/gc-watermark-2.png"·alt="Garbage·collection:·heap·scan"/></p><p>In·the·next·garbage·collection,·any·pointers·to·the·old·heap·will·be·ignored·and·not·scanned.·This·way·the·garbage·collector·does·not·have·to·scan·the·long-lived·terms.</p><p>Generational·garbage·collection·aims·to·increase·performance·at·the·expense·of·memory.·This·is·achieved·because·only·the·young,·smaller,·heap·is·considered·in·most·garbage·collections.</p><p>The·generational·hypothesis·predicts·that·most·terms·tend·to·die·young·(see·D.·Ungar·in·<a·href="#references">References</a>),·and·for·an·immutable·language·such·as·Erlang,·young·terms·die·even·faster·than·in·other·languages.·So·for·most·usage·patterns·the·data·in·the·new·heap·will·die·very·soon·after·it·is·allocated.·This·is·good·because·it·limits·the·amount·of·data·copied·to·the·old·heap·and·also·because·the·garbage·collection·algorithm·used·is·proportional·to·the·amount·of·live·data·on·the·heap.</p><p>One·critical·issue·to·note·here·is·that·any·term·on·the·young·heap·can·reference·terms·on·the·old·heap·but·<em>no</em>·term·on·the·old·heap·may·refer·to·a·term·on·the·young·heap.·This·is·due·to·the·nature·of·the·copy·algorithm.·Anything·referenced·by·an·old·heap·term·is·not·included·in·the·reference·tree,·root-set·and·its·followers,·and·hence·is·not·copied.·If·it·was,·the·data·would·be·lost,·fire·and·brimstone·would·rise·to·cover·the·earth.·Fortunately,·this·comes·naturally·for·Erlang·because·the·terms·are·immutable·and·thus·there·can·be·no·pointers·modified·on·the·old·heap·to·point·to·the·young·heap.</p><p>To·reclaim·data·from·the·old·heap,·both·young·and·old·heaps·are·included·during·the·collection·and·copied·to·a·common·<em>to·space</em>.·Both·the·<em>from·space</em>·of·the·young·and·old·heap·are·then·deallocated·and·the·procedure·will·start·over·from·the·beginning.·This·type·of·garbage·collection·is·called·a·full·sweep·and·is·triggered·when·the·size·of·the·area·under·the·high-watermark·is·larger·than·the·size·of·the·free·area·of·the·old·heap.·It·can·also·be·triggered·by·doing·a·manual·call·to·<a·href="http://erlang.org/doc/man/erlang.html#garbage_collect-0">erlang:garbage_collect()</a>,·or·by·running·into·the·young·garbage·collection·limit·set·by·[spawn_opt(fun(),<a·href="http://erlang.org/doc/man/erlang.html#spawn_opt-4">{fullsweep_after,·N}])</a>·where·N·is·the·number·of·young·garbage·collections·to·do·before·forcing·a·garbage·collection·of·both·young·and·old·heap.</p><h2·id="the-young-heap"·class="section-heading">
165 ··<a·href="#the-young-heap"·class="hover-link">165 ··<a·href="#the-young-heap"·class="hover-link">
Offset 175, 19 lines modifiedOffset 175, 19 lines modified
175 </h2>175 </h2>
176 <p>As·mentioned·in·the·Overview·the·size·of·the·heap·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L247">grows</a>·to·accommodate·more·data.·Heaps·grow·in·two·stages,·first·a·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L199-L208">variation·of·the·Fibonacci·sequence</a>·is·used·starting·at·233·words.·Then·at·about·1·mega·words·the·heap·only·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L215-L227">grows·in·20%·increments</a>.</p><p>There·are·two·occasions·when·the·young·heap·grows:</p><ul><li>if·the·total·size·of·the·heap·+·message·and·heap·fragments·exceeds·the·current·heap·size.</li><li>if·after·a·fullsweep,·the·total·amount·of·live·objects·is·greater·than·75%.</li></ul><p>There·are·two·occasions·when·the·young·heap·is·shrunk:</p><ul><li>if·after·a·young·collection,·the·total·amount·of·live·objects·is·less·than·25%·of·the·heap·and·the·young·heap·is·&quot;big&quot;</li><li>if·after·a·fullsweep,·the·total·amount·of·live·objects·is·less·than·25%·of·the·heap.</li></ul><p>The·old·heap·is·always·one·step·ahead·in·the·heap·growth·stages·than·the·young·heap.</p><h2·id="literals"·class="section-heading">176 <p>As·mentioned·in·the·Overview·the·size·of·the·heap·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L247">grows</a>·to·accommodate·more·data.·Heaps·grow·in·two·stages,·first·a·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L199-L208">variation·of·the·Fibonacci·sequence</a>·is·used·starting·at·233·words.·Then·at·about·1·mega·words·the·heap·only·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L215-L227">grows·in·20%·increments</a>.</p><p>There·are·two·occasions·when·the·young·heap·grows:</p><ul><li>if·the·total·size·of·the·heap·+·message·and·heap·fragments·exceeds·the·current·heap·size.</li><li>if·after·a·fullsweep,·the·total·amount·of·live·objects·is·greater·than·75%.</li></ul><p>There·are·two·occasions·when·the·young·heap·is·shrunk:</p><ul><li>if·after·a·young·collection,·the·total·amount·of·live·objects·is·less·than·25%·of·the·heap·and·the·young·heap·is·&quot;big&quot;</li><li>if·after·a·fullsweep,·the·total·amount·of·live·objects·is·less·than·25%·of·the·heap.</li></ul><p>The·old·heap·is·always·one·step·ahead·in·the·heap·growth·stages·than·the·young·heap.</p><h2·id="literals"·class="section-heading">
177 ··<a·href="#literals"·class="hover-link">177 ··<a·href="#literals"·class="hover-link">
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Literals</span>180 ··<span·class="text">Literals</span>
181 </h2>181 </h2>
182 <p>When·garbage·collecting·a·heap·(young·or·old)·all·literals·are·left·in·place·and·not·copied.·To·figure·out·if·a·term·should·be·copied·or·not·when·doing·a·garbage·collection·the·following·pseudo·code·is·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">if</span><span·class="w">·</span><span·class="p"·data-group-id="0753245973-1">(</span><span·class="nf">erts_is_literal</span><span·class="p"·data-group-id="0753245973-2">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="0753245973-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="[·...·truncated·by·diffoscope;·len:·541,·SHA:·3357dbfd17d3b5f2547e0de1c6cd3a457268be0f188323d2cc7aa7f0c1708344·...·]-5">{</span><span·class="w">182 <p>When·garbage·collecting·a·heap·(young·or·old)·all·literals·are·left·in·place·and·not·copied.·To·figure·out·if·a·term·should·be·copied·or·not·when·doing·a·garbage·collection·the·following·pseudo·code·is·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">if</span><span·class="w">·</span><span·class="p"·data-group-id="3702954402-1">(</span><span·class="nf">erts_is_literal</span><span·class="p"·data-group-id="3702954402-2">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="3702954402-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="[·...·truncated·by·diffoscope;·len:·541,·SHA:·10a3ae53bcb3ebd66b77e06f49c4a596b77d3bf1115868b85ffcb0cb65c80643·...·]-5">{</span><span·class="w">
183 ··</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">literal</span><span·class="w">·</span><span·class="ow">or</span><span·class="w">·</span><span·class="ss">non</span><span·class="w">·</span><span·class="ss">fullsweep</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">copy</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">183 ··</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">literal</span><span·class="w">·</span><span·class="ow">or</span><span·class="w">·</span><span·class="ss">non</span><span·class="w">·</span><span·class="ss">fullsweep</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">copy</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
184 </span><span·class="p"·data-group-id="0753245973-5">}</span><span·class="w">·</span><span·class="k">else</span><span·class="w">·</span><span·class="p"·data-group-id="0753245973-6">{</span><span·class="w">184 </span><span·class="p"·data-group-id="3702954402-5">}</span><span·class="w">·</span><span·class="k">else</span><span·class="w">·</span><span·class="p"·data-group-id="3702954402-6">{</span><span·class="w">
185 ··</span><span·class="nf">copy</span><span·class="p"·data-group-id="0753245973-7">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="0753245973-7">)</span><span·class="p">;</span><span·class="w">185 ··</span><span·class="nf">copy</span><span·class="p"·data-group-id="3702954402-7">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="3702954402-7">)</span><span·class="p">;</span><span·class="w">
186 </span><span·class="p"·data-group-id="0753245973-6">}</span></code></pre><p>The·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/global.h#L1452-L1465"><code·class="inline">erts_is_literal</code></a>·check·works·differently·on·different·architectures·and·operating·systems.</p><p>On·64·bit·systems·that·allow·mapping·of·unreserved·virtual·memory·areas·(most·operating·systems·except·Windows),·an·area·of·size·1·GB·(by·default)·is·mapped·and·then·all·literals·are·placed·within·that·area.·Then·all·that·has·to·be·done·to·determine·if·something·is·a·literal·or·not·is·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_alloc.h#L322-L324">two·quick·pointer·checks</a>.·This·system·relies·on·the·fact·that·a·memory·page·that·has·not·been·touched·yet·does·not·take·any·actual·space.·So·even·if·1·GB·of·virtual·memory·is·mapped,·only·the·memory·which·is·actually·needed·for·literals·is·allocated·in·ram.·The·size·of·the·literal·area·is·configurable·through·the·+MIscs·erts_alloc·option.</p><p>On·32·bit·systems,·there·is·not·enough·virtual·memory·space·to·allocate·1·GB·for·just·literals,·so·instead·small·256·KB·sized·literal·regions·are·created·on·demand·and·a·card·mark·bit-array·of·the·entire·32·bit·memory·space·is·then·used·to·determine·if·a·term·is·a·literal·or·not.·Since·the·total·memory·space·is·only·32·bits,·the·card·mark·bit-array·is·only·256·words·large.·On·a·64·bit·system·the·same·bit-array·would·have·to·be·1·tera·words·large,·so·this·technique·is·only·viable·on·32·bit·systems.·Doing·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_alloc.h#L316-L319">lookups·in·the·array</a>·is·a·little·more·expensive·then·just·doing·the·pointer·checks·that·can·be·done·in·64·bit·systems,·but·not·extremely·so.</p><p>On·64·bit·windows,·on·which·erts_alloc·cannot·do·unreserved·virtual·memory·mappings,·a·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_term.h#L59">special·tag</a>·within·the·Erlang·term·object·is·used·to·determine·if·something·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_term.h#L248-L252">is·a·literal·or·not</a>.·This·is·very·cheap,·however,·the·tag·is·only·available·on·64·bit·machines,·and·it·is·possible·to·do·a·great·deal·of·other·nice·optimizations·with·this·tag·in·the·future·(like·for·instance·a·more·compact·list·implementation)·so·it·is·not·used·on·operating·systems·where·it·is·not·needed.</p><p>This·behaviour·is·different·from·how·it·worked·prior·to·Erlang/OTP·19.0.·Before·19.0·the·literal·check·was·done·by·checking·if·the·pointer·pointed·to·the·young·or·old·heap·block.·If·it·did·not,·then·it·was·considered·a·literal.·This·lead·to·considerable·overhead·and·strange·memory·usage·scenarios,·so·it·was·removed·in·19.0.</p><h2·id="binary-heap"·class="section-heading">186 </span><span·class="p"·data-group-id="3702954402-6">}</span></code></pre><p>The·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/global.h#L1452-L1465"><code·class="inline">erts_is_literal</code></a>·check·works·differently·on·different·architectures·and·operating·systems.</p><p>On·64·bit·systems·that·allow·mapping·of·unreserved·virtual·memory·areas·(most·operating·systems·except·Windows),·an·area·of·size·1·GB·(by·default)·is·mapped·and·then·all·literals·are·placed·within·that·area.·Then·all·that·has·to·be·done·to·determine·if·something·is·a·literal·or·not·is·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_alloc.h#L322-L324">two·quick·pointer·checks</a>.·This·system·relies·on·the·fact·that·a·memory·page·that·has·not·been·touched·yet·does·not·take·any·actual·space.·So·even·if·1·GB·of·virtual·memory·is·mapped,·only·the·memory·which·is·actually·needed·for·literals·is·allocated·in·ram.·The·size·of·the·literal·area·is·configurable·through·the·+MIscs·erts_alloc·option.</p><p>On·32·bit·systems,·there·is·not·enough·virtual·memory·space·to·allocate·1·GB·for·just·literals,·so·instead·small·256·KB·sized·literal·regions·are·created·on·demand·and·a·card·mark·bit-array·of·the·entire·32·bit·memory·space·is·then·used·to·determine·if·a·term·is·a·literal·or·not.·Since·the·total·memory·space·is·only·32·bits,·the·card·mark·bit-array·is·only·256·words·large.·On·a·64·bit·system·the·same·bit-array·would·have·to·be·1·tera·words·large,·so·this·technique·is·only·viable·on·32·bit·systems.·Doing·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_alloc.h#L316-L319">lookups·in·the·array</a>·is·a·little·more·expensive·then·just·doing·the·pointer·checks·that·can·be·done·in·64·bit·systems,·but·not·extremely·so.</p><p>On·64·bit·windows,·on·which·erts_alloc·cannot·do·unreserved·virtual·memory·mappings,·a·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_term.h#L59">special·tag</a>·within·the·Erlang·term·object·is·used·to·determine·if·something·<a·href="https://github.com/erlang/otp/blob/OTP-19.0/erts/emulator/beam/erl_term.h#L248-L252">is·a·literal·or·not</a>.·This·is·very·cheap,·however,·the·tag·is·only·available·on·64·bit·machines,·and·it·is·possible·to·do·a·great·deal·of·other·nice·optimizations·with·this·tag·in·the·future·(like·for·instance·a·more·compact·list·implementation)·so·it·is·not·used·on·operating·systems·where·it·is·not·needed.</p><p>This·behaviour·is·different·from·how·it·worked·prior·to·Erlang/OTP·19.0.·Before·19.0·the·literal·check·was·done·by·checking·if·the·pointer·pointed·to·the·young·or·old·heap·block.·If·it·did·not,·then·it·was·considered·a·literal.·This·lead·to·considerable·overhead·and·strange·memory·usage·scenarios,·so·it·was·removed·in·19.0.</p><h2·id="binary-heap"·class="section-heading">
187 ··<a·href="#binary-heap"·class="hover-link">187 ··<a·href="#binary-heap"·class="hover-link">
188 ····<i·class="ri-link-m"·aria-hidden="true"></i>188 ····<i·class="ri-link-m"·aria-hidden="true"></i>
189 ··</a>189 ··</a>
190 ··<span·class="text">Binary·heap</span>190 ··<span·class="text">Binary·heap</span>
191 </h2>191 </h2>
192 <p>The·binary·heap·works·as·a·large·object·space·for·binary·terms·that·are·greater·than·64·bytes·(from·now·on·called·off-heap·binaries).·The·binary·heap·is·<a·href="https://en.wikipedia.org/wiki/Reference_counting">reference·counted</a>·and·a·pointer·to·the·off-heap·binary·is·stored·on·the·process·heap.·To·keep·track·of·when·to·decrement·the·reference·counter·of·the·off-heap·binary,·a·linked·list·(the·MSO·-·mark·and·sweep·object·list)·containing·funs·and·externals·as·well·as·off-heap·binaries·is·woven·through·the·heap.·After·a·garbage·collection·is·done,·the·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2299">MSO·list·is·swept</a>·and·any·off-heap·binary·that·does·not·have·a·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2325">move·marker</a>·written·into·the·header·words·has·its·reference·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2344-L2367">decremented·and·is·potentially·freed</a>.</p><p>All·items·in·the·MSO·list·are·ordered·by·the·time·they·were·added·to·the·process·heap,·so·when·doing·a·minor·garbage·collection,·the·MSO·sweeper·only·has·to·sweep·until·it·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2369">encounters·an·off-heap·binary·that·is·on·the·old·heap</a>.</p><h3·id="virtual-binary-heap"·class="section-heading">192 <p>The·binary·heap·works·as·a·large·object·space·for·binary·terms·that·are·greater·than·64·bytes·(from·now·on·called·off-heap·binaries).·The·binary·heap·is·<a·href="https://en.wikipedia.org/wiki/Reference_counting">reference·counted</a>·and·a·pointer·to·the·off-heap·binary·is·stored·on·the·process·heap.·To·keep·track·of·when·to·decrement·the·reference·counter·of·the·off-heap·binary,·a·linked·list·(the·MSO·-·mark·and·sweep·object·list)·containing·funs·and·externals·as·well·as·off-heap·binaries·is·woven·through·the·heap.·After·a·garbage·collection·is·done,·the·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2299">MSO·list·is·swept</a>·and·any·off-heap·binary·that·does·not·have·a·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2325">move·marker</a>·written·into·the·header·words·has·its·reference·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2344-L2367">decremented·and·is·potentially·freed</a>.</p><p>All·items·in·the·MSO·list·are·ordered·by·the·time·they·were·added·to·the·process·heap,·so·when·doing·a·minor·garbage·collection,·the·MSO·sweeper·only·has·to·sweep·until·it·<a·href="https://github.com/erlang/otp/blob/OTP-18.0/erts/emulator/beam/erl_gc.c#L2369">encounters·an·off-heap·binary·that·is·on·the·old·heap</a>.</p><h3·id="virtual-binary-heap"·class="section-heading">
193 ··<a·href="#virtual-binary-heap"·class="hover-link">193 ··<a·href="#virtual-binary-heap"·class="hover-link">
44.8 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/inet_cfg.html
    
Offset 161, 108 lines modifiedOffset 161, 108 lines modified
161 configuration·files·(or·system·registry):</p><ul><li>Hostnames·and·host·addresses</li><li>Domain·name</li><li>Nameservers</li><li>Search·domains</li><li>Lookup·method</li></ul><p>This·data·can·also·be·specified·explicitly·in·the·user·configuration·file.·This161 configuration·files·(or·system·registry):</p><ul><li>Hostnames·and·host·addresses</li><li>Domain·name</li><li>Nameservers</li><li>Search·domains</li><li>Lookup·method</li></ul><p>This·data·can·also·be·specified·explicitly·in·the·user·configuration·file.·This
162 file·is·to·contain·lines·of·configuration·parameters·(each·terminated·with·a162 file·is·to·contain·lines·of·configuration·parameters·(each·terminated·with·a
163 full·stop).·Some·parameters·add·data·to·the·configuration·(such·as·host·and163 full·stop).·Some·parameters·add·data·to·the·configuration·(such·as·host·and
164 nameserver),·others·overwrite·any·previous·settings·(such·as·domain·and·lookup).164 nameserver),·others·overwrite·any·previous·settings·(such·as·domain·and·lookup).
165 The·user·configuration·file·is·always·examined·last·in·the·configuration165 The·user·configuration·file·is·always·examined·last·in·the·configuration
166 process,·making·it·possible·for·the·user·to·override·any·default·values·or166 process,·making·it·possible·for·the·user·to·override·any·default·values·or
167 previously·made·settings.·Call·<code·class="inline">inet:get_rc()</code>·to·view·the·state·of·the·<code·class="inline">inet</code>167 previously·made·settings.·Call·<code·class="inline">inet:get_rc()</code>·to·view·the·state·of·the·<code·class="inline">inet</code>
168 configuration·database.</p><p>The·valid·configuration·parameters·are·as·follows:</p><ul><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0742532286-1">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Format</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="0742532286-1">}</span><span·class="p">.</span><span·class="w">168 configuration·database.</p><p>The·valid·configuration·parameters·are·as·follows:</p><ul><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9264830660-1">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Format</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="9264830660-1">}</span><span·class="p">.</span><span·class="w">
169 ··</span><span·class="n">Format</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="0742532286-2">(</span><span·class="p"·data-group-id="0742532286-2">)</span><span·class="w">169 ··</span><span·class="n">Format</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9264830660-2">(</span><span·class="p"·data-group-id="9264830660-2">)</span><span·class="w">
170 ··</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="0742532286-3">(</span><span·class="p"·data-group-id="0742532286-3">)</span></code></pre><p>Specify·a·system·file·that·Erlang·is·to·read·configuration·data·from.·<code·class="inline">Format</code>170 ··</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="9264830660-3">(</span><span·class="p"·data-group-id="9264830660-3">)</span></code></pre><p>Specify·a·system·file·that·Erlang·is·to·read·configuration·data·from.·<code·class="inline">Format</code>
171 tells·the·parser·how·the·file·is·to·be·interpreted:</p><ul><li><code·class="inline">resolv</code>·(Unix·resolv.conf)</li><li><code·class="inline">host_conf_freebsd</code>·(FreeBSD·host.conf)</li><li><code·class="inline">host_conf_bsdos</code>·(BSDOS·host.conf)</li><li><code·class="inline">host_conf_linux</code>·(Linux·host.conf)</li><li><code·class="inline">nsswitch_conf</code>·(Unix·nsswitch.conf)</li><li><code·class="inline">hosts</code>·(Unix·hosts)</li></ul><p><code·class="inline">File</code>·is·to·specify·the·filename·with·full·path.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5096588216-1">{</span><span·class="ss">resolv_conf</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="5096588216-1">}</span><span·class="p">.</span><span·class="w">171 tells·the·parser·how·the·file·is·to·be·interpreted:</p><ul><li><code·class="inline">resolv</code>·(Unix·resolv.conf)</li><li><code·class="inline">host_conf_freebsd</code>·(FreeBSD·host.conf)</li><li><code·class="inline">host_conf_bsdos</code>·(BSDOS·host.conf)</li><li><code·class="inline">host_conf_linux</code>·(Linux·host.conf)</li><li><code·class="inline">nsswitch_conf</code>·(Unix·nsswitch.conf)</li><li><code·class="inline">hosts</code>·(Unix·hosts)</li></ul><p><code·class="inline">File</code>·is·to·specify·the·filename·with·full·path.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1783349383-1">{</span><span·class="ss">resolv_conf</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="1783349383-1">}</span><span·class="p">.</span><span·class="w">
172 ··</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="5096588216-2">(</span><span·class="p"·data-group-id="5096588216-2">)</span></code></pre><p>Specify·a·system·file·that·Erlang·is·to·read·resolver·configuration·from·for172 ··</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="1783349383-2">(</span><span·class="p"·data-group-id="1783349383-2">)</span></code></pre><p>Specify·a·system·file·that·Erlang·is·to·read·resolver·configuration·from·for
173 the·internal·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>,·and·monitor·for·changes,·even·if·it·does173 the·internal·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>,·and·monitor·for·changes,·even·if·it·does
174 not·exist.·The·path·must·be·absolute.</p><p>This·can·override·the·configuration·parameters·<code·class="inline">nameserver</code>·and·<code·class="inline">search</code>174 not·exist.·The·path·must·be·absolute.</p><p>This·can·override·the·configuration·parameters·<code·class="inline">nameserver</code>·and·<code·class="inline">search</code>
175 depending·on·the·contents·of·the·specified·file.·They·can·also·change·any·time175 depending·on·the·contents·of·the·specified·file.·They·can·also·change·any·time
176 in·the·future·reflecting·the·file·contents.</p><p>If·the·file·is·specified·as·an·empty·string·<code·class="inline">&quot;&quot;</code>,·no·file·is·read·or·monitored176 in·the·future·reflecting·the·file·contents.</p><p>If·the·file·is·specified·as·an·empty·string·<code·class="inline">&quot;&quot;</code>,·no·file·is·read·or·monitored
177 in·the·future.·This·emulates·the·old·behavior·of·not·configuring·the·DNS177 in·the·future.·This·emulates·the·old·behavior·of·not·configuring·the·DNS
178 client·when·the·node·is·started·in·short·name·distributed·mode.</p><p>If·this·parameter·is·not·specified,·it·defaults·to·<code·class="inline">/etc/resolv.conf</code>·unless178 client·when·the·node·is·started·in·short·name·distributed·mode.</p><p>If·this·parameter·is·not·specified,·it·defaults·to·<code·class="inline">/etc/resolv.conf</code>·unless
179 environment·variable·<code·class="inline">ERL_INET_ETC_DIR</code>·is·set,·which·defines·the·directory179 environment·variable·<code·class="inline">ERL_INET_ETC_DIR</code>·is·set,·which·defines·the·directory
180 for·this·file·to·some·maybe·other·than·<code·class="inline">/etc</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9894741435-1">{</span><span·class="ss">hosts_file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="9894741435-1">}</span><span·class="p">.</span><span·class="w">180 for·this·file·to·some·maybe·other·than·<code·class="inline">/etc</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2672133922-1">{</span><span·class="ss">hosts_file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="2672133922-1">}</span><span·class="p">.</span><span·class="w">
181 ··</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="9894741435-2">(</span><span·class="p"·data-group-id="9894741435-2">)</span></code></pre><p>Specify·a·system·file·that·Erlang·is·to·read·resolver·configuration·from·for181 ··</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="2672133922-2">(</span><span·class="p"·data-group-id="2672133922-2">)</span></code></pre><p>Specify·a·system·file·that·Erlang·is·to·read·resolver·configuration·from·for
182 the·internal·hosts·file·resolver,·and·monitor·for·changes,·even·if·it·does·not182 the·internal·hosts·file·resolver,·and·monitor·for·changes,·even·if·it·does·not
183 exist.·The·path·must·be·absolute.</p><p>These·host·entries·are·searched·after·all·added·with·<code·class="inline">{file,·hosts,·File}</code>183 exist.·The·path·must·be·absolute.</p><p>These·host·entries·are·searched·after·all·added·with·<code·class="inline">{file,·hosts,·File}</code>
184 above·or·<code·class="inline">{host,·IP,·Aliases}</code>·below·when·lookup·option·<code·class="inline">file</code>·is·used.</p><p>If·the·file·is·specified·as·an·empty·string·<code·class="inline">&quot;&quot;</code>,·no·file·is·read·or·monitored184 above·or·<code·class="inline">{host,·IP,·Aliases}</code>·below·when·lookup·option·<code·class="inline">file</code>·is·used.</p><p>If·the·file·is·specified·as·an·empty·string·<code·class="inline">&quot;&quot;</code>,·no·file·is·read·or·monitored
185 in·the·future.·This·emulates·the·old·behavior·of·not·configuring·the·DNS185 in·the·future.·This·emulates·the·old·behavior·of·not·configuring·the·DNS
186 client·when·the·node·is·started·in·short·name·distributed·mode.</p><p>If·this·parameter·is·not·specified,·it·defaults·to·<code·class="inline">/etc/hosts</code>·unless186 client·when·the·node·is·started·in·short·name·distributed·mode.</p><p>If·this·parameter·is·not·specified,·it·defaults·to·<code·class="inline">/etc/hosts</code>·unless
187 environment·variable·<code·class="inline">ERL_INET_ETC_DIR</code>·is·set,·which·defines·the·directory187 environment·variable·<code·class="inline">ERL_INET_ETC_DIR</code>·is·set,·which·defines·the·directory
188 for·this·file·to·some·maybe·other·than·<code·class="inline">/etc</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5497978900-1">{</span><span·class="ss">registry</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="5497978900-1">}</span><span·class="p">.</span><span·class="w">188 for·this·file·to·some·maybe·other·than·<code·class="inline">/etc</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3120465803-1">{</span><span·class="ss">registry</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="3120465803-1">}</span><span·class="p">.</span><span·class="w">
189 ··</span><span·class="n">Type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="5497978900-2">(</span><span·class="p"·data-group-id="5497978900-2">)</span></code></pre><p>Specify·a·system·registry·that·Erlang·is·to·read·configuration·data·from.189 ··</span><span·class="n">Type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3120465803-2">(</span><span·class="p"·data-group-id="3120465803-2">)</span></code></pre><p>Specify·a·system·registry·that·Erlang·is·to·read·configuration·data·from.
190 <code·class="inline">win32</code>·is·the·only·valid·option.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2534263007-1">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Aliases</span><span·class="p"·data-group-id="2534263007-1">}</span><span·class="p">.</span><span·class="w">190 <code·class="inline">win32</code>·is·the·only·valid·option.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2544047250-1">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Aliases</span><span·class="p"·data-group-id="2544047250-1">}</span><span·class="p">.</span><span·class="w">
191 ··</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tuple</span><span·class="p"·data-group-id="2534263007-2">(</span><span·class="p"·data-group-id="2534263007-2">)</span></code></pre><p><code·class="inline">Aliases·=·[string()]</code></p><p>Add·host·entry·to·the·hosts·table.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9595635010-1">{</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Domain</span><span·class="p"·data-group-id="9595635010-1">}</span><span·class="p">.</span><span·class="w"> 
192 ··</span><span·class="n">Domain</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="9595635010-2">(</span><span·class="p"·data-group-id="9595635010-2">)</span></code></pre><p>Set·domain·name.</p[·...·truncated·by·diffoscope;·len:·440,·SHA:·bd2f77b7da37c5cb8a748355e85a68ef83f5f095cb453dda5c3b426f8b7fa505·...·]-1">}</span><span·class="p">.</span><span·class="w">191 ··</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tuple</span><span·class="p"·data-group-id="2544047250-2">(</span><span·class="p"·data-group-id="2544047250-2">)</span></code></pre><p><code·class="inline">Ali[·...·truncated·by·diffoscope;·len:·327,·SHA:·3ffd832e624b4161a3b934816d20621e86dfa56f81f2a39f121f5c18752f704b·...·]-1">}</span><span·class="p">.</span><span·class="w">
 192 ··</span><span·class="n">Domain</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8271512535-2">(</span><span·class="p"·data-group-id="8271512535-2">)</span></code></pre><p>Set·domain·name.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8749890123-1">{</span><span·class="ss">nameserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IP</span><span·class="w">·</span><span·class="p"·data-group-id="8749890123-2">[</span><span·class="p">,</span><span·class="n">Port</span><span·class="p"·data-group-id="8749890123-2">]</span><span·class="p"·data-group-id="8749890123-1">}</span><span·class="p">.</span><span·class="w">
193 ··</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tuple</span><span·class="p"·data-group-id="9385422973-3">(</span><span·class="p"·data-group-id="9385422973-3">)</span><span·class="w">193 ··</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tuple</span><span·class="p"·data-group-id="8749890123-3">(</span><span·class="p"·data-group-id="8749890123-3">)</span><span·class="w">
194 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9385422973-4">(</span><span·class="p"·data-group-id="9385422973-4">)</span></code></pre><p>Add·address·(and·port,·if·other·than·default)·of·the·primary·nameserver·to·use194 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8749890123-4">(</span><span·class="p"·data-group-id="8749890123-4">)</span></code></pre><p>Add·address·(and·port,·if·other·than·default)·of·the·primary·nameserver·to·use
195 for·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2905017308-1">{</span><span·class="ss">alt_nameserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IP</span><span·class="w">·</span><span·class="p"·data-group-id="2905017308-2">[</span><span·class="p">,</span><span·class="n">Port</[·...·truncated·by·diffoscope;·len:·99,·SHA:·66e2786aaad7475ad200cccb4926fae7ccfd20d9d0ccd2a0100e41b9e9056ed5·...·]-1">}</span><span·class="p">.</span><span·class="w">195 for·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8668517215-1">{</span><span·class="ss">alt_nameserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IP</span><span·class="w">·</span><span·class="p"·data-group-id="8668517215-2">[</span><span·class="p">,</span><span·class="n">Port</[·...·truncated·by·diffoscope;·len:·99,·SHA:·a609672d1c67feb936ac97ae45c32e22712f604c47a327d434e271346cd91bb6·...·]-1">}</span><span·class="p">.</span><span·class="w">
196 ··</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tuple</span><span·class="p"·data-group-id="2905017308-3">(</span><span·class="p"·data-group-id="2905017308-3">)</span><span·class="w">196 ··</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tuple</span><span·class="p"·data-group-id="8668517215-3">(</span><span·class="p"·data-group-id="8668517215-3">)</span><span·class="w">
197 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="2905017308-4">(</span><span·class="p"·data-group-id="2905017308-4">)</span></code></pre><p>Add·address·(and·port,·if·other·than·default)·of·the·secondary·nameserver·for197 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8668517215-4">(</span><span·class="p"·data-group-id="8668517215-4">)</span></code></pre><p>Add·address·(and·port,·if·other·than·default)·of·the·secondary·nameserver·for
198 <a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6738021333-1">{</span><span·class="ss">search</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Domains</span><span·class="p"·data-group-id="6738021333-1">}</span><span·class="p">.</span><span·class="w">198 <a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3879150810-1">{</span><span·class="ss">search</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Domains</span><span·class="p"·data-group-id="3879150810-1">}</span><span·class="p">.</span><span·class="w">
199 ··</span><span·class="n">Domains</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6738021333-2">[</span><span·class="nf">string</span><span·class="p"·data-group-id="6738021333-3">(</span><span·class="p"·data-group-id="6738021333-3">)</span><span·class="p"·data-group-id="6738021333-2">]</span></code></pre><p>Add·search·domains·for·<a·hre[·...·truncated·by·diffoscope;·len:·358,·SHA:·86250700fb05b42206024e72e155465fe2dab51d6488e867cf41d8961754bb3f·...·]-1">}</span><span·class="p">.</span><span·class="w">199 ··</span><span·class="n">Domains</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3879150810-2">[</span><span·class="nf">string</span><span·class="p"·data-group-id="3879150810-3">(</span><span·class="p"·data-group-id="3879150810-3">)</span><span·class="p"·data-group-id="3879150810-2">]</span></code></pre><p>Add·search·domains·for·<a·hre[·...·truncated·by·diffoscope;·len:·358,·SHA:·f0b155072f41429ab87de99009cfe7167ee5886d9cd83316a52c4e3c38452993·...·]-1">}</span><span·class="p">.</span><span·class="w">
200 ··</span><span·class="n">Methods</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9348237431-2">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="9348237431-3">(</span><span·class="p"·data-group-id="9348237431-3">)</span><span·class="p"·data-group-id="9348237431-2">]</span></code></pre><p>Specify·lookup·methods·and·in·which·order·to·try·them.·The·valid·methods·are200 ··</span><span·class="n">Methods</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0997757393-2">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="0997757393-3">(</span><span·class="p"·data-group-id="0997757393-3">)</span><span·class="p"·data-group-id="0997757393-2">]</span></code></pre><p>Specify·lookup·methods·and·in·which·order·to·try·them.·The·valid·methods·are
201 as·follows:</p><ul><li><code·class="inline">native</code>·(use·system·calls)</li><li><code·class="inline">file</code>·(use·host·data·retrieved·from·system·configuration·files·and/or·the201 as·follows:</p><ul><li><code·class="inline">native</code>·(use·system·calls)</li><li><code·class="inline">file</code>·(use·host·data·retrieved·from·system·configuration·files·and/or·the
202 user·configuration·file)</li><li><code·class="inline">dns</code>·(use·the·Erlang·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·for·nameserver·queries)</li></ul><p>The·lookup·method·<code·class="inline">string</code>·tries·to·parse·the·hostname·as·an·IPv4·or·IPv6202 user·configuration·file)</li><li><code·class="inline">dns</code>·(use·the·Erlang·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·for·nameserver·queries)</li></ul><p>The·lookup·method·<code·class="inline">string</code>·tries·to·parse·the·hostname·as·an·IPv4·or·IPv6
203 string·and·return·the·resulting·IP·address.·It·is·automatically·tried·first203 string·and·return·the·resulting·IP·address.·It·is·automatically·tried·first
204 when·<code·class="inline">native</code>·is·<em>not</em>·in·the·<code·class="inline">Methods</code>·list.·To·skip·it·in·this·case,·the204 when·<code·class="inline">native</code>·is·<em>not</em>·in·the·<code·class="inline">Methods</code>·list.·To·skip·it·in·this·case,·the
205 pseudo·lookup·method·<code·class="inline">nostring</code>·can·be·inserted·anywhere·in·the·<code·class="inline">Methods</code>205 pseudo·lookup·method·<code·class="inline">nostring</code>·can·be·inserted·anywhere·in·the·<code·class="inline">Methods</code>
206 list.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9648581716-1">{</span><span·class="ss">cache_size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="9648581716-1">}</span><span·class="p">.</span><span·class="w">206 list.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3680996244-1">{</span><span·class="ss">cache_size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="3680996244-1">}</span><span·class="p">.</span><span·class="w">
207 ··</span><span·class="n">Size</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9648581716-2">(</span><span·class="p"·data-group-id="9648581716-2">)</span></code></pre><p>Set·the·resolver·cache·size·for·<code·class="inline">dns</code>·lookups.·<code·class="inline">native</code>·lookups·are·not207 ··</span><span·class="n">Size</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3680996244-2">(</span><span·class="p"·data-group-id="3680996244-2">)</span></code></pre><p>Set·the·resolver·cache·size·for·<code·class="inline">dns</code>·lookups.·<code·class="inline">native</code>·lookups·are·not
208 cached.·Defaults·to·100·DNS·records.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4466479071-1">{</span><span·class="ss">cache_refresh</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Time</span><span·class="p"·data-group-id="4466479071-1">}</span><span·class="p">.</span><span·class="w">208 cached.·Defaults·to·100·DNS·records.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1679708360-1">{</span><span·class="ss">cache_refresh</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Time</span><span·class="p"·data-group-id="1679708360-1">}</span><span·class="p">.</span><span·class="w">
209 ··</span><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="4466479071-2">(</span><span·class="p"·data-group-id="4466479071-2">)</span></code></pre><p>Set·how·often·(in·milliseconds)·the·resolver·cache·for·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·is209 ··</span><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1679708360-2">(</span><span·class="p"·data-group-id="1679708360-2">)</span></code></pre><p>Set·how·often·(in·milliseconds)·the·resolver·cache·for·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·is
210 refreshed·(that·is,·expired·DNS·records·are·deleted).·Defaults·to·1·hour.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5756319055-1">{</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Time</span><span·class="p"·data-group-id="5756319055-1">}</span><span·class="p">.</span><span·class="w">210 refreshed·(that·is,·expired·DNS·records·are·deleted).·Defaults·to·1·hour.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4790591020-1">{</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Time</span><span·class="p"·data-group-id="4790591020-1">}</span><span·class="p">.</span><span·class="w">
211 ··</span><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5756319055-2">(</span><span·class="p"·data-group-id="5756319055-2">)</span></code></pre><p>Set·the·time·to·wait·until·retry·(in·milliseconds)·for·DNS·queries·made·by211 ··</span><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="4790591020-2">(</span><span·class="p"·data-group-id="4790591020-2">)</span></code></pre><p>Set·the·time·to·wait·until·retry·(in·milliseconds)·for·DNS·queries·made·by
212 <a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>.·Defaults·to·2·seconds.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5632810489-1">{</span><span·class="ss">retry</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="5632810489-1">}</span><span·class="p">.</span><span·class="w">212 <a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>.·Defaults·to·2·seconds.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3316772680-1">{</span><span·class="ss">retry</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="3316772680-1">}</span><span·class="p">.</span><span·class="w">
213 ··</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5632810489-2">(</span><span·class="p"·data-group-id="5632810489-2">)</span></code></pre><p>Set·the·number·of·DNS·queries·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·will·try·before·giving·up.·Defaults213 ··</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3316772680-2">(</span><span·class="p"·data-group-id="3316772680-2">)</span></code></pre><p>Set·the·number·of·DNS·queries·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·will·try·before·giving·up.·Defaults
214 to·3.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2785562650-1">{</span><span·class="ss">servfail_retry_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Time</span><span·class="p"·data-group-id="2785562650-1">}</span><span·class="p">.</span><span·class="w">214 to·3.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2771175621-1">{</span><span·class="ss">servfail_retry_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Time</span><span·class="p"·data-group-id="2771175621-1">}</span><span·class="p">.</span><span·class="w">
215 ··</span><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="2785562650-2">(</span><span·class="p"·data-group-id="2785562650-2">)</span></code></pre><p>After·all·name·servers·have·been·tried,·there·is·a·timeout·before·the·name215 ··</span><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="2771175621-2">(</span><span·class="p"·data-group-id="2771175621-2">)</span></code></pre><p>After·all·name·servers·have·been·tried,·there·is·a·timeout·before·the·name
216 servers·are·tried·again.·This·is·to·prevent·the·server·from·answering·the216 servers·are·tried·again.·This·is·to·prevent·the·server·from·answering·the
217 query·with·what's·in·the·servfail·cache,217 query·with·what's·in·the·servfail·cache,
218 <a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html#servfail_retry_timeout"><code·class="inline">inet_res</code></a>.·Defaults·to·1500·milli218 <a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html#servfail_retry_timeout"><code·class="inline">inet_res</code></a>.·Defaults·to·1500·milli
219 seconds·.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8955729248-1">{</span><span·class="ss">inet6</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bool</span><span·class="p"·data-group-id="8955729248-1">}</span><span·class="p">.</span><span·class="w">219 seconds·.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5512095399-1">{</span><span·class="ss">inet6</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bool</span><span·class="p"·data-group-id="5512095399-1">}</span><span·class="p">.</span><span·class="w">
220 ··</span><span·class="n">Bool</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span></code></pre><p>Tells·the·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·to·look·up·IPv6·addresses.·Defaults·to220 ··</span><span·class="n">Bool</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span></code></pre><p>Tells·the·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·to·look·up·IPv6·addresses.·Defaults·to
221 <code·class="inline">false</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3674092883-1">{</span><span·class="ss">usevc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bool</span><span·class="p"·data-group-id="3674092883-1">}</span><span·class="p">.</span><span·class="w">221 <code·class="inline">false</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1444944776-1">{</span><span·class="ss">usevc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bool</span><span·class="p"·data-group-id="1444944776-1">}</span><span·class="p">.</span><span·class="w">
222 ··</span><span·class="n">Bool</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span></code></pre><p>Tells·the·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·to·use·TCP·(Virtual·Circuit)·instead·of·UDP.222 ··</span><span·class="n">Bool</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span></code></pre><p>Tells·the·DNS·client·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·to·use·TCP·(Virtual·Circuit)·instead·of·UDP.
223 Defaults·to·<code·class="inline">false</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9595005551-1">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Version</span><span·class="p"·data-group-id="9595005551-1">}</span><span·class="p">.</span><span·class="w">223 Defaults·to·<code·class="inline">false</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8510624987-1">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Version</span><span·class="p"·data-group-id="8510624987-1">}</span><span·class="p">.</span><span·class="w">
224 ··</span><span·class="n">Version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="mi">0</span></code></pre><p>Sets·the·EDNS·version·that·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·will·use.·The·only·allowed·version·is224 ··</span><span·class="n">Version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="mi">0</span></code></pre><p>Sets·the·EDNS·version·that·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·will·use.·The·only·allowed·version·is
225 zero.·Defaults·to·<code·class="inline">false</code>,·which·means·not·to·use·EDNS.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8822718944-1">{</span><span·class="ss">udp_payload_size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="8822718944-1">}</span><span·class="p">.</span><span·class="w">225 zero.·Defaults·to·<code·class="inline">false</code>,·which·means·not·to·use·EDNS.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9075184173-1">{</span><span·class="ss">udp_payload_size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="9075184173-1">}</span><span·class="p">.</span><span·class="w">
226 ··</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8822718944-2">(</span><span·class="p"·data-group-id="8822718944-2">)</span></code></pre><p>Sets·the·allowed·UDP·payload·size·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·will·advertise·in·EDNS·queries.226 ··</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9075184173-2">(</span><span·class="p"·data-group-id="9075184173-2">)</span></code></pre><p>Sets·the·allowed·UDP·payload·size·<a·href="../../../lib/kernel-10.2.2/doc/html/inet_res.html"><code·class="inline">inet_res</code></a>·will·advertise·in·EDNS·queries.
227 Also·sets·the·limit·when·the·DNS·query·will·be·deemed·too·large·for·UDP227 Also·sets·the·limit·when·the·DNS·query·will·be·deemed·too·large·for·UDP
228 forcing·a·TCP·query·instead;·this·is·not·entirely·correct,·as·the·advertised228 forcing·a·TCP·query·instead;·this·is·not·entirely·correct,·as·the·advertised
229 UDP·payload·size·of·the·individual·nameserver·is·what·is·to·be·used,·but·this229 UDP·payload·size·of·the·individual·nameserver·is·what·is·to·be·used,·but·this
230 simple·strategy·will·do·until·a·more·intelligent·(probing,·caching)·algorithm230 simple·strategy·will·do·until·a·more·intelligent·(probing,·caching)·algorithm
231 needs·to·be·implemented.·Default·to·1280,·which·stems·from·the·standard231 needs·to·be·implemented.·Default·to·1280,·which·stems·from·the·standard
232 Ethernet·MTU·size.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5913554270-1">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data-group-id="5913554270-1">}</span><span·class="p">.</span><span·class="w">232 Ethernet·MTU·size.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0526677354-1">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data-group-id="0526677354-1">}</span><span·class="p">.</span><span·class="w">
233 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="5913554270-2">(</span><span·class="p"·data-group-id="5913554270-2">)</span></code></pre><p>Tell·Erlang·to·use·another·primitive·UDP·module·than·<code·class="inline">inet_udp</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p[·...·truncated·by·diffoscope;·len:·184,·SHA:·c340509a0741edee5ab1fef5e33d6f0e99fc248540f497217179fd69141efcd7·...·]-1">}</span><span·class="p">.</span><span·class="w">233 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="0526677354-2">(</span><span·class="p"·data-group-id="0526677354-2">)</span></code></pre><p>Tell·Erlang·to·use·another·primitive·UDP·module·than·<code·class="inline">inet_udp</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p[·...·truncated·by·diffoscope;·len:·184,·SHA:·04bd8c62ba764b3ba3b4fd34dea059c92a2bbd074c6f3100008d4b7699227b00·...·]-1">}</span><span·class="p">.</span><span·class="w">
234 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="6575741567-2">(</span><span·class="p"·data-group-id="6575741567-2">)</span></code></pre><p>Tell·Erlang·to·use·another·primitive·TCP·module·than·<code·class="inline">inet_tcp</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">clear_hosts</span><span·class="p">.</span></code></pre><p>Clear·the·hosts·table.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">clear_ns</span><span·class="p">.</span></code></pre><p>Clear·the·list·of·recorded·nameservers·(primary·and·secondary).</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">clear_search</span><span·class="p">.</span></code></pre><p>Clear·the·list·of·search·domains.</p></li></ul><h2·id="user-configuration-example"·class="section-heading">234 ··</span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3297777191-2">(</span><span·class="p"·data-group-id="3297777191-2">)</span></code></pre><p>Tell·Erlang·to·use·another·primitive·TCP·module·than·<code·class="inline">inet_tcp</code>.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">clear_hosts</span><span·class="p">.</span></code></pre><p>Clear·the·hosts·table.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">clear_ns</span><span·class="p">.</span></code></pre><p>Clear·the·list·of·recorded·nameservers·(primary·and·secondary).</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">clear_search</span><span·class="p">.</span></code></pre><p>Clear·the·list·of·search·domains.</p></li></ul><h2·id="user-configuration-example"·class="section-heading">
235 ··<a·href="#user-configuration-example"·class="hover-link">235 ··<a·href="#user-configuration-example"·class="hover-link">
236 ····<i·class="ri-link-m"·aria-hidden="true"></i>236 ····<i·class="ri-link-m"·aria-hidden="true"></i>
237 ··</a>237 ··</a>
238 ··<span·class="text">User·Configuration·Example</span>238 ··<span·class="text">User·Configuration·Example</span>
239 </h2>239 </h2>
240 <p>Assume·that·a·user·does·not·want·Erlang·to·use·the·native·lookup·method,·but240 <p>Assume·that·a·user·does·not·want·Erlang·to·use·the·native·lookup·method,·but
241 wants·Erlang·to·read·all·information·necessary·from·start·and·use·that·for241 wants·Erlang·to·read·all·information·necessary·from·start·and·use·that·for
242 resolving·names·and·addresses.·If·lookup·fails,·Erlang·is·to·request·the·data242 resolving·names·and·addresses.·If·lookup·fails,·Erlang·is·to·request·the·data
243 from·a·nameserver·(using·the·Erlang·DNS·client,·set·to·use·EDNS·allowing·larger243 from·a·nameserver·(using·the·Erlang·DNS·client,·set·to·use·EDNS·allowing·larger
244 responses).·The·resolver·configuration·is·updated·when·its·configuration·file244 responses).·The·resolver·configuration·is·updated·when·its·configuration·file
245 changes.·Also,·DNS·records·are·never·to·be·cached.·The·user·configuration·file245 changes.·Also,·DNS·records·are·never·to·be·cached.·The·user·configuration·file
246 (in·this·example·named·<code·class="inline">erl_inetrc</code>,·stored·in·directory·<code·class="inline">./cfg_files</code>)·can·then246 (in·this·example·named·<code·class="inline">erl_inetrc</code>,·stored·in·directory·<code·class="inline">./cfg_files</code>)·can·then
247 look·as·follows·(Unix):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·--·ERLANG·INET·CONFIGURATION·FILE·--</span><span·class="w">247 look·as·follows·(Unix):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·--·ERLANG·INET·CONFIGURATION·FILE·--</span><span·class="w">
248 </span><span·class="c1">%%·read·the·hosts·file</span><span·class="w">248 </span><span·class="c1">%%·read·the·hosts·file</span><span·class="w">
249 </span><span·class="p"·data-group-id="0342464940-1">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/etc/hosts&quot;</span><span·class="p"·data-group-id="03424[·...·truncated·by·diffoscope;·len:·5,·SHA:·b8f71d439376f9cf5f2f064b383610c632c303f191e9fd4947eba7ebd4133cd7·...·]-1">}</span><span·class="p">.</span><span·class="w">249 </span><span·class="p"·data-group-id="7173961343-1">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/etc/hosts&quot;</span><span·class="p"·data-group-id="71739[·...·truncated·by·diffoscope;·len:·5,·SHA:·832cbd96b201bb6d5f85152e53c410d8f5e2219a8ef0790785f7e4b73d84e129·...·]-1">}</span><span·class="p">.</span><span·class="w">
250 </span><span·class="c1">%%·add·a·particular·host</span><span·class="w">250 </span><span·class="c1">%%·add·a·particular·host</span><span·class="w">
251 </span><span·class="p"·data-group-id="0342464940-2">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0342464940-3">{</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·405bb7b88a0b6e1c1217c9c86948f2bafa62b6dcdc0cffaf71842646134a8728·...·]-2">}</span><span·class="p">.</span><span·class="w">251 </span><span·class="p"·data-group-id="7173961343-2">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7173961343-3">{</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·d9395addb17a93299d122a9d40b9a941a281544a629bc8a8e2dacf57f17098b0·...·]-2">}</span><span·class="p">.</span><span·class="w">
252 </span><span·class="c1">%%·do·not·monitor·the·hosts·file</span><span·class="w">252 </span><span·class="c1">%%·do·not·monitor·the·hosts·file</span><span·class="w">
253 </span><span·class="p"·data-group-id="0342464940-5">{</span><span·class="ss">hosts_file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p"·data-group-id="0342464940-5">}</span><span·class="p">.</span><span·class="w">253 </span><span·class="p"·data-group-id="7173961343-5">{</span><span·class="ss">hosts_file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p"·data-group-id="7173961343-5">}</span><span·class="p">.</span><span·class="w">
254 </span><span·class="c1">%%·read·and·monitor·nameserver·config·from·here</span><span·class="w">254 </span><span·class="c1">%%·read·and·monitor·nameserver·config·from·here</span><span·class="w">
255 </span><span·class="p"·data-group-id="0342464940-6">{</span><span·class="ss">resolv_conf</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/usr/local/etc/resolv.conf&quot;</span><span·class="p"·data-group-id="0342464940-6">}</span><span·class="p">.</span><span·class="w">255 </span><span·class="p"·data-group-id="7173961343-6">{</span><span·class="ss">resolv_conf</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/usr/local/etc/resolv.conf&quot;</span><span·class="p"·data-group-id="7173961343-6">}</span><span·class="p">.</span><span·class="w">
256 </span><span·class="c1">%%·enable·EDNS</span><span·class="w">256 </span><span·class="c1">%%·enable·EDNS</span><span·class="w">
257 </span><span·class="p"·data-group-id="0342464940-7">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0342464940-7">}</span><span·class="p">.</span><span·class="w">257 </span><span·class="p"·data-group-id="7173961343-7">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7173961343-7">}</span><span·class="p">.</span><span·class="w">
258 </span><span·class="c1">%%·disable·caching</span><span·class="w">258 </span><span·class="c1">%%·disable·caching</span><span·class="w">
259 </span><span·class="p"·data-group-id="0342464940-8">{</span><span·class="ss">cache_size</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="0342464940-8">}</span><span·class="p">.</span><span·class="w">259 </span><span·class="p"·data-group-id="7173961343-8">{</span><span·class="ss">cache_size</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="7173961343-8">}</span><span·class="p">.</span><span·class="w">
260 </span><span·class="c1">%%·specify·lookup·method</span><span·class="w">260 </span><span·class="c1">%%·specify·lookup·method</span><span·class="w">
261 </span><span·class="p"·data-group-id="0342464940-9">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0342464940-10">[</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dns</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·9f9550dec438bceef7cb891deb5fd9189140f32b745b289e81ca3bbc2a15ac9b·...·]-9">}</span><span·class="p">.</span></code></pre><p>And·Erlang·can,·for·example,·be·started·as·follows:</p><pre><code·class="text">%·erl·-sname·my_node·-kernel·inetrc·'&quot;./cfg_files/erl_inetrc&quot;'</code></pre>261 </span><span·class="p"·data-group-id="7173961343-9">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7173961343-10">[</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dns</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·34efdb2787516d3e5a9a2dcb926ca82d04783e1991ce50ae14af4db52bd13ae9·...·]-9">}</span><span·class="p">.</span></code></pre><p>And·Erlang·can,·for·example,·be·started·as·follows:</p><pre><code·class="text">%·erl·-sname·my_node·-kernel·inetrc·'&quot;./cfg_files/erl_inetrc&quot;'</code></pre>
262 </div>262 </div>
  
263 <div·class="bottom-actions"·id="bottom-actions">263 <div·class="bottom-actions"·id="bottom-actions">
264 ··<div·class="bottom-actions-item">264 ··<div·class="bottom-actions-item">
  
265 ······<a·href="driver.html"·class="bottom-actions-button"·rel="prev">265 ······<a·href="driver.html"·class="bottom-actions-button"·rel="prev">
266 ········<span·class="subheader">266 ········<span·class="subheader">
16.1 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/init.html
    
Offset 157, 16 lines modifiedOffset 157, 16 lines modified
157 BF</code></pre><p>If·multiple·<code·class="inline">-eval</code>·expressions·are·specified,·they·are·evaluated·sequentially157 BF</code></pre><p>If·multiple·<code·class="inline">-eval</code>·expressions·are·specified,·they·are·evaluated·sequentially
158 in·the·order·specified.·<code·class="inline">-eval</code>·expressions·are·evaluated·sequentially·with158 in·the·order·specified.·<code·class="inline">-eval</code>·expressions·are·evaluated·sequentially·with
159 <code·class="inline">-s</code>·and·<code·class="inline">-run</code>·function·calls·(this·also·in·the·order·specified).·As·with159 <code·class="inline">-s</code>·and·<code·class="inline">-run</code>·function·calls·(this·also·in·the·order·specified).·As·with
160 <code·class="inline">-s</code>·and·<code·class="inline">-run</code>,·an·evaluation·that·does·not·terminate·blocks·the·system160 <code·class="inline">-s</code>·and·<code·class="inline">-run</code>,·an·evaluation·that·does·not·terminate·blocks·the·system
161 initialization·process.</p></li><li><p><strong><code·class="inline">-extra</code></strong>·-·Everything·following·<code·class="inline">-extra</code>·is·considered·plain·arguments·and161 initialization·process.</p></li><li><p><strong><code·class="inline">-extra</code></strong>·-·Everything·following·<code·class="inline">-extra</code>·is·considered·plain·arguments·and
162 can·be·retrieved·using·<a·href="#get_plain_arguments/0"><code·class="inline">get_plain_arguments/0</code></a>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-extra·+A·1·--</span><span·class="w">162 can·be·retrieved·using·<a·href="#get_plain_arguments/0"><code·class="inline">get_plain_arguments/0</code></a>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-extra·+A·1·--</span><span·class="w">
163 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">163 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
164 1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="2073883944-1">(</span><span·class="p"·data-group-id="2073883944-1">)</span><span·class="p">.</span><span·class="w">164 1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="3637843365-1">(</span><span·class="p"·data-group-id="3637843365-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="2073883944-2">[</span><span·class="s">&quot;+A&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="s">&quot;--&quot;</span><span·class="p"·data-group-id="2073883944-2">]</span></code></pre><p>The·<code·class="inline">-extra</code>·flag·can·be·passed·on·the·command·line,·through·<code·class="inline">ERL_*FLAGS</code>·or165 </span><span·class="p"·data-group-id="3637843365-2">[</span><span·class="s">&quot;+A&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="s">&quot;--&quot;</span><span·class="p"·data-group-id="3637843365-2">]</span></code></pre><p>The·<code·class="inline">-extra</code>·flag·can·be·passed·on·the·command·line,·through·<code·class="inline">ERL_*FLAGS</code>·or
166 <code·class="inline">-args_file</code>.·It·only·effects·the·remaining·command-line·flags·in·the·entity166 <code·class="inline">-args_file</code>.·It·only·effects·the·remaining·command-line·flags·in·the·entity
167 in·which·it·is·passed.·If·multiple·<code·class="inline">-extra</code>·flags·are·passed·they·are167 in·which·it·is·passed.·If·multiple·<code·class="inline">-extra</code>·flags·are·passed·they·are
168 concatenated·using·the·same·order·rules·as·<code·class="inline">ERL_*FLAGS</code>·or·<code·class="inline">-args_file</code>·in168 concatenated·using·the·same·order·rules·as·<code·class="inline">ERL_*FLAGS</code>·or·<code·class="inline">-args_file</code>·in
169 which·they·are·given.</p><p>Example:</p><pre><code·class="text">%·ERL_AFLAGS=&quot;-extra·a&quot;·ERL_ZFLAGS=&quot;-extra·d&quot;·erl·-extra·b·-extra·c169 which·they·are·given.</p><p>Example:</p><pre><code·class="text">%·ERL_AFLAGS=&quot;-extra·a&quot;·ERL_ZFLAGS=&quot;-extra·d&quot;·erl·-extra·b·-extra·c
170 ...170 ...
171 1&gt;·init:get_plain_arguments().171 1&gt;·init:get_plain_arguments().
172 [&quot;a&quot;,&quot;b&quot;,&quot;-extra&quot;,&quot;c&quot;,&quot;d&quot;]</code></pre></li><li><p><strong><code·class="inline">-S·Mod·[Func·[Arg1,·Arg2,·...]]</code></strong>·-·Evaluates·the·specified·function·call172 [&quot;a&quot;,&quot;b&quot;,&quot;-extra&quot;,&quot;c&quot;,&quot;d&quot;]</code></pre></li><li><p><strong><code·class="inline">-S·Mod·[Func·[Arg1,·Arg2,·...]]</code></strong>·-·Evaluates·the·specified·function·call
Offset 212, 21 lines modifiedOffset 212, 21 lines modified
212 ····<i·class="ri-link-m"·aria-hidden="true"></i>212 ····<i·class="ri-link-m"·aria-hidden="true"></i>
213 ··</a>213 ··</a>
214 ··<span·class="text">Example</span>214 ··<span·class="text">Example</span>
215 </h2>215 </h2>
216 <pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·--·a·b·-children·thomas·claire·-ages·7·3·--·x·y</span><span·class="w">216 <pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·--·a·b·-children·thomas·claire·-ages·7·3·--·x·y</span><span·class="w">
217 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">217 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
  
218 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="4713091822-1">(</span><span·class="p"·data-group-id="4713091822-1">)</span><span·class="p">.</span><span·class="w">218 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_plain_arguments</span><span·class="p"·data-group-id="7938134186-1">(</span><span·class="p"·data-group-id="7938134186-1">)</span><span·class="p">.</span><span·class="w">
219 </span><span·class="p"·data-group-id="4713091822-2">[</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&quot;x&quot;</span><span·class="p">,</span><span·class="s">&quot;y&quot;</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·af001797d2c30dcaa31aa76bed761f388c1b816a70f374d8e17a72bd692cdf6d·...·]-2">]</span><span·class="gp·unselectable">219 </span><span·class="p"·data-group-id="7938134186-2">[</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&quot;x&quot;</span><span·class="p">,</span><span·class="s">&quot;y&quot;</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·2673c4d452452148028c96d08bbd339e752a580be114eac0a1a562f826e88ffb·...·]-2">]</span><span·class="gp·unselectable">
220 2&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="4713091822-3">(</span><span·class="ss">children</span><span·class="p"·data-group-id="4713091822-3">)</span><span·class="p">.</span><span·class="w">220 2&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="7938134186-3">(</span><span·class="ss">children</span><span·class="p"·data-group-id="7938134186-3">)</span><span·class="p">.</span><span·class="w">
221 </span><span·class="p"·data-group-id="4713091822-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4713091822-5">[</span><span·class="p"·data-group-id="4713091822-6">[</span><span·class="s">&quot;thomas&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·a3259c38d329a14d76c95f0a3e7f765682b57b678addf3c64fd9c7800161ed78·...·]-4">}</span><span·class="gp·unselectable">221 </span><span·class="p"·data-group-id="7938134186-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7938134186-5">[</span><span·class="p"·data-group-id="7938134186-6">[</span><span·class="s">&quot;thomas&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·9ebd05161d485fde1d549c3f86eddd4f718068ac3286ec8ded036f58fa355ff9·...·]-4">}</span><span·class="gp·unselectable">
222 3&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="4713091822-7">(</span><span·class="ss">ages</span><span·class="p"·data-group-id="4713091822-7">)</span><span·class="p">.</span><span·class="w">222 3&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="7938134186-7">(</span><span·class="ss">ages</span><span·class="p"·data-group-id="7938134186-7">)</span><span·class="p">.</span><span·class="w">
223 </span><span·class="p"·data-group-id="4713091822-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4713091822-9">[</span><span·class="p"·data-group-id="4713091822-10">[</span><span·class="s">&quot;7&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·191,·SHA:·3e1233ca64519ea6c8c3755bbcd4343a994b323fc7814dcaf2c5608117017e0e·...·]-8">}</span><span·class="gp·unselectable">223 </span><span·class="p"·data-group-id="7938134186-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7938134186-9">[</span><span·class="p"·data-group-id="7938134186-10">[</span><span·class="s">&quot;7&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·191,·SHA:·437952ded653abee14c4e01eeaf64dd998adaed4dac476a4e77506b895e43117·...·]-8">}</span><span·class="gp·unselectable">
224 4&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="4713091822-11">(</span><span·class="ss">silly</span><span·class="p"·data-group-id="4713091822-11">)</span><span·class="p">.</span><span·class="w">224 4&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="7938134186-11">(</span><span·class="ss">silly</span><span·class="p"·data-group-id="7938134186-11">)</span><span·class="p">.</span><span·class="w">
225 </span><span·class="ss">error</span></code></pre><h2·id="module-see-also"·class="section-heading">225 </span><span·class="ss">error</span></code></pre><h2·id="module-see-also"·class="section-heading">
226 ··<a·href="#module-see-also"·class="hover-link">226 ··<a·href="#module-see-also"·class="hover-link">
227 ····<i·class="ri-link-m"·aria-hidden="true"></i>227 ····<i·class="ri-link-m"·aria-hidden="true"></i>
228 ··</a>228 ··</a>
229 ··<span·class="text">See·Also</span>229 ··<span·class="text">See·Also</span>
230 </h2>230 </h2>
231 <p><a·href="erl_prim_loader.html"><code·class="inline">erl_prim_loader</code></a>,·<a·href="../../../lib/kernel-10.2.2/doc/html/heart.html"><code·class="inline">heart</code></a></p>231 <p><a·href="erl_prim_loader.html"><code·class="inline">erl_prim_loader</code></a>,·<a·href="../../../lib/kernel-10.2.2/doc/html/heart.html"><code·class="inline">heart</code></a></p>
Offset 512, 20 lines modifiedOffset 512, 20 lines modified
512 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_argument(Flag)·->·{ok,·Arg}·|·error·when·Flag·::·<a·href="erlang.html#t:atom/0">atom</a>(),·Arg·::·[Values·::·[<a·href="erlang.html#t:string/0">string</a>()]].</pre>512 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_argument(Flag)·->·{ok,·Arg}·|·error·when·Flag·::·<a·href="erlang.html#t:atom/0">atom</a>(),·Arg·::·[Values·::·[<a·href="erlang.html#t:string/0">string</a>()]].</pre>
  
513 ······</div>513 ······</div>
  
514 <p>Returns·all·values·associated·with·the·command-line·user·flag·<code·class="inline">Flag</code>.</p><p>If·<code·class="inline">Flag</code>·is·provided·several·times,·each·<code·class="inline">Values</code>·is·returned·in·preserved·order.514 <p>Returns·all·values·associated·with·the·command-line·user·flag·<code·class="inline">Flag</code>.</p><p>If·<code·class="inline">Flag</code>·is·provided·several·times,·each·<code·class="inline">Values</code>·is·returned·in·preserved·order.
515 Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-a·b·c·-a·d</span><span·class="w">515 Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-a·b·c·-a·d</span><span·class="w">
516 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">516 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
517 1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="9641524393-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="9641524393-1">)</span><span·class="p">.</span><span·class="w">517 1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="7013658896-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="7013658896-1">)</span><span·class="p">.</span><span·class="w">
518 </span><span·class="p"·data-group-id="9641524393-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9641524393-3">[</span><span·class="p"·data-group-id="9641524393-4">[</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&q[·...·truncated·by·diffoscope;·len:·331,·SHA:·950ee5f6ae1cd34a5171af645188df097de2f22f5f5e3b7e287a7a131ef9fb64·...·]-2">}</span></code></pre><p>The·following·flags·are·defined·automatically·and·can·be·retrieved·using·this518 </span><span·class="p"·data-group-id="7013658896-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7013658896-3">[</span><span·class="p"·data-group-id="7013658896-4">[</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&q[·...·truncated·by·diffoscope;·len:·331,·SHA:·96c0f7d42a19a38976fde5652054a737c1b196a81a394094154628c2dc6c4c30·...·]-2">}</span></code></pre><p>The·following·flags·are·defined·automatically·and·can·be·retrieved·using·this
519 function:</p><ul><li><p><strong><code·class="inline">root</code></strong>·-·The·installation·directory·of·Erlang/OTP,·<code·class="inline">$ROOT</code>:</p><pre><code·class="text">2&gt;·init:get_argument(root).519 function:</p><ul><li><p><strong><code·class="inline">root</code></strong>·-·The·installation·directory·of·Erlang/OTP,·<code·class="inline">$ROOT</code>:</p><pre><code·class="text">2&gt;·init:get_argument(root).
520 {ok,[[&quot;/usr/local/otp/releases/otp_beam_solaris8_r10b_patched&quot;]]}</code></pre></li><li><p><strong><code·class="inline">progname</code></strong>·-·The·name·of·the·program·which·started·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="2323515229-1">(</span><span·class="ss">progname</span><span·class="p"·data-group-id="2323515229-1">)</span><span·class="p">.</span><span·class="w">520 {ok,[[&quot;/usr/local/otp/releases/otp_beam_solaris8_r10b_patched&quot;]]}</code></pre></li><li><p><strong><code·class="inline">progname</code></strong>·-·The·name·of·the·program·which·started·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="1854187043-1">(</span><span·class="ss">progname</span><span·class="p"·data-group-id="1854187043-1">)</span><span·class="p">.</span><span·class="w">
521 </span><span·class="p"·data-group-id="2323515229-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2323515229-3">[</span><span·class="p"·data-group-id="2323515229-4">[</span><span·class="s">&quot;erl&quot;</span><span·class="p"·data-group-id="2323515229-4">]</span><span·class="p"·data-group-id="2323515229-3">]</span><span·class="p"·data-group-id="2323515229-2">}</span></code></pre></li><li><p><strong><code·class="inline"·id="home">home</code></strong>·-·The·home·directory·(on·Unix,·the·value·of·$HOME):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="3815431950-1">(</span><span·class="ss">home</span><span·class="p"·data-group-id="3815431950-1">)</span><span·class="p">.</span><span·class="w"> 
522 </span><span·class="p"·data-group-id="3815431950-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3815431950-3">[</span><span·class="p"·data-group-id="3815431950-4">[</span><span·class="s">&quot;/home/harry&quot;</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·262,·SHA:·3defc4a817370e973caa78266ce317d10d2d7c5cedcba6cfc02b9182efd66145·...·]>521 </span><span·class="p"·data-group-id="1854187043-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1854187043-3">[</span><span·class="p"·data-group-id="1854187043-4">[</span><span·class="s">&quot;erl&quot;</span><span·class="p"·data-group-id="185418704[·...·truncated·by·diffoscope;·len:·611,·SHA:·6e12ae9f3677aad76696ba25debed71f8469f0e963f8a3036726c4508e63066f·...·]>
 522 </span><span·class="p"·data-group-id="0980545209-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0980545209-3">[</span><span·class="p"·data-group-id="0980545209-4">[</span><span·class="s">&quot;/home/harry&quot;</span><span·class="p"·data-group-id="0980545209-4">]</span><span·class="p"·data-group-id="0980545209-3">]</span><span·class="p"·data-group-id="0980545209-2">}</span></code></pre></li></ul><p>Returns·<code·class="inline">error</code>·if·no·value·is·associated·with·<code·class="inline">Flag</code>.</p>
523 ··</section>523 ··</section>
524 </section>524 </section>
525 <section·class="detail"·id="get_arguments/0">525 <section·class="detail"·id="get_arguments/0">
  
526 ··<div·class="detail-header">526 ··<div·class="detail-header">
527 ····<a·href="#get_arguments/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">527 ····<a·href="#get_arguments/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
528 ······<i·class="ri-link-m"·aria-hidden="true"></i>528 ······<i·class="ri-link-m"·aria-hidden="true"></i>
51.0 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/match_spec.html
    
Offset 367, 78 lines modifiedOffset 367, 78 lines modified
367 language,·that·is,·for·their·side·effects.·Functions·with·side·effects·are·also367 language,·that·is,·for·their·side·effects.·Functions·with·side·effects·are·also
368 allowed·when·tracing.</p><h2·id="tracing-examples"·class="section-heading">368 allowed·when·tracing.</p><h2·id="tracing-examples"·class="section-heading">
369 ··<a·href="#tracing-examples"·class="hover-link">369 ··<a·href="#tracing-examples"·class="hover-link">
370 ····<i·class="ri-link-m"·aria-hidden="true"></i>370 ····<i·class="ri-link-m"·aria-hidden="true"></i>
371 ··</a>371 ··</a>
372 ··<span·class="text">Tracing·Examples</span>372 ··<span·class="text">Tracing·Examples</span>
373 </h2>373 </h2>
374 <p>Match·an·argument·list·of·three,·where·the·first·and·third·arguments·are·equal:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0239645412-1">[</span><span·class="p"·data-group-id="0239645412-2">{</span><span·class="p"·data-group-id="0239645412-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·cla[·...·truncated·by·diffoscope;·len:·116,·SHA:·848810b2aab86d4e43517394197d71b5ba07e54edb70c6c958e5fa73cfb43592·...·]-3">]</span><span·class="p">,</span><span·class="w">374 <p>Match·an·argument·list·of·three,·where·the·first·and·third·arguments·are·equal:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9032309408-1">[</span><span·class="p"·data-group-id="9032309408-2">{</span><span·class="p"·data-group-id="9032309408-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·cla[·...·truncated·by·diffoscope;·len:·116,·SHA:·347d0f11d6d1611cb0fc4744cea6a2134ac48e9a735fb6137597a1acbd5d3287·...·]-3">]</span><span·class="p">,</span><span·class="w">
375 ··</span><span·class="p"·data-group-id="0239645412-4">[</span><span·class="p"·data-group-id="0239645412-4">]</span><span·class="p">,</span><span·class="w">375 ··</span><span·class="p"·data-group-id="9032309408-4">[</span><span·class="p"·data-group-id="9032309408-4">]</span><span·class="p">,</span><span·class="w">
376 ··</span><span·class="p"·data-group-id="0239645412-5">[</span><span·class="p"·data-group-id="0239645412-5">]</span><span·class="p"·data-group-id="0239645412-2">}</span><span·class="p"·data-group-id="0239645412-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·second·argument·[·...·truncated·by·diffoscope;·len:·473,·SHA:·45275debe22bdc3e3833fee23a4e7167d75540dc13e0ca3df519759ea013ef6f·...·]-3">]</span><span·class="p">,</span><span·class="w">376 ··</span><span·class="p"·data-group-id="9032309408-5">[</span><span·class="p"·data-group-id="9032309408-5">]</span><span·class="p"·data-group-id="9032309408-2">}</span><span·class="p"·data-group-id="9032309408-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·second·argument·[·...·truncated·by·diffoscope;·len:·473,·SHA:·776cf0bd5dc775b9b595beeb11caa24b6458b1d323e33998753d47a227d9ff99·...·]-3">]</span><span·class="p">,</span><span·class="w">
377 ··</span><span·class="p"·data-group-id="7280013733-4">[</span><span·class="p"·data-group-id="7280013733-5">{</span><span·class="w">·</span><span·class="ss">&#39;&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·132,·SHA:·14507760fa39a2a537334d3a026bdb5d066a279d9b256ef4baf2046addd57503·...·]-4">]</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="p"·data-group-id="3926383160-4">[</span><span·class="p"·data-group-id="3926383160-5">{</span><span·class="w">·</span><span·class="ss">&#39;&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·132,·SHA:·c9b84fbdc7ffdd4e855e5c8cb82f2d5846770b334d555474ee61f0c92c28e320·...·]-4">]</span><span·class="p">,</span><span·class="w">
378 ··</span><span·class="p"·data-group-id="7280013733-6">[</span><span·class="p"·data-group-id="7280013733-6">]</span><span·class="p"·data-group-id="7280013733-2">}</span><span·class="p"·data-group-id="7280013733-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·third·argument·is·either·a·tuple378 ··</span><span·class="p"·data-group-id="3926383160-6">[</span><span·class="p"·data-group-id="3926383160-6">]</span><span·class="p"·data-group-id="3926383160-2">}</span><span·class="p"·data-group-id="3926383160-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·third·argument·is·either·a·tuple
379 containing·argument·one·and·two,·<em>or</em>·a·list·beginning·with·argument·one·and·two379 containing·argument·one·and·two,·<em>or</em>·a·list·beginning·with·argument·one·and·two
380 (that·is,·<code·class="inline">[a,b,[a,b,c]]</code>·or·<code·class="inline">[a,b,{a,b}]</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9902422466-1">[</span><span·class="p"·data-group-id="9902422466-2">{</span><span·class="p"·data-group-id="9902422466-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·117,·SHA:·14bf38e7b1c57d6b32514d2a879c92ef2f7802039918431d6ead482cc954ad7d·...·]-3">]</span><span·class="p">,</span><span·class="w">380 (that·is,·<code·class="inline">[a,b,[a,b,c]]</code>·or·<code·class="inline">[a,b,{a,b}]</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3698320282-1">[</span><span·class="p"·data-group-id="3698320282-2">{</span><span·class="p"·data-group-id="3698320282-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·117,·SHA:·c66112e4972271edebc84e61896e417d483ee65a71ec0109bea74f56ddd2165d·...·]-3">]</span><span·class="p">,</span><span·class="w">
381 ··</span><span·class="p"·data-group-id="9902422466-4">[</span><span·class="p"·data-group-id="9902422466-5">{</span><span·class="ss">&#39;orelse&#39;</span><span·class="p">,</span><span·class="w">381 ··</span><span·class="p"·data-group-id="3698320282-4">[</span><span·class="p"·data-group-id="3698320282-5">{</span><span·class="ss">&#39;orelse&#39;</span><span·class="p">,</span><span·class="w">
382 ······</span><span·class="p"·data-group-id="9902422466-6">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$3&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9902422466-7">{</span><span·class=[·...·truncated·by·diffoscope;·len:·284,·SHA:·f5ae000935bcbf715cfec4b271d688cb0fca9d07c4b707f2c42dc39f23cbcf52·...·]-6">}</span><span·class="p">,</span><span·class="w">382 ······</span><span·class="p"·data-group-id="3698320282-6">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$3&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3698320282-7">{</span><span·class=[·...·truncated·by·diffoscope;·len:·284,·SHA:·c0bd08fbb64595b0209da72c17a851202f751032f6208d09924e7987004a4107·...·]-6">}</span><span·class="p">,</span><span·class="w">
383 ······</span><span·class="p"·data-group-id="9902422466-9">{</span><span·class="ss">&#39;and&#39;</span><span·class="p">,</span><span·class="w">383 ······</span><span·class="p"·data-group-id="3698320282-9">{</span><span·class="ss">&#39;and&#39;</span><span·class="p">,</span><span·class="w">
384 ········</span><span·class="p"·data-group-id="9902422466-10">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9902422466-11">{</span><span·clas[·...·truncated·by·diffoscope;·len:·195,·SHA:·7c5f67158c10993912638fdfda68674a4b9bfb5c33a2ea3a93f1fa0c32d05d98·...·]-10">}</span><span·class="p">,</span><span·class="w">384 ········</span><span·class="p"·data-group-id="3698320282-10">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3698320282-11">{</span><span·clas[·...·truncated·by·diffoscope;·len:·195,·SHA:·b2a29bbf70e942fffe701f64a397e36a8302e3ff367249f54ac711ed971e7270·...·]-10">}</span><span·class="p">,</span><span·class="w">
385 ········</span><span·class="p"·data-group-id="9902422466-12">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9902422466-13">{</span><span·clas[·...·truncated·by·diffoscope;·len:·537,·SHA:·b51563f80f1d3a3afb82fd552d326747afc94cdb974e83d7105f885aaea59d87·...·]-4">]</span><span·class="p">,</span><span·class="w">385 ········</span><span·class="p"·data-group-id="3698320282-12">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3698320282-13">{</span><span·clas[·...·truncated·by·diffoscope;·len:·537,·SHA:·19676871e79852355bafb0904344ef4f16c5f7969407de0fb9a44fe191906afb·...·]-4">]</span><span·class="p">,</span><span·class="w">
386 ··</span><span·class="p"·data-group-id="9902422466-15">[</span><span·class="p"·data-group-id="9902422466-15">]</span><span·class="p"·data-group-id="9902422466-2">}</span><span·class="p"·data-group-id="9902422466-1">]</span></code></pre><p>The·above·problem·can·also·be·solved·as·follows:</p><pre>[·...·truncated·by·diffoscope;·len:·411,·SHA:·d7f56929fb411ab85b3794cf848cf1ac0b945a12486e46c434322fab1e5552af·...·]-4">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2}],·[],·[]},386 ··</span><span·class="p"·data-group-id="3698320282-15">[</span><span·class="p"·data-group-id="3698320282-15">]</span><span·class="p"·data-group-id="3698320282-2">}</span><span·class="p"·data-group-id="3698320282-1">]</span></code></pre><p>The·above·problem·can·also·be·solved·as·follows:</p><pre>[·...·truncated·by·diffoscope;·len:·411,·SHA:·7b70983b5776d2333abe63070333cbb3ecee0097f6069cc0583af2cef6a482d0·...·]-4">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2}],·[],·[]},
387 ·{[&#39;</span><span·class="sc">$1</span><span·class="ss">&#39;,·&#39;</span><span·class="sc">$2</span><span·class="ss">&#39;,·[&#39;</span><span·class="sc">$1</span><span·class="ss">&#39;,·&#39;</span><span·class="sc">$2</span><span·class="ss">&#39;·|·&#39;</span><span·class="p">_</span><span·class="err">&#39;</span><span·class="p">]</span><span·class="p">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8318750316-5">[</span><span·class="p"·data-group-id="8318750316-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8318750316-6">[</span><span·class="p"·data-group-id="8318750316-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·021ccba6fcb91ec33e61ec7825db9c6f9da52b14861a8abd4424aad362a81f19·...·]-3">]</span></code></pre><p>Match·two·arguments,·where·the·first·is·a·tuple·beginning·with·a·list·that·in387 ·{[&#39;</span><span·class="sc">$1</span><span·class="ss">&#39;,·&#39;</span><span·class="sc">$2</span><span·class="ss">&#39;,·[&#39;</span><span·class="sc">$1</span><span·class="ss">&#39;,·&#39;</span><span·class="sc">$2</span><span·class="ss">&#39;·|·&#39;</span><span·class="p">_</span><span·class="err">&#39;</span><span·class="p">]</span><span·class="p">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9640457741-5">[</span><span·class="p"·data-group-id="9640457741-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9640457741-6">[</span><span·class="p"·data-group-id="9640457741-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·7d754b717c959769262ddbd9fccc26b4cf9a341b269a5bec61c0e9b66ebb35c5·...·]-3">]</span></code></pre><p>Match·two·arguments,·where·the·first·is·a·tuple·beginning·with·a·list·that·in
388 turn·begins·with·the·second·argument·times·two·(that·is,·<code·class="inline">[{[4,x],y},2]</code>·or388 turn·begins·with·the·second·argument·times·two·(that·is,·<code·class="inline">[{[4,x],y},2]</code>·or
389 <code·class="inline">[{[8],·y,·z},4])</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7127554138-1">[</span><span·class="p"·data-group-id="7127554138-2">{</span><span·class="p"·data-group-id="7127554138-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·1172,·SHA:·723cf1a89d425899fe1099ec5c9977131e786b5bea6ba71f348f17b3c8c1c197·...·]38-4">]</span><span·class="p">,</span><span·class="w">389 <code·class="inline">[{[8],·y,·z},4])</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8832271538-1">[</span><span·class="p"·data-group-id="8832271538-2">{</span><span·class="p"·data-group-id="8832271538-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·1172,·SHA:·31972a327b9d5051320cd120c213ace978eda33c63188f74e957275ae9b9f5df·...·]38-4">]</span><span·class="p">,</span><span·class="w">
390 ··</span><span·class="p"·data-group-id="7127554138-9">[</span><span·class="p"·data-group-id="7127554138-9">]</span><span·class="p"·data-group-id="7127554138-2">}</span><span·class="p"·data-group-id="7127554138-1">]</span></code></pre><p>Match·three·arguments.·When·all·three·are·equal·and·are·numbers,·append·the390 ··</span><span·class="p"·data-group-id="8832271538-9">[</span><span·class="p"·data-group-id="8832271538-9">]</span><span·class="p"·data-group-id="8832271538-2">}</span><span·class="p"·data-group-id="8832271538-1">]</span></code></pre><p>Match·three·arguments.·When·all·three·are·equal·and·are·numbers,·append·the
391 process·dump·to·the·trace·message,·otherwise·let·the·trace·message·be·&quot;as·is&quot;,391 process·dump·to·the·trace·message,·otherwise·let·the·trace·message·be·&quot;as·is&quot;,
392 but·set·the·sequential·trace·token·label·to·4711:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7074682253-1">[</span><span·class="p"·data-group-id="7074682253-2">{</span><span·class="p"·data-group-id="7074682253-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·115,·SHA:·5e08e856306ae2d86a91af87c659fd88255a0d1baafade5d9022277e8b870815·...·]53-3">]</span><span·class="p">,</span><span·class="w">392 but·set·the·sequential·trace·token·label·to·4711:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2257681353-1">[</span><span·class="p"·data-group-id="2257681353-2">{</span><span·class="p"·data-group-id="2257681353-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·115,·SHA:·f00e883644c993af3ac58fb73cc78c42494b8a3855612d8115130af75a74c0df·...·]53-3">]</span><span·class="p">,</span><span·class="w">
393 ··</span><span·class="p"·data-group-id="7074682253-4">[</span><span·class="p"·data-group-id="7074682253-5">{</span><span·class="nb">is_number</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="7074682253-5">}</span><span·class[·...·truncated·by·diffoscope;·len:·28,·SHA:·03e68f797a50938d0ee9ea95da007db053376ed5c57e6d3db335ed4ea91ffb76·...·]53-4">]</span><span·class="p">,</span><span·class="w">393 ··</span><span·class="p"·data-group-id="2257681353-4">[</span><span·class="p"·data-group-id="2257681353-5">{</span><span·class="nb">is_number</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2257681353-5">}</span><span·class[·...·truncated·by·diffoscope;·len:·28,·SHA:·6a78fb676be07be7d8e6ec6e7dc01d95e6b045712303a7e7620a414fbd1533d8·...·]53-4">]</span><span·class="p">,</span><span·class="w">
394 ··</span><span·class="p"·data-group-id="7074682253-6">[</span><span·class="p"·data-group-id="7074682253-7">{</span><span·class="ss">message</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7074682253-8">{</span><span·class="ss">process_dump</span><span·class="[·...·truncated·by·diffoscope;·len:·185,·SHA:·dcdd157059943c04b5da7a69fc5cfec361e309204ff9b7385bbb8964bbaedd45·...·]53-2">}</span><span·class="p">,</span><span·class="w">394 ··</span><span·class="p"·data-group-id="2257681353-6">[</span><span·class="p"·data-group-id="2257681353-7">{</span><span·class="ss">message</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2257681353-8">{</span><span·class="ss">process_dump</span><span·class="[·...·truncated·by·diffoscope;·len:·185,·SHA:·7963116dc7c7bf4433793d0af4fbd28e777585c33863df6806b3c6d6fde340d4·...·]53-2">}</span><span·class="p">,</span><span·class="w">
395 ·</span><span·class="p"·data-group-id="7074682253-9">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7074682253-10">[</span><span·class="p"·data-group-id="7074682253-10">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·503,·SHA:·86925c2191b37d35459296d22966271e603480bb05ca272ac2660285be44078a·...·]53-1">]</span></code></pre><p>As·can·be·noted·above,·the·parameter·list·can·be·matched·against·a·single395 ·</span><span·class="p"·data-group-id="2257681353-9">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2257681353-10">[</span><span·class="p"·data-group-id="2257681353-10">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·503,·SHA:·c09cfe744737e4ce2099af8291f9e3228af53ef82ae899a1249df48f566dfa30·...·]53-1">]</span></code></pre><p>As·can·be·noted·above,·the·parameter·list·can·be·matched·against·a·single
396 <code·class="inline">MatchVariable</code>·or·an·<code·class="inline">'_'</code>.·To·replace·the·whole·parameter·list·with·a·single396 <code·class="inline">MatchVariable</code>·or·an·<code·class="inline">'_'</code>.·To·replace·the·whole·parameter·list·with·a·single
397 variable·is·a·special·case.·In·all·other·cases·the·<code·class="inline">MatchHead</code>·must·be·a397 variable·is·a·special·case.·In·all·other·cases·the·<code·class="inline">MatchHead</code>·must·be·a
398 <em>proper</em>·list.</p><p>Generate·a·trace·message·only·if·the·trace·control·word·is·set·to·1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2260157857-1">[</span><span·class="p"·data-group-id="2260157857-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">398 <em>proper</em>·list.</p><p>Generate·a·trace·message·only·if·the·trace·control·word·is·set·to·1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3505202810-1">[</span><span·class="p"·data-group-id="3505202810-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
399 ··</span><span·class="p"·data-group-id="2260157857-3">[</span><span·class="p"·data-group-id="2260157857-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2260157857-5">{</span><span·class="ss">get_tcw</span><span·class="p"·data-group-id="226015[·...·truncated·by·diffoscope;·len:·342,·SHA:·d568b1016db6e1b90cd623e539ac2b91b9373692350e6c3d72f83742ec12fe61·...·]-3">]</span><span·class="p">,</span><span·class="w">399 ··</span><span·class="p"·data-group-id="3505202810-3">[</span><span·class="p"·data-group-id="3505202810-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3505202810-5">{</span><span·class="ss">get_tcw</span><span·class="p"·data-group-id="350520[·...·truncated·by·diffoscope;·len:·342,·SHA:·0e671ad01762eba33e9b8bd5d5cf59d33e7ccf844cf18e22987220a8fea255c5·...·]-3">]</span><span·class="p">,</span><span·class="w">
400 ··</span><span·class="p"·data-group-id="2260157857-7">[</span><span·class="p"·data-group-id="2260157857-7">]</span><span·class="p"·data-group-id="2260157857-2">}</span><span·class="p"·data-group-id="2260157857-1">]</span></code></pre><p>Generate·a·trace·message·only·if·there·is·a·<code·class="in[·...·truncated·by·diffoscope;·len:·175,·SHA:·e5e8b77ac9bf5a23a492bcf05378e9bd734b6e302631e2e1d27846af8412307b·...·]-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">400 ··</span><span·class="p"·data-group-id="3505202810-7">[</span><span·class="p"·data-group-id="3505202810-7">]</span><span·class="p"·data-group-id="3505202810-2">}</span><span·class="p"·data-group-id="3505202810-1">]</span></code></pre><p>Generate·a·trace·message·only·if·there·is·a·<code·class="in[·...·truncated·by·diffoscope;·len:·175,·SHA:·0d70877a5694c007b7fc55e2ffe59cef665a003763e7e97791300c64a80f3543·...·]-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
401 ··</span><span·class="p"·data-group-id="0962282912-3">[</span><span·class="p"·data-group-id="0962282912-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="0962282912-5">{</span><span·class="ss">is_seq_trace</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·347,·SHA:·b07dcf5d46b8c2ab193e21f60c35b07d6f8d329bc3862fd042f5cf55232efbdf·...·]-3">]</span><span·class="p">,</span><span·class="w">401 ··</span><span·class="p"·data-group-id="2088556613-3">[</span><span·class="p"·data-group-id="2088556613-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2088556613-5">{</span><span·class="ss">is_seq_trace</span><span·class="p"·data-group-id="2[·...·truncated·by·diffoscope;·len:·347,·SHA:·e5e4a8c709995eee2eb474ddab509f71e45e197fe264c2efc8060d23ae048617·...·]-3">]</span><span·class="p">,</span><span·class="w">
402 ··</span><span·class="p"·data-group-id="0962282912-7">[</span><span·class="p"·data-group-id="0962282912-7">]</span><span·class="p"·data-group-id="0962282912-2">}</span><span·class="p"·data-group-id="0962282912-1">]</span></code></pre><p>Remove·the·<code·class="inline">'silent'</code>·trace·flag·when·the·first·argument·is·<code·class="inline">'verbose'</code>,·and·add402 ··</span><span·class="p"·data-group-id="2088556613-7">[</span><span·class="p"·data-group-id="2088556613-7">]</span><span·class="p"·data-group-id="2088556613-2">}</span><span·class="p"·data-group-id="2088556613-1">]</span></code></pre><p>Remove·the·<code·class="inline">'silent'</code>·trace·flag·when·the·first·argument·is·<code·class="inline">'verbose'</code>,·and·add
403 it·when·it·is·<code·class="inline">'silent':</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5202965496-1">[</span><span·class="p"·data-group-id="5202965496-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">403 it·when·it·is·<code·class="inline">'silent':</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9717539102-1">[</span><span·class="p"·data-group-id="9717539102-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
404 ··</span><span·class="p"·data-group-id="5202965496-3">[</span><span·class="p"·data-group-id="5202965496-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5202965496-5">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·244,·SHA:·079ee4cef29f4b9571f6f0e00f13c9fe8371f31dbca985d9378aba9c6145bdf2·...·]-3">]</span><span·class="p">,</span><span·class="w">404 ··</span><span·class="p"·data-group-id="9717539102-3">[</span><span·class="p"·data-group-id="9717539102-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9717539102-5">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·244,·SHA:·553d616c3d52762808a2411402486d223b69b081485d55099fc93ab18d80f4a7·...·]-3">]</span><span·class="p">,</span><span·class="w">
405 ··</span><span·class="p"·data-group-id="5202965496-6">[</span><span·class="p"·data-group-id="5202965496-7">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5202965496-8">[</span><span·class="ss">silent</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·309,·SHA:·4f5274e4cc5502877ded426135190fb4fb7809c5174fb4c4bc398bb5be127e90·...·]-2">}</span><span·class="p">,</span><span·class="w">405 ··</span><span·class="p"·data-group-id="9717539102-6">[</span><span·class="p"·data-group-id="9717539102-7">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9717539102-8">[</span><span·class="ss">silent</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·309,·SHA:·0a9f33b5184d094b1f20352757811b40fb902fb6ab3aa823a150f7164bb84c1f·...·]-2">}</span><span·class="p">,</span><span·class="w">
406 ·</span><span·class="p"·data-group-id="5202965496-10">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">406 ·</span><span·class="p"·data-group-id="9717539102-10">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
407 ··</span><span·class="p"·data-group-id="5202965496-11">[</span><span·class="p"·data-group-id="5202965496-12">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5202965496-13">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·248,·SHA:·f19d84f4588e1f737aacf1032849549efe148b3e4d04fe4cc4263d8595b03199·...·]-11">]</span><span·class="p">,</span><span·class="w">407 ··</span><span·class="p"·data-group-id="9717539102-11">[</span><span·class="p"·data-group-id="9717539102-12">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9717539102-13">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·248,·SHA:·a6e68b1642e785bcfb85ec4bf23afc5c52fff0d48f1e6dfe7d8e0f0c7e92575d·...·]-11">]</span><span·class="p">,</span><span·class="w">
408 ··</span><span·class="p"·data-group-id="5202965496-14">[</span><span·class="p"·data-group-id="5202965496-15">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5202965496-16">[</span><span·class="p"·data-group-id="5202965496-16">]<[·...·truncated·by·diffoscope;·len:·629,·SHA:·349dc245204ccb1da6d141dfd25265e962db56fd0e22e37c531e15723b3d7a6a·...·]7-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">408 ··</span><span·class="p"·data-group-id="9717539102-14">[</span><span·class="p"·data-group-id="9717539102-15">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9717539102-16">[</span><span·class="p"·data-group-id="9717539102-16">]<[·...·truncated·by·diffoscope;·len:·629,·SHA:·455dc9e4b3bee4eb55e2d2e947f08673a9c559ddbd95251966e4b84be76117c6·...·]7-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
409 ··</span><span·class="p"·data-group-id="4599506527-3">[</span><span·class="p"·data-group-id="4599506527-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4599506527-5">{</span><span·class="nb">length</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·240,·SHA:·c4dbf12ac000829a11af10c60e8a399b9fec057abcee101164198a1c179f47db·...·]7-3">]</span><span·class="p">,</span><span·class="w">409 ··</span><span·class="p"·data-group-id="4342082647-3">[</span><span·class="p"·data-group-id="4342082647-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4342082647-5">{</span><span·class="nb">length</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·240,·SHA:·a88f1aedce16d2f5a9185e41133d6dec8669e29badea6b77ca4bcc129598186d·...·]7-3">]</span><span·class="p">,</span><span·class="w">
410 ··</span><span·class="p"·data-group-id="4599506527-6">[</span><span·class="p"·data-group-id="4599506527-7">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="4599506527-7">}</span><span·class="p"·data-group-id="4599506527-6">]</span><span·class="p"·data-group-id="4599506527-2">}</span><span·class="p">,</span><span·class="w">410 ··</span><span·class="p"·data-group-id="4342082647-6">[</span><span·class="p"·data-group-id="4342082647-7">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="4342082647-7">}</span><span·class="p"·data-group-id="4342082647-6">]</span><span·class="p"·data-group-id="4342082647-2">}</span><span·class="p">,</span><span·class="w">
411 ·</span><span·class="p"·data-group-id="4599506527-8">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4599506527-9">[</span><span·class="p"·data-group-id="4599506527-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="4599506527-10">[·...·truncated·by·diffoscope;·len:·155,·SHA:·1b1b747a08854f5d09d2871db16cc3ab7059c1b2484305a0f37bad93374f4581·...·]7-1">]</span></code></pre><p>Generate·a·trace·message·only·if·the·function·is·of·arity·3·and·the·first411 ·</span><span·class="p"·data-group-id="4342082647-8">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4342082647-9">[</span><span·class="p"·data-group-id="4342082647-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="4342082647-10">[·...·truncated·by·diffoscope;·len:·155,·SHA:·69a86582af80e3a6b8df50cb3cb6c9305762bfc92f6414571a9e7f153a5e83b4·...·]7-1">]</span></code></pre><p>Generate·a·trace·message·only·if·the·function·is·of·arity·3·and·the·first
412 argument·is·<code·class="inline">'trace'</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8438995600-1">[</span><span·class="p"·data-group-id="8438995600-2">{</span><span·class="p"·data-group-id="8438995600-3">[</span><span·class="ss">&#39;trace&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·72,·SHA:·9f33002279946398aefcb7a8246db9502063af7a430d88f65d23a6f38744c0ad·...·]-3">]</span><span·class="p">,</span><span·class="w">412 argument·is·<code·class="inline">'trace'</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3327837905-1">[</span><span·class="p"·data-group-id="3327837905-2">{</span><span·class="p"·data-group-id="3327837905-3">[</span><span·class="ss">&#39;trace&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·72,·SHA:·3219c522a721e8b7e0bfdee6d15806bb1856ec54d91d9732e3e438bc9674d383·...·]-3">]</span><span·class="p">,</span><span·class="w">
413 ··</span><span·class="p"·data-group-id="8438995600-4">[</span><span·class="p"·data-group-id="8438995600-4">]</span><span·class="p">,</span><span·class="w">413 ··</span><span·class="p"·data-group-id="3327837905-4">[</span><span·class="p"·data-group-id="3327837905-4">]</span><span·class="p">,</span><span·class="w">
414 ··</span><span·class="p"·data-group-id="8438995600-5">[</span><span·class="p"·data-group-id="8438995600-5">]</span><span·class="p"·data-group-id="8438995600-2">}</span><span·class="p">,</span><span·class="w">414 ··</span><span·class="p"·data-group-id="3327837905-5">[</span><span·class="p"·data-group-id="3327837905-5">]</span><span·class="p"·data-group-id="3327837905-2">}</span><span·class="p">,</span><span·class="w">
415 ·</span><span·class="p"·data-group-id="8438995600-6">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8438995600-7">[</span><span·class="p"·data-group-id="8438995600-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="8438995600-8">[·...·truncated·by·diffoscope;·len:·155,·SHA:·9a5b1868a999805de970ccd8f4fb0b19b79597810e01a6ba28ef1314f734f4c8·...·]-1">]</span></code></pre><h2·id="ets-examples"·class="section-heading">415 ·</span><span·class="p"·data-group-id="3327837905-6">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3327837905-7">[</span><span·class="p"·data-group-id="3327837905-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="3327837905-8">[·...·truncated·by·diffoscope;·len:·155,·SHA:·6480764f480d4fdbeac83f5d85865b166aa094e5b93dbd80c89637cebe08dfa9·...·]-1">]</span></code></pre><h2·id="ets-examples"·class="section-heading">
416 ··<a·href="#ets-examples"·class="hover-link">416 ··<a·href="#ets-examples"·class="hover-link">
417 ····<i·class="ri-link-m"·aria-hidden="true"></i>417 ····<i·class="ri-link-m"·aria-hidden="true"></i>
418 ··</a>418 ··</a>
419 ··<span·class="text">ETS·Examples</span>419 ··<span·class="text">ETS·Examples</span>
420 </h2>420 </h2>
421 <p>Match·all·objects·in·an·ETS·table,·where·the·first·element·is·the·atom421 <p>Match·all·objects·in·an·ETS·table,·where·the·first·element·is·the·atom
422 <code·class="inline">'strider'</code>·and·the·tuple·arity·is·3,·and·return·the·whole·object:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0684198419-1">[</span><span·class="p"·data-group-id="0684198419-2">{</span><span·class="p"·data-group-id="0684198419-3">{</span><span·class="ss">strider</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·62,·SHA:·d6f541d165ea48ac7af39b81f8273e265b65986aa84901694dd48b73a0082ce8·...·]-3">}</span><span·class="p">,</span><span·class="w">422 <code·class="inline">'strider'</code>·and·the·tuple·arity·is·3,·and·return·the·whole·object:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4387876651-1">[</span><span·class="p"·data-group-id="4387876651-2">{</span><span·class="p"·data-group-id="4387876651-3">{</span><span·class="ss">strider</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·62,·SHA:·0c70ff07369da9ff8c71ffaa7357bd3569b879cc1ae65a6d7786db6f0cd78483·...·]-3">}</span><span·class="p">,</span><span·class="w">
423 ··</span><span·class="p"·data-group-id="0684198419-4">[</span><span·class="p"·data-group-id="0684198419-4">]</span><span·class="p">,</span><span·class="w">423 ··</span><span·class="p"·data-group-id="4387876651-4">[</span><span·class="p"·data-group-id="4387876651-4">]</span><span·class="p">,</span><span·class="w">
424 ··</span><span·class="p"·data-group-id="0684198419-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="0684198419-5">]</span><span·class="p"·data-group-id="0684198419-2">}</span><span·class="p"·data-group-id="0684198419-1">]</span></code></pre><p>Match·all·objects·in·an·ETS·table·with·arity·&gt;·1·and·the·first·element·is424 ··</span><span·class="p"·data-group-id="4387876651-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="4387876651-5">]</span><span·class="p"·data-group-id="4387876651-2">}</span><span·class="p"·data-group-id="4387876651-1">]</span></code></pre><p>Match·all·objects·in·an·ETS·table·with·arity·&gt;·1·and·the·first·element·is
425 'gandalf',·and·return·element·2:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8938933619-1">[</span><span·class="p"·data-group-id="8938933619-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">425 'gandalf',·and·return·element·2:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9993543043-1">[</span><span·class="p"·data-group-id="9993543043-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
426 ··</span><span·class="p"·data-group-id="8938933619-3">[</span><span·class="p"·data-group-id="8938933619-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">gandalf</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·830,·SHA:·41ce6c9f4a2e2f767ccc28896dad5f77725479af0da5449e9f57ddc7e78da356·...·]-3">]</span><span·class="p">,</span><span·class="w">426 ··</span><span·class="p"·data-group-id="9993543043-3">[</span><span·class="p"·data-group-id="9993543043-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">gandalf</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·830,·SHA:·181b56d2294a19e32a6f4a8228dd2a0c8314e5e116a27f0c20eb862d3c988f84·...·]-3">]</span><span·class="p">,</span><span·class="w">
427 ··</span><span·class="p"·data-group-id="8938933619-8">[</span><span·class="p"·data-group-id="8938933619-9">{</span><span·class="nb">element</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8938933619[·...·truncated·by·diffoscope;·len:·159,·SHA:·5812e3d6ba984736fd93f60b9644ae377bdd4e991a8faba7d23b5dfa95ef1612·...·]-1">]</span></code></pre><p>In·this·example,·if·the·first·element·had·been·the·key,·it·is·much·more427 ··</span><span·class="p"·data-group-id="9993543043-8">[</span><span·class="p"·data-group-id="9993543043-9">{</span><span·class="nb">element</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9993543043[·...·truncated·by·diffoscope;·len:·159,·SHA:·ecabdc6dc4ffec8c7a655cf958529a7e70590bdbbf88d899625cc538e8e7edf6·...·]-1">]</span></code></pre><p>In·this·example,·if·the·first·element·had·been·the·key,·it·is·much·more
428 efficient·to·match·that·key·in·the·<code·class="inline">MatchHead</code>·part·than·in·the428 efficient·to·match·that·key·in·the·<code·class="inline">MatchHead</code>·part·than·in·the
429 <code·class="inline">MatchConditions</code>·part.·The·search·space·of·the·tables·is·restricted·with429 <code·class="inline">MatchConditions</code>·part.·The·search·space·of·the·tables·is·restricted·with
430 regards·to·the·<code·class="inline">MatchHead</code>·so·that·only·objects·with·the·matching·key·are430 regards·to·the·<code·class="inline">MatchHead</code>·so·that·only·objects·with·the·matching·key·are
431 searched.</p><p>Match·tuples·of·three·elements,·where·the·second·element·is·either·<code·class="inline">'merry'</code>·or431 searched.</p><p>Match·tuples·of·three·elements,·where·the·second·element·is·either·<code·class="inline">'merry'</code>·or
432 <code·class="inline">'pippin'</code>,·and·return·the·whole·objects:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3172117508-1">[</span><span·class="p"·data-group-id="3172117508-2">{</span><span·class="p"·data-group-id="3172117508-3">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">merry</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·60,·SHA:·86fb09348335867c03c8f09fb4ce769d4b1d0040094abb220657d5dc3327d6d2·...·]-3">}</span><span·class="p">,</span><span·class="w">432 <code·class="inline">'pippin'</code>,·and·return·the·whole·objects:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1628191792-1">[</span><span·class="p"·data-group-id="1628191792-2">{</span><span·class="p"·data-group-id="1628191792-3">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">merry</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·60,·SHA:·9afad4b7bb2cbf9b95da358f0efd2f911378c59186567ec5d6744375c82023cf·...·]-3">}</span><span·class="p">,</span><span·class="w">
433 ··</span><span·class="p"·data-group-id="3172117508-4">[</span><span·class="p"·data-group-id="3172117508-4">]</span><span·class="p">,</span><span·class="w">433 ··</span><span·class="p"·data-group-id="1628191792-4">[</span><span·class="p"·data-group-id="1628191792-4">]</span><span·class="p">,</span><span·class="w">
434 ··</span><span·class="p"·data-group-id="3172117508-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="3172117508-5">]</span><span·class="p"·data-group-id="3172117508-2">}</span><span·class="p">,</span><span·class="w">434 ··</span><span·class="p"·data-group-id="1628191792-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="1628191792-5">]</span><span·class="p"·data-group-id="1628191792-2">}</span><span·class="p">,</span><span·class="w">
435 ·</span><span·class="p"·data-group-id="3172117508-6">{</span><span·class="p"·data-group-id="3172117508-7">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">pippin</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="31[·...·truncated·by·diffoscope;·len:·8,·SHA:·d4527d54567728211f6397bae498e9f3803f2776828caa0649ca929571c69cb2·...·]-7">}</span><span·class="p">,</span><span·class="w">435 ·</span><span·class="p"·data-group-id="1628191792-6">{</span><span·class="p"·data-group-id="1628191792-7">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">pippin</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="16[·...·truncated·by·diffoscope;·len:·8,·SHA:·5a163c5b0802d1cee44a5953bd5ccd407868b7fc78521f40ed01619ebe283193·...·]-7">}</span><span·class="p">,</span><span·class="w">
436 ··</span><span·class="p"·data-group-id="3172117508-8">[</span><span·class="p"·data-group-id="3172117508-8">]</span><span·class="p">,</span><span·class="w">436 ··</span><span·class="p"·data-group-id="1628191792-8">[</span><span·class="p"·data-group-id="1628191792-8">]</span><span·class="p">,</span><span·class="w">
437 ··</span><span·class="p"·data-group-id="3172117508-9">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="3172117508-9">]</span><span·class="p"·data-group-id="3172117508-6">}</span><span·class="p"·data-group-id="3172117508-1">]</span></code></pre><p>Function·<a·href="../../../lib/stdlib-6.2/doc/html/ets.html#test_ms/2"><code·class="inline">ets:test_ms/2</code></a>·can·be·useful·for·testing·complicated·ETS·matches.</p>437 ··</span><span·class="p"·data-group-id="1628191792-9">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="1628191792-9">]</span><span·class="p"·data-group-id="1628191792-6">}</span><span·class="p"·data-group-id="1628191792-1">]</span></code></pre><p>Function·<a·href="../../../lib/stdlib-6.2/doc/html/ets.html#test_ms/2"><code·class="inline">ets:test_ms/2</code></a>·can·be·useful·for·testing·complicated·ETS·matches.</p>
438 </div>438 </div>
  
439 <div·class="bottom-actions"·id="bottom-actions">439 <div·class="bottom-actions"·id="bottom-actions">
440 ··<div·class="bottom-actions-item">440 ··<div·class="bottom-actions-item">
  
441 ······<a·href="time_correction.html"·class="bottom-actions-button"·rel="prev">441 ······<a·href="time_correction.html"·class="bottom-actions-button"·rel="prev">
442 ········<span·class="subheader">442 ········<span·class="subheader">
60.4 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/notes.html
    
Offset 164, 15 lines modifiedOffset 164, 15 lines modified
164 <ul><li><p><a·href="../../../lib/kernel-10.2.2/doc/html/gen_sctp.html#peeloff/2"><code·class="inline">gen_sctp:peeloff/2</code></a>·has·been·fixed·to·inherit·socket·options·to·the·peeled·off·socket·more·like·<a·href="../../../lib/kernel-10.2.2/doc/html/gen_tcp.html#accept/1"><code·class="inline">gen_tcp:accept/1</code></a>,·for·example·the·options·<code·class="inline">tos</code>·or·<code·class="inline">tclass</code>.</p><p>When·setting·SCTP·options·that·are·unsupported·on·the·platform,·some·should·be·silently·ignored,·but·a·bug·caused·the·option·parsing·to·derail·so·the·options·after·could·bail·out·and·cause·an·error·instead.··This·has·been·fixed.</p><p>Own·Id:·OTP-19225·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8789"·title="">PR-8789</a></p></li><li><p>Fixed·a·bug·where·Erlang·would·corrupt·the·terminal·settings·if·stdin·was·a·TTY·but·stdout·was·not.</p><p>Own·Id:·OTP-19232·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8794"·title="">PR-8794</a>,·<a·href="https://github.com/erlang/otp/issues/8487"·title="">GH-8487</a></p></li><li><p>Fixed·a·bug·in·the·non-JIT·VM·when·loading·a·NIF·over·a·function·that·is·already·traced·by·more·than·one·session.·This·caused·a·VM·crash.·This·bug·has·existed·since·OTP-27.0,·where·multiple·trace·sessions·were·introduced.</p><p>Own·Id:·OTP-19248·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8856"·title="">PR-8856</a></p></li><li><p>Fixed·a·bug·where·the·loading·of·modules·with·extremely·large·binary·construction·instructions·crashed·the·emulator·on·AArch64.</p><p>Own·Id:·OTP-19261·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8815"·title="">GH-8815</a>,·<a·href="https://github.com/erlang/otp/pull/8816"·title="">PR-8816</a></p></li><li><p><a·href="../../../lib/kernel-10.2.2/doc/html/inet.html#getifaddrs/1"><code·class="inline">inet:getifaddrs/0,1</code></a>·is·improved·when·using164 <ul><li><p><a·href="../../../lib/kernel-10.2.2/doc/html/gen_sctp.html#peeloff/2"><code·class="inline">gen_sctp:peeloff/2</code></a>·has·been·fixed·to·inherit·socket·options·to·the·peeled·off·socket·more·like·<a·href="../../../lib/kernel-10.2.2/doc/html/gen_tcp.html#accept/1"><code·class="inline">gen_tcp:accept/1</code></a>,·for·example·the·options·<code·class="inline">tos</code>·or·<code·class="inline">tclass</code>.</p><p>When·setting·SCTP·options·that·are·unsupported·on·the·platform,·some·should·be·silently·ignored,·but·a·bug·caused·the·option·parsing·to·derail·so·the·options·after·could·bail·out·and·cause·an·error·instead.··This·has·been·fixed.</p><p>Own·Id:·OTP-19225·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8789"·title="">PR-8789</a></p></li><li><p>Fixed·a·bug·where·Erlang·would·corrupt·the·terminal·settings·if·stdin·was·a·TTY·but·stdout·was·not.</p><p>Own·Id:·OTP-19232·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8794"·title="">PR-8794</a>,·<a·href="https://github.com/erlang/otp/issues/8487"·title="">GH-8487</a></p></li><li><p>Fixed·a·bug·in·the·non-JIT·VM·when·loading·a·NIF·over·a·function·that·is·already·traced·by·more·than·one·session.·This·caused·a·VM·crash.·This·bug·has·existed·since·OTP-27.0,·where·multiple·trace·sessions·were·introduced.</p><p>Own·Id:·OTP-19248·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8856"·title="">PR-8856</a></p></li><li><p>Fixed·a·bug·where·the·loading·of·modules·with·extremely·large·binary·construction·instructions·crashed·the·emulator·on·AArch64.</p><p>Own·Id:·OTP-19261·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8815"·title="">GH-8815</a>,·<a·href="https://github.com/erlang/otp/pull/8816"·title="">PR-8816</a></p></li><li><p><a·href="../../../lib/kernel-10.2.2/doc/html/inet.html#getifaddrs/1"><code·class="inline">inet:getifaddrs/0,1</code></a>·is·improved·when·using
165 inet_backend·=·socket.</p><p>Own·Id:·OTP-19264</p></li><li><p><a·href="../../../lib/stdlib-6.2/doc/html/win32reg.html#value/2"><code·class="inline">win32reg:value/2</code></a>·will·no·longer·crash·the·emulator·when·the·value·is·an·unterminated·REG_SZ·of·size·0.</p><p>Own·Id:·OTP-19283·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8903"·title="">GH-8903</a>,·<a·href="https://github.com/erlang/otp/pull/8912"·title="">PR-8912</a></p></li><li><p><code·class="inline">Makefile</code>·dependency·generation·on·Windows·in·WSL·2·has·been·corrected.</p><p>Own·Id:·OTP-19300·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8955"·title="">PR-8955</a></p></li><li><p>Fix·lock·order·violation·if·a·NIF·monitor·<code·class="inline">down</code>·callback·calls·<code·class="inline">enif_whereis_pid</code>.·Would·cause·debug·emulator·to·crash·but·could·potentially·lead·to·deadlocks·in·optimized·emulator.</p><p>Own·Id:·OTP-19330·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8983"·title="">GH-8983</a>,·<a·href="https://github.com/erlang/otp/pull/9008"·title="">PR-9008</a></p></li><li><p>Fixed·compilation·faults·when·compiling·using·<code·class="inline">--enable-vm-probes</code>.</p><p>Own·Id:·OTP-19333</p></li><li><p>Fixed·<code·class="inline">erl_nif.h</code>·on·Windows·to·compile·when·gcc·or·clang·is·used.</p><p>Own·Id:·OTP-19341·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9016"·title="">PR-9016</a></p></li><li><p>Fixed·a·minor·issue·in·the·JIT·debug·information·that·confused·tools·like·GDB·and·perf.</p><p>Own·Id:·OTP-19362·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9003"·title="">PR-9003</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">165 inet_backend·=·socket.</p><p>Own·Id:·OTP-19264</p></li><li><p><a·href="../../../lib/stdlib-6.2/doc/html/win32reg.html#value/2"><code·class="inline">win32reg:value/2</code></a>·will·no·longer·crash·the·emulator·when·the·value·is·an·unterminated·REG_SZ·of·size·0.</p><p>Own·Id:·OTP-19283·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8903"·title="">GH-8903</a>,·<a·href="https://github.com/erlang/otp/pull/8912"·title="">PR-8912</a></p></li><li><p><code·class="inline">Makefile</code>·dependency·generation·on·Windows·in·WSL·2·has·been·corrected.</p><p>Own·Id:·OTP-19300·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8955"·title="">PR-8955</a></p></li><li><p>Fix·lock·order·violation·if·a·NIF·monitor·<code·class="inline">down</code>·callback·calls·<code·class="inline">enif_whereis_pid</code>.·Would·cause·debug·emulator·to·crash·but·could·potentially·lead·to·deadlocks·in·optimized·emulator.</p><p>Own·Id:·OTP-19330·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8983"·title="">GH-8983</a>,·<a·href="https://github.com/erlang/otp/pull/9008"·title="">PR-9008</a></p></li><li><p>Fixed·compilation·faults·when·compiling·using·<code·class="inline">--enable-vm-probes</code>.</p><p>Own·Id:·OTP-19333</p></li><li><p>Fixed·<code·class="inline">erl_nif.h</code>·on·Windows·to·compile·when·gcc·or·clang·is·used.</p><p>Own·Id:·OTP-19341·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9016"·title="">PR-9016</a></p></li><li><p>Fixed·a·minor·issue·in·the·JIT·debug·information·that·confused·tools·like·GDB·and·perf.</p><p>Own·Id:·OTP-19362·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9003"·title="">PR-9003</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
166 ··<a·href="#improvements-and-new-features"·class="hover-link">166 ··<a·href="#improvements-and-new-features"·class="hover-link">
167 ····<i·class="ri-link-m"·aria-hidden="true"></i>167 ····<i·class="ri-link-m"·aria-hidden="true"></i>
168 ··</a>168 ··</a>
169 ··<span·class="text">Improvements·and·New·Features</span>169 ··<span·class="text">Improvements·and·New·Features</span>
170 </h3>170 </h3>
171 <ul><li><p>Improved·documentation·of·<a·href="time_correction.html#timers">timers</a>.</p><p>Own·Id:·OTP-19360·Aux·Id:·ERIERL-1149,·<a·href="https://github.com/erlang/otp/pull/9062"·title="">PR-9062</a></p></li><li><p>The·label·for·a·process·can·now·be·retrieved·also·using·<code·class="inline">process_info(Pid,·label)</code>·in·addition·to·<a·href="../../../lib/stdlib-6.2/doc/html/proc_lib.html#get_label/1"><code·class="inline">proc_lib:get_label/1</code></a>.</p><p>This·new·option·is·useful·when·one·wants·to·retrieve·more·than·one·process·info·item.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">process_info</span><span·class="p"·data-group-id="9783183534-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9783183534-2">[</span><span·class="ss">label</span><span·class="p">,</span><span·class="ss">registered_name</span><span·class="p"[·...·truncated·by·diffoscope;·len:·78,·SHA:·80c56f07414d04e892b9b9ce88a9c7b2a700b0876d169adeb0dd2099bb4f1277·...·]4-1">)</span></code></pre><p>Own·Id:·OTP-19373·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9108"·title="">PR-9108</a></p></li></ul><h2·id="erts-15-1-3"·class="section-heading">171 <ul><li><p>Improved·documentation·of·<a·href="time_correction.html#timers">timers</a>.</p><p>Own·Id:·OTP-19360·Aux·Id:·ERIERL-1149,·<a·href="https://github.com/erlang/otp/pull/9062"·title="">PR-9062</a></p></li><li><p>The·label·for·a·process·can·now·be·retrieved·also·using·<code·class="inline">process_info(Pid,·label)</code>·in·addition·to·<a·href="../../../lib/stdlib-6.2/doc/html/proc_lib.html#get_label/1"><code·class="inline">proc_lib:get_label/1</code></a>.</p><p>This·new·option·is·useful·when·one·wants·to·retrieve·more·than·one·process·info·item.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">process_info</span><span·class="p"·data-group-id="4009756594-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4009756594-2">[</span><span·class="ss">label</span><span·class="p">,</span><span·class="ss">registered_name</span><span·class="p"[·...·truncated·by·diffoscope;·len:·78,·SHA:·2c68384a83df6a7126f1559b3a0fcbac65e8488a89f7808e6a6fc5db27f3ce61·...·]4-1">)</span></code></pre><p>Own·Id:·OTP-19373·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9108"·title="">PR-9108</a></p></li></ul><h2·id="erts-15-1-3"·class="section-heading">
172 ··<a·href="#erts-15-1-3"·class="hover-link">172 ··<a·href="#erts-15-1-3"·class="hover-link">
173 ····<i·class="ri-link-m"·aria-hidden="true"></i>173 ····<i·class="ri-link-m"·aria-hidden="true"></i>
174 ··</a>174 ··</a>
175 ··<span·class="text">Erts·15.1.3</span>175 ··<span·class="text">Erts·15.1.3</span>
176 </h2>176 </h2>
177 <h3·id="fixed-bugs-and-malfunctions-3"·class="section-heading">177 <h3·id="fixed-bugs-and-malfunctions-3"·class="section-heading">
178 ··<a·href="#fixed-bugs-and-malfunctions-3"·class="hover-link">178 ··<a·href="#fixed-bugs-and-malfunctions-3"·class="hover-link">
Offset 212, 16 lines modifiedOffset 212, 16 lines modified
212 </h2>212 </h2>
213 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">213 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">
214 ··<a·href="#fixed-bugs-and-malfunctions-6"·class="hover-link">214 ··<a·href="#fixed-bugs-and-malfunctions-6"·class="hover-link">
215 ····<i·class="ri-link-m"·aria-hidden="true"></i>215 ····<i·class="ri-link-m"·aria-hidden="true"></i>
216 ··</a>216 ··</a>
217 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>217 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
218 </h3>218 </h3>
219 <ul><li><p>The·<code·class="inline">erl·-man·example</code>·has·been·corrected·to·not·consider·values·set·in·<code·class="inline">ERL_ZFLAGS</code>·and·stop·parsing·arguments·when·a·<code·class="inline">--</code>·is·encountered.</p><p>Own·Id:·OTP-19098·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8478"·title="">PR-8478</a>,·<a·href="https://github.com/erlang/otp/issues/8477"·title="">GH-8477</a></p></li><li><p>Compiler·warnings·for··Windows·I/O·back-end·have·been·silenced.</p><p>Own·Id:·OTP-19113</p></li><li><p>Bugs·related·to·<code·class="inline">return_to</code>·trace·have·been·fixed.·It·did·not·work·for·more·than·once·trace·session·and·it·did·sometimes·not·trigger·for·exceptions.</p><p>Own·Id:·OTP-19122</p></li><li><p>Potential·deadlocks·while·writing·a·crash·dump·have·been·eliminated.</p><p>Own·Id:·OTP-19133·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8521"·title="">PR-8521</a>,·<a·href="https://github.com/erlang/otp/issues/8498"·title="">GH-8498</a></p></li><li><p>When·loading·a·damaged·or·too·old·BEAM·file,·the·runtime·system·could·crash.</p><p>Own·Id:·OTP-19153·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8623"·title="">PR-8623</a></p></li><li><p>A·scheduler·thread·could·get·stuck·when·deleting·a·memory·allocator·carrier·when·adjacent·carriers·were·deleted·and/or·inserted·simultaneously·by·other·schedulers.·This·in·turn·could·cause·the·other·schedulers·to·get·stuck·as·well.</p><p>Own·Id:·OTP-19154·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8613"·title="">GH-8613</a>,·<a·href="https://github.com/erlang/otp/pull/8627"·title="">PR-8627</a></p></li><li><p>Statistics·for·number·of·carriers·in·a·shared·pool·after·calling·<code·class="inline">instrument:allocations</code>·or·<code·class="inline">instrument:carriers</code>·are·now·correct.·Also,·a·potential·bug·in·carrier·block·scanning·was·eliminated.</p><p>Own·Id:·OTP-19166·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8636"·title="">PR-8636</a></p></li><li><p>A·race·in·the·kTLS·flavour·of·SSL·distribution·has·been·fixed·so·that·<code·class="inline">inet_drv.c</code>·doesn't·read·ahead·too·much·data,·which·could·cause·the·kTLS·encryption·to·be·activated·too·late·when·some·encrypted·data·had·already·been·read·into·the·<code·class="inline">inet_drv.c</code>·buffer·as·unencrypted.</p><p>Own·Id:·OTP-19175·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8561"·title="">GH-8561</a>,·<a·href="https://github.com/erlang/otp/pull/8690"·title="">PR-8690</a></p></li><li><p>Fixed·an·emulator·crash·relating·to·compressed·ETS·tables.</p><p>Own·Id:·OTP-19176·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8683"·title="">PR-8683</a></p></li><li><p>A·function·(encode_sockaddr)·was·called·with·superfluous·argument,·on·Windows,·in·the·net·nif.</p><p>Own·Id:·OTP-19181</p></li><li><p>Fixed·a·crash·that·could·happen·on·reallocation·failure.</p><p>Own·Id:·OTP-19192</p></li><li><p>Man·pages·are·now·available·for·<code·class="inline">erl</code>,·<code·class="inline">erlc</code>,·<code·class="inline">dialyzer</code>,·and·all·other·programs·that·are·included·in·Erlang/OTP.</p><p>Own·Id:·OTP-19201·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8740"·title="">PR-8740</a></p></li><li><p>A·previous·correction·in·the·Erlang/OTP·27.0.1·emergency·patch·had·the·unfortunate·side·effect·of·sometimes·causing·an·unnecessary·fullsweep·(major)·garbage·collection·instead·of·a··generation·(minor)·garbage·collection.·This·has·been·corrected.</p><p>Own·Id:·OTP-19209·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8751"·title="">PR-8751</a>,·<a·href="https://github.com/erlang/otp/pull/8539"·title="">PR-8539</a></p></li><li><p>Fixed·trace·matchspec·functions·<code·class="inline">trace</code>·and·<code·class="inline">enable_trace</code>·to·use·the·session·tracer·when·enabling·trace·flags·on·untraced·processes.</p><p>Own·Id:·OTP-19211·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8657"·title="">GH-8657</a></p></li><li><p>Fixed·a·typo·in·the·type·spec·for·<a·href="erlang.html#t:garbage_collection_defaults/0"><code·class="inline">erlang:garbage_collection_defaults/0</code></a>.</p><p>Own·Id:·OTP-19215·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8757"·title="">PR-8757</a></p></li><li><p>Corrected·socket:ioctl·for·genaddr·(SIOCGENADDR).</p><p>Own·Id:·OTP-19216</p></li><li><p>The·support·for·Transparent·Huge·Pages·has·been·disabled·on·non-amd64·Linux·systems.</p><p>Own·Id:·OTP-19219·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8702"·title="">PR-8702</a></p></li><li><p>Fixed·a·race·condition·on·Windows·when·upgrading·from·<code·class="inline">-noshell</code>·to·a·shell·that·would·cause·Erlang·to·crash·with·the·error:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3774152724-1">{</span><span·class="ss">&#39;GetOverlappedResult&#39;</span><span·class="p">,</span><span·class="w">219 <ul><li><p>The·<code·class="inline">erl·-man·example</code>·has·been·corrected·to·not·consider·values·set·in·<code·class="inline">ERL_ZFLAGS</code>·and·stop·parsing·arguments·when·a·<code·class="inline">--</code>·is·encountered.</p><p>Own·Id:·OTP-19098·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8478"·title="">PR-8478</a>,·<a·href="https://github.com/erlang/otp/issues/8477"·title="">GH-8477</a></p></li><li><p>Compiler·warnings·for··Windows·I/O·back-end·have·been·silenced.</p><p>Own·Id:·OTP-19113</p></li><li><p>Bugs·related·to·<code·class="inline">return_to</code>·trace·have·been·fixed.·It·did·not·work·for·more·than·once·trace·session·and·it·did·sometimes·not·trigger·for·exceptions.</p><p>Own·Id:·OTP-19122</p></li><li><p>Potential·deadlocks·while·writing·a·crash·dump·have·been·eliminated.</p><p>Own·Id:·OTP-19133·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8521"·title="">PR-8521</a>,·<a·href="https://github.com/erlang/otp/issues/8498"·title="">GH-8498</a></p></li><li><p>When·loading·a·damaged·or·too·old·BEAM·file,·the·runtime·system·could·crash.</p><p>Own·Id:·OTP-19153·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8623"·title="">PR-8623</a></p></li><li><p>A·scheduler·thread·could·get·stuck·when·deleting·a·memory·allocator·carrier·when·adjacent·carriers·were·deleted·and/or·inserted·simultaneously·by·other·schedulers.·This·in·turn·could·cause·the·other·schedulers·to·get·stuck·as·well.</p><p>Own·Id:·OTP-19154·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8613"·title="">GH-8613</a>,·<a·href="https://github.com/erlang/otp/pull/8627"·title="">PR-8627</a></p></li><li><p>Statistics·for·number·of·carriers·in·a·shared·pool·after·calling·<code·class="inline">instrument:allocations</code>·or·<code·class="inline">instrument:carriers</code>·are·now·correct.·Also,·a·potential·bug·in·carrier·block·scanning·was·eliminated.</p><p>Own·Id:·OTP-19166·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8636"·title="">PR-8636</a></p></li><li><p>A·race·in·the·kTLS·flavour·of·SSL·distribution·has·been·fixed·so·that·<code·class="inline">inet_drv.c</code>·doesn't·read·ahead·too·much·data,·which·could·cause·the·kTLS·encryption·to·be·activated·too·late·when·some·encrypted·data·had·already·been·read·into·the·<code·class="inline">inet_drv.c</code>·buffer·as·unencrypted.</p><p>Own·Id:·OTP-19175·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8561"·title="">GH-8561</a>,·<a·href="https://github.com/erlang/otp/pull/8690"·title="">PR-8690</a></p></li><li><p>Fixed·an·emulator·crash·relating·to·compressed·ETS·tables.</p><p>Own·Id:·OTP-19176·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8683"·title="">PR-8683</a></p></li><li><p>A·function·(encode_sockaddr)·was·called·with·superfluous·argument,·on·Windows,·in·the·net·nif.</p><p>Own·Id:·OTP-19181</p></li><li><p>Fixed·a·crash·that·could·happen·on·reallocation·failure.</p><p>Own·Id:·OTP-19192</p></li><li><p>Man·pages·are·now·available·for·<code·class="inline">erl</code>,·<code·class="inline">erlc</code>,·<code·class="inline">dialyzer</code>,·and·all·other·programs·that·are·included·in·Erlang/OTP.</p><p>Own·Id:·OTP-19201·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8740"·title="">PR-8740</a></p></li><li><p>A·previous·correction·in·the·Erlang/OTP·27.0.1·emergency·patch·had·the·unfortunate·side·effect·of·sometimes·causing·an·unnecessary·fullsweep·(major)·garbage·collection·instead·of·a··generation·(minor)·garbage·collection.·This·has·been·corrected.</p><p>Own·Id:·OTP-19209·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8751"·title="">PR-8751</a>,·<a·href="https://github.com/erlang/otp/pull/8539"·title="">PR-8539</a></p></li><li><p>Fixed·trace·matchspec·functions·<code·class="inline">trace</code>·and·<code·class="inline">enable_trace</code>·to·use·the·session·tracer·when·enabling·trace·flags·on·untraced·processes.</p><p>Own·Id:·OTP-19211·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8657"·title="">GH-8657</a></p></li><li><p>Fixed·a·typo·in·the·type·spec·for·<a·href="erlang.html#t:garbage_collection_defaults/0"><code·class="inline">erlang:garbage_collection_defaults/0</code></a>.</p><p>Own·Id:·OTP-19215·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8757"·title="">PR-8757</a></p></li><li><p>Corrected·socket:ioctl·for·genaddr·(SIOCGENADDR).</p><p>Own·Id:·OTP-19216</p></li><li><p>The·support·for·Transparent·Huge·Pages·has·been·disabled·on·non-amd64·Linux·systems.</p><p>Own·Id:·OTP-19219·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8702"·title="">PR-8702</a></p></li><li><p>Fixed·a·race·condition·on·Windows·when·upgrading·from·<code·class="inline">-noshell</code>·to·a·shell·that·would·cause·Erlang·to·crash·with·the·error:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2741261830-1">{</span><span·class="ss">&#39;GetOverlappedResult&#39;</span><span·class="p">,</span><span·class="w">
220 ··</span><span·class="ss">&#39;The·I/O·operation·has·been·aborted·because·of·either·a·thread·exit·or·an·application·request.&#39;</span><span·class="p"·data-group-id="3774152724-1">}</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19220·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8774"·title="">PR-8774</a>,·<a·href="https://github.com/erlang/otp/issues/7621"·title="">GH-7621</a></p></li></ul><h3·id="improvements-and-new-features-1"·class="section-heading">220 ··</span><span·class="ss">&#39;The·I/O·operation·has·been·aborted·because·of·either·a·thread·exit·or·an·application·request.&#39;</span><span·class="p"·data-group-id="2741261830-1">}</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19220·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8774"·title="">PR-8774</a>,·<a·href="https://github.com/erlang/otp/issues/7621"·title="">GH-7621</a></p></li></ul><h3·id="improvements-and-new-features-1"·class="section-heading">
221 ··<a·href="#improvements-and-new-features-1"·class="hover-link">221 ··<a·href="#improvements-and-new-features-1"·class="hover-link">
222 ····<i·class="ri-link-m"·aria-hidden="true"></i>222 ····<i·class="ri-link-m"·aria-hidden="true"></i>
223 ··</a>223 ··</a>
224 ··<span·class="text">Improvements·and·New·Features</span>224 ··<span·class="text">Improvements·and·New·Features</span>
225 </h3>225 </h3>
226 <ul><li><p>Added·functions·<code·class="inline">getservbyname</code>·and·<code·class="inline">getservbyport</code>·to·the·<code·class="inline">net</code>·module.</p><p>Own·Id:·OTP-19101·Aux·Id:·OTP-18835</p></li><li><p>Introduced·enet·|·esock·variants·of·<a·href="../../../lib/kernel-10.2.2/doc/html/inet.html"><code·class="inline">inet</code></a>·functions,·either·when·called·with·sockets,226 <ul><li><p>Added·functions·<code·class="inline">getservbyname</code>·and·<code·class="inline">getservbyport</code>·to·the·<code·class="inline">net</code>·module.</p><p>Own·Id:·OTP-19101·Aux·Id:·OTP-18835</p></li><li><p>Introduced·enet·|·esock·variants·of·<a·href="../../../lib/kernel-10.2.2/doc/html/inet.html"><code·class="inline">inet</code></a>·functions,·either·when·called·with·sockets,
227 with·explicit·inet_backend·config·or·with·the·e·inet_backend·kernel·config·option.</p><p>Own·Id:·OTP-19132·Aux·Id:·OTP-19101</p></li><li><p>Optimize·process·and·port·creation·when·such·tracing·is·not·enabled·by·any·trace·session.</p><p>Own·Id:·OTP-19167·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8655"·title="">PR-8655</a></p></li><li><p>Compiler·warnings·for·some·removed·functions·have·been·corrected·to·point·out·the·correct·replacement·functions.</p><p>Own·Id:·OTP-19186·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8709"·title="">PR-8709</a></p></li><li><p>A·boolean·option·<code·class="inline">read_ahead</code>·has·been·implemented·for·<code·class="inline">gen_tcp</code>,·default·<code·class="inline">true</code>,·to·facilitate·not·reading·past·(caching·data)·the·end·of·a·packet.··In·particular,·for·kTLS,·caching·data·could·read·in·data·that·was·supposed·to·be·decrypted·by·the·platform's·network·stack,·before·crypto·parameters·could·be·activated.</p><p>Own·Id:·OTP-19199·Aux·Id:·OTP-19175,·<a·href="https://github.com/erlang/otp/issues/8561"·title="">GH-8561</a>,·<a·href="https://github.com/erlang/otp/issues/8690"·title="">GH-8690</a>,·<a·href="https://github.com/erlang/otp/issues/8785"·title="">GH-8785</a></p></li><li><p>The·<a·href="../../../lib/stdlib-6.2/doc/html/zip.html"><code·class="inline">zip</code></a>·module·has·been·updated·with·support·for:</p><ul><li>zip64·archives·-·Archives·larger·than·4GB·or·with·more·than·2^32·entries.</li><li>extended·timestamps·-·Higher·resolution·and·in·UTC.</li><li>UID/GID·-·Save·and·extract·the·original·UID/GID.</li><li>Fixes·so·that·permission·mode·attributes·are·correctly·read·and·set·for·files·in·archives.</li><li><a·href="../../../lib/stdlib-6.2/doc/html/zip.html#list_dir/2"><code·class="inline">zip:list_dir/2</code></a>·now·also·returns·directories,·not·only·files.·(You·can·disable·this·behaviour·by·using·the·option·<code·class="inline">skip_directories</code>).</li></ul><p>Various·bugs·in·the·original·implementation·have·also·been·fixed,·such·as:</p><ul><li>Correctly·encode·and·decode·the·DOS·timestamps·for·entries·within·an·archive·(that·is·the·non-extended·timestamp).</li><li>Fix·DOS·timestamps·to·be·set·to·localtime·instead·of·UTC·(use·extended·timestamps·for·UTC·timestamps).</li><li>Use·the·unix·file·attributes·read·from·disk·when·creating·archives·instead·of·setting·everything·to·644.</li></ul><p>Own·Id:·OTP-19214·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8765"·title="">PR-8765</a></p></li></ul><h2·id="erts-15-0-1"·class="section-heading">227 with·explicit·inet_backend·config·or·with·the·e·inet_backend·kernel·config·option.</p><p>Own·Id:·OTP-19132·Aux·Id:·OTP-19101</p></li><li><p>Optimize·process·and·port·creation·when·such·tracing·is·not·enabled·by·any·trace·session.</p><p>Own·Id:·OTP-19167·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8655"·title="">PR-8655</a></p></li><li><p>Compiler·warnings·for·some·removed·functions·have·been·corrected·to·point·out·the·correct·replacement·functions.</p><p>Own·Id:·OTP-19186·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8709"·title="">PR-8709</a></p></li><li><p>A·boolean·option·<code·class="inline">read_ahead</code>·has·been·implemented·for·<code·class="inline">gen_tcp</code>,·default·<code·class="inline">true</code>,·to·facilitate·not·reading·past·(caching·data)·the·end·of·a·packet.··In·particular,·for·kTLS,·caching·data·could·read·in·data·that·was·supposed·to·be·decrypted·by·the·platform's·network·stack,·before·crypto·parameters·could·be·activated.</p><p>Own·Id:·OTP-19199·Aux·Id:·OTP-19175,·<a·href="https://github.com/erlang/otp/issues/8561"·title="">GH-8561</a>,·<a·href="https://github.com/erlang/otp/issues/8690"·title="">GH-8690</a>,·<a·href="https://github.com/erlang/otp/issues/8785"·title="">GH-8785</a></p></li><li><p>The·<a·href="../../../lib/stdlib-6.2/doc/html/zip.html"><code·class="inline">zip</code></a>·module·has·been·updated·with·support·for:</p><ul><li>zip64·archives·-·Archives·larger·than·4GB·or·with·more·than·2^32·entries.</li><li>extended·timestamps·-·Higher·resolution·and·in·UTC.</li><li>UID/GID·-·Save·and·extract·the·original·UID/GID.</li><li>Fixes·so·that·permission·mode·attributes·are·correctly·read·and·set·for·files·in·archives.</li><li><a·href="../../../lib/stdlib-6.2/doc/html/zip.html#list_dir/2"><code·class="inline">zip:list_dir/2</code></a>·now·also·returns·directories,·not·only·files.·(You·can·disable·this·behaviour·by·using·the·option·<code·class="inline">skip_directories</code>).</li></ul><p>Various·bugs·in·the·original·implementation·have·also·been·fixed,·such·as:</p><ul><li>Correctly·encode·and·decode·the·DOS·timestamps·for·entries·within·an·archive·(that·is·the·non-extended·timestamp).</li><li>Fix·DOS·timestamps·to·be·set·to·localtime·instead·of·UTC·(use·extended·timestamps·for·UTC·timestamps).</li><li>Use·the·unix·file·attributes·read·from·disk·when·creating·archives·instead·of·setting·everything·to·644.</li></ul><p>Own·Id:·OTP-19214·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8765"·title="">PR-8765</a></p></li></ul><h2·id="erts-15-0-1"·class="section-heading">
Offset 250, 25 lines modifiedOffset 250, 25 lines modified
250 </h3>250 </h3>
251 <ul><li><p>Bugs·in·how·<code·class="inline">erl·-extra</code>·interacts·with·passing·flags·via·ERL_*FLAGS·or·<code·class="inline">-args_file</code>·have·been·fixed.</p><p>Own·Id:·OTP-18766·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7639"·title="">PR-7639</a></p></li><li><p>Fixed·a·bug·that·prevented·the·emulator·from·building·on·recent·versions·of·Yocto·Linux.</p><p>Own·Id:·OTP-18918·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7952"·title="">PR-7952</a></p></li><li><p>Fixed·spectre·mitigation·configure·test·to·work·with·GCC·patches·to·always·add·<code·class="inline">-fcf-protection=full</code>.</p><p>Own·Id:·OTP-18928·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8006"·title="">PR-8006</a></p></li><li><p>A··call·to·<code·class="inline">socket:[recv|recvfrom|recvmsg]/*</code>·with·Timeout·=·0·on·Windows·could·cause·a·(case·clause)·crash·if·data·is·immediately·available.</p><p>Own·Id:·OTP-19063·Aux·Id:·OTP-18835</p></li><li><p>Fix·bug·on·Windows·where·<code·class="inline">exit_status</code>·would·not·be·sent·when·a·port·exits·after·the·stdin/stdout·handles·have·been·closed.</p><p>Own·Id:·OTP-19077·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8324"·title="">PR-8324</a></p></li></ul><h3·id="improvements-and-new-features-2"·class="section-heading">251 <ul><li><p>Bugs·in·how·<code·class="inline">erl·-extra</code>·interacts·with·passing·flags·via·ERL_*FLAGS·or·<code·class="inline">-args_file</code>·have·been·fixed.</p><p>Own·Id:·OTP-18766·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7639"·title="">PR-7639</a></p></li><li><p>Fixed·a·bug·that·prevented·the·emulator·from·building·on·recent·versions·of·Yocto·Linux.</p><p>Own·Id:·OTP-18918·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7952"·title="">PR-7952</a></p></li><li><p>Fixed·spectre·mitigation·configure·test·to·work·with·GCC·patches·to·always·add·<code·class="inline">-fcf-protection=full</code>.</p><p>Own·Id:·OTP-18928·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8006"·title="">PR-8006</a></p></li><li><p>A··call·to·<code·class="inline">socket:[recv|recvfrom|recvmsg]/*</code>·with·Timeout·=·0·on·Windows·could·cause·a·(case·clause)·crash·if·data·is·immediately·available.</p><p>Own·Id:·OTP-19063·Aux·Id:·OTP-18835</p></li><li><p>Fix·bug·on·Windows·where·<code·class="inline">exit_status</code>·would·not·be·sent·when·a·port·exits·after·the·stdin/stdout·handles·have·been·closed.</p><p>Own·Id:·OTP-19077·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8324"·title="">PR-8324</a></p></li></ul><h3·id="improvements-and-new-features-2"·class="section-heading">
252 ··<a·href="#improvements-and-new-features-2"·class="hover-link">252 ··<a·href="#improvements-and-new-features-2"·class="hover-link">
253 ····<i·class="ri-link-m"·aria-hidden="true"></i>253 ····<i·class="ri-link-m"·aria-hidden="true"></i>
254 ··</a>254 ··</a>
255 ··<span·class="text">Improvements·and·New·Features</span>255 ··<span·class="text">Improvements·and·New·Features</span>
256 </h3>256 </h3>
257 <ul><li><p>Refactored·how·the·JIT·handles·POSIX·signals·and·how·they·affect·thread·stacks,·allowing·us·to·use·the·native·stack·register·for·Erlang·stacks·on·more·platforms.</p><p>Notably,·containers·built·on·64-bit·x86·Alpine·Linux·images·will·now·perform·much·better·in·sequential·code.·As·an·example,·running·<code·class="inline">dialyzer</code>·over·the·OTP·code·base·finishes·about·15%·quicker.</p><p>Own·Id:·OTP-18568·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7174"·title="">PR-7174</a></p></li><li><p>The·<a·href="../../../lib/runtime_tools-2.1.1/doc/html/instrument.html"><code·class="inline">instrument</code></a>·module·can·now·track·allocations·on·a·per-process·or·per-port·basis.</p><p>Own·Id:·OTP-18577·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7236"·title="">PR-7236</a></p></li><li><p>The·<code·class="inline">pid</code>·field·returned·from·<a·href="erlang.html#fun_info/2"><code·class="inline">erlang:fun_info/1,2</code></a>·is·now·always·the·pid·for·the·<code·class="inline">init</code>·process·of·the·local·node,·not·the·pid·for·the·actual·process·that·created·the·fun.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18594·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7274"·title="">PR-7274</a></p></li><li><p>By·default,·escripts·will·now·be·compiled·instead·of·interpreted.·That·means·that·the·<code·class="inline">compiler</code>·application·must·be·installed.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18639·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7348"·title="">PR-7348</a></p></li><li><p>A·binary·returned·from·the·<a·href="../../../lib/kernel-10.2.2/doc/html/socket.html"><code·class="inline">socket</code></a>·receive·functions·is·no·longer·created·as·a·sub·binary·of·an·often·large·receive·buffer·binary·(socket·option·<code·class="inline">{otp,rcvbuf}</code>).··This·avoids·space·waste,·trusting·the·allocators·to·implement·reallocation·efficiently.</p><p>Own·Id:·OTP-18642·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/6152"·title="">GH-6152</a>,·<a·href="https://github.com/erlang/otp/pull/7465"·title="">PR-7465</a></p></li><li><p>The·default·process·limit·has·been·raised·to·<code·class="inline">1048576</code>·processes.</p><p>Own·Id:·OTP-18699·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7388"·title="">PR-7388</a></p></li><li><p>The·<a·href="erlang.html#system_monitor/2"><code·class="inline">erlang:system_monitor/2</code></a>·functionality·is·now·able·to·monitor·long·message·queues·in·the·system.</p><p>Own·Id:·OTP-18709·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7651"·title="">PR-7651</a></p></li><li><p>The·<code·class="inline">erl</code>·command·now·supports·the·<code·class="inline">-S</code>·flag,·which·is·similar·to·the·<code·class="inline">-run</code>·flag,·except·that·it·will·pass·all·arguments·up·to·end·of·the·command·line·to·the·called·function.·(The·<code·class="inline">-run</code>·flag·will·not·pass·arguments·beginning·with·a·hyphen.)·Another·difference·is·that·<code·class="inline">-S</code>·will·always·call·a·function·with·one·argument,·passing·an·empty·list·if·no·arguments·were·given.</p><p>Own·Id:·OTP-18744·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7470"·title="">PR-7470</a></p></li><li><p>When·implementing·an·alternative·carrier·for·the·Erlang·distribution,·a·separate·input·handler·process·may·now·be·registered,·using·<a·href="erlang.html#dist_ctrl_input_handler/2"><code·class="inline">erlang:dist_ctrl_input_handler/2</code></a>,·also·in·the·case·when·the·distribution·controller·is·a·port.</p><p>Own·Id:·OTP-18774·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7110"·title="">PR-7110</a></p></li><li><p>The·call·stack·trace·has·now·been·added·to·the·error·reported·by·<a·href="erlang.html#process_flag/2"><code·class="inline">erlang:process_flag/2</code></a>·when·<code·class="inline">max_heap_size</code>·limit·has·been·exceeded.</p><p>Own·Id:·OTP-18779·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7592"·title="">PR-7592</a></p></li><li><p><code·class="inline">-callback</code>·attributes·have·been·added·to·<a·href="erl_tracer.html"><code·class="inline">erl_tracer</code></a>.</p><p>Own·Id:·OTP-18794·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7703"·title="">PR-7703</a></p></li><li><p>For·<code·class="inline">inet_backend·=·socket</code>,·setting·the·<code·class="inline">active</code>·socket·option·alone,·to·<code·class="inline">once</code>,·<code·class="inline">true</code>·or·<code·class="inline">N</code>·has·been·optimized,·as·well·as·the·corresponding·data·delivery.</p><p>Own·Id:·OTP-18835</p></li><li><p>New·functions·<code·class="inline">socket:sendv/*</code>·for·sending·I/O·vectors·have·been·added.</p><p>Own·Id:·OTP-18845</p></li><li><p>Socket·options·that·take·string·now·also·accept·binaries.</p><p>Own·Id:·OTP-18849·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/6510"·title="">PR-6510</a></p></li><li><p>Native·coverage·support·has·been·implemented·in·the·JIT.·It·will··automatically·be·used·by·the·<a·href="../../../lib/tools-4.1.1/doc/html/cover.html"><code·class="inline">cover</code></a>·tool·to·reduce·the·execution·overhead·when·running·cover-compiled·code.</p><p>There·are·also·new·APIs·to·support·native·coverage·without·using·the·<code·class="inline">cover</code>·tool.</p><p>To·instrument·code·for·native·coverage·it·must·be·compiled·with·the·<a·href="../../../lib/compiler-8.5.5/doc/html/compile.html#line_coverage"><code·class="inline">line_coverage</code></a>·option.</p><p>To·enable·native·coverage·in·the·runtime·system,·start·it·like·so:</p><pre><code·class="text">$·erl·+JPcover·true</code></pre><p>There·are·also·the·following·new·functions·for·supporting·native·coverage:</p><ul><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/0"><code·class="inline">code:get_coverage_mode/0</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/1"><code·class="inline">code:get_coverage_mode/1</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#set_coverage_mode/1"><code·class="inline">code:set_coverage_mode/1</code></a></li></ul><p>Own·Id:·OTP-18856·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7856"·title="">PR-7856</a></p></li><li><p>Changed·the·default·value·of·the·command·line·flag·<code·class="inline">-code_path_choice</code>·to·<code·class="inline">strict</code>.·</p><p>Note·that·for·application·systems·using·archives,·it·is·necessary·to·add·the·<code·class="inline">code_path_choice·relaxed</code>·to·the·command·line·that·invokes·<code·class="inline">erl</code>.</p><p>Own·Id:·OTP-18894·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7243"·title="">PR-7243</a></p></li><li><p>Added·module·loading·to·<code·class="inline">erl·-init_debug</code>·printouts.</p><p>Own·Id:·OTP-18929·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8004"·title="">PR-8004</a></p></li><li><p>When·the·runtime·system·halts,·it·performs·various·flush·operations·before·terminating.·By·default·there·is·no·limit·on·how·much·time·the·flush·operations·are·allowed·to·take.·A·new·<em>halt·flush·timeout</em>·functionality·has·been·introduced·which·can·be·used·for·limiting·the·amount·of·time·that·the·flushing·operations·are·allowed·to·take.·For·more·information·see·the·documentation·of·the·<a·href="erlang.html#halt_flush_timeout"><code·class="inline">flush_timeout</code></a>·option·of·the·<a·href="erlang.html#halt/2"><code·class="inline">erlang:halt/2</code></a>·BIF·and·the·documentation·of·the·<code·class="inline">erl</code>·<a·href="erl_cmd.html#+zhft"><code·class="inline">+zhft·&lt;Timeout&gt;</code></a>·command·line·flag.</p><p>Own·Id:·OTP-18938·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8035"·title="">PR-8035</a>,·<a·href="https://github.com/erlang/otp/issues/7438"·title="">GH-7438</a></p></li><li><p>Optimized·code·loading·by·moving·certain·operations·from·the·code·server·to·the·caller.</p><p>Own·Id:·OTP-18941·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7981"·title="">PR-7981</a></p></li><li><p>Updated·asmjit·to·version·a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d</p><p>Own·Id:·OTP-18942</p></li><li><p>The·deprecated·functions·in·<a·href="zlib.html"><code·class="inline">zlib</code></a>·have·been·removed.·That·includes·<code·class="inline">inflateChunk/{1,2}</code>,·<code·class="inline">getBufSize/1</code>,·<code·class="inline">setBufSize/2</code>,·the·CRC32·functions,·and·the·Adler·checksum·functions.</p><p>Own·Id:·OTP-18950</p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>Safe·destructive·update·of·tuples·has·been·implemented·in·the·compiler·and·runtime·system.·This·allows·the·VM·to·update·tuples·in-place·when·it·is·safe·to·do·so,·thus·improving·performance·by·doing·less·copying·but·also·by·producing·less·garbage.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="9300196271-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9300196271-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·a845f6b785865d692ed2afb05f37fe56943aa6bb42d7b2b1313fc94c76876cd4·...·]-1">)</span><span·class="p">.</span><span·class="w">257 <ul><li><p>Refactored·how·the·JIT·handles·POSIX·signals·and·how·they·affect·thread·stacks,·allowing·us·to·use·the·native·stack·register·for·Erlang·stacks·on·more·platforms.</p><p>Notably,·containers·built·on·64-bit·x86·Alpine·Linux·images·will·now·perform·much·better·in·sequential·code.·As·an·example,·running·<code·class="inline">dialyzer</code>·over·the·OTP·code·base·finishes·about·15%·quicker.</p><p>Own·Id:·OTP-18568·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7174"·title="">PR-7174</a></p></li><li><p>The·<a·href="../../../lib/runtime_tools-2.1.1/doc/html/instrument.html"><code·class="inline">instrument</code></a>·module·can·now·track·allocations·on·a·per-process·or·per-port·basis.</p><p>Own·Id:·OTP-18577·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7236"·title="">PR-7236</a></p></li><li><p>The·<code·class="inline">pid</code>·field·returned·from·<a·href="erlang.html#fun_info/2"><code·class="inline">erlang:fun_info/1,2</code></a>·is·now·always·the·pid·for·the·<code·class="inline">init</code>·process·of·the·local·node,·not·the·pid·for·the·actual·process·that·created·the·fun.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18594·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7274"·title="">PR-7274</a></p></li><li><p>By·default,·escripts·will·now·be·compiled·instead·of·interpreted.·That·means·that·the·<code·class="inline">compiler</code>·application·must·be·installed.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18639·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7348"·title="">PR-7348</a></p></li><li><p>A·binary·returned·from·the·<a·href="../../../lib/kernel-10.2.2/doc/html/socket.html"><code·class="inline">socket</code></a>·receive·functions·is·no·longer·created·as·a·sub·binary·of·an·often·large·receive·buffer·binary·(socket·option·<code·class="inline">{otp,rcvbuf}</code>).··This·avoids·space·waste,·trusting·the·allocators·to·implement·reallocation·efficiently.</p><p>Own·Id:·OTP-18642·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/6152"·title="">GH-6152</a>,·<a·href="https://github.com/erlang/otp/pull/7465"·title="">PR-7465</a></p></li><li><p>The·default·process·limit·has·been·raised·to·<code·class="inline">1048576</code>·processes.</p><p>Own·Id:·OTP-18699·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7388"·title="">PR-7388</a></p></li><li><p>The·<a·href="erlang.html#system_monitor/2"><code·class="inline">erlang:system_monitor/2</code></a>·functionality·is·now·able·to·monitor·long·message·queues·in·the·system.</p><p>Own·Id:·OTP-18709·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7651"·title="">PR-7651</a></p></li><li><p>The·<code·class="inline">erl</code>·command·now·supports·the·<code·class="inline">-S</code>·flag,·which·is·similar·to·the·<code·class="inline">-run</code>·flag,·except·that·it·will·pass·all·arguments·up·to·end·of·the·command·line·to·the·called·function.·(The·<code·class="inline">-run</code>·flag·will·not·pass·arguments·beginning·with·a·hyphen.)·Another·difference·is·that·<code·class="inline">-S</code>·will·always·call·a·function·with·one·argument,·passing·an·empty·list·if·no·arguments·were·given.</p><p>Own·Id:·OTP-18744·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7470"·title="">PR-7470</a></p></li><li><p>When·implementing·an·alternative·carrier·for·the·Erlang·distribution,·a·separate·input·handler·process·may·now·be·registered,·using·<a·href="erlang.html#dist_ctrl_input_handler/2"><code·class="inline">erlang:dist_ctrl_input_handler/2</code></a>,·also·in·the·case·when·the·distribution·controller·is·a·port.</p><p>Own·Id:·OTP-18774·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7110"·title="">PR-7110</a></p></li><li><p>The·call·stack·trace·has·now·been·added·to·the·error·reported·by·<a·href="erlang.html#process_flag/2"><code·class="inline">erlang:process_flag/2</code></a>·when·<code·class="inline">max_heap_size</code>·limit·has·been·exceeded.</p><p>Own·Id:·OTP-18779·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7592"·title="">PR-7592</a></p></li><li><p><code·class="inline">-callback</code>·attributes·have·been·added·to·<a·href="erl_tracer.html"><code·class="inline">erl_tracer</code></a>.</p><p>Own·Id:·OTP-18794·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7703"·title="">PR-7703</a></p></li><li><p>For·<code·class="inline">inet_backend·=·socket</code>,·setting·the·<code·class="inline">active</code>·socket·option·alone,·to·<code·class="inline">once</code>,·<code·class="inline">true</code>·or·<code·class="inline">N</code>·has·been·optimized,·as·well·as·the·corresponding·data·delivery.</p><p>Own·Id:·OTP-18835</p></li><li><p>New·functions·<code·class="inline">socket:sendv/*</code>·for·sending·I/O·vectors·have·been·added.</p><p>Own·Id:·OTP-18845</p></li><li><p>Socket·options·that·take·string·now·also·accept·binaries.</p><p>Own·Id:·OTP-18849·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/6510"·title="">PR-6510</a></p></li><li><p>Native·coverage·support·has·been·implemented·in·the·JIT.·It·will··automatically·be·used·by·the·<a·href="../../../lib/tools-4.1.1/doc/html/cover.html"><code·class="inline">cover</code></a>·tool·to·reduce·the·execution·overhead·when·running·cover-compiled·code.</p><p>There·are·also·new·APIs·to·support·native·coverage·without·using·the·<code·class="inline">cover</code>·tool.</p><p>To·instrument·code·for·native·coverage·it·must·be·compiled·with·the·<a·href="../../../lib/compiler-8.5.5/doc/html/compile.html#line_coverage"><code·class="inline">line_coverage</code></a>·option.</p><p>To·enable·native·coverage·in·the·runtime·system,·start·it·like·so:</p><pre><code·class="text">$·erl·+JPcover·true</code></pre><p>There·are·also·the·following·new·functions·for·supporting·native·coverage:</p><ul><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/0"><code·class="inline">code:get_coverage_mode/0</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/1"><code·class="inline">code:get_coverage_mode/1</code></a></li><li><a·href="../../../lib/kernel-10.2.2/doc/html/code.html#set_coverage_mode/1"><code·class="inline">code:set_coverage_mode/1</code></a></li></ul><p>Own·Id:·OTP-18856·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7856"·title="">PR-7856</a></p></li><li><p>Changed·the·default·value·of·the·command·line·flag·<code·class="inline">-code_path_choice</code>·to·<code·class="inline">strict</code>.·</p><p>Note·that·for·application·systems·using·archives,·it·is·necessary·to·add·the·<code·class="inline">code_path_choice·relaxed</code>·to·the·command·line·that·invokes·<code·class="inline">erl</code>.</p><p>Own·Id:·OTP-18894·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7243"·title="">PR-7243</a></p></li><li><p>Added·module·loading·to·<code·class="inline">erl·-init_debug</code>·printouts.</p><p>Own·Id:·OTP-18929·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8004"·title="">PR-8004</a></p></li><li><p>When·the·runtime·system·halts,·it·performs·various·flush·operations·before·terminating.·By·default·there·is·no·limit·on·how·much·time·the·flush·operations·are·allowed·to·take.·A·new·<em>halt·flush·timeout</em>·functionality·has·been·introduced·which·can·be·used·for·limiting·the·amount·of·time·that·the·flushing·operations·are·allowed·to·take.·For·more·information·see·the·documentation·of·the·<a·href="erlang.html#halt_flush_timeout"><code·class="inline">flush_timeout</code></a>·option·of·the·<a·href="erlang.html#halt/2"><code·class="inline">erlang:halt/2</code></a>·BIF·and·the·documentation·of·the·<code·class="inline">erl</code>·<a·href="erl_cmd.html#+zhft"><code·class="inline">+zhft·&lt;Timeout&gt;</code></a>·command·line·flag.</p><p>Own·Id:·OTP-18938·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8035"·title="">PR-8035</a>,·<a·href="https://github.com/erlang/otp/issues/7438"·title="">GH-7438</a></p></li><li><p>Optimized·code·loading·by·moving·certain·operations·from·the·code·server·to·the·caller.</p><p>Own·Id:·OTP-18941·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7981"·title="">PR-7981</a></p></li><li><p>Updated·asmjit·to·version·a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d</p><p>Own·Id:·OTP-18942</p></li><li><p>The·deprecated·functions·in·<a·href="zlib.html"><code·class="inline">zlib</code></a>·have·been·removed.·That·includes·<code·class="inline">inflateChunk/{1,2}</code>,·<code·class="inline">getBufSize/1</code>,·<code·class="inline">setBufSize/2</code>,·the·CRC32·functions,·and·the·Adler·checksum·functions.</p><p>Own·Id:·OTP-18950</p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>Safe·destructive·update·of·tuples·has·been·implemented·in·the·compiler·and·runtime·system.·This·allows·the·VM·to·update·tuples·in-place·when·it·is·safe·to·do·so,·thus·improving·performance·by·doing·less·copying·but·also·by·producing·less·garbage.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="6067366886-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6067366886-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·6af419e842ed171d1b516e58d55579fa941e36f69033bd5ac1f21f1a7aa8bac1·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
258 </span><span·class="nf">update</span><span·class="p"·data-group-id="9300196271-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9300196271-4">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">needs_update</span><span·class="p">,</span><span·class="ss">b</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·71e4239530a6d0ee6734083347a960e5a213123b3eadfd4c3794480fe62d9e92·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 </span><span·class="nf">update</span><span·class="p"·data-group-id="6067366886-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6067366886-4">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">needs_update</span><span·class="p">,</span><span·class="ss">b</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·b4d12eb662e546147194db44ca58859faac8bf1fe98c0a9d89016fd7f072fa85·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R0</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9300196271-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="9300196271-5">}</span><span·class="p">,</span><span·class="w">259 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R0</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6067366886-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="6067366886-5">}</span><span·class="p">,</span><span·class="w">
260 ····</span><span·class="k">if</span><span·class="w">260 ····</span><span·class="k">if</span><span·class="w">
261 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">261 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9300196271-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="9300196271-6">}</span><span·class="p">;</span><span·class="w">262 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6067366886-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="6067366886-6">}</span><span·class="p">;</span><span·class="w">
263 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">263 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
264 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9300196271-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="9300196271-7">}</span><span·class="p">;</span><span·class="w">264 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6067366886-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="6067366886-7">}</span><span·class="p">;</span><span·class="w">
265 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">265 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
266 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9300196271-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="9300196271-8">}</span><span·class="w">266 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6067366886-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="6067366886-8">}</span><span·class="w">
267 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·record·updates·in·each·of·the·three·clauses·of·the·<code·class="inline">if</code>·can·safely·be·done·in-place,·because·variable·<code·class="inline">R</code>·is·not·used·again.</p><p>Own·Id:·OTP-18972·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8090"·title="">PR-8090</a></p></li><li><p>The·obsolete·and·undocumented·support·for·opening·a·port·to·an·external267 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·record·updates·in·each·of·the·three·clauses·of·the·<code·class="inline">if</code>·can·safely·be·done·in-place,·because·variable·<code·class="inline">R</code>·is·not·used·again.</p><p>Own·Id:·OTP-18972·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8090"·title="">PR-8090</a></p></li><li><p>The·obsolete·and·undocumented·support·for·opening·a·port·to·an·external
268 resource·by·passing·an·atom·(or·a·string)·as·first·argument·to268 resource·by·passing·an·atom·(or·a·string)·as·first·argument·to
269 <a·href="erlang.html#open_port/2"><code·class="inline">open_port()</code></a>,·implemented·by·the·vanilla·driver,269 <a·href="erlang.html#open_port/2"><code·class="inline">open_port()</code></a>,·implemented·by·the·vanilla·driver,
270 has·been·removed.·This·feature·has·been·scheduled·for·removal·in·OTP·27270 has·been·removed.·This·feature·has·been·scheduled·for·removal·in·OTP·27
271 since·the·release·of·OTP·26.</p><p>Own·Id:·OTP-18976·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7125"·title="">PR-7125</a></p></li><li><p>An·optional·NIF·callback·<code·class="inline">ERL_NIF_OPT_ON_UNLOAD_THREAD</code>·to·be·called·by·all·scheduler·threads·when·a·NIF·library·is·unloaded.·Used·for·releasing·thread·specific·data.·Can·be·set·with·function·<code·class="inline">enif_set_option</code>.</p><p>Own·Id:·OTP-18977·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7809"·title="">PR-7809</a></p></li><li><p>There·is·a·new·module·<a·href="../../../lib/kernel-10.2.2/doc/html/trace.html"><code·class="inline">trace</code></a>·in·Kernel·providing·the·same·trace·functionality·as·<a·href="erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·and·<a·href="erlang.html#trace_pattern/3"><code·class="inline">erlang:trace_pattern/3</code></a>,·but·with·the·addition·of·<strong>dynamic·isolated·trace·sessions</strong>.</p><p>Own·Id:·OTP-18980</p></li><li><p>Added·the·<code·class="inline">+MMlp·on|off</code>·emulator·option·to·let·the·<code·class="inline">mseg</code>·allocator·use·&quot;large·pages&quot;·(sometimes·known·as·&quot;huge·pages&quot;·or·&quot;super·pages&quot;).·This·currently·only·affects·super-carrier·allocations,·but·may·be·extended·in·the·future.</p><p>Own·Id:·OTP-18984·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7977"·title="">PR-7977</a></p></li><li><p><code·class="inline">inet_backend·=·socket</code>·has·been·optimized·and·reworked·to·be·more·compatible·with·the·original·<code·class="inline">inet_backend·=·inet</code>.</p><p>Own·Id:·OTP-19004·Aux·Id:·OTP-18835</p></li><li><p>The·<code·class="inline">socket</code>·documentation·has·been·reworked,·and·due·to271 since·the·release·of·OTP·26.</p><p>Own·Id:·OTP-18976·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7125"·title="">PR-7125</a></p></li><li><p>An·optional·NIF·callback·<code·class="inline">ERL_NIF_OPT_ON_UNLOAD_THREAD</code>·to·be·called·by·all·scheduler·threads·when·a·NIF·library·is·unloaded.·Used·for·releasing·thread·specific·data.·Can·be·set·with·function·<code·class="inline">enif_set_option</code>.</p><p>Own·Id:·OTP-18977·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7809"·title="">PR-7809</a></p></li><li><p>There·is·a·new·module·<a·href="../../../lib/kernel-10.2.2/doc/html/trace.html"><code·class="inline">trace</code></a>·in·Kernel·providing·the·same·trace·functionality·as·<a·href="erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·and·<a·href="erlang.html#trace_pattern/3"><code·class="inline">erlang:trace_pattern/3</code></a>,·but·with·the·addition·of·<strong>dynamic·isolated·trace·sessions</strong>.</p><p>Own·Id:·OTP-18980</p></li><li><p>Added·the·<code·class="inline">+MMlp·on|off</code>·emulator·option·to·let·the·<code·class="inline">mseg</code>·allocator·use·&quot;large·pages&quot;·(sometimes·known·as·&quot;huge·pages&quot;·or·&quot;super·pages&quot;).·This·currently·only·affects·super-carrier·allocations,·but·may·be·extended·in·the·future.</p><p>Own·Id:·OTP-18984·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7977"·title="">PR-7977</a></p></li><li><p><code·class="inline">inet_backend·=·socket</code>·has·been·optimized·and·reworked·to·be·more·compatible·with·the·original·<code·class="inline">inet_backend·=·inet</code>.</p><p>Own·Id:·OTP-19004·Aux·Id:·OTP-18835</p></li><li><p>The·<code·class="inline">socket</code>·documentation·has·been·reworked,·and·due·to
272 that·a·few·details·were·fixed:</p><ul><li><a·href="../../../lib/kernel-10.2.2/doc/html/socket.html#is_supported/1"><code·class="inline">socket:is_supported/1</code></a>·now·returns·<code·class="inline">true</code>·for·example·for·<code·class="inline">protocols</code>272 that·a·few·details·were·fixed:</p><ul><li><a·href="../../../lib/kernel-10.2.2/doc/html/socket.html#is_supported/1"><code·class="inline">socket:is_supported/1</code></a>·now·returns·<code·class="inline">true</code>·for·example·for·<code·class="inline">protocols</code>
273 that·is·a·&quot;category&quot;,·not·an·item.</li><li><a·href="../../../lib/kernel-10.2.2/doc/html/socket.html#cancel_monitor/1"><code·class="inline">socket:cancel_monitor/1</code></a>·no·longer·badargs·for·a·monitor·that·was·set·by273 that·is·a·&quot;category&quot;,·not·an·item.</li><li><a·href="../../../lib/kernel-10.2.2/doc/html/socket.html#cancel_monitor/1"><code·class="inline">socket:cancel_monitor/1</code></a>·no·longer·badargs·for·a·monitor·that·was·set·by
Offset 3146, 17 lines modifiedOffset 3146, 17 lines modified
3146 markedly·so·when·the·maximum·number·of·file·descriptors·has·been·tuned·to·a3146 markedly·so·when·the·maximum·number·of·file·descriptors·has·been·tuned·to·a
3147 large·number.</p><p>Instead,·in·erl_child_setup,·walk·the·open·descriptors·under·<code·class="inline">/dev/fd</code>·and3147 large·number.</p><p>Instead,·in·erl_child_setup,·walk·the·open·descriptors·under·<code·class="inline">/dev/fd</code>·and
3148 close·only·those·which·are·open.</p><p>This·optimization·affects·the·CPU·usage·of·starting·a·new·Erlang·instance.</p><p>Own·Id:·OTP-16270</p></li><li><p>Optimized·<a·href="../../../lib/stdlib-6.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·for·trivial·cases·of·an·empty·map(s)·or·same·map.</p><p>Own·Id:·OTP-16283·Aux·Id:·PR-2441</p></li><li><p>The·new·experimental·<code·class="inline">socket</code>·module·has·been·moved·to·the·Kernel·application.</p><p>Own·Id:·OTP-16312</p></li><li><p>Improved·the·presentation·of·allocations·and·carriers·in·the·<code·class="inline">instrument</code>3148 close·only·those·which·are·open.</p><p>This·optimization·affects·the·CPU·usage·of·starting·a·new·Erlang·instance.</p><p>Own·Id:·OTP-16270</p></li><li><p>Optimized·<a·href="../../../lib/stdlib-6.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·for·trivial·cases·of·an·empty·map(s)·or·same·map.</p><p>Own·Id:·OTP-16283·Aux·Id:·PR-2441</p></li><li><p>The·new·experimental·<code·class="inline">socket</code>·module·has·been·moved·to·the·Kernel·application.</p><p>Own·Id:·OTP-16312</p></li><li><p>Improved·the·presentation·of·allocations·and·carriers·in·the·<code·class="inline">instrument</code>
3149 module.</p><p>Own·Id:·OTP-16327</p></li><li><p>As·announced·in·OTP·22.0,·the·previously·existing·limited·support·for·VxWorks3149 module.</p><p>Own·Id:·OTP-16327</p></li><li><p>As·announced·in·OTP·22.0,·the·previously·existing·limited·support·for·VxWorks
3150 has·now·been·removed.</p><p>*<strong>·POTENTIAL·INCOMPATIBILITY·*</strong></p><p>Own·Id:·OTP-16329·Aux·Id:·OTP-15621</p></li><li><p>The·return·value·when·using·the·<code·class="inline">httph</code>·and·<code·class="inline">httph_bin</code>·option·to3150 has·now·been·removed.</p><p>*<strong>·POTENTIAL·INCOMPATIBILITY·*</strong></p><p>Own·Id:·OTP-16329·Aux·Id:·OTP-15621</p></li><li><p>The·return·value·when·using·the·<code·class="inline">httph</code>·and·<code·class="inline">httph_bin</code>·option·to
3151 <a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>·and·<a·href="../../../lib/kernel-10.2.2/doc/html/inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·has·been·changed·to·also·include3151 <a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>·and·<a·href="../../../lib/kernel-10.2.2/doc/html/inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·has·been·changed·to·also·include
3152 the·original·header·unmodified.·See·<a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">3152 the·original·header·unmodified.·See·<a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">
3153 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">decode_packet</span><span·class="p"·data-group-id="0945544801-1">(</span><span·class="ss">httph_bin</span><span·class="p">,</span><span·class="p"·data-group-id="0945544801-2">&lt;&lt;</span><span·class="s">&quot;HELLO:3153 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">decode_packet</span><span·class="p"·data-group-id="8305492044-1">(</span><span·class="ss">httph_bin</span><span·class="p">,</span><span·class="p"·data-group-id="8305492044-2">&lt;&lt;</span><span·class="s">&quot;HELLO:
3154 ······hi\r\n\r\n&quot;</span><span·class="p"·data-group-id="0945544801-2">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0945544801-3">[</span><span·class="p"·data-group-id="0945544801-3">]</span><span·class="p"·data-group-id="0945544801-1">)</span><span·class="p">.</span><span·class="w"> 
3155 ······</span><span·class="p"·data-group-id="0945544801-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0945544801-5">{</span><span·class="ss">http_header</span><span·class="p">,</span><span·class="mi">0</span><span·cla[·...·truncated·by·diffoscope;·len:·1101,·SHA:·17f5a72430125b6c6d873167f6d562831c2abc0f893239e1267bf41b24bc0200·...·]3154 ······hi\r\n\r\n&quot;</span><span·class="p"·data-group-id="8305492044-2">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8305492044-3">[</span><span·class="p"·data-group-id="8305492044-3">]</span><span·class="p"·data-group-id="8305492044-1[·...·truncated·by·diffoscope;·len:·50,·SHA:·7c76ffcbdd2b9b0809992215d4bc03869c03819d4f2872424fd7856db727c221·...·]
 3155 ······</span><span·class="p"·data-group-id="8305492044-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8305492044-5">{</span><span·class="ss">http_header</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="8305492044-6">&lt;&lt;</span><span·class="s">&quot;Hello&quot;</span><span·class="p"·data-group-id="8305492044-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8305492044-7">&lt;&lt;</span><span·class="s">&quot;HELLO&quot;</span><span·class="p"·data-group-id="8305492044-7">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8305492044-8">&lt;&lt;</span><span·class="s">&quot;hi&quot;</span><span·class="p"·data-group-id="8305492044-8">&gt;&gt;</span><span·class="p"·data-group-id="8305492044-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="8305492044-9">&lt;&lt;</span><span·class="s">&quot;\r\n&quot;</span><span·class="p"·data-group-id="8305492044-9">&gt;&gt;</span><span·class="p"·data-group-id="8305492044-4">}</span></code></pre><p>Own·Id:·OTP-16347·Aux·Id:·PR-2466</p></li><li><p>Ensure·<a·href="../../../lib/kernel-10.2.2/doc/html/net_kernel.html#monitor_nodes/1"><code·class="inline">net_kernel:monitor_nodes/1</code></a>·sends·<code·class="inline">nodedown</code>·messages·of·a·failed
3156 connection·before·<code·class="inline">nodeup</code>·messages·of·a·reestablished·connection·toward·the3156 connection·before·<code·class="inline">nodeup</code>·messages·of·a·reestablished·connection·toward·the
3157 same·node.</p><p>Own·Id:·OTP-16362</p></li><li><p>Update·of·<a·href="../../../lib/kernel-10.2.2/doc/html/seq_trace.html#whatis">sequential·tracing</a>·to·also·support·other3157 same·node.</p><p>Own·Id:·OTP-16362</p></li><li><p>Update·of·<a·href="../../../lib/kernel-10.2.2/doc/html/seq_trace.html#whatis">sequential·tracing</a>·to·also·support·other
3158 information·transfers·than·message·passing.</p><p>Own·Id:·OTP-16370·Aux·Id:·OTP-15251,·OTP-15232</p></li><li><p>socket:·It·is·now·possible·to·create·a·socket·from·an·already·existing·file3158 information·transfers·than·message·passing.</p><p>Own·Id:·OTP-16370·Aux·Id:·OTP-15251,·OTP-15232</p></li><li><p>socket:·It·is·now·possible·to·create·a·socket·from·an·already·existing·file
3159 descriptor.</p><p>Own·Id:·OTP-16398·Aux·Id:·ERL-1154</p></li><li><p>socket:·The·socket:supports/1·function·now·also·report·if·netns·is·supported3159 descriptor.</p><p>Own·Id:·OTP-16398·Aux·Id:·ERL-1154</p></li><li><p>socket:·The·socket:supports/1·function·now·also·report·if·netns·is·supported
3160 or·not.</p><p>Own·Id:·OTP-16432</p></li><li><p><code·class="inline">=:=</code>·has·been·optimized·to·return·<code·class="inline">false</code>·immediately·when·comparing·two·maps3160 or·not.</p><p>Own·Id:·OTP-16432</p></li><li><p><code·class="inline">=:=</code>·has·been·optimized·to·return·<code·class="inline">false</code>·immediately·when·comparing·two·maps
3161 of·different·sizes.</p><p>Own·Id:·OTP-16454</p></li><li><p>Changed·the·behaviour·of·passing·the·<code·class="inline">erl</code>·command·line·argument3161 of·different·sizes.</p><p>Own·Id:·OTP-16454</p></li><li><p>Changed·the·behaviour·of·passing·the·<code·class="inline">erl</code>·command·line·argument
3162 <a·href="erl_cmd.html#async_thread_pool_size"><code·class="inline">+A·0</code></a>·to·silently·imply·<code·class="inline">+A·1</code>.·That·is,3162 <a·href="erl_cmd.html#async_thread_pool_size"><code·class="inline">+A·0</code></a>·to·silently·imply·<code·class="inline">+A·1</code>.·That·is,
Offset 10863, 20 lines modifiedOffset 10863, 20 lines modified
10863 <ul><li><p>Previously·<a·href="erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved10863 <ul><li><p>Previously·<a·href="erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved
10864 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could10864 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could
10865 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you10865 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you
10866 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be10866 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be
10867 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink10867 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink
10868 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or10868 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or
10869 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did10869 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did
10870 not.·For·example,·the·following·code·might·hang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">············</span><span·class="n">Mon</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monitor</span><span·class="p"·data-group-id="2212968087-1">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="2212968087-1">)</span><span·class="p">,</span><span·class="w">10870 not.·For·example,·the·following·code·might·hang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">············</span><span·class="n">Mon</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monitor</span><span·class="p"·data-group-id="1588040912-1">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="1588040912-1">)</span><span·class="p">,</span><span·class="w">
10871 ············</span><span·class="c1">%%·...</span><span·class="w">10871 ············</span><span·class="c1">%%·...</span><span·class="w">
10872 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="2212968087-2">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bang</span><span·class="p"·data-group-id="2212968087-2">)</span><span·class="p">,</span><span·class="w">10872 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="1588040912-2">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bang</span><span·class="p"·data-group-id="1588040912-2">)</span><span·class="p">,</span><span·class="w">
10873 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="2212968087-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="2212968087-3">)</span><span·class="p">,</span><span·class="w">10873 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="1588040912-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="1588040912-3">)</span><span·class="p">,</span><span·class="w">
10874 ············</span><span·class="k">receive</span><span·class="w">10874 ············</span><span·class="k">receive</span><span·class="w">
10875 ················</span><span·class="p"·data-group-id="2212968087-4">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mon</span><span·class="w">·</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·168,·SHA:·bda750139d6bc3b58f73dc8440e51b4b7ea76b6eb8ee76cd6870c81e647b4ef3·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">10875 ················</span><span·class="p"·data-group-id="1588040912-4">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mon</span><span·class="w">·</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·168,·SHA:·6105835d453bd6fa50962b00aa726bfd21dbd59279f7f1bb244c837d581519a5·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
10876 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">10876 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">
10877 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">10877 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">
10878 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">10878 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">
10879 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">10879 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">
10880 ············</span><span·class="k">end</span><span·class="p">,</span></code></pre><p>*<strong>·POTENTIAL·INCOMPATIBILITY·*</strong></p><p>Own·Id:·OTP-5772</p></li><li><p>Two·bugs·fixed:·If·the·environment·variable·<code·class="inline">ERL_FLAGS</code>·was·set,·its·contents10880 ············</span><span·class="k">end</span><span·class="p">,</span></code></pre><p>*<strong>·POTENTIAL·INCOMPATIBILITY·*</strong></p><p>Own·Id:·OTP-5772</p></li><li><p>Two·bugs·fixed:·If·the·environment·variable·<code·class="inline">ERL_FLAGS</code>·was·set,·its·contents
10881 would·be·appended·to·the·end·of·the·command·line·even·if·the·command·line·had10881 would·be·appended·to·the·end·of·the·command·line·even·if·the·command·line·had
10882 an·<code·class="inline">-extra</code>·options.·Changed·to·place·the·options·from·<code·class="inline">ERL_FLAGS</code>·just·before10882 an·<code·class="inline">-extra</code>·options.·Changed·to·place·the·options·from·<code·class="inline">ERL_FLAGS</code>·just·before
3.54 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/persistent_term.html
    
Offset 196, 17 lines modifiedOffset 196, 17 lines modified
196 ····<i·class="ri-link-m"·aria-hidden="true"></i>196 ····<i·class="ri-link-m"·aria-hidden="true"></i>
197 ··</a>197 ··</a>
198 ··<span·class="text">Example</span>198 ··<span·class="text">Example</span>
199 </h2>199 </h2>
200 <p>The·following·example·shows·how·lock·contention·for·ETS·tables·can·be·minimized200 <p>The·following·example·shows·how·lock·contention·for·ETS·tables·can·be·minimized
201 by·having·one·ETS·table·for·each·scheduler.·The·table·identifiers·for·the·ETS201 by·having·one·ETS·table·for·each·scheduler.·The·table·identifiers·for·the·ETS
202 tables·are·stored·as·a·single·persistent·term:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="c1">%%·There·is·one·ETS·table·for·each·scheduler.</span><span·class="w">202 tables·are·stored·as·a·single·persistent·term:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="c1">%%·There·is·one·ETS·table·for·each·scheduler.</span><span·class="w">
203 ····</span><span·class="n">Sid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="2554269161-1">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="2554269161-1">)</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="n">Sid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="3021409449-1">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="3021409449-1">)</span><span·class="p">,</span><span·class="w">
204 ····</span><span·class="n">Tid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="2554269161-2">(</span><span·class="n">Sid</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">persistent_term</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="2554269161-3">(</span><span·class="o">?[·...·truncated·by·diffoscope;·len:·130,·SHA:·51ab8f7f6934fe55c6bbdaf20152e33711e55295f0eae3fa9c41ad6bfc7bc084·...·]-2">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="n">Tid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="3021409449-2">(</span><span·class="n">Sid</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">persistent_term</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="3021409449-3">(</span><span·class="o">?[·...·truncated·by·diffoscope;·len:·130,·SHA:·5cd20bd2096cc5c69dc31163490b2a27f2254c03e2c944bcae08d0772198f523·...·]-2">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">update_counter</span><span·class="p"·data-group-id="2554269161-4">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="2554269161-4">)</span><span·class="p">.</span></code></pre>205 ····</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">update_counter</span><span·class="p"·data-group-id="3021409449-4">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="3021409449-4">)</span><span·class="p">.</span></code></pre>
206 ····</section>206 ····</section>
  
207 </div>207 </div>
  
208 ··<section·id="summary"·class="details-list">208 ··<section·id="summary"·class="details-list">
209 ····<h1·class="section-heading">209 ····<h1·class="section-heading">
210 ······<a·class="hover-link"·href="#summary">210 ······<a·class="hover-link"·href="#summary">
3.72 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/supercarrier.html
    
Offset 225, 20 lines modifiedOffset 225, 20 lines modified
225 (alloc_util·and·the·different·strategies).·However,·that·would·not·be225 (alloc_util·and·the·different·strategies).·However,·that·would·not·be
226 as·straight·forward·as·one·can·think·and·can·also·waste·quite·a·lot·of226 as·straight·forward·as·one·can·think·and·can·also·waste·quite·a·lot·of
227 memory·as·it·uses·prepended·block·headers.·The·granularity·of·the227 memory·as·it·uses·prepended·block·headers.·The·granularity·of·the
228 super·carrier·is·one·memory·page·(usually·4kb).·We·want·to·allocate228 super·carrier·is·one·memory·page·(usually·4kb).·We·want·to·allocate
229 and·free·entire·pages·and·we·don't·want·to·waste·an·entire·page·just229 and·free·entire·pages·and·we·don't·want·to·waste·an·entire·page·just
230 to·hold·the·block·header·of·the·following·pages.</p><p>Instead·we·store·the·meta·information·about·all·the·free·segments·in·a230 to·hold·the·block·header·of·the·following·pages.</p><p>Instead·we·store·the·meta·information·about·all·the·free·segments·in·a
231 dedicated·area·apart·from·the·<code·class="inline">sa</code>·and·<code·class="inline">sua</code>·areas.·Every·free·segment·is231 dedicated·area·apart·from·the·<code·class="inline">sa</code>·and·<code·class="inline">sua</code>·areas.·Every·free·segment·is
232 represented·by·a·descriptor·struct·(<code·class="inline">ErtsFreeSegDesc</code>).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">typedef</span><span·class="w">·</span><span·class="ss">struct</span><span·class="w">·</span><span·class="p"·data-group-id="7974692756-1">{</span><span·class="w">232 represented·by·a·descriptor·struct·(<code·class="inline">ErtsFreeSegDesc</code>).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">typedef</span><span·class="w">·</span><span·class="ss">struct</span><span·class="w">·</span><span·class="p"·data-group-id="0674439424-1">{</span><span·class="w">
233 ····</span><span·class="n">RBTNode</span><span·class="w">·</span><span·class="ss">snode</span><span·class="p">;</span><span·class="w">······</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="nb">node</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">&#39;stree&#39;</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">233 ····</span><span·class="n">RBTNode</span><span·class="w">·</span><span·class="ss">snode</span><span·class="p">;</span><span·class="w">······</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="nb">node</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">&#39;stree&#39;</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
234 ····</span><span·class="n">RBTNode</span><span·class="w">·</span><span·class="ss">anode</span><span·class="p">;</span><span·class="w">······</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="nb">node</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">&#39;atree&#39;</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">234 ····</span><span·class="n">RBTNode</span><span·class="w">·</span><span·class="ss">anode</span><span·class="p">;</span><span·class="w">······</span><span·class="o">/</span><span·class="o">*</span><span·class="w">·</span><span·class="nb">node</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">&#39;atree&#39;</span><span·class="w">·</span><span·class="o">*</span><span·class="o">/</span><span·class="w">
235 ····</span><span·class="ss">char</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">start</span><span·class="p">;</span><span·class="w">235 ····</span><span·class="ss">char</span><span·class="o">*</span><span·class="w">·</span><span·class="ss">start</span><span·class="p">;</span><span·class="w">
236 ····</span><span·class="ss">char</span><span·class="o">*</span><span·class="w">·</span><span·class="k">end</span><span·class="p">;</span><span·class="w">236 ····</span><span·class="ss">char</span><span·class="o">*</span><span·class="w">·</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
237 </span><span·class="p"·data-group-id="7974692756-1">}</span><span·class="n">ErtsFreeSegDesc</span><span·class="p">;</span></code></pre><p>To·find·the·smallest·free·segment·that·will·satisfy·a·carrier·allocation237 </span><span·class="p"·data-group-id="0674439424-1">}</span><span·class="n">ErtsFreeSegDesc</span><span·class="p">;</span></code></pre><p>To·find·the·smallest·free·segment·that·will·satisfy·a·carrier·allocation
238 (best·fit),·the·free·segments·are·organized·in·a·tree·sorted·by238 (best·fit),·the·free·segments·are·organized·in·a·tree·sorted·by
239 size·(<code·class="inline">stree</code>).·We·search·in·this·tree·at·allocation.·If·no·free·segment·of239 size·(<code·class="inline">stree</code>).·We·search·in·this·tree·at·allocation.·If·no·free·segment·of
240 sufficient·size·was·found,·the·area·(<code·class="inline">sa</code>·or·<code·class="inline">sua</code>)·is·instead·expanded.240 sufficient·size·was·found,·the·area·(<code·class="inline">sa</code>·or·<code·class="inline">sua</code>)·is·instead·expanded.
241 If·two·or·more·free·segments·with·equal·size·exist,·the·one·at·lowest241 If·two·or·more·free·segments·with·equal·size·exist,·the·one·at·lowest
242 address·is·chosen·for·<code·class="inline">sa</code>·and·highest·address·for·<code·class="inline">sua</code>.</p><p>At·carrier·deallocation,·we·want·to·coalesce·with·any·adjacent·free242 address·is·chosen·for·<code·class="inline">sa</code>·and·highest·address·for·<code·class="inline">sua</code>.</p><p>At·carrier·deallocation,·we·want·to·coalesce·with·any·adjacent·free
243 segments,·to·form·one·large·free·segment.·To·do·that,·all·free243 segments,·to·form·one·large·free·segment.·To·do·that,·all·free
244 segments·are·also·organized·in·a·tree·sorted·in·address·order·(<code·class="inline">atree</code>).</p><p>So,·in·total·we·keep·four·trees·of·free·descriptors·for·the·super244 segments·are·also·organized·in·a·tree·sorted·in·address·order·(<code·class="inline">atree</code>).</p><p>So,·in·total·we·keep·four·trees·of·free·descriptors·for·the·super
4.38 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/time_correction.html
    
Offset 560, 17 lines modifiedOffset 560, 17 lines modified
560 the·event·occurs.</p></section><section·role="note"·class="admonition·tip"><h4·class="admonition-title·tip">Do</h4><p>Determine·the·order·of·events·by·saving·the·integer·returned·by560 the·event·occurs.</p></section><section·role="note"·class="admonition·tip"><h4·class="admonition-title·tip">Do</h4><p>Determine·the·order·of·events·by·saving·the·integer·returned·by
561 <a·href="erlang.html#unique_integer/1"><code·class="inline">erlang:unique_integer([monotonic])</code></a>·when·the561 <a·href="erlang.html#unique_integer/1"><code·class="inline">erlang:unique_integer([monotonic])</code></a>·when·the
562 event·occurs.·These·integers·are·strictly·monotonically·ordered·on·current562 event·occurs.·These·integers·are·strictly·monotonically·ordered·on·current
563 runtime·system·instance·corresponding·to·creation·time.</p></section><h4>Determine·Order·of·Events·with·Time·of·the·Event</h4><section·role="note"·class="admonition·error"><h4·class="admonition-title·error">Dont</h4><p>Determine·the·order·of·events·by·saving·a·time·stamp·with·<a·href="erlang.html#now/0"><code·class="inline">erlang:now/0</code></a>·when563 runtime·system·instance·corresponding·to·creation·time.</p></section><h4>Determine·Order·of·Events·with·Time·of·the·Event</h4><section·role="note"·class="admonition·error"><h4·class="admonition-title·error">Dont</h4><p>Determine·the·order·of·events·by·saving·a·time·stamp·with·<a·href="erlang.html#now/0"><code·class="inline">erlang:now/0</code></a>·when
564 the·event·occurs.</p></section><section·role="note"·class="admonition·tip"><h4·class="admonition-title·tip">Do</h4><p>Determine·the·order·of·events·by·saving·a·tuple·containing564 the·event·occurs.</p></section><section·role="note"·class="admonition·tip"><h4·class="admonition-title·tip">Do</h4><p>Determine·the·order·of·events·by·saving·a·tuple·containing
565 <a·href="erlang.html#monotonic_time/0">monotonic·time</a>·and·a565 <a·href="erlang.html#monotonic_time/0">monotonic·time</a>·and·a
566 <a·href="erlang.html#unique_integer/1">strictly·monotonically·increasing·integer</a>·as566 <a·href="erlang.html#unique_integer/1">strictly·monotonically·increasing·integer</a>·as
567 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="6938831218-1">(</span><span·class="p"·data-group-id="6938831218-1">)</span><span·class="p">,</span><span·class="w">567 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Time</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="1964592459-1">(</span><span·class="p"·data-group-id="1964592459-1">)</span><span·class="p">,</span><span·class="w">
568 </span><span·class="n">UMI</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">unique_integer</span><span·class="p"·data-group-id="6938831218-2">(</span><span·class="p"·data-group-id="6938831218-3">[</span><span·class="ss">monotonic</span><span·class="p"·data-group-id="6938831218-3">]</span><span·class="p"·data-group-id="6938831218-2">)</span><span·class="p">,</span><span·class="w">568 </span><span·class="n">UMI</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">unique_integer</span><span·class="p"·data-group-id="1964592459-2">(</span><span·class="p"·data-group-id="1964592459-3">[</span><span·class="ss">monotonic</span><span·class="p"·data-group-id="1964592459-3">]</span><span·class="p"·data-group-id="1964592459-2">)</span><span·class="p">,</span><span·class="w">
569 </span><span·class="n">EventTag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6938831218-4">{</span><span·class="n">Time</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UMI</span><span·class="p"·data-group-id="6938831218-4">}</span></code></pre><p>These·tuples·are·strictly·monotonically·ordered·on·the·current·runtime·system569 </span><span·class="n">EventTag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1964592459-4">{</span><span·class="n">Time</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UMI</span><span·class="p"·data-group-id="1964592459-4">}</span></code></pre><p>These·tuples·are·strictly·monotonically·ordered·on·the·current·runtime·system
570 instance·according·to·creation·time.·It·is·important·that·the·monotonic·time570 instance·according·to·creation·time.·It·is·important·that·the·monotonic·time
571 is·in·the·first·element·(the·most·significant·element·when·comparing571 is·in·the·first·element·(the·most·significant·element·when·comparing
572 two-tuples).·Using·the·monotonic·time·in·the·tuples,·you·can·calculate·time572 two-tuples).·Using·the·monotonic·time·in·the·tuples,·you·can·calculate·time
573 between·events.</p><p>If·you·are·interested·in·Erlang·system·time·at·the·time·when·the·event573 between·events.</p><p>If·you·are·interested·in·Erlang·system·time·at·the·time·when·the·event
574 occurred,·you·can·also·save·the·time·offset·before·or·after·saving·the·events574 occurred,·you·can·also·save·the·time·offset·before·or·after·saving·the·events
575 using·<a·href="erlang.html#time_offset/0"><code·class="inline">erlang:time_offset/0</code></a>.·Erlang·monotonic·time·added·with·the·time·offset575 using·<a·href="erlang.html#time_offset/0"><code·class="inline">erlang:time_offset/0</code></a>.·Erlang·monotonic·time·added·with·the·time·offset
576 corresponds·to·Erlang·system·time.</p><p>If·you·are·executing·in·a·mode·where·time·offset·can·change,·and·you·want·to576 corresponds·to·Erlang·system·time.</p><p>If·you·are·executing·in·a·mode·where·time·offset·can·change,·and·you·want·to
6.3 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/tracing.html
    
Offset 145, 31 lines modifiedOffset 145, 31 lines modified
145 on·functions·that·never·return,·as·each·call·pushes·a·frame·that·will145 on·functions·that·never·return,·as·each·call·pushes·a·frame·that·will
146 never·be·removed.</p><p>Another·limitation·is·that·since·the·breakpoint·is·in·the·<em>callee</em>·and·not146 never·be·removed.</p><p>Another·limitation·is·that·since·the·breakpoint·is·in·the·<em>callee</em>·and·not
147 the·<em>caller</em>,·we're·limited·to·the·information·we·have·on·function·ingress.147 the·<em>caller</em>,·we're·limited·to·the·information·we·have·on·function·ingress.
148 This·means·that·we·can't·actually·tell·who·called·us:·since·we're·limited148 This·means·that·we·can't·actually·tell·who·called·us:·since·we're·limited
149 to·inspecting·the·stack·we·can·only·say·where·we're·<em>going·to·return·to</em>,149 to·inspecting·the·stack·we·can·only·say·where·we're·<em>going·to·return·to</em>,
150 which·is·not·quite·the·same·thing.</p><p>As·an·illustration,·when·the·<code·class="inline">caller</code>·option·is·enabled·all·trace·messages150 which·is·not·quite·the·same·thing.</p><p>As·an·illustration,·when·the·<code·class="inline">caller</code>·option·is·enabled·all·trace·messages
151 from·<code·class="inline">bar/1</code>··will·say·that·they·were·called·from·<code·class="inline">foo/0</code>,·even·though·it151 from·<code·class="inline">bar/1</code>··will·say·that·they·were·called·from·<code·class="inline">foo/0</code>,·even·though·it
152 went·through·a·bunch·of·other·functions·on·the·way:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="9041556617-1">(</span><span·class="p"·data-group-id="9041556617-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 went·through·a·bunch·of·other·functions·on·the·way:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="0952466614-1">(</span><span·class="p"·data-group-id="0952466614-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ····</span><span·class="nf">lots</span><span·class="p"·data-group-id="9041556617-2">(</span><span·class="p"·data-group-id="9041556617-2">)</span><span·class="p">,</span><span·class="w">153 ····</span><span·class="nf">lots</span><span·class="p"·data-group-id="0952466614-2">(</span><span·class="p"·data-group-id="0952466614-2">)</span><span·class="p">,</span><span·class="w">
154 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">154 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
155 </span><span·class="nf">lots</span><span·class="p"·data-group-id="9041556617-3">(</span><span·class="p"·data-group-id="9041556617-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">155 </span><span·class="nf">lots</span><span·class="p"·data-group-id="0952466614-3">(</span><span·class="p"·data-group-id="0952466614-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
156 ····</span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="9041556617-4">(</span><span·class="p"·data-group-id="9041556617-4">)</span><span·class="p">.</span><span·class="w">156 ····</span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="0952466614-4">(</span><span·class="p"·data-group-id="0952466614-4">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="9041556617-5">(</span><span·class="p"·data-group-id="9041556617-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="0952466614-5">(</span><span·class="p"·data-group-id="0952466614-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="nf">indirections</span><span·class="p"·data-group-id="9041556617-6">(</span><span·class="p"·data-group-id="9041556617-6">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nf">indirections</span><span·class="p"·data-group-id="0952466614-6">(</span><span·class="p"·data-group-id="0952466614-6">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">indirections</span><span·class="p"·data-group-id="9041556617-7">(</span><span·class="p"·data-group-id="9041556617-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 </span><span·class="nf">indirections</span><span·class="p"·data-group-id="0952466614-7">(</span><span·class="p"·data-group-id="0952466614-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</span><span·class="nf">bar</span><span·class="p"·data-group-id="9041556617-8">(</span><span·class="mi">10</span><span·class="p"·data-group-id="9041556617-8">)</span><span·class="p">.</span><span·class="w">160 ····</span><span·class="nf">bar</span><span·class="p"·data-group-id="0952466614-8">(</span><span·class="mi">10</span><span·class="p"·data-group-id="0952466614-8">)</span><span·class="p">.</span><span·class="w">
  
161 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9041556617-9">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9041556617-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0952466614-9">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0952466614-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="ss">done</span><span·class="p">;</span><span·class="w">162 ····</span><span·class="ss">done</span><span·class="p">;</span><span·class="w">
163 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9041556617-10">(</span><span·class="n">N</span><span·class="p"·data-group-id="9041556617-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">163 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0952466614-10">(</span><span·class="n">N</span><span·class="p"·data-group-id="0952466614-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
164 ····</span><span·class="nf">bar</span><span·class="p"·data-group-id="9041556617-11">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="9041556617-11">)</span><span·class="p">.</span></code></pre><h3·id="export-tracing"·class="section-heading">164 ····</span><span·class="nf">bar</span><span·class="p"·data-group-id="0952466614-11">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0952466614-11">)</span><span·class="p">.</span></code></pre><h3·id="export-tracing"·class="section-heading">
165 ··<a·href="#export-tracing"·class="hover-link">165 ··<a·href="#export-tracing"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">Export·tracing</span>168 ··<span·class="text">Export·tracing</span>
169 </h3>169 </h3>
170 <p>In·the·interpreter,·breakpoints·are·set·inside·the·code·trampoline·for170 <p>In·the·interpreter,·breakpoints·are·set·inside·the·code·trampoline·for
171 export·entries,·and·their·address·vector·is·updated·to·point·to·them.171 export·entries,·and·their·address·vector·is·updated·to·point·to·them.
38.1 KB
./usr/share/doc/erlang-doc/html/erts-15.2.2/doc/html/zlib.html
    
Offset 129, 26 lines modifiedOffset 129, 26 lines modified
  
129 ····<section·id="moduledoc">129 ····<section·id="moduledoc">
130 <p>zlib·compression·interface.</p><p>This·module·provides·an·API·for·the·zlib·library130 <p>zlib·compression·interface.</p><p>This·module·provides·an·API·for·the·zlib·library
131 (<a·href="http://www.zlib.net">www.zlib.net</a>).·It·is·used·to·compress·and·decompress131 (<a·href="http://www.zlib.net">www.zlib.net</a>).·It·is·used·to·compress·and·decompress
132 data.·The·data·format·is·described·by132 data.·The·data·format·is·described·by
133 <a·href="https://www.ietf.org/rfc/rfc1950.txt">RFC·1950</a>,133 <a·href="https://www.ietf.org/rfc/rfc1950.txt">RFC·1950</a>,
134 <a·href="https://www.ietf.org/rfc/rfc1951.txt">RFC·1951</a>,·and134 <a·href="https://www.ietf.org/rfc/rfc1951.txt">RFC·1951</a>,·and
135 <a·href="https://www.ietf.org/rfc/rfc1952.txt">RFC·1952</a>.</p><p>A·typical·(compress)·usage·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="7135460665-1">(</span><span·class="p"·data-group-id="7135460665-1">)</span><span·class="p">,</span><span·class="w">135 <a·href="https://www.ietf.org/rfc/rfc1952.txt">RFC·1952</a>.</p><p>A·typical·(compress)·usage·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="0771332878-1">(</span><span·class="p"·data-group-id="0771332878-1">)</span><span·class="p">,</span><span·class="w">
136 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateInit</span><span·class="p"·data-group-id="7135460665-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="7135460665-2">)</span><span·class="p">,</span><span·class="w">136 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateInit</span><span·class="p"·data-group-id="0771332878-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="0771332878-2">)</span><span·class="p">,</span><span·class="w">
  
137 </span><span·class="n">Compress</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7135460665-3">(</span><span·class="ss">end_of_data</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Cont</span><span·class="p"·data-group-id="7135460665-3">)</span><span·class="w">·</span><span·class="p">-&gt;</[·...·truncated·by·diffoscope;·len:·123,·SHA:·49e12c31b0434171d0eea35318f9c07757dcf80b7531ae4691bc95e76b6cb8a4·...·]-4">]</span><span·class="p">;</span><span·class="w">137 </span><span·class="n">Compress</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0771332878-3">(</span><span·class="ss">end_of_data</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Cont</span><span·class="p"·data-group-id="0771332878-3">)</span><span·class="w">·</span><span·class="p">-&gt;</[·...·truncated·by·diffoscope;·len:·123,·SHA:·4fe61f1e6bab185d8e7c1d4545790643ec9b3a37fce5692115ed4593e0a1cd05·...·]-4">]</span><span·class="p">;</span><span·class="w">
138 ··············</span><span·class="p"·data-group-id="7135460665-5">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cont</span><span·class="p"·data-group-id="7135460665-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 ··············</span><span·class="p"·data-group-id="0771332878-5">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cont</span><span·class="p"·data-group-id="0771332878-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ·················</span><span·class="p"·data-group-id="7135460665-6">[</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="7135460665-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span[·...·truncated·by·diffoscope;·len:·436,·SHA:·d1f505ee88d9b2a7e9e7d709cac1892137550277f5c209e7dfdb0dd1cb54aa74·...·]-6">]</span><span·class="w">139 ·················</span><span·class="p"·data-group-id="0771332878-6">[</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="0771332878-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span[·...·truncated·by·diffoscope;·len:·436,·SHA:·f30f9f617e01207c6da521e8187773d37f7a6f895a69f34155133af2f9193cfc·...·]-6">]</span><span·class="w">
140 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">140 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
141 </span><span·class="n">Compressed</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Compress</span><span·class="p"·data-group-id="7135460665-10">(</span><span·class="n">Read</span><span·class="p"·data-group-id="7135460665-11">(</span><span·class="p"·data-group-id="7135460665-11">)</span><span·class="p">,</span><span·class="n">Compress</span><span·class="p"·data-group-id="7135460665-10">)</span><span·class="p">,</span><span·class="w">141 </span><span·class="n">Compressed</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Compress</span><span·class="p"·data-group-id="0771332878-10">(</span><span·class="n">Read</span><span·class="p"·data-group-id="0771332878-11">(</span><span·class="p"·data-group-id="0771332878-11">)</span><span·class="p">,</span><span·class="n">Compress</span><span·class="p"·data-group-id="0771332878-10">)</span><span·class="p">,</span><span·class="w">
142 </span><span·class="n">Last</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="7135460665-12">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7135460665-13">[</span><span·class="p"·data-group-id="7135460665-13">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·dc2a1f488133d105b838504d9c63d12f50888c09f216cd95e42f31afba737aea·...·]-12">)</span><span·class="p">,</span><span·class="w">142 </span><span·class="n">Last</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="0771332878-12">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0771332878-13">[</span><span·class="p"·data-group-id="0771332878-13">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·669d23259ed18bf27ecbd634c03c103c45b7323ce28a68d9c06740a1fd63e7d1·...·]-12">)</span><span·class="p">,</span><span·class="w">
143 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateEnd</span><span·class="p"·data-group-id="7135460665-14">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7135460665-14">)</span><span·class="p">,</span><span·class="w">143 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateEnd</span><span·class="p"·data-group-id="0771332878-14">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0771332878-14">)</span><span·class="p">,</span><span·class="w">
144 </span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7135460665-15">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7135460665-15">)</span><span·class="p">,</span><span·class="w">144 </span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="0771332878-15">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0771332878-15">)</span><span·class="p">,</span><span·class="w">
145 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="7135460665-16">(</span><span·class="p"·data-group-id="7135460665-17">[</span><span·class="n">Compressed</span><span·class="p">|</span><span·class="n">Last</span><span·class="p"·data-group-id="7135460665-17">]</span><span·class="p"·data-group-id="7135460665-16">)</span></code></pre><p>In·all·functions·errors,·<code·class="inline">{'EXIT',{Reason,Backtrace}}</code>,·can·be·thrown,·where145 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="0771332878-16">(</span><span·class="p"·data-group-id="0771332878-17">[</span><span·class="n">Compressed</span><span·class="p">|</span><span·class="n">Last</span><span·class="p"·data-group-id="0771332878-17">]</span><span·class="p"·data-group-id="0771332878-16">)</span></code></pre><p>In·all·functions·errors,·<code·class="inline">{'EXIT',{Reason,Backtrace}}</code>,·can·be·thrown,·where
146 <code·class="inline">Reason</code>·describes·the·error.</p><p>Typical·<code·class="inline">Reason</code>s:</p><ul><li><p><strong><code·class="inline">badarg</code></strong>·-·Bad·argument.</p></li><li><p><strong><code·class="inline">not_initialized</code></strong>·-·The·stream·hasn't·been·initialized,·eg.·if146 <code·class="inline">Reason</code>·describes·the·error.</p><p>Typical·<code·class="inline">Reason</code>s:</p><ul><li><p><strong><code·class="inline">badarg</code></strong>·-·Bad·argument.</p></li><li><p><strong><code·class="inline">not_initialized</code></strong>·-·The·stream·hasn't·been·initialized,·eg.·if
147 <a·href="#inflateInit/1"><code·class="inline">inflateInit/1</code></a>·wasn't·called·prior·to·a·call·to·<a·href="#inflate/2"><code·class="inline">inflate/2</code></a>.</p></li><li><p><strong><code·class="inline">not_on_controlling_process</code></strong>·-·The·stream·was·used·by·a·process·that147 <a·href="#inflateInit/1"><code·class="inline">inflateInit/1</code></a>·wasn't·called·prior·to·a·call·to·<a·href="#inflate/2"><code·class="inline">inflate/2</code></a>.</p></li><li><p><strong><code·class="inline">not_on_controlling_process</code></strong>·-·The·stream·was·used·by·a·process·that
148 doesn't·control·it.·Use·<a·href="#set_controlling_process/2"><code·class="inline">set_controlling_process/2</code></a>·if·you·need·to·transfer·a148 doesn't·control·it.·Use·<a·href="#set_controlling_process/2"><code·class="inline">set_controlling_process/2</code></a>·if·you·need·to·transfer·a
149 stream·to·a·different·process.</p></li><li><p><strong><code·class="inline">data_error</code></strong>·-·The·data·contains·errors.</p></li><li><p><strong><code·class="inline">stream_error</code></strong>·-·Inconsistent·stream·state.</p></li><li><p><strong><code·class="inline">{need_dictionary,Adler32}</code></strong>·-·See·<a·href="#inflate/2"><code·class="inline">inflate/2</code></a>.</p></li></ul>149 stream·to·a·different·process.</p></li><li><p><strong><code·class="inline">data_error</code></strong>·-·The·data·contains·errors.</p></li><li><p><strong><code·class="inline">stream_error</code></strong>·-·Inconsistent·stream·state.</p></li><li><p><strong><code·class="inline">{need_dictionary,Adler32}</code></strong>·-·See·<a·href="#inflate/2"><code·class="inline">inflate/2</code></a>.</p></li></ul>
150 ····</section>150 ····</section>
  
151 </div>151 </div>
Offset 827, 19 lines modifiedOffset 827, 19 lines modified
827 all·input·data·available·so·far.·Flushing·can·degrade·compression·for·some827 all·input·data·available·so·far.·Flushing·can·degrade·compression·for·some
828 compression·algorithms;·thus,·use·it·only·when·necessary.</p><p>If·<code·class="inline">Flush</code>·is·set·to·<code·class="inline">full</code>,·all·output·is·flushed·as·with·<code·class="inline">sync</code>,·and·the828 compression·algorithms;·thus,·use·it·only·when·necessary.</p><p>If·<code·class="inline">Flush</code>·is·set·to·<code·class="inline">full</code>,·all·output·is·flushed·as·with·<code·class="inline">sync</code>,·and·the
829 compression·state·is·reset·so·that·decompression·can·restart·from·this·point·if829 compression·state·is·reset·so·that·decompression·can·restart·from·this·point·if
830 previous·compressed·data·has·been·damaged·or·if·random·access·is·desired.·Using830 previous·compressed·data·has·been·damaged·or·if·random·access·is·desired.·Using
831 <code·class="inline">full</code>·too·often·can·seriously·degrade·the·compression.</p><p>If·<code·class="inline">Flush</code>·is·set·to·<code·class="inline">finish</code>,·pending·input·is·processed,·pending·output·is831 <code·class="inline">full</code>·too·often·can·seriously·degrade·the·compression.</p><p>If·<code·class="inline">Flush</code>·is·set·to·<code·class="inline">finish</code>,·pending·input·is·processed,·pending·output·is
832 flushed,·and·<a·href="#deflate/3"><code·class="inline">deflate/3</code></a>·returns.·Afterwards·the·only·possible832 flushed,·and·<a·href="#deflate/3"><code·class="inline">deflate/3</code></a>·returns.·Afterwards·the·only·possible
833 operations·on·the·stream·are·<a·href="#deflateReset/1"><code·class="inline">deflateReset/1</code></a>·or·<a·href="#deflateEnd/1"><code·class="inline">deflateEnd/1</code></a>.</p><p><code·class="inline">Flush</code>·can·be·set·to·<code·class="inline">finish</code>·immediately·after833 operations·on·the·stream·are·<a·href="#deflateReset/1"><code·class="inline">deflateReset/1</code></a>·or·<a·href="#deflateEnd/1"><code·class="inline">deflateEnd/1</code></a>.</p><p><code·class="inline">Flush</code>·can·be·set·to·<code·class="inline">finish</code>·immediately·after
834 <a·href="#deflateInit/1"><code·class="inline">deflateInit</code></a>·if·all·compression·is·to·be·done·in·one·step.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateInit</span><span·class="p"·data-group-id="2245450006-1">(</span><span·class="n">Z</span><span·class="p"·data-group-id="2245450006-1">)</span><span·class="p">,</span><span·class="w">834 <a·href="#deflateInit/1"><code·class="inline">deflateInit</code></a>·if·all·compression·is·to·be·done·in·one·step.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateInit</span><span·class="p"·data-group-id="7598738598-1">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7598738598-1">)</span><span·class="p">,</span><span·class="w">
835 </span><span·class="n">B1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="2245450006-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="2245450006-2">)</span><span·class="p">,</span><span·class="w">835 </span><span·class="n">B1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="7598738598-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="7598738598-2">)</span><span·class="p">,</span><span·class="w">
836 </span><span·class="n">B2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="2245450006-3">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="p"·data-group-id="2245450006-4">&lt;&lt;</span><span·class="w">·</span><span·class="p"·data-group-id="2245450006-4">&gt;&gt;</span><span·class="p">,</span><span·class="ss">f[·...·truncated·by·diffoscope;·len:·53,·SHA:·beda77fdf2fbe443f3942f86deff554d11e11dce9358f21dc4da36696ecf83c8·...·]-3">)</span><span·class="p">,</span><span·class="w">836 </span><span·class="n">B2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="7598738598-3">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="p"·data-group-id="7598738598-4">&lt;&lt;</span><span·class="w">·</span><span·class="p"·data-group-id="7598738598-4">&gt;&gt;</span><span·class="p">,</span><span·class="ss">f[·...·truncated·by·diffoscope;·len:·53,·SHA:·fe7eb2a3b9830815c1b2256210944903387e9fc1d1156576a63d15813b33032e·...·]-3">)</span><span·class="p">,</span><span·class="w">
837 </span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateEnd</span><span·class="p"·data-group-id="2245450006-5">(</span><span·class="n">Z</span><span·class="p"·data-group-id="2245450006-5">)</span><span·class="p">,</span><span·class="w">837 </span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflateEnd</span><span·class="p"·data-group-id="7598738598-5">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7598738598-5">)</span><span·class="p">,</span><span·class="w">
838 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="2245450006-6">(</span><span·class="p"·data-group-id="2245450006-7">[</span><span·class="n">B1</span><span·class="p">,</span><span·class="n">B2</span><span·class="p"·data-group-id="2245450006-7">]</span><span·class="p"·data-group-id="2245450006-6">)</span></code></pre>838 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="7598738598-6">(</span><span·class="p"·data-group-id="7598738598-7">[</span><span·class="n">B1</span><span·class="p">,</span><span·class="n">B2</span><span·class="p"·data-group-id="7598738598-7">]</span><span·class="p"·data-group-id="7598738598-6">)</span></code></pre>
839 ··</section>839 ··</section>
840 </section>840 </section>
841 <section·class="detail"·id="deflateEnd/1">841 <section·class="detail"·id="deflateEnd/1">
  
842 ··<div·class="detail-header">842 ··<div·class="detail-header">
843 ····<a·href="#deflateEnd/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">843 ····<a·href="#deflateEnd/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
844 ······<i·class="ri-link-m"·aria-hidden="true"></i>844 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1349, 28 lines modifiedOffset 1349, 28 lines modified
1349 <p>Initializes·the·decompression·dictionary·from·the·specified·uncompressed·byte1349 <p>Initializes·the·decompression·dictionary·from·the·specified·uncompressed·byte
1350 sequence.</p><p>This·function·must·be·called·as·a·response·to·an·inflate·operation1350 sequence.</p><p>This·function·must·be·called·as·a·response·to·an·inflate·operation
1351 (eg.·<a·href="#safeInflate/2"><code·class="inline">safeInflate/2</code></a>)·returning·<code·class="inline">{need_dictionary,Adler,Output}</code>·or·in·the·case1351 (eg.·<a·href="#safeInflate/2"><code·class="inline">safeInflate/2</code></a>)·returning·<code·class="inline">{need_dictionary,Adler,Output}</code>·or·in·the·case
1352 of·deprecated·functions,·throwing·an1352 of·deprecated·functions,·throwing·an
1353 <code·class="inline">{'EXIT',{{need_dictionary,Adler},_StackTrace}}</code>·exception.</p><p>The·dictionary·chosen·by·the·compressor·can·be·determined·from·the·Adler·value1353 <code·class="inline">{'EXIT',{{need_dictionary,Adler},_StackTrace}}</code>·exception.</p><p>The·dictionary·chosen·by·the·compressor·can·be·determined·from·the·Adler·value
1354 returned·or·thrown·by·the·call·to·the·inflate·function.·The·compressor·and1354 returned·or·thrown·by·the·call·to·the·inflate·function.·The·compressor·and
1355 decompressor·must·use·the·same·dictionary·(See·<a·href="#deflateSetDictionary/2"><code·class="inline">deflateSetDictionary/2</code></a>).</p><p>After·setting·the·dictionary·the·inflate·operation·should·be·retried·without·new1355 decompressor·must·use·the·same·dictionary·(See·<a·href="#deflateSetDictionary/2"><code·class="inline">deflateSetDictionary/2</code></a>).</p><p>After·setting·the·dictionary·the·inflate·operation·should·be·retried·without·new
1356 input.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">deprecated_unpack</span><span·class="p"·data-group-id="2386802330-1">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="2386802330-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1356 input.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">deprecated_unpack</span><span·class="p"·data-group-id="5297659117-1">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="5297659117-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1357 ·····</span><span·class="k">case</span><span·class="w">·</span><span·class="k">catch</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="2386802330-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p"·data-group-id="2386802330-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">1357 ·····</span><span·class="k">case</span><span·class="w">·</span><span·class="k">catch</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="5297659117-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p"·data-group-id="5297659117-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1358 ··········</span><span·class="p"·data-group-id="2386802330-3">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2386802330-4">{</span><span·class="p"·data-group-id="2386802330-5">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·245,·SHA:·5e53cf56c9b710fd87693577d7528f5e046c672cedd23d568bc496fdf872ff86·...·]-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1358 ··········</span><span·class="p"·data-group-id="5297659117-3">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5297659117-4">{</span><span·class="p"·data-group-id="5297659117-5">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·245,·SHA:·974b2113bb2ca1d50426f66083d6dec4ce4127a58ebfd9c587f45c5577a95f9d·...·]-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1359 ·················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateSetDictionary</span><span·class="p"·data-group-id="2386802330-6">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="2386802330-6">)</span><span·class="p">,</span><span·class="w">1359 ·················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateSetDictionary</span><span·class="p"·data-group-id="5297659117-6">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="5297659117-6">)</span><span·class="p">,</span><span·class="w">
1360 ·················</span><span·class="n">Uncompressed</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="2386802330-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2386802330-8">[</span><span·class="p"·data-group-id="2386802330-8">]</span><span·class="p"·data-group-id="2386802330-7">)</span><span·class="p">;</span><span·class="w">1360 ·················</span><span·class="n">Uncompressed</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="5297659117-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5297659117-8">[</span><span·class="p"·data-group-id="5297659117-8">]</span><span·class="p"·data-group-id="5297659117-7">)</span><span·class="p">;</span><span·class="w">
1361 ··········</span><span·class="n">Uncompressed</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1361 ··········</span><span·class="n">Uncompressed</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1362 ·················</span><span·class="n">Uncompressed</span><span·class="w">1362 ·················</span><span·class="n">Uncompressed</span><span·class="w">
1363 ·····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">1363 ·····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
1364 </span><span·class="nf">new_unpack</span><span·class="p"·data-group-id="2386802330-9">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="2386802330-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1364 </span><span·class="nf">new_unpack</span><span·class="p"·data-group-id="5297659117-9">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="5297659117-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1365 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="2386802330-10">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2386802330-11">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·300,·SHA:·1d9bb122f03f06ccf3cc9864f9755f9fa9364c366db41f5ea0f287962f9735f9·...·]-10">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">1365 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="5297659117-10">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5297659117-11">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·300,·SHA:·09dd3d30a49ddb92e32171d7c01f1bb7e6abfb322ac53c94805dca37f5aae236·...·]-10">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1366 ········</span><span·class="p"·data-group-id="2386802330-13">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">DictId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Output</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·b61a41c97b6bcbedae4db0c6fec3e22522468017a5fe73857d8c2b74701d5c9d·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1366 ········</span><span·class="p"·data-group-id="5297659117-13">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">DictId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Output</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·06e712f8337bcd75e44334cc554c6e2924fb81abc7965a072d8c01818d370dc1·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1367 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateSetDictionary</span><span·class="p"·data-group-id="2386802330-14">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="2386802330-14">)</span><span·class="p">,</span><span·class="w">1367 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateSetDictionary</span><span·class="p"·data-group-id="5297659117-14">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dict</span><span·class="p"·data-group-id="5297659117-14">)</span><span·class="p">,</span><span·class="w">
1368 ············</span><span·class="p"·data-group-id="2386802330-15">[</span><span·class="n">Output</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="2386802330-16">(</[·...·truncated·by·diffoscope;·len:·280,·SHA:·aef00e59ff89497514d0e09086b664629cc93fb18d0f7f3a21ac1ab32cc56065·...·]-15">]</span><span·class="p">;</span><span·class="w">1368 ············</span><span·class="p"·data-group-id="5297659117-15">[</span><span·class="n">Output</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflate</span><span·class="p"·data-group-id="5297659117-16">(</[·...·truncated·by·diffoscope;·len:·280,·SHA:·45c91413e4a02ef45bbe151236cdd940010edaac599b41dcd33b597f821fc58e·...·]-15">]</span><span·class="p">;</span><span·class="w">
1369 ········</span><span·class="n">Uncompressed</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1369 ········</span><span·class="n">Uncompressed</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1370 ············</span><span·class="n">Uncompressed</span><span·class="w">1370 ············</span><span·class="n">Uncompressed</span><span·class="w">
1371 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre>1371 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre>
1372 ··</section>1372 ··</section>
1373 </section>1373 </section>
1374 <section·class="detail"·id="open/0">1374 <section·class="detail"·id="open/0">
  
Offset 1434, 26 lines modifiedOffset 1434, 26 lines modified
1434 implementation-defined·threshold.·It's·useful·when·decompressing·untrusted·input1434 implementation-defined·threshold.·It's·useful·when·decompressing·untrusted·input
1435 which·could·have·been·maliciously·crafted·to·expand·until·the·system·runs·out·of1435 which·could·have·been·maliciously·crafted·to·expand·until·the·system·runs·out·of
1436 memory.</p><p>This·function·returns·<code·class="inline">{continue·|·finished,·Output}</code>,·where·Output·is·the·data1436 memory.</p><p>This·function·returns·<code·class="inline">{continue·|·finished,·Output}</code>,·where·Output·is·the·data
1437 that·was·decompressed·in·this·call.·New·input·can·be·queued·up·on·each·call·if1437 that·was·decompressed·in·this·call.·New·input·can·be·queued·up·on·each·call·if
1438 desired,·and·the·function·will·return·<code·class="inline">{finished,·Output}</code>·once·all·queued·data1438 desired,·and·the·function·will·return·<code·class="inline">{finished,·Output}</code>·once·all·queued·data
1439 has·been·decompressed.</p><p>This·function·can·introduce·some·output·latency·(reading·input·without·producing1439 has·been·decompressed.</p><p>This·function·can·introduce·some·output·latency·(reading·input·without·producing
1440 any·output).</p><p>If·a·preset·dictionary·is·required·for·further·decompression,·this·function1440 any·output).</p><p>If·a·preset·dictionary·is·required·for·further·decompression,·this·function
1441 returns·a·<code·class="inline">need_dictionary</code>·tuple.·See·<a·href="#inflateSetDictionary/2"><code·class="inline">inflateSetDictionary/2</code></a>)·for·details.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">walk</span><span·class="p"·data-group-id="3267331386-1">(</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p"·data-group-id="3267331386-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1441 returns·a·<code·class="inline">need_dictionary</code>·tuple.·See·<a·href="#inflateSetDictionary/2"><code·class="inline">inflateSetDictionary/2</code></a>)·for·details.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">walk</span><span·class="p"·data-group-id="4041809894-1">(</span><span·class="n">Compressed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p"·data-group-id="4041809894-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1442 ····</span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="3267331386-2">(</span><span·class="p"·data-group-id="3267331386-2">)</span><span·class="p">,</span><span·class="w">1442 ····</span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="4041809894-2">(</span><span·class="p"·data-group-id="4041809894-2">)</span><span·class="p">,</span><span·class="w">
1443 ····</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateInit</span><span·class="p"·data-group-id="3267331386-3">(</span><span·class="n">Z</span><span·class="p"·data-group-id="3267331386-3">)</span><span·class="p">,</span><span·class="w">1443 ····</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateInit</span><span·class="p"·data-group-id="4041809894-3">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4041809894-3">)</span><span·class="p">,</span><span·class="w">
1444 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3267331386-4">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">safeInflate</sp[·...·truncated·by·diffoscope;·len:·255,·SHA:·f079b0805ffd059e1d421f242a218cb3a0a7e42ab6f492f321edae7fafaca88b·...·]-4">)</span><span·class="p">,</span><span·class="w">1444 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4041809894-4">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">safeInflate</sp[·...·truncated·by·diffoscope;·len:·255,·SHA:·07bc8689b2c2c4b126a7c602da72967d6052a72e6acd8fb66e3fb85760060848·...·]-4">)</span><span·class="p">,</span><span·class="w">
1445 ····</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateEnd</span><span·class="p"·data-group-id="3267331386-6">(</span><span·class="n">Z</span><span·class="p"·data-group-id="3267331386-6">)</span><span·class="p">,</span><span·class="w">1445 ····</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">inflateEnd</span><span·class="p"·data-group-id="4041809894-6">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4041809894-6">)</span><span·class="p">,</span><span·class="w">
1446 ····</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="3267331386-7">(</span><span·class="n">Z</span><span·class="p"·data-group-id="3267331386-7">)</span><span·class="p">.</span><span·class="w">1446 ····</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="4041809894-7">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4041809894-7">)</span><span·class="p">.</span><span·class="w">
  
1447 </span><span·class="nf">loop</span><span·class="p"·data-group-id="3267331386-8">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3267331386-9">{</span><span·class="ss">continue</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·a93fb990cd5282a5f505496df7318f42fefa2cfbfb0f9402eeba5e3000502cec·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1447 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4041809894-8">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4041809894-9">{</span><span·class="ss">continue</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·9354463d75f42546da119e802c7f4a73f43c17cc426bbfa211725dd3655daaa5·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1448 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="3267331386-10">(</span><span·class="n">Output</span><span·class="p"·data-group-id="3267331386-10">)</span><span·class="p">,</span><span·class="w">1448 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="4041809894-10">(</span><span·class="n">Output</span><span·class="p"·data-group-id="4041809894-10">)</span><span·class="p">,</span><span·class="w">
1449 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3267331386-11">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">safeInflate</s[·...·truncated·by·diffoscope;·len:·333,·SHA:·9d2874f026588c04a10fa47ca132d3f657f2fb75010a19e81c4ae32e117b9af3·...·]-11">)</span><span·class="p">;</span><span·class="w">1449 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4041809894-11">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">safeInflate</s[·...·truncated·by·diffoscope;·len:·333,·SHA:·057f092aa057df2837cecfa1847e92300234171568a398788cdf8cc39de8acdd·...·]-11">)</span><span·class="p">;</span><span·class="w">
1450 </span><span·class="nf">loop</span><span·class="p"·data-group-id="3267331386-14">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3267331386-15">{</span><span·class="ss">finished</sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·7461a42f36d2e3500aee8ddf7fdd670b17d3b9f825dbc92c2367c85637e9d488·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1450 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4041809894-14">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handler</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4041809894-15">{</span><span·class="ss">finished</sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·4cfa66f93071f15d966688d7d2e066943fab7e5404e52697912caea7756828e9·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1451 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="3267331386-16">(</span><span·class="n">Output</span><span·class="p"·data-group-id="3267331386-16">)</span><span·class="p">.</span></code></pre>1451 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="4041809894-16">(</span><span·class="n">Output</span><span·class="p"·data-group-id="4041809894-16">)</span><span·class="p">.</span></code></pre>
1452 ··</section>1452 ··</section>
1453 </section>1453 </section>
1454 <section·class="detail"·id="set_controlling_process/2">1454 <section·class="detail"·id="set_controlling_process/2">
  
1455 ··<div·class="detail-header">1455 ··<div·class="detail-header">
1456 ····<a·href="#set_controlling_process/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1456 ····<a·href="#set_controlling_process/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1457 ······<i·class="ri-link-m"·aria-hidden="true"></i>1457 ······<i·class="ri-link-m"·aria-hidden="true"></i>
394 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1.epub
3.09 KB
zipinfo {}
    
Offset 1, 20 lines modifiedOffset 1, 20 lines modified
1 Zip·file·size:·94596·bytes,·number·of·entries:·181 Zip·file·size:·94592·bytes,·number·of·entries:·18
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:49·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:11·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·10:49·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·09:11·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····87890·bx·defN·25-Feb-13·10:49·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····87890·bx·defN·25-Feb-13·09:11·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1271·bx·defN·25-Feb-13·10:49·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1271·bx·defN·25-Feb-13·09:11·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:49·OEBPS/dist/epub-erlang-ESPT6BQV.css6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:11·OEBPS/dist/epub-erlang-ESPT6BQV.css
7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:49·OEBPS/dist/epub-LSJCIYTM.js7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:11·OEBPS/dist/epub-LSJCIYTM.js
8 ?rw-r--r--··6.1·unx·····2280·bx·defN·25-Feb-13·10:49·OEBPS/content.opf8 ?rw-r--r--··6.1·unx·····2280·bx·defN·25-Feb-13·09:11·OEBPS/content.opf
9 ?rw-r--r--··6.1·unx·····2920·bx·stor·25-Feb-13·10:49·OEBPS/assets/selective_Window2.gif9 ?rw-r--r--··6.1·unx·····2920·bx·stor·25-Feb-13·09:11·OEBPS/assets/selective_Window2.gif
10 ?rw-r--r--··6.1·unx·····4465·bx·stor·25-Feb-13·10:49·OEBPS/assets/selective_TypeList.gif10 ?rw-r--r--··6.1·unx·····4465·bx·stor·25-Feb-13·09:11·OEBPS/assets/selective_TypeList.gif
11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:49·OEBPS/assets/logo.png11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:11·OEBPS/assets/logo.png
12 ?rw-r--r--··6.1·unx·····1340·bx·stor·25-Feb-13·10:49·OEBPS/assets/exclusive_Win_But.gif12 ?rw-r--r--··6.1·unx·····1340·bx·stor·25-Feb-13·09:11·OEBPS/assets/exclusive_Win_But.gif
13 ?rw-r--r--··6.1·unx····29673·bx·defN·25-Feb-13·10:49·OEBPS/asn1ct.xhtml13 ?rw-r--r--··6.1·unx····29673·bx·defN·25-Feb-13·09:11·OEBPS/asn1ct.xhtml
14 ?rw-r--r--··6.1·unx····72980·bx·defN·25-Feb-13·10:49·OEBPS/asn1_spec.xhtml14 ?rw-r--r--··6.1·unx····72980·bx·defN·25-Feb-13·09:11·OEBPS/asn1_spec.xhtml
15 ?rw-r--r--··6.1·unx·····1403·bx·defN·25-Feb-13·10:49·OEBPS/asn1_overview.xhtml15 ?rw-r--r--··6.1·unx·····1403·bx·defN·25-Feb-13·09:11·OEBPS/asn1_overview.xhtml
16 ?rw-r--r--··6.1·unx·····3296·bx·defN·25-Feb-13·10:49·OEBPS/asn1_introduction.xhtml16 ?rw-r--r--··6.1·unx·····3296·bx·defN·25-Feb-13·09:11·OEBPS/asn1_introduction.xhtml
17 ?rw-r--r--··6.1·unx···128399·bx·defN·25-Feb-13·10:49·OEBPS/asn1_getting_started.xhtml17 ?rw-r--r--··6.1·unx···128399·bx·defN·25-Feb-13·09:11·OEBPS/asn1_getting_started.xhtml
18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:49·META-INF/container.xml18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:11·META-INF/container.xml
19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:49·META-INF/com.apple.ibooks.display-options.xml19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:11·META-INF/com.apple.ibooks.display-options.xml
20 18·files,·357961·bytes·uncompressed,·91366·bytes·compressed:··74.5%20 18·files,·357961·bytes·uncompressed,·91362·bytes·compressed:··74.5%
97.3 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:49:22,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:11:56,·uncompressed·size·20,·method=store
2.36 KB
OEBPS/content.opf
2.32 KB
OEBPS/content.opf
Max HTML report size reached
6.35 KB
OEBPS/asn1ct.xhtml
Max HTML report size reached
117 KB
OEBPS/asn1_spec.xhtml
Max HTML report size reached
168 KB
OEBPS/asn1_getting_started.xhtml
Max HTML report size reached
168 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_getting_started.html
    
Offset 139, 45 lines modifiedOffset 139, 45 lines modified
139 ····location·INTEGER·{home(0),field(1),roving(2)},139 ····location·INTEGER·{home(0),field(1),roving(2)},
140 ····age·INTEGER·OPTIONAL140 ····age·INTEGER·OPTIONAL
141 ··}141 ··}
142 END</code></pre><p>This·file·must·be·compiled·before·it·can·be·used.·The·ASN.1·compiler·checks·that142 END</code></pre><p>This·file·must·be·compiled·before·it·can·be·used.·The·ASN.1·compiler·checks·that
143 the·syntax·is·correct·and·that·the·text·represents·proper·ASN.1·code·before143 the·syntax·is·correct·and·that·the·text·represents·proper·ASN.1·code·before
144 generating·an·abstract·syntax·tree.·The·code·generator·then·uses·the·abstract144 generating·an·abstract·syntax·tree.·The·code·generator·then·uses·the·abstract
145 syntax·tree·to·generate·code.</p><p>The·generated·Erlang·files·are·placed·in·the·current·directory·or·in·the145 syntax·tree·to·generate·code.</p><p>The·generated·Erlang·files·are·placed·in·the·current·directory·or·in·the
146 directory·specified·with·option·<code·class="inline">{outdir,Dir}</code>.</p><p>The·compiler·can·be·called·from·the·Erlang·shell·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">asn1ct</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="5116995815-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5116995815-2">[</span><span·class="ss">ber</span><span·class="p"·data-group-id="5116995815-2">]</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·5452003fa3162e5f3abbe79959d9225dcc8de1ad9635ec2f42a7c728ec9e542c·...·]-1">)</span><span·class="p">.</span><span·class="w">146 directory·specified·with·option·<code·class="inline">{outdir,Dir}</code>.</p><p>The·compiler·can·be·called·from·the·Erlang·shell·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">asn1ct</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="6811270584-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6811270584-2">[</span><span·class="ss">ber</span><span·class="p"·data-group-id="6811270584-2">]</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·964075f2198c02f7e043e6ad17fc17b0afba18453b5505d47572b46dd6190dc7·...·]-1">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="ss">ok</span></code></pre><p>Option·<code·class="inline">verbose</code>·can·be·added·to·get·information·about·the·generated·files:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">asn1ct</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="0037609074-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0037609074-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">verbose</span><span·class[·...·truncated·by·diffoscope;·len:·83,·SHA:·2ebf40b10a4cacb7642e59fadbef53fc68485f7d2baa94192723f2dd7bc28581·...·]-1">)</span><span·class="p">.</span><span·class="w">147 </span><span·class="ss">ok</span></code></pre><p>Option·<code·class="inline">verbose</code>·can·be·added·to·get·information·about·the·generated·files:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">asn1ct</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="0724757707-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0724757707-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">verbose</span><span·class[·...·truncated·by·diffoscope;·len:·83,·SHA:·23d14a140230c4443c321d95075defffea8e55e70bc56e3009a0ff01ef466b6e·...·]-1">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">ASN</span><span·class="p">.</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">compiling</span><span·class="w">·</span><span·class="s">&quot;People.asn&quot;</span><span·class="w">148 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">ASN</span><span·class="p">.</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">compiling</span><span·class="w">·</span><span·class="s">&quot;People.asn&quot;</span><span·class="w">
149 </span><span·class="o">--</span><span·class="p"·data-group-id="0037609074-3">{</span><span·class="ss">generated</span><span·class="p">,</span><span·class="s">&quot;People.asn1db&quot;</span><span·class="p"·data-group-id="0037609074-3">}</span><span·class="o">--</span><span·class="w">149 </span><span·class="o">--</span><span·class="p"·data-group-id="0724757707-3">{</span><span·class="ss">generated</span><span·class="p">,</span><span·class="s">&quot;People.asn1db&quot;</span><span·class="p"·data-group-id="0724757707-3">}</span><span·class="o">--</span><span·class="w">
150 </span><span·class="o">--</span><span·class="p"·data-group-id="0037609074-4">{</span><span·class="ss">generated</span><span·class="p">,</span><span·class="s">&quot;People.hrl&quot;</span><span·class="p"·data-group-id="0037609074-4">}</span><span·class="o">--</span><span·class="w">150 </span><span·class="o">--</span><span·class="p"·data-group-id="0724757707-4">{</span><span·class="ss">generated</span><span·class="p">,</span><span·class="s">&quot;People.hrl&quot;</span><span·class="p"·data-group-id="0724757707-4">}</span><span·class="o">--</span><span·class="w">
151 </span><span·class="o">--</span><span·class="p"·data-group-id="0037609074-5">{</span><span·class="ss">generated</span><span·class="p">,</span><span·class="s">&quot;People.erl&quot;</span><span·class="p"·data-group-id="0037609074-5">}</span><span·class="o">--</span><span·class="w">151 </span><span·class="o">--</span><span·class="p"·data-group-id="0724757707-5">{</span><span·class="ss">generated</span><span·class="p">,</span><span·class="s">&quot;People.erl&quot;</span><span·class="p"·data-group-id="0724757707-5">}</span><span·class="o">--</span><span·class="w">
152 </span><span·class="ss">ok</span></code></pre><p>ASN.1·module·<code·class="inline">People</code>·is·now·accepted·and·the·abstract·syntax·tree·is·saved·in152 </span><span·class="ss">ok</span></code></pre><p>ASN.1·module·<code·class="inline">People</code>·is·now·accepted·and·the·abstract·syntax·tree·is·saved·in
153 file·<code·class="inline">People.asn1db</code>.·The·generated·Erlang·code·is·compiled·using·the·Erlang153 file·<code·class="inline">People.asn1db</code>.·The·generated·Erlang·code·is·compiled·using·the·Erlang
154 compiler·and·loaded·into·the·Erlang·runtime·system.·There·is·now·an·API·for154 compiler·and·loaded·into·the·Erlang·runtime·system.·There·is·now·an·API·for
155 <code·class="inline">encode/2</code>·and·<code·class="inline">decode/2</code>·in·module·<code·class="inline">People</code>,·which·is·called·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="1833850375-1">(</span><span·class="o">&lt;</span><span·class="n">Type</span><span·class="w">·</span><span·class="ss">name</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Value</spa[·...·truncated·by·diffoscope;·len:·604,·SHA:·5960dc95d0bc71c5b38440a3e7f8be83491708f76e9fce63e5528109c25842eb·...·]-1">)</span></code></pre><p>Assume·that·there·is·a·network·application·that·receives·instances·of·the·ASN.1155 <code·class="inline">encode/2</code>·and·<code·class="inline">decode/2</code>·in·module·<code·class="inline">People</code>,·which·is·called·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="9590927377-1">(</span><span·class="o">&lt;</span><span·class="n">Type</span><span·class="w">·</span><span·class="ss">name</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Value</spa[·...·truncated·by·diffoscope;·len:·604,·SHA:·e5ab323997eb6c97fd392fcf3fef70d865f371c93f2673b6bf695f773aaf45d5·...·]-1">)</span></code></pre><p>Assume·that·there·is·a·network·application·that·receives·instances·of·the·ASN.1
156 defined·type·<code·class="inline">Person</code>,·modifies,·and·sends·them·back·again:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">156 defined·type·<code·class="inline">Person</code>,·modifies,·and·sends·them·back·again:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">receive</span><span·class="w">
157 ···</span><span·class="p"·data-group-id="0490761055-1">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="p"·data-group-id="0490761055-2">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="0490761055-2">}</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·c9173e1a0a1d8ac71c11954c98f162f684543604053f344328c0c56179a24c49·...·]5-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 ···</span><span·class="p"·data-group-id="5572962795-1">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="p"·data-group-id="5572962795-2">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="5572962795-2">}</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·e4f884c0658a70e6fbd5203ef9735f4767625c95a610696b1c9d2c182ac327c0·...·]5-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ·······</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="0490761055-3">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="0490761055-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">158 ·······</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="5572962795-3">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="5572962795-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
159 ···········</span><span·class="p"·data-group-id="0490761055-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="0490761055-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 ···········</span><span·class="p"·data-group-id="5572962795-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="5572962795-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ···············</span><span·class="p"·data-group-id="0490761055-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="0490761055-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·384,·SHA:·becf1e26ac6fb26cf3731d4cb9f7e608bc6d6cfc455fdb861bf938afd0ae027b·...·]5-6">)</span><span·class="p">,</span><span·class="w">160 ···············</span><span·class="p"·data-group-id="5572962795-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="5572962795-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·384,·SHA:·35148bc656b056850621fc4471336ce56ee56bbdffae599c071863291806e3bd·...·]5-6">)</span><span·class="p">,</span><span·class="w">
161 ···············</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0490761055-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0490761055-9">(</span><span·class="p"·data-group-id="0490761055-9">)</span><span·class="p">,</span><span·class="p"·data-group-id="0490761055-10">{</span><span·class="ss">comma[·...·truncated·by·diffoscope;·len:·156,·SHA:·10e6a5f0a3b19667cb97f92598e0d80b6b4c7626c412dabbad83917f2b914763·...·]5-8">}</span><span·class="p">;</span><span·class="w">161 ···············</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="5572962795-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5572962795-9">(</span><span·class="p"·data-group-id="5572962795-9">)</span><span·class="p">,</span><span·class="p"·data-group-id="5572962795-10">{</span><span·class="ss">comma[·...·truncated·by·diffoscope;·len:·156,·SHA:·2adc898c8851f2056c9b060cff902f3efa5852dd54b1cb5e2bb3462cfdc45ea9·...·]5-8">}</span><span·class="p">;</span><span·class="w">
162 ···········</span><span·class="p"·data-group-id="0490761055-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="0490761055-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 ···········</span><span·class="p"·data-group-id="5572962795-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5572962795-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ···············</span><span·class="nf">exit</span><span·class="p"·data-group-id="0490761055-12">(</span><span·class="p"·data-group-id="0490761055-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="0490761055-13">}</span><span·class="p"·data-group-id="0490761055-12">)</span><span·class="w">163 ···············</span><span·class="nf">exit</span><span·class="p"·data-group-id="5572962795-12">(</span><span·class="p"·data-group-id="5572962795-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5572962795-13">}</span><span·class="p"·data-group-id="5572962795-12">)</span><span·class="w">
164 ·······</span><span·class="k">end</span><span·class="w">164 ·······</span><span·class="k">end</span><span·class="w">
165 ····</span><span·class="k">end</span><span·class="p">,</span></code></pre><p>In·this·example,·a·series·of·bytes·is·received·from·an·external·source·and·the165 ····</span><span·class="k">end</span><span·class="p">,</span></code></pre><p>In·this·example,·a·series·of·bytes·is·received·from·an·external·source·and·the
166 bytes·are·then·decoded·into·a·valid·Erlang·term.·This·was·achieved·with·the·call166 bytes·are·then·decoded·into·a·valid·Erlang·term.·This·was·achieved·with·the·call
167 <code·class="inline">'People':decode('Person',Bytes)</code>,·which·returned·an·Erlang·value·of·the·ASN.1167 <code·class="inline">'People':decode('Person',Bytes)</code>,·which·returned·an·Erlang·value·of·the·ASN.1
168 type·<code·class="inline">Person</code>.·Then·an·answer·was·constructed·and·encoded·using168 type·<code·class="inline">Person</code>.·Then·an·answer·was·constructed·and·encoded·using
169 <code·class="inline">'People':encode('Person',Answer)</code>,·which·takes·an·instance·of·a·defined·ASN.1169 <code·class="inline">'People':encode('Person',Answer)</code>,·which·takes·an·instance·of·a·defined·ASN.1
170 type·and·transforms·it·to·a·binary·according·to·the·BER·or·PER·encoding·rules.</p><p>The·encoder·and·decoder·can·also·be·run·from·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Rockstar</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7334461158-1">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·c51f6361f8474ccb7cd1787355945a82191a986d9fdfe02e3a6f2ceb022b4bdd·...·]-1">}</span><span·class="p">.</span><span·class="w">170 type·and·transforms·it·to·a·binary·according·to·the·BER·or·PER·encoding·rules.</p><p>The·encoder·and·decoder·can·also·be·run·from·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Rockstar</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7226005214-1">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·3405bd6a13eb0bfb75fe0c03ff90a8bf5e3cb20d6ebf4c3306a02ab99ca7f49e·...·]-1">}</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="7334461158-2">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·c51f6361f8474ccb7cd1787355945a82191a986d9fdfe02e3a6f2ceb022b4bdd·...·]-2">}</span><span·class="gp·unselectable">171 </span><span·class="p"·data-group-id="7226005214-2">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·3405bd6a13eb0bfb75fe0c03ff90a8bf5e3cb20d6ebf4c3306a02ab99ca7f49e·...·]-2">}</span><span·class="gp·unselectable">
172 3&gt;·</span><span·class="p"·data-group-id="7334461158-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="7334461158-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;<[·...·truncated·by·diffoscope;·len:·249,·SHA:·b186362d8c56100e58fbecd3bb6024f31e11565d1019698ac960c860cf853e31·...·]-4">)</span><span·class="p">.</span><span·class="w">172 3&gt;·</span><span·class="p"·data-group-id="7226005214-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="7226005214-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;<[·...·truncated·by·diffoscope;·len:·249,·SHA:·4be323e13a15d84ed1c361554f6d765702196f9ca0604baca79c1b8e72ee38db·...·]-4">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="p"·data-group-id="7334461158-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7334461158-6">&lt;&lt;</span><span·class="mi">243</span><span·class="p">,</span><span·class="mi">17</span><span·class="p">,</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">32</span><span·class="p">,</span><span·class="mi">78</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">173 </span><span·class="p"·data-group-id="7226005214-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7226005214-6">&lt;&lt;</span><span·class="mi">243</span><span·class="p">,</span><span·class="mi">17</span><span·class="p">,</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">32</span><span·class="p">,</span><span·class="mi">78</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
174 ······</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-group-id="7334461158-6">&gt;&gt;</span><span·class="p"·data-group-id="7334461158-5">}</span><span·class="gp·unselectable">174 ······</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-group-id="7226005214-6">&gt;&gt;</span><span·class="p"·data-group-id="7226005214-5">}</span><span·class="gp·unselectable">
175 4&gt;·</span><span·class="p"·data-group-id="7334461158-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Person</span><span·class="p"·data-group-id="7334461158-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#3[·...·truncated·by·diffoscope;·len:·247,·SHA:·66e7ddf125f5fb43945a8184599425b5efe897a841c9b679edc9802c8ac431bd·...·]-8">)</span><span·class="p">.</span><span·class="w">175 4&gt;·</span><span·class="p"·data-group-id="7226005214-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Person</span><span·class="p"·data-group-id="7226005214-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#3[·...·truncated·by·diffoscope;·len:·247,·SHA:·963d2806e8c78000e41f3c80195831692a99b02922da95ae1c5849263e298584·...·]-8">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p"·data-group-id="7334461158-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7334461158-10">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·176,·SHA:·7bb8b0d3819337f19a9fa756e84d10a843a5073354e747c8c0d9852182aa5b06·...·]-9">}</span></code></pre><h3·id="module-dependencies"·class="section-heading">176 </span><span·class="p"·data-group-id="7226005214-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7226005214-10">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·176,·SHA:·c242172d336f05a63f852572ca40ebc07887fa9b7773e7e51e678ab73691c960·...·]-9">}</span></code></pre><h3·id="module-dependencies"·class="section-heading">
177 ··<a·href="#module-dependencies"·class="hover-link">177 ··<a·href="#module-dependencies"·class="hover-link">
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Module·Dependencies</span>180 ··<span·class="text">Module·Dependencies</span>
181 </h3>181 </h3>
182 <p>It·is·common·that·ASN.1·modules·import·defined·types,·values,·and·other·entities182 <p>It·is·common·that·ASN.1·modules·import·defined·types,·values,·and·other·entities
183 from·another·ASN.1·module.</p><p>Earlier·versions·of·the·ASN.1·compiler·required·that·modules·that·were·imported183 from·another·ASN.1·module.</p><p>Earlier·versions·of·the·ASN.1·compiler·required·that·modules·that·were·imported
Offset 267, 35 lines modifiedOffset 267, 35 lines modified
267 ··</a>267 ··</a>
268 ··<span·class="text">Note·about·tags</span>268 ··<span·class="text">Note·about·tags</span>
269 </h2>269 </h2>
270 <p>Tags·used·to·be·important·for·all·users·of·ASN.1,·because·it·was·necessary·to270 <p>Tags·used·to·be·important·for·all·users·of·ASN.1,·because·it·was·necessary·to
271 to·manually·add·tags·to·certain·constructs·in·order·for·the·ASN.1·specification·to271 to·manually·add·tags·to·certain·constructs·in·order·for·the·ASN.1·specification·to
272 be·valid.·Example·of·an·old-style·specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tags</span><span·class="w">·</span><span·class="n">DEFINITIONS</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">272 be·valid.·Example·of·an·old-style·specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tags</span><span·class="w">·</span><span·class="n">DEFINITIONS</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">
273 </span><span·class="n">BEGIN</span><span·class="w">273 </span><span·class="n">BEGIN</span><span·class="w">
274 ··</span><span·class="n">Afters</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">CHOICE</span><span·class="w">·</span><span·class="p"·data-group-id="4439083380-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="p"·data-group-id="4439083380-2">[</span><span·class="mi">0</span><span·class="p"·data-group-id="4439083380-2">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="p">,</span><span·class="w">274 ··</span><span·class="n">Afters</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">CHOICE</span><span·class="w">·</span><span·class="p"·data-group-id="4911393116-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="p"·data-group-id="4911393116-2">[</span><span·class="mi">0</span><span·class="p"·data-group-id="4911393116-2">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="p">,</span><span·class="w">
275 ······················</span><span·class="ss">dessert</span><span·class="w">·</span><span·class="p"·data-group-id="4439083380-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="4439083380-3">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="4439083380-1">}</span><span·class="w">275 ······················</span><span·class="ss">dessert</span><span·class="w">·</span><span·class="p"·data-group-id="4911393116-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="4911393116-3">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="4911393116-1">}</span><span·class="w">
276 </span><span·class="n">END</span></code></pre><p>Without·the·tags·(the·numbers·in·square·brackets)·the·ASN.1·compiler·refused·to276 </span><span·class="n">END</span></code></pre><p>Without·the·tags·(the·numbers·in·square·brackets)·the·ASN.1·compiler·refused·to
277 compile·the·file.</p><p>In·1994·the·global·tagging·mode·<code·class="inline">AUTOMATIC·TAGS</code>·was·introduced.·By·putting277 compile·the·file.</p><p>In·1994·the·global·tagging·mode·<code·class="inline">AUTOMATIC·TAGS</code>·was·introduced.·By·putting
278 <code·class="inline">AUTOMATIC·TAGS</code>·in·the·module·header,·the·ASN.1·compiler·automatically·adds278 <code·class="inline">AUTOMATIC·TAGS</code>·in·the·module·header,·the·ASN.1·compiler·automatically·adds
279 tags·when·needed.·The·following·is·the·same·specification·in·<code·class="inline">AUTOMATIC·TAGS</code>279 tags·when·needed.·The·following·is·the·same·specification·in·<code·class="inline">AUTOMATIC·TAGS</code>
280 mode:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tags</span><span·class="w">·</span><span·class="n">DEFINITIONS</span><span·class="w">·</span><span·class="n">AUTOMATIC</span><span·class="w">·</span><span·class="n">TAGS</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">280 mode:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tags</span><span·class="w">·</span><span·class="n">DEFINITIONS</span><span·class="w">·</span><span·class="n">AUTOMATIC</span><span·class="w">·</span><span·class="n">TAGS</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">
281 </span><span·class="n">BEGIN</span><span·class="w">281 </span><span·class="n">BEGIN</span><span·class="w">
282 ··</span><span·class="n">Afters</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">CHOICE</span><span·class="w">·</span><span·class="p"·data-group-id="0135125133-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="p">,</span><span·class="w">282 ··</span><span·class="n">Afters</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">CHOICE</span><span·class="w">·</span><span·class="p"·data-group-id="7214812783-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="p">,</span><span·class="w">
283 ······················</span><span·class="ss">dessert</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="0135125133-1">}</span><span·class="w">283 ······················</span><span·class="ss">dessert</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="7214812783-1">}</span><span·class="w">
284 </span><span·class="n">END</span></code></pre><p><a·href=""·id="ASN1Types"></a></p><h2·id="asn-1-types"·class="section-heading">284 </span><span·class="n">END</span></code></pre><p><a·href=""·id="ASN1Types"></a></p><h2·id="asn-1-types"·class="section-heading">
285 ··<a·href="#asn-1-types"·class="hover-link">285 ··<a·href="#asn-1-types"·class="hover-link">
286 ····<i·class="ri-link-m"·aria-hidden="true"></i>286 ····<i·class="ri-link-m"·aria-hidden="true"></i>
287 ··</a>287 ··</a>
288 ··<span·class="text">ASN.1·Types</span>288 ··<span·class="text">ASN.1·Types</span>
289 </h2>289 </h2>
290 <p>This·section·describes·the·ASN.1·types·including·their·functionality,·purpose,290 <p>This·section·describes·the·ASN.1·types·including·their·functionality,·purpose,
291 and·how·values·are·assigned·in·Erlang.</p><p>ASN.1·has·both·primitive·and·constructed·types:</p><table><thead><tr><th·style="text-align:·left;"><em>Primitive·Types</em></th><th·style="text-align:·left;"><em>Constructed·Types</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#boolean">BOOLEAN</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#sequence">SEQUENCE</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#integer">INTEGER</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#set">SET</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#real">REAL</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#choice">CHOICE</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#null">NULL</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#SOF">SET·OF·and·SEQUENCE·OF</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#enumerated">ENUMERATED</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#ANY">ANY</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#bit-string">BIT·STRING</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#ANY">ANY·DEFINED·BY</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#octet-string">OCTET·STRING</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#NegotiationTypes">EXTERNAL</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#character-strings">Character·Strings</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#NegotiationTypes">EMBEDDED·PDV</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#object-identifier">OBJECT·IDENTIFIER</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#NegotiationTypes">CHARACTER·STRING</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#object-descriptor">Object·Descriptor</a></td><td·style="text-align:·left;"></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#The-TIME-types">TIME·Types</a></td><td·style="text-align:·left;"></td></tr></tbody></table><p><em>Table:·Supported·ASN.1·Types</em></p><p><a·href=""·id="TypeNameValue"></a></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·values·of·each·ASN.1·type·have·their·own·representation·in·Erlang,·as291 and·how·values·are·assigned·in·Erlang.</p><p>ASN.1·has·both·primitive·and·constructed·types:</p><table><thead><tr><th·style="text-align:·left;"><em>Primitive·Types</em></th><th·style="text-align:·left;"><em>Constructed·Types</em></th></tr></thead><tbody><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#boolean">BOOLEAN</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#sequence">SEQUENCE</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#integer">INTEGER</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#set">SET</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#real">REAL</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#choice">CHOICE</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#null">NULL</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#SOF">SET·OF·and·SEQUENCE·OF</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#enumerated">ENUMERATED</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#ANY">ANY</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#bit-string">BIT·STRING</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#ANY">ANY·DEFINED·BY</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#octet-string">OCTET·STRING</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#NegotiationTypes">EXTERNAL</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#character-strings">Character·Strings</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#NegotiationTypes">EMBEDDED·PDV</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#object-identifier">OBJECT·IDENTIFIER</a></td><td·style="text-align:·left;"><a·href="asn1_getting_started.html#NegotiationTypes">CHARACTER·STRING</a></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#object-descriptor">Object·Descriptor</a></td><td·style="text-align:·left;"></td></tr><tr><td·style="text-align:·left;"><a·href="asn1_getting_started.html#The-TIME-types">TIME·Types</a></td><td·style="text-align:·left;"></td></tr></tbody></table><p><em>Table:·Supported·ASN.1·Types</em></p><p><a·href=""·id="TypeNameValue"></a></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·values·of·each·ASN.1·type·have·their·own·representation·in·Erlang,·as
292 described·in·the·following·sections.·Users·must·provide·these·values·for292 described·in·the·following·sections.·Users·must·provide·these·values·for
293 encoding·according·to·the·representation,·as·shown·in·the·following·example:</p></section><pre><code·class="text">Operational·::=·BOOLEAN·--ASN.1·definition</code></pre><p>In·Erlang·code·it·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">293 encoding·according·to·the·representation,·as·shown·in·the·following·example:</p></section><pre><code·class="text">Operational·::=·BOOLEAN·--ASN.1·definition</code></pre><p>In·Erlang·code·it·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">
294 </span><span·class="p"·data-group-id="5840226019-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="5840226019-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MyModule</span>[·...·truncated·by·diffoscope;·len:·265,·SHA:·28e96d3e4cd28780400240e2677bf217ee777f94f3c0b6d52de3c676de584159·...·]19-2">)</span><span·class="p">,</span></code></pre><h3·id="boolean"·class="section-heading">294 </span><span·class="p"·data-group-id="6614883119-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="6614883119-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MyModule</span>[·...·truncated·by·diffoscope;·len:·265,·SHA:·4e5ba74fef89268c91b95aa6ff3892556d8832cd501f032bf77c801ff54b47e5·...·]19-2">)</span><span·class="p">,</span></code></pre><h3·id="boolean"·class="section-heading">
295 ··<a·href="#boolean"·class="hover-link">295 ··<a·href="#boolean"·class="hover-link">
296 ····<i·class="ri-link-m"·aria-hidden="true"></i>296 ····<i·class="ri-link-m"·aria-hidden="true"></i>
297 ··</a>297 ··</a>
298 ··<span·class="text">BOOLEAN</span>298 ··<span·class="text">BOOLEAN</span>
299 </h3>299 </h3>
300 <p>Booleans·in·ASN.1·express·values·that·can·be·either·<code·class="inline">TRUE</code>·or·<code·class="inline">FALSE</code>.·The300 <p>Booleans·in·ASN.1·express·values·that·can·be·either·<code·class="inline">TRUE</code>·or·<code·class="inline">FALSE</code>.·The
301 meanings·assigned·to·<code·class="inline">TRUE</code>·and·<code·class="inline">FALSE</code>·are·outside·the·scope·of·this·text.</p><p>In·ASN.1·it·is·possible·to·have:</p><pre><code·class="text">Operational·::=·BOOLEAN</code></pre><p>Assigning·a·value·to·type·<code·class="inline">Operational</code>·in·Erlang·is·possible·by·using·the301 meanings·assigned·to·<code·class="inline">TRUE</code>·and·<code·class="inline">FALSE</code>·are·outside·the·scope·of·this·text.</p><p>In·ASN.1·it·is·possible·to·have:</p><pre><code·class="text">Operational·::=·BOOLEAN</code></pre><p>Assigning·a·value·to·type·<code·class="inline">Operational</code>·in·Erlang·is·possible·by·using·the
Offset 304, 19 lines modifiedOffset 304, 19 lines modified
304 ····<i·class="ri-link-m"·aria-hidden="true"></i>304 ····<i·class="ri-link-m"·aria-hidden="true"></i>
305 ··</a>305 ··</a>
306 ··<span·class="text">INTEGER</span>306 ··<span·class="text">INTEGER</span>
307 </h3>307 </h3>
308 <p>An·ASN.1·INTEGER·is·represented·by·an·integer·in·Erlang.</p><p>The·concept·of·subtyping·can·be·applied·to·integers·and·to·other·ASN.1·types.308 <p>An·ASN.1·INTEGER·is·represented·by·an·integer·in·Erlang.</p><p>The·concept·of·subtyping·can·be·applied·to·integers·and·to·other·ASN.1·types.
309 The·details·of·subtyping·are·not·explained·here;·for·more·information,·see309 The·details·of·subtyping·are·not·explained·here;·for·more·information,·see
310 X.680.·Various·syntaxes·are·allowed·when·defining·a·type·as·an·integer:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">310 X.680.·Various·syntaxes·are·allowed·when·defining·a·type·as·an·integer:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">
311 </span><span·class="n">T2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="0846628285-1">(</span><span·class="o">-</span><span·class="mi">2</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">7</span><span·class="p"·data-group-id="0846628285-1">)</span><span·class="w">311 </span><span·class="n">T2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="6852569267-1">(</span><span·class="o">-</span><span·class="mi">2</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">7</span><span·class="p"·data-group-id="6852569267-1">)</span><span·class="w">
312 </span><span·class="n">T3</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="0846628285-2">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="n">MAX</span><span·class="p"·data-group-id="0846628285-2">)</span><span·class="w">312 </span><span·class="n">T3</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="6852569267-2">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="n">MAX</span><span·class="p"·data-group-id="6852569267-2">)</span><span·class="w">
313 </span><span·class="n">T4</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="0846628285-3">(</span><span·class="mi">0</span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="n">MAX</span><span·class="p"·data-group-id="0846628285-3">)</span><span·class="w">313 </span><span·class="n">T4</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="6852569267-3">(</span><span·class="mi">0</span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="n">MAX</span><span·class="p"·data-group-id="6852569267-3">)</span><span·class="w">
314 </span><span·class="n">T5</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="0846628285-4">(</span><span·class="n">MIN</span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="o">-</span><span·class="mi">99</span><span·class="p"·data-group-id="0846628285-4">)</span><span·class="w">314 </span><span·class="n">T5</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="6852569267-4">(</span><span·class="n">MIN</span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="o">-</span><span·class="mi">99</span><span·class="p"·data-group-id="6852569267-4">)</span><span·class="w">
315 </span><span·class="n">T6</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="0846628285-5">{</span><span·class="nf">red</span><span·class="p"·data-group-id="0846628285-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0846628285-6">)</span><span·class="p">,</span><span·class="nf">blue</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·332,·SHA:·aada12497c6d3ecc908bd11b7beb78b4fdd3c19dbd04433ee78423710ccd5f55·...·]-5">}</span></code></pre><p>The·Erlang·representation·of·an·ASN.1·<code·class="inline">INTEGER</code>·is·an·integer·or·an·atom·if·a315 </span><span·class="n">T6</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">INTEGER</span><span·class="w">·</span><span·class="p"·data-group-id="6852569267-5">{</span><span·class="nf">red</span><span·class="p"·data-group-id="6852569267-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6852569267-6">)</span><span·class="p">,</span><span·class="nf">blue</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·332,·SHA:·78b653c9aa20d967fe7805ef4b72f4bd30e16174b208dab49166516659ac60fc·...·]-5">}</span></code></pre><p>The·Erlang·representation·of·an·ASN.1·<code·class="inline">INTEGER</code>·is·an·integer·or·an·atom·if·a
316 <code·class="inline">Named·Number·List</code>·(see·<code·class="inline">T6</code>·in·the·previous·list)·is·specified.</p><p>The·following·is·an·example·of·Erlang·code·that·assigns·values·for·the·types·in316 <code·class="inline">Named·Number·List</code>·(see·<code·class="inline">T6</code>·in·the·previous·list)·is·specified.</p><p>The·following·is·an·example·of·Erlang·code·that·assigns·values·for·the·types·in
317 the·previous·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T1value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">317 the·previous·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T1value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
318 </span><span·class="n">T2value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">318 </span><span·class="n">T2value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">
319 </span><span·class="n">T6value1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">blue</span><span·class="p">,</span><span·class="w">319 </span><span·class="n">T6value1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">blue</span><span·class="p">,</span><span·class="w">
320 </span><span·class="n">T6value2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">320 </span><span·class="n">T6value2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
321 </span><span·class="n">T6value3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">white</span></code></pre><p>These·Erlang·variables·are·now·bound·to·valid·instances·of·ASN.1·defined·types.321 </span><span·class="n">T6value3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">white</span></code></pre><p>These·Erlang·variables·are·now·bound·to·valid·instances·of·ASN.1·defined·types.
322 This·style·of·value·can·be·passed·directly·to·the·encoder·for·transformation322 This·style·of·value·can·be·passed·directly·to·the·encoder·for·transformation
Offset 355, 15 lines modifiedOffset 355, 15 lines modified
355 ····<i·class="ri-link-m"·aria-hidden="true"></i>355 ····<i·class="ri-link-m"·aria-hidden="true"></i>
356 ··</a>356 ··</a>
357 ··<span·class="text">BIT·STRING</span>357 ··<span·class="text">BIT·STRING</span>
358 </h3>358 </h3>
359 <p>The·type·<code·class="inline">BIT·STRING</code>·can·be·used·to·model·information·that·is·made·up·of359 <p>The·type·<code·class="inline">BIT·STRING</code>·can·be·used·to·model·information·that·is·made·up·of
360 arbitrary·length·series·of·bits.·It·is·intended·to·be·used·for·selection·of360 arbitrary·length·series·of·bits.·It·is·intended·to·be·used·for·selection·of
361 flags,·not·for·binary·files.</p><p>In·ASN.1,·<code·class="inline">BIT·STRING</code>·definitions·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bits1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">BIT</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">361 flags,·not·for·binary·files.</p><p>In·ASN.1,·<code·class="inline">BIT·STRING</code>·definitions·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bits1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">BIT</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">
362 </span><span·class="n">Bits2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">BIT</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">·</span><span·class="p"·data-group-id="1125195040-1">{</span><span·class="nf">foo</span><span·class="p"·data-group-id="1125195040-2">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1125195040-2">)</span><span·class="p">,</span><span·class="nf">bar</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·697,·SHA:·c34d77d5030d53b215e0427ad7e5e58aa83a7404f0600a1632e5fa9dbbae5e64·...·]-1">}</span></code></pre><p>The·following·two·notations·are·available·for·representation·of·<code·class="inline">BIT·STRING</code>362 </span><span·class="n">Bits2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">BIT</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">·</span><span·class="p"·data-group-id="2543183816-1">{</span><span·class="nf">foo</span><span·class="p"·data-group-id="2543183816-2">(</span><span·class="mi">0</span><span·class="p"·data-group-id="2543183816-2">)</span><span·class="p">,</span><span·class="nf">bar</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·697,·SHA:·c9371c800147a34ace9721e403bea151029534355c78ea799fff828d9cca6de2·...·]-1">}</span></code></pre><p>The·following·two·notations·are·available·for·representation·of·<code·class="inline">BIT·STRING</code>
363 values·in·Erlang·and·as·input·to·the·encode·functions:</p><ol><li>A·bitstring.·By·default,·a·<code·class="inline">BIT·STRING</code>·with·no·symbolic·names·is·decoded·to363 values·in·Erlang·and·as·input·to·the·encode·functions:</p><ol><li>A·bitstring.·By·default,·a·<code·class="inline">BIT·STRING</code>·with·no·symbolic·names·is·decoded·to
364 an·Erlang·bitstring.</li><li>A·list·of·atoms·corresponding·to·atoms·in·the·<code·class="inline">NamedBitList</code>·in·the364 an·Erlang·bitstring.</li><li>A·list·of·atoms·corresponding·to·atoms·in·the·<code·class="inline">NamedBitList</code>·in·the
365 <code·class="inline">BIT·STRING</code>·definition.·A·<code·class="inline">BIT·STRING</code>·with·symbolic·names·is·always·decoded365 <code·class="inline">BIT·STRING</code>·definition.·A·<code·class="inline">BIT·STRING</code>·with·symbolic·names·is·always·decoded
366 to·the·format·shown·in·the·following·example:</li></ol><pre><code·class="text">Bits1Val1·=·&lt;&lt;0:1,1:1,0:1,1:1,1:1&gt;&gt;,366 to·the·format·shown·in·the·following·example:</li></ol><pre><code·class="text">Bits1Val1·=·&lt;&lt;0:1,1:1,0:1,1:1,1:1&gt;&gt;,
367 Bits2Val1·=·[gnu,punk],367 Bits2Val1·=·[gnu,punk],
368 Bits2Val2·=·&lt;&lt;2#1110:4&gt;&gt;,368 Bits2Val2·=·&lt;&lt;2#1110:4&gt;&gt;,
369 Bits2Val3·=·[bar,gnu,gnome],</code></pre><p><code·class="inline">Bits2Val2</code>·and·<code·class="inline">Bits2Val3</code>·denote·the·same·value.</p><p><code·class="inline">Bits2Val1</code>·is·assigned·symbolic·values.·The·assignment·means·that·the·bits369 Bits2Val3·=·[bar,gnu,gnome],</code></pre><p><code·class="inline">Bits2Val2</code>·and·<code·class="inline">Bits2Val3</code>·denote·the·same·value.</p><p><code·class="inline">Bits2Val1</code>·is·assigned·symbolic·values.·The·assignment·means·that·the·bits
Offset 383, 15 lines modifiedOffset 383, 15 lines modified
383 ····<i·class="ri-link-m"·aria-hidden="true"></i>383 ····<i·class="ri-link-m"·aria-hidden="true"></i>
384 ··</a>384 ··</a>
385 ··<span·class="text">OCTET·STRING</span>385 ··<span·class="text">OCTET·STRING</span>
386 </h3>386 </h3>
387 <p><code·class="inline">OCTET·STRING</code>·is·the·simplest·of·all·ASN.1·types.·<code·class="inline">OCTET·STRING</code>·only·moves·or387 <p><code·class="inline">OCTET·STRING</code>·is·the·simplest·of·all·ASN.1·types.·<code·class="inline">OCTET·STRING</code>·only·moves·or
388 transfers,·for·example,·binary·files·or·other·unstructured·information·complying388 transfers,·for·example,·binary·files·or·other·unstructured·information·complying
389 with·two·rules:·the·bytes·consist·of·octets·and·encoding·is·not·required.</p><p>It·is·possible·to·have·the·following·ASN.1·type·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">O1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">OCTET</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">389 with·two·rules:·the·bytes·consist·of·octets·and·encoding·is·not·required.</p><p>It·is·possible·to·have·the·following·ASN.1·type·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">O1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">OCTET</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">
390 </span><span·class="n">O2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">OCTET</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">·</span><span·class="p"·data-group-id="5195444590-1">(</span><span·class="n">SIZE</span><span·class="p"·data-group-id="5195444590-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="5195444590-2">)</span><span·class="p"·data-group-id="5195444590-1">)</span></code></pre><p>With·the·following·example·assignments·in·Erlang:</p><pre><code·class="text">O1Val·=·&lt;&lt;17,13,19,20,0,0,255,254&gt;&gt;,390 </span><span·class="n">O2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">OCTET</span><span·class="w">·</span><span·class="n">STRING</span><span·class="w">·</span><span·class="p"·data-group-id="0309712068-1">(</span><span·class="n">SIZE</span><span·class="p"·data-group-id="0309712068-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="0309712068-2">)</span><span·class="p"·data-group-id="0309712068-1">)</span></code></pre><p>With·the·following·example·assignments·in·Erlang:</p><pre><code·class="text">O1Val·=·&lt;&lt;17,13,19,20,0,0,255,254&gt;&gt;,
391 O2Val·=·&lt;&lt;&quot;must·be·exactly·28·chars....&quot;&gt;&gt;,</code></pre><p>By·default,·an·<code·class="inline">OCTET·STRING</code>·is·always·represented·as·an·Erlang·binary.·If·the391 O2Val·=·&lt;&lt;&quot;must·be·exactly·28·chars....&quot;&gt;&gt;,</code></pre><p>By·default,·an·<code·class="inline">OCTET·STRING</code>·is·always·represented·as·an·Erlang·binary.·If·the
Max diff block lines reached; 124240/171812 bytes (72.31%) of diff not shown.
117 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1_spec.html
    
Offset 161, 45 lines modifiedOffset 161, 45 lines modified
161 </h3>161 </h3>
162 <p>The·runtime·user·interface·for·exclusive·decode·comprises·the·following·two162 <p>The·runtime·user·interface·for·exclusive·decode·comprises·the·following·two
163 functions:</p><ul><li>A·function·for·an·exclusive·decode,·whose·name·the·user·decides·in·the163 functions:</p><ul><li>A·function·for·an·exclusive·decode,·whose·name·the·user·decides·in·the
164 configuration·file</li><li>A·<code·class="inline">decode_part/2</code>·function·generated·by·the·ASN.1·compiler·when164 configuration·file</li><li>A·<code·class="inline">decode_part/2</code>·function·generated·by·the·ASN.1·compiler·when
165 exclusive·decode·is·enabled.·This·function·decodes·the·parts·that165 exclusive·decode·is·enabled.·This·function·decodes·the·parts·that
166 were·left·undecoded·during·the·exclusive·decode.</li></ul><p>Both·functions·are·described·in·the·following.</p><p>If·the·exclusive·decode·function·has,·for·example,·the·name·<code·class="inline">decode_exclusive</code>166 were·left·undecoded·during·the·exclusive·decode.</li></ul><p>Both·functions·are·described·in·the·following.</p><p>If·the·exclusive·decode·function·has,·for·example,·the·name·<code·class="inline">decode_exclusive</code>
167 and·an·ASN.1·encoded·message·<code·class="inline">Bin</code>·is·to·be·exclusive·decoded,·the·call·is·as167 and·an·ASN.1·encoded·message·<code·class="inline">Bin</code>·is·to·be·exclusive·decoded,·the·call·is·as
168 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2958816258-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ExclMessage</span><span·class="p"·data-group-id="2958816258-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;MyM[·...·truncated·by·diffoscope;·len:·201,·SHA:·74fffb117ea182a180009d17d9edee82fed1a6c37e660aac5966144b908742a5·...·]-2">)</span></code></pre><p><a·href=""·id="UndecodedPart"></a>·The·result·<code·class="inline">ExclMessage</code>·has·the·same·structure·as·a168 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4616632454-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ExclMessage</span><span·class="p"·data-group-id="4616632454-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;MyM[·...·truncated·by·diffoscope;·len:·201,·SHA:·68c21c898125eeb8236aa21a07768ca561c1f75f0d7456b4a2a03c4aa0933432·...·]-2">)</span></code></pre><p><a·href=""·id="UndecodedPart"></a>·The·result·<code·class="inline">ExclMessage</code>·has·the·same·structure·as·a
169 complete·decode·would·have,·except·for·the·parts·of·the·top·type·that·were·not169 complete·decode·would·have,·except·for·the·parts·of·the·top·type·that·were·not
170 decoded.·The·undecoded·parts·are·on·their·places·in·the·structure·on·format170 decoded.·The·undecoded·parts·are·on·their·places·in·the·structure·on·format
171 <code·class="inline">{TypeKey,UndecodedValue}</code>.</p><p>Each·undecoded·part·that·is·to·be·decoded·must·be·fed·into·function171 <code·class="inline">{TypeKey,UndecodedValue}</code>.</p><p>Each·undecoded·part·that·is·to·be·decoded·must·be·fed·into·function
172 <code·class="inline">decode_part/2</code>·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3546328839-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">PartMessage</span><span·class="p"·data-group-id="3546328839-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;MyM[·...·truncated·by·diffoscope;·len:·285,·SHA:·2fea94ae49e5b959c79549b58d841819870e769b3db94c46b5ae0f14aff425ee·...·]-2">)</span></code></pre><p><a·href=""·id="Exclusive-Instruction"></a></p><h3·id="writing-an-exclusive-decode-instruction"·class="section-heading">172 <code·class="inline">decode_part/2</code>·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0182726856-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">PartMessage</span><span·class="p"·data-group-id="0182726856-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;MyM[·...·truncated·by·diffoscope;·len:·285,·SHA:·f7e1f735a50dc2320a0ce44f8828859c1eb1daaadd520682508fa1d5489e58e8·...·]-2">)</span></code></pre><p><a·href=""·id="Exclusive-Instruction"></a></p><h3·id="writing-an-exclusive-decode-instruction"·class="section-heading">
173 ··<a·href="#writing-an-exclusive-decode-instruction"·class="hover-link">173 ··<a·href="#writing-an-exclusive-decode-instruction"·class="hover-link">
174 ····<i·class="ri-link-m"·aria-hidden="true"></i>174 ····<i·class="ri-link-m"·aria-hidden="true"></i>
175 ··</a>175 ··</a>
176 ··<span·class="text">Writing·an·Exclusive·Decode·Instruction</span>176 ··<span·class="text">Writing·an·Exclusive·Decode·Instruction</span>
177 </h3>177 </h3>
178 <p>This·instruction·is·written·in·the·configuration·file·in·the·following·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExclusiveDecodeInstruction</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7244458306-1">{</span><span·class="ss">exclusive_decode</span><span·class="p">,</span><span·class="p"·data-group-id="7244458306-2">{</span><span·class="n">ModuleName</span><span·class="p">,</span><span·class="n">DecodeInstructions</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·bc313a5d8cc26c8e9d3c862e813d650053282fcc0159d3972f91134fce499fb5·...·]-1">}</span><span·class="p">.</span><span·class="w">178 <p>This·instruction·is·written·in·the·configuration·file·in·the·following·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExclusiveDecodeInstruction</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3237553427-1">{</span><span·class="ss">exclusive_decode</span><span·class="p">,</span><span·class="p"·data-group-id="3237553427-2">{</span><span·class="n">ModuleName</span><span·class="p">,</span><span·class="n">DecodeInstructions</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·9fe297ba099b8101c563efbf4820cd791f10d14921fd43264e968886f22f5715·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="n">ModuleName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7244458306-3">(</span><span·class="p"·data-group-id="7244458306-3">)</span><span·class="w">179 </span><span·class="n">ModuleName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3237553427-3">(</span><span·class="p"·data-group-id="3237553427-3">)</span><span·class="w">
  
180 </span><span·class="n">DecodeInstructions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7244458306-4">[</span><span·class="n">DecodeInstruction</span><span·class="p"·data-group-id="7244458306-4">]</span><span·class="o">+</span><span·class="w">180 </span><span·class="n">DecodeInstructions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3237553427-4">[</span><span·class="n">DecodeInstruction</span><span·class="p"·data-group-id="3237553427-4">]</span><span·class="o">+</span><span·class="w">
  
181 </span><span·class="n">DecodeInstruction</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7244458306-5">{</span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="p">,</span><span·class="n">TypeList</span><span·class="p"·data-group-id="7244458306-5">}</span><span·class="w">181 </span><span·class="n">DecodeInstruction</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3237553427-5">{</span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="p">,</span><span·class="n">TypeList</span><span·class="p"·data-group-id="3237553427-5">}</span><span·class="w">
  
182 </span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7244458306-6">(</span><span·class="p"·data-group-id="7244458306-6">)</span><span·class="w">182 </span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3237553427-6">(</span><span·class="p"·data-group-id="3237553427-6">)</span><span·class="w">
  
183 </span><span·class="n">TypeList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7244458306-7">[</span><span·class="n">TopType</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="7244458306-7">]</span><span·class="w">183 </span><span·class="n">TypeList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3237553427-7">[</span><span·class="n">TopType</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="3237553427-7">]</span><span·class="w">
  
184 </span><span·class="n">ElementList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7244458306-8">[</span><span·class="n">Element</span><span·class="p"·data-group-id="7244458306-8">]</span><span·class="o">+</span><span·class="w">184 </span><span·class="n">ElementList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3237553427-8">[</span><span·class="n">Element</span><span·class="p"·data-group-id="3237553427-8">]</span><span·class="o">+</span><span·class="w">
  
185 </span><span·class="n">Element</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7244458306-9">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">parts</span><span·class="p"·data-group-id="7244458306-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">185 </span><span·class="n">Element</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3237553427-9">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">parts</span><span·class="p"·data-group-id="3237553427-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
186 ··········</span><span·class="p"·data-group-id="7244458306-10">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">undecoded</span><span·class="p"·data-group-id="7244458306-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">186 ··········</span><span·class="p"·data-group-id="3237553427-10">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">undecoded</span><span·class="p"·data-group-id="3237553427-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="7244458306-11">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="7244458306-11">}</span><span·class="w">187 ··········</span><span·class="p"·data-group-id="3237553427-11">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="3237553427-11">}</span><span·class="w">
  
188 </span><span·class="n">TopType</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7244458306-12">(</span><span·class="p"·data-group-id="7244458306-12">)</span><span·class="w">188 </span><span·class="n">TopType</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3237553427-12">(</span><span·class="p"·data-group-id="3237553427-12">)</span><span·class="w">
  
189 </span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7244458306-13">(</span><span·class="p"·data-group-id="7244458306-13">)</span></code></pre><p>The·instruction·must·be·a·valid·Erlang·term·terminated·by·a·dot.</p><p>In·<code·class="inline">TypeList</code>·the·path·from·the·top·type·to·each·undecoded·subcomponent·is189 </span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3237553427-13">(</span><span·class="p"·data-group-id="3237553427-13">)</span></code></pre><p>The·instruction·must·be·a·valid·Erlang·term·terminated·by·a·dot.</p><p>In·<code·class="inline">TypeList</code>·the·path·from·the·top·type·to·each·undecoded·subcomponent·is
190 described.·<code·class="inline">TopType</code>·is·the·name·of·a·top-level·type·in·the·ASN.1·specification.190 described.·<code·class="inline">TopType</code>·is·the·name·of·a·top-level·type·in·the·ASN.1·specification.
191 The·action·for·each·component·in·<code·class="inline">ElementList</code>·is·described·by·one·of:</p><ul><li><code·class="inline">{Name,parts}</code></li><li><code·class="inline">{Name,undecoded}</code></li><li><code·class="inline">{Name,ElementList}</code></li></ul><p>The·use·and·effect·of·the·actions·are·as·follows:</p><ul><li><p><strong><code·class="inline">{Name,undecoded}</code></strong>·-·Leaves·the·element·undecoded.·The·type·of·<code·class="inline">Name</code>·can191 The·action·for·each·component·in·<code·class="inline">ElementList</code>·is·described·by·one·of:</p><ul><li><code·class="inline">{Name,parts}</code></li><li><code·class="inline">{Name,undecoded}</code></li><li><code·class="inline">{Name,ElementList}</code></li></ul><p>The·use·and·effect·of·the·actions·are·as·follows:</p><ul><li><p><strong><code·class="inline">{Name,undecoded}</code></strong>·-·Leaves·the·element·undecoded.·The·type·of·<code·class="inline">Name</code>·can
192 be·any·ASN.1·type.·The·value·of·element·<code·class="inline">Name</code>·is·returned·as·a·tuple·(as192 be·any·ASN.1·type.·The·value·of·element·<code·class="inline">Name</code>·is·returned·as·a·tuple·(as
193 mentioned·in·the·previous·section)·in·the·value·structure·of·the·top·type.</p></li><li><p><strong><code·class="inline">{Name,parts}</code></strong>·-·The·type·of·<code·class="inline">Name</code>·must·be·either·<code·class="inline">SEQUENCE·OF</code>·or193 mentioned·in·the·previous·section)·in·the·value·structure·of·the·top·type.</p></li><li><p><strong><code·class="inline">{Name,parts}</code></strong>·-·The·type·of·<code·class="inline">Name</code>·must·be·either·<code·class="inline">SEQUENCE·OF</code>·or
194 <code·class="inline">SET·OF</code>.·The·action·implies·that·the·different·components·of·<code·class="inline">Name</code>·are·left194 <code·class="inline">SET·OF</code>.·The·action·implies·that·the·different·components·of·<code·class="inline">Name</code>·are·left
195 undecoded.·The·value·of·<code·class="inline">Name</code>·is·returned·as·a·tuple·(as·mentioned·in·the195 undecoded.·The·value·of·<code·class="inline">Name</code>·is·returned·as·a·tuple·(as·mentioned·in·the
196 previous·section)·where·the·second·element·is·a·list·of·binaries.·This·is196 previous·section)·where·the·second·element·is·a·list·of·binaries.·This·is
Offset 257, 86 lines modifiedOffset 257, 86 lines modified
257 ·{'GUI',257 ·{'GUI',
258 ··[{decode_Window_exclusive,258 ··[{decode_Window_exclusive,
259 ····['Window',[{status,[{buttonList,parts},{actions,undecoded}]}]]},259 ····['Window',[{status,[{buttonList,parts},{actions,undecoded}]}]]},
260 ···{decode_Button_exclusive,260 ···{decode_Button_exclusive,
261 ····['Button',[{number,undecoded}]]}]}}.</code></pre><p>The·following·figure·shows·the·bytes·of·a·<code·class="inline">Window:status</code>·message.·The261 ····['Button',[{number,undecoded}]]}]}}.</code></pre><p>The·following·figure·shows·the·bytes·of·a·<code·class="inline">Window:status</code>·message.·The
262 components·<code·class="inline">buttonList</code>·and·<code·class="inline">actions</code>·are·excluded·from·decode.·Only·<code·class="inline">state</code>·and262 components·<code·class="inline">buttonList</code>·and·<code·class="inline">actions</code>·are·excluded·from·decode.·Only·<code·class="inline">state</code>·and
263 <code·class="inline">enabled</code>·are·decoded·when·<code·class="inline">decode__Window_exclusive</code>·is·called.</p><p><img·src="assets/exclusive_Win_But.gif"·alt="Bytes·of·a·Window:status·Message"·title="Bytes·of·a·Window:status·Message"/></p><p>Here·follows·an·example·of·how·the·module.·Note·that·option·<code·class="inline">no_ok_wrapper</code>·is263 <code·class="inline">enabled</code>·are·decoded·when·<code·class="inline">decode__Window_exclusive</code>·is·called.</p><p><img·src="assets/exclusive_Win_But.gif"·alt="Bytes·of·a·Window:status·Message"·title="Bytes·of·a·Window:status·Message"/></p><p>Here·follows·an·example·of·how·the·module.·Note·that·option·<code·class="inline">no_ok_wrapper</code>·is
264 used·to·make·the·example·more·concise.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">asn1ct</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="2612850194-1">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">asn1config</span><span·class[·...·truncated·by·diffoscope;·len:·144,·SHA:·76affeb559c5c9dd54e93c9e29b1dfc6c934b23c269e5aae551d9832eca64caf·...·]-1">)</span><span·class="p">.</span><span·class="w">264 used·to·make·the·example·more·concise.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">asn1ct</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="3995008285-1">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">asn1config</span><span·class[·...·truncated·by·diffoscope;·len:·144,·SHA:·a161bf89859c61b1ff878e29a98031cf4bbb7adc871dc0ce04ca3f7ba3409009·...·]-1">)</span><span·class="p">.</span><span·class="w">
265 </span><span·class="ss">ok</span><span·class="gp·unselectable">265 </span><span·class="ss">ok</span><span·class="gp·unselectable">
266 2&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="2612850194-3">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p"·data-group-id="2612850194-3">)</span><span·class="p">.</span><span·class="w">266 2&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="3995008285-3">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p"·data-group-id="3995008285-3">)</span><span·class="p">.</span><span·class="w">
267 </span><span·class="p"·data-group-id="2612850194-4">[</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="2612850194-4">]</span><span·class="gp·unselectable">267 </span><span·class="p"·data-group-id="3995008285-4">[</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="3995008285-4">]</span><span·class="gp·unselectable">
268 3&gt;·</span><span·class="n">ButtonMsg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-5">{</span><span·class="ss">number</span><span·class="o">=</span><span·class="mi">123</span><span·class="p">,</span><span·class="ss">on</span><span·class="o">=</span><span·class="ss">true</span><span·class="p"·data-group-id="2612850194-5">}</span><span·class="p">.</span><span·class="w">268 3&gt;·</span><span·class="n">ButtonMsg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-5">{</span><span·class="ss">number</span><span·class="o">=</span><span·class="mi">123</span><span·class="p">,</span><span·class="ss">on</span><span·class="o">=</span><span·class="ss">true</span><span·class="p"·data-group-id="3995008285-5">}</span><span·class="p">.</span><span·class="w">
269 </span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-6">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">123</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·86,·SHA:·f90b6131fcb3307511af6efcb2f758e9f63a76d51051ab8b87f53e70538bf166·...·]-6">}</span><span·class="gp·unselectable">269 </span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-6">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">123</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·86,·SHA:·7eb8a051704b7088ab77a7f09ccf58b565fef494cb35adaeabcb87ddfad9354c·...·]-6">}</span><span·class="gp·unselectable">
270 4&gt;·</span><span·class="n">ButtonBytes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="2612850194-7">(</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ButtonMsg</span><span·class="p"·data-group-id="2612850194-7">)</span><span·class="p">.</span><span·class="w">270 4&gt;·</span><span·class="n">ButtonBytes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="3995008285-7">(</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ButtonMsg</span><span·class="p"·data-group-id="3995008285-7">)</span><span·class="p">.</span><span·class="w">
271 </span><span·class="p"·data-group-id="2612850194-8">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">123</span><[·...·truncated·by·diffoscope;·len:·191,·SHA:·6dbec82a075d4a7ae7f77252535d83d8b956fa3c1d40a95ce5365583e25ec3bf·...·]-8">&gt;&gt;</span><span·class="gp·unselectable">271 </span><span·class="p"·data-group-id="3995008285-8">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">123</span><[·...·truncated·by·diffoscope;·len:·191,·SHA:·ccb865c7ebe84be3624477b4e77bafdff7c8ecda94e1f436ed7013f3b57203fe·...·]-8">&gt;&gt;</span><span·class="gp·unselectable">
272 5&gt;·</span><span·class="n">ExclusiveMsgButton</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_Button_exclusive</span><span·class="p"·data-group-id="2612850194-9">(</span><span·class="n">ButtonBytes</span><span·class="p"·data-group-id="2612850194-9">)</span><span·class="p">.</span><span·class="w">272 5&gt;·</span><span·class="n">ExclusiveMsgButton</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_Button_exclusive</span><span·class="p"·data-group-id="3995008285-9">(</span><span·class="n">ButtonBytes</span><span·class="p"·data-group-id="3995008285-9">)</span><span·class="p">.</span><span·class="w">
273 </span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-10">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-11">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·ebcd74b9f2b255d79dd2583782fe3efb78cc62b0e59d0646259626ab853c6136·...·]-11">}</span><span·class="p">,</span><span·class="w">273 </span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-10">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-11">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·2e28ecb7c53624a1aa6ac360b60f4d113a537bf6a34c09b6187c66ac38fcd82e·...·]-11">}</span><span·class="p">,</span><span·class="w">
274 ··········</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2612850194-10">}</span><span·class="gp·unselectable">274 ··········</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="3995008285-10">}</span><span·class="gp·unselectable">
275 6&gt;·</span><span·class="p"·data-group-id="2612850194-13">{</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="2612850194-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExclusiveMsgButton</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p">.</span><span·class="ss">number</span><span·class="p">.</span><span·class="w">275 6&gt;·</span><span·class="p"·data-group-id="3995008285-13">{</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="3995008285-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExclusiveMsgButton</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p">.</span><span·class="ss">number</span><span·class="p">.</span><span·class="w">
276 </span><span·class="p"·data-group-id="2612850194-14">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-15">&lt;&lt;</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·128,·SHA:·38c4737f0ac522b2ad01a71572e2ad9285c801d718369f0087d042f71e9ec3ba·...·]-14">}</span><span·class="gp·unselectable">276 </span><span·class="p"·data-group-id="3995008285-14">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-15">&lt;&lt;</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·128,·SHA:·bece4230200b20e8b83e66939c563fda5d4f0108685f1002b18a4d1a2ba44d0c·...·]-14">}</span><span·class="gp·unselectable">
277 7&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="2612850194-16">(</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="2612850194-16">)</span><span·class="p">.</span><span·class="w">277 7&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="3995008285-16">(</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="3995008285-16">)</span><span·class="p">.</span><span·class="w">
278 </span><span·class="mi">123</span><span·class="gp·unselectable">278 </span><span·class="mi">123</span><span·class="gp·unselectable">
279 8&gt;·</span><span·class="n">WindowMsg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">279 8&gt;·</span><span·class="n">WindowMsg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
280 </span><span·class="p"·data-group-id="2612850194-17">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-18">{</span><span·class="ss">&#39;Status&#39;</span><span·class="p">,</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">280 </span><span·class="p"·data-group-id="3995008285-17">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-18">{</span><span·class="ss">&#39;Status&#39;</span><span·class="p">,</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">
281 ···</span><span·class="p"·data-group-id="2612850194-19">[</span><span·class="p"·data-group-id="2612850194-20">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="2612850[·...·truncated·by·diffoscope;·len:·3,·SHA:·7559ca4a957c8c82ba04781cd66a68d6022229fca0e8e88d8e487c96ee4446d0·...·]-20">}</span><span·class="p">,</span><span·class="w">281 ···</span><span·class="p"·data-group-id="3995008285-19">[</span><span·class="p"·data-group-id="3995008285-20">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="3995008[·...·truncated·by·diffoscope;·len:·3,·SHA:·a0d177b4967a6d99f4ff117defe1c0d23d4e78ca4630febcb948ee9e4520eff3·...·]-20">}</span><span·class="p">,</span><span·class="w">
282 ····</span><span·class="p"·data-group-id="2612850194-21">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="2612850194-21">}</span><span·class="p">,</span><span·class="w">282 ····</span><span·class="p"·data-group-id="3995008285-21">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="3995008285-21">}</span><span·class="p">,</span><span·class="w">
283 ····</span><span·class="p"·data-group-id="2612850194-22">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="2612850194-22">}</span><span·class="p">,</span><span·class="w">283 ····</span><span·class="p"·data-group-id="3995008285-22">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="3995008285-22">}</span><span·class="p">,</span><span·class="w">
284 ····</span><span·class="p"·data-group-id="2612850194-23">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="2612850194-23">}</span><span·class="p">,</span><span·class="w">284 ····</span><span·class="p"·data-group-id="3995008285-23">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="3995008285-23">}</span><span·class="p">,</span><span·class="w">
285 ····</span><span·class="p"·data-group-id="2612850194-24">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="2612850194-24">}</span><span·class="p"·data-group-id="261285[·...·truncated·by·diffoscope;·len:·4,·SHA:·97e7aca6995a7bf9c507087699f104c0c30714539dc74ae2612be090ce5013d7·...·]-19">]</span><span·class="p">,</span><span·class="w">285 ····</span><span·class="p"·data-group-id="3995008285-24">{</span><span·class="ss">&#39;Button&#39;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="3995008285-24">}</span><span·class="p"·data-group-id="399500[·...·truncated·by·diffoscope;·len:·4,·SHA:·b69d122c8ac319ed82b2cb1ff6e2a10ae515a07abced7e6ccefc511218b1323e·...·]-19">]</span><span·class="p">,</span><span·class="w">
286 ···</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">286 ···</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
287 ···</span><span·class="p"·data-group-id="2612850194-25">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-26">[</span><span·class="p"·data-group-id="2612850194-27">{</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·559,·SHA:·6858da36a3d49dba974dcba3c7c2591b0b3e307740677943dac1bbbd61fa8769·...·]-17">}</span><span·class="p">.</span><span·class="w">287 ···</span><span·class="p"·data-group-id="3995008285-25">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-26">[</span><span·class="p"·data-group-id="3995008285-27">{</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·559,·SHA:·bba84af01c4f39b1f6430395609d8a9007474098920807480db2cc5d8b1610cb·...·]-17">}</span><span·class="p">.</span><span·class="w">
288 </span><span·class="p"·data-group-id="2612850194-29">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="2612850194-30">{</span><span·class="ss">state</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">288 </span><span·class="p"·data-group-id="3995008285-29">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="3995008285-30">{</span><span·class="ss">state</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">
289 ········</span><span·class="ss">buttonList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-31">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-32">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·203,·SHA:·d761943e5f2e4bad583979c6a57efb88def4fac938a26318558f6576ef33b94a·...·]-32">}</span><span·class="p">,</span><span·class="w">289 ········</span><span·class="ss">buttonList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-31">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-32">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·203,·SHA:·c2a51d0464d4d6b5ef92ac2e4d181d4733d51216f7ce85762e9816823a8ea017·...·]-32">}</span><span·class="p">,</span><span·class="w">
290 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-33">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·342fbf03f16bbf424130c083ee62a4ec6103f17071cee2dc29fc6201ad2d40bc·...·]-33">}</span><span·class="p">,</span><span·class="w">290 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-33">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·110b252f7bc20476d1c28084ee9d995d7a8184de4a3a97b962661831bf3569b4·...·]-33">}</span><span·class="p">,</span><span·class="w">
291 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-34">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·69225e2201a48477fb46f3fd59943b50ad8ab77e46338b62e57d3b15a6bbe5c0·...·]-34">}</span><span·class="p">,</span><span·class="w">291 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-34">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·cb06532cbd811313d5fac65940ef88f02767b4ea91096cea9b3099be01ba7b7a·...·]-34">}</span><span·class="p">,</span><span·class="w">
292 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-35">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·69225e2201a48477fb46f3fd59943b50ad8ab77e46338b62e57d3b15a6bbe5c0·...·]-35">}</span><span·class="p">,</span><span·class="w">292 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-35">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·cb06532cbd811313d5fac65940ef88f02767b4ea91096cea9b3099be01ba7b7a·...·]-35">}</span><span·class="p">,</span><span·class="w">
293 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-36">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">7</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·140,·SHA:·7e22d554399d26c67cd076458bcee8db0338c1b683acba8095ec6e98c8ee5877·...·]-31">]</span><span·class="p">,</span><span·class="w">293 ······················</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-36">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">7</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·140,·SHA:·951311a33c982f6fe158d7b904a6cc4cd229b42d51aed6e4a774a8c8f7836123·...·]-31">]</span><span·class="p">,</span><span·class="w">
294 ········</span><span·class="ss">enabled</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">294 ········</span><span·class="ss">enabled</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
295 ········</span><span·class="ss">actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-37">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-38">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="2612850194-39">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">295 ········</span><span·class="ss">actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-37">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-38">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="3995008285-39">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">
296 ··············································</span><span·class="ss">handle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-40">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·356,·SHA:·0c07b893063219f622bcdcef9293f30b76cab80d58b66649405a03d37bc2577d·...·]-29">}</span><span·class="gp·unselectable">296 ··············································</span><span·class="ss">handle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-40">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·356,·SHA:·84543068e187aedd3c16e27d4a0bb279c571d0182081654f4cd4cad46236f2f8·...·]-29">}</span><span·class="gp·unselectable">
297 9&gt;·</span><span·class="n">WindowBytes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="2612850194-41">(</span><span·class="ss">&#39;Window&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">WindowMsg</span><span·class="p"·data-group-id="2612850194-41">)</span><span·class="p">.</span><span·class="w">297 9&gt;·</span><span·class="n">WindowBytes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="3995008285-41">(</span><span·class="ss">&#39;Window&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">WindowMsg</span><span·class="p"·data-group-id="3995008285-41">)</span><span·class="p">.</span><span·class="w">
298 </span><span·class="p"·data-group-id="2612850194-42">&lt;&lt;</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">35</span><span·class="p">,</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">40</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">298 </span><span·class="p"·data-group-id="3995008285-42">&lt;&lt;</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">35</span><span·class="p">,</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">40</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">
299 ··</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2612850194-42">&gt;&gt;</span><span·class="gp·unselectable">299 ··</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3995008285-42">&gt;&gt;</span><span·class="gp·unselectable">
300 10&gt;·</span><span·class="p"·data-group-id="2612850194-43">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="2612850194-44">{</span><span·class="ss">buttonList</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·41d9ce577da4863bd71f58779ae3e735afa182581f27976872839c78b8ceb985·...·]-43">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">300 10&gt;·</span><span·class="p"·data-group-id="3995008285-43">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="3995008285-44">{</span><span·class="ss">buttonList</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·33afcd3564298902191d192f43633213b730d7eedba2e87d51f4cab191e6be29·...·]-43">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
301 </span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_Window_exclusive</span><span·class="p"·data-group-id="2612850194-46">(</span><span·class="n">WindowBytes</span><span·class="p"·data-group-id="2612850194-46">)</span><span·class="p">.</span><span·class="w">301 </span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_Window_exclusive</span><span·class="p"·data-group-id="3995008285-46">(</span><span·class="n">WindowBytes</span><span·class="p"·data-group-id="3995008285-46">)</span><span·class="p">.</span><span·class="w">
302 </span><span·class="p"·data-group-id="2612850194-47">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="2612850194-48">{</span><span·class="ss">state</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">302 </span><span·class="p"·data-group-id="3995008285-47">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="3995008285-48">{</span><span·class="ss">state</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">
303 ··················</span><span·class="ss">buttonList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-49">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-50">[</span><span·class="p"·data-group-id="2612850194-51">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">303 ··················</span><span·class="ss">buttonList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-49">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-50">[</span><span·class="p"·data-group-id="3995008285-51">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
304 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="2612850194-51">&gt;&gt;</span><span·class="p">,</span><span·class="w">304 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="3995008285-51">&gt;&gt;</span><span·class="p">,</span><span·class="w">
305 ·····················································</span><span·class="p"·data-group-id="2612850194-52">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">4</span><s[·...·truncated·by·diffoscope;·len:·188,·SHA:·f48118737c1ff82ad809578b7beb2603b1c27faec96e3f40bd368d9edd4139ed·...·]-52">&gt;&gt;</span><span·class="p">,</span><span·class="w">305 ·····················································</span><span·class="p"·data-group-id="3995008285-52">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">4</span><s[·...·truncated·by·diffoscope;·len:·188,·SHA:·7f77410683106acc13dc87bb102ab827c10b8b87dc22ca15db681489b512896d·...·]-52">&gt;&gt;</span><span·class="p">,</span><span·class="w">
306 ·····················································</span><span·class="p"·data-group-id="2612850194-53">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">5</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·307e46dc1f0d80e1e03a247f8e158c18b4d2a9a995acf87ae258f3f38dc91ce5·...·]-53">&gt;&gt;</span><span·class="p">,</span><span·class="w">306 ·····················································</span><span·class="p"·data-group-id="3995008285-53">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">5</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·b40d8c7853ee6674e7c64ff9af7b7ad28533cbcdff3aa4cf891265cdcb227b99·...·]-53">&gt;&gt;</span><span·class="p">,</span><span·class="w">
307 ·····················································</span><span·class="p"·data-group-id="2612850194-54">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">6</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·307e46dc1f0d80e1e03a247f8e158c18b4d2a9a995acf87ae258f3f38dc91ce5·...·]-54">&gt;&gt;</span><span·class="p">,</span><span·class="w">307 ·····················································</span><span·class="p"·data-group-id="3995008285-54">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">6</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·b40d8c7853ee6674e7c64ff9af7b7ad28533cbcdff3aa4cf891265cdcb227b99·...·]-54">&gt;&gt;</span><span·class="p">,</span><span·class="w">
308 ·····················································</span><span·class="p"·data-group-id="2612850194-55">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">7</span><s[·...·truncated·by·diffoscope;·len:·303,·SHA:·4e8578f6ef8a18e9d95f9bcacba3769890a6f0cbcdbb9e9998200e5bf82f7269·...·]-49">}</span><span·class="p">,</span><span·class="w">308 ·····················································</span><span·class="p"·data-group-id="3995008285-55">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">7</span><s[·...·truncated·by·diffoscope;·len:·303,·SHA:·5770440e8af1eecbad19007d1f2f6476bf439e234f69a3f1e2748594c1831d24·...·]-49">}</span><span·class="p">,</span><span·class="w">
309 ··················</span><span·class="ss">enabled</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">309 ··················</span><span·class="ss">enabled</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
310 ··················</span><span·class="ss">actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-56">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-57">&lt;&lt;</span><span·class="mi">163</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">310 ··················</span><span·class="ss">actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-56">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-57">&lt;&lt;</span><span·class="mi">163</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">
311 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">17</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="w">311 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">17</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="w">
312 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·class="p"·data-group-id="2612850194-57">&gt;&gt;</span><span·class="p"·data-group-id="2612850194-56">}</span><span·class="p"·data-group-id="2612850194-48">}</span><span·class="p"·data-group-id="2612850194-47">}</span><span·class="gp·unselectable">312 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·class="p"·data-group-id="3995008285-57">&gt;&gt;</span><span·class="p"·data-group-id="3995008285-56">}</span><span·class="p"·data-group-id="3995008285-48">}</span><span·class="p"·data-group-id="3995008285-47">}</span><span·class="gp·unselectable">
313 11&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="2612850194-58">(</span><span·class="n">UndecWindowKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id="2612850194-58">)</span><span·class="p">.</span><span·class="w">313 11&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="3995008285-58">(</span><span·class="n">UndecWindowKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id="3995008285-58">)</span><span·class="p">.</span><span·class="w">
314 </span><span·class="p"·data-group-id="2612850194-59">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-60">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·203,·SHA:·d761943e5f2e4bad583979c6a57efb88def4fac938a26318558f6576ef33b94a·...·]-60">}</span><span·class="p">,</span><span·class="w">314 </span><span·class="p"·data-group-id="3995008285-59">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-60">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·203,·SHA:·c2a51d0464d4d6b5ef92ac2e4d181d4733d51216f7ce85762e9816823a8ea017·...·]-60">}</span><span·class="p">,</span><span·class="w">
315 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-61">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·342fbf03f16bbf424130c083ee62a4ec6103f17071cee2dc29fc6201ad2d40bc·...·]-61">}</span><span·class="p">,</span><span·class="w">315 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-61">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·110b252f7bc20476d1c28084ee9d995d7a8184de4a3a97b962661831bf3569b4·...·]-61">}</span><span·class="p">,</span><span·class="w">
316 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-62">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·69225e2201a48477fb46f3fd59943b50ad8ab77e46338b62e57d3b15a6bbe5c0·...·]-62">}</span><span·class="p">,</span><span·class="w">316 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-62">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·cb06532cbd811313d5fac65940ef88f02767b4ea91096cea9b3099be01ba7b7a·...·]-62">}</span><span·class="p">,</span><span·class="w">
317 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-63">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·69225e2201a48477fb46f3fd59943b50ad8ab77e46338b62e57d3b15a6bbe5c0·...·]-63">}</span><span·class="p">,</span><span·class="w">317 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-63">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·cb06532cbd811313d5fac65940ef88f02767b4ea91096cea9b3099be01ba7b7a·...·]-63">}</span><span·class="p">,</span><span·class="w">
318 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-64">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">7</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·140,·SHA:·8ae5b4e043a0fedfa5a743764c49aa482963ed6f176251717fe58f4bcb176556·...·]-59">]</span><span·class="gp·unselectable">318 ·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-64">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">7</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·140,·SHA:·93b5037d5d9a9a81043b2ea5f2c0732187975b1c7bb5d39e657032260003a6f1·...·]-59">]</span><span·class="gp·unselectable">
319 12&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="2612850194-65">(</span><span·class="n">UndecWindowKey</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">hd</span><span·class="p"·data-group-id="2612850194-66">(</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·06187be905520fa768faaf49cbf8c1a22ce1cd31503f5545f2ea943f95cff8b7·...·]-65">)</span><span·class="p">.</span><span·class="w">319 12&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="3995008285-65">(</span><span·class="n">UndecWindowKey</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">hd</span><span·class="p"·data-group-id="3995008285-66">(</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·f149d217e3a6a3c1319869cc39d16cfdb19b66504ceda9abe638a4c72274f23e·...·]-65">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-67">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·69225e2201a48477fb46f3fd59943b50ad8ab77e46338b62e57d3b15a6bbe5c0·...·]-67">}</span><span·class="gp·unselectable">320 </span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-67">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·85,·SHA:·cb06532cbd811313d5fac65940ef88f02767b4ea91096cea9b3099be01ba7b7a·...·]-67">}</span><span·class="gp·unselectable">
321 13&gt;·</span><span·class="p"·data-group-id="2612850194-68">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="2612850194-69">{</span><span·class="ss">actions</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·518,·SHA:·e19d0ea6f8d84ff7f71178a3278818b15b0dbb9824771543703214358c90f873·...·]-71">)</span><span·class="p">.</span><span·class="w">321 13&gt;·</span><span·class="p"·data-group-id="3995008285-68">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="3995008285-69">{</span><span·class="ss">actions</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·518,·SHA:·bf2b03743bff1a2537c6a6af3691feeac4b7da993ae807c97533f5e46ec48dba·...·]-71">)</span><span·class="p">.</span><span·class="w">
322 </span><span·class="p"·data-group-id="2612850194-72">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="2612850194-73">{</span><span·class="ss">state</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">322 </span><span·class="p"·data-group-id="3995008285-72">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="o">#</span><span·class="ss">&#39;Status&#39;</span><span·class="p"·data-group-id="3995008285-73">{</span><span·class="ss">state</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">35</span><span·class="p">,</span><span·class="w">
323 ··················</span><span·class="ss">buttonList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-74">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-75">[</span><span·class="p"·data-group-id="2612850194-76">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">323 ··················</span><span·class="ss">buttonList</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-74">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-75">[</span><span·class="p"·data-group-id="3995008285-76">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
324 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="2612850194-76">&gt;&gt;</span><span·class="p">,</span><span·class="w">324 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="3995008285-76">&gt;&gt;</span><span·class="p">,</span><span·class="w">
325 ·····················································</span><span·class="p"·data-group-id="2612850194-77">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">4</span><s[·...·truncated·by·diffoscope;·len:·188,·SHA:·f48118737c1ff82ad809578b7beb2603b1c27faec96e3f40bd368d9edd4139ed·...·]-77">&gt;&gt;</span><span·class="p">,</span><span·class="w">325 ·····················································</span><span·class="p"·data-group-id="3995008285-77">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">4</span><s[·...·truncated·by·diffoscope;·len:·188,·SHA:·7f77410683106acc13dc87bb102ab827c10b8b87dc22ca15db681489b512896d·...·]-77">&gt;&gt;</span><span·class="p">,</span><span·class="w">
326 ·····················································</span><span·class="p"·data-group-id="2612850194-78">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">5</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·307e46dc1f0d80e1e03a247f8e158c18b4d2a9a995acf87ae258f3f38dc91ce5·...·]-78">&gt;&gt;</span><span·class="p">,</span><span·class="w">326 ·····················································</span><span·class="p"·data-group-id="3995008285-78">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">5</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·b40d8c7853ee6674e7c64ff9af7b7ad28533cbcdff3aa4cf891265cdcb227b99·...·]-78">&gt;&gt;</span><span·class="p">,</span><span·class="w">
327 ·····················································</span><span·class="p"·data-group-id="2612850194-79">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">6</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·307e46dc1f0d80e1e03a247f8e158c18b4d2a9a995acf87ae258f3f38dc91ce5·...·]-79">&gt;&gt;</span><span·class="p">,</span><span·class="w">327 ·····················································</span><span·class="p"·data-group-id="3995008285-79">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">6</span><s[·...·truncated·by·diffoscope;·len:·190,·SHA:·b40d8c7853ee6674e7c64ff9af7b7ad28533cbcdff3aa4cf891265cdcb227b99·...·]-79">&gt;&gt;</span><span·class="p">,</span><span·class="w">
328 ·····················································</span><span·class="p"·data-group-id="2612850194-80">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">7</span><s[·...·truncated·by·diffoscope;·len:·303,·SHA:·af098afb93a679472576733dbc4478c9461c4b2f1f09b6695d769b4b68113c0f·...·]-74">}</span><span·class="p">,</span><span·class="w">328 ·····················································</span><span·class="p"·data-group-id="3995008285-80">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">7</span><s[·...·truncated·by·diffoscope;·len:·303,·SHA:·266b9ae3292b6879111231ba5ef8e5edefbbb55308d5c149ec38809e9f96ac5e·...·]-74">}</span><span·class="p">,</span><span·class="w">
329 ··················</span><span·class="ss">enabled</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">329 ··················</span><span·class="ss">enabled</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
330 ··················</span><span·class="ss">actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2612850194-81">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-82">&lt;&lt;</span><span·class="mi">163</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">330 ··················</span><span·class="ss">actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3995008285-81">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-82">&lt;&lt;</span><span·class="mi">163</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">
331 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">17</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="w">331 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">161</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">17</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="w">
332 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·class="p"·data-group-id="2612850194-82">&gt;&gt;</span><span·class="p"·data-group-id="2612850194-81">}</span><span·class="p"·data-group-id="2612850194-73">}</span><span·class="p"·data-group-id="2612850194-72">}</span><span·class="gp·unselectable">332 ················································</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·class="p"·data-group-id="3995008285-82">&gt;&gt;</span><span·class="p"·data-group-id="3995008285-81">}</span><span·class="p"·data-group-id="3995008285-73">}</span><span·class="p"·data-group-id="3995008285-72">}</span><span·class="gp·unselectable">
333 14&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="2612850194-83">(</span><span·class="n">ChoiceKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChoiceUndec</span><span·class="p"·data-group-id="2612850194-83">)</span><span·class="p">.</span><span·class="w">333 14&gt;·</span><span·class="nc">&#39;GUI&#39;</span><span·class="p">:</span><span·class="nf">decode_part</span><span·class="p"·data-group-id="3995008285-83">(</span><span·class="n">ChoiceKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChoiceUndec</span><span·class="p"·data-group-id="3995008285-83">)</span><span·class="p">.</span><span·class="w">
334 </span><span·class="p"·data-group-id="2612850194-84">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="2612850194-85">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="2612850194-86">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">334 </span><span·class="p"·data-group-id="3995008285-84">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="3995008285-85">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="3995008285-86">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">,</span><span·class="w">
335 ····························</span><span·class="ss">handle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2612850194-87">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·248,·SHA:·ef1161473874e415e6d3c72bef182fbf57b08cf23e5105e5cd5606ece0960737·...·]-84">}</span></code></pre><h2·id="selective-decode"·class="section-heading">335 ····························</span><span·class="ss">handle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3995008285-87">{</span><span·class="ss">number</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">17</span><span·class="p">,</span><span·class="ss">on</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·248,·SHA:·270f4f402831d9b1e1c177910320c0406b60ee726550b1cf72bc3b579d21b802·...·]-84">}</span></code></pre><h2·id="selective-decode"·class="section-heading">
336 ··<a·href="#selective-decode"·class="hover-link">336 ··<a·href="#selective-decode"·class="hover-link">
337 ····<i·class="ri-link-m"·aria-hidden="true"></i>337 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Max diff block lines reached; 37499/119742 bytes (31.32%) of diff not shown.
6.44 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.1/doc/html/asn1ct.html
    
Offset 481, 17 lines modifiedOffset 481, 17 lines modified
  
481 <p>Performs·a·test·of·encode·and·decode·of·types·in·<code·class="inline">Module</code>.</p><p>The·generated·functions·are·called·by·this·function.·This·function·is481 <p>Performs·a·test·of·encode·and·decode·of·types·in·<code·class="inline">Module</code>.</p><p>The·generated·functions·are·called·by·this·function.·This·function·is
482 useful·for·testing·to·ensure·that·the·generated·encode·and·decode482 useful·for·testing·to·ensure·that·the·generated·encode·and·decode
483 functions·as·well·as·the·general·runtime·support·work·as·expected.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Currently,·the·<code·class="inline">test</code>·functions·have·many·limitations.·Essentially,·they·will483 functions·as·well·as·the·general·runtime·support·work·as·expected.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Currently,·the·<code·class="inline">test</code>·functions·have·many·limitations.·Essentially,·they·will
484 mostly·work·for·old·specifications·based·on·the·1997·standard·for·ASN.1,·but484 mostly·work·for·old·specifications·based·on·the·1997·standard·for·ASN.1,·but
485 not·for·most·modern-style·applications.·Another·limitation·is·that·the·<code·class="inline">test</code>485 not·for·most·modern-style·applications.·Another·limitation·is·that·the·<code·class="inline">test</code>
486 functions·may·not·work·if·options·that·change·code·generations·strategies·such486 functions·may·not·work·if·options·that·change·code·generations·strategies·such
487 as·the·options·<code·class="inline">macro_name_prefix</code>·and·<code·class="inline">record_name_prefix</code>·have·been·used.</p></section><ul><li><a·href="#test/1"><code·class="inline">test/1</code></a>·iterates·over·all·types·in·<code·class="inline">Module</code>.</li><li><a·href="#test/2"><code·class="inline">test/2</code></a>·tests·type·<code·class="inline">Type</code>·with·a·random·value.</li><li><a·href="#test/3"><code·class="inline">test/3</code></a>·tests·type·<code·class="inline">Type</code>·with·<code·class="inline">Value</code>.</li></ul><p>Schematically,·the·following·occurs·for·each·type·in·the·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3367668584-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="3367668584-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·273,·SHA:·98113b34ecf466177952a81d858d3f7b2a54c6ec37103d3ca2ca5297622d7e7f·...·]-2">)</span><span·class="p">,</span><span·class="w">487 as·the·options·<code·class="inline">macro_name_prefix</code>·and·<code·class="inline">record_name_prefix</code>·have·been·used.</p></section><ul><li><a·href="#test/1"><code·class="inline">test/1</code></a>·iterates·over·all·types·in·<code·class="inline">Module</code>.</li><li><a·href="#test/2"><code·class="inline">test/2</code></a>·tests·type·<code·class="inline">Type</code>·with·a·random·value.</li><li><a·href="#test/3"><code·class="inline">test/3</code></a>·tests·type·<code·class="inline">Type</code>·with·<code·class="inline">Value</code>.</li></ul><p>Schematically,·the·following·occurs·for·each·type·in·the·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3849562259-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="3849562259-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·273,·SHA:·8b9a29acb2fdb414df9156395dbcd16fcd90cae38eb989d77d0767defc58dc9a·...·]-2">)</span><span·class="p">,</span><span·class="w">
488 </span><span·class="p"·data-group-id="3367668584-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bytes</span><span·class="p"·data-group-id="3367668584-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·272,·SHA:·7b84c032e70afed95dda51292feeb429ee1443d3bc91089e3bf337c653a30652·...·]-4">)</span><span·class="p">,</span><span·class="w">488 </span><span·class="p"·data-group-id="3849562259-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bytes</span><span·class="p"·data-group-id="3849562259-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·272,·SHA:·42709c35efd9c4977e1e282fbd21d4b35b3206179a8813419f0549744d88aa73·...·]-4">)</span><span·class="p">,</span><span·class="w">
489 </span><span·class="p"·data-group-id="3367668584-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="3367668584-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·272,·SHA:·a8d1db2902231eee3a4ce246513c2e7e6e3aa592e1b96a264e83150339237d76·...·]-6">)</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">test</code>·functions·use·the·<code·class="inline">*.asn1db</code>·files·for·all·included·modules.·If·they489 </span><span·class="p"·data-group-id="3849562259-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="3849562259-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·272,·SHA:·bc07b72f3169cae0c66b20b5e5dfc4115d42929c74985cef8a7624e23effac3c·...·]-6">)</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">test</code>·functions·use·the·<code·class="inline">*.asn1db</code>·files·for·all·included·modules.·If·they
490 are·located·in·a·different·directory·than·the·current·working·directory,·use·the490 are·located·in·a·different·directory·than·the·current·working·directory,·use·the
491 <code·class="inline">include</code>·option·to·add·paths.·This·is·only·needed·when·automatically·generating491 <code·class="inline">include</code>·option·to·add·paths.·This·is·only·needed·when·automatically·generating
492 values.·For·static·values·using·<code·class="inline">Value</code>·no·options·are·needed.</p>492 values.·For·static·values·using·<code·class="inline">Value</code>·no·options·are·needed.</p>
493 ··</section>493 ··</section>
494 </section>494 </section>
495 <section·class="detail"·id="value/2">495 <section·class="detail"·id="value/2">
  
686 B
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/.build
    
Offset 41, 15 lines modifiedOffset 41, 15 lines modified
41 dist/lato-latin-300-normal-YUMVEFOL.woff241 dist/lato-latin-300-normal-YUMVEFOL.woff2
42 dist/lato-latin-400-normal-W7754I4D.woff242 dist/lato-latin-400-normal-W7754I4D.woff2
43 dist/lato-latin-700-normal-2XVSBPG4.woff243 dist/lato-latin-700-normal-2XVSBPG4.woff2
44 dist/lato-latin-ext-300-normal-VPGGJKJL.woff244 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
45 dist/lato-latin-ext-400-normal-N27NCBWW.woff245 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
46 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff246 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
47 dist/remixicon-NKANDIL5.woff247 dist/remixicon-NKANDIL5.woff2
48 dist/search_data-2059C099.js48 dist/search_data-F658300A.js
49 dist/sidebar_items-BF1F6C0F.js49 dist/sidebar_items-BF1F6C0F.js
50 event_handler_chapter.html50 event_handler_chapter.html
51 example_chapter.html51 example_chapter.html
52 getting_started_chapter.html52 getting_started_chapter.html
53 index.html53 index.html
54 install_chapter.html54 install_chapter.html
55 introduction.html55 introduction.html
10.3 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/basics_chapter.html
    
Offset 211, 23 lines modifiedOffset 211, 23 lines modified
211 <a·href="write_test_chapter.html#intro">Writing·Test·Suites</a>.</p><p>A·test·case·is·considered·successful·if·it·returns·to·the·caller,·no·matter·what211 <a·href="write_test_chapter.html#intro">Writing·Test·Suites</a>.</p><p>A·test·case·is·considered·successful·if·it·returns·to·the·caller,·no·matter·what
212 the·returned·value·is.·However,·a·few·return·values·have·special·meaning·as212 the·returned·value·is.·However,·a·few·return·values·have·special·meaning·as
213 follows:</p><ul><li><code·class="inline">{skip,Reason}</code>·indicates·that·the·test·case·is·skipped.</li><li><code·class="inline">{comment,Comment}</code>·prints·a·comment·in·the·log·for·the·test·case.</li><li><code·class="inline">{save_config,Config}</code>·makes·the·<code·class="inline">Common·Test</code>·test·server·pass·<code·class="inline">Config</code>·to213 follows:</p><ul><li><code·class="inline">{skip,Reason}</code>·indicates·that·the·test·case·is·skipped.</li><li><code·class="inline">{comment,Comment}</code>·prints·a·comment·in·the·log·for·the·test·case.</li><li><code·class="inline">{save_config,Config}</code>·makes·the·<code·class="inline">Common·Test</code>·test·server·pass·<code·class="inline">Config</code>·to
214 the·next·test·case.</li></ul><p>A·test·case·failure·is·specified·as·a·runtime·error·(a·crash),·no·matter·what214 the·next·test·case.</li></ul><p>A·test·case·failure·is·specified·as·a·runtime·error·(a·crash),·no·matter·what
215 the·reason·for·termination·is.·If·you·use·Erlang·pattern·matching·effectively,215 the·reason·for·termination·is.·If·you·use·Erlang·pattern·matching·effectively,
216 you·can·take·advantage·of·this·property.·The·result·is·concise·and·readable·test216 you·can·take·advantage·of·this·property.·The·result·is·concise·and·readable·test
217 case·functions·that·look·much·more·like·scripts·than·actual·programs.·A·simple217 case·functions·that·look·much·more·like·scripts·than·actual·programs.·A·simple
218 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">session</span><span·class="p"·data-group-id="9504681663-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="9504681663-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">session</span><span·class="p"·data-group-id="0485495538-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="0485495538-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 ····</span><span·class="p"·data-group-id="9504681663-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="9504681663-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_ser[·...·truncated·by·diffoscope;·len:·157,·SHA:·d4cf1a890679dbc8e146c59eb4870f2b248374b89e5c1aa6d04104fc5fa49a63·...·]-3">)</span><span·class="p">,</span><span·class="w">219 ····</span><span·class="p"·data-group-id="0485495538-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="0485495538-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_ser[·...·truncated·by·diffoscope;·len:·157,·SHA:·4d3f2eeab9fac2032f0bb6b70cef9104964cea993d99c3a5267e9985f5b5a6d7·...·]-3">)</span><span·class="p">,</span><span·class="w">
220 ····</span><span·class="p"·data-group-id="9504681663-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="9504681663-5">[</span><span·class="p"·data-group-id="9504681663-5">]</span><span·class="p"·data-group-id="9504681663-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·be4423bcac683d55c242999d6892eff8a02380859e55e96a33d0ce225553bb7e·...·]-6">)</span><span·class="p">,</span><span·class="w">220 ····</span><span·class="p"·data-group-id="0485495538-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="0485495538-5">[</span><span·class="p"·data-group-id="0485495538-5">]</span><span·class="p"·data-group-id="0485495538-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·9f69eef2a8dedcd5f716369f32d077e382e68352c022bae041a9a29945711509·...·]-6">)</span><span·class="p">,</span><span·class="w">
221 ····</span><span·class="n">MyId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9504681663-7">(</span><span·class="p"·data-group-id="9504681663-7">)</span><span·class="p">,</span><span·class="w">221 ····</span><span·class="n">MyId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0485495538-7">(</span><span·class="p"·data-group-id="0485495538-7">)</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="ss">connected</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="9504681663-8">(</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyId</span><span·class="p"·data-group-id="9504681663-8">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="ss">connected</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="0485495538-8">(</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyId</span><span·class="p"·data-group-id="0485495538-8">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="9504681663-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="9504681663-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="9504681663-10">]</span><span·class="p"·data-group-id="9504681663-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·f1f270c3a04f28065a07ec365fd9267cc7429f251adfc0d449e4c106d4d80671·...·]-11">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="0485495538-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="0485495538-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="0485495538-10">]</span><span·class="p"·data-group-id="0485495538-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·d4606771ed92636b31e1a744792cf3f780e884ec40a78dda4739b3a93723d914·...·]-11">)</span><span·class="p">,</span><span·class="w">
224 ····</span><span·class="ss">disconnected</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="9504681663-12">(</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyId</span><span·class="p"·data-group-id="9504681663-12">)</span><span·class="p">,</span><span·class="w">224 ····</span><span·class="ss">disconnected</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="0485495538-12">(</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyId</span><span·class="p"·data-group-id="0485495538-12">)</span><span·class="p">,</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="9504681663-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="9504681663-14">[</span><span·class="p"·data-group-id="9504681663-14">]</span><span·class="p"·data-group-id="9504681663-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·72a754e006636feb2684320ab10631c66720f209635781ef7fb20012a44d45fb·...·]-15">)</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="p"·data-group-id="0485495538-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="0485495538-14">[</span><span·class="p"·data-group-id="0485495538-14">]</span><span·class="p"·data-group-id="0485495538-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·30bb7bcbb243a4cdee73a41fe576257697f7e4edf4d327ccdb8ee0bad4217530·...·]-15">)</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="ss">stopped</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="9504681663-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="9504681663-16">)</span><span·class="p">.</span></code></pre><p>As·a·test·suite·runs,·all·information·(including·output·to·<code·class="inline">stdout</code>)·is·recorded226 ····</span><span·class="ss">stopped</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="0485495538-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="0485495538-16">)</span><span·class="p">.</span></code></pre><p>As·a·test·suite·runs,·all·information·(including·output·to·<code·class="inline">stdout</code>)·is·recorded
227 in·many·different·log·files.·A·minimum·of·information·is·displayed·in·the·user227 in·many·different·log·files.·A·minimum·of·information·is·displayed·in·the·user
228 console·(only·start·and·stop·information,·plus·a·note·for·each·failed·test228 console·(only·start·and·stop·information,·plus·a·note·for·each·failed·test
229 case).</p><p>The·result·from·each·test·case·is·recorded·in·a·dedicated·HTML·log·file,·created229 case).</p><p>The·result·from·each·test·case·is·recorded·in·a·dedicated·HTML·log·file,·created
230 for·the·particular·test·run.·An·overview·page·displays·each·test·case230 for·the·particular·test·run.·An·overview·page·displays·each·test·case
231 represented·by·a·table·row·showing·total·execution·time,·if·the·case·was231 represented·by·a·table·row·showing·total·execution·time,·if·the·case·was
232 successful,·failed,·or·skipped,·plus·an·optional·user·comment.·For·a·failed·test232 successful,·failed,·or·skipped,·plus·an·optional·user·comment.·For·a·failed·test
233 case,·the·reason·for·termination·is·also·printed·in·the·comment·field.·The233 case,·the·reason·for·termination·is·also·printed·in·the·comment·field.·The
1.11 MB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/common_test.epub
7.43 KB
zipinfo {}
Max HTML report size reached
268 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:47:38,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:05:52,·uncompressed·size·20,·method=store
109 KB
OEBPS/write_test_chapter.xhtml
Max HTML report size reached
8.21 KB
OEBPS/unix_telnet.xhtml
Max HTML report size reached
199 KB
OEBPS/run_test_chapter.xhtml
Max HTML report size reached
25.0 KB
OEBPS/getting_started_chapter.xhtml
Max HTML report size reached
77.3 KB
OEBPS/example_chapter.xhtml
Max HTML report size reached
10.1 KB
OEBPS/event_handler_chapter.xhtml
Max HTML report size reached
55.8 KB
OEBPS/dependencies_chapter.xhtml
Max HTML report size reached
32.3 KB
OEBPS/ct_telnet.xhtml
Max HTML report size reached
5.65 KB
OEBPS/ct_ssh.xhtml
Max HTML report size reached
9.73 KB
OEBPS/ct_snmp.xhtml
Max HTML report size reached
4.48 KB
OEBPS/ct_run_cmd.xhtml
    
Offset 142, 18 lines modifiedOffset 142, 18 lines modified
142 ··[-keep_logs·all·|·NLogs]</code></pre><h2·id="run-common-test-in-interactive-mode"·class="section-heading">142 ··[-keep_logs·all·|·NLogs]</code></pre><h2·id="run-common-test-in-interactive-mode"·class="section-heading">
143 ··<a·href="#run-common-test-in-interactive-mode"·class="hover-link">143 ··<a·href="#run-common-test-in-interactive-mode"·class="hover-link">
144 ····<i·class="ri-link-m"·aria-hidden="true"></i>144 ····<i·class="ri-link-m"·aria-hidden="true"></i>
145 ··</a>145 ··</a>
146 ··<span·class="text">Run·Common·Test·in·Interactive·Mode</span>146 ··<span·class="text">Run·Common·Test·in·Interactive·Mode</span>
147 </h2>147 </h2>
148 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="ss">ct_run</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">shell</span><span·class="w">148 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="ss">ct_run</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">shell</span><span·class="w">
149 ··</span><span·class="p"·data-group-id="6480208997-1">[</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="n">ConfigFile1</span><span·class="w">·</span><span·class="n">ConfigFile2</span><span·class="w">·</span><span·class="p">.</span><span·class="p">[·...·truncated·by·diffoscope;·len:·130,·SHA:·c57da36997710b645c88fdcebddf479680d9b30496eae6dd9cb44ddf75b28b19·...·]7-1">]</span><span·class="w">149 ··</span><span·class="p"·data-group-id="2011192917-1">[</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="n">ConfigFile1</span><span·class="w">·</span><span·class="n">ConfigFile2</span><span·class="w">·</span><span·class="p">.</span><span·class="p">[·...·truncated·by·diffoscope;·len:·130,·SHA:·06cf01d503d84e6fa6452d55db4ede092ef0245e0f50476e35ed76c656da68b9·...·]7-1">]</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="6480208997-2">[</span><span·class="o">-</span><span·class="ss">userconfig</span><span·class="w">·</span><span·class="n">CallbackModule1</span><span·class="w">·</span><span·class="n">ConfigString1</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModule2</span><span·class="w">150 ··</span><span·class="p"·data-group-id="2011192917-2">[</span><span·class="o">-</span><span·class="ss">userconfig</span><span·class="w">·</span><span·class="n">CallbackModule1</span><span·class="w">·</span><span·class="n">ConfigString1</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModule2</span><span·class="w">
151 ···</span><span·class="n">ConfigString2</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModuleN</span><span·class="w">·</span><span·class="n">ConfigStringN</span><span·class="p"·data-group-id="6480208997-2">]</span><span·class="w">151 ···</span><span·class="n">ConfigString2</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModuleN</span><span·class="w">·</span><span·class="n">ConfigStringN</span><span·class="p"·data-group-id="2011192917-2">]</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="6480208997-3">[</span><span·class="o">-</span><span·class="ss">decrypt_key</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="6480208997-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·207,·SHA:·ccb8205d4907f8436bc302a053c7065af7bd9422695b13f40562e543866cefee·...·]7-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">152 ··</span><span·class="p"·data-group-id="2011192917-3">[</span><span·class="o">-</span><span·class="ss">decrypt_key</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="2011192917-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·207,·SHA:·4b47ab646831f329a4b5ef4e3df682590308aa56deacbd9aa45bccd9e5d474a8·...·]7-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">
153 ··<a·href="#start-a-common-test-master-node"·class="hover-link">153 ··<a·href="#start-a-common-test-master-node"·class="hover-link">
154 ····<i·class="ri-link-m"·aria-hidden="true"></i>154 ····<i·class="ri-link-m"·aria-hidden="true"></i>
155 ··</a>155 ··</a>
156 ··<span·class="text">Start·a·Common·Test·Master·Node</span>156 ··<span·class="text">Start·a·Common·Test·Master·Node</span>
157 </h2>157 </h2>
158 <pre><code·class="text">·ct_run·-ctmaster</code></pre><h2·id="see-also"·class="section-heading">158 <pre><code·class="text">·ct_run·-ctmaster</code></pre><h2·id="see-also"·class="section-heading">
159 ··<a·href="#see-also"·class="hover-link">159 ··<a·href="#see-also"·class="hover-link">
21.6 KB
OEBPS/ct_property_test_chapter.xhtml
Max HTML report size reached
23.6 KB
OEBPS/ct_property_test.xhtml
Max HTML report size reached
27.5 KB
OEBPS/ct_netconfc.xhtml
Max HTML report size reached
34.2 KB
OEBPS/ct_master_chapter.xhtml
Max HTML report size reached
2.21 KB
OEBPS/ct_master.xhtml
    
Offset 313, 15 lines modifiedOffset 313, 15 lines modified
313 ······<div·class="specs">313 ······<div·class="specs">
  
314 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_event_mgr_ref()·->·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>().</pre>314 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_event_mgr_ref()·->·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>().</pre>
  
315 ······</div>315 ······</div>
  
316 <p>Gets·a·reference·to·the·<code·class="inline">Common·Test</code>·master·event·manager.·The·reference·can·be316 <p>Gets·a·reference·to·the·<code·class="inline">Common·Test</code>·master·event·manager.·The·reference·can·be
317 used·to,·for·example,·add·a·user-specific·event·handler·while·tests·are·running.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">gen_event</samp><samp·class="p">:</samp><samp·class="nf">add_handler</samp><samp·class="p"·data-group-id="9728418512-1">(</samp><samp·class="nc">ct_master</samp><samp·class="p">:</samp><samp·class="nf">get_event_mgr_ref</samp><samp·class="p"·data-group-id="9728418512-2">(</samp><samp·class="p"·data-group-id="9728418512-2">)</samp><samp·class="p">,</samp><samp·[·...·truncated·by·diffoscope;·len:·244,·SHA:·5e18b8860bd1dbe566046e41e06fc598813db1ba4006cd946e47fc2766fe1d55·...·]-1">)</samp></code></pre>317 used·to,·for·example,·add·a·user-specific·event·handler·while·tests·are·running.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">gen_event</samp><samp·class="p">:</samp><samp·class="nf">add_handler</samp><samp·class="p"·data-group-id="3528341007-1">(</samp><samp·class="nc">ct_master</samp><samp·class="p">:</samp><samp·class="nf">get_event_mgr_ref</samp><samp·class="p"·data-group-id="3528341007-2">(</samp><samp·class="p"·data-group-id="3528341007-2">)</samp><samp·class="p">,</samp><samp·[·...·truncated·by·diffoscope;·len:·244,·SHA:·a923dad36d7385da0bf35354aaeb786b6cbd1c000bc92e774cdd51120169671d·...·]-1">)</samp></code></pre>
318 ··</section>318 ··</section>
319 </section>319 </section>
320 <section·class="detail"·id="progress/0">320 <section·class="detail"·id="progress/0">
  
321 ··<div·class="detail-header">321 ··<div·class="detail-header">
322 ····<a·href="#progress/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">322 ····<a·href="#progress/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
323 ······<i·class="ri-link-m"·aria-hidden="true"></i>323 ······<i·class="ri-link-m"·aria-hidden="true"></i>
60.0 KB
OEBPS/ct_hooks_chapter.xhtml
Max HTML report size reached
4.53 KB
OEBPS/ct_ftp.xhtml
    
Offset 446, 18 lines modifiedOffset 446, 18 lines modified
446 ·················LocalFile·::·<a·href="../../../../lib/kernel/doc/html/file.html#t:filename/0">file:filename</a>(),446 ·················LocalFile·::·<a·href="../../../../lib/kernel/doc/html/file.html#t:filename/0">file:filename</a>(),
447 ·················RemoteFile·::·<a·href="../../../../lib/kernel/doc/html/file.html#t:filename/0">file:filename</a>(),447 ·················RemoteFile·::·<a·href="../../../../lib/kernel/doc/html/file.html#t:filename/0">file:filename</a>(),
448 ·················Reason·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>448 ·················Reason·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
449 ······</div>449 ······</div>
  
450 <p>Opens·an·FTP·connection·and·sends·a·file·to·the·remote·host.</p><p><code·class="inline">LocalFile</code>·and·<code·class="inline">RemoteFile</code>·must·be·absolute·paths.</p><p>If·the·target·host·is·a·&quot;special&quot;·node,·the·FTP·address·must·be·specified·in·the450 <p>Opens·an·FTP·connection·and·sends·a·file·to·the·remote·host.</p><p><code·class="inline">LocalFile</code>·and·<code·class="inline">RemoteFile</code>·must·be·absolute·paths.</p><p>If·the·target·host·is·a·&quot;special&quot;·node,·the·FTP·address·must·be·specified·in·the
451 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="3560245760-1">{</samp><samp·class="nb">node</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="3560245760-2">[</samp><samp·class="p"·data-group-id="3560245760-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</samp><samp·class="p"·data-group-id="3560245760-3">}</samp><samp·class="p"·data-group-id="3560245760-2">]</samp><samp·class="p"·data-group-id="3560245760-1">}</samp><samp·class="p">.</samp></code></pre><p>If·the·target·host·is·something·else,·for·example,·a·UNIX·host,·the 
452 configuration·file·must·also·include·the·username·and·password·(both·strings):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="1988441531-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="198844153[·...·truncated·by·diffoscope;·len:·239,·SHA:·e03ff35101df06850b07e986d1adfe4b697293be8d7db14514d920d7f228162b·...·]451 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="5604216999-1">{</samp><samp·class="nb">node</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="5604216999-2">[</samp><samp·class="p"·data-group-id="5604[·...·truncated·by·diffoscope;·len:·364,·SHA:·7388c8cc9b4b674064588e787d648a199811a056bef3000092b3004070946d05·...·]
 452 configuration·file·must·also·include·the·username·and·password·(both·strings):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="6779096852-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="6779096852-2">[</samp><samp·class="p"·data-group-id="6779096852-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</samp><samp·class="p"·data-group-id="6779096852-3">}</samp><samp·class="p">,</samp><samp·class="w">
453 ·······</samp><samp·class="p"·data-group-id="1988441531-4">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">Username</samp><samp·class="p"·data-group-id="1988441531-4">}</samp><samp·class="p">,</samp><samp·class="w">453 ·······</samp><samp·class="p"·data-group-id="6779096852-4">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">Username</samp><samp·class="p"·data-group-id="6779096852-4">}</samp><samp·class="p">,</samp><samp·class="w">
454 ·······</samp><samp·class="p"·data-group-id="1988441531-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="1988441531-5">}</samp><samp·class="p"·data-group-id="1988441531-2">]</samp><samp·class="p"·data-group-id="1988441531-1">}</samp><samp·class="p">.</samp></code></pre><p>See·also·<a·href="ct.xhtml#require/2"><code·class="inline">ct:require/2</code></a>.</p>454 ·······</samp><samp·class="p"·data-group-id="6779096852-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="6779096852-5">}</samp><samp·class="p"·data-group-id="6779096852-2">]</samp><samp·class="p"·data-group-id="6779096852-1">}</samp><samp·class="p">.</samp></code></pre><p>See·also·<a·href="ct.xhtml#require/2"><code·class="inline">ct:require/2</code></a>.</p>
455 ··</section>455 ··</section>
456 </section>456 </section>
457 <section·class="detail"·id="recv/2">457 <section·class="detail"·id="recv/2">
  
458 ··<div·class="detail-header">458 ··<div·class="detail-header">
459 ····<a·href="#recv/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">459 ····<a·href="#recv/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
460 ······<i·class="ri-link-m"·aria-hidden="true"></i>460 ······<i·class="ri-link-m"·aria-hidden="true"></i>
39.6 KB
OEBPS/ct.xhtml
Max HTML report size reached
15.3 KB
OEBPS/cover_chapter.xhtml
Max HTML report size reached
2.53 KB
OEBPS/content.opf
2.5 KB
OEBPS/content.opf
Max HTML report size reached
80.1 KB
OEBPS/config_file_chapter.xhtml
Max HTML report size reached
10.2 KB
OEBPS/basics_chapter.xhtml
Max HTML report size reached
80.2 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/config_file_chapter.html
    
Offset 138, 16 lines modifiedOffset 138, 16 lines modified
138 properties·without·modifying·the·test·suites·using·the·data.·Examples·of138 properties·without·modifying·the·test·suites·using·the·data.·Examples·of
139 configuration·data·follows:</p><ul><li>Addresses·to·the·test·plant·or·other·instruments</li><li>User·login·information</li><li>Names·of·files·needed·by·the·test</li><li>Names·of·programs·to·be·executed·during·the·test</li><li>Any·other·variable·needed·by·the·test</li></ul><h2·id="syntax"·class="section-heading">139 configuration·data·follows:</p><ul><li>Addresses·to·the·test·plant·or·other·instruments</li><li>User·login·information</li><li>Names·of·files·needed·by·the·test</li><li>Names·of·programs·to·be·executed·during·the·test</li><li>Any·other·variable·needed·by·the·test</li></ul><h2·id="syntax"·class="section-heading">
140 ··<a·href="#syntax"·class="hover-link">140 ··<a·href="#syntax"·class="hover-link">
141 ····<i·class="ri-link-m"·aria-hidden="true"></i>141 ····<i·class="ri-link-m"·aria-hidden="true"></i>
142 ··</a>142 ··</a>
143 ··<span·class="text">Syntax</span>143 ··<span·class="text">Syntax</span>
144 </h2>144 </h2>
145 <p>A·configuration·file·can·contain·any·number·of·elements·of·the·type:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0197894487-1">{</span><span·class="n">CfgVarName</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="0197894487-1">}</span><span·class="p">.</span></code></pre><p>where</p><pre><code·class="makeup·erlang"·translate="no">[·...·truncated·by·diffoscope;·len:·227,·SHA:·c99034fb8c4eed12254a4a9415e06f7a04f3b2c51013f59c9eba55f86e73a004·...·]-1">)</span><span·class="w">145 <p>A·configuration·file·can·contain·any·number·of·elements·of·the·type:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0879115334-1">{</span><span·class="n">CfgVarName</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="0879115334-1">}</span><span·class="p">.</span></code></pre><p>where</p><pre><code·class="makeup·erlang"·translate="no">[·...·truncated·by·diffoscope;·len:·227,·SHA:·3c66d1c818871287bbfe8179749a19915990dfde576e843f89091b8b63ffeecc·...·]-1">)</span><span·class="w">
146 </span><span·class="n">Value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="2668976874-2">(</span><span·class="p"·data-group-id="2668976874-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2668976874-3">[</span><span·class="p"·data-group-id="2668976874-4">{</span><sp[·...·truncated·by·diffoscope;·len:·176,·SHA:·bfd51477645064afd24290823a45fe5b72ed6abd1847bb7f9f14e04abd52eefe·...·]-3">]</span></code></pre><h2·id="requiring-and-reading-configuration-data"·class="section-heading">146 </span><span·class="n">Value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="5506226408-2">(</span><span·class="p"·data-group-id="5506226408-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5506226408-3">[</span><span·class="p"·data-group-id="5506226408-4">{</span><sp[·...·truncated·by·diffoscope;·len:·176,·SHA:·58da65270255a732174b27c09ed7793df6f8f6993d66a3a1eb804e23a79f68ff·...·]-3">]</span></code></pre><h2·id="requiring-and-reading-configuration-data"·class="section-heading">
147 ··<a·href="#requiring-and-reading-configuration-data"·class="hover-link">147 ··<a·href="#requiring-and-reading-configuration-data"·class="hover-link">
148 ····<i·class="ri-link-m"·aria-hidden="true"></i>148 ····<i·class="ri-link-m"·aria-hidden="true"></i>
149 ··</a>149 ··</a>
150 ··<span·class="text">Requiring·and·Reading·Configuration·Data</span>150 ··<span·class="text">Requiring·and·Reading·Configuration·Data</span>
151 </h2>151 </h2>
152 <p><a·href=""·id="require_config_data"></a></p><p>In·a·test·suite,·one·must·<em>require</em>·that·a·configuration·variable·(<code·class="inline">CfgVarName</code>152 <p><a·href=""·id="require_config_data"></a></p><p>In·a·test·suite,·one·must·<em>require</em>·that·a·configuration·variable·(<code·class="inline">CfgVarName</code>
153 in·the·previous·definition)·exists·before·attempting·to·read·the·associated153 in·the·previous·definition)·exists·before·attempting·to·read·the·associated
Offset 166, 21 lines modifiedOffset 166, 21 lines modified
166 <code·class="inline">{require,AliasName,CfgVarName}</code>.·The·arguments·<code·class="inline">AliasName</code>·and·<code·class="inline">CfgVarName</code>·are166 <code·class="inline">{require,AliasName,CfgVarName}</code>.·The·arguments·<code·class="inline">AliasName</code>·and·<code·class="inline">CfgVarName</code>·are
167 the·same·as·the·arguments·to·<a·href="ct.html#require/1"><code·class="inline">ct:require/1,2</code></a>.·<code·class="inline">AliasName</code>167 the·same·as·the·arguments·to·<a·href="ct.html#require/1"><code·class="inline">ct:require/1,2</code></a>.·<code·class="inline">AliasName</code>
168 becomes·an·alias·for·the·configuration·variable,·and·can·be·used·as·reference·to168 becomes·an·alias·for·the·configuration·variable,·and·can·be·used·as·reference·to
169 the·configuration·data·value.·The·configuration·variable·can·be·associated·with169 the·configuration·data·value.·The·configuration·variable·can·be·associated·with
170 any·number·of·alias·names,·but·each·name·must·be·unique·within·the·same·test170 any·number·of·alias·names,·but·each·name·must·be·unique·within·the·same·test
171 suite.·The·two·main·uses·for·alias·names·follows:</p><ul><li>To·identify·connections·(described·later).</li><li>To·help·adapt·configuration·data·to·a·test·suite·(or·test·case)·and·improve171 suite.·The·two·main·uses·for·alias·names·follows:</p><ul><li>To·identify·connections·(described·later).</li><li>To·help·adapt·configuration·data·to·a·test·suite·(or·test·case)·and·improve
172 readability.</li></ul><p>To·read·the·value·of·a·configuration·variable,·use·function172 readability.</li></ul><p>To·read·the·value·of·a·configuration·variable,·use·function
173 <a·href="ct.html#get_config/1"><code·class="inline">get_config/1,2,3</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="1818822243-1">(</span><span·class="p"·data-group-id="1818822243-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 <a·href="ct.html#get_config/1"><code·class="inline">get_config/1,2,3</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="7961208946-1">(</span><span·class="p"·data-group-id="7961208946-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="1818822243-2">[</span><span·class="p"·data-group-id="1818822243-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;CO[·...·truncated·by·diffoscope;·len:·124,·SHA:·9968c7a5e90e23685330c74fe00ef779c6e966b14173752e58e3c5453c80d527·...·]-2">]</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="7961208946-2">[</span><span·class="p"·data-group-id="7961208946-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;CO[·...·truncated·by·diffoscope;·len:·124,·SHA:·3cb5259d77c7fbc8d8a8f6ec4c4aed24d4819bd19b60d1301ac2ec1cde1fe57a·...·]-2">]</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">175 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="nf">testcase</span><span·class="p"·data-group-id="1818822243-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1818822243-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 </span><span·class="nf">testcase</span><span·class="p"·data-group-id="7961208946-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="7961208946-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="n">Domain</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="1818822243-5">(</span><span·class="ss">domain</span><span·class="p"·data-group-id="1818822243-5">)</span><span·class="p">,</span><span·class="w">177 ····</span><span·class="n">Domain</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7961208946-5">(</span><span·class="ss">domain</span><span·class="p"·data-group-id="7961208946-5">)</span><span·class="p">,</span><span·class="w">
178 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="using-configuration-variables-defined-in-multiple-files"·class="section-heading">178 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="using-configuration-variables-defined-in-multiple-files"·class="section-heading">
179 ··<a·href="#using-configuration-variables-defined-in-multiple-files"·class="hover-link">179 ··<a·href="#using-configuration-variables-defined-in-multiple-files"·class="hover-link">
180 ····<i·class="ri-link-m"·aria-hidden="true"></i>180 ····<i·class="ri-link-m"·aria-hidden="true"></i>
181 ··</a>181 ··</a>
182 ··<span·class="text">Using·Configuration·Variables·Defined·in·Multiple·Files</span>182 ··<span·class="text">Using·Configuration·Variables·Defined·in·Multiple·Files</span>
183 </h2>183 </h2>
184 <p>If·a·configuration·variable·is·defined·in·multiple·files·and·you·want·to·access184 <p>If·a·configuration·variable·is·defined·in·multiple·files·and·you·want·to·access
Offset 257, 19 lines modifiedOffset 257, 19 lines modified
257 ···&lt;ftp_host&gt;257 ···&lt;ftp_host&gt;
258 ·······&lt;ftp&gt;&quot;targethost&quot;&lt;/ftp&gt;258 ·······&lt;ftp&gt;&quot;targethost&quot;&lt;/ftp&gt;
259 ·······&lt;username&gt;&quot;tester&quot;&lt;/username&gt;259 ·······&lt;username&gt;&quot;tester&quot;&lt;/username&gt;
260 ·······&lt;password&gt;&quot;letmein&quot;&lt;/password&gt;260 ·······&lt;password&gt;&quot;letmein&quot;&lt;/password&gt;
261 ···&lt;/ftp_host&gt;261 ···&lt;/ftp_host&gt;
262 ···&lt;lm_directory&gt;&quot;/test/loadmodules&quot;&lt;/lm_directory&gt;262 ···&lt;lm_directory&gt;&quot;/test/loadmodules&quot;&lt;/lm_directory&gt;
263 &lt;/config&gt;</code></pre><p>Once·read,·this·file·produces·the·same·configuration·variables·as·the·following263 &lt;/config&gt;</code></pre><p>Once·read,·this·file·produces·the·same·configuration·variables·as·the·following
264 text·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1118186661-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1118186661-2">[</span><span·class="p"·data-group-id="1118186661-3">{</span><span·class="ss">ftp</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·88,·SHA:·e6910f8e609adc21e142bccffe8e9dea61659eff3046aaca96a3b94421e8a5bb·...·]-3">}</span><span·class="p">,</span><span·class="w">264 text·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1225593724-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1225593724-2">[</span><span·class="p"·data-group-id="1225593724-3">{</span><span·class="ss">ftp</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·88,·SHA:·9012d4e0078a6e957ca1ee3bebf69a7c01c6de6b9d66b3b075ad67d6dc6df017·...·]-3">}</span><span·class="p">,</span><span·class="w">
265 ············</span><span·class="p"·data-group-id="1118186661-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="1118186661-4">}</span><span·class="p">,</span><span·class="w">265 ············</span><span·class="p"·data-group-id="1225593724-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="1225593724-4">}</span><span·class="p">,</span><span·class="w">
266 ············</span><span·class="p"·data-group-id="1118186661-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="1118186661-5">}</span><span·class="p"·data-group-id="1118186661-2">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·dc1f32e2cd4e342339cbc06339d7c78e202efbf89b38a325d63a7847eedff7d6·...·]-1">}</span><span·class="p">.</span><span·class="w">266 ············</span><span·class="p"·data-group-id="1225593724-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="1225593724-5">}</span><span·class="p"·data-group-id="1225593724-2">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·9aaeedc0f9a81b94ab308bffc844d1bbb6ce32e48f39ce360948b8d0ce967e8b·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
267 </span><span·class="p"·data-group-id="1118186661-6">{</span><span·class="ss">lm_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/test/loadmodules&quot;</span><span·class="p"·data-group-id="1118186661-6">}</span><span·class="p">.</span></code></pre><h3·id="implement-a-user-specific-handler"·class="section-heading">267 </span><span·class="p"·data-group-id="1225593724-6">{</span><span·class="ss">lm_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/test/loadmodules&quot;</span><span·class="p"·data-group-id="1225593724-6">}</span><span·class="p">.</span></code></pre><h3·id="implement-a-user-specific-handler"·class="section-heading">
268 ··<a·href="#implement-a-user-specific-handler"·class="hover-link">268 ··<a·href="#implement-a-user-specific-handler"·class="hover-link">
269 ····<i·class="ri-link-m"·aria-hidden="true"></i>269 ····<i·class="ri-link-m"·aria-hidden="true"></i>
270 ··</a>270 ··</a>
271 ··<span·class="text">Implement·a·User-Specific·Handler</span>271 ··<span·class="text">Implement·a·User-Specific·Handler</span>
272 </h3>272 </h3>
273 <p>The·user-specific·handler·can·be·written·to·handle·special·configuration·file273 <p>The·user-specific·handler·can·be·written·to·handle·special·configuration·file
274 formats.·The·parameter·can·be·either·file·names·or·configuration·strings·(the274 formats.·The·parameter·can·be·either·file·names·or·configuration·strings·(the
Offset 280, 150 lines modifiedOffset 280, 150 lines modified
280 specified·configuration·parameter·is·valid:</p><ul><li><code·class="inline">{ok,·{file,·FileName}}</code>·-·the·parameter·is·a·file·name·and·the·file·exists.</li><li><code·class="inline">{ok,·{config,·ConfigString}}</code>·-·the·parameter·is·a·configuration·string·and280 specified·configuration·parameter·is·valid:</p><ul><li><code·class="inline">{ok,·{file,·FileName}}</code>·-·the·parameter·is·a·file·name·and·the·file·exists.</li><li><code·class="inline">{ok,·{config,·ConfigString}}</code>·-·the·parameter·is·a·configuration·string·and
281 it·is·correct.</li><li><code·class="inline">{error,·{nofile,·FileName}}</code>·-·there·is·no·file·with·the·specified·name·in281 it·is·correct.</li><li><code·class="inline">{error,·{nofile,·FileName}}</code>·-·there·is·no·file·with·the·specified·name·in
282 the·current·directory.</li><li><code·class="inline">{error,·{wrong_config,·ConfigString}}</code>·-·the·configuration·string·is·wrong.</li></ul><p>The·function·<code·class="inline">Callback:read_config/1</code>·is·to·be·exported·from·the·callback·module282 the·current·directory.</li><li><code·class="inline">{error,·{wrong_config,·ConfigString}}</code>·-·the·configuration·string·is·wrong.</li></ul><p>The·function·<code·class="inline">Callback:read_config/1</code>·is·to·be·exported·from·the·callback·module
283 to·read·configuration·data,·initially·before·the·tests·start,·or·as·a·result·of283 to·read·configuration·data,·initially·before·the·tests·start,·or·as·a·result·of
284 data·being·reloaded·during·test·execution.·The·input·argument·is·the·same·as·for284 data·being·reloaded·during·test·execution.·The·input·argument·is·the·same·as·for
285 function·<code·class="inline">check_parameter/1</code>.</p><p>The·return·value·is·to·be·either·of·the·following:</p><ul><li><code·class="inline">{ok,·Config}</code>·-·if·the·configuration·variables·are·read·successfully.</li><li><code·class="inline">{error,·{Error,·ErrorDetails}}</code>·-·if·the·callback·module·fails·to·proceed285 function·<code·class="inline">check_parameter/1</code>.</p><p>The·return·value·is·to·be·either·of·the·following:</p><ul><li><code·class="inline">{ok,·Config}</code>·-·if·the·configuration·variables·are·read·successfully.</li><li><code·class="inline">{error,·{Error,·ErrorDetails}}</code>·-·if·the·callback·module·fails·to·proceed
286 with·the·specified·configuration·parameters.</li></ul><p><code·class="inline">Config</code>·is·the·proper·Erlang·key-value·list,·with·possible·key-value·sublists286 with·the·specified·configuration·parameters.</li></ul><p><code·class="inline">Config</code>·is·the·proper·Erlang·key-value·list,·with·possible·key-value·sublists
287 as·values,·like·the·earlier·configuration·file·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8066968614-1">[</span><span·class="p"·data-group-id="8066968614-2">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8066968614-3">[</span><span·class="p"·data-group-id="8066968614-4">{</[·...·truncated·by·diffoscope;·len:·822,·SHA:·93d98ef87ecbb2ab05374e4c7314c6d567964d4ebe0f01bc0fd1427d8be01a57·...·]4-2">}</span><span·class="p">,</span><span·class="w">287 as·values,·like·the·earlier·configuration·file·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0807278434-1">[</span><span·class="p"·data-group-id="0807278434-2">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0807278434-3">[</span><span·class="p"·data-group-id="0807278434-4">{</[·...·truncated·by·diffoscope;·len:·822,·SHA:·6600dec9cb5ebba2a3089982116d02f81e10f94175d5df137098e3f5889655f3·...·]4-2">}</span><span·class="p">,</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="8066968614-7">{</span><span·class="ss">lm_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/test/loadmodules&quot;</span><span·class="p"·data-group-id="8066968614-7">}</span><span·class="p"·data-group-id="8066968614-1">]</span></code></pre><h2·id="examples-of-configuration-data-handling"·class="section-heading">288 ·</span><span·class="p"·data-group-id="0807278434-7">{</span><span·class="ss">lm_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/test/loadmodules&quot;</span><span·class="p"·data-group-id="0807278434-7">}</span><span·class="p"·data-group-id="0807278434-1">]</span></code></pre><h2·id="examples-of-configuration-data-handling"·class="section-heading">
289 ··<a·href="#examples-of-configuration-data-handling"·class="hover-link">289 ··<a·href="#examples-of-configuration-data-handling"·class="hover-link">
290 ····<i·class="ri-link-m"·aria-hidden="true"></i>290 ····<i·class="ri-link-m"·aria-hidden="true"></i>
291 ··</a>291 ··</a>
292 ··<span·class="text">Examples·of·Configuration·Data·Handling</span>292 ··<span·class="text">Examples·of·Configuration·Data·Handling</span>
293 </h2>293 </h2>
294 <p>A·configuration·file·for·using·the·FTP·client·to·access·files·on·a·remote·host294 <p>A·configuration·file·for·using·the·FTP·client·to·access·files·on·a·remote·host
295 can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3349050038-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3349050038-2">[</span><span·class="p"·data-group-id="3349050038-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·9a1a6239a1a0ff27f5983eee59a221c61901bb37d4407b9ed256d6a3afd5234f·...·]-3">}</span><span·class="p">,</span><span·class="w">295 can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0825701519-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0825701519-2">[</span><span·class="p"·data-group-id="0825701519-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·51d7d57cb09565fe3734d7c6d97c18a36b1918f205134c385c9dd8cbaf2222de·...·]-3">}</span><span·class="p">,</span><span·class="w">
296 ············</span><span·class="p"·data-group-id="3349050038-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="3349050038-4">}</span><span·class="p">,</span><span·class="w">296 ············</span><span·class="p"·data-group-id="0825701519-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="0825701519-4">}</span><span·class="p">,</span><span·class="w">
297 ············</span><span·class="p"·data-group-id="3349050038-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="3349050038-5">}</span><span·class="p"·data-group-id="3349050038-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·ae593b7ef0b233112119e45077890a86d13371af4d87d7439d8b59bf55948709·...·]-1">}</span><span·class="p">.</span><span·class="w">297 ············</span><span·class="p"·data-group-id="0825701519-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="0825701519-5">}</span><span·class="p"·data-group-id="0825701519-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·1e3d8372cf061d8a8e71187509ccf1784b0dbfbfb0629c4c040abb2256134805·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
298 </span><span·class="p"·data-group-id="3349050038-6">{</span><span·class="ss">lm_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/test/loadmodules&quot;</span><span·class="p"·data-group-id="3349050038-6">}</span><span·class="p">.</span></code></pre><p>The·XML·version·shown·earlier·can·also·be·used,·but·it·is·to·be·explicitly298 </span><span·class="p"·data-group-id="0825701519-6">{</span><span·class="ss">lm_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/test/loadmodules&quot;</span><span·class="p"·data-group-id="0825701519-6">}</span><span·class="p">.</span></code></pre><p>The·XML·version·shown·earlier·can·also·be·used,·but·it·is·to·be·explicitly
299 specified·that·the·<code·class="inline">ct_config_xml</code>·callback·module·is·to·be·used·by299 specified·that·the·<code·class="inline">ct_config_xml</code>·callback·module·is·to·be·used·by
300 <code·class="inline">Common·Test</code>.</p><p>The·following·is·an·example·of·how·to·assert·that·the·configuration·data·is300 <code·class="inline">Common·Test</code>.</p><p>The·following·is·an·example·of·how·to·assert·that·the·configuration·data·is
301 available·and·can·be·used·for·an·FTP·session:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="0765120714-1">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0765120714-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">301 available·and·can·be·used·for·an·FTP·session:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="4209559424-1">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4209559424-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 ····</span><span·class="p"·data-group-id="0765120714-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="0765120714-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span><span[·...·truncated·by·diffoscope;·len:·167,·SHA:·7b10cbafd5d6ccc979fb378d769026ddb9bfb493239632fc23db90b744c212a5·...·]4-3">)</span><span·class="p">,</span><span·class="w">302 ····</span><span·class="p"·data-group-id="4209559424-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="4209559424-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span><span[·...·truncated·by·diffoscope;·len:·167,·SHA:·e3f5ceda4287cd0a0ad0e43bf3b67075e7e4452ac3ffe420e1d40ad21d1144e8·...·]4-3">)</span><span·class="p">,</span><span·class="w">
303 ····</span><span·class="n">Config</span><span·class="p">.</span><span·class="w">303 ····</span><span·class="n">Config</span><span·class="p">.</span><span·class="w">
  
304 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="0765120714-4">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="0765120714-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">304 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="4209559424-4">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="4209559424-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
305 ····</span><span·class="nc">ct_ftp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="0765120714-5">(</span><span·class="ss">ftp</span><span·class="p"·data-group-id="0765120714-5">)</span><span·class="p">.</span><span·class="w">305 ····</span><span·class="nc">ct_ftp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="4209559424-5">(</span><span·class="ss">ftp</span><span·class="p"·data-group-id="4209559424-5">)</span><span·class="p">.</span><span·class="w">
  
306 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="0765120714-6">(</span><span·class="p"·data-group-id="0765120714-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">306 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="4209559424-6">(</span><span·class="p"·data-group-id="4209559424-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
307 ····</span><span·class="p"·data-group-id="0765120714-7">[</span><span·class="p"·data-group-id="0765120714-8">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="0765120714-8">}</span><span·class="p">,</span><span·class="w">307 ····</span><span·class="p"·data-group-id="4209559424-7">[</span><span·class="p"·data-group-id="4209559424-8">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="4209559424-8">}</span><span·class="p">,</span><span·class="w">
308 ·····</span><span·class="p"·data-group-id="0765120714-9">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="0765120714-9">}</span><span·class="p"·data-group-id="0765120714-7">]</span><span·class="p">.</span><span·class="w">308 ·····</span><span·class="p"·data-group-id="4209559424-9">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="4209559424-9">}</span><span·class="p"·data-group-id="4209559424-7">]</span><span·class="p">.</span><span·class="w">
  
309 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="0765120714-10">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0765120714-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">309 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="4209559424-10">(</span><span·class="n">Config</span><span·class="p"·data-group-id="4209559424-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
310 ····</span><span·class="n">Remote</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="0765120714-11">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="0765120714-12">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="0765120714-12">)</span><span[·...·truncated·by·diffoscope;·len:·126,·SHA:·0407aec257ac36e2921913b28adb9c26254b648a3560fb378b510d68a729654d·...·]4-11">)</span><span·class="p">,</span><span·class="w">310 ····</span><span·class="n">Remote</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="4209559424-11">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="4209559424-12">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="4209559424-12">)</span><span[·...·truncated·by·diffoscope;·len:·126,·SHA:·0bbba1de9e8e2d13e6c2ae2c272491f48d5f81b68ed83a9dfd8f162e81a6a805·...·]4-11">)</span><span·class="p">,</span><span·class="w">
311 ····</span><span·class="n">Local</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="0765120714-13">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="0765120714-14">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·183,·SHA:·c24cab510dbfd72596c6ac8569800a734a7a0f31fa77cf0d6abe5e08b6693af0·...·]4-13">)</span><span·class="p">,</span><span·class="w">311 ····</span><span·class="n">Local</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="4209559424-13">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="4209559424-14">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·183,·SHA:·c69d9cb1142ba638d48b65ddfbf258420c9dd4a2feda63ab58b4f6e5dd24a3a4·...·]4-13">)</span><span·class="p">,</span><span·class="w">
312 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="0765120714-15">(</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Remote</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Local</span><span·class="p"·data-group-id="0765120714-15">)</span><span·class="p">,</span><span·class="w">312 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="4209559424-15">(</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Remote</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Local</span><span·class="p"·data-group-id="4209559424-15">)</span><span·class="p">,</span><span·class="w">
313 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>The·following·is·an·example·of·how·the·functions·in·the·previous·example·can·be313 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>The·following·is·an·example·of·how·the·functions·in·the·previous·example·can·be
314 rewritten·if·it·is·necessary·to·open·multiple·connections·to·the·FTP·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="2112014303-1">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="2112014303-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">314 rewritten·if·it·is·necessary·to·open·multiple·connections·to·the·FTP·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="0831613921-1">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0831613921-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
315 ····</span><span·class="p"·data-group-id="2112014303-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle1</span><span·class="p"·data-group-id="2112014303-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·553b9dfd4aab4f429e60bcaa7f7b06754d7e318de033cd3c1b90a8b7645a3039·...·]-3">)</span><span·class="p">,</span><span·class="w">315 ····</span><span·class="p"·data-group-id="0831613921-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle1</span><span·class="p"·data-group-id="0831613921-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·e7f4cb88a1890e9328d6fa0616a0e8d9e20354137910b6dddcc52e0eb6d3cbbc·...·]-3">)</span><span·class="p">,</span><span·class="w">
316 ····</span><span·class="p"·data-group-id="2112014303-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle2</span><span·class="p"·data-group-id="2112014303-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·bb6b3674028592184fa370cf3700663ee25159cc7557238b93806a7b540d38fd·...·]-5">)</span><span·class="p">,</span><span·class="w">316 ····</span><span·class="p"·data-group-id="0831613921-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle2</span><span·class="p"·data-group-id="0831613921-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·675117543e8e8ca74f12c35add1750d88ff1477a79662287a824b9254768f93e·...·]-5">)</span><span·class="p">,</span><span·class="w">
317 ····</span><span·class="p"·data-group-id="2112014303-6">[</span><span·class="p"·data-group-id="2112014303-7">{</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="p"·data-group-id="2112014303-8">[</span><span·class="n">Handle1</span><span·class="p">,</span><span·class="n"[·...·truncated·by·diffoscope;·len:·263,·SHA:·dbd048715777adfd55282298683aa13d8f13ab2a76ab250b8389b016ce797648·...·]-6">]</span><span·class="p">.</span><span·class="w">317 ····</span><span·class="p"·data-group-id="0831613921-6">[</span><span·class="p"·data-group-id="0831613921-7">{</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="p"·data-group-id="0831613921-8">[</span><span·class="n">Handle1</span><span·class="p">,</span><span·class="n"[·...·truncated·by·diffoscope;·len:·263,·SHA:·3279fb27221483d94ff554ca040cf212766e19cd5d5dd585123fc1c0b598101d·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
318 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="2112014303-9">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="2112014303-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">318 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="0831613921-9">(</span><span·class="ss">ftptest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0831613921-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
319 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foreach</span><span·class="p"·data-group-id="2112014303-10">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2112014303-11">(</span><span·class="n">Handle</span><span·class="p"·data-group-id="2112014303-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·214,·SHA:·b1bd99123d3035c6774f9adc887ea8300f414751facfd5d9378de0b072da8e95·...·]-12">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">319 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foreach</span><span·class="p"·data-group-id="0831613921-10">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0831613921-11">(</span><span·class="n">Handle</span><span·class="p"·data-group-id="0831613921-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·214,·SHA:·4cfc9877fc0694a346ff9a63e364ebecd2e62cfb40be0ccae618b8469d964caf·...·]-12">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
320 ··················</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="2112014303-13">(</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="2112014303-13">)</span><span·class="p"·data-group-id="2112014303-10">)</span><span·class="p">.</span><span·class="w">320 ··················</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="0831613921-13">(</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="0831613921-13">)</span><span·class="p"·data-group-id="0831613921-10">)</span><span·class="p">.</span><span·class="w">
  
321 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="2112014303-14">(</span><span·class="p"·data-group-id="2112014303-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">321 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="0831613921-14">(</span><span·class="p"·data-group-id="0831613921-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
322 ····</span><span·class="p"·data-group-id="2112014303-15">[</span><span·class="p"·data-group-id="2112014303-16">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="2112014303-16">}</span><span·class="p">,</span><span·class="w">322 ····</span><span·class="p"·data-group-id="0831613921-15">[</span><span·class="p"·data-group-id="0831613921-16">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="0831613921-16">}</span><span·class="p">,</span><span·class="w">
323 ·····</span><span·class="p"·data-group-id="2112014303-17">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="2112014303-17">}</span><span·class="p"·data-group-id="2112014303-15">]</span><span·class="p">.</span><span·class="w">323 ·····</span><span·class="p"·data-group-id="0831613921-17">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="0831613921-17">}</span><span·class="p"·data-group-id="0831613921-15">]</span><span·class="p">.</span><span·class="w">
  
324 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="2112014303-18">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2112014303-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">324 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="0831613921-18">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0831613921-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
325 ····</span><span·class="n">Remote</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="2112014303-19">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="2112014303-20">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="2112014303-20">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·df31dd5a4299bcdd9354ec7aa93d6f55fca1236bcb3bc141d839e5a1ca7ed546·...·]-19">)</span><span·class="p">,</span><span·class="w">325 ····</span><span·class="n">Remote</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="0831613921-19">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="0831613921-20">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="0831613921-20">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·ff4d34a1b161b0b3be83f7c363462c1fbe53453101c922dd5dc8b9b0e0fc8b3e·...·]-19">)</span><span·class="p">,</span><span·class="w">
326 ····</span><span·class="n">Local</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="2112014303-21">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="2112014303-22">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·74fe216a3cd8f8d1be3d64ffbe88c33089b53131723b0d355073449890e32982·...·]-21">)</span><span·class="p">,</span><span·class="w">326 ····</span><span·class="n">Local</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="0831613921-21">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="0831613921-22">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·77aaab3fcb6185d337bb6555fd4c70cbdf0ca9693d8984424545805d12b216af·...·]-21">)</span><span·class="p">,</span><span·class="w">
327 ····</span><span·class="p"·data-group-id="2112014303-23">[</span><span·class="n">Handle</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">MoreHandles</span><span·class="p"·data-group-id="2112014303-23">]</span><span·class="w">·</span><span·class="o">=</s[·...·truncated·by·diffoscope;·len:·301,·SHA:·9fddaca67dca467bce130296f6a0d22e2303ccfda7b95dbe92bcc059ca46a11e·...·]-24">)</span><span·class="p">,</span><span·class="w">327 ····</span><span·class="p"·data-group-id="0831613921-23">[</span><span·class="n">Handle</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">MoreHandles</span><span·class="p"·data-group-id="0831613921-23">]</span><span·class="w">·</span><span·class="o">=</s[·...·truncated·by·diffoscope;·len:·301,·SHA:·0f01556d69ef788be67316a521df80cf02267285d00645cb0719b7b2cd115b7b·...·]-24">)</span><span·class="p">,</span><span·class="w">
328 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="2112014303-25">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Remote</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Local</span><span·class="p"·data-group-id="2112014303-25">)</span><span·class="p">,</span><span·class="w">328 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="0831613921-25">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Remote</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Local</span><span·class="p"·data-group-id="0831613921-25">)</span><span·class="p">,</span><span·class="w">
329 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="example-of-user-specific-configuration-handler"·class="section-heading">329 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="example-of-user-specific-configuration-handler"·class="section-heading">
330 ··<a·href="#example-of-user-specific-configuration-handler"·class="hover-link">330 ··<a·href="#example-of-user-specific-configuration-handler"·class="hover-link">
331 ····<i·class="ri-link-m"·aria-hidden="true"></i>331 ····<i·class="ri-link-m"·aria-hidden="true"></i>
332 ··</a>332 ··</a>
333 ··<span·class="text">Example·of·User-Specific·Configuration·Handler</span>333 ··<span·class="text">Example·of·User-Specific·Configuration·Handler</span>
334 </h2>334 </h2>
335 <p>A·simple·configuration·handling·driver,·asking·an·external·server·for335 <p>A·simple·configuration·handling·driver,·asking·an·external·server·for
336 configuration·data,·can·be·implemented·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9811217106-1">(</span><span·class="ss">config_driver</span><span·class="p"·data-group-id="9811217106-1">)</span><span·class="p">.</span><span·class="w">336 configuration·data,·can·be·implemented·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8168126843-1">(</span><span·class="ss">config_driver</span><span·class="p"·data-group-id="8168126843-1">)</span><span·class="p">.</span><span·class="w">
337 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9811217106-2">(</span><span·class="p"·data-group-id="9811217106-3">[</span><span·class="ss">read_config</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">check_parameter</span><span·clas[·...·truncated·by·diffoscope;·len:·133,·SHA:·cecf7f4bc98052800ce23d0f9a6036c56d15dd03d392d945a78967c75d912614·...·]-2">)</span><span·class="p">.</span><span·class="w">337 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8168126843-2">(</span><span·class="p"·data-group-id="8168126843-3">[</span><span·class="ss">read_config</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">check_parameter</span><span·clas[·...·truncated·by·diffoscope;·len:·133,·SHA:·42abd7c287ee4a05b6d06e4f4f94dc0ab6162165bc6921e81fc4957165ffa34b·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
338 </span><span·class="nf">read_config</span><span·class="p"·data-group-id="9811217106-4">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="9811217106-4">)</span><span·class="p">-&gt;</span><span·class="w">338 </span><span·class="nf">read_config</span><span·class="p"·data-group-id="8168126843-4">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="8168126843-4">)</span><span·class="p">-&gt;</span><span·class="w">
339 ····</span><span·class="n">ServerModule</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="9811217106-5">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="9811217106-5">)</span><span·class="p">,</span><span·class="w">339 ····</span><span·class="n">ServerModule</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="8168126843-5">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="8168126843-5">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 30301/81934 bytes (36.98%) of diff not shown.
15.5 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/cover_chapter.html
    
Offset 197, 67 lines modifiedOffset 197, 67 lines modified
197 ····<i·class="ri-link-m"·aria-hidden="true"></i>197 ····<i·class="ri-link-m"·aria-hidden="true"></i>
198 ··</a>198 ··</a>
199 ··<span·class="text">General·Config</span>199 ··<span·class="text">General·Config</span>
200 </h3>200 </h3>
201 <p>Here·follows·the·general·configuration·terms·that·are·allowed·in·a·cover201 <p>Here·follows·the·general·configuration·terms·that·are·allowed·in·a·cover
202 specification·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·List·of·Nodes·on·which·cover·will·be·active·during·test.</span><span·class="w">202 specification·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·List·of·Nodes·on·which·cover·will·be·active·during·test.</span><span·class="w">
203 </span><span·class="c1">%%·Nodes·=·[atom()]</span><span·class="w">203 </span><span·class="c1">%%·Nodes·=·[atom()]</span><span·class="w">
204 </span><span·class="p"·data-group-id="6967349333-1">{</span><span·class="nb">nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Nodes</span><span·class="p"·data-group-id="6967349333-1">}</span><span·class="p">.</span><span·class="w">204 </span><span·class="p"·data-group-id="4906244354-1">{</span><span·class="nb">nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Nodes</span><span·class="p"·data-group-id="4906244354-1">}</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="c1">%%·Files·with·previously·exported·cover·data·to·include·in·analysis.</span><span·class="w">205 </span><span·class="c1">%%·Files·with·previously·exported·cover·data·to·include·in·analysis.</span><span·class="w">
206 </span><span·class="c1">%%·CoverDataFiles·=·[string()]</span><span·class="w">206 </span><span·class="c1">%%·CoverDataFiles·=·[string()]</span><span·class="w">
207 </span><span·class="p"·data-group-id="6967349333-2">{</span><span·class="ss">import</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CoverDataFiles</span><span·class="p"·data-group-id="6967349333-2">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="4906244354-2">{</span><span·class="ss">import</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CoverDataFiles</span><span·class="p"·data-group-id="4906244354-2">}</span><span·class="p">.</span><span·class="w">
  
208 </span><span·class="c1">%%·Cover·data·file·to·export·from·this·session.</span><span·class="w">208 </span><span·class="c1">%%·Cover·data·file·to·export·from·this·session.</span><span·class="w">
209 </span><span·class="c1">%%·CoverDataFile·=·string()</span><span·class="w">209 </span><span·class="c1">%%·CoverDataFile·=·string()</span><span·class="w">
210 </span><span·class="p"·data-group-id="6967349333-3">{</span><span·class="ss">export</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CoverDataFile</span><span·class="p"·data-group-id="6967349333-3">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="4906244354-3">{</span><span·class="ss">export</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CoverDataFile</span><span·class="p"·data-group-id="4906244354-3">}</span><span·class="p">.</span><span·class="w">
  
211 </span><span·class="c1">%%·Cover·analysis·level.</span><span·class="w">211 </span><span·class="c1">%%·Cover·analysis·level.</span><span·class="w">
212 </span><span·class="c1">%%·Level·=·details·|·overview</span><span·class="w">212 </span><span·class="c1">%%·Level·=·details·|·overview</span><span·class="w">
213 </span><span·class="p"·data-group-id="6967349333-4">{</span><span·class="ss">level</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Level</span><span·class="p"·data-group-id="6967349333-4">}</span><span·class="p">.</span><span·class="w">213 </span><span·class="p"·data-group-id="4906244354-4">{</span><span·class="ss">level</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Level</span><span·class="p"·data-group-id="4906244354-4">}</span><span·class="p">.</span><span·class="w">
  
214 </span><span·class="c1">%%·Directories·to·include·in·cover.</span><span·class="w">214 </span><span·class="c1">%%·Directories·to·include·in·cover.</span><span·class="w">
215 </span><span·class="c1">%%·Dirs·=·[string()]</span><span·class="w">215 </span><span·class="c1">%%·Dirs·=·[string()]</span><span·class="w">
216 </span><span·class="p"·data-group-id="6967349333-5">{</span><span·class="ss">incl_dirs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="6967349333-5">}</span><span·class="p">.</span><span·class="w">216 </span><span·class="p"·data-group-id="4906244354-5">{</span><span·class="ss">incl_dirs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="4906244354-5">}</span><span·class="p">.</span><span·class="w">
  
217 </span><span·class="c1">%%·Directories,·including·subdirectories,·to·include.</span><span·class="w">217 </span><span·class="c1">%%·Directories,·including·subdirectories,·to·include.</span><span·class="w">
218 </span><span·class="p"·data-group-id="6967349333-6">{</span><span·class="ss">incl_dirs_r</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="6967349333-6">}</span><span·class="p">.</span><span·class="w">218 </span><span·class="p"·data-group-id="4906244354-6">{</span><span·class="ss">incl_dirs_r</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="4906244354-6">}</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="c1">%%·Specific·modules·to·include·in·cover.</span><span·class="w">219 </span><span·class="c1">%%·Specific·modules·to·include·in·cover.</span><span·class="w">
220 </span><span·class="c1">%%·Mods·=·[atom()]</span><span·class="w">220 </span><span·class="c1">%%·Mods·=·[atom()]</span><span·class="w">
221 </span><span·class="p"·data-group-id="6967349333-7">{</span><span·class="ss">incl_mods</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mods</span><span·class="p"·data-group-id="6967349333-7">}</span><span·class="p">.</span><span·class="w">221 </span><span·class="p"·data-group-id="4906244354-7">{</span><span·class="ss">incl_mods</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mods</span><span·class="p"·data-group-id="4906244354-7">}</span><span·class="p">.</span><span·class="w">
  
222 </span><span·class="c1">%%·Directories·to·exclude·in·cover.</span><span·class="w">222 </span><span·class="c1">%%·Directories·to·exclude·in·cover.</span><span·class="w">
223 </span><span·class="p"·data-group-id="6967349333-8">{</span><span·class="ss">excl_dirs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="6967349333-8">}</span><span·class="p">.</span><span·class="w">223 </span><span·class="p"·data-group-id="4906244354-8">{</span><span·class="ss">excl_dirs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="4906244354-8">}</span><span·class="p">.</span><span·class="w">
  
224 </span><span·class="c1">%%·Directories,·including·subdirectories,·to·exclude.</span><span·class="w">224 </span><span·class="c1">%%·Directories,·including·subdirectories,·to·exclude.</span><span·class="w">
225 </span><span·class="p"·data-group-id="6967349333-9">{</span><span·class="ss">excl_dirs_r</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="6967349333-9">}</span><span·class="p">.</span><span·class="w">225 </span><span·class="p"·data-group-id="4906244354-9">{</span><span·class="ss">excl_dirs_r</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dirs</span><span·class="p"·data-group-id="4906244354-9">}</span><span·class="p">.</span><span·class="w">
  
226 </span><span·class="c1">%%·Specific·modules·to·exclude·in·cover.</span><span·class="w">226 </span><span·class="c1">%%·Specific·modules·to·exclude·in·cover.</span><span·class="w">
227 </span><span·class="p"·data-group-id="6967349333-10">{</span><span·class="ss">excl_mods</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mods</span><span·class="p"·data-group-id="6967349333-10">}</span><span·class="p">.</span><span·class="w">227 </span><span·class="p"·data-group-id="4906244354-10">{</span><span·class="ss">excl_mods</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mods</span><span·class="p"·data-group-id="4906244354-10">}</span><span·class="p">.</span><span·class="w">
  
228 </span><span·class="c1">%%·Cross·cover·compilation</span><span·class="w">228 </span><span·class="c1">%%·Cross·cover·compilation</span><span·class="w">
229 </span><span·class="c1">%%·Tag·=·atom(),·an·identifier·for·a·test·run</span><span·class="w">229 </span><span·class="c1">%%·Tag·=·atom(),·an·identifier·for·a·test·run</span><span·class="w">
230 </span><span·class="c1">%%·Mod·=·[atom()],·modules·to·compile·for·accumulated·analysis</span><span·class="w">230 </span><span·class="c1">%%·Mod·=·[atom()],·modules·to·compile·for·accumulated·analysis</span><span·class="w">
231 </span><span·class="p"·data-group-id="6967349333-11">{</span><span·class="ss">cross</span><span·class="p">,</span><span·class="p"·data-group-id="6967349333-12">[</span><span·class="p"·data-group-id="6967349333-13">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="n">Mods</[·...·truncated·by·diffoscope;·len:·154,·SHA:·0342267bafa7d132ceb6bbd9943c3e18415823bb97edcc57a12b23312fdaf689·...·]-11">}</span><span·class="p">.</span></code></pre><p>The·terms·<code·class="inline">incl_dirs_r</code>·and·<code·class="inline">excl_dirs_r</code>·tell·<code·class="inline">Common·Test</code>·to·search·the231 </span><span·class="p"·data-group-id="4906244354-11">{</span><span·class="ss">cross</span><span·class="p">,</span><span·class="p"·data-group-id="4906244354-12">[</span><span·class="p"·data-group-id="4906244354-13">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="n">Mods</[·...·truncated·by·diffoscope;·len:·154,·SHA:·e7ce26dc944e10b866bae445b68d93503e5287eae47ff09c3fe7bcd83a4f03a3·...·]-11">}</span><span·class="p">.</span></code></pre><p>The·terms·<code·class="inline">incl_dirs_r</code>·and·<code·class="inline">excl_dirs_r</code>·tell·<code·class="inline">Common·Test</code>·to·search·the
232 specified·directories·recursively·and·include·or·exclude·any·module·found·during232 specified·directories·recursively·and·include·or·exclude·any·module·found·during
233 the·search.·The·terms·<code·class="inline">incl_dirs</code>·and·<code·class="inline">excl_dirs</code>·result·in·a·non-recursive233 the·search.·The·terms·<code·class="inline">incl_dirs</code>·and·<code·class="inline">excl_dirs</code>·result·in·a·non-recursive
234 search·for·modules·(that·is,·only·modules·found·in·the·specified·directories·are234 search·for·modules·(that·is,·only·modules·found·in·the·specified·directories·are
235 included·or·excluded).</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Directories·containing·Erlang·modules·to·be·included·in·a·code·coverage·test235 included·or·excluded).</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Directories·containing·Erlang·modules·to·be·included·in·a·code·coverage·test
236 must·exist·in·the·code·server·path.·Otherwise,·the·Cover·tool·fails·to236 must·exist·in·the·code·server·path.·Otherwise,·the·Cover·tool·fails·to
237 recompile·the·modules.·It·is·not·sufficient·to·specify·these·directories·in237 recompile·the·modules.·It·is·not·sufficient·to·specify·these·directories·in
238 the·cover·specification·file·for·<code·class="inline">Common·Test</code>.</p></section><h3·id="otp-application-config"·class="section-heading">238 the·cover·specification·file·for·<code·class="inline">Common·Test</code>.</p></section><h3·id="otp-application-config"·class="section-heading">
239 ··<a·href="#otp-application-config"·class="hover-link">239 ··<a·href="#otp-application-config"·class="hover-link">
240 ····<i·class="ri-link-m"·aria-hidden="true"></i>240 ····<i·class="ri-link-m"·aria-hidden="true"></i>
241 ··</a>241 ··</a>
242 ··<span·class="text">OTP·application·Config</span>242 ··<span·class="text">OTP·application·Config</span>
243 </h3>243 </h3>
244 <p>When·using·a·cover·specification·in·the·testing·of·an·OTP·application·itself,244 <p>When·using·a·cover·specification·in·the·testing·of·an·OTP·application·itself,
245 there·is·a·special·incl_app·directive·that·includes·the·applications·modules·for245 there·is·a·special·incl_app·directive·that·includes·the·applications·modules·for
246 the·cover·compilation.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8009331717-1">{</span><span·class="ss">incl_app</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cover</span><span·class="w">·</span><span·class="p">:</span>[·...·truncated·by·diffoscope;·len:·224,·SHA:·4f752f41ee90378ee19ef173f634440841d06e26e87553f7a4e47b185b18605b·...·]-1">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·desire·to·also·use·some·other·general·cover·configuration·together·with246 the·cover·compilation.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6792292678-1">{</span><span·class="ss">incl_app</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cover</span><span·class="w">·</span><span·class="p">:</span>[·...·truncated·by·diffoscope;·len:·224,·SHA:·be08eff05a8b26ea846f4680a21d4441cad81177e63902895fca65b110211670·...·]-1">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·desire·to·also·use·some·other·general·cover·configuration·together·with
247 this·option·you·should·insert·the·AppName·in·between·the·option·and·its·value247 this·option·you·should·insert·the·AppName·in·between·the·option·and·its·value
248 creating·a·three·tuple.</p></section><p><a·href=""·id="cross_cover"></a></p><h2·id="cross-cover-analysis"·class="section-heading">248 creating·a·three·tuple.</p></section><p><a·href=""·id="cross_cover"></a></p><h2·id="cross-cover-analysis"·class="section-heading">
249 ··<a·href="#cross-cover-analysis"·class="hover-link">249 ··<a·href="#cross-cover-analysis"·class="hover-link">
250 ····<i·class="ri-link-m"·aria-hidden="true"></i>250 ····<i·class="ri-link-m"·aria-hidden="true"></i>
251 ··</a>251 ··</a>
252 ··<span·class="text">Cross·Cover·Analysis</span>252 ··<span·class="text">Cross·Cover·Analysis</span>
253 </h2>253 </h2>
Offset 276, 15 lines modifiedOffset 276, 15 lines modified
276 ··{incl_mods,[m1]}.</code></pre><p>This·gives·an·entry·for·<code·class="inline">m1</code>·also·in·the·cover·log·for·test·run·<code·class="inline">s2</code>.·The276 ··{incl_mods,[m1]}.</code></pre><p>This·gives·an·entry·for·<code·class="inline">m1</code>·also·in·the·cover·log·for·test·run·<code·class="inline">s2</code>.·The
277 problem·is·that·this·only·reflects·the·coverage·by·<code·class="inline">s2</code>·tests,·not·the277 problem·is·that·this·only·reflects·the·coverage·by·<code·class="inline">s2</code>·tests,·not·the
278 accumulated·result·over·<code·class="inline">s1</code>·and·<code·class="inline">s2</code>.·This·is·where·the·cross·cover·mechanism278 accumulated·result·over·<code·class="inline">s1</code>·and·<code·class="inline">s2</code>.·This·is·where·the·cross·cover·mechanism
279 comes·in·handy.</p><p>If·instead·the·cover·specification·for·<code·class="inline">s2</code>·is·like·the·following:</p><pre><code·class="text">s2.cover:279 comes·in·handy.</p><p>If·instead·the·cover·specification·for·<code·class="inline">s2</code>·is·like·the·following:</p><pre><code·class="text">s2.cover:
280 ··{cross,[{s1,[m1]}]}.</code></pre><p>Then·<code·class="inline">m1</code>·is·cover·compiled·in·test·run·<code·class="inline">s2</code>,·but·not·shown·in·the·coverage·log.280 ··{cross,[{s1,[m1]}]}.</code></pre><p>Then·<code·class="inline">m1</code>·is·cover·compiled·in·test·run·<code·class="inline">s2</code>,·but·not·shown·in·the·coverage·log.
281 Instead,·if·<a·href="ct_cover.html#cross_cover_analyse/2"><code·class="inline">ct_cover:cross_cover_analyse/2</code></a>·is·called·after·both·<code·class="inline">s1</code>·and·<code·class="inline">s2</code>281 Instead,·if·<a·href="ct_cover.html#cross_cover_analyse/2"><code·class="inline">ct_cover:cross_cover_analyse/2</code></a>·is·called·after·both·<code·class="inline">s1</code>·and·<code·class="inline">s2</code>
282 test·runs·are·completed,·the·accumulated·result·for·<code·class="inline">m1</code>·is·available·in·the282 test·runs·are·completed,·the·accumulated·result·for·<code·class="inline">m1</code>·is·available·in·the
283 cross·cover·log·for·test·run·<code·class="inline">s1</code>.</p><p>The·call·to·the·analyze·function·must·be·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ct_cover</span><span·class="p">:</span><span·class="nf">cross_cover_analyse</span><span·class="p"·data-group-id="9808157784-1">(</span><span·class="n">Level</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9808157784-2">[</span><span·class="p"·data-group-id="9808157784-3">{</span><span·class="ss">s1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·387,·SHA:·b82a378c75acf6a182a773abcb4fde5b0a1be8ecafa6631b23972846787f9ea5·...·]-1">)</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">S1LogDir</code>·and·<code·class="inline">S2LogDir</code>·are·the·directories·named·<code·class="inline">&lt;TestName&gt;.logs</code>·for283 cross·cover·log·for·test·run·<code·class="inline">s1</code>.</p><p>The·call·to·the·analyze·function·must·be·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ct_cover</span><span·class="p">:</span><span·class="nf">cross_cover_analyse</span><span·class="p"·data-group-id="6302147425-1">(</span><span·class="n">Level</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6302147425-2">[</span><span·class="p"·data-group-id="6302147425-3">{</span><span·class="ss">s1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·387,·SHA:·949af45d348b93977e885c7c4c047338f263c1a626050a95d0ecfc939eaffb4b·...·]-1">)</span><span·class="p">.</span></code></pre><p>Here,·<code·class="inline">S1LogDir</code>·and·<code·class="inline">S2LogDir</code>·are·the·directories·named·<code·class="inline">&lt;TestName&gt;.logs</code>·for
284 each·test·respectively.</p><p>Notice·the·tags·<code·class="inline">s1</code>·and·<code·class="inline">s2</code>,·which·are·used·in·the·cover·specification·file284 each·test·respectively.</p><p>Notice·the·tags·<code·class="inline">s1</code>·and·<code·class="inline">s2</code>,·which·are·used·in·the·cover·specification·file
285 and·in·the·call·to·<a·href="ct_cover.html#cross_cover_analyse/2"><code·class="inline">ct_cover:cross_cover_analyse/2</code></a>.·The·purpose·of·these·is285 and·in·the·call·to·<a·href="ct_cover.html#cross_cover_analyse/2"><code·class="inline">ct_cover:cross_cover_analyse/2</code></a>.·The·purpose·of·these·is
286 only·to·map·the·modules·specified·in·the·cover·specification·to·the·log286 only·to·map·the·modules·specified·in·the·cover·specification·to·the·log
287 directory·specified·in·the·call·to·the·analyze·function.·The·tag·name·has·no287 directory·specified·in·the·call·to·the·analyze·function.·The·tag·name·has·no
288 meaning·beyond·this.</p><h2·id="logging"·class="section-heading">288 meaning·beyond·this.</p><h2·id="logging"·class="section-heading">
289 ··<a·href="#logging"·class="hover-link">289 ··<a·href="#logging"·class="hover-link">
290 ····<i·class="ri-link-m"·aria-hidden="true"></i>290 ····<i·class="ri-link-m"·aria-hidden="true"></i>
39.7 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct.html
    
Offset 1916, 25 lines modifiedOffset 1916, 25 lines modified
1916 ························Opt·::·element·|·all,1916 ························Opt·::·element·|·all,
1917 ························ValueOrElement·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()·|·Default.</pre>1917 ························ValueOrElement·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()·|·Default.</pre>
  
1918 ······</div>1918 ······</div>
  
1919 <p>Reads·configuration·data·values.</p><p>Returns·the·matching·values·or·configuration·elements,·given·a·configuration1919 <p>Reads·configuration·data·values.</p><p>Returns·the·matching·values·or·configuration·elements,·given·a·configuration
1920 variable·key·or·its·associated·name·(if·one·has·been·specified·with1920 variable·key·or·its·associated·name·(if·one·has·been·specified·with
1921 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>·or·a·<code·class="inline">require</code>·statement).</p><p><em>Example:</em></p><p>Given·the·following·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9304622688-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="9304622688-2">[</span><span·class="p"·data-group-id="9304622688-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr<[·...·truncated·by·diffoscope;·len:·46,·SHA:·d7f24f6c9a3b81570c03e376a555d511143eb8f5ebcd62552799f100b36acad2·...·]8-3">}</span><span·class="p">,</span><span·class="w">1921 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>·or·a·<code·class="inline">require</code>·statement).</p><p><em>Example:</em></p><p>Given·the·following·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9847664118-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="9847664118-2">[</span><span·class="p"·data-group-id="9847664118-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr<[·...·truncated·by·diffoscope;·len:·46,·SHA:·c9106907f202630931d9126105ad607629b2dce25954e3c93efd55639ac39c5c·...·]8-3">}</span><span·class="p">,</span><span·class="w">
1922 ·······</span><span·class="p"·data-group-id="9304622688-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="p"·data-group-id="9304622688-5">[</span><span·class="p"·data-group-id="9304622688-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Usern[·...·truncated·by·diffoscope;·len:·50,·SHA:·f08db5b47f1310c17e034a770d369ed21f13fee4226a3e63e4b8e8f3a08c3678·...·]8-6">}</span><span·class="p">,</span><span·class="w">1922 ·······</span><span·class="p"·data-group-id="9847664118-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="p"·data-group-id="9847664118-5">[</span><span·class="p"·data-group-id="9847664118-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Usern[·...·truncated·by·diffoscope;·len:·50,·SHA:·31fec17b4e5d3e8e12b1ef51a90dc3293e1815acfd77e9d25636d91674e394c9·...·]8-6">}</span><span·class="p">,</span><span·class="w">
1923 ··············</span><span·class="p"·data-group-id="9304622688-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="9304622688-7">}</span><span·class="p"·data-group-id="9304622688-5">]</span><span·class="p"·data-group-id="9304622688-4">}</span><span·class="p"·data-group-id="9304622688-2">]</span><span·class="p"·data-group-id="9304622688-1">}</span><span·class="p">.</span></code></pre><p>Then:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5299891692-1">(</span><span·class="ss">unix</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="5299891692-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5299891692-2">[</span><span·class="p"·data-group-id="5299891692-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="5299891692-3">}</span><span·class="p">,</span><span·class="w"> 
1924 ·</span><span·class="p"·data-group-id="5299891692-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5299891692-5">[</span><span·class="p"·data-group-id="5299891692-6">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·519,·SHA:·13a1043651ce9715526b7a7db28a2a6ab80c793b4ed1c095a65b65cd1a65179c·...·]</span><span·class="w">1923 ··············</span><span·class="p"·data-group-id="9847664118-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="9847664118-7">}</span><span·class="p"·data-group-id="9847664118-5[·...·truncated·by·diffoscope;·len:·873,·SHA:·c6c9554c5030938ffbb9bceb07af9aa8928d7e5196e88d6de0bab968fa9f0f98·...·]</span><span·class="w">
 1924 ·</span><span·class="p"·data-group-id="8349473545-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8349473545-5">[</span><span·class="p"·data-group-id="8349473545-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="8349473545-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8349473545-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="8349473545-7">}</span><span·class="p"·data-group-id="8349473545-5">]</span><span·class="p"·data-group-id="8349473545-4">}</span><span·class="p"·data-group-id="8349473545-2">]</span><span·class="w">
1925 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5299891692-8">(</span><span·class="p"·data-group-id="5299891692-9">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">telnet</span><span·class="p"·data-group-id="5299891692-9">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·893bedc08839f9cc91b7bba853daa86be646d316b479eedb65c8b23205054bb7·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">IpAddr</span><span·class="w">1925 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="8349473545-8">(</span><span·class="p"·data-group-id="8349473545-9">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">telnet</span><span·class="p"·data-group-id="8349473545-9">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·bb3562f0d04c09aec8458ae251bc87ab87ed4b7c9f5200eb97e788b74cec83c4·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">IpAddr</span><span·class="w">
1926 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5299891692-10">(</span><span·class="p"·data-group-id="5299891692-11">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p">,</span><span·class="ss">username</span><span·class="p"·data-group-id="5299891692-1[·...·truncated·by·diffoscope;·len:·106,·SHA:·0505cc9067e2b020c7afedeb4fcd668903d2476c55367f3c4d3bfdb17541b1f1·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Username</span><span·class="w">1926 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="8349473545-10">(</span><span·class="p"·data-group-id="8349473545-11">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p">,</span><span·class="ss">username</span><span·class="p"·data-group-id="8349473545-1[·...·truncated·by·diffoscope;·len:·106,·SHA:·150e96f8da782d10421a9dccb9874dab38603a6f5aba2009c8ccfa242c13362e·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Username</span><span·class="w">
1927 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5299891692-12">(</span><span·class="p"·data-group-id="5299891692-13">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p"·data-group-id="5299891692-13">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·893bedc08839f9cc91b7bba853daa86be646d316b479eedb65c8b23205054bb7·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Default</span><span·class="w">1927 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="8349473545-12">(</span><span·class="p"·data-group-id="8349473545-13">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p"·data-group-id="8349473545-13">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·bb3562f0d04c09aec8458ae251bc87ab87ed4b7c9f5200eb97e788b74cec83c4·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Default</span><span·class="w">
1928 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5299891692-14">(</span><span·class="ss">unknownkey</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="5299891692-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Default</span></code></pre><p>If·a·configuration·variable·key·has·been·associated·with·a·name·(by1928 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="8349473545-14">(</span><span·class="ss">unknownkey</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="8349473545-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Default</span></code></pre><p>If·a·configuration·variable·key·has·been·associated·with·a·name·(by
1929 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>·or·a·<code·class="inline">require</code>·statement),·the·name·can·be·used1929 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>·or·a·<code·class="inline">require</code>·statement),·the·name·can·be·used
1930 instead·of·the·key·to·read·the·value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="9396278278-1">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="p"·data-group-id="9396278278-2">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p"·data-group-id="9396278278-2">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·8a2a18bca7726a1eb3edd56dcc5928b02e963fda7df9fef02545b2c0979f3916·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">1930 instead·of·the·key·to·read·the·value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="2177717645-1">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="p"·data-group-id="2177717645-2">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p"·data-group-id="2177717645-2">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·914cc6619c6ff99707531b2722a2f54f8814c7ff45da253bd2cd7b0cc1c3a856·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
1931 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="9396278278-3">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="9396278278-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·507,·SHA:·b068072be1a02fe335451581ecfa244d6673136d26f4a375321bb2b4f566f3ef·...·]-4">]</span></code></pre><p>If·a·configuration·variable·is·defined·in·multiple·files,·use·option·<code·class="inline">all</code>·to1931 </span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="2177717645-3">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="2177717645-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·507,·SHA:·5c33f1962d655c627c974073a2cf869a5ac85ba14651406121f1802ed069c337·...·]-4">]</span></code></pre><p>If·a·configuration·variable·is·defined·in·multiple·files,·use·option·<code·class="inline">all</code>·to
1932 access·all·possible·values.·The·values·are·returned·in·a·list.·The·order·of·the1932 access·all·possible·values.·The·values·are·returned·in·a·list.·The·order·of·the
1933 elements·corresponds·to·the·order·that·the·configuration·files·were·specified·at1933 elements·corresponds·to·the·order·that·the·configuration·files·were·specified·at
1934 startup.</p><p>If·configuration·elements·(key-value·tuples)·are·to·be·returned·as·result1934 startup.</p><p>If·configuration·elements·(key-value·tuples)·are·to·be·returned·as·result
1935 instead·of·values,·use·option·<code·class="inline">element</code>.·The·returned·elements·are·then·on·the1935 instead·of·values,·use·option·<code·class="inline">element</code>.·The·returned·elements·are·then·on·the
1936 form·<code·class="inline">{Required,Value}</code>.</p><p>See·also·<a·href="#get_config/1"><code·class="inline">ct:get_config/1</code></a>,1936 form·<code·class="inline">{Required,Value}</code>.</p><p>See·also·<a·href="#get_config/1"><code·class="inline">ct:get_config/1</code></a>,
1937 <a·href="#get_config/2"><code·class="inline">ct:get_config/2</code></a>,·<a·href="#require/1"><code·class="inline">ct:require/1</code></a>,1937 <a·href="#get_config/2"><code·class="inline">ct:get_config/2</code></a>,·<a·href="#require/1"><code·class="inline">ct:require/1</code></a>,
1938 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>.</p>1938 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>.</p>
Offset 1962, 15 lines modifiedOffset 1962, 15 lines modified
1962 ······<div·class="specs">1962 ······<div·class="specs">
  
1963 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_event_mgr_ref()·->·EvMgrRef·when·EvMgrRef·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>().</pre>1963 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_event_mgr_ref()·->·EvMgrRef·when·EvMgrRef·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>().</pre>
  
1964 ······</div>1964 ······</div>
  
1965 <p>Gets·a·reference·to·the·<code·class="inline">Common·Test</code>·event·manager.·The·reference·can·be·used1965 <p>Gets·a·reference·to·the·<code·class="inline">Common·Test</code>·event·manager.·The·reference·can·be·used
1966 to,·for·example,·add·a·user-specific·event·handler·while·tests·are·running.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="3777201053-1">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_event_mgr_ref</span><span·class="p"·data-group-id="3777201053-2">(</span><span·class="p"·data-group-id="3777201053-2">)</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·237,·SHA:·8675b4948482d077826d98ca53b879e0ec363b480d94a771b38ff109cc633945·...·]-1">)</span></code></pre>1966 to,·for·example,·add·a·user-specific·event·handler·while·tests·are·running.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="7353405629-1">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_event_mgr_ref</span><span·class="p"·data-group-id="7353405629-2">(</span><span·class="p"·data-group-id="7353405629-2">)</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·237,·SHA:·b7b6c61b66314aada03c8b6dc2c36c7beaea2046b899c3e4a5b417daa15afe91·...·]-1">)</span></code></pre>
1967 ··</section>1967 ··</section>
1968 </section>1968 </section>
1969 <section·class="detail"·id="get_progname/0">1969 <section·class="detail"·id="get_progname/0">
  
1970 ··<div·class="detail-header">1970 ··<div·class="detail-header">
1971 ····<a·href="#get_progname/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1971 ····<a·href="#get_progname/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1972 ······<i·class="ri-link-m"·aria-hidden="true"></i>1972 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 2235, 15 lines modifiedOffset 2235, 15 lines modified
2235 ·····················KeyOrFile·::·{key,·Key}·|·{file,·KeyFile},2235 ·····················KeyOrFile·::·{key,·Key}·|·{file,·KeyFile},
2236 ·····················Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),2236 ·····················Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),
2237 ·····················KeyFile·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),2237 ·····················KeyFile·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),
2238 ·····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>2238 ·····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
2239 ······</div>2239 ······</div>
  
2240 <p>Installs·configuration·files·and·event·handlers.</p><p>Run·this·function·once·before·the·first·test.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">install</span><span·class="p"·data-group-id="0823535310-1">(</span><span·class="p"·data-group-id="0823535310-2">[</span><span·class="p"·data-group-id="0823535310-3">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="p"·data-group-id="0823535310-4">[</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·303,·SHA:·5a763a8a838c007c49b9b2ebb5720ea6fd1862fbf33be123b4c07d9a1fb2b5eb·...·]-1">)</span></code></pre><p>This·function·is·automatically·run·by·program·<code·class="inline">ct_run</code>.</p>2240 <p>Installs·configuration·files·and·event·handlers.</p><p>Run·this·function·once·before·the·first·test.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">install</span><span·class="p"·data-group-id="5729192297-1">(</span><span·class="p"·data-group-id="5729192297-2">[</span><span·class="p"·data-group-id="5729192297-3">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="p"·data-group-id="5729192297-4">[</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·303,·SHA:·7e323f632ad96c54a8b68bfe3c3c3c64784cce4bf528e8d9e3585bcc31a7d95e·...·]-1">)</span></code></pre><p>This·function·is·automatically·run·by·program·<code·class="inline">ct_run</code>.</p>
2241 ··</section>2241 ··</section>
2242 </section>2242 </section>
2243 <section·class="detail"·id="listenv/1">2243 <section·class="detail"·id="listenv/1">
  
2244 ··<div·class="detail-header">2244 ··<div·class="detail-header">
2245 ····<a·href="#listenv/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2245 ····<a·href="#listenv/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
2246 ······<i·class="ri-link-m"·aria-hidden="true"></i>2246 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3026, 15 lines modifiedOffset 3026, 15 lines modified
3026 ·····················SubKey·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),3026 ·····················SubKey·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),
3027 ·····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>3027 ·····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3028 ······</div>3028 ······</div>
  
3029 <p>Checks·if·the·required·configuration·is·available.·Arbitrarily·deep·tuples·can3029 <p>Checks·if·the·required·configuration·is·available.·Arbitrarily·deep·tuples·can
3030 be·specified·as·<code·class="inline">Required</code>.·Only·the·last·element·of·the·tuple·can·be·a·list·of3030 be·specified·as·<code·class="inline">Required</code>.·Only·the·last·element·of·the·tuple·can·be·a·list·of
3031 <code·class="inline">SubKey</code>s.</p><p><em>Example·1.</em>·Require·the·variable·<code·class="inline">myvar</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="2618146292-1">(</span><span·class="ss">myvar</span><span·class="p"·data-group-id="2618146292-1">)</span><span·class="p">.</span></code></pre><p>In·this·case·the·configuration·file·must·at·least·contain:</p><pre><code·class="makeup·erlang"·translate="no"><s[·...·truncated·by·diffoscope;·len:·3488,·SHA:·29f3118da160fdbe1aa8b0f2f70a501f129b59d275b9e31288f488c96cb964e7·...·]-1">}</span><span·class="p">.</span></code></pre><p>See·also·<a·href="#get_config/1"><code·class="inline">ct:get_config/1</code></a>,3031 <code·class="inline">SubKey</code>s.</p><p><em>Example·1.</em>·Require·the·variable·<code·class="inline">myvar</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="3790442249-1">(</span><span·class="ss">myvar</span><span·class="p"·data-group-id="3790442249-1">)</span><span·class="p">.</span></code></pre><p>In·this·case·the·configuration·file·must·at·least·contain:</p><pre><code·class="makeup·erlang"·translate="no"><s[·...·truncated·by·diffoscope;·len:·3488,·SHA:·7792376def87e0c3ec7982f3f60d137564b98301ddf340d5adb8bb5de23d0179·...·]-1">}</span><span·class="p">.</span></code></pre><p>See·also·<a·href="#get_config/1"><code·class="inline">ct:get_config/1</code></a>,
3032 <a·href="#get_config/2"><code·class="inline">ct:get_config/2</code></a>,·<a·href="#get_config/3"><code·class="inline">ct:get_config/3</code></a>,3032 <a·href="#get_config/2"><code·class="inline">ct:get_config/2</code></a>,·<a·href="#get_config/3"><code·class="inline">ct:get_config/3</code></a>,
3033 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>.</p>3033 <a·href="#require/2"><code·class="inline">ct:require/2</code></a>.</p>
3034 ··</section>3034 ··</section>
3035 </section>3035 </section>
3036 <section·class="detail"·id="require/2">3036 <section·class="detail"·id="require/2">
  
3037 ··<div·class="detail-header">3037 ··<div·class="detail-header">
Offset 3066, 16 lines modifiedOffset 3066, 16 lines modified
  
3066 <p>Checks·if·the·required·configuration·is·available·and·gives·it·a·name.·The3066 <p>Checks·if·the·required·configuration·is·available·and·gives·it·a·name.·The
3067 semantics·for·<code·class="inline">Required</code>·is·the·same·as·in·<a·href="#require/1"><code·class="inline">ct:require/1</code></a>·except3067 semantics·for·<code·class="inline">Required</code>·is·the·same·as·in·<a·href="#require/1"><code·class="inline">ct:require/1</code></a>·except
3068 that·a·list·of·<code·class="inline">SubKey</code>s·cannot·be·specified.</p><p>If·the·requested·data·is·available,·the·subentry·is·associated·with·<code·class="inline">Name</code>·so3068 that·a·list·of·<code·class="inline">SubKey</code>s·cannot·be·specified.</p><p>If·the·requested·data·is·available,·the·subentry·is·associated·with·<code·class="inline">Name</code>·so
3069 that·the·value·of·the·element·can·be·read·with3069 that·the·value·of·the·element·can·be·read·with
3070 <a·href="#get_config/1"><code·class="inline">ct:get_config/1,2</code></a>·provided·<code·class="inline">Name</code>·is·used·instead·of·the3070 <a·href="#get_config/1"><code·class="inline">ct:get_config/1,2</code></a>·provided·<code·class="inline">Name</code>·is·used·instead·of·the
3071 whole·<code·class="inline">Required</code>·term.</p><p><em>Example:</em></p><p>Require·one·node·with·a·Telnet·connection·and·an·FTP·connection.·Name·the·node3071 whole·<code·class="inline">Required</code>·term.</p><p><em>Example:</em></p><p>Require·one·node·with·a·Telnet·connection·and·an·FTP·connection.·Name·the·node
3072 <code·class="inline">a</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="1079458424-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="1079458424-2">{</span><span·class="ss">machine</span><span·class="p">,</span><span·class="nb">node</span><span·class="p"·data-group-id="1079458424-2">}</span><span·class="p"·data-group-id="1079458424-1">)</span><span·class="p">.</span></code></pre><p>All·references·to·this·node·can·then·use·the·node·name.·For·example,·a·file·over 
3073 FTP·is·fetched·like·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">ftp_get</sp[·...·truncated·by·diffoscope;·len:·1560,·SHA:·1985a0288a4bbfb3ebae69ede2cb0ab284d249c3d3850e195b8e985cb7e501ea·...·]3072 <code·class="inline">a</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</[·...·truncated·by·diffoscope;·len:·469,·SHA:·c829580824008b9db70aba5ede13868a053b3dce01265c336e3c79a0656fa8df·...·]
 3073 FTP·is·fetched·like·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">ftp_get</span><span·class="p"·data-group-id="2052675386-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="n">RemoteFile</span><span·class="p">,</span><span·class="n">LocalFile</span><span·class="p"·data-group-id="2052675386-1">)</span><span·class="p">.</span></code></pre><p>For·this·to·work,·the·configuration·file·must·at·least·contain:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1242552118-1">{</span><span·class="ss">machine</span><span·class="p">,</span><span·class="p"·data-group-id="1242552118-2">[</span><span·class="p"·data-group-id="1242552118-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="1242552118-4">[</span><span·class="p"·data-group-id="1242552118-5">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="1242552118-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="1242552118-6">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="1242552118-6">}</span><span·class="p"·data-group-id="1242552118-4">]</span><span·class="p"·data-group-id="1242552118-3">}</span><span·class="p"·data-group-id="1242552118-2">]</span><span·class="p"·data-group-id="1242552118-1">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·behavior·of·this·function·changed·radically·in·<code·class="inline">Common·Test</code>·1.6.2.·To
3074 keep·some·backwards·compatibility,·it·is·still·possible·to·do:3074 keep·some·backwards·compatibility,·it·is·still·possible·to·do:
3075 <code·class="inline">ct:require(a,{node,[telnet,ftp]}).</code>·This·associates·the·name·<code·class="inline">a</code>·with·the3075 <code·class="inline">ct:require(a,{node,[telnet,ftp]}).</code>·This·associates·the·name·<code·class="inline">a</code>·with·the
3076 top-level·<code·class="inline">node</code>·entry.·For·this·to·work,·the·configuration·file·must·at·least3076 top-level·<code·class="inline">node</code>·entry.·For·this·to·work,·the·configuration·file·must·at·least
3077 contain:·<code·class="inline">{node,[{telnet,IpAddr},{ftp,IpAddr}]}.</code></p></section><p>See·also·<a·href="#get_config/1"><code·class="inline">ct:get_config/1</code></a>,3077 contain:·<code·class="inline">{node,[{telnet,IpAddr},{ftp,IpAddr}]}.</code></p></section><p>See·also·<a·href="#get_config/1"><code·class="inline">ct:get_config/1</code></a>,
3078 <a·href="#get_config/2"><code·class="inline">ct:get_config/2</code></a>,·<a·href="#get_config/3"><code·class="inline">ct:get_config/3</code></a>,3078 <a·href="#get_config/2"><code·class="inline">ct:get_config/2</code></a>,·<a·href="#get_config/3"><code·class="inline">ct:get_config/3</code></a>,
3079 <a·href="#require/1"><code·class="inline">ct:require/1</code></a>.</p>3079 <a·href="#require/1"><code·class="inline">ct:require/1</code></a>.</p>
3080 ··</section>3080 ··</section>
Offset 3426, 20 lines modifiedOffset 3426, 20 lines modified
  
3426 ······</div>3426 ······</div>
  
3427 <p>Starts·<code·class="inline">Common·Test</code>·in·interactive·mode.</p><p>From·this·mode,·all·test·case·support·functions·can·be·executed·directly·from3427 <p>Starts·<code·class="inline">Common·Test</code>·in·interactive·mode.</p><p>From·this·mode,·all·test·case·support·functions·can·be·executed·directly·from
3428 the·Erlang·shell.·The·interactive·mode·can·also·be·started·from·the·OS·command3428 the·Erlang·shell.·The·interactive·mode·can·also·be·started·from·the·OS·command
3429 line·with·<code·class="inline">ct_run·-shell·[-config·File...]</code>.</p><p>If·any·functions·(for·example,·Telnet·or·FTP)·using·&quot;required·configuration3429 line·with·<code·class="inline">ct_run·-shell·[-config·File...]</code>.</p><p>If·any·functions·(for·example,·Telnet·or·FTP)·using·&quot;required·configuration
3430 data&quot;·are·to·be·called·from·the·Erlang·shell,·configuration·data·must·first·be3430 data&quot;·are·to·be·called·from·the·Erlang·shell,·configuration·data·must·first·be
3431 required·with·<a·href="#require/2"><code·class="inline">ct:require/2</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="0169130012-1">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix</span><span·class="p"·data-group-id="0169130012-1">)</span><span·class="p">.</span><span·class="w">3431 required·with·<a·href="#require/2"><code·class="inline">ct:require/2</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="7265051241-1">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix</span><span·class="p"·data-group-id="7265051241-1">)</span><span·class="p">.</span><span·class="w">
3432 </span><span·class="ss">ok</span><span·class="gp·unselectable">3432 </span><span·class="ss">ok</span><span·class="gp·unselectable">
3433 &gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="0169130012-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="0169130012-2">)</span><span·class="p">.</span><span·class="w">3433 &gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="7265051241-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="7265051241-2">)</span><span·class="p">.</span><span·class="w">
3434 </span><span·class="p"·data-group-id="0169130012-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.105</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0169130012-3">}</span><span·class="gp·unselectable">3434 </span><span·class="p"·data-group-id="7265051241-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.105</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7265051241-3">}</span><span·class="gp·unselectable">
3435 &gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="0169130012-4">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ls·.&quot;</span><span·class="p"·data-group-id="0169130012-4">)</span><span·class="p">.</span><span·class="w">3435 &gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="7265051241-4">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ls·.&quot;</span><span·class="p"·data-group-id="7265051241-4">)</span><span·class="p">.</span><span·class="w">
3436 </span><span·class="p"·data-group-id="0169130012-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0169130012-6">[</span><span·class="s">&quot;ls&quot;</span><span·class="p">,</span><span·class="s">&quot;file1··...&quot;</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·165,·SHA:·3f52808cc835e5a059cc4cbc6576257cb713a6613f4230c64bca999265c050dc·...·]-5">}</span></code></pre>3436 </span><span·class="p"·data-group-id="7265051241-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7265051241-6">[</span><span·class="s">&quot;ls&quot;</span><span·class="p">,</span><span·class="s">&quot;file1··...&quot;</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·165,·SHA:·e9485a0429a68796f2d77fe36401332c7312a3d63165de9b1a6f1ebde00cccb4·...·]-5">}</span></code></pre>
3437 ··</section>3437 ··</section>
3438 </section>3438 </section>
3439 <section·class="detail"·id="step/3">3439 <section·class="detail"·id="step/3">
  
3440 ··<div·class="detail-header">3440 ··<div·class="detail-header">
3441 ····<a·href="#step/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3441 ····<a·href="#step/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3442 ······<i·class="ri-link-m"·aria-hidden="true"></i>3442 ······<i·class="ri-link-m"·aria-hidden="true"></i>
4.65 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_ftp.html
    
Offset 567, 18 lines modifiedOffset 567, 18 lines modified
567 ·················LocalFile·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename/0">file:filename</a>(),567 ·················LocalFile·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename/0">file:filename</a>(),
568 ·················RemoteFile·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename/0">file:filename</a>(),568 ·················RemoteFile·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename/0">file:filename</a>(),
569 ·················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>569 ·················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
570 ······</div>570 ······</div>
  
571 <p>Opens·an·FTP·connection·and·sends·a·file·to·the·remote·host.</p><p><code·class="inline">LocalFile</code>·and·<code·class="inline">RemoteFile</code>·must·be·absolute·paths.</p><p>If·the·target·host·is·a·&quot;special&quot;·node,·the·FTP·address·must·be·specified·in·the571 <p>Opens·an·FTP·connection·and·sends·a·file·to·the·remote·host.</p><p><code·class="inline">LocalFile</code>·and·<code·class="inline">RemoteFile</code>·must·be·absolute·paths.</p><p>If·the·target·host·is·a·&quot;special&quot;·node,·the·FTP·address·must·be·specified·in·the
572 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2913194714-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="2913194714-2">[</span><span·class="p"·data-group-id="2913194714-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="2913194714-3">}</span><span·class="p"·data-group-id="2913194714-2">]</span><span·class="p"·data-group-id="2913194714-1">}</span><span·class="p">.</span></code></pre><p>If·the·target·host·is·something·else,·for·example,·a·UNIX·host,·the 
573 configuration·file·must·also·include·the·username·and·password·(both·strings):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6143693557-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="614369355[·...·truncated·by·diffoscope;·len:·239,·SHA:·8f545ffa8dc8c32ae9c0f98bf675ecaae12e4608bb966f90681c94d879b1f588·...·]572 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7918207188-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="7918207188-2">[</span><span·class="p"·data-group-id="7918[·...·truncated·by·diffoscope;·len:·364,·SHA:·1d44f7f126af2efd15668f9d3247c1caaf2c149c9154cb58a7d9fe23faaab9a8·...·]
 573 configuration·file·must·also·include·the·username·and·password·(both·strings):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9212339225-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="9212339225-2">[</span><span·class="p"·data-group-id="9212339225-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="9212339225-3">}</span><span·class="p">,</span><span·class="w">
574 ·······</span><span·class="p"·data-group-id="6143693557-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="6143693557-4">}</span><span·class="p">,</span><span·class="w">574 ·······</span><span·class="p"·data-group-id="9212339225-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="9212339225-4">}</span><span·class="p">,</span><span·class="w">
575 ·······</span><span·class="p"·data-group-id="6143693557-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="6143693557-5">}</span><span·class="p"·data-group-id="6143693557-2">]</span><span·class="p"·data-group-id="6143693557-1">}</span><span·class="p">.</span></code></pre><p>See·also·<a·href="ct.html#require/2"><code·class="inline">ct:require/2</code></a>.</p>575 ·······</span><span·class="p"·data-group-id="9212339225-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="9212339225-5">}</span><span·class="p"·data-group-id="9212339225-2">]</span><span·class="p"·data-group-id="9212339225-1">}</span><span·class="p">.</span></code></pre><p>See·also·<a·href="ct.html#require/2"><code·class="inline">ct:require/2</code></a>.</p>
576 ··</section>576 ··</section>
577 </section>577 </section>
578 <section·class="detail"·id="recv/2">578 <section·class="detail"·id="recv/2">
  
579 ··<div·class="detail-header">579 ··<div·class="detail-header">
580 ····<a·href="#recv/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">580 ····<a·href="#recv/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
581 ······<i·class="ri-link-m"·aria-hidden="true"></i>581 ······<i·class="ri-link-m"·aria-hidden="true"></i>
60.1 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_hooks_chapter.html
    
Offset 249, 20 lines modifiedOffset 249, 20 lines modified
249 </h3>249 </h3>
250 <p>In·a·CTH,·the·behavior·can·be·hooked·in·before·the·following·functions:</p><ul><li><a·href="ct_suite.html#c:init_per_suite/1"><code·class="inline">init_per_suite</code></a></li><li><a·href="ct_suite.html#c:init_per_group/2"><code·class="inline">init_per_group</code></a></li><li><a·href="ct_suite.html#c:init_per_testcase/2"><code·class="inline">init_per_testcase</code></a></li><li><a·href="ct_suite.html#c:end_per_testcase/2"><code·class="inline">end_per_testcase</code></a></li><li><a·href="ct_suite.html#c:end_per_group/2"><code·class="inline">end_per_group</code></a></li><li><a·href="ct_suite.html#c:end_per_suite/1"><code·class="inline">end_per_suite</code></a></li></ul><p>This·is·done·in·the·CTH·functions·called·<code·class="inline">pre_&lt;name·of·function&gt;</code>.·These250 <p>In·a·CTH,·the·behavior·can·be·hooked·in·before·the·following·functions:</p><ul><li><a·href="ct_suite.html#c:init_per_suite/1"><code·class="inline">init_per_suite</code></a></li><li><a·href="ct_suite.html#c:init_per_group/2"><code·class="inline">init_per_group</code></a></li><li><a·href="ct_suite.html#c:init_per_testcase/2"><code·class="inline">init_per_testcase</code></a></li><li><a·href="ct_suite.html#c:end_per_testcase/2"><code·class="inline">end_per_testcase</code></a></li><li><a·href="ct_suite.html#c:end_per_group/2"><code·class="inline">end_per_group</code></a></li><li><a·href="ct_suite.html#c:end_per_suite/1"><code·class="inline">end_per_suite</code></a></li></ul><p>This·is·done·in·the·CTH·functions·called·<code·class="inline">pre_&lt;name·of·function&gt;</code>.·These
251 functions·take·the·arguments·<code·class="inline">SuiteName</code>,·<code·class="inline">Name</code>·(group·or·test·case·name,·if251 functions·take·the·arguments·<code·class="inline">SuiteName</code>,·<code·class="inline">Name</code>·(group·or·test·case·name,·if
252 applicable),·<code·class="inline">Config</code>,·and·<code·class="inline">CTHState</code>.·The·return·value·of·the·CTH·function·is252 applicable),·<code·class="inline">Config</code>,·and·<code·class="inline">CTHState</code>.·The·return·value·of·the·CTH·function·is
253 always·a·combination·of·a·result·for·the·suite/group/test·and·an·updated253 always·a·combination·of·a·result·for·the·suite/group/test·and·an·updated
254 <code·class="inline">CTHState</code>.</p><p>To·let·the·test·suite·continue·on·executing,·return·the·configuration·list·that254 <code·class="inline">CTHState</code>.</p><p>To·let·the·test·suite·continue·on·executing,·return·the·configuration·list·that
255 you·want·the·test·to·use·as·the·result.</p><p>All·pre·hooks,·except·<code·class="inline">pre_end_per_testcase/4</code>,·can·skip·or·fail·the·test·by255 you·want·the·test·to·use·as·the·result.</p><p>All·pre·hooks,·except·<code·class="inline">pre_end_per_testcase/4</code>,·can·skip·or·fail·the·test·by
256 returning·a·tuple·with·<code·class="inline">skip</code>·or·<code·class="inline">fail</code>,·and·a·reason·as·the·result.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">pre_init_per_suite</span><span·class="p"·data-group-id="1007728862-1">(</span><span·class="n">SuiteName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CTHState</span><span·class="p"·data-group-id="1007728862-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">256 returning·a·tuple·with·<code·class="inline">skip</code>·or·<code·class="inline">fail</code>,·and·a·reason·as·the·result.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">pre_init_per_suite</span><span·class="p"·data-group-id="2278512938-1">(</span><span·class="n">SuiteName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CTHState</span><span·class="p"·data-group-id="2278512938-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
257 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="1007728862-2">(</span><span·class="p"·data-group-id="1007728862-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">257 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="2278512938-2">(</span><span·class="p"·data-group-id="2278512938-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
258 ····</span><span·class="p"·data-group-id="1007728862-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p"·data-group-id="1007728862-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 ····</span><span·class="p"·data-group-id="2278512938-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p"·data-group-id="2278512938-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ······</span><span·class="p"·data-group-id="1007728862-4">{</span><span·class="p"·data-group-id="1007728862-5">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Could·not·connect·to·DB&quot;</span><span·class="p"·data-group-id="1007728862-5">}<[·...·truncated·by·diffoscope;·len:·126,·SHA:·b966f0a66773ec1e57a9068779833f660b63da4447287cbb997007ceed1cdbe4·...·]-4">}</span><span·class="p">;</span><span·class="w">259 ······</span><span·class="p"·data-group-id="2278512938-4">{</span><span·class="p"·data-group-id="2278512938-5">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Could·not·connect·to·DB&quot;</span><span·class="p"·data-group-id="2278512938-5">}<[·...·truncated·by·diffoscope;·len:·126,·SHA:·b4a205ac804aa214b16c8b7e1f327aa691941ba45633920001185f1aab4d7518·...·]-4">}</span><span·class="p">;</span><span·class="w">
260 ····</span><span·class="p"·data-group-id="1007728862-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·data-group-id="1007728862-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 ····</span><span·class="p"·data-group-id="2278512938-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·data-group-id="2278512938-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ······</span><span·class="p"·data-group-id="1007728862-7">{</span><span·class="p"·data-group-id="1007728862-8">[</span><span·class="p"·data-group-id="1007728862-9">{</span><span·class="ss">db_handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·649,·SHA:·e66aebf706adf6cabddfe13f7008d7886847a6b07ba8ef7a4f41ebb5671d9292·...·]-7">}</span><span·class="w">261 ······</span><span·class="p"·data-group-id="2278512938-7">{</span><span·class="p"·data-group-id="2278512938-8">[</span><span·class="p"·data-group-id="2278512938-9">{</span><span·class="ss">db_handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·649,·SHA:·12f18bb5c1f062f847524237a25469a98f41f56e14b0dfc634aafb66ccc1c85f·...·]-7">}</span><span·class="w">
262 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·use·multiple·CTHs,·the·first·part·of·the·return·tuple·is·used·as·input262 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·use·multiple·CTHs,·the·first·part·of·the·return·tuple·is·used·as·input
263 for·the·next·CTH.·So·in·the·previous·example·the·next·CTH·can·get263 for·the·next·CTH.·So·in·the·previous·example·the·next·CTH·can·get
264 <code·class="inline">{fail,Reason}</code>·as·the·second·parameter.·If·you·have·many·CTHs·interacting,·do264 <code·class="inline">{fail,Reason}</code>·as·the·second·parameter.·If·you·have·many·CTHs·interacting,·do
265 not·let·each·CTH·return·<code·class="inline">fail</code>·or·<code·class="inline">skip</code>.·Instead,·return·that·an·action·is·to265 not·let·each·CTH·return·<code·class="inline">fail</code>·or·<code·class="inline">skip</code>.·Instead,·return·that·an·action·is·to
266 be·taken·through·the·<code·class="inline">Config</code>·list·and·implement·a·CTH·that,·at·the·end,·takes266 be·taken·through·the·<code·class="inline">Config</code>·list·and·implement·a·CTH·that,·at·the·end,·takes
267 the·correct·action.</p></section><p><a·href=""·id="post"></a></p><h3·id="post-hooks"·class="section-heading">267 the·correct·action.</p></section><p><a·href=""·id="post"></a></p><h3·id="post-hooks"·class="section-heading">
268 ··<a·href="#post-hooks"·class="hover-link">268 ··<a·href="#post-hooks"·class="hover-link">
Offset 276, 26 lines modifiedOffset 276, 26 lines modified
276 same·<code·class="inline">Config</code>·as·the·testcase·is·called·with.·<code·class="inline">Return</code>·is·the·value·returned·by276 same·<code·class="inline">Config</code>·as·the·testcase·is·called·with.·<code·class="inline">Return</code>·is·the·value·returned·by
277 the·testcase.·If·the·testcase·fails·by·crashing,·<code·class="inline">Return</code>·is277 the·testcase.·If·the·testcase·fails·by·crashing,·<code·class="inline">Return</code>·is
278 <code·class="inline">{'EXIT',{{Error,Reason},Stacktrace}}</code>.</p><p>The·return·value·of·the·CTH·function·is·always·a·combination·of·a·result·for·the278 <code·class="inline">{'EXIT',{{Error,Reason},Stacktrace}}</code>.</p><p>The·return·value·of·the·CTH·function·is·always·a·combination·of·a·result·for·the
279 suite/group/test·and·an·updated·<code·class="inline">CTHState</code>.·If·you·do·not·want·the·callback·to279 suite/group/test·and·an·updated·<code·class="inline">CTHState</code>.·If·you·do·not·want·the·callback·to
280 affect·the·outcome·of·the·test,·return·the·<code·class="inline">Return</code>·data·as·it·is·given·to·the280 affect·the·outcome·of·the·test,·return·the·<code·class="inline">Return</code>·data·as·it·is·given·to·the
281 CTH.·You·can·also·modify·the·test·result.·By·returning·the·<code·class="inline">Config</code>·list·with281 CTH.·You·can·also·modify·the·test·result.·By·returning·the·<code·class="inline">Config</code>·list·with
282 element·<code·class="inline">tc_status</code>·removed,·you·can·recover·from·a·test·failure.·As·in·all·the282 element·<code·class="inline">tc_status</code>·removed,·you·can·recover·from·a·test·failure.·As·in·all·the
283 pre·hooks,·it·is·also·possible·to·fail/skip·the·test·case·in·the·post·hook.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">post_end_per_testcase</span><span·class="p"·data-group-id="2454495060-1">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·506,·SHA:·84df81e17424000e4d971e34fe43d29daa37271a759507323a4474fd15f2cf5c·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">283 pre·hooks,·it·is·also·possible·to·fail/skip·the·test·case·in·the·post·hook.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">post_end_per_testcase</span><span·class="p"·data-group-id="0585698971-1">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·506,·SHA:·46b3e7f2b8f6b15ee1c77a3ba53a75fc7d59e7aadf53aa36d364f99df17239cc·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
284 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">check_consistency</span><span·class="p"·data-group-id="2454495060-4">(</span><span·class="p"·data-group-id="2454495060-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">284 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">check_consistency</span><span·class="p"·data-group-id="0585698971-4">(</span><span·class="p"·data-group-id="0585698971-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
285 ····</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">285 ····</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
286 ······</span><span·class="c1">%%·DB·is·good,·pass·the·test.</span><span·class="w">286 ······</span><span·class="c1">%%·DB·is·good,·pass·the·test.</span><span·class="w">
287 ······</span><span·class="p"·data-group-id="2454495060-5">{</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="2454495060-6">(</span><span·class="ss">tc_status</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·bb6d06fc8a1213c3df1659fa2881e04eb05f181401787794fd86068c11c2a4d0·...·]-5">}</span><span·class="p">;</span><span·class="w">287 ······</span><span·class="p"·data-group-id="0585698971-5">{</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="0585698971-6">(</span><span·class="ss">tc_status</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·cd2132d39dd119c8e0534ef1dc96ae65eeda52d56dd224a3468c98d00b85b4d4·...·]-5">}</span><span·class="p">;</span><span·class="w">
288 ····</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">288 ····</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
289 ······</span><span·class="c1">%%·DB·is·not·good,·mark·as·skipped·instead·of·failing</span><span·class="w">289 ······</span><span·class="c1">%%·DB·is·not·good,·mark·as·skipped·instead·of·failing</span><span·class="w">
290 ······</span><span·class="p"·data-group-id="2454495060-7">{</span><span·class="p"·data-group-id="2454495060-8">{</span><span·class="ss">skip</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;DB·is·inconsistent!&quot;</span><span·class="p"·data-group-id="2454495060-8">}</spa[·...·truncated·by·diffoscope;·len:·122,·SHA:·ee9d0a6bc5715f00115dd81dbfde50f3081465a7d36994f99b4f970090ebdda0·...·]-7">}</span><span·class="w">290 ······</span><span·class="p"·data-group-id="0585698971-7">{</span><span·class="p"·data-group-id="0585698971-8">{</span><span·class="ss">skip</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;DB·is·inconsistent!&quot;</span><span·class="p"·data-group-id="0585698971-8">}</spa[·...·truncated·by·diffoscope;·len:·122,·SHA:·0ba1e28cd814dc7da82a1c57604b0c3e3b0db06e1819b67582e709716c2843e7·...·]-7">}</span><span·class="w">
291 ··</span><span·class="k">end</span><span·class="p">;</span><span·class="w">291 ··</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
292 </span><span·class="nf">post_end_per_testcase</span><span·class="p"·data-group-id="2454495060-9">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·189,·SHA:·31be2df7107d4ddfd5f25b47de565057017e9e8479ad035da2ffb31ec2408ee4·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">292 </span><span·class="nf">post_end_per_testcase</span><span·class="p"·data-group-id="0585698971-9">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·189,·SHA:·1b7439034a5a0335085cb414c508c0701cf841aa0b476efd1e36bbbf7bc7ebcd·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
293 ··</span><span·class="c1">%%·Do·nothing·if·tc·does·not·crash.</span><span·class="w">293 ··</span><span·class="c1">%%·Do·nothing·if·tc·does·not·crash.</span><span·class="w">
294 ··</span><span·class="p"·data-group-id="2454495060-10">{</span><span·class="n">Return</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CTHState</span><span·class="p"·data-group-id="2454495060-10">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Do·recover·from·a·testcase·failure·using·CTHs·only·a·last·resort.·If·used294 ··</span><span·class="p"·data-group-id="0585698971-10">{</span><span·class="n">Return</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CTHState</span><span·class="p"·data-group-id="0585698971-10">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Do·recover·from·a·testcase·failure·using·CTHs·only·a·last·resort.·If·used
295 wrongly,·it·can·be·very·difficult·to·determine·which·tests·that·pass·or·fail295 wrongly,·it·can·be·very·difficult·to·determine·which·tests·that·pass·or·fail
296 in·a·test·run.</p></section><h3·id="skip-and-fail-hooks"·class="section-heading">296 in·a·test·run.</p></section><h3·id="skip-and-fail-hooks"·class="section-heading">
297 ··<a·href="#skip-and-fail-hooks"·class="hover-link">297 ··<a·href="#skip-and-fail-hooks"·class="hover-link">
298 ····<i·class="ri-link-m"·aria-hidden="true"></i>298 ····<i·class="ri-link-m"·aria-hidden="true"></i>
299 ··</a>299 ··</a>
300 ··<span·class="text">Skip·and·Fail·Hooks</span>300 ··<span·class="text">Skip·and·Fail·Hooks</span>
301 </h3>301 </h3>
Offset 336, 88 lines modifiedOffset 336, 88 lines modified
336 <p>The·following·CTH·logs·information·about·a·test·run·into·a·format·parseable·by336 <p>The·following·CTH·logs·information·about·a·test·run·into·a·format·parseable·by
337 <a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>·(in·Kernel):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%·Common·Test·Example·Common·Test·Hook·module.</span><span·class="w">337 <a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>·(in·Kernel):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%·Common·Test·Example·Common·Test·Hook·module.</span><span·class="w">
338 </span><span·class="c1">%%%</span><span·class="w">338 </span><span·class="c1">%%%</span><span·class="w">
339 </span><span·class="c1">%%%·To·use·this·hook,·on·the·command·line:</span><span·class="w">339 </span><span·class="c1">%%%·To·use·this·hook,·on·the·command·line:</span><span·class="w">
340 </span><span·class="c1">%%%·····ct_run·-suite·example_SUITE·-pa·.·-ct_hooks·example_cth</span><span·class="w">340 </span><span·class="c1">%%%·····ct_run·-suite·example_SUITE·-pa·.·-ct_hooks·example_cth</span><span·class="w">
341 </span><span·class="c1">%%%</span><span·class="w">341 </span><span·class="c1">%%%</span><span·class="w">
342 </span><span·class="c1">%%%·Note·`-pa·.`:·the·hook·beam·file·must·be·in·the·code·path·when·installing.</span><span·class="w">342 </span><span·class="c1">%%%·Note·`-pa·.`:·the·hook·beam·file·must·be·in·the·code·path·when·installing.</span><span·class="w">
343 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1530977944-1">(</span><span·class="ss">example_cth</span><span·class="p"·data-group-id="1530977944-1">)</span><span·class="p">.</span><span·class="w">343 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6114508334-1">(</span><span·class="ss">example_cth</span><span·class="p"·data-group-id="6114508334-1">)</span><span·class="p">.</span><span·class="w">
  
344 </span><span·class="c1">%%·Mandatory·Callbacks</span><span·class="w">344 </span><span·class="c1">%%·Mandatory·Callbacks</span><span·class="w">
345 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-2">(</span><span·class="p"·data-group-id="1530977944-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="1530977944-3">]</span><span·class="p"·data-group-id="1530977944-2">)</span><span·class="p">.</span><span·class="w">345 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-2">(</span><span·class="p"·data-group-id="6114508334-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="6114508334-3">]</span><span·class="p"·data-group-id="6114508334-2">)</span><span·class="p">.</span><span·class="w">
  
346 </span><span·class="c1">%%·Optional·Callbacks</span><span·class="w">346 </span><span·class="c1">%%·Optional·Callbacks</span><span·class="w">
347 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-4">(</span><span·class="p"·data-group-id="1530977944-5">[</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1530977944-5">]</span><span·class="p"·data-group-id="1530977944-4">)</span><span·class="p">.</span><span·class="w">347 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-4">(</span><span·class="p"·data-group-id="6114508334-5">[</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6114508334-5">]</span><span·class="p"·data-group-id="6114508334-4">)</span><span·class="p">.</span><span·class="w">
348 </span><span·class="w">348 </span><span·class="w">
349 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-6">(</span><span·class="p"·data-group-id="1530977944-7">[</span><span·class="ss">pre_init_per_suite</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="1530977944-7">]</span><span·class="p"·data-group-id="153097[·...·truncated·by·diffoscope;·len:·3,·SHA:·5283f1b4e66467616feca1e0162c7d37e4e304623d6343a525553ffb436cbdfe·...·]4-6">)</span><span·class="p">.</span><span·class="w">349 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-6">(</span><span·class="p"·data-group-id="6114508334-7">[</span><span·class="ss">pre_init_per_suite</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="6114508334-7">]</span><span·class="p"·data-group-id="611450[·...·truncated·by·diffoscope;·len:·3,·SHA:·130790feced08212eed7d1490dd4d7abf138543be61a4744a03f69ecb9609764·...·]4-6">)</span><span·class="p">.</span><span·class="w">
350 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-8">(</span><span·class="p"·data-group-id="1530977944-9">[</span><span·class="ss">post_end_per_suite</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="1530977944-9">]</span><span·class="p"·data-group-id="153097[·...·truncated·by·diffoscope;·len:·3,·SHA:·5283f1b4e66467616feca1e0162c7d37e4e304623d6343a525553ffb436cbdfe·...·]4-8">)</span><span·class="p">.</span><span·class="w">350 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-8">(</span><span·class="p"·data-group-id="6114508334-9">[</span><span·class="ss">post_end_per_suite</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="6114508334-9">]</span><span·class="p"·data-group-id="611450[·...·truncated·by·diffoscope;·len:·3,·SHA:·130790feced08212eed7d1490dd4d7abf138543be61a4744a03f69ecb9609764·...·]4-8">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="w">351 </span><span·class="w">
352 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-10">(</span><span·class="p"·data-group-id="1530977944-11">[</span><span·class="ss">pre_init_per_testcase</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="1530977944-11">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·ea17b74cb366bc6733df87235d81892eee06564e11daa107f42099c3960f08c2·...·]4-10">)</span><span·class="p">.</span><span·class="w">352 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-10">(</span><span·class="p"·data-group-id="6114508334-11">[</span><span·class="ss">pre_init_per_testcase</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="6114508334-11">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·b34f01b139ebbdf5088af3bd30adeb4547340a4cb1a7ef2e0edee4fd5e93271a·...·]4-10">)</span><span·class="p">.</span><span·class="w">
353 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-12">(</span><span·class="p"·data-group-id="1530977944-13">[</span><span·class="ss">post_end_per_testcase</span><span·class="p">/</span><span·class="mi">5</span><span·class="p"·data-group-id="1530977944-13">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·ea17b74cb366bc6733df87235d81892eee06564e11daa107f42099c3960f08c2·...·]4-12">)</span><span·class="p">.</span><span·class="w">353 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-12">(</span><span·class="p"·data-group-id="6114508334-13">[</span><span·class="ss">post_end_per_testcase</span><span·class="p">/</span><span·class="mi">5</span><span·class="p"·data-group-id="6114508334-13">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·b34f01b139ebbdf5088af3bd30adeb4547340a4cb1a7ef2e0edee4fd5e93271a·...·]4-12">)</span><span·class="p">.</span><span·class="w">
354 </span><span·class="w">354 </span><span·class="w">
355 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-14">(</span><span·class="p"·data-group-id="1530977944-15">[</span><span·class="ss">on_tc_skip</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="1530977944-15">]</span><span·class="p"·data-group-id="1530977944-14">)</span><span·class="p">.</span><span·class="w">355 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-14">(</span><span·class="p"·data-group-id="6114508334-15">[</span><span·class="ss">on_tc_skip</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="6114508334-15">]</span><span·class="p"·data-group-id="6114508334-14">)</span><span·class="p">.</span><span·class="w">
356 </span><span·class="w">356 </span><span·class="w">
357 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1530977944-16">(</span><span·class="p"·data-group-id="1530977944-17">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1530977944-17">]</span><span·class="p"·data-group-id="1530977944-16">)</span><span·class="p">.</span><span·class="w">357 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6114508334-16">(</span><span·class="p"·data-group-id="6114508334-17">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6114508334-17">]</span><span·class="p"·data-group-id="6114508334-16">)</span><span·class="p">.</span><span·class="w">
  
358 </span><span·class="c1">%%·This·hook·state·is·threaded·through·all·the·callbacks.</span><span·class="w">358 </span><span·class="c1">%%·This·hook·state·is·threaded·through·all·the·callbacks.</span><span·class="w">
359 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1530977944-18">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1530977944-19">{</span><span·class="ss">filename</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">total[·...·truncated·by·diffoscope;·len:·488,·SHA:·68702cd4d73ecb8bfce3fee2a54c9f95d69bf32e5c73275115bde8e1c8e1a873·...·]4-18">)</span><span·class="p">.</span><span·class="w">359 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="6114508334-18">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6114508334-19">{</span><span·class="ss">filename</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">total[·...·truncated·by·diffoscope;·len:·488,·SHA:·fcdec751eb9359002e11cc8fade835201ba1f2e297f90c558b77eac3c99ad415·...·]4-18">)</span><span·class="p">.</span><span·class="w">
360 </span><span·class="c1">%%·This·example·hook·prints·its·results·to·a·file,·see·terminate/1.</span><span·class="w">360 </span><span·class="c1">%%·This·example·hook·prints·its·results·to·a·file,·see·terminate/1.</span><span·class="w">
361 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="1530977944-20">(</span><span·class="ss">test_run</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1530977944-21">{</span><span·class="ss">total</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">skipp[·...·truncated·by·diffoscope;·len:·181,·SHA:·35b1feeb9cda0965b79ce130aebb933d38f5071ec9b30da49fd758ba22ac2bb1·...·]4-20">)</span><span·class="p">.</span><span·class="w">361 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="6114508334-20">(</span><span·class="ss">test_run</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6114508334-21">{</span><span·class="ss">total</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">skipp[·...·truncated·by·diffoscope;·len:·181,·SHA:·f3a8130c59adf520d84d898ca102df8bb505c1f97aed582ebb95e2de0090fa05·...·]4-20">)</span><span·class="p">.</span><span·class="w">
  
362 </span><span·class="c1">%%·Return·a·unique·id·for·this·CTH.</span><span·class="w">362 </span><span·class="c1">%%·Return·a·unique·id·for·this·CTH.</span><span·class="w">
363 </span><span·class="c1">%%·Using·the·filename·means·the·hook·can·be·used·with·different</span><span·class="w">363 </span><span·class="c1">%%·Using·the·filename·means·the·hook·can·be·used·with·different</span><span·class="w">
364 </span><span·class="c1">%%·log·files·to·separate·timing·data·within·the·same·test·run.</span><span·class="w">364 </span><span·class="c1">%%·log·files·to·separate·timing·data·within·the·same·test·run.</span><span·class="w">
365 </span><span·class="c1">%%·See·Installing·a·CTH·for·more·information.</span><span·class="w">365 </span><span·class="c1">%%·See·Installing·a·CTH·for·more·information.</span><span·class="w">
366 </span><span·class="nf">id</span><span·class="p"·data-group-id="1530977944-22">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="1530977944-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">366 </span><span·class="nf">id</span><span·class="p"·data-group-id="6114508334-22">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="6114508334-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
367 ····</span><span·class="c1">%%·the·path·is·relative·to·the·test·run·directory</span><span·class="w">367 ····</span><span·class="c1">%%·the·path·is·relative·to·the·test·run·directory</span><span·class="w">
368 ····</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="1530977944-23">(</span><span·class="ss">filename</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;example_cth.log&quot;</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·12,·SHA:·f35d0999804592efee204739d9bc6aa5a8417863c718f81d9af2b9f952b287a4·...·]4-23">)</span><span·class="p">.</span><span·class="w">368 ····</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="6114508334-23">(</span><span·class="ss">filename</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opts</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;example_cth.log&quot;</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·12,·SHA:·d3f8accca8c600728fb8c53825cd71880afb0c530d4f9ac5d1995dba6b0bbf7f·...·]4-23">)</span><span·class="p">.</span><span·class="w">
  
369 </span><span·class="c1">%%·Always·called·before·any·other·callback·function.·Use·this·to·initiate</span><span·class="w">369 </span><span·class="c1">%%·Always·called·before·any·other·callback·function.·Use·this·to·initiate</span><span·class="w">
370 </span><span·class="c1">%%·any·common·state.</span><span·class="w">370 </span><span·class="c1">%%·any·common·state.</span><span·class="w">
371 </span><span·class="nf">init</span><span·class="p"·data-group-id="1530977944-24">(</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Opts</span><span·class="p"·data-group-id="1530977944-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">371 </span><span·class="nf">init</span><span·class="p"·data-group-id="6114508334-24">(</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Opts</span><span·class="p"·data-group-id="6114508334-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
372 ····</span><span·class="p"·data-group-id="1530977944-25">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="1530977944-26">{</span><span·class="ss">filename</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·601,·SHA:·28eb4b46d0103a2c7daa8cf84e485f65374b51cf2358437ad30e3aebe407678a·...·]4-25">}</span><span·class="p">.</span><span·class="w">372 ····</span><span·class="p"·data-group-id="6114508334-25">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="6114508334-26">{</span><span·class="ss">filename</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·601,·SHA:·9e83405a37c4ad632c41ba98ad909c28645534819ab818fe45abda0cdcf0b624·...·]4-25">}</span><span·class="p">.</span><span·class="w">
  
373 </span><span·class="c1">%%·Called·before·init_per_suite·is·called.</span><span·class="w">373 </span><span·class="c1">%%·Called·before·init_per_suite·is·called.</span><span·class="w">
374 </span><span·class="nf">pre_init_per_suite</span><span·class="p"·data-group-id="1530977944-28">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="1530977944-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">374 </span><span·class="nf">pre_init_per_suite</span><span·class="p"·data-group-id="6114508334-28">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="6114508334-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
375 ····</span><span·class="p"·data-group-id="1530977944-29">{</span><span·class="n">Config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="1530977944-30">{</span><span·class="ss">suit[·...·truncated·by·diffoscope;·len:·460,·SHA:·8e515ccd82304ec6b5a71192a5fe90766ee159bac7b8389387f6502968ea6e44·...·]4-29">}</span><span·class="p">.</span><span·class="w">375 ····</span><span·class="p"·data-group-id="6114508334-29">{</span><span·class="n">Config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="6114508334-30">{</span><span·class="ss">suit[·...·truncated·by·diffoscope;·len:·460,·SHA:·afca780bef418c3f3c0eec5d8ef51467722ebc3ffdd77b999dc564669a360189·...·]4-29">}</span><span·class="p">.</span><span·class="w">
  
376 </span><span·class="c1">%%·Called·after·end_per_suite.</span><span·class="w">376 </span><span·class="c1">%%·Called·after·end_per_suite.</span><span·class="w">
377 </span><span·class="nf">post_end_per_suite</span><span·class="p"·data-group-id="1530977944-32">(</span><span·class="n">Suite</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">Return</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·17,·SHA:·10b0e383a0482483afd500562a0ed66120127115795421271b2ffd684cc398f7·...·]4-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">377 </span><span·class="nf">post_end_per_suite</span><span·class="p"·data-group-id="6114508334-32">(</span><span·class="n">Suite</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">Return</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·17,·SHA:·d8658eb377f6b0f33dc7541bac4c8b5b2d75c067d656c5ca55c250ccce3f9909·...·]4-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
378 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1530977944-33">{</span><span·class="ss">suites</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">suite_total</span><span·class="p">,</span><span·class="w">378 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6114508334-33">{</span><span·class="ss">suites</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">suite_total</span><span·class="p">,</span><span·class="w">
379 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="1530977944-34">(</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">tcs</span><span·class="p"·data-group-id="1530977944-34">)</span><span·class="p"·data-group-id="1530977944-33">}</span><span·class="p">,</span><span·class="w">379 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="6114508334-34">(</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">tcs</span><span·class="p"·data-group-id="6114508334-34">)</span><span·class="p"·data-group-id="6114508334-33">}</span><span·class="p">,</span><span·class="w">
380 ····</span><span·class="p"·data-group-id="1530977944-35">{</span><span·class="n">Return</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="1530977944-36">{</span><span·class="ss">data[·...·truncated·by·diffoscope;·len:·405,·SHA:·5829bba069f63efc470a46b73f3a9b85ded97c28445e8dde19cb9276cc688230·...·]4-37">]</span><span·class="p">,</span><span·class="w">380 ····</span><span·class="p"·data-group-id="6114508334-35">{</span><span·class="n">Return</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="6114508334-36">{</span><span·class="ss">data[·...·truncated·by·diffoscope;·len:·405,·SHA:·4085871430dd8cacbb5356e78152e87780b3d291797bf5197e827953622d8955·...·]4-37">]</span><span·class="p">,</span><span·class="w">
381 ·························</span><span·class="ss">total</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">total</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">suite_total</span><span·class="p"·data-group-id="1530977944-36">}</span><span·class="p"·data-group-id="1530977944-35">}</span><span·class="p">.</span><span·class="w">381 ·························</span><span·class="ss">total</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">total</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">suite_total</span><span·class="p"·data-group-id="6114508334-36">}</span><span·class="p"·data-group-id="6114508334-35">}</span><span·class="p">.</span><span·class="w">
  
382 </span><span·class="c1">%%·Called·before·each·init_per_testcase.</span><span·class="w">382 </span><span·class="c1">%%·Called·before·each·init_per_testcase.</span><span·class="w">
383 </span><span·class="nf">pre_init_per_testcase</span><span·class="p"·data-group-id="1530977944-38">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">State</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·05e56f868119031012e7cc9501c13e288280bf265bfb51451277b58f47a2e96a·...·]4-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">383 </span><span·class="nf">pre_init_per_testcase</span><span·class="p"·data-group-id="6114508334-38">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">State</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·4d843e2dc3ea9472a0db895d88682f469802b8c8683ade730894a60ed4b03c6b·...·]4-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
384 ····</span><span·class="n">Now</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="1530977944-39">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="1530977944-39">)</span><span·class="p">,</span><span·class="w">384 ····</span><span·class="n">Now</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="6114508334-39">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="6114508334-39">)</span><span·class="p">,</span><span·class="w">
385 ····</span><span·class="p"·data-group-id="1530977944-40">{</span><span·class="n">Config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="1530977944-41">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·589,·SHA:·5e52e6a082fdee1c161d839024580f3da844f3b509fcd41b6ab78bb5bcfe6fd0·...·]4-40">}</span><span·class="p">.</span><span·class="w">385 ····</span><span·class="p"·data-group-id="6114508334-40">{</span><span·class="n">Config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="6114508334-41">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·589,·SHA:·407b29faf911159c33dd6c28f6b49c6a942f51893c6ee9e962e3aa786f1a495e·...·]4-40">}</span><span·class="p">.</span><span·class="w">
  
386 </span><span·class="c1">%%·Called·after·each·end_per_testcase.</span><span·class="w">386 </span><span·class="c1">%%·Called·after·each·end_per_testcase.</span><span·class="w">
387 </span><span·class="nf">post_end_per_testcase</span><span·class="p"·data-group-id="1530977944-42">(</span><span·class="n">Suite</span><span·class="p">,</span><span·class="n">TC</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">Return</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·791ae5abc7b1e76d368d2f9dab27d23cea7f389dad359573ca156407eab63ddc·...·]4-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">387 </span><span·class="nf">post_end_per_testcase</span><span·class="p"·data-group-id="6114508334-42">(</span><span·class="n">Suite</span><span·class="p">,</span><span·class="n">TC</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Config</span><span·class="p">,</span><span·class="n">Return</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·599f53555f9102c9743f700772287e692aa4952016eb47d1c050d1f4a8f041e5·...·]4-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
388 ····</span><span·class="n">Now</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="1530977944-43">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="1530977944-43">)</span><span·class="p">,</span><span·class="w">388 ····</span><span·class="n">Now</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="6114508334-43">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="6114508334-43">)</span><span·class="p">,</span><span·class="w">
389 ····</span><span·class="n">TCInfo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1530977944-44">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·342,·SHA:·030feb0063e86d5ca6ce3fa10149da188fa461d93389bb61112a3a1dedd35466·...·]4-44">}</span><span·class="p">,</span><span·class="w">389 ····</span><span·class="n">TCInfo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6114508334-44">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·342,·SHA:·5056a5a5e23e120fe540792dda44b3a05e3d931d88fd7bba2e1d4f01056dcf93·...·]4-44">}</span><span·class="p">,</span><span·class="w">
390 ····</span><span·class="p"·data-group-id="1530977944-45">{</span><span·class="n">Return</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="1530977944-46">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·692,·SHA:·a8233dbfb26fdbbd34af3d30233a21f20c59f2bcfbd34795f14a0230602a74ec·...·]4-45">}</span><span·class="p">.</span><span·class="w">390 ····</span><span·class="p"·data-group-id="6114508334-45">{</span><span·class="n">Return</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="6114508334-46">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·692,·SHA:·0ebf2da209753ee385cb27f34962922817729fcb9440f6bee257d9c8ed620520·...·]4-45">}</span><span·class="p">.</span><span·class="w">
  
391 </span><span·class="c1">%%·Called·when·a·test·case·is·skipped·by·either·user·action</span><span·class="w">391 </span><span·class="c1">%%·Called·when·a·test·case·is·skipped·by·either·user·action</span><span·class="w">
392 </span><span·class="c1">%%·or·due·to·an·init·function·failing.</span><span·class="w">392 </span><span·class="c1">%%·or·due·to·an·init·function·failing.</span><span·class="w">
393 </span><span·class="nf">on_tc_skip</span><span·class="p"·data-group-id="1530977944-48">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class=[·...·truncated·by·diffoscope;·len:·133,·SHA:·8d8bcc1ddab67ca29ba896ba30b8ea03900aaf3091ee812ad8e8ef154f6e16e1·...·]4-48">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">393 </span><span·class="nf">on_tc_skip</span><span·class="p"·data-group-id="6114508334-48">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class=[·...·truncated·by·diffoscope;·len:·133,·SHA:·056e4358a36d5f5957f342a1091bba1346d7eb24e6aa2ce2b38d55e4de09bc59·...·]4-48">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
394 ····</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="1530977944-49">{</span><span·class="ss">skipped</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">skipped<[·...·truncated·by·diffoscope;·len:·143,·SHA:·13a84e6f88b0699b1f4c53f216d878e6bc6bc14d60206e723580ed2baa242d0e·...·]4-49">}</span><span·class="p">.</span><span·class="w">394 ····</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p"·data-group-id="6114508334-49">{</span><span·class="ss">skipped</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">skipped<[·...·truncated·by·diffoscope;·len:·143,·SHA:·e79e0b0792ce87f0e96bf39f80b915cd795a174d6debb2ed72af5b4f29253ec5·...·]4-49">}</span><span·class="p">.</span><span·class="w">
  
395 </span><span·class="c1">%%·Called·when·the·scope·of·the·CTH·is·done.</span><span·class="w">395 </span><span·class="c1">%%·Called·when·the·scope·of·the·CTH·is·done.</span><span·class="w">
396 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="1530977944-50">(</span><span·class="n">State</span><span·class="p"·data-group-id="1530977944-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">396 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="6114508334-50">(</span><span·class="n">State</span><span·class="p"·data-group-id="6114508334-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
397 ····</span><span·class="c1">%%·use·append·to·avoid·data·loss·if·the·path·is·reused</span><span·class="w">397 ····</span><span·class="c1">%%·use·append·to·avoid·data·loss·if·the·path·is·reused</span><span·class="w">
398 ····</span><span·class="p"·data-group-id="1530977944-51">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="1530977944-51">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·568,·SHA:·66c719a6c3fc937623d2b76b6559e1c4e4584132bc74c41df78246303e24c479·...·]4-52">)</span><span·class="p">,</span><span·class="w">398 ····</span><span·class="p"·data-group-id="6114508334-51">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="6114508334-51">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·568,·SHA:·e5597edf0f79a9ff2bf074b006842a394b221d1556ecfb25fc2825219095a552·...·]4-52">)</span><span·class="p">,</span><span·class="w">
399 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1530977944-54">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">.</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·339,·SHA:·825180d9032d852dd05655b5e9fde8a8b5ba95a6a66c142f00ddbc8a8e5dc919·...·]4-54">)</span><span·class="p">,</span><span·class="w">399 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6114508334-54">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">.</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·339,·SHA:·bcb8a988f6c3598a0dc3378240252315df69816bcb1d53226cb4f16203b26c19·...·]4-54">)</span><span·class="p">,</span><span·class="w">
400 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="1530977944-57">(</span><span·class="n">File</span><span·class="p"·data-group-id="1530977944-57">)</span><span·class="p">,</span><span·class="w">400 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="6114508334-57">(</span><span·class="n">File</span><span·class="p"·data-group-id="6114508334-57">)</span><span·class="p">,</span><span·class="w">
401 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">401 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
402 </span><span·class="nf">results</span><span·class="p"·data-group-id="1530977944-58">(</span><span·class="n">State</span><span·class="p"·data-group-id="1530977944-58">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">402 </span><span·class="nf">results</span><span·class="p"·data-group-id="6114508334-58">(</span><span·class="n">State</span><span·class="p"·data-group-id="6114508334-58">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 294/61398 bytes (0.48%) of diff not shown.
2.32 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_master.html
    
Offset 434, 15 lines modifiedOffset 434, 15 lines modified
434 ······<div·class="specs">434 ······<div·class="specs">
  
435 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_event_mgr_ref()·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>().</pre>435 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_event_mgr_ref()·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>().</pre>
  
436 ······</div>436 ······</div>
  
437 <p>Gets·a·reference·to·the·<code·class="inline">Common·Test</code>·master·event·manager.·The·reference·can·be437 <p>Gets·a·reference·to·the·<code·class="inline">Common·Test</code>·master·event·manager.·The·reference·can·be
438 used·to,·for·example,·add·a·user-specific·event·handler·while·tests·are·running.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="9282302097-1">(</span><span·class="nc">ct_master</span><span·class="p">:</span><span·class="nf">get_event_mgr_ref</span><span·class="p"·data-group-id="9282302097-2">(</span><span·class="p"·data-group-id="9282302097-2">)</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·243,·SHA:·c8edafe385d9608d68aebbee44e0ebdf94a866b20b6446c3b4d56ecfec151d6b·...·]7-1">)</span></code></pre>438 used·to,·for·example,·add·a·user-specific·event·handler·while·tests·are·running.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="7534153387-1">(</span><span·class="nc">ct_master</span><span·class="p">:</span><span·class="nf">get_event_mgr_ref</span><span·class="p"·data-group-id="7534153387-2">(</span><span·class="p"·data-group-id="7534153387-2">)</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·243,·SHA:·39ad69b83e93336639ae8beff30e8d3bfc1b6f3322322ee0fb5b4f807406e4d7·...·]7-1">)</span></code></pre>
439 ··</section>439 ··</section>
440 </section>440 </section>
441 <section·class="detail"·id="progress/0">441 <section·class="detail"·id="progress/0">
  
442 ··<div·class="detail-header">442 ··<div·class="detail-header">
443 ····<a·href="#progress/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">443 ····<a·href="#progress/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
444 ······<i·class="ri-link-m"·aria-hidden="true"></i>444 ······<i·class="ri-link-m"·aria-hidden="true"></i>
34.3 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_master_chapter.html
    
Offset 152, 15 lines modifiedOffset 152, 15 lines modified
152 a·common·file·system.·<code·class="inline">Common·Test</code>·Master·cannot·start·test·nodes152 a·common·file·system.·<code·class="inline">Common·Test</code>·Master·cannot·start·test·nodes
153 automatically.·The·nodes·must·be·started·in·advance·for·<code·class="inline">Common·Test</code>·Master·to153 automatically.·The·nodes·must·be·started·in·advance·for·<code·class="inline">Common·Test</code>·Master·to
154 be·able·to·start·test·sessions·on·them.</p><p>Tests·are·started·by·calling·<a·href="ct_master.html#run/1"><code·class="inline">ct_master:run(TestSpecs)</code></a>·or154 be·able·to·start·test·sessions·on·them.</p><p>Tests·are·started·by·calling·<a·href="ct_master.html#run/1"><code·class="inline">ct_master:run(TestSpecs)</code></a>·or
155 <a·href="ct_master.html#run/3"><code·class="inline">ct_master:run(TestSpecs,·InclNodes,·ExclNodes)</code></a></p><p><code·class="inline">TestSpecs</code>·is·either·the·name·of·a·test·specification·file·(string)·or·a·list155 <a·href="ct_master.html#run/3"><code·class="inline">ct_master:run(TestSpecs,·InclNodes,·ExclNodes)</code></a></p><p><code·class="inline">TestSpecs</code>·is·either·the·name·of·a·test·specification·file·(string)·or·a·list
156 of·test·specifications.·If·it·is·a·list,·the·specifications·are·handled·(and·the156 of·test·specifications.·If·it·is·a·list,·the·specifications·are·handled·(and·the
157 corresponding·tests·executed)·in·sequence.·An·element·in·a·<code·class="inline">TestSpecs</code>·list·can157 corresponding·tests·executed)·in·sequence.·An·element·in·a·<code·class="inline">TestSpecs</code>·list·can
158 also·be·list·of·test·specifications.·The·specifications·in·such·a·list·are158 also·be·list·of·test·specifications.·The·specifications·in·such·a·list·are
159 merged·into·one·combined·specification·before·test·execution.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ct_master</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="2581796622-1">(</span><span·class="p"·data-group-id="2581796622-2">[</span><span·class="s">&quot;ts1&quot;</span><span·class="p">,</span><span·class="s">&quot;ts2&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2581796622-3">[</span><spa[·...·truncated·by·diffoscope;·len:·243,·SHA:·2549e0cf95ff4e35d4a669368fdb3fa85dcdb05150df8a18c57a8f2600d9bfa1·...·]-1">)</span></code></pre><p>Here,·the·tests·specified·by·&quot;ts1&quot;·run·first,·then·the·tests·specified·by·&quot;ts2&quot;,159 merged·into·one·combined·specification·before·test·execution.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ct_master</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="5042630190-1">(</span><span·class="p"·data-group-id="5042630190-2">[</span><span·class="s">&quot;ts1&quot;</span><span·class="p">,</span><span·class="s">&quot;ts2&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5042630190-3">[</span><spa[·...·truncated·by·diffoscope;·len:·243,·SHA:·6ff547dedc038924a2523e0ea75d4e9126d6b9ec2dd245a8e448677938564043·...·]-1">)</span></code></pre><p>Here,·the·tests·specified·by·&quot;ts1&quot;·run·first,·then·the·tests·specified·by·&quot;ts2&quot;,
160 and·finally·the·tests·specified·by·both·&quot;ts3&quot;·and·&quot;ts4&quot;.</p><p>The·<code·class="inline">InclNodes</code>·argument·to·<code·class="inline">run/3</code>·is·a·list·of·node·names.·Function·<code·class="inline">run/3</code>160 and·finally·the·tests·specified·by·both·&quot;ts3&quot;·and·&quot;ts4&quot;.</p><p>The·<code·class="inline">InclNodes</code>·argument·to·<code·class="inline">run/3</code>·is·a·list·of·node·names.·Function·<code·class="inline">run/3</code>
161 runs·the·tests·in·<code·class="inline">TestSpecs</code>·just·like·<code·class="inline">run/1</code>,·but·also·takes·any·test·in161 runs·the·tests·in·<code·class="inline">TestSpecs</code>·just·like·<code·class="inline">run/1</code>,·but·also·takes·any·test·in
162 <code·class="inline">TestSpecs</code>,·which·is·not·explicitly·tagged·with·a·particular·node·name,·and162 <code·class="inline">TestSpecs</code>,·which·is·not·explicitly·tagged·with·a·particular·node·name,·and
163 execute·it·on·the·nodes·listed·in·<code·class="inline">InclNodes</code>.·By·using·<code·class="inline">run/3</code>·this·way,·any163 execute·it·on·the·nodes·listed·in·<code·class="inline">InclNodes</code>.·By·using·<code·class="inline">run/3</code>·this·way,·any
164 test·specification·can·be·used,·with·or·without·node·information,·in·a164 test·specification·can·be·used,·with·or·without·node·information,·in·a
165 large-scale·test·environment.</p><p><code·class="inline">ExclNodes</code>·is·a·list·of·nodes·to·be·excluded·from·the·test.·That·is,·tests·that165 large-scale·test·environment.</p><p><code·class="inline">ExclNodes</code>·is·a·list·of·nodes·to·be·excluded·from·the·test.·That·is,·tests·that
166 are·specified·in·the·test·specification·to·run·on·a·particular·node·are·not166 are·specified·in·the·test·specification·to·run·on·a·particular·node·are·not
Offset 192, 40 lines modifiedOffset 192, 40 lines modified
192 achieved·using·constants).·The·alias·is·declared·with·a·<code·class="inline">node</code>·term·as·follows:</p><p><code·class="inline">{node,·NodeAlias,·NodeName}</code></p><p>If·<code·class="inline">NodeRefs</code>·has·the·value·<code·class="inline">all_nodes</code>,·the·operation·or·test·is·performed·on192 achieved·using·constants).·The·alias·is·declared·with·a·<code·class="inline">node</code>·term·as·follows:</p><p><code·class="inline">{node,·NodeAlias,·NodeName}</code></p><p>If·<code·class="inline">NodeRefs</code>·has·the·value·<code·class="inline">all_nodes</code>,·the·operation·or·test·is·performed·on
193 all·specified·test·nodes.·(Declaring·a·term·without·a·<code·class="inline">NodeRefs</code>·element·has·the193 all·specified·test·nodes.·(Declaring·a·term·without·a·<code·class="inline">NodeRefs</code>·element·has·the
194 same·effect).·If·<code·class="inline">NodeRefs</code>·has·the·value·<code·class="inline">master</code>,·the·operation·is·only194 same·effect).·If·<code·class="inline">NodeRefs</code>·has·the·value·<code·class="inline">master</code>,·the·operation·is·only
195 performed·on·the·<code·class="inline">Common·Test</code>·Master·node·(namely·set·the·log·directory·or195 performed·on·the·<code·class="inline">Common·Test</code>·Master·node·(namely·set·the·log·directory·or
196 install·an·event·handler).</p><p>Consider·the·example·in·section196 install·an·event·handler).</p><p>Consider·the·example·in·section
197 <a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·in·section197 <a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·in·section
198 Running·Tests·and·Analysing·Results,·now·extended·with·node·information·and198 Running·Tests·and·Analysing·Results,·now·extended·with·node·information·and
199 intended·to·be·executed·by·<code·class="inline">Common·Test</code>·Master:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7372788876-1">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Top&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/test&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·562defef1413289b628c6b54069a4512dcdc32691c9d48e03e5946b1ada369b1·...·]-1">}</span><span·class="p">.</span><span·class="w">199 intended·to·be·executed·by·<code·class="inline">Common·Test</code>·Master:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4700862941-1">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Top&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/test&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·c2e6aab65873a1190f5979dcfc84b62b99bb43b9d359c8e06da7ee3824f1b2e5·...·]-1">}</span><span·class="p">.</span><span·class="w">
200 </span><span·class="p"·data-group-id="7372788876-2">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/t1&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·517d6a9827fade9f2c1e9f492ef0d465f30e80f8ecad4d835bacc1ae25476ed4·...·]-2">}</span><span·class="p">.</span><span·class="w">200 </span><span·class="p"·data-group-id="4700862941-2">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/t1&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·995e413b3e0929678f46b21dccc3ee8cb29707ff7f8a2d89956f6e7961abb1ea·...·]-2">}</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="7372788876-3">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/t2&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·517d6a9827fade9f2c1e9f492ef0d465f30e80f8ecad4d835bacc1ae25476ed4·...·]-3">}</span><span·class="p">.</span><span·class="w">201 </span><span·class="p"·data-group-id="4700862941-3">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/t2&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·995e413b3e0929678f46b21dccc3ee8cb29707ff7f8a2d89956f6e7961abb1ea·...·]-3">}</span><span·class="p">.</span><span·class="w">
202 </span><span·class="p"·data-group-id="7372788876-4">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T3&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/t3&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·517d6a9827fade9f2c1e9f492ef0d465f30e80f8ecad4d835bacc1ae25476ed4·...·]-4">}</span><span·class="p">.</span><span·class="w">202 </span><span·class="p"·data-group-id="4700862941-4">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T3&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/t3&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·995e413b3e0929678f46b21dccc3ee8cb29707ff7f8a2d89956f6e7961abb1ea·...·]-4">}</span><span·class="p">.</span><span·class="w">
203 </span><span·class="p"·data-group-id="7372788876-5">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;CfgFile&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;config.cfg&quot;</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·35983f2d664e7c6b5e8e2e00033b631d7dc0f906962cfed434b60b7eeca575fc·...·]-5">}</span><span·class="p">.</span><span·class="w">203 </span><span·class="p"·data-group-id="4700862941-5">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;CfgFile&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;config.cfg&quot;</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·a489c61147246b4c5d454a6f1a75d50392010c7431b7db2861f037c36248e1db·...·]-5">}</span><span·class="p">.</span><span·class="w">
204 </span><span·class="p"·data-group-id="7372788876-6">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Node&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ct_node</span><span·class="p"·data-group-id="73727888[·...·truncated·by·diffoscope;·len:·2,·SHA:·f74efabef12ea619e30b79bddef89cffa9dda494761681ca862cff2871a85980·...·]-6">}</span><span·class="p">.</span><span·class="w">204 </span><span·class="p"·data-group-id="4700862941-6">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Node&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ct_node</span><span·class="p"·data-group-id="47008629[·...·truncated·by·diffoscope;·len:·2,·SHA:·3d914f9348c9cc0ff8a79716700b9fcd4d2f3e711608004eb8f138bcba7f14d9·...·]-6">}</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="p"·data-group-id="7372788876-7">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Node@host_x&#39;</span><span·class="p"·data-group-id="73727[·...·truncated·by·diffoscope;·len:·5,·SHA:·ccfe8da9d9a100e65285a0015eb0ec754effb2f8f38bdc778e4dc5b6c5b05c96·...·]-7">}</span><span·class="p">.</span><span·class="w">205 </span><span·class="p"·data-group-id="4700862941-7">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Node@host_x&#39;</span><span·class="p"·data-group-id="47008[·...·truncated·by·diffoscope;·len:·5,·SHA:·b6c9f3e78d8d8a039d20a6435e0b6c1a20c7b1ac3b072e9d5a8486635ce35efb·...·]-7">}</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="7372788876-8">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Node@host_y&#39;</span><span·class="p"·data-group-id="73727[·...·truncated·by·diffoscope;·len:·5,·SHA:·ccfe8da9d9a100e65285a0015eb0ec754effb2f8f38bdc778e4dc5b6c5b05c96·...·]-8">}</span><span·class="p">.</span><span·class="w">206 </span><span·class="p"·data-group-id="4700862941-8">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Node@host_y&#39;</span><span·class="p"·data-group-id="47008[·...·truncated·by·diffoscope;·len:·5,·SHA:·b6c9f3e78d8d8a039d20a6435e0b6c1a20c7b1ac3b072e9d5a8486635ce35efb·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="p"·data-group-id="7372788876-9">{</span><span·class="ss">logdir</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">master</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/master_logs&quot;</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·14687dc75f3dc13c8928c94a0f17c63f81459daf2edc501ab929de4339d134f2·...·]-9">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="4700862941-9">{</span><span·class="ss">logdir</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">master</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/master_logs&quot;</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·56996cd687df93ee23fcb1518f5712f2d778ad926eef06eaebcef17bdd044e97·...·]-9">}</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="7372788876-10">{</span><span·class="ss">logdir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/logs&quot;</span><span·class="p"·data-group-id="7372788876-10">}</span><span·class="p">.</span><span·class="w">208 </span><span·class="p"·data-group-id="4700862941-10">{</span><span·class="ss">logdir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;Top&#39;/logs&quot;</span><span·class="p"·data-group-id="4700862941-10">}</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="p"·data-group-id="7372788876-11">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;T1&#39;/&#39;CfgFile&#39;&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·ad276757192d81a6238c80fb0044242af2aa8168767a0e3a5f9af60516188283·...·]-11">}</span><span·class="p">.</span><span·class="w">209 </span><span·class="p"·data-group-id="4700862941-11">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;T1&#39;/&#39;CfgFile&#39;&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·0d6dd4c79a9aa83c4af97d5f4e1dbca9042f26975b61fbdecf95baec2a893fc3·...·]-11">}</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="7372788876-12">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;T2&#39;/&#39;CfgFile&#39;&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·ad276757192d81a6238c80fb0044242af2aa8168767a0e3a5f9af60516188283·...·]-12">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="4700862941-12">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;T2&#39;/&#39;CfgFile&#39;&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·0d6dd4c79a9aa83c4af97d5f4e1dbca9042f26975b61fbdecf95baec2a893fc3·...·]-12">}</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="7372788876-13">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;T3&#39;/&#39;CfgFile&#39;&quot;</span><span·class="p"·data-group-id="7372788876-13">}</span><span·class="p">.</span><span·class="w">211 </span><span·class="p"·data-group-id="4700862941-13">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&#39;T3&#39;/&#39;CfgFile&#39;&quot;</span><span·class="p"·data-group-id="4700862941-13">}</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="p"·data-group-id="7372788876-14">{</span><span·class="ss">suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·74,·SHA:·5ef5ab059ad65638edc01d6dfe7c9d82b466f4e83b5c030daed3e3f802847f2b·...·]-14">}</span><span·class="p">.</span><span·class="w">212 </span><span·class="p"·data-group-id="4700862941-14">{</span><span·class="ss">suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·74,·SHA:·75a2888d0be2a3ee3f6578db14d6c2cfdf0c42f919bd1dcc0381b2f697d63bfc·...·]-14">}</span><span·class="p">.</span><span·class="w">
213 </span><span·class="p"·data-group-id="7372788876-15">{</span><span·class="ss">skip_suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·348,·SHA:·de7665d11a4af2a42adec75fcc644d8c65f1d06f80ab777ca6186793b61c1774·...·]-15">}</span><span·class="p">.</span><span·class="w">213 </span><span·class="p"·data-group-id="4700862941-15">{</span><span·class="ss">skip_suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·348,·SHA:·504324591450437901b77387b8e972b714893ad8cc8639cfee68b32b4e6ab10b·...·]-15">}</span><span·class="p">.</span><span·class="w">
214 </span><span·class="p"·data-group-id="7372788876-17">{</span><span·class="ss">skip_cases</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·415,·SHA:·01d1196c831bc4492ab35b59b4731fe62c965838b4b3b654fe0053062c570d22·...·]-17">}</span><span·class="p">.</span><span·class="w">214 </span><span·class="p"·data-group-id="4700862941-17">{</span><span·class="ss">skip_cases</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·415,·SHA:·1cfd1bd420e831f17ef5e94aa2272951e7eb64530a8f64bf55699e336c83e26b·...·]-17">}</span><span·class="p">.</span><span·class="w">
215 </span><span·class="p"·data-group-id="7372788876-19">{</span><span·class="ss">skip_cases</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·358,·SHA:·a24e08a1203fdf624894bfa899071f571c6ed397415ae339eb6ad78745e58bc7·...·]-19">}</span><span·class="p">.</span><span·class="w">215 </span><span·class="p"·data-group-id="4700862941-19">{</span><span·class="ss">skip_cases</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T1&#39;</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·358,·SHA:·c44db73ff64557e828d67a78901cf639eb96d65801319871b6612545494a0056·...·]-19">}</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="p"·data-group-id="7372788876-21">{</span><span·class="ss">suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T2&#39;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·245,·SHA:·86fa3edbf6ecb77887fd834e0ff3fd36e9de3ffcc083cf9269f05619ffccbaf6·...·]-21">}</span><span·class="p">.</span><span·class="w">216 </span><span·class="p"·data-group-id="4700862941-21">{</span><span·class="ss">suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T2&#39;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·245,·SHA:·6d1a6432e39529d81246f25ec33dbbc2199b30024fab943470466f96f276f493·...·]-21">}</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="7372788876-23">{</span><span·class="ss">cases</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T2&#39;</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·370,·SHA:·503043f21d1965a58922d40e10fc837ec0c3c4c937b8043581d2ca619e98e919·...·]-23">}</span><span·class="p">.</span><span·class="w">217 </span><span·class="p"·data-group-id="4700862941-23">{</span><span·class="ss">cases</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T2&#39;</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·370,·SHA:·b6bcb6e16a7ad036a41a6b5e7e93cbb8ad6cc27da66c81507eaa254496847e59·...·]-23">}</span><span·class="p">.</span><span·class="w">
  
218 </span><span·class="p"·data-group-id="7372788876-25">{</span><span·class="ss">skip_suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T3&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·100,·SHA:·7715d4cbf24bdf61ef89d06b0936dc622ddab1a9879f34a9027c60098b893cb2·...·]-25">}</span><span·class="p">.</span></code></pre><p>This·example·specifies·the·same·tests·as·the·original·example.·But·now·if218 </span><span·class="p"·data-group-id="4700862941-25">{</span><span·class="ss">skip_suites</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;T3&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·100,·SHA:·babf19defa8d81f6d2f75fe781f432b2a98d48b37769c52eedccf59a162d24ce·...·]-25">}</span><span·class="p">.</span></code></pre><p>This·example·specifies·the·same·tests·as·the·original·example.·But·now·if
219 started·with·a·call·to·<code·class="inline">ct_master:run(TestSpecName)</code>,·test·<code·class="inline">t1</code>·is·executed·on219 started·with·a·call·to·<code·class="inline">ct_master:run(TestSpecName)</code>,·test·<code·class="inline">t1</code>·is·executed·on
220 node·<code·class="inline">ct_node@host_x</code>·(<code·class="inline">node1</code>),·test·<code·class="inline">t2</code>·on·<code·class="inline">ct_node@host_y</code>·(<code·class="inline">node2</code>)·and220 node·<code·class="inline">ct_node@host_x</code>·(<code·class="inline">node1</code>),·test·<code·class="inline">t2</code>·on·<code·class="inline">ct_node@host_y</code>·(<code·class="inline">node2</code>)·and
221 test·<code·class="inline">t3</code>·on·both·<code·class="inline">node1</code>·and·<code·class="inline">node2</code>.·Configuration·file·<code·class="inline">t1</code>·is·only·read·on221 test·<code·class="inline">t3</code>·on·both·<code·class="inline">node1</code>·and·<code·class="inline">node2</code>.·Configuration·file·<code·class="inline">t1</code>·is·only·read·on
222 <code·class="inline">node1</code>·and·configuration·file·<code·class="inline">t2</code>·only·on·<code·class="inline">node2</code>,·while·the·configuration222 <code·class="inline">node1</code>·and·configuration·file·<code·class="inline">t2</code>·only·on·<code·class="inline">node2</code>,·while·the·configuration
223 file·<code·class="inline">t3</code>·is·read·on·both·<code·class="inline">node1</code>·and·<code·class="inline">node2</code>.·Both·test·nodes·write·log·files223 file·<code·class="inline">t3</code>·is·read·on·both·<code·class="inline">node1</code>·and·<code·class="inline">node2</code>.·Both·test·nodes·write·log·files
224 to·the·same·directory.·(However,·the·<code·class="inline">Common·Test</code>·Master·node·uses·a·different224 to·the·same·directory.·(However,·the·<code·class="inline">Common·Test</code>·Master·node·uses·a·different
225 log·directory·than·the·test·nodes.)</p><p>If·the·test·session·is·instead·started·with·a·call·to225 log·directory·than·the·test·nodes.)</p><p>If·the·test·session·is·instead·started·with·a·call·to
Offset 240, 21 lines modifiedOffset 240, 21 lines modified
240 always·performed·too,·of·course.</p><h2·id="automatic-startup-of-test-target-nodes"·class="section-heading">240 always·performed·too,·of·course.</p><h2·id="automatic-startup-of-test-target-nodes"·class="section-heading">
241 ··<a·href="#automatic-startup-of-test-target-nodes"·class="hover-link">241 ··<a·href="#automatic-startup-of-test-target-nodes"·class="hover-link">
242 ····<i·class="ri-link-m"·aria-hidden="true"></i>242 ····<i·class="ri-link-m"·aria-hidden="true"></i>
243 ··</a>243 ··</a>
244 ··<span·class="text">Automatic·Startup·of·Test·Target·Nodes</span>244 ··<span·class="text">Automatic·Startup·of·Test·Target·Nodes</span>
245 </h2>245 </h2>
246 <p><a·href=""·id="ct_slave"></a></p><p>Initial·actions·can·be·started·and·performed·automatically·on·test·target·nodes246 <p><a·href=""·id="ct_slave"></a></p><p>Initial·actions·can·be·started·and·performed·automatically·on·test·target·nodes
247 using·test·specification·term·<code·class="inline">init</code>.</p><p>Two·subterms·are·supported,·<code·class="inline">node_start</code>·and·<code·class="inline">eval</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5835133040-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1@host1</span><span·class="p"·data-group-id="5835133040-1">}</span><span·class="p">.</span><span·class="w">247 using·test·specification·term·<code·class="inline">init</code>.</p><p>Two·subterms·are·supported,·<code·class="inline">node_start</code>·and·<code·class="inline">eval</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9784980247-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1@host1</span><span·class="p"·data-group-id="9784980247-1">}</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p"·data-group-id="5835133040-2">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1@host2</span><span·class="p"·data-group-id="5835133040-2">}</span><span·class="p">.</span><span·class="w">248 </span><span·class="p"·data-group-id="9784980247-2">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1@host2</span><span·class="p"·data-group-id="9784980247-2">}</span><span·class="p">.</span><span·class="w">
249 </span><span·class="p"·data-group-id="5835133040-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2@host2</span><span·class="p"·data-group-id="5835133040-3">}</span><span·class="p">.</span><span·class="w">249 </span><span·class="p"·data-group-id="9784980247-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node2@host2</span><span·class="p"·data-group-id="9784980247-3">}</span><span·class="p">.</span><span·class="w">
250 </span><span·class="p"·data-group-id="5835133040-4">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1@host3</span><span·class="p"·data-group-id="5835133040-4">}</span><span·class="p">.</span><span·class="w">250 </span><span·class="p"·data-group-id="9784980247-4">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1@host3</span><span·class="p"·data-group-id="9784980247-4">}</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p"·data-group-id="5835133040-5">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5835133040-6">[</span><span·class="p"·data-group-id="5835133040-7">{</span><span·class="ss">node_start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5835133040-8">[</span><span·class="p"·data-group-id="5835133040-9">{</span><span·class="ss">callback_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_slave_callback</span><span·class="p"·data-group-id="5835133040-9">}</span><span·class="p"·data-group-id="5835133040-8">]</span><span·class="p"·data-group-id="5835133040-7">}</span><span·class="p"·data-group-id="5835133040-6">]</span><span·class="p"·data-group-id="5835133040-5">}</span><span·class="p">.</span><span·class="w"> 
252 </span><span·class="p"·data-group-id="5835133040-10">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5835133040-11">[</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node3</span><span·class="p"·data-group-id="5835133040-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5835133040-12">{</span><span·class="ss">node_start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5835133040-13">[</span><span·class="p"·data-group-id="5835133040-14">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ct_user&quot;</span><span·class="p"·data-group-id="5835133040-14">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5835133040-15">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ct_password&quot;</span><span·class="p"·data-group-id="5835133040-15">}</span><span·class="p"·data-group-id="5835133040-13">]</span><span·class="p"·data-group-id="5835133040-12">}</span><span·class="p"·data-group-id="5835133040-10">}</span><span·class="p">.</span><span·class="w"> 
253 </span><span·class="p"·data-group-id="5835133040-16">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5835133040-17">{</span><span·class="ss">eval</spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·2a6a7b7593b7beaceff76d3a943e63905e4942edfeb0fe3be913b159775fe796·...·]251 </span><span·class="p"·data-group-id="9784980247-5">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-6">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·646,·SHA:·725bfcb869fb33380088bc3fbffd54707027e37370a2dcf980938b94a74d482a·...·]
 252 </span><span·class="p"·data-group-id="9784980247-10">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-11">[</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node3</span><span·class="p"·data-group-id="9784980247-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-12">{</span><span·class="ss">node_start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-13">[</span><span·class="p"·data-group-id="9784980247-14">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ct_user&quot;</span><span·class="p"·data-group-id="9784980247-14">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-15">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ct_password&quot;</span><span·class="p"·data-group-id="9784980247-15">}</span><span·class="p"·data-group-id="9784980247-13">]</span><span·class="p"·data-group-id="9784980247-12">}</span><span·class="p"·data-group-id="9784980247-10">}</span><span·class="p">.</span><span·class="w">
 253 </span><span·class="p"·data-group-id="9784980247-16">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-17">{</span><span·class="ss">eval</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-18">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9784980247-19">[</span><span·class="p"·data-group-id="9784980247-19">]</span><span·class="p"·data-group-id="9784980247-18">}</span><span·class="p"·data-group-id="9784980247-17">}</span><span·class="p"·data-group-id="9784980247-16">}</span><span·class="p">.</span></code></pre><p>This·test·specification·declares·that·<code·class="inline">node1@host1</code>·is·to·be·started·using·the
254 user·callback·function·<code·class="inline">callback_module:my_slave_callback/0</code>,·and·nodes254 user·callback·function·<code·class="inline">callback_module:my_slave_callback/0</code>,·and·nodes
255 <code·class="inline">node1@host2</code>·and·<code·class="inline">node2@host2</code>·are·to·be·started·with·the·default·callback255 <code·class="inline">node1@host2</code>·and·<code·class="inline">node2@host2</code>·are·to·be·started·with·the·default·callback
256 module·<code·class="inline">ct_slave</code>.·The·specified·username·and·password·are·used·to·log·on·to256 module·<code·class="inline">ct_slave</code>.·The·specified·username·and·password·are·used·to·log·on·to
257 remote·host·<code·class="inline">host2</code>.·Also,·function·<code·class="inline">module:function/0</code>·is·evaluated·on257 remote·host·<code·class="inline">host2</code>.·Also,·function·<code·class="inline">module:function/0</code>·is·evaluated·on
258 <code·class="inline">node1@host3</code>,·and·the·result·of·this·call·is·printed·to·the·log.</p><p>The·default·callback·module·<a·href="ct_slave.html"><code·class="inline">ct_slave</code></a>,·has·the·following·features:</p><ul><li>Starting·Erlang·target·nodes·on·local·or·remote·hosts·(application·<code·class="inline">SSH</code>·is258 <code·class="inline">node1@host3</code>,·and·the·result·of·this·call·is·printed·to·the·log.</p><p>The·default·callback·module·<a·href="ct_slave.html"><code·class="inline">ct_slave</code></a>,·has·the·following·features:</p><ul><li>Starting·Erlang·target·nodes·on·local·or·remote·hosts·(application·<code·class="inline">SSH</code>·is
259 used·for·communication).</li><li>Ability·to·start·an·Erlang·emulator·with·more·flags·(any·flags·supported·by259 used·for·communication).</li><li>Ability·to·start·an·Erlang·emulator·with·more·flags·(any·flags·supported·by
260 <code·class="inline">erl</code>·are·supported).</li><li>Supervision·of·a·node·being·started·using·internal·callback·functions.·Used·to260 <code·class="inline">erl</code>·are·supported).</li><li>Supervision·of·a·node·being·started·using·internal·callback·functions.·Used·to
27.6 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_netconfc.html
    
Offset 133, 50 lines modifiedOffset 133, 50 lines modified
133 and·with·support·for·RFC·5277,·NETCONF·Event·Notifications.</p><p><a·href=""·id="Connecting"></a></p><p><em>Connecting·to·a·NETCONF·server</em></p><p>Call·<a·href="#connect/1"><code·class="inline">connect/1,2</code></a>·to·establish·a·connection·to·a·server,·then133 and·with·support·for·RFC·5277,·NETCONF·Event·Notifications.</p><p><a·href=""·id="Connecting"></a></p><p><em>Connecting·to·a·NETCONF·server</em></p><p>Call·<a·href="#connect/1"><code·class="inline">connect/1,2</code></a>·to·establish·a·connection·to·a·server,·then
134 pass·the·returned·handle·to·<a·href="#session/1"><code·class="inline">session/1-3</code></a>·to·establish·a·NETCONF134 pass·the·returned·handle·to·<a·href="#session/1"><code·class="inline">session/1-3</code></a>·to·establish·a·NETCONF
135 session·on·a·new·SSH·channel.·Each·call·to·<a·href="#session/1"><code·class="inline">session/1-3</code></a>135 session·on·a·new·SSH·channel.·Each·call·to·<a·href="#session/1"><code·class="inline">session/1-3</code></a>
136 establishes·a·new·session·on·the·same·connection,·and·results·in·a·hello·message136 establishes·a·new·session·on·the·same·connection,·and·results·in·a·hello·message
137 to·the·server.</p><p>Alternately,·<a·href="#open/1"><code·class="inline">open/1,2</code></a>·can·be·used·to·establish·a·single·session·on137 to·the·server.</p><p>Alternately,·<a·href="#open/1"><code·class="inline">open/1,2</code></a>·can·be·used·to·establish·a·single·session·on
138 a·dedicated·connection.·(Or,·equivalently,·<a·href="#only_open/1"><code·class="inline">only_open/1,2</code></a>138 a·dedicated·connection.·(Or,·equivalently,·<a·href="#only_open/1"><code·class="inline">only_open/1,2</code></a>
139 followed·by·<a·href="#hello/1"><code·class="inline">hello/1-3</code></a>.)</p><p>Connect/session·options·can·be·specified·in·a·configuration·file·with·entries139 followed·by·<a·href="#hello/1"><code·class="inline">hello/1-3</code></a>.)</p><p>Connect/session·options·can·be·specified·in·a·configuration·file·with·entries
140 like·the·following.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4550523757-1">{</span><span·class="nf">server_id</span><span·class="p"·data-group-id="4550523757-2">(</span><span·class="p"·data-group-id="4550523757-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4550523757-3">[<[·...·truncated·by·diffoscope;·len:·236,·SHA:·2f37f798aac4308bb1203b3e6085b5985e413b6fc723641d25ed7c46d3cdbb9c·...·]-1">}</span><span·class="p">.</span></code></pre><p>The·<a·href="#t:server_id/0"><code·class="inline">server_id/0</code></a>·or·an·associated·<a·href="ct.html#t:target_name/0"><code·class="inline">ct:target_name/0</code></a>·can·then·be·passed·to140 like·the·following.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2528149619-1">{</span><span·class="nf">server_id</span><span·class="p"·data-group-id="2528149619-2">(</span><span·class="p"·data-group-id="2528149619-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2528149619-3">[<[·...·truncated·by·diffoscope;·len:·236,·SHA:·69d5dd10601c981867ee9518bce8ac12159894b943e2dd478a99f975277d1565·...·]-1">}</span><span·class="p">.</span></code></pre><p>The·<a·href="#t:server_id/0"><code·class="inline">server_id/0</code></a>·or·an·associated·<a·href="ct.html#t:target_name/0"><code·class="inline">ct:target_name/0</code></a>·can·then·be·passed·to
141 the·aforementioned·functions·to·use·the·referenced·configuration.</p><p><a·href=""·id="Signaling"></a></p><p><em>Signaling</em></p><p>Protocol·operations·in·the·NETCONF·protocol·are·realized·as·remote·procedure141 the·aforementioned·functions·to·use·the·referenced·configuration.</p><p><a·href=""·id="Signaling"></a></p><p><em>Signaling</em></p><p>Protocol·operations·in·the·NETCONF·protocol·are·realized·as·remote·procedure
142 calls·(RPCs)·from·client·to·server·and·a·corresponding·reply·from·server·to142 calls·(RPCs)·from·client·to·server·and·a·corresponding·reply·from·server·to
143 client.·RPCs·are·sent·using·like-named·functions·(eg.143 client.·RPCs·are·sent·using·like-named·functions·(eg.
144 <a·href="#edit_config/3"><code·class="inline">edit_config/3-5</code></a>·to·send·an·edit-config·RPC),·with·the144 <a·href="#edit_config/3"><code·class="inline">edit_config/3-5</code></a>·to·send·an·edit-config·RPC),·with·the
145 server·reply·as·return·value.·There·are·functions·for·each·RPC·defined·in·RFC145 server·reply·as·return·value.·There·are·functions·for·each·RPC·defined·in·RFC
146 6241·and·the·create-subscription·RPC·from·RFC·5277,·all·of·which·are·wrappers·on146 6241·and·the·create-subscription·RPC·from·RFC·5277,·all·of·which·are·wrappers·on
147 <a·href="#send_rpc/2"><code·class="inline">send_rpc/2,3</code></a>,·that·can·be·used·to·send·an·arbitrary·RPC·not147 <a·href="#send_rpc/2"><code·class="inline">send_rpc/2,3</code></a>,·that·can·be·used·to·send·an·arbitrary·RPC·not
148 defined·in·RFC·6241·or·RFC·5277.</p><p>All·of·the·signaling·functions·have·one·variant·with·a·<code·class="inline">Timeout</code>·argument·and148 defined·in·RFC·6241·or·RFC·5277.</p><p>All·of·the·signaling·functions·have·one·variant·with·a·<code·class="inline">Timeout</code>·argument·and
149 one·without,·corresponding·to·an·infinite·timeout.·The·latter·is·inappropriate149 one·without,·corresponding·to·an·infinite·timeout.·The·latter·is·inappropriate
150 in·most·cases·since·a·non-response·by·the·server·or·a·missing·message-id·causes150 in·most·cases·since·a·non-response·by·the·server·or·a·missing·message-id·causes
151 the·call·to·hang·indefinitely.</p><p><a·href=""·id="Logging"></a></p><p><em>Logging</em></p><p>The·NETCONF·server·uses·<code·class="inline">error_logger</code>·for·logging·of·NETCONF·traffic.·A·special151 the·call·to·hang·indefinitely.</p><p><a·href=""·id="Logging"></a></p><p><em>Logging</em></p><p>The·NETCONF·server·uses·<code·class="inline">error_logger</code>·for·logging·of·NETCONF·traffic.·A·special
152 purpose·error·handler·is·implemented·in·<code·class="inline">ct_conn_log_h</code>.·To·use·this·error152 purpose·error·handler·is·implemented·in·<code·class="inline">ct_conn_log_h</code>.·To·use·this·error
153 handler,·add·the·<code·class="inline">cth_conn_log</code>·hook·in·the·test·suite,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="8861318612-1">(</span><span·class="p"·data-group-id="8861318612-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">153 handler,·add·the·<code·class="inline">cth_conn_log</code>·hook·in·the·test·suite,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="8724044485-1">(</span><span·class="p"·data-group-id="8724044485-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
154 ····</span><span·class="p"·data-group-id="8861318612-2">[</span><span·class="p"·data-group-id="8861318612-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8861318612-4">[</span><span·class="p"·data-group-id="8861318612-5">{</s[·...·truncated·by·diffoscope;·len:·936,·SHA:·58ca2c43886266aa456b8fa1e200db7bd70bedba141f0caefe256d9adadfc65a·...·]-2">]</span><span·class="p">.</span></code></pre><p><code·class="inline">conn_log_mod()</code>·is·the·name·of·the·<code·class="inline">Common·Test</code>·module·implementing·the154 ····</span><span·class="p"·data-group-id="8724044485-2">[</span><span·class="p"·data-group-id="8724044485-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8724044485-4">[</span><span·class="p"·data-group-id="8724044485-5">{</s[·...·truncated·by·diffoscope;·len:·936,·SHA:·1c9829d978186295215835705ac35f64d0789c344bdf09d844799f8df8a75784·...·]-2">]</span><span·class="p">.</span></code></pre><p><code·class="inline">conn_log_mod()</code>·is·the·name·of·the·<code·class="inline">Common·Test</code>·module·implementing·the
155 connection·protocol,·for·example,·<code·class="inline">ct_netconfc</code>.</p><p>Hook·option·<code·class="inline">log_type</code>·specifies·the·type·of·logging:</p><ul><li><p><strong><code·class="inline">raw</code></strong>·-·The·sent·and·received·NETCONF·data·is·logged·to·a·separate·text155 connection·protocol,·for·example,·<code·class="inline">ct_netconfc</code>.</p><p>Hook·option·<code·class="inline">log_type</code>·specifies·the·type·of·logging:</p><ul><li><p><strong><code·class="inline">raw</code></strong>·-·The·sent·and·received·NETCONF·data·is·logged·to·a·separate·text
156 file·&quot;as·is&quot;·without·any·formatting.·A·link·to·the·file·is·added·to·the·test156 file·&quot;as·is&quot;·without·any·formatting.·A·link·to·the·file·is·added·to·the·test
157 case·HTML·log.</p></li><li><p><strong><code·class="inline">pretty</code></strong>·-·The·sent·and·received·NETCONF·data·is·logged·to·a·separate·text157 case·HTML·log.</p></li><li><p><strong><code·class="inline">pretty</code></strong>·-·The·sent·and·received·NETCONF·data·is·logged·to·a·separate·text
158 file·with·XML·data·nicely·indented.·A·link·to·the·file·is·added·to·the·test158 file·with·XML·data·nicely·indented.·A·link·to·the·file·is·added·to·the·test
159 case·HTML·log.</p></li><li><p><strong><code·class="inline">html·(default)</code></strong>·-·The·sent·and·received·NETCONF·traffic·is·pretty·printed159 case·HTML·log.</p></li><li><p><strong><code·class="inline">html·(default)</code></strong>·-·The·sent·and·received·NETCONF·traffic·is·pretty·printed
160 directly·in·the·test·case·HTML·log.</p></li><li><p><strong><code·class="inline">silent</code></strong>·-·NETCONF·traffic·is·not·logged.</p></li></ul><p>By·default,·all·NETCONF·traffic·is·logged·in·one·single·log·file.·However,160 directly·in·the·test·case·HTML·log.</p></li><li><p><strong><code·class="inline">silent</code></strong>·-·NETCONF·traffic·is·not·logged.</p></li></ul><p>By·default,·all·NETCONF·traffic·is·logged·in·one·single·log·file.·However,
161 different·connections·can·be·logged·in·separate·files.·To·do·this,·use·hook161 different·connections·can·be·logged·in·separate·files.·To·do·this,·use·hook
162 option·<code·class="inline">hosts</code>·and·list·the·names·of·the·servers/connections·to·be·used·in·the162 option·<code·class="inline">hosts</code>·and·list·the·names·of·the·servers/connections·to·be·used·in·the
163 suite.·The·connections·must·be·named·for·this·to·work,·that·is,·they·must·be163 suite.·The·connections·must·be·named·for·this·to·work,·that·is,·they·must·be
164 opened·with·<a·href="#open/2"><code·class="inline">open/2</code></a>.</p><p>Option·<code·class="inline">hosts</code>·has·no·effect·if·<code·class="inline">log_type</code>·is·set·to·<code·class="inline">html</code>·or·<code·class="inline">silent</code>.</p><p>The·hook·options·can·also·be·specified·in·a·configuration·file·with164 opened·with·<a·href="#open/2"><code·class="inline">open/2</code></a>.</p><p>Option·<code·class="inline">hosts</code>·has·no·effect·if·<code·class="inline">log_type</code>·is·set·to·<code·class="inline">html</code>·or·<code·class="inline">silent</code>.</p><p>The·hook·options·can·also·be·specified·in·a·configuration·file·with
165 configuration·variable·<code·class="inline">ct_conn_log</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2245716997-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="2245716997-2">[</span><span·class="p"·data-group-id="2245716997-3">{</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">conn_log_mod</span><span·class="p"·data-group-id="2245716997-4">(</span><span·class="p"·data-group-id="2245716997-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">conn_log_options</span><span·class="p"·data-group-id="2245716997-5">(</span><span·class="p"·data-group-id="2245716997-5">)</span><span·class="p"·data-group-id="2245716997-3">}</span><span·class="p"·data-group-id="2245716997-2">]</span><span·class="p"·data-group-id="2245716997-1">}</span><span·class="p">.</span></code></pre><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2056093762-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="2056093762-2">[</span><span·class="p"·data-group-id="2056093762-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·class="p"·data-group-id="2056093762-4">[</span><span·class="p"·data-group-id="2056093762-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">pretty</span><span·class="p"·data-group-id="2056093762-5">}</span><span·class="p">,</span><span·class="w"> 
166 ····························</span><span·class="p"·data-group-id="2056093762-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="2056093762-7">[</span><span·class="nc">ct</span><span·class="p">:</span><span·class=[·...·truncated·by·diffoscope;·len:·627,·SHA:·1e13b04bdfd339bfdc9e6c73c4acaa83110142ce11214901a4b49969120fdb34·...·]165 configuration·variable·<code·class="inline">ct_conn_log</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6519603194-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1338,·SHA:·bc4c710b8d5ef11248148dd6cf28612d5c2ccaba5569bda079f760937c997425·...·]
 166 ····························</span><span·class="p"·data-group-id="5052404590-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="5052404590-7">[</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="5052404590-8">(</span><span·class="p"·data-group-id="5052404590-8">)</span><span·class="p"·data-group-id="5052404590-7">]</span><span·class="p"·data-group-id="5052404590-6">}</span><span·class="p"·data-group-id="5052404590-4">]</span><span·class="p"·data-group-id="5052404590-3">}</span><span·class="p"·data-group-id="5052404590-2">]</span><span·class="p"·data-group-id="5052404590-1">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Hook·options·specified·in·a·configuration·file·overwrite·the·hard-coded·hook
167 options·in·the·test·suite.</p></section><p><em>Logging·Example·1:</em></p><p><a·href=""·id="Logging_example_1"></a></p><p>The·following·<code·class="inline">ct_hooks</code>·statement·causes·pretty·printing·of·NETCONF·traffic·to167 options·in·the·test·suite.</p></section><p><em>Logging·Example·1:</em></p><p><a·href=""·id="Logging_example_1"></a></p><p>The·following·<code·class="inline">ct_hooks</code>·statement·causes·pretty·printing·of·NETCONF·traffic·to
168 separate·logs·for·the·connections·named·<code·class="inline">nc_server1</code>·and·<code·class="inline">nc_server2</code>.·Any·other168 separate·logs·for·the·connections·named·<code·class="inline">nc_server1</code>·and·<code·class="inline">nc_server2</code>.·Any·other
169 connections·are·logged·to·default·NETCONF·log.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="3539610541-1">(</span><span·class="p"·data-group-id="3539610541-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">169 connections·are·logged·to·default·NETCONF·log.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="5476283701-1">(</span><span·class="p"·data-group-id="5476283701-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ···</span><span·class="p"·data-group-id="3539610541-2">[</span><span·class="p"·data-group-id="3539610541-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3539610541-4">[</span><span·class="p"·data-group-id="3539610541-5">{</[·...·truncated·by·diffoscope;·len:·486,·SHA:·f890d69b9399f603e615efcb3da9e318c8c5f0cdf341eb3e8f1720f264b76ea3·...·]1-9">}</span><span·class="p">}</span><span·class="p">,</span><span·class="w">170 ···</span><span·class="p"·data-group-id="5476283701-2">[</span><span·class="p"·data-group-id="5476283701-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5476283701-4">[</span><span·class="p"·data-group-id="5476283701-5">{</[·...·truncated·by·diffoscope;·len:·486,·SHA:·966ffb9f869a058fce470f9bf0329d1f3b5f673df7e11ecb6d9dcf99d8f4b430·...·]1-9">}</span><span·class="p">}</span><span·class="p">,</span><span·class="w">
171 ··············································</span><span·class="p"·data-group-id="3539610541-10">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="3539610541-11">[</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="ss">nc_server2</span><span·class="p"·data-group-id="353[·...·truncated·by·diffoscope;·len:·167,·SHA:·13e45285b1ebd909fd267b5c34bdf784b595cc66441f14c3de7e440ed7ef7d77·...·]1-7">}</span><span·class="w">171 ··············································</span><span·class="p"·data-group-id="5476283701-10">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="5476283701-11">[</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="ss">nc_server2</span><span·class="p"·data-group-id="547[·...·truncated·by·diffoscope;·len:·167,·SHA:·9b918d82809f33b439f1110fd8016295991cd7ceef8b562f08943a2a60604bda·...·]1-7">}</span><span·class="w">
172 ·······························</span><span·class="p"·data-group-id="3539610541-6">]</span><span·class="p"·data-group-id="3539610541-5">}</span><span·class="p"·data-group-id="3539610541-4">]</span><span·class="p"·data-group-id="3539610541-3">}</span><span·class="p"·data-group-id="3539610541-2">]</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·858f8dbcfaa0ca892577cb04c4a78d8449223d6a2f9813f68366b1ca3bf37b47·...·]-1">)</span><span·class="p">,</span><span·class="w">172 ·······························</span><span·class="p"·data-group-id="5476283701-6">]</span><span·class="p"·data-group-id="5476283701-5">}</span><span·class="p"·data-group-id="5476283701-4">]</span><span·class="p"·data-group-id="5476283701-3">}</span><span·class="p"·data-group-id="5476283701-2">]</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·50fa4cf21035ce5b5da002eb6fca3195f35129969e7875fe6e29b7eaffbd8bc4·...·]-1">)</span><span·class="p">,</span><span·class="w">
173 </span><span·class="nf">open</span><span·class="p"·data-group-id="3932747626-3">(</span><span·class="ss">nc_server2</span><span·class="p">,</span><span·class="p"·data-group-id="3932747626-4">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3932747626-4">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·9d435f3bb087e8523a3f6db9eceb4daafa65b1ab8cc0cbbe8beb59bcaafbe447·...·]-3">)</span><span·class="p">.</span></code></pre><p><em>Logging·Example·2:</em></p><p><a·href=""·id="Logging_example_2"></a></p><p>The·following·configuration·file·causes·raw·logging·of·all·NETCONF·traffic·in·to173 </span><span·class="nf">open</span><span·class="p"·data-group-id="2564116405-3">(</span><span·class="ss">nc_server2</span><span·class="p">,</span><span·class="p"·data-group-id="2564116405-4">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2564116405-4">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·fe4d2173b7788d673615ab8f455d66893c3a2822fd8f7b2fa0395b9fcbbce446·...·]-3">)</span><span·class="p">.</span></code></pre><p><em>Logging·Example·2:</em></p><p><a·href=""·id="Logging_example_2"></a></p><p>The·following·configuration·file·causes·raw·logging·of·all·NETCONF·traffic·in·to
174 one·single·text·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2511370675-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="2511370675-2">[</span><span·class="p"·data-group-id="2511370675-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·731,·SHA:·8564ee9f9ae651b75493990c9e0b82df765580e0d854857318ec0417c63dbd95·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 one·single·text·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4825347571-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="4825347571-2">[</span><span·class="p"·data-group-id="4825347571-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·731,·SHA:·ff8b450fe8fb77d97c27230a3cf2a25f96a84930ed8ee05ae0d0860b82285fd2·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 ····</span><span·class="p"·data-group-id="4535915110-2">[</span><span·class="p"·data-group-id="4535915110-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4535915110-4">[</span><span·class="p"·data-group-id="4535915110-5">{</s[·...·truncated·by·diffoscope;·len:·394,·SHA:·84d9a69179af9f139cfdd8bf6bcc24cb89cdf187543216a2daea669155902cfb·...·]-2">]</span><span·class="p">.</span></code></pre><p>The·same·<code·class="inline">ct_hooks</code>·statement·without·the·configuration·file·would·cause·HTML175 ····</span><span·class="p"·data-group-id="4009821373-2">[</span><span·class="p"·data-group-id="4009821373-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4009821373-4">[</span><span·class="p"·data-group-id="4009821373-5">{</s[·...·truncated·by·diffoscope;·len:·394,·SHA:·bb133847a68eb2f02ca4aae3e464ca5b24e6bd6bf4f133600e4cfff13e0922a3·...·]-2">]</span><span·class="p">.</span></code></pre><p>The·same·<code·class="inline">ct_hooks</code>·statement·without·the·configuration·file·would·cause·HTML
176 logging·of·all·NETCONF·connections·in·to·the·test·case·HTML·log.</p>176 logging·of·all·NETCONF·connections·in·to·the·test·case·HTML·log.</p>
177 ····</section>177 ····</section>
  
178 </div>178 </div>
  
179 ··<section·id="summary"·class="details-list">179 ··<section·id="summary"·class="details-list">
180 ····<h1·class="section-heading">180 ····<h1·class="section-heading">
Offset 2097, 16 lines modifiedOffset 2097, 16 lines modified
2097 ·························Result·::·ok·|·{error,·<a·href="#t:error_reason/0">error_reason</a>()}.</pre>2097 ·························Result·::·ok·|·{error,·<a·href="#t:error_reason/0">error_reason</a>()}.</pre>
  
2098 ······</div>2098 ······</div>
  
2099 <p>Edits·configuration·data.</p><p>By·default·only·the·running·target·is·available,·unless·the·server·includes2099 <p>Edits·configuration·data.</p><p>By·default·only·the·running·target·is·available,·unless·the·server·includes
2100 <code·class="inline">:candidate</code>·or·<code·class="inline">:startup</code>·in·its·list·of·capabilities.</p><p><code·class="inline">OptParams</code>·can·be·used·for·specifying·optional·parameters·(<code·class="inline">default-operation</code>,2100 <code·class="inline">:candidate</code>·or·<code·class="inline">:startup</code>·in·its·list·of·capabilities.</p><p><code·class="inline">OptParams</code>·can·be·used·for·specifying·optional·parameters·(<code·class="inline">default-operation</code>,
2101 <code·class="inline">test-option</code>,·or·<code·class="inline">error-option</code>)·to·be·added·to·the·<code·class="inline">edit-config</code>·request.·The2101 <code·class="inline">test-option</code>,·or·<code·class="inline">error-option</code>)·to·be·added·to·the·<code·class="inline">edit-config</code>·request.·The
2102 value·must·be·a·list·containing·valid·simple·XML,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8319340568-1">[</span><span·class="p"·data-group-id="8319340568-2">{</span><span·class="ss">&#39;default-operation&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8319340568-3">[</span><span·class="s">&quot;none&qu[·...·truncated·by·diffoscope;·len:·104,·SHA:·478327305c08424818fc995be8b2b66417a6e6370bc31033e1d8060ea9a0ca8f·...·]-2">}</span><span·class="p">,</span><span·class="w">2102 value·must·be·a·list·containing·valid·simple·XML,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6476335546-1">[</span><span·class="p"·data-group-id="6476335546-2">{</span><span·class="ss">&#39;default-operation&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6476335546-3">[</span><span·class="s">&quot;none&qu[·...·truncated·by·diffoscope;·len:·104,·SHA:·801a44e5ec12747abcd056a07b72d10c38c03c53d05b7262fc343a33d3b82c53·...·]-2">}</span><span·class="p">,</span><span·class="w">
2103 ·</span><span·class="p"·data-group-id="8319340568-4">{</span><span·class="ss">&#39;error-option&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8319340568-5">[</span><span·class="s">&quot;rollback-on-error&quot;</span><span·class="p"·data-group-id="8319[·...·truncated·by·diffoscope;·len:·112,·SHA:·7714e1fdeb933943a6b5815efaeda30d76c046067280b6bbd53d4717e824841e·...·]-1">]</span></code></pre><p>If·<code·class="inline">OptParams</code>·is·not·given,·the·default·value·<code·class="inline">[]</code>·is·used.</p>2103 ·</span><span·class="p"·data-group-id="6476335546-4">{</span><span·class="ss">&#39;error-option&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6476335546-5">[</span><span·class="s">&quot;rollback-on-error&quot;</span><span·class="p"·data-group-id="6476[·...·truncated·by·diffoscope;·len:·112,·SHA:·6557c5eafa19b5ba6fb6a6ac4d81d8d3c3490749a89e04f616f0990c62330333·...·]-1">]</span></code></pre><p>If·<code·class="inline">OptParams</code>·is·not·given,·the·default·value·<code·class="inline">[]</code>·is·used.</p>
2104 ··</section>2104 ··</section>
2105 </section>2105 </section>
2106 <section·class="detail"·id="get/2">2106 <section·class="detail"·id="get/2">
  
2107 ··<div·class="detail-header">2107 ··<div·class="detail-header">
2108 ····<a·href="#get/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2108 ····<a·href="#get/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
2109 ······<i·class="ri-link-m"·aria-hidden="true"></i>2109 ······<i·class="ri-link-m"·aria-hidden="true"></i>
23.7 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_property_test.html
    
Offset 131, 38 lines modifiedOffset 131, 38 lines modified
131 <p>Support·in·Common·Test·for·running·property-based·tests.</p><p>This·module·helps·running·property-based·tests·in·the·<code·class="inline">Common·Test</code>·framework.131 <p>Support·in·Common·Test·for·running·property-based·tests.</p><p>This·module·helps·running·property-based·tests·in·the·<code·class="inline">Common·Test</code>·framework.
132 One·(or·more)·of·the·property·testing·tools</p><ul><li><a·href="http://www.quviq.com">QuickCheck</a>,</li><li><a·href="https://proper-testing.github.io">PropEr</a>·or</li><li><a·href="https://github.com/krestenkrab/triq">Triq</a></li></ul><p>is·assumed·to·be·installed.</p><p>The·idea·with·this·module·is·to·have·a·<code·class="inline">Common·Test</code>·test·suite·calling·a132 One·(or·more)·of·the·property·testing·tools</p><ul><li><a·href="http://www.quviq.com">QuickCheck</a>,</li><li><a·href="https://proper-testing.github.io">PropEr</a>·or</li><li><a·href="https://github.com/krestenkrab/triq">Triq</a></li></ul><p>is·assumed·to·be·installed.</p><p>The·idea·with·this·module·is·to·have·a·<code·class="inline">Common·Test</code>·test·suite·calling·a
133 property·testing·tool·with·special·property·test·suites·as·defined·by·that·tool.133 property·testing·tool·with·special·property·test·suites·as·defined·by·that·tool.
134 The·tests·are·collected·in·the·<code·class="inline">test</code>·directory·of·the·application.·The·<code·class="inline">test</code>134 The·tests·are·collected·in·the·<code·class="inline">test</code>·directory·of·the·application.·The·<code·class="inline">test</code>
135 directory·has·a·subdirectory·<code·class="inline">property_test</code>,·where·everything·needed·for·the135 directory·has·a·subdirectory·<code·class="inline">property_test</code>,·where·everything·needed·for·the
136 property·tests·are·collected.·The·usual·Erlang·application·directory·structure136 property·tests·are·collected.·The·usual·Erlang·application·directory·structure
137 is·assumed.</p><p>A·typical·<code·class="inline">Common·Test</code>·test·suite·using·<code·class="inline">ct_property_test</code>·is·organized·as137 is·assumed.</p><p>A·typical·<code·class="inline">Common·Test</code>·test·suite·using·<code·class="inline">ct_property_test</code>·is·organized·as
138 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9063286252-1">(</span><span·class="ss">my_prop_test_SUITE</span><span·class="p"·data-group-id="9063286252-1">)</span><span·class="p">.</span><span·class="w">138 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5404374794-1">(</span><span·class="ss">my_prop_test_SUITE</span><span·class="p"·data-group-id="5404374794-1">)</span><span·class="p">.</span><span·class="w">
139 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="9063286252-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="9063286252-2">)</span><span·class="p">.</span><span·class="w">139 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="5404374794-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="5404374794-2">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="w">140 </span><span·class="w">
141 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="9063286252-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="9063286252-3">)</span><span·class="p">.</span><span·class="w">141 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="5404374794-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="5404374794-3">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">all</span><span·class="p"·data-group-id="9063286252-4">(</span><span·class="p"·data-group-id="9063286252-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9063286252-5">[</span><span·class="ss">prop_ftp_case</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·4406660b05f154b56d429d2baea2c6b066d5acceb761388d439ebc7667f6b91a·...·]-5">]</span><span·class="p">.</span><span·class="w">142 </span><span·class="nf">all</span><span·class="p"·data-group-id="5404374794-4">(</span><span·class="p"·data-group-id="5404374794-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5404374794-5">[</span><span·class="ss">prop_ftp_case</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·4ee1206329c14f76be003cd31436182e46531d5cc5b171a354a3f8fc86c62f16·...·]-5">]</span><span·class="p">.</span><span·class="w">
  
143 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="9063286252-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9063286252-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">143 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="5404374794-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="5404374794-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="9063286252-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9063286252-7">)</span><span·class="p">.</span><span·class="w">144 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="5404374794-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="5404374794-7">)</span><span·class="p">.</span><span·class="w">
  
145 </span><span·class="c1">%%%----·test·case</span><span·class="w">145 </span><span·class="c1">%%%----·test·case</span><span·class="w">
146 </span><span·class="nf">prop_ftp_case</span><span·class="p"·data-group-id="9063286252-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9063286252-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">146 </span><span·class="nf">prop_ftp_case</span><span·class="p"·data-group-id="5404374794-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="5404374794-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
147 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">quickcheck</span><span·class="p"·data-group-id="9063286252-9">(</span><span·class="w">147 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">quickcheck</span><span·class="p"·data-group-id="5404374794-9">(</span><span·class="w">
148 ······</span><span·class="nc">ftp_simple_client_server</span><span·class="p">:</span><span·class="nf">prop_ftp</span><span·class="p"·data-group-id="9063286252-10">(</span><span·class="p"·data-group-id="9063286252-10">)</span><span·class="p">,</span><span·class="w">148 ······</span><span·class="nc">ftp_simple_client_server</span><span·class="p">:</span><span·class="nf">prop_ftp</span><span·class="p"·data-group-id="5404374794-10">(</span><span·class="p"·data-group-id="5404374794-10">)</span><span·class="p">,</span><span·class="w">
149 ······</span><span·class="n">Config</span><span·class="w">149 ······</span><span·class="n">Config</span><span·class="w">
150 ·····</span><span·class="p"·data-group-id="9063286252-9">)</span><span·class="p">.</span></code></pre><p>and·the·the·property·test·module·(in·this·example150 ·····</span><span·class="p"·data-group-id="5404374794-9">)</span><span·class="p">.</span></code></pre><p>and·the·the·property·test·module·(in·this·example
151 <code·class="inline">ftp_simple_client_server.erl</code>)·as·almost·a·usual·property·testing·module·(More151 <code·class="inline">ftp_simple_client_server.erl</code>)·as·almost·a·usual·property·testing·module·(More
152 examples·are·in·<a·href="ct_property_test_chapter.html">the·User's·Guide</a>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1367658784-1">(</span><span·class="ss">ftp_simple_client_server</span><span·class="p"·data-group-id="1367658784-1">)</span><span·class="p">.</span><span·class="w"> 
153 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1367658784-2">(</span><span·class="p"·data-group-id="1367658784-3">[</span><span·class="ss">prop_ftp</span><span·class="p">/</span><span·class="mi">0</span><span·cl[·...·truncated·by·diffoscope;·len:·160,·SHA:·58a7ac3a08dda5c763a15901122d78cc1d2336cb06dc4a8323d5377312706cec·...·]">)</span><span·class="p">.</span><span·class="w">152 examples·are·in·<a·href="ct_property_test_chapter.html">the·User's·Guide</a>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6970779392-1">(</span><span·class="ss">ft[·...·truncated·by·diffoscope;·len:·72,·SHA:·3c56e0584083fda165a36fd3398498f50715bd40a9b052755ebb82bc9fc5889e·...·]">)</span><span·class="p">.</span><span·class="w">
 153 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6970779392-2">(</span><span·class="p"·data-group-id="6970779392-3">[</span><span·class="ss">prop_ftp</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6970779392-3">]</span><span·class="p"·data-group-id="6970779392-2">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="w">154 </span><span·class="w">
155 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1367658784-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="1367658784-4">)</span><span·class="p">.</span><span·class="w">155 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6970779392-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="6970779392-4">)</span><span·class="p">.</span><span·class="w">
  
156 </span><span·class="nf">prop_ftp</span><span·class="p"·data-group-id="1367658784-5">(</span><span·class="p"·data-group-id="1367658784-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 </span><span·class="nf">prop_ftp</span><span·class="p"·data-group-id="6970779392-5">(</span><span·class="p"·data-group-id="6970779392-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="o">?</span><span·class="n">FORALL</span><span·class="p"·data-group-id="1367658784-6">(</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>157 ····</span><span·class="o">?</span><span·class="n">FORALL</span><span·class="p"·data-group-id="6970779392-6">(</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>
158 ····</section>158 ····</section>
  
159 </div>159 </div>
  
160 ··<section·id="summary"·class="details-list">160 ··<section·id="summary"·class="details-list">
161 ····<h1·class="section-heading">161 ····<h1·class="section-heading">
162 ······<a·class="hover-link"·href="#summary">162 ······<a·class="hover-link"·href="#summary">
Offset 842, 15 lines modifiedOffset 842, 15 lines modified
842 <code·class="inline">{fail,·Explanation}</code>.</p><p>If·support·is·found,·the·option·<code·class="inline">{property_test_tool,ToolModule}</code>·with·the842 <code·class="inline">{fail,·Explanation}</code>.</p><p>If·support·is·found,·the·option·<code·class="inline">{property_test_tool,ToolModule}</code>·with·the
843 selected·tool·main·module·name·(<code·class="inline">eqc</code>,·<code·class="inline">proper</code>·or·<code·class="inline">triq</code>)·is·added·to·the·list843 selected·tool·main·module·name·(<code·class="inline">eqc</code>,·<code·class="inline">proper</code>·or·<code·class="inline">triq</code>)·is·added·to·the·list
844 <code·class="inline">Config</code>·which·then·is·returned.</p><p>The·property·tests·are·assumed·to·be·in·a·subdirectory·named·<code·class="inline">property_test</code>.844 <code·class="inline">Config</code>·which·then·is·returned.</p><p>The·property·tests·are·assumed·to·be·in·a·subdirectory·named·<code·class="inline">property_test</code>.
845 All·found·Erlang·files·in·that·directory·are·compiled·with·one·of·the·macros845 All·found·Erlang·files·in·that·directory·are·compiled·with·one·of·the·macros
846 <code·class="inline">'EQC'</code>,·<code·class="inline">'PROPER'</code>·or·<code·class="inline">'TRIQ'</code>·set,·depending·on·which·tool·that·is·first846 <code·class="inline">'EQC'</code>,·<code·class="inline">'PROPER'</code>·or·<code·class="inline">'TRIQ'</code>·set,·depending·on·which·tool·that·is·first
847 found.·This·could·make·parts·of·the·Erlang·property·tests·code·to·be·included·or847 found.·This·could·make·parts·of·the·Erlang·property·tests·code·to·be·included·or
848 excluded·with·the·macro·directives·<code·class="inline">-ifdef(Macro).</code>·or·<code·class="inline">-ifndef(Macro).</code>.</p><p>The·file(s)·in·the·<code·class="inline">property_test</code>·subdirectory·could,·or·should,·include·the848 excluded·with·the·macro·directives·<code·class="inline">-ifdef(Macro).</code>·or·<code·class="inline">-ifndef(Macro).</code>.</p><p>The·file(s)·in·the·<code·class="inline">property_test</code>·subdirectory·could,·or·should,·include·the
849 ct_property_test·include·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1411630466-1">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="1411630466-1">)</span><span·class="p">.</span></code></pre><p>This·included·file·will:</p><ul><li>Include·the·correct·tool's·include·file</li><li>Set·the·macro·<code·class="inline">'MOD_eqc'</code>·to·the·correct·module·name·for·the·selected·tool.849 ct_property_test·include·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="9909703105-1">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="9909703105-1">)</span><span·class="p">.</span></code></pre><p>This·included·file·will:</p><ul><li>Include·the·correct·tool's·include·file</li><li>Set·the·macro·<code·class="inline">'MOD_eqc'</code>·to·the·correct·module·name·for·the·selected·tool.
850 That·is,·the·macro·<code·class="inline">'MOD_eqc'</code>·is·set·to·either·<code·class="inline">eqc</code>,·<code·class="inline">proper</code>·or·<code·class="inline">triq</code>.</li></ul>850 That·is,·the·macro·<code·class="inline">'MOD_eqc'</code>·is·set·to·either·<code·class="inline">eqc</code>,·<code·class="inline">proper</code>·or·<code·class="inline">triq</code>.</li></ul>
851 ··</section>851 ··</section>
852 </section>852 </section>
853 <section·class="detail"·id="num_calls/1">853 <section·class="detail"·id="num_calls/1">
  
854 ··<div·class="detail-header">854 ··<div·class="detail-header">
855 ····<a·href="#num_calls/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">855 ····<a·href="#num_calls/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 947, 34 lines modifiedOffset 947, 34 lines modified
947 ····························Config·::·<a·href="../../../../lib/stdlib-6.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>(),947 ····························Config·::·<a·href="../../../../lib/stdlib-6.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>(),
948 ····························Options0·::·<a·href="../../../../lib/stdlib-6.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>().</pre>948 ····························Options0·::·<a·href="../../../../lib/stdlib-6.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>().</pre>
  
949 ······</div>949 ······</div>
  
950 <p>Presents·the·result·of·<em>stateful·(statem)·property·testing</em>·using·the·aggregate950 <p>Presents·the·result·of·<em>stateful·(statem)·property·testing</em>·using·the·aggregate
951 function·in·PropEr,·QuickCheck·or·other·similar·property·testing·tool.</p><p>It·is·assumed·to·be·called·inside·the·property·called·by·<a·href="#quickcheck/2"><code·class="inline">quickcheck/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">951 function·in·PropEr,·QuickCheck·or·other·similar·property·testing·tool.</p><p>It·is·assumed·to·be·called·inside·the·property·called·by·<a·href="#quickcheck/2"><code·class="inline">quickcheck/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
952 </span><span·class="n">RunResult</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">run_parallel_commands</span><span·class="p"·data-group-id="2321102481-1">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p"·data-group-id="2321102481-1">)</span><span·class="p">,</span><span·class="w">952 </span><span·class="n">RunResult</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">run_parallel_commands</span><span·class="p"·data-group-id="0712231620-1">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p"·data-group-id="0712231620-1">)</span><span·class="p">,</span><span·class="w">
953 </span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">present_result</span><span·class="p"·data-group-id="2321102481-2">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RunResult</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·c86e77639efba40163131daeaadec9822533bbfb08ee72a46c67b1ff9f3f46a1·...·]-2">)</span><span·class="w">953 </span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">present_result</span><span·class="p"·data-group-id="0712231620-2">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RunResult</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·a8910d60584a1df004cca71d4f0daa4c5ab8d5a7cbd3db5a660b06f9d3054cf0·...·]-2">)</span><span·class="w">
954 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>See·the·<a·href="ct_property_test_chapter.html#stateful1">User's·Guide</a>·for·an·example·of954 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>See·the·<a·href="ct_property_test_chapter.html#stateful1">User's·Guide</a>·for·an·example·of
955 the·usage·and·of·the·default·printout.</p><p>The·<code·class="inline">StatisticsSpec</code>·is·a·list·of·the·tuples:</p><ul><li><code·class="inline">{Title::string(),·CollectFun::fun/1}</code></li><li><code·class="inline">{Title::string(),·FrequencyFun::/0,·CollectFun::fun/1}</code></li></ul><p>Each·tuple·will·produce·one·table·in·the·order·of·their·places·in·the·list.</p><ul><li><p><code·class="inline">Title</code>·will·be·the·title·of·one·result·table</p></li><li><p><code·class="inline">CollectFun</code>·is·called·with·one·argument:·the·<code·class="inline">Cmds</code>.·It·should·return·a·list955 the·usage·and·of·the·default·printout.</p><p>The·<code·class="inline">StatisticsSpec</code>·is·a·list·of·the·tuples:</p><ul><li><code·class="inline">{Title::string(),·CollectFun::fun/1}</code></li><li><code·class="inline">{Title::string(),·FrequencyFun::/0,·CollectFun::fun/1}</code></li></ul><p>Each·tuple·will·produce·one·table·in·the·order·of·their·places·in·the·list.</p><ul><li><p><code·class="inline">Title</code>·will·be·the·title·of·one·result·table</p></li><li><p><code·class="inline">CollectFun</code>·is·called·with·one·argument:·the·<code·class="inline">Cmds</code>.·It·should·return·a·list
956 of·the·values·to·be·counted.·The·following·pre-defined·functions·exist:</p><ul><li><a·href="#cmnd_names/1"><code·class="inline">ct_property_test:cmnd_names/1</code></a>·returns·a·list·of·commands·(function·calls)956 of·the·values·to·be·counted.·The·following·pre-defined·functions·exist:</p><ul><li><a·href="#cmnd_names/1"><code·class="inline">ct_property_test:cmnd_names/1</code></a>·returns·a·list·of·commands·(function·calls)
957 generated·in·the·<code·class="inline">Cmnd</code>·sequence,·without·Module,·Arguments·and·other957 generated·in·the·<code·class="inline">Cmnd</code>·sequence,·without·Module,·Arguments·and·other
958 details.</li><li><a·href="#num_calls/1"><code·class="inline">ct_property_test:num_calls/1</code></a>·returns·a·list·of·the·length·of·commands958 details.</li><li><a·href="#num_calls/1"><code·class="inline">ct_property_test:num_calls/1</code></a>·returns·a·list·of·the·length·of·commands
959 lists</li><li><a·href="#sequential_parallel/1"><code·class="inline">ct_property_test:sequential_parallel/1</code></a>·returns·a·list·with·information959 lists</li><li><a·href="#sequential_parallel/1"><code·class="inline">ct_property_test:sequential_parallel/1</code></a>·returns·a·list·with·information
960 about·sequential·and·parallel·parts·from·<code·class="inline">Tool:parallel_commands/1,2</code></li></ul></li><li><p><code·class="inline">FrequencyFun/0</code>·returns·a·fun/1·which·is·supposed·to·take·a·list·of·items·as960 about·sequential·and·parallel·parts·from·<code·class="inline">Tool:parallel_commands/1,2</code></li></ul></li><li><p><code·class="inline">FrequencyFun/0</code>·returns·a·fun/1·which·is·supposed·to·take·a·list·of·items·as
961 input,·and·return·an·iolist·which·will·be·printed·as·the·table.·Per·default,961 input,·and·return·an·iolist·which·will·be·printed·as·the·table.·Per·default,
962 the·number·of·each·item·is·counted·and·the·percentage·is·printed·for·each.·The962 the·number·of·each·item·is·counted·and·the·percentage·is·printed·for·each.·The
963 list·[a,b,a,a,c]·could·for·example·return</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4490150700-1">[</span><span·class="s">&quot;a·60%\n&quot;</span><span·class="p">,</span><span·class="s">&quot;b·20%\n&quot;</span><span·class="p">,</span><span·class="s">&quot;c·20%\n&quot;</span><span·class="p"·data-group-id="4490150700-1">]</span></code></pre><p>which·will·be·printed·by·the·<code·class="inline">print_fun</code>.·The·default·<code·class="inline">print_fun</code>·will·print963 list·[a,b,a,a,c]·could·for·example·return</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7191074448-1">[</span><span·class="s">&quot;a·60%\n&quot;</span><span·class="p">,</span><span·class="s">&quot;b·20%\n&quot;</span><span·class="p">,</span><span·class="s">&quot;c·20%\n&quot;</span><span·class="p"·data-group-id="7191074448-1">]</span></code></pre><p>which·will·be·printed·by·the·<code·class="inline">print_fun</code>.·The·default·<code·class="inline">print_fun</code>·will·print
964 it·as:</p><pre><code·class="text">a·60%964 it·as:</p><pre><code·class="text">a·60%
965 b·20%965 b·20%
966 c·20%</code></pre></li></ul><p>The·default·<code·class="inline">StatisticsSpec</code>·is:</p><ul><li><p>For·sequential·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6394664320-1">[</span><span·class="p"·data-group-id="6394664320-2">{</span><span·class="s">&quot;Function·calls&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">cmnd_names</span><[·...·truncated·by·diffoscope;·len:·88,·SHA:·f1287569eed115d3bcb5e782a29d33aeed13313c9c9f6bdb8c7aef1b228a1717·...·]0-2">}</span><span·class="p">,</span><span·class="w">966 c·20%</code></pre></li></ul><p>The·default·<code·class="inline">StatisticsSpec</code>·is:</p><ul><li><p>For·sequential·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6916058530-1">[</span><span·class="p"·data-group-id="6916058530-2">{</span><span·class="s">&quot;Function·calls&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">cmnd_names</span><[·...·truncated·by·diffoscope;·len:·88,·SHA:·91d982ce2ef6a9872c8d7d3eb34bd65a4ee1922008b2a40e2062dbc350fe5469·...·]0-2">}</span><span·class="p">,</span><span·class="w">
967 ·</span><span·class="p"·data-group-id="6394664320-3">{</span><span·class="s">&quot;Length·of·command·sequences&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">print_frequency_ranges</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">967 ·</span><span·class="p"·data-group-id="6916058530-3">{</span><span·class="s">&quot;Length·of·command·sequences&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">print_frequency_ranges</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
968 ··················································</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">num_calls</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6394664320-3">}</span><span·class="p"·data-group-id="6394664320-1">]</span></code></pre></li><li><p>For·parallel·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7316304476-1">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·320,·SHA:·7e1cf8da19f090157504f22f27ffa4eb24bc357cbbc7aae087aba52f78fc8d09·...·]6-2">}</span><span·class="p">,</span><span·class="w">968 ··················································</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">num_calls</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6916058530-3">}</span><span·class="p"·data-group-id="6916058530-1">]</span></code></pre></li><li><p>For·parallel·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9456761026-1">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·320,·SHA:·737df0db98c4e7bf97411d46f0226d499163a1f912bbe18b4756e2eea3c52b18·...·]6-2">}</span><span·class="p">,</span><span·class="w">
969 ·</span><span·class="p"·data-group-id="7316304476-3">{</span><span·class="s">&quot;Function·calls&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">cmnd_names</span><span·class="p">/</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·a7aa9eb2e36237bceb9a50e0c9ddbb1fe9846edf79c7879d425370043ba166bc·...·]6-3">}</span><span·class="p">,</span><span·class="w">969 ·</span><span·class="p"·data-group-id="9456761026-3">{</span><span·class="s">&quot;Function·calls&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">cmnd_names</span><span·class="p">/</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·2e7cabd6338b6fca7e0ef386f1f71a1596a1f1ae5575a7b29cba4e1a694dbcaf·...·]6-3">}</span><span·class="p">,</span><span·class="w">
970 ·</span><span·class="p"·data-group-id="7316304476-4">{</span><span·class="s">&quot;Length·of·command·sequences&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">print_frequency_ranges</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">970 ·</span><span·class="p"·data-group-id="9456761026-4">{</span><span·class="s">&quot;Length·of·command·sequences&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">print_frequency_ranges</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
971 ··················································</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">num_calls</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7316304476-4">}</span><span·class="p"·data-group-id="7316304476-1">]</span></code></pre></li></ul>971 ··················································</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">num_calls</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9456761026-4">}</span><span·class="p"·data-group-id="9456761026-1">]</span></code></pre></li></ul>
972 ··</section>972 ··</section>
973 </section>973 </section>
974 <section·class="detail"·id="quickcheck/2">974 <section·class="detail"·id="quickcheck/2">
  
975 ··<div·class="detail-header">975 ··<div·class="detail-header">
976 ····<a·href="#quickcheck/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">976 ····<a·href="#quickcheck/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
977 ······<i·class="ri-link-m"·aria-hidden="true"></i>977 ······<i·class="ri-link-m"·aria-hidden="true"></i>
21.7 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_property_test_chapter.html
    
Offset 143, 59 lines modifiedOffset 143, 59 lines modified
143 <p>The·<a·href="ct_property_test.html#">ct_property_test</a>·module·does·the·following:</p><ul><li>Compiles·the·files·with·property·tests·in·the·subdirectory·<code·class="inline">property_test</code></li><li>Tests·properties·in·those·files·using·the·first·found·Property·Testing·Tool.</li><li>Saves·the·results·-·that·is·the·printouts·-·in·the·usual·Common·Test·Log</li></ul><h2·id="introductory-example"·class="section-heading">143 <p>The·<a·href="ct_property_test.html#">ct_property_test</a>·module·does·the·following:</p><ul><li>Compiles·the·files·with·property·tests·in·the·subdirectory·<code·class="inline">property_test</code></li><li>Tests·properties·in·those·files·using·the·first·found·Property·Testing·Tool.</li><li>Saves·the·results·-·that·is·the·printouts·-·in·the·usual·Common·Test·Log</li></ul><h2·id="introductory-example"·class="section-heading">
144 ··<a·href="#introductory-example"·class="hover-link">144 ··<a·href="#introductory-example"·class="hover-link">
145 ····<i·class="ri-link-m"·aria-hidden="true"></i>145 ····<i·class="ri-link-m"·aria-hidden="true"></i>
146 ··</a>146 ··</a>
147 ··<span·class="text">Introductory·Example</span>147 ··<span·class="text">Introductory·Example</span>
148 </h2>148 </h2>
149 <p>Assume·that·we·want·to·test·the·lists:sort/1·function.</p><p>We·need·a·property·to·test·the·function.·In·normal·way,·we·create149 <p>Assume·that·we·want·to·test·the·lists:sort/1·function.</p><p>We·need·a·property·to·test·the·function.·In·normal·way,·we·create
150 <code·class="inline">property_test/ct_prop.erl</code>·module·in·the·<code·class="inline">test</code>·directory·in·our·application:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3013377844-1">(</span><span·class="ss">ct_prop</span><span·class="p"·data-group-id="3013377844-1">)</span><span·class="p">.</span><span·class="w">150 <code·class="inline">property_test/ct_prop.erl</code>·module·in·the·<code·class="inline">test</code>·directory·in·our·application:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2026969476-1">(</span><span·class="ss">ct_prop</span><span·class="p"·data-group-id="2026969476-1">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3013377844-2">(</span><span·class="p"·data-group-id="3013377844-3">[</span><span·class="ss">prop_sort</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3013377844-3">]</span><span·class="p"·data-group-id="3013377844-2">)</span><span·class="p">.</span><span·class="w">151 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2026969476-2">(</span><span·class="p"·data-group-id="2026969476-3">[</span><span·class="ss">prop_sort</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2026969476-3">]</span><span·class="p"·data-group-id="2026969476-2">)</span><span·class="p">.</span><span·class="w">
  
152 </span><span·class="c1">%%%·This·will·include·the·.hrl·file·for·the·installed·testing·tool:</span><span·class="w">152 </span><span·class="c1">%%%·This·will·include·the·.hrl·file·for·the·installed·testing·tool:</span><span·class="w">
153 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3013377844-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="3013377844-4">)</span><span·class="p">.</span><span·class="w">153 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="2026969476-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="2026969476-4">)</span><span·class="p">.</span><span·class="w">
  
154 </span><span·class="c1">%%%·The·property·we·want·to·check:</span><span·class="w">154 </span><span·class="c1">%%%·The·property·we·want·to·check:</span><span·class="w">
155 </span><span·class="c1">%%%···For·all·possibly·unsorted·lists,</span><span·class="w">155 </span><span·class="c1">%%%···For·all·possibly·unsorted·lists,</span><span·class="w">
156 </span><span·class="c1">%%%···the·result·of·lists:sort/1·is·sorted.</span><span·class="w">156 </span><span·class="c1">%%%···the·result·of·lists:sort/1·is·sorted.</span><span·class="w">
157 </span><span·class="nf">prop_sort</span><span·class="p"·data-group-id="3013377844-5">(</span><span·class="p"·data-group-id="3013377844-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">prop_sort</span><span·class="p"·data-group-id="2026969476-5">(</span><span·class="p"·data-group-id="2026969476-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="o">?</span><span·class="n">FORALL</span><span·class="p"·data-group-id="3013377844-6">(</span><span·class="n">UnSorted</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="3013377844-7">(</span><span·class="p"·data-group-id="3013377844-7">)</span><span·class="p">,</span><span·class="w">158 ····</span><span·class="o">?</span><span·class="n">FORALL</span><span·class="p"·data-group-id="2026969476-6">(</span><span·class="n">UnSorted</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="2026969476-7">(</span><span·class="p"·data-group-id="2026969476-7">)</span><span·class="p">,</span><span·class="w">
159 ············</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3013377844-8">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="3013377844-9">(</span><span·class="n">UnSorted</span><span·class="p"·data-group-id="3013377844-9">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·70cc89e6d7f8916dd7c7960b5b74675d2fa45d0420e2708463b034ad8a3a3811·...·]-8">)</span><span·class="w">159 ············</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="2026969476-8">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="2026969476-9">(</span><span·class="n">UnSorted</span><span·class="p"·data-group-id="2026969476-9">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·31cc4da8a0daaf9613d7cb79d0d6feeb95463bdb89455e73ea3d77f7e373c39b·...·]-8">)</span><span·class="w">
160 ···········</span><span·class="p"·data-group-id="3013377844-6">)</span><span·class="p">.</span><span·class="w">160 ···········</span><span·class="p"·data-group-id="2026969476-6">)</span><span·class="p">.</span><span·class="w">
  
161 </span><span·class="c1">%%%·Function·to·check·that·a·list·is·sorted:</span><span·class="w">161 </span><span·class="c1">%%%·Function·to·check·that·a·list·is·sorted:</span><span·class="w">
162 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3013377844-10">(</span><span·class="p"·data-group-id="3013377844-11">[</span><span·class="p"·data-group-id="3013377844-11">]</span><span·class="p"·data-group-id="3013377844-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="2026969476-10">(</span><span·class="p"·data-group-id="2026969476-11">[</span><span·class="p"·data-group-id="2026969476-11">]</span><span·class="p"·data-group-id="2026969476-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ····</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">163 ····</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
164 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3013377844-12">(</span><span·class="p"·data-group-id="3013377844-13">[</span><span·class="p">_</span><span·class="p"·data-group-id="3013377844-13">]</span><span·class="p"·data-group-id="3013377844-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">164 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="2026969476-12">(</span><span·class="p"·data-group-id="2026969476-13">[</span><span·class="p">_</span><span·class="p"·data-group-id="2026969476-13">]</span><span·class="p"·data-group-id="2026969476-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
165 ····</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">165 ····</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
166 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3013377844-14">(</span><span·class="p"·data-group-id="3013377844-15">[</span><span·class="n">H1</span><span·class="p">,</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="3013377844-15">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·9dbe8182adc9a866a09551d49b187ed03e4fbd5034cb51315de46b139a6b898a·...·]-14">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">H1</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="n">H2</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">166 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="2026969476-14">(</span><span·class="p"·data-group-id="2026969476-15">[</span><span·class="n">H1</span><span·class="p">,</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="2026969476-15">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·601480d0c9c79da1e8a6e67b9b7912d3260553c783a0c71c7169006d43964c9c·...·]-14">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">H1</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="n">H2</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
167 ····</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3013377844-16">(</span><span·class="p"·data-group-id="3013377844-17">[</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="3013377844-17">]</span><span·class="p"·data-group-id="3013377844-16">)</span><span·class="p">;</span><span·class="w">167 ····</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="2026969476-16">(</span><span·class="p"·data-group-id="2026969476-17">[</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="2026969476-17">]</span><span·class="p"·data-group-id="2026969476-16">)</span><span·class="p">;</span><span·class="w">
168 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3013377844-18">(</span><span·class="p">_</span><span·class="p"·data-group-id="3013377844-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="2026969476-18">(</span><span·class="p">_</span><span·class="p"·data-group-id="2026969476-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
169 ····</span><span·class="ss">false</span><span·class="p">.</span></code></pre><p>We·also·need·a·CommonTest·test·suite:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8826098555-1">(</span><span·class="ss">ct_property_test_SUITE</span><span·class="p"·data-group-id="8826098555-1">)</span><span·class="p">.</span><span·class="w">169 ····</span><span·class="ss">false</span><span·class="p">.</span></code></pre><p>We·also·need·a·CommonTest·test·suite:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6790707550-1">(</span><span·class="ss">ct_property_test_SUITE</span><span·class="p"·data-group-id="6790707550-1">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="8826098555-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8826098555-2">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Only·in·tests!</span><span·class="w">170 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="6790707550-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="6790707550-2">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Only·in·tests!</span><span·class="w">
171 </span><span·class="w">171 </span><span·class="w">
172 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8826098555-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="8826098555-3">)</span><span·class="p">.</span><span·class="w">172 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6790707550-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="6790707550-3">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">all</span><span·class="p"·data-group-id="8826098555-4">(</span><span·class="p"·data-group-id="8826098555-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8826098555-5">[</span><span·class="ss">prop_sort</span><span·class="w">173 </span><span·class="nf">all</span><span·class="p"·data-group-id="6790707550-4">(</span><span·class="p"·data-group-id="6790707550-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6790707550-5">[</span><span·class="ss">prop_sort</span><span·class="w">
174 ·········</span><span·class="p"·data-group-id="8826098555-5">]</span><span·class="p">.</span><span·class="w">174 ·········</span><span·class="p"·data-group-id="6790707550-5">]</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="c1">%%%·First·prepare·Config·and·compile·the·property·tests·for·the·found·tool:</span><span·class="w">175 </span><span·class="c1">%%%·First·prepare·Config·and·compile·the·property·tests·for·the·found·tool:</span><span·class="w">
176 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="8826098555-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8826098555-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="6790707550-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6790707550-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="8826098555-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8826098555-7">)</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="6790707550-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6790707550-7">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="8826098555-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8826098555-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="6790707550-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6790707550-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="n">Config</span><span·class="p">.</span><span·class="w">179 ····</span><span·class="n">Config</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="c1">%%%================================================================</span><span·class="w">180 </span><span·class="c1">%%%================================================================</span><span·class="w">
181 </span><span·class="c1">%%%·Test·suites</span><span·class="w">181 </span><span·class="c1">%%%·Test·suites</span><span·class="w">
182 </span><span·class="c1">%%%</span><span·class="w">182 </span><span·class="c1">%%%</span><span·class="w">
183 </span><span·class="nf">prop_sort</span><span·class="p"·data-group-id="8826098555-9">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8826098555-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">183 </span><span·class="nf">prop_sort</span><span·class="p"·data-group-id="6790707550-9">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6790707550-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">quickcheck</span><span·class="p"·data-group-id="8826098555-10">(</span><span·class="w">184 ····</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">quickcheck</span><span·class="p"·data-group-id="6790707550-10">(</span><span·class="w">
185 ······</span><span·class="nc">ct_prop</span><span·class="p">:</span><span·class="nf">prop_sort</span><span·class="p"·data-group-id="8826098555-11">(</span><span·class="p"·data-group-id="8826098555-11">)</span><span·class="p">,</span><span·class="w">185 ······</span><span·class="nc">ct_prop</span><span·class="p">:</span><span·class="nf">prop_sort</span><span·class="p"·data-group-id="6790707550-11">(</span><span·class="p"·data-group-id="6790707550-11">)</span><span·class="p">,</span><span·class="w">
186 ······</span><span·class="n">Config</span><span·class="w">186 ······</span><span·class="n">Config</span><span·class="w">
187 ·····</span><span·class="p"·data-group-id="8826098555-10">)</span><span·class="p">.</span></code></pre><p>We·run·it·as·usual,·for·example·with·ct_run·in·the·OS·shell:</p><pre><code·class="text">..../test$·ct_run·-suite·ct_property_test_SUITE187 ·····</span><span·class="p"·data-group-id="6790707550-10">)</span><span·class="p">.</span></code></pre><p>We·run·it·as·usual,·for·example·with·ct_run·in·the·OS·shell:</p><pre><code·class="text">..../test$·ct_run·-suite·ct_property_test_SUITE
188 .....188 .....
189 Common·Test:·Running·make·in·test·directories...189 Common·Test:·Running·make·in·test·directories...
  
190 TEST·INFO:·1·test(s),·1·case(s)·in·1·suite(s)190 TEST·INFO:·1·test(s),·1·case(s)·in·1·suite(s)
  
191 Testing·lib.common_test.ct_property_test_SUITE:·Starting·test,·1·test·cases191 Testing·lib.common_test.ct_property_test_SUITE:·Starting·test,·1·test·cases
  
Offset 217, 21 lines modifiedOffset 217, 21 lines modified
217 ....</code></pre><p><a·href=""·id="stateful1"></a></p><h2·id="a-stateful-testing-example"·class="section-heading">217 ....</code></pre><p><a·href=""·id="stateful1"></a></p><h2·id="a-stateful-testing-example"·class="section-heading">
218 ··<a·href="#a-stateful-testing-example"·class="hover-link">218 ··<a·href="#a-stateful-testing-example"·class="hover-link">
219 ····<i·class="ri-link-m"·aria-hidden="true"></i>219 ····<i·class="ri-link-m"·aria-hidden="true"></i>
220 ··</a>220 ··</a>
221 ··<span·class="text">A·stateful·testing·example</span>221 ··<span·class="text">A·stateful·testing·example</span>
222 </h2>222 </h2>
223 <p>Assume·a·test·that·generates·some·parallel·stateful·commands,·and·runs·300223 <p>Assume·a·test·that·generates·some·parallel·stateful·commands,·and·runs·300
224 tests:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">prop_parallel</span><span·class="p"·data-group-id="4767517248-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="4767517248-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 tests:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">prop_parallel</span><span·class="p"·data-group-id="3581807541-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3581807541-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····</span><span·class="nf">numtests</span><span·class="p"·data-group-id="4767517248-2">(</span><span·class="mi">300</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="nf">numtests</span><span·class="p"·data-group-id="3581807541-2">(</span><span·class="mi">300</span><span·class="p">,</span><span·class="w">
226 ·············</span><span·class="o">?</span><span·class="n">FORALL</span><span·class="p"·data-group-id="4767517248-3">(</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">parallel_commands</span><span·class="p"·data-group-id="4767517248-4">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·39cc04192d1fddc7caa325caa2bc5d0741509e10954f3ac5e45c1af06d31fba1·...·]-4">)</span><span·class="p">,</span><span·class="w">226 ·············</span><span·class="o">?</span><span·class="n">FORALL</span><span·class="p"·data-group-id="3581807541-3">(</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">parallel_commands</span><span·class="p"·data-group-id="3581807541-4">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·7ad87045c3092cc6b3c77b6e69d790061c8cc7fc1f0e0074c7e674af9132bcd1·...·]-4">)</span><span·class="p">,</span><span·class="w">
227 ·····················</span><span·class="k">begin</span><span·class="w">227 ·····················</span><span·class="k">begin</span><span·class="w">
228 ·························</span><span·class="n">RunResult</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">run_parallel_commands</span><span·class="p"·data-group-id="4767517248-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p"·data-group-id="4767517248-5">)</span><span·class="p">,</span><span·class="w">228 ·························</span><span·class="n">RunResult</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">run_parallel_commands</span><span·class="p"·data-group-id="3581807541-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p"·data-group-id="3581807541-5">)</span><span·class="p">,</span><span·class="w">
229 ·························</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">present_result</span><span·class="p"·data-group-id="4767517248-6">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RunResult</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·a5d201019c880775ea33f8a1aba4901c14bfec36ed4ba80b8c5f7b3a9f7c6649·...·]-6">)</span><span·class="w">229 ·························</span><span·class="nc">ct_property_test</span><span·class="p">:</span><span·class="nf">present_result</span><span·class="p"·data-group-id="3581807541-6">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RunResult</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·7f90d2f4a9496c7efce63970f8add733668b310fad349dfd861d7a01936e782b·...·]-6">)</span><span·class="w">
230 ·····················</span><span·class="k">end</span><span·class="p"·data-group-id="4767517248-3">)</span><span·class="p"·data-group-id="4767517248-2">)</span><span·class="p">.</span></code></pre><p>The·<a·href="ct_property_test.html#present_result/4"><code·class="inline">ct_property_test:present_result/4</code></a>·is·a·help·function·for·printing·some230 ·····················</span><span·class="k">end</span><span·class="p"·data-group-id="3581807541-3">)</span><span·class="p"·data-group-id="3581807541-2">)</span><span·class="p">.</span></code></pre><p>The·<a·href="ct_property_test.html#present_result/4"><code·class="inline">ct_property_test:present_result/4</code></a>·is·a·help·function·for·printing·some
231 statistics·in·the·CommonTest·log·file.</p><p>Our·example·test·could·for·example·be·a·simple·test·of·an·ftp·server,·where·we231 statistics·in·the·CommonTest·log·file.</p><p>Our·example·test·could·for·example·be·a·simple·test·of·an·ftp·server,·where·we
232 perform·get,·put·and·delete·requests,·some·of·them·in·parallel.·Per·default,·the232 perform·get,·put·and·delete·requests,·some·of·them·in·parallel.·Per·default,·the
233 result·has·three·sections:</p><pre><code·class="text">***·User·2019-12-11·13:28:17.504·***233 result·has·three·sections:</p><pre><code·class="text">***·User·2019-12-11·13:28:17.504·***
  
234 Distribution·sequential/parallel234 Distribution·sequential/parallel
  
235 ·57.7%·sequential235 ·57.7%·sequential
4.59 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_run_cmd.html
    
Offset 247, 18 lines modifiedOffset 247, 18 lines modified
247 ··[-keep_logs·all·|·NLogs]</code></pre><h2·id="run-common-test-in-interactive-mode"·class="section-heading">247 ··[-keep_logs·all·|·NLogs]</code></pre><h2·id="run-common-test-in-interactive-mode"·class="section-heading">
248 ··<a·href="#run-common-test-in-interactive-mode"·class="hover-link">248 ··<a·href="#run-common-test-in-interactive-mode"·class="hover-link">
249 ····<i·class="ri-link-m"·aria-hidden="true"></i>249 ····<i·class="ri-link-m"·aria-hidden="true"></i>
250 ··</a>250 ··</a>
251 ··<span·class="text">Run·Common·Test·in·Interactive·Mode</span>251 ··<span·class="text">Run·Common·Test·in·Interactive·Mode</span>
252 </h2>252 </h2>
253 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="ss">ct_run</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">shell</span><span·class="w">253 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="ss">ct_run</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">shell</span><span·class="w">
254 ··</span><span·class="p"·data-group-id="4861927360-1">[</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="n">ConfigFile1</span><span·class="w">·</span><span·class="n">ConfigFile2</span><span·class="w">·</span><span·class="p">.</span><span·class="p">[·...·truncated·by·diffoscope;·len:·131,·SHA:·b52154a25b22a8d2fbd9f0c68baf3546288c15316742de2494b02de97dc4a00a·...·]-1">]</span><span·class="w">254 ··</span><span·class="p"·data-group-id="3849957353-1">[</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="n">ConfigFile1</span><span·class="w">·</span><span·class="n">ConfigFile2</span><span·class="w">·</span><span·class="p">.</span><span·class="p">[·...·truncated·by·diffoscope;·len:·131,·SHA:·12e486a7ff59ea2597e1fecc4633efcebe622b04abe716d5a70b0ebe31492204·...·]-1">]</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="4861927360-2">[</span><span·class="o">-</span><span·class="ss">userconfig</span><span·class="w">·</span><span·class="n">CallbackModule1</span><span·class="w">·</span><span·class="n">ConfigString1</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModule2</span><span·class="w">255 ··</span><span·class="p"·data-group-id="3849957353-2">[</span><span·class="o">-</span><span·class="ss">userconfig</span><span·class="w">·</span><span·class="n">CallbackModule1</span><span·class="w">·</span><span·class="n">ConfigString1</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModule2</span><span·class="w">
256 ···</span><span·class="n">ConfigString2</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModuleN</span><span·class="w">·</span><span·class="n">ConfigStringN</span><span·class="p"·data-group-id="4861927360-2">]</span><span·class="w">256 ···</span><span·class="n">ConfigString2</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">CallbackModuleN</span><span·class="w">·</span><span·class="n">ConfigStringN</span><span·class="p"·data-group-id="3849957353-2">]</span><span·class="w">
257 ··</span><span·class="p"·data-group-id="4861927360-3">[</span><span·class="o">-</span><span·class="ss">decrypt_key</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="4861927360-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·d95bb4f38a291042303951904d3451d84e9bafe7077d3e2d6cf8671514e30679·...·]-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">257 ··</span><span·class="p"·data-group-id="3849957353-3">[</span><span·class="o">-</span><span·class="ss">decrypt_key</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="3849957353-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·83fceb5a4f89d0271baac71dedaa12651ea03869594b504fcbc3edd06cd4c68e·...·]-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">
258 ··<a·href="#start-a-common-test-master-node"·class="hover-link">258 ··<a·href="#start-a-common-test-master-node"·class="hover-link">
259 ····<i·class="ri-link-m"·aria-hidden="true"></i>259 ····<i·class="ri-link-m"·aria-hidden="true"></i>
260 ··</a>260 ··</a>
261 ··<span·class="text">Start·a·Common·Test·Master·Node</span>261 ··<span·class="text">Start·a·Common·Test·Master·Node</span>
262 </h2>262 </h2>
263 <pre><code·class="text">·ct_run·-ctmaster</code></pre><h2·id="see-also"·class="section-heading">263 <pre><code·class="text">·ct_run·-ctmaster</code></pre><h2·id="see-also"·class="section-heading">
264 ··<a·href="#see-also"·class="hover-link">264 ··<a·href="#see-also"·class="hover-link">
9.86 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_snmp.html
    
Offset 146, 23 lines modifiedOffset 146, 23 lines modified
146 configuration·files·have·default·values·set·by·the·<code·class="inline">SNMP</code>·application.·These146 configuration·files·have·default·values·set·by·the·<code·class="inline">SNMP</code>·application.·These
147 values·can·be·overridden·by·suppling·a·list·of·valid·configuration·values·or·a147 values·can·be·overridden·by·suppling·a·list·of·valid·configuration·values·or·a
148 file·located·in·the·test·suites·data·directory,·which·can·produce·a·list·of148 file·located·in·the·test·suites·data·directory,·which·can·produce·a·list·of
149 valid·configuration·values·if·you·apply·function·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>·to·the·file.</p><ul><li><p><strong><code·class="inline">{agent_contexts,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_community,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_sysinfo,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_vacm,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_usm,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_notify_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_target_address_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-149 valid·configuration·values·if·you·apply·function·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>·to·the·file.</p><ul><li><p><strong><code·class="inline">{agent_contexts,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_community,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_sysinfo,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_vacm,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_usm,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_notify_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-·Optional.</p></li><li><p><strong><code·class="inline">{agent_target_address_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-
150 Optional.</p></li><li><p><strong><code·class="inline">{agent_target_param_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-150 Optional.</p></li><li><p><strong><code·class="inline">{agent_target_param_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-
151 Optional.</p></li></ul><p>Parameter·<code·class="inline">MgrAgentConfName</code>·in·the·functions·is·to·be·a·name·you·allocate·in151 Optional.</p></li></ul><p>Parameter·<code·class="inline">MgrAgentConfName</code>·in·the·functions·is·to·be·a·name·you·allocate·in
152 your·test·suite·using·a·<code·class="inline">require</code>·statement.·Example·(where152 your·test·suite·using·a·<code·class="inline">require</code>·statement.·Example·(where
153 <code·class="inline">MgrAgentConfName·=·snmp_mgr_agent</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="0280281207-1">(</span><span·class="p"·data-group-id="0280281207-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0280281207-2">[</span><span·class="p"·data-group-id="0280281207-3">{</span[·...·truncated·by·diffoscope;·len:·682,·SHA:·e439098d3338a6c9d46807789ffa39baa382ed0a7e28eb782c1951f05f04cfb8·...·]4-1">)</span><span·class="p">.</span></code></pre><p>Notice·that·USM·users·are·needed·for·SNMPv3·configuration·and·are·not·to·be153 <code·class="inline">MgrAgentConfName·=·snmp_mgr_agent</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="2875771458-1">(</span><span·class="p"·data-group-id="2875771458-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2875771458-2">[</span><span·class="p"·data-group-id="2875771458-3">{</span[·...·truncated·by·diffoscope;·len:·682,·SHA:·458f9399fe8020a8c4a57a3238aeb7b9e243938d84225f4b7c51946d7c222533·...·]4-1">)</span><span·class="p">.</span></code></pre><p>Notice·that·USM·users·are·needed·for·SNMPv3·configuration·and·are·not·to·be
154 confused·with·users.</p><p>SNMP·traps,·inform,·and·report·messages·are·handled·by·the·user·callback·module.154 confused·with·users.</p><p>SNMP·traps,·inform,·and·report·messages·are·handled·by·the·user·callback·module.
155 For·details,·see·the·<a·href="../../../../lib/snmp-5.18/doc/html/index.html"><code·class="inline">SNMP</code></a>·application.</p><p>It·is·recommended·to·use·the·<code·class="inline">.hrl</code>·files·created·by·the·Erlang/OTP·MIB·compiler155 For·details,·see·the·<a·href="../../../../lib/snmp-5.18/doc/html/index.html"><code·class="inline">SNMP</code></a>·application.</p><p>It·is·recommended·to·use·the·<code·class="inline">.hrl</code>·files·created·by·the·Erlang/OTP·MIB·compiler
156 to·define·the·Object·Identifiers·(OIDs).·For·example,·to·get·the·Erlang·node156 to·define·the·Object·Identifiers·(OIDs).·For·example,·to·get·the·Erlang·node
157 name·from·<code·class="inline">erlNodeTable</code>·in·the·OTP-MIB:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Oid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">erlNodeEntry</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="9419104330-1">[</span><span·class="o">?</span><span·class="ss">erlNodeName</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="9419104330-1">]</span></code></pre><p>Furthermore,·values·can·be·set·for·<code·class="inline">SNMP</code>·application·configuration·parameters,157 name·from·<code·class="inline">erlNodeTable</code>·in·the·OTP-MIB:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Oid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">erlNodeEntry</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="4972582308-1">[</span><span·class="o">?</span><span·class="ss">erlNodeName</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4972582308-1">]</span></code></pre><p>Furthermore,·values·can·be·set·for·<code·class="inline">SNMP</code>·application·configuration·parameters,
158 <code·class="inline">config</code>,·<code·class="inline">server</code>,·<code·class="inline">net_if</code>,·and·so·on·(for·a·list·of·valid·parameters·and158 <code·class="inline">config</code>,·<code·class="inline">server</code>,·<code·class="inline">net_if</code>,·and·so·on·(for·a·list·of·valid·parameters·and
159 types,·see·the·<a·href="../../../../lib/snmp-5.18/doc/html/index.html"><code·class="inline">User's·Guide·for·the·SNMP·application</code></a>).159 types,·see·the·<a·href="../../../../lib/snmp-5.18/doc/html/index.html"><code·class="inline">User's·Guide·for·the·SNMP·application</code></a>).
160 This·is·done·by·defining·a·configuration·data·variable·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0894303428-1">{</span><span·class="ss">snmp_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0894303428-2">[</span><span·class="p"·data-group-id="0894303428-3">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0894303428-4">[</span><span·class="nf">snmp_app_manager_params</span><span·class="p"·data-group-id="0894303428-5">(</span><span·class="p"·data-group-id="0894303428-5">)</span><span·class="p"·data-group-id="0894303428-4">]</span><span·class="p"·data-group-id="0894303428-3">}</span><span·class="p">,</span><span·class="w"> 
161 ············</span><span·class="p"·data-group-id="0894303428-6">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0894303428-7">[</span><span·class="nf">snmp_app_agent_params</span><span·cla[·...·truncated·by·diffoscope;·len:·450,·SHA:·a33a228c33fb1c46d0e66c658c53f7a0674979ab7e0ae195ce586b707d569ba4·...·]160 This·is·done·by·defining·a·configuration·data·variable·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1096212179-1">{</span><span·class="ss">snmp_app</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·543,·SHA:·24e5687d4b9232c08016a8f1b7f913efe507fddce25cb1e4813ee96328f84520·...·]
 161 ············</span><span·class="p"·data-group-id="1096212179-6">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1096212179-7">[</span><span·class="nf">snmp_app_agent_params</span><span·class="p"·data-group-id="1096212179-8">(</span><span·class="p"·data-group-id="1096212179-8">)</span><span·class="p"·data-group-id="1096212179-7">]</span><span·class="p"·data-group-id="1096212179-6">}</span><span·class="p"·data-group-id="1096212179-2">]</span><span·class="p"·data-group-id="1096212179-1">}</span><span·class="p">.</span></code></pre><p>A·name·for·the·data·must·be·allocated·in·the·suite·using·<code·class="inline">require</code>·(see·the
162 example·above).·Pass·this·name·as·argument·<code·class="inline">SnmpAppConfName</code>·to162 example·above).·Pass·this·name·as·argument·<code·class="inline">SnmpAppConfName</code>·to
163 <a·href="#start/3"><code·class="inline">ct_snmp:start/3</code></a>.·<code·class="inline">ct_snmp</code>·specifies·default·values·for·some163 <a·href="#start/3"><code·class="inline">ct_snmp:start/3</code></a>.·<code·class="inline">ct_snmp</code>·specifies·default·values·for·some
164 <code·class="inline">SNMP</code>·application·configuration·parameters·(such·as·<code·class="inline">{verbosity,trace}</code>·for164 <code·class="inline">SNMP</code>·application·configuration·parameters·(such·as·<code·class="inline">{verbosity,trace}</code>·for
165 parameter·<code·class="inline">config</code>).·This·set·of·defaults·is·merged·with·the·parameters165 parameter·<code·class="inline">config</code>).·This·set·of·defaults·is·merged·with·the·parameters
166 specified·by·the·user.·The·user·values·override·<code·class="inline">ct_snmp</code>·defaults.</p>166 specified·by·the·user.·The·user·values·override·<code·class="inline">ct_snmp</code>·defaults.</p>
167 ····</section>167 ····</section>
  
5.74 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_ssh.html
    
Offset 129, 22 lines modifiedOffset 129, 22 lines modified
  
129 ····<section·id="moduledoc">129 ····<section·id="moduledoc">
130 <p>SSH/SFTP·client·module.</p><p>This·module·uses·application·<code·class="inline">SSH</code>,·which·provides·detailed·information·about,130 <p>SSH/SFTP·client·module.</p><p>This·module·uses·application·<code·class="inline">SSH</code>,·which·provides·detailed·information·about,
131 for·example,·functions,·types,·and·options.</p><p>Argument·<code·class="inline">Server</code>·in·the·SFTP·functions·is·only·to·be·used·for·SFTP·sessions131 for·example,·functions,·types,·and·options.</p><p>Argument·<code·class="inline">Server</code>·in·the·SFTP·functions·is·only·to·be·used·for·SFTP·sessions
132 that·have·been·started·on·existing·SSH·connections·(that·is,·when·the·original132 that·have·been·started·on·existing·SSH·connections·(that·is,·when·the·original
133 connection·type·is·<code·class="inline">ssh</code>).·Whenever·the·connection·type·is·<code·class="inline">sftp</code>,·use·the·SSH133 connection·type·is·<code·class="inline">ssh</code>).·Whenever·the·connection·type·is·<code·class="inline">sftp</code>,·use·the·SSH
134 connection·reference·only.</p><p>The·following·options·are·valid·for·specifying·an·SSH/SFTP·connection·(that·is,134 connection·reference·only.</p><p>The·following·options·are·valid·for·specifying·an·SSH/SFTP·connection·(that·is,
135 can·be·used·as·configuration·elements):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4822201853-1">[</span><span·class="p"·data-group-id="4822201853-2">{</span><span·class="n">ConnType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p"·data-group-id="4822201853-2">}</span><span·class="p">,</span><span·class="w">135 can·be·used·as·configuration·elements):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9811354424-1">[</span><span·class="p"·data-group-id="9811354424-2">{</span><span·class="n">ConnType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p"·data-group-id="9811354424-2">}</span><span·class="p">,</span><span·class="w">
136 ·</span><span·class="p"·data-group-id="4822201853-3">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="4822201853-3">}</span><span·class="p">,</span><span·class="w">136 ·</span><span·class="p"·data-group-id="9811354424-3">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="9811354424-3">}</span><span·class="p">,</span><span·class="w">
137 ·</span><span·class="p"·data-group-id="4822201853-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserName</span><span·class="p"·data-group-id="4822201853-4">}</span><span·class="w">137 ·</span><span·class="p"·data-group-id="9811354424-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserName</span><span·class="p"·data-group-id="9811354424-4">}</span><span·class="w">
138 ·</span><span·class="p"·data-group-id="4822201853-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pwd</span><span·class="p"·data-group-id="4822201853-5">}</span><span·class="w">138 ·</span><span·class="p"·data-group-id="9811354424-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pwd</span><span·class="p"·data-group-id="9811354424-5">}</span><span·class="w">
139 ·</span><span·class="p"·data-group-id="4822201853-6">{</span><span·class="ss">user_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">String</span><span·class="p"·data-group-id="4822201853-6">}</span><span·class="w">139 ·</span><span·class="p"·data-group-id="9811354424-6">{</span><span·class="ss">user_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">String</span><span·class="p"·data-group-id="9811354424-6">}</span><span·class="w">
140 ·</span><span·class="p"·data-group-id="4822201853-7">{</span><span·class="ss">public_key_alg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PubKeyAlg</span><span·class="p"·data-group-id="4822201853-7">}</span><span·class="w">140 ·</span><span·class="p"·data-group-id="9811354424-7">{</span><span·class="ss">public_key_alg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PubKeyAlg</span><span·class="p"·data-group-id="9811354424-7">}</span><span·class="w">
141 ·</span><span·class="p"·data-group-id="4822201853-8">{</span><span·class="ss">connect_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="p"·data-group-id="4822201853-8">}</span><span·class="w">141 ·</span><span·class="p"·data-group-id="9811354424-8">{</span><span·class="ss">connect_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="p"·data-group-id="9811354424-8">}</span><span·class="w">
142 ·</span><span·class="p"·data-group-id="4822201853-9">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="n">KeyCallbackMod</span><span·class="p"·data-group-id="4822201853-9">}</span><span·class="p"·data-group-id="4822201853-1">]</span></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh-5.2.6/doc/html/ssh.html"><code·class="inline">ssh</code></a>.</p><p>All·time-out·parameters·in·<code·class="inline">ct_ssh</code>·functions·are·values·in·milliseconds.</p>142 ·</span><span·class="p"·data-group-id="9811354424-9">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="n">KeyCallbackMod</span><span·class="p"·data-group-id="9811354424-9">}</span><span·class="p"·data-group-id="9811354424-1">]</span></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh-5.2.6/doc/html/ssh.html"><code·class="inline">ssh</code></a>.</p><p>All·time-out·parameters·in·<code·class="inline">ct_ssh</code>·functions·are·values·in·milliseconds.</p>
143 ····</section>143 ····</section>
  
144 </div>144 </div>
  
145 ··<section·id="summary"·class="details-list">145 ··<section·id="summary"·class="details-list">
146 ····<h1·class="section-heading">146 ····<h1·class="section-heading">
147 ······<a·class="hover-link"·href="#summary">147 ······<a·class="hover-link"·href="#summary">
32.4 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/ct_telnet.html
    
Offset 132, 38 lines modifiedOffset 132, 38 lines modified
132 matching·on·the·result.·For·information·about·how·to·use·<code·class="inline">ct_telnet</code>·and132 matching·on·the·result.·For·information·about·how·to·use·<code·class="inline">ct_telnet</code>·and
133 configure·connections,·specifically·for·UNIX·hosts,·see·the·<a·href="unix_telnet.html"><code·class="inline">unix_telnet</code></a>133 configure·connections,·specifically·for·UNIX·hosts,·see·the·<a·href="unix_telnet.html"><code·class="inline">unix_telnet</code></a>
134 manual·page.</p><p>Default·values·defined·in·<code·class="inline">ct_telnet</code>:</p><p><a·href=""·id="Default_values"></a></p><ul><li>Connection·timeout·(time·to·wait·for·connection)·=·10·seconds</li><li>Command·timeout·(time·to·wait·for·a·command·to·return)·=·10·seconds</li><li>Max·number·of·reconnection·attempts·=·3</li><li>Reconnection·interval·(time·to·wait·in·between·reconnection·attempts)·=·5134 manual·page.</p><p>Default·values·defined·in·<code·class="inline">ct_telnet</code>:</p><p><a·href=""·id="Default_values"></a></p><ul><li>Connection·timeout·(time·to·wait·for·connection)·=·10·seconds</li><li>Command·timeout·(time·to·wait·for·a·command·to·return)·=·10·seconds</li><li>Max·number·of·reconnection·attempts·=·3</li><li>Reconnection·interval·(time·to·wait·in·between·reconnection·attempts)·=·5
135 seconds</li><li>Keep·alive·(sends·NOP·to·the·server·every·8·sec·if·connection·is·idle)·=135 seconds</li><li>Keep·alive·(sends·NOP·to·the·server·every·8·sec·if·connection·is·idle)·=
136 <code·class="inline">true</code></li><li>Polling·limit·(max·number·of·times·to·poll·to·get·a·remaining·string136 <code·class="inline">true</code></li><li>Polling·limit·(max·number·of·times·to·poll·to·get·a·remaining·string
137 terminated)·=·0</li><li>Polling·interval·(sleep·time·between·polls)·=·1·second</li><li>The·TCP_NODELAY·option·for·the·telnet·socket·is·disabled·(set·to·<code·class="inline">false</code>)·per137 terminated)·=·0</li><li>Polling·interval·(sleep·time·between·polls)·=·1·second</li><li>The·TCP_NODELAY·option·for·the·telnet·socket·is·disabled·(set·to·<code·class="inline">false</code>)·per
138 default</li></ul><p>These·parameters·can·be·modified·by·the·user·with·the·following·configuration138 default</li></ul><p>These·parameters·can·be·modified·by·the·user·with·the·following·configuration
139 term:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2828360682-1">{</span><span·class="ss">telnet_settings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2828360682-2">[</span><span·class="p"·data-group-id="2828360682-3">{</span><span·class="ss">connect_timeout</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·5278b34ccb01c8b92bfab290ba226c3c1ee212e327656b9b8ad975a05ef5659b·...·]-3">}</span><span·class="p">,</span><span·class="w">139 term:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3223750297-1">{</span><span·class="ss">telnet_settings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3223750297-2">[</span><span·class="p"·data-group-id="3223750297-3">{</span><span·class="ss">connect_timeout</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·1d8c71851911b815e28d4c76d1ff65f283c7e6b3a11f43934c7ff8e94161ce12·...·]-3">}</span><span·class="p">,</span><span·class="w">
140 ···················</span><span·class="p"·data-group-id="2828360682-4">{</span><span·class="ss">command_timeout</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="2828360682-4">}</span><span·class="p">,</span><span·class="w">140 ···················</span><span·class="p"·data-group-id="3223750297-4">{</span><span·class="ss">command_timeout</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="3223750297-4">}</span><span·class="p">,</span><span·class="w">
141 ···················</span><span·class="p"·data-group-id="2828360682-5">{</span><span·class="ss">reconnection_attempts</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="2828360682-5">}</span><span·class="p">,</span><span·class="w">141 ···················</span><span·class="p"·data-group-id="3223750297-5">{</span><span·class="ss">reconnection_attempts</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="3223750297-5">}</span><span·class="p">,</span><span·class="w">
142 ···················</span><span·class="p"·data-group-id="2828360682-6">{</span><span·class="ss">reconnection_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="2828360682-6">}</span><span·class="p">,</span><span·class="w">142 ···················</span><span·class="p"·data-group-id="3223750297-6">{</span><span·class="ss">reconnection_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="3223750297-6">}</span><span·class="p">,</span><span·class="w">
143 ···················</span><span·class="p"·data-group-id="2828360682-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="2828360682-7">}</span><span·class="p">,</span><span·class="w">143 ···················</span><span·class="p"·data-group-id="3223750297-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="3223750297-7">}</span><span·class="p">,</span><span·class="w">
144 ···················</span><span·class="p"·data-group-id="2828360682-8">{</span><span·class="ss">poll_limit</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="2828360682-8">}</span><span·class="p">,</span><span·class="w">144 ···················</span><span·class="p"·data-group-id="3223750297-8">{</span><span·class="ss">poll_limit</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="3223750297-8">}</span><span·class="p">,</span><span·class="w">
145 ···················</span><span·class="p"·data-group-id="2828360682-9">{</span><span·class="ss">poll_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="2828360682-9">}</span><span·class="p">,</span><span·class="w">145 ···················</span><span·class="p"·data-group-id="3223750297-9">{</span><span·class="ss">poll_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="3223750297-9">}</span><span·class="p">,</span><span·class="w">
146 ···················</span><span·class="p"·data-group-id="2828360682-10">{</span><span·class="ss">tcp_nodelay</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="2828360682-10">}</span><span·class="p"·data-group-id="2828360682-2">]</span><span·class="p"·data-group-id="282836068[·...·truncated·by·diffoscope;·len:·1,·SHA:·d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35·...·]-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">Millisec·=·integer(),·N·=·integer()</code></p><p>Enter·the·<code·class="inline">telnet_settings</code>·term·in·a·configuration·file·included·in·the·test146 ···················</span><span·class="p"·data-group-id="3223750297-10">{</span><span·class="ss">tcp_nodelay</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="3223750297-10">}</span><span·class="p"·data-group-id="3223750297-2">]</span><span·class="p"·data-group-id="322375029[·...·truncated·by·diffoscope;·len:·1,·SHA:·7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451·...·]-1">}</span><span·class="p">.</span></code></pre><p><code·class="inline">Millisec·=·integer(),·N·=·integer()</code></p><p>Enter·the·<code·class="inline">telnet_settings</code>·term·in·a·configuration·file·included·in·the·test
147 and·<code·class="inline">ct_telnet</code>·retrieves·the·information·automatically.</p><p><code·class="inline">keep_alive</code>·can·be·specified·per·connection,·if·necessary.·For·details,·see147 and·<code·class="inline">ct_telnet</code>·retrieves·the·information·automatically.</p><p><code·class="inline">keep_alive</code>·can·be·specified·per·connection,·if·necessary.·For·details,·see
148 <a·href="unix_telnet.html"><code·class="inline">unix_telnet</code></a>.</p><h2·id="module-logging"·class="section-heading">148 <a·href="unix_telnet.html"><code·class="inline">unix_telnet</code></a>.</p><h2·id="module-logging"·class="section-heading">
149 ··<a·href="#module-logging"·class="hover-link">149 ··<a·href="#module-logging"·class="hover-link">
150 ····<i·class="ri-link-m"·aria-hidden="true"></i>150 ····<i·class="ri-link-m"·aria-hidden="true"></i>
151 ··</a>151 ··</a>
152 ··<span·class="text">Logging</span>152 ··<span·class="text">Logging</span>
153 </h2>153 </h2>
154 <p><a·href=""·id="Logging"></a></p><p>The·default·logging·behavior·of·<code·class="inline">ct_telnet</code>·is·to·print·information·about154 <p><a·href=""·id="Logging"></a></p><p>The·default·logging·behavior·of·<code·class="inline">ct_telnet</code>·is·to·print·information·about
155 performed·operations,·commands,·and·their·corresponding·results·to·the·test·case155 performed·operations,·commands,·and·their·corresponding·results·to·the·test·case
156 HTML·log.·The·following·is·not·printed·to·the·HTML·log:·text·strings·sent·from156 HTML·log.·The·following·is·not·printed·to·the·HTML·log:·text·strings·sent·from
157 the·Telnet·server·that·are·not·explicitly·received·by·a·<code·class="inline">ct_telnet</code>·function,157 the·Telnet·server·that·are·not·explicitly·received·by·a·<code·class="inline">ct_telnet</code>·function,
158 such·as·<a·href="#expect/3"><code·class="inline">expect/3</code></a>.·However,·<code·class="inline">ct_telnet</code>·can·be·configured·to·use158 such·as·<a·href="#expect/3"><code·class="inline">expect/3</code></a>.·However,·<code·class="inline">ct_telnet</code>·can·be·configured·to·use
159 a·special·purpose·event·handler,·implemented·in·<code·class="inline">ct_conn_log_h</code>,·for·logging159 a·special·purpose·event·handler,·implemented·in·<code·class="inline">ct_conn_log_h</code>,·for·logging
160 <em>all</em>·Telnet·traffic.·To·use·this·handler,·install·a·<code·class="inline">Common·Test</code>·hook·named160 <em>all</em>·Telnet·traffic.·To·use·this·handler,·install·a·<code·class="inline">Common·Test</code>·hook·named
161 <code·class="inline">cth_conn_log</code>.·Example·(using·the·test·suite·information·function):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="2218143416-1">(</span><span·class="p"·data-group-id="2218143416-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 <code·class="inline">cth_conn_log</code>.·Example·(using·the·test·suite·information·function):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="5131879143-1">(</span><span·class="p"·data-group-id="5131879143-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="2218143416-2">[</span><span·class="p"·data-group-id="2218143416-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2218143416-4">[</span><span·class="p"·data-group-id="2218143416-5">{</[·...·truncated·by·diffoscope;·len:·805,·SHA:·2c2c374224c65fbca554c25c91438f1206bf182e6a887474b0b31b0e805a32cd·...·]-2">]</span><span·class="p">.</span></code></pre><p><code·class="inline">conn_mod()</code>·is·the·name·of·the·<code·class="inline">Common·Test</code>·module·implementing·the·connection162 ····</span><span·class="p"·data-group-id="5131879143-2">[</span><span·class="p"·data-group-id="5131879143-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5131879143-4">[</span><span·class="p"·data-group-id="5131879143-5">{</[·...·truncated·by·diffoscope;·len:·805,·SHA:·7032026bece430120e8a158ef73ac1dcb45efd731c222e716a1228ca093f01ba·...·]-2">]</span><span·class="p">.</span></code></pre><p><code·class="inline">conn_mod()</code>·is·the·name·of·the·<code·class="inline">Common·Test</code>·module·implementing·the·connection
163 protocol,·that·is,·<code·class="inline">ct_telnet</code>.</p><p>The·<code·class="inline">cth_conn_log</code>·hook·performs·unformatted·logging·of·Telnet·data·to·a163 protocol,·that·is,·<code·class="inline">ct_telnet</code>.</p><p>The·<code·class="inline">cth_conn_log</code>·hook·performs·unformatted·logging·of·Telnet·data·to·a
164 separate·text·file.·All·Telnet·communication·is·captured·and·printed,·including164 separate·text·file.·All·Telnet·communication·is·captured·and·printed,·including
165 any·data·sent·from·the·server.·The·link·to·this·text·file·is·located·at·the·top165 any·data·sent·from·the·server.·The·link·to·this·text·file·is·located·at·the·top
166 of·the·test·case·HTML·log.</p><p>By·default,·data·for·all·Telnet·connections·is·logged·in·one·common·file·(named166 of·the·test·case·HTML·log.</p><p>By·default,·data·for·all·Telnet·connections·is·logged·in·one·common·file·(named
167 <code·class="inline">default</code>),·which·can·get·messy,·for·example,·if·multiple·Telnet·sessions·are167 <code·class="inline">default</code>),·which·can·get·messy,·for·example,·if·multiple·Telnet·sessions·are
168 running·in·parallel.·Therefore·a·separate·log·file·can·be·created·for·each168 running·in·parallel.·Therefore·a·separate·log·file·can·be·created·for·each
169 connection.·To·configure·this,·use·hook·option·<code·class="inline">hosts</code>·and·list·the·names·of·the169 connection.·To·configure·this,·use·hook·option·<code·class="inline">hosts</code>·and·list·the·names·of·the
Offset 172, 23 lines modifiedOffset 172, 23 lines modified
172 default·value·of·this·option·is·<code·class="inline">raw</code>,·which·results·in·the·behavior·described172 default·value·of·this·option·is·<code·class="inline">raw</code>,·which·results·in·the·behavior·described
173 above.·If·the·value·is·set·to·<code·class="inline">html</code>,·all·Telnet·communication·is·printed·to·the173 above.·If·the·value·is·set·to·<code·class="inline">html</code>,·all·Telnet·communication·is·printed·to·the
174 test·case·HTML·log·instead.</p><p>For·raw·logs,·<code·class="inline">prefix</code>·option·can·be·used·for·adjusting·prefix·data174 test·case·HTML·log·instead.</p><p>For·raw·logs,·<code·class="inline">prefix</code>·option·can·be·used·for·adjusting·prefix·data
175 added·to·connection·log.·The·default·value·of·this·option·is175 added·to·connection·log.·The·default·value·of·this·option·is
176 <code·class="inline">disabled</code>,·which·results·with·no·prefix·data.·If·the·value·is·set·to176 <code·class="inline">disabled</code>,·which·results·with·no·prefix·data.·If·the·value·is·set·to
177 <code·class="inline">full</code>·prefix·contains·timestamp·and·additonal·information.·If·the177 <code·class="inline">full</code>·prefix·contains·timestamp·and·additonal·information.·If·the
178 value·is·set·to·<code·class="inline">short</code>·prefix·includes·only·human·readable·timestamp.</p><p>All·<code·class="inline">cth_conn_log</code>·hook·options·described·can·also·be·specified·in·a178 value·is·set·to·<code·class="inline">short</code>·prefix·includes·only·human·readable·timestamp.</p><p>All·<code·class="inline">cth_conn_log</code>·hook·options·described·can·also·be·specified·in·a
179 configuration·file·with·configuration·variable·<code·class="inline">ct_conn_log</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9888496979-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9888496979-2">[</span><span·class="p"·data-group-id="9888496979-3">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="9888496979-4">[</span><span·class="p"·data-group-id="9888496979-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">raw</span><span·class="p"·data-group-id="9888496979-5">}</span><span·class="p">,</span><span·class="w"> 
180 ···························</span><span·class="p"·data-group-id="9888496979-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="9888496979-7">[</span><span·class="nf">key_or_name</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·576,·SHA:·db3291a16dde1a57b1a227acfa4c17522f0ecb1516106f6047304416fc948d40·...·]179 configuration·file·with·configuration·variable·<code·class="inline">ct_conn_log</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0899865596-1">{</span><span·class="ss">ct_conn_log</span><span[·...·truncated·by·diffoscope;·len:·488,·SHA:·d954d52b8715a6524807d7041ca647c435c8902ff31006ae29dea867d8022523·...·]
 180 ···························</span><span·class="p"·data-group-id="0899865596-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="0899865596-7">[</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="0899865596-8">(</span><span·class="p"·data-group-id="0899865596-8">)</span><span·class="p"·data-group-id="0899865596-7">]</span><span·class="p"·data-group-id="0899865596-6">}</span><span·class="p"·data-group-id="0899865596-4">]</span><span·class="p"·data-group-id="0899865596-3">}</span><span·class="p"·data-group-id="0899865596-2">]</span><span·class="p"·data-group-id="0899865596-1">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Hook·options·specified·in·a·configuration·file·overwrite·any·hard-coded·hook
181 options·in·the·test·suite.</p></section><p><a·href=""·id="Logging_example"></a></p><p><em>Logging·Example:</em></p><p>The·following·<code·class="inline">ct_hooks</code>·statement·causes·printing·of·Telnet·traffic·to·separate181 options·in·the·test·suite.</p></section><p><a·href=""·id="Logging_example"></a></p><p><em>Logging·Example:</em></p><p>The·following·<code·class="inline">ct_hooks</code>·statement·causes·printing·of·Telnet·traffic·to·separate
182 logs·for·the·connections·<code·class="inline">server1</code>·and·<code·class="inline">server2</code>.·Traffic·for·any·other182 logs·for·the·connections·<code·class="inline">server1</code>·and·<code·class="inline">server2</code>.·Traffic·for·any·other
183 connections·is·logged·in·the·default·Telnet·log.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="1113005673-1">(</span><span·class="p"·data-group-id="1113005673-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">183 connections·is·logged·in·the·default·Telnet·log.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="7984377041-1">(</span><span·class="p"·data-group-id="7984377041-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="p"·data-group-id="1113005673-2">[</span><span·class="p"·data-group-id="1113005673-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="p"·data-group-id="7984377041-2">[</span><span·class="p"·data-group-id="7984377041-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">
185 ······</span><span·class="p"·data-group-id="1113005673-4">[</span><span·class="p"·data-group-id="1113005673-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1113005673-6">[</span><span·class="p"·data-group-id="1113005673-7">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="1113005673-8">[</span><span·class="p"·data-group-id="1113005673-9">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="1113005673-10">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="1113005673-10">]</span><span·class="p"·data-group-id="1113005673-9">}</span><span·class="p"·data-group-id="1113005673-8">]</span><span·class="p"·data-group-id="1113005673-7">}</span><span·class="p"·data-group-id="1113005673-6">]</span><span·class="p"·data-group-id="1113005673-5">}</span><span·class="p"·data-group-id="1113005673-4">]</span><span·class="p"·data-group-id="1113005673-3">}</span><span·class="p"·data-group-id="1113005673-2">]</span><span·class="p">.</span></code></pre><p>As·previously·explained,·this·specification·can·also·be·provided·by·an·entry 
186 like·the·following·in·a·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6132423342-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6132423342-2">[</span><span·class="p"·data-group-id="6132423342-3">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="6132423342-4">[</span><span·class="p"·data-group-id="6132423342-5">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="6132423342-6">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="6132423342-6">]</span><span·class="p"·data-group-id="6132423342-5">}</span><span·class="p"·data-group-id="6132423342-4">]</span><span·class="p"·data-group-id="6132423342-3">}</span><span·class="p"·data-group-id="6132423342-2">]</span><span·class="p"·data-group-id="6132423342-1">}</span><span·class="p">.</span></code></pre><p>In·this·case·the·<code·class="inline">ct_hooks</code>·statement·in·the·test·suite·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="1850968455-1">(</span><span·class="p"·data-group-id="1850968455-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
187 ····</span><span·class="p"·data-group-id="1850968455-2">[</span><span·class="p"·data-group-id="1850968455-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1850968455-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·531,·SHA:·4336226f8ae72b0b036f6f5d1ffb6aa401039b8042f119ed06ddcc9529a7f9bd·...·]185 ······</span><span·class="p"·data-group-id="7984377041-4">[</span><span·class="p"·data-group-id="7984377041-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7984377041-6">[</span><spa[·...·truncated·by·diffoscope;·len:·999,·SHA:·07096f291348dd1fb70529ce64d09f36a212141769cccab9f0e952244a952ebb·...·]
 186 like·the·following·in·a·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5823065526-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5823065526-2">[</span><span·class="p"·data-group-id="5823065526-3">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="5823065526-4">[</span><span·class="p"·data-group-id="5823065526-5">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="5823065526-6">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="5823065526-6">]</span><span·class="p"·data-group-id="5823065526-5">}</span><span·class="p"·data-group-id="5823065526-4">]</span><span·class="p"·data-group-id="5823065526-3">}</span><span·class="p"·data-group-id="5823065526-2">]</span><span·class="p"·data-group-id="5823065526-1">}</span><span·class="p">.</span></code></pre><p>In·this·case·the·<code·class="inline">ct_hooks</code>·statement·in·the·test·suite·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="6747334747-1">(</span><span·class="p"·data-group-id="6747334747-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 187 ····</span><span·class="p"·data-group-id="6747334747-2">[</span><span·class="p"·data-group-id="6747334747-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6747334747-4">[</span><span·class="p"·data-group-id="6747334747-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6747334747-6">[</span><span·class="p"·data-group-id="6747334747-6">]</span><span·class="p"·data-group-id="6747334747-5">}</span><span·class="p"·data-group-id="6747334747-4">]</span><span·class="p"·data-group-id="6747334747-3">}</span><span·class="p"·data-group-id="6747334747-2">]</span><span·class="p">.</span></code></pre><h2·id="module-see-also"·class="section-heading">
188 ··<a·href="#module-see-also"·class="hover-link">188 ··<a·href="#module-see-also"·class="hover-link">
189 ····<i·class="ri-link-m"·aria-hidden="true"></i>189 ····<i·class="ri-link-m"·aria-hidden="true"></i>
190 ··</a>190 ··</a>
191 ··<span·class="text">See·Also</span>191 ··<span·class="text">See·Also</span>
192 </h2>192 </h2>
193 <p><a·href="unix_telnet.html"><code·class="inline">unix_telnet</code></a></p>193 <p><a·href="unix_telnet.html"><code·class="inline">unix_telnet</code></a></p>
194 ····</section>194 ····</section>
Offset 865, 17 lines modifiedOffset 865, 17 lines modified
865 of·waiting·for·prompt.</p></li><li><p><strong><code·class="inline">repeat·|·repeat,·N</code></strong>·-·The·pattern(s)·must·be·matched·multiple·times.·If865 of·waiting·for·prompt.</p></li><li><p><strong><code·class="inline">repeat·|·repeat,·N</code></strong>·-·The·pattern(s)·must·be·matched·multiple·times.·If
866 <code·class="inline">N</code>·is·specified,·the·pattern(s)·are·matched·<code·class="inline">N</code>·times,·and·the·function866 <code·class="inline">N</code>·is·specified,·the·pattern(s)·are·matched·<code·class="inline">N</code>·times,·and·the·function
867 returns·<code·class="inline">HaltReason·=·done</code>.·This·option·can·be·interrupted·by·one·or·more867 returns·<code·class="inline">HaltReason·=·done</code>.·This·option·can·be·interrupted·by·one·or·more
868 <code·class="inline">HaltPatterns</code>.·<code·class="inline">MatchList</code>·is·always·returned,·that·is,·a·list·of·<code·class="inline">Match</code>868 <code·class="inline">HaltPatterns</code>.·<code·class="inline">MatchList</code>·is·always·returned,·that·is,·a·list·of·<code·class="inline">Match</code>
869 instead·of·only·one·<code·class="inline">Match</code>.·Also·<code·class="inline">HaltReason</code>·is·returned.</p></li><li><p><strong><code·class="inline">sequence</code></strong>·-·All·patterns·must·be·matched·in·a·sequence.·A·match·is·not869 instead·of·only·one·<code·class="inline">Match</code>.·Also·<code·class="inline">HaltReason</code>·is·returned.</p></li><li><p><strong><code·class="inline">sequence</code></strong>·-·All·patterns·must·be·matched·in·a·sequence.·A·match·is·not
870 concluded·until·all·patterns·are·matched.·This·option·can·be·interrupted·by870 concluded·until·all·patterns·are·matched.·This·option·can·be·interrupted·by
871 one·or·more·<code·class="inline">HaltPatterns</code>.·<code·class="inline">MatchList</code>·is·always·returned,·that·is,·a·list·of871 one·or·more·<code·class="inline">HaltPatterns</code>.·<code·class="inline">MatchList</code>·is·always·returned,·that·is,·a·list·of
872 <code·class="inline">Match</code>·instead·of·only·one·<code·class="inline">Match</code>.·Also·<code·class="inline">HaltReason</code>·is·returned.</p></li></ul><p><em>Example·1:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expect</span><span·class="p"·data-group-id="8592282873-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="8592282873-2">[</span><span·class="p"·data-group-id="8592282873-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1028,·SHA:·0df9947b252fe3f7b862d227ad2b6f30c6d9409e80dc485648da452ef40d34a3·...·]3-1">)</span></code></pre><p>First·this·tries·to·match·<code·class="inline">&quot;ABC&quot;</code>,·and·then·<code·class="inline">&quot;XYZ&quot;</code>,·but·if·<code·class="inline">&quot;NNN&quot;</code>·appears,·the872 <code·class="inline">Match</code>·instead·of·only·one·<code·class="inline">Match</code>.·Also·<code·class="inline">HaltReason</code>·is·returned.</p></li></ul><p><em>Example·1:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expect</span><span·class="p"·data-group-id="2949026453-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="2949026453-2">[</span><span·class="p"·data-group-id="2949026453-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1028,·SHA:·24d05d8a971783b2f36c31e41c3396e77b61cfec4258356f1fbfb552b07df108·...·]3-1">)</span></code></pre><p>First·this·tries·to·match·<code·class="inline">&quot;ABC&quot;</code>,·and·then·<code·class="inline">&quot;XYZ&quot;</code>,·but·if·<code·class="inline">&quot;NNN&quot;</code>·appears,·the
873 function·returns·<code·class="inline">{error,{nnn,[&quot;NNN&quot;]}}</code>.·If·both·<code·class="inline">&quot;ABC&quot;</code>·and·<code·class="inline">&quot;XYZ&quot;</code>·are873 function·returns·<code·class="inline">{error,{nnn,[&quot;NNN&quot;]}}</code>.·If·both·<code·class="inline">&quot;ABC&quot;</code>·and·<code·class="inline">&quot;XYZ&quot;</code>·are
874 matched,·the·function·returns·<code·class="inline">{ok,[AbcMatch,XyzMatch]}</code>.</p><p><em>Example·2:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expect</span><span·class="p"·data-group-id="6499167194-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="6499167194-2">[</span><span·class="p"·data-group-id="6499167194-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1182,·SHA:·02b074c61d673fb69a2b5e793f56ddbddea1d7741f187733d1484a0fa6a12722·...·]-1">)</span></code></pre><p>This·tries·to·match·<code·class="inline">&quot;ABC&quot;</code>·or·<code·class="inline">&quot;XYZ&quot;</code>·twice.·If·<code·class="inline">&quot;NNN&quot;</code>·appears,·the·function874 matched,·the·function·returns·<code·class="inline">{ok,[AbcMatch,XyzMatch]}</code>.</p><p><em>Example·2:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expect</span><span·class="p"·data-group-id="0288020428-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="0288020428-2">[</span><span·class="p"·data-group-id="0288020428-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1182,·SHA:·0ceab648651eb46ae9c5b01e0191f9aa4011f62333ea7956724c2c6c707345b8·...·]-1">)</span></code></pre><p>This·tries·to·match·<code·class="inline">&quot;ABC&quot;</code>·or·<code·class="inline">&quot;XYZ&quot;</code>·twice.·If·<code·class="inline">&quot;NNN&quot;</code>·appears,·the·function
875 returns·<code·class="inline">HaltReason·=·{nnn,[&quot;NNN&quot;]}</code>.</p><p>Options·<code·class="inline">repeat</code>·and·<code·class="inline">sequence</code>·can·be·combined·to·match·a·sequence·multiple875 returns·<code·class="inline">HaltReason·=·{nnn,[&quot;NNN&quot;]}</code>.</p><p>Options·<code·class="inline">repeat</code>·and·<code·class="inline">sequence</code>·can·be·combined·to·match·a·sequence·multiple
876 times.</p>876 times.</p>
877 ··</section>877 ··</section>
878 </section>878 </section>
879 <section·class="detail"·id="get_data/1">879 <section·class="detail"·id="get_data/1">
  
880 ··<div·class="detail-header">880 ··<div·class="detail-header">
56.0 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/dependencies_chapter.html
    
Offset 157, 73 lines modifiedOffset 157, 73 lines modified
157 between·the·cases·and·therefore·introduce·dependencies·between·them.</p><p>To·avoid·this,·we·can·consider·starting·and·stopping·the·server·for·every·test.157 between·the·cases·and·therefore·introduce·dependencies·between·them.</p><p>To·avoid·this,·we·can·consider·starting·and·stopping·the·server·for·every·test.
158 We·can·thus·implement·the·start·and·stop·action·as·common·functions·to·be·called158 We·can·thus·implement·the·start·and·stop·action·as·common·functions·to·be·called
159 from·<a·href="ct_suite.html#c:init_per_testcase/2"><code·class="inline">init_per_testcase</code></a>·and159 from·<a·href="ct_suite.html#c:init_per_testcase/2"><code·class="inline">init_per_testcase</code></a>·and
160 <a·href="ct_suite.html#c:end_per_testcase/2"><code·class="inline">end_per_testcase</code></a>.·(Remember·to·test·the160 <a·href="ct_suite.html#c:end_per_testcase/2"><code·class="inline">end_per_testcase</code></a>.·(Remember·to·test·the
161 start·and·stop·functionality·separately.)·The·configuration·can·also·be161 start·and·stop·functionality·separately.)·The·configuration·can·also·be
162 implemented·as·a·common·function,·maybe·grouped·with·the·start·function.162 implemented·as·a·common·function,·maybe·grouped·with·the·start·function.
163 Finally,·the·testing·of·connecting·and·disconnecting·a·client·can·be·grouped163 Finally,·the·testing·of·connecting·and·disconnecting·a·client·can·be·grouped
164 into·one·test·case.·The·resulting·suite·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0418605815-1">(</span><span·class="ss">my_server_SUITE</span><span·class="p"·data-group-id="0418605815-1">)</span><span·class="p">.</span><span·class="w">164 into·one·test·case.·The·resulting·suite·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4874219000-1">(</span><span·class="ss">my_server_SUITE</span><span·class="p"·data-group-id="4874219000-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="0418605815-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="0418605815-2">)</span><span·class="p">.</span><span·class="w">165 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="4874219000-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="4874219000-2">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0418605815-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="0418605815-3">)</span><span·class="p">.</span><span·class="w">166 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4874219000-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="4874219000-3">)</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="c1">%%%·init·and·end·functions...</span><span·class="w">167 </span><span·class="c1">%%%·init·and·end·functions...</span><span·class="w">
  
168 </span><span·class="nf">suite</span><span·class="p"·data-group-id="0418605815-4">(</span><span·class="p"·data-group-id="0418605815-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0418605815-5">[</span><span·class="p"·data-group-id="0418605815-6">{</span[·...·truncated·by·diffoscope;·len:·187,·SHA:·6b07d2275b77274b4db4b870133eaafc38ab6d8f30a63c707b8cdd4dc6729181·...·]-5">]</span><span·class="p">.</span><span·class="w">168 </span><span·class="nf">suite</span><span·class="p"·data-group-id="4874219000-4">(</span><span·class="p"·data-group-id="4874219000-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4874219000-5">[</span><span·class="p"·data-group-id="4874219000-6">{</span[·...·truncated·by·diffoscope;·len:·187,·SHA:·7e0c7a2c99bd8e57049ee451afd525ebe258e617ad74ddf3449da8f669fc5bec·...·]-5">]</span><span·class="p">.</span><span·class="w">
  
169 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="0418605815-7">(</span><span·class="ss">start_and_stop</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">169 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="4874219000-7">(</span><span·class="ss">start_and_stop</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ····</span><span·class="n">Config</span><span·class="p">;</span><span·class="w">170 ····</span><span·class="n">Config</span><span·class="p">;</span><span·class="w">
  
171 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="0418605815-8">(</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="4874219000-8">(</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="0418605815-9">[</span><span·class="p"·data-group-id="0418605815-10">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="nf">start_server</span><span·class="p"·data-group-id="0418605815-11">(</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·218,·SHA:·3aad6cb8b3a3dfbe551c57ef75e9e1c7a494d555462a70335a780ecf6628b71b·...·]-9">]</span><span·class="p">;</span><span·class="w">172 ····</span><span·class="p"·data-group-id="4874219000-9">[</span><span·class="p"·data-group-id="4874219000-10">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="nf">start_server</span><span·class="p"·data-group-id="4874219000-11">(</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·218,·SHA:·9ec0099a7a03e01ca39225659bfddf1202ffccf99462750429d403b344c6bc01·...·]-9">]</span><span·class="p">;</span><span·class="w">
  
173 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="0418605815-12">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="4874219000-12">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_server</span><span·class="p"·data-group-id="0418605815-13">(</span><span·class="p"·data-group-id="0418605815-13">)</span><span·class="p">,</span><span·class="w">174 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_server</span><span·class="p"·data-group-id="4874219000-13">(</span><span·class="p"·data-group-id="4874219000-13">)</span><span·class="p">,</span><span·class="w">
175 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="0418605815-14">(</span><span·class="p"·data-group-id="0418605815-14">)</span><span·class="p">,</span><span·class="w">175 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="4874219000-14">(</span><span·class="p"·data-group-id="4874219000-14">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="0418605815-15">[</span><span·class="p"·data-group-id="0418605815-16">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0418605815-16">}</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·107,·SHA:·326e133af32b6bdb2752d97f4abfb51aae7c603bdd6684b980475a3635199ee3·...·]-15">]</span><span·class="p">.</span><span·class="w">176 ····</span><span·class="p"·data-group-id="4874219000-15">[</span><span·class="p"·data-group-id="4874219000-16">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="4874219000-16">}</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·107,·SHA:·674f940d55ccd310a0273dd35f905347fefb368ba6e54cfcf36a8d040919c53a·...·]-15">]</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="0418605815-17">(</span><span·class="ss">start_and_stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="0418605815-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">177 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="4874219000-17">(</span><span·class="ss">start_and_stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="4874219000-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">178 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
  
179 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="0418605815-18">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="4874219000-18">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="0418605815-19">(</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-19">)</span><span·class="p">,</span><span·class="w">180 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="4874219000-19">(</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-19">)</span><span·class="p">,</span><span·class="w">
181 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="0418605815-20">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0418605815-20">)</span><span·class="p">.</span><span·class="w">181 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="4874219000-20">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="4874219000-20">)</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="c1">%%%·test·cases...</span><span·class="w">182 </span><span·class="c1">%%%·test·cases...</span><span·class="w">
  
183 </span><span·class="nf">all</span><span·class="p"·data-group-id="0418605815-21">(</span><span·class="p"·data-group-id="0418605815-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0418605815-22">[</span><span·class="ss">start_and_stop</span><span·class[·...·truncated·by·diffoscope;·len:·202,·SHA:·2042edf0022d3755b7e882f8a097d58cfc33c7c1308cec41d24e54c9de00b7b5·...·]-22">]</span><span·class="p">.</span><span·class="w">183 </span><span·class="nf">all</span><span·class="p"·data-group-id="4874219000-21">(</span><span·class="p"·data-group-id="4874219000-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4874219000-22">[</span><span·class="ss">start_and_stop</span><span·class[·...·truncated·by·diffoscope;·len:·202,·SHA:·25d5688064d0b41c561f7b5126e5edf6606e299d969be5e6de91d0da6fb87b0d·...·]-22">]</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="c1">%%·test·that·starting·and·stopping·works</span><span·class="w">184 </span><span·class="c1">%%·test·that·starting·and·stopping·works</span><span·class="w">
185 </span><span·class="nf">start_and_stop</span><span·class="p"·data-group-id="0418605815-23">(</span><span·class="p">_</span><span·class="p"·data-group-id="0418605815-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">185 </span><span·class="nf">start_and_stop</span><span·class="p"·data-group-id="4874219000-23">(</span><span·class="p">_</span><span·class="p"·data-group-id="4874219000-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
186 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_server</span><span·class="p"·data-group-id="0418605815-24">(</span><span·class="p"·data-group-id="0418605815-24">)</span><span·class="p">,</span><span·class="w">186 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_server</span><span·class="p"·data-group-id="4874219000-24">(</span><span·class="p"·data-group-id="4874219000-24">)</span><span·class="p">,</span><span·class="w">
187 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="0418605815-25">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0418605815-25">)</span><span·class="p">.</span><span·class="w">187 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="4874219000-25">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="4874219000-25">)</span><span·class="p">.</span><span·class="w">
  
188 </span><span·class="c1">%%·configuration·test</span><span·class="w">188 </span><span·class="c1">%%·configuration·test</span><span·class="w">
189 </span><span·class="nf">config</span><span·class="p"·data-group-id="0418605815-26">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 </span><span·class="nf">config</span><span·class="p"·data-group-id="4874219000-26">(</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="0418605815-27">(</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-27">)</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="4874219000-27">(</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-27">)</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="0418605815-28">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0418605815-28">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="4874219000-28">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="4874219000-28">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="c1">%%·test·connecting·and·disconnecting·client</span><span·class="w">192 </span><span·class="c1">%%·test·connecting·and·disconnecting·client</span><span·class="w">
193 </span><span·class="nf">connect_and_disconnect</span><span·class="p"·data-group-id="0418605815-29">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 </span><span·class="nf">connect_and_disconnect</span><span·class="p"·data-group-id="4874219000-29">(</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="0418605815-30">(</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="0418605815-30">)</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="n">ServerPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="4874219000-30">(</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="4874219000-30">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="p"·data-group-id="0418605815-31">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="0418605815-31">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_serve[·...·truncated·by·diffoscope;·len:·190,·SHA:·9d1ba15fc7d8ab6917f0f7174257e286b873b30d3009b866472f9e595f8f56f2·...·]-32">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="p"·data-group-id="4874219000-31">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="4874219000-31">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_serve[·...·truncated·by·diffoscope;·len:·190,·SHA:·d971d410e6ff155bd056d81d6672e2779e4cc85d04fbfb6043aed07369a02008·...·]-32">)</span><span·class="p">,</span><span·class="w">
196 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="0418605815-33">(</span><span·class="n">ServerPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SessionId</span><span·class="p"·data-group-id="0418605815-33">)</span><span·class="p">.</span><span·class="w">196 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="4874219000-33">(</span><span·class="n">ServerPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SessionId</span><span·class="p"·data-group-id="4874219000-33">)</span><span·class="p">.</span><span·class="w">
  
197 </span><span·class="c1">%%%·common·functions...</span><span·class="w">197 </span><span·class="c1">%%%·common·functions...</span><span·class="w">
  
198 </span><span·class="nf">start_server</span><span·class="p"·data-group-id="0418605815-34">(</span><span·class="p"·data-group-id="0418605815-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 </span><span·class="nf">start_server</span><span·class="p"·data-group-id="4874219000-34">(</span><span·class="p"·data-group-id="4874219000-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="p"·data-group-id="0418605815-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0418605815-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_serve[·...·truncated·by·diffoscope;·len:·156,·SHA:·494efa2294f87539618c3c29d850c589180909670656ab4f131ed1a470df70b1·...·]-36">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="p"·data-group-id="4874219000-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="4874219000-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_serve[·...·truncated·by·diffoscope;·len:·156,·SHA:·fac4be865083fcf8fc2a7eeb7303a85eb1573851f34d9210966cd8b6dbaf1948·...·]-36">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="n">ServerPid</span><span·class="p">.</span><span·class="w">200 ····</span><span·class="n">ServerPid</span><span·class="p">.</span><span·class="w">
  
201 </span><span·class="nf">stop_server</span><span·class="p"·data-group-id="0418605815-37">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0418605815-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">201 </span><span·class="nf">stop_server</span><span·class="p"·data-group-id="4874219000-37">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="4874219000-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="0418605815-38">(</span><span·class="p"·data-group-id="0418605815-38">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="4874219000-38">(</span><span·class="p"·data-group-id="4874219000-38">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">203 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
204 </span><span·class="nf">configure_server</span><span·class="p"·data-group-id="0418605815-39">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0418605815-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 </span><span·class="nf">configure_server</span><span·class="p"·data-group-id="4874219000-39">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="4874219000-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ····</span><span·class="n">ServerCfgData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="0418605815-40">(</span><span·class="ss">my_server_cfg</span><span·class="p"·data-group-id="0418605815-40">)</span><span·class="p">,</span><span·class="w">205 ····</span><span·class="n">ServerCfgData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="4874219000-40">(</span><span·class="ss">my_server_cfg</span><span·class="p"·data-group-id="4874219000-40">)</span><span·class="p">,</span><span·class="w">
206 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">configure</span><span·class="p"·data-group-id="0418605815-41">(</span><span·class="n">ServerPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ServerCfgData</span><span·class="p"·data-group-id="0418605815-41">)</span><span·class="p">,</span><span·class="w">206 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server</span><span·class="p">:</span><span·class="nf">configure</span><span·class="p"·data-group-id="4874219000-41">(</span><span·class="n">ServerPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ServerCfgData</span><span·class="p"·data-group-id="4874219000-41">)</span><span·class="p">,</span><span·class="w">
207 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p><a·href=""·id="save_config"></a></p><h2·id="saving-configuration-data"·class="section-heading">207 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p><a·href=""·id="save_config"></a></p><h2·id="saving-configuration-data"·class="section-heading">
208 ··<a·href="#saving-configuration-data"·class="hover-link">208 ··<a·href="#saving-configuration-data"·class="hover-link">
209 ····<i·class="ri-link-m"·aria-hidden="true"></i>209 ····<i·class="ri-link-m"·aria-hidden="true"></i>
210 ··</a>210 ··</a>
211 ··<span·class="text">Saving·Configuration·Data</span>211 ··<span·class="text">Saving·Configuration·Data</span>
212 </h2>212 </h2>
213 <p>Sometimes·it·is·impossible,·or·infeasible,·to·implement·independent·test·cases.213 <p>Sometimes·it·is·impossible,·or·infeasible,·to·implement·independent·test·cases.
Offset 243, 48 lines modifiedOffset 243, 48 lines modified
243 <code·class="inline">Saver</code>·is·always·matched·to·the·expected·name·of·the·saving·test·case.·This243 <code·class="inline">Saver</code>·is·always·matched·to·the·expected·name·of·the·saving·test·case.·This
244 way,·problems·because·of·restructuring·of·the·test·suite·can·be·avoided.·Also,244 way,·problems·because·of·restructuring·of·the·test·suite·can·be·avoided.·Also,
245 it·makes·the·dependency·more·explicit·and·the·test·suite·easier·to·read·and245 it·makes·the·dependency·more·explicit·and·the·test·suite·easier·to·read·and
246 maintain.</p><p>To·pass·data·from·one·test·suite·to·another,·the·same·mechanism·is·used.·The246 maintain.</p><p>To·pass·data·from·one·test·suite·to·another,·the·same·mechanism·is·used.·The
247 data·is·to·be·saved·by·finction·<a·href="ct_suite.html#c:end_per_suite/1"><code·class="inline">end_per_suite</code></a>247 data·is·to·be·saved·by·finction·<a·href="ct_suite.html#c:end_per_suite/1"><code·class="inline">end_per_suite</code></a>
248 and·read·by·function·<a·href="ct_suite.html#c:init_per_suite/1"><code·class="inline">init_per_suite</code></a>·in·the248 and·read·by·function·<a·href="ct_suite.html#c:init_per_suite/1"><code·class="inline">init_per_suite</code></a>·in·the
249 suite·that·follows.·When·passing·data·between·suites,·<code·class="inline">Saver</code>·carries·the·name249 suite·that·follows.·When·passing·data·between·suites,·<code·class="inline">Saver</code>·carries·the·name
250 of·the·test·suite.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8937406906-1">(</span><span·class="ss">server_b_SUITE</span><span·class="p"·data-group-id="8937406906-1">)</span><span·class="p">.</span><span·class="w">250 of·the·test·suite.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6469392310-1">(</span><span·class="ss">server_b_SUITE</span><span·class="p"·data-group-id="6469392310-1">)</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="8937406906-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8937406906-2">)</span><span·class="p">.</span><span·class="w">251 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="6469392310-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="6469392310-2">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8937406906-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="8937406906-3">)</span><span·class="p">.</span><span·class="w">252 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6469392310-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="6469392310-3">)</span><span·class="p">.</span><span·class="w">
  
253 </span><span·class="c1">%%%·init·and·end·functions...</span><span·class="w">253 </span><span·class="c1">%%%·init·and·end·functions...</span><span·class="w">
  
254 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="8937406906-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8937406906-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">254 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="6469392310-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6469392310-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
255 ····</span><span·class="c1">%%·read·config·saved·by·previous·test·suite</span><span·class="w">255 ····</span><span·class="c1">%%·read·config·saved·by·previous·test·suite</span><span·class="w">
256 ····</span><span·class="p"·data-group-id="8937406906-5">{</span><span·class="ss">server_a_SUITE</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="8937406906-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc[·...·truncated·by·diffoscope;·len:·282,·SHA:·5601f33b1ab251d71b057f8c5fa2a5cdef7a6d26cf6401e070deacb3c6743f5d·...·]-6">)</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="p"·data-group-id="6469392310-5">{</span><span·class="ss">server_a_SUITE</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="6469392310-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc[·...·truncated·by·diffoscope;·len:·282,·SHA:·48fab85fe99229e4fa9b630b7312c0c75dbba494b5c88a0a6d18178c3c5ec436·...·]-6">)</span><span·class="p">,</span><span·class="w">
257 ····</span><span·class="c1">%%·extract·server·identity·(comes·from·server_a_SUITE)</span><span·class="w">257 ····</span><span·class="c1">%%·extract·server·identity·(comes·from·server_a_SUITE)</span><span·class="w">
258 ····</span><span·class="n">ServerId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="8937406906-7">(</span><span·class="ss">server_id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="8937406906-7">)</span><span·class="p">,</span><span·class="w">258 ····</span><span·class="n">ServerId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="6469392310-7">(</span><span·class="ss">server_id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="6469392310-7">)</span><span·class="p">,</span><span·class="w">
259 ····</span><span·class="n">SessionId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">connect_to_server</span><span·class="p"·data-group-id="8937406906-8">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="8937406906-8">)</span><span·class="p">,</span><span·class="w">259 ····</span><span·class="n">SessionId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">connect_to_server</span><span·class="p"·data-group-id="6469392310-8">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="6469392310-8">)</span><span·class="p">,</span><span·class="w">
260 ····</span><span·class="p"·data-group-id="8937406906-9">[</span><span·class="p"·data-group-id="8937406906-10">{</span><span·class="ss">ids</span><span·class="p">,</span><span·class="p"·data-group-id="8937406906-11">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">Sess[·...·truncated·by·diffoscope;·len:·262,·SHA:·7c2c5bbc29b96bad9979b60e535c21a3c4b8f4aafe3c2bb388b1b89eebd866e3·...·]-9">]</span><span·class="p">.</span><span·class="w">260 ····</span><span·class="p"·data-group-id="6469392310-9">[</span><span·class="p"·data-group-id="6469392310-10">{</span><span·class="ss">ids</span><span·class="p">,</span><span·class="p"·data-group-id="6469392310-11">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">Sess[·...·truncated·by·diffoscope;·len:·262,·SHA:·eeb5ea5a0d4a8d56750feb4637e0209b91d77a7a7dd510e4a613976076334383·...·]-9">]</span><span·class="p">.</span><span·class="w">
  
261 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="8937406906-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8937406906-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">261 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="6469392310-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6469392310-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ····</span><span·class="c1">%%·save·config·for·server_c_SUITE·(session_id·and·server_id)</span><span·class="w">262 ····</span><span·class="c1">%%·save·config·for·server_c_SUITE·(session_id·and·server_id)</span><span·class="w">
263 ····</span><span·class="p"·data-group-id="8937406906-13">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="8937406906-13">}</span><span·class="w">263 ····</span><span·class="p"·data-group-id="6469392310-13">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="6469392310-13">}</span><span·class="w">
  
264 </span><span·class="c1">%%%·test·cases...</span><span·class="w">264 </span><span·class="c1">%%%·test·cases...</span><span·class="w">
  
265 </span><span·class="nf">all</span><span·class="p"·data-group-id="8937406906-14">(</span><span·class="p"·data-group-id="8937406906-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8937406906-15">[</span><span·class="ss">allocate</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·106,·SHA:·72e700afe91a975c84e31a42a32e9b16ae1182691e9bd38b76c8730b8b609223·...·]-15">]</span><span·class="p">.</span><span·class="w">265 </span><span·class="nf">all</span><span·class="p"·data-group-id="6469392310-14">(</span><span·class="p"·data-group-id="6469392310-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6469392310-15">[</span><span·class="ss">allocate</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·106,·SHA:·d260bfdb24f29c3e48fcb17bedde8644dfb9de4df0d83b764af2625f0577c61f·...·]-15">]</span><span·class="p">.</span><span·class="w">
  
266 </span><span·class="nf">allocate</span><span·class="p"·data-group-id="8937406906-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8937406906-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">266 </span><span·class="nf">allocate</span><span·class="p"·data-group-id="6469392310-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6469392310-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 ····</span><span·class="p"·data-group-id="8937406906-17">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="8937406906-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·03f53502cd60867d6f3e592965ac2af673ad7ae399f251d8be233729a06caf5b·...·]-18">)</span><span·class="p">,</span><span·class="w">267 ····</span><span·class="p"·data-group-id="6469392310-17">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="6469392310-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·1cc1756d880ce8c300b8aad9c634f07ebb84901670b1bcb1b4c086c6ac6fe5f2·...·]-18">)</span><span·class="p">,</span><span·class="w">
268 ····</span><span·class="p"·data-group-id="8937406906-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="8937406906-19">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">allocate_re[·...·truncated·by·diffoscope;·len:·219,·SHA:·cb93b0ebe07a0c26f5495ae66ca352591909c0d08862aa642ba51110e7a13b31·...·]-20">)</span><span·class="p">,</span><span·class="w">268 ····</span><span·class="p"·data-group-id="6469392310-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="6469392310-19">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">allocate_re[·...·truncated·by·diffoscope;·len:·219,·SHA:·0d695bcb4e25e23fd1ae6c7b9794d294990492f9aadfadd687e5d303cfc31efa·...·]-20">)</span><span·class="p">,</span><span·class="w">
269 ····</span><span·class="c1">%%·save·handle·for·deallocation·test</span><span·class="w">269 ····</span><span·class="c1">%%·save·handle·for·deallocation·test</span><span·class="w">
270 ····</span><span·class="n">NewConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8937406906-21">[</span><span·class="p"·data-group-id="8937406906-22">{</span><span·class="ss">handle</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="8937406906-22">}</span><span·class="p"·data-group-id="8937406906-21">]</span><span·class="p">,</span><span·class="w">270 ····</span><span·class="n">NewConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6469392310-21">[</span><span·class="p"·data-group-id="6469392310-22">{</span><span·class="ss">handle</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="6469392310-22">}</span><span·class="p"·data-group-id="6469392310-21">]</span><span·class="p">,</span><span·class="w">
271 ····</span><span·class="p"·data-group-id="8937406906-23">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">NewConfig</span><span·class="p"·data-group-id="8937406906-23">}</span><span·class="p">.</span><span·class="w">271 ····</span><span·class="p"·data-group-id="6469392310-23">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">NewConfig</span><span·class="p"·data-group-id="6469392310-23">}</span><span·class="p">.</span><span·class="w">
  
272 </span><span·class="nf">deallocate</span><span·class="p"·data-group-id="8937406906-24">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8937406906-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">272 </span><span·class="nf">deallocate</span><span·class="p"·data-group-id="6469392310-24">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6469392310-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
273 ····</span><span·class="p"·data-group-id="8937406906-25">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="8937406906-25">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·5fde44d9dc57c106760998ca533b542467c1881c9f7c761c44c84d873fe1dea2·...·]-26">)</span><span·class="p">,</span><span·class="w">273 ····</span><span·class="p"·data-group-id="6469392310-25">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="6469392310-25">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·e28a668059b520600766a46c8b2bbc6c23a71322f76f6a783022440b72c68ec3·...·]-26">)</span><span·class="p">,</span><span·class="w">
274 ····</span><span·class="p"·data-group-id="8937406906-27">{</span><span·class="ss">allocate</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="8937406906-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pr[·...·truncated·by·diffoscope;·len:·279,·SHA:·65ed601988d470bf3bdcf1a8cb3702a7ccc82ce6ab090cf4b1aae8c96bcde454·...·]-28">)</span><span·class="p">,</span><span·class="w">274 ····</span><span·class="p"·data-group-id="6469392310-27">{</span><span·class="ss">allocate</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="6469392310-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pr[·...·truncated·by·diffoscope;·len:·279,·SHA:·62d6c8563fd878bc48047858a5bc1e0cdf911479fadba5cfdb06d310a37af9c2·...·]-28">)</span><span·class="p">,</span><span·class="w">
275 ····</span><span·class="n">Handle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="8937406906-29">(</span><span·class="ss">handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="8937406906-29">)</span><span·class="p">,</span><span·class="w">275 ····</span><span·class="n">Handle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="6469392310-29">(</span><span·class="ss">handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="6469392310-29">)</span><span·class="p">,</span><span·class="w">
276 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">deallocate_resource</span><span·class="p"·data-group-id="8937406906-30">(</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SessionId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·data-group-id="8937406906-30">)</span><span·class="p">.</span></code></pre><p>To·save·<code·class="inline">Config</code>·data·from·a·test·case·that·is·to·be·skipped,·return·tuple276 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">deallocate_resource</span><span·class="p"·data-group-id="6469392310-30">(</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SessionId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·data-group-id="6469392310-30">)</span><span·class="p">.</span></code></pre><p>To·save·<code·class="inline">Config</code>·data·from·a·test·case·that·is·to·be·skipped,·return·tuple
277 <code·class="inline">{skip_and_save,Reason,ConfigList}</code>.</p><p>The·result·is·that·the·test·case·is·skipped·with·<code·class="inline">Reason</code>·printed·to·the·log277 <code·class="inline">{skip_and_save,Reason,ConfigList}</code>.</p><p>The·result·is·that·the·test·case·is·skipped·with·<code·class="inline">Reason</code>·printed·to·the·log
278 file·(as·described·earlier)·and·<code·class="inline">ConfigList</code>·is·saved·for·the·next·test·case.278 file·(as·described·earlier)·and·<code·class="inline">ConfigList</code>·is·saved·for·the·next·test·case.
279 <code·class="inline">ConfigList</code>·can·be·read·using·<code·class="inline">proplists:get_value(saved_config,·Config)</code>,·as279 <code·class="inline">ConfigList</code>·can·be·read·using·<code·class="inline">proplists:get_value(saved_config,·Config)</code>,·as
280 described·earlier.·<code·class="inline">skip_and_save</code>·can·also·be·returned·from·<code·class="inline">init_per_suite</code>.280 described·earlier.·<code·class="inline">skip_and_save</code>·can·also·be·returned·from·<code·class="inline">init_per_suite</code>.
281 In·this·case,·the·saved·data·can·be·read·by·<code·class="inline">init_per_suite</code>·in·the·suite·that281 In·this·case,·the·saved·data·can·be·read·by·<code·class="inline">init_per_suite</code>·in·the·suite·that
282 follows.</p><h2·id="sequences"·class="section-heading">282 follows.</p><h2·id="sequences"·class="section-heading">
283 ··<a·href="#sequences"·class="hover-link">283 ··<a·href="#sequences"·class="hover-link">
Offset 296, 30 lines modifiedOffset 296, 30 lines modified
296 following·tests·are·not·to·be·executed.·Typically,·if·the·<code·class="inline">save_config</code>·facility296 following·tests·are·not·to·be·executed.·Typically,·if·the·<code·class="inline">save_config</code>·facility
297 is·used·and·a·test·case·that·is·expected·to·save·data·crashes,·the·following297 is·used·and·a·test·case·that·is·expected·to·save·data·crashes,·the·following
298 case·cannot·run.·<code·class="inline">Common·Test</code>·offers·a·way·to·declare·such·dependencies,·called298 case·cannot·run.·<code·class="inline">Common·Test</code>·offers·a·way·to·declare·such·dependencies,·called
299 sequences.</p><p>A·sequence·of·test·cases·is·defined·as·a·test·case·group·with·a·<code·class="inline">sequence</code>299 sequences.</p><p>A·sequence·of·test·cases·is·defined·as·a·test·case·group·with·a·<code·class="inline">sequence</code>
Max diff block lines reached; 11460/57121 bytes (20.06%) of diff not shown.
10.2 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/event_handler_chapter.html
    
Offset 164, 20 lines modifiedOffset 164, 20 lines modified
164 </h2>164 </h2>
165 <p>Event·handlers·can·be·installed·by·an·<code·class="inline">event_handler</code>·start·flag165 <p>Event·handlers·can·be·installed·by·an·<code·class="inline">event_handler</code>·start·flag
166 (<a·href="ct_run_cmd.html"><code·class="inline">ct_run</code></a>)·or·option·<a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>,·where·the·argument166 (<a·href="ct_run_cmd.html"><code·class="inline">ct_run</code></a>)·or·option·<a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>,·where·the·argument
167 specifies·the·names·of·one·or·more·event·handler·modules.</p><p><em>Example:</em></p><p><code·class="inline">$·ct_run·-suite·test/my_SUITE·-event_handler·handlers/my_evh1·handlers/my_evh2·-pa·$PWD/handlers</code></p><p>To·pass·start·arguments·to·the·event·handler·init·function,·use·option167 specifies·the·names·of·one·or·more·event·handler·modules.</p><p><em>Example:</em></p><p><code·class="inline">$·ct_run·-suite·test/my_SUITE·-event_handler·handlers/my_evh1·handlers/my_evh2·-pa·$PWD/handlers</code></p><p>To·pass·start·arguments·to·the·event·handler·init·function,·use·option
168 <code·class="inline">ct_run·-event_handler_init</code>·instead·of·<code·class="inline">-event_handler</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>All·event·handler·modules·must·have·<code·class="inline">gen_event</code>·behavior.·These·modules·must168 <code·class="inline">ct_run·-event_handler_init</code>·instead·of·<code·class="inline">-event_handler</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>All·event·handler·modules·must·have·<code·class="inline">gen_event</code>·behavior.·These·modules·must
169 be·precompiled·and·their·locations·must·be·added·explicitly·to·the·Erlang·code169 be·precompiled·and·their·locations·must·be·added·explicitly·to·the·Erlang·code
170 server·search·path·(as·in·the·previous·example).</p></section><p>An·event_handler·tuple·in·argument·<code·class="inline">Opts</code>·has·the·following·definition·(see170 server·search·path·(as·in·the·previous·example).</p></section><p>An·event_handler·tuple·in·argument·<code·class="inline">Opts</code>·has·the·following·definition·(see
171 <a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9056107953-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="9056107953-1">}</span><span·class="w">171 <a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9491448901-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="9491448901-1">}</span><span·class="w">
  
172 </span><span·class="n">EventHandlers</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">EH</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9056107953-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="9056107953-2">]</span><span·class="w">172 </span><span·class="n">EventHandlers</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">EH</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9491448901-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="9491448901-2">]</span><span·class="w">
173 </span><span·class="n">EH</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9056107953-3">(</span><span·class="p"·data-group-id="9056107953-3">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9056107953-4">{</span><span·class="nf">atom</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·646,·SHA:·92544a6f82af7cadf7918a3fc1170491a5cffbd39772092742c9ab77b8c77c09·...·]-6">}</span><span·class="w">173 </span><span·class="n">EH</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9491448901-3">(</span><span·class="p"·data-group-id="9491448901-3">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9491448901-4">{</span><span·class="nf">atom</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·646,·SHA:·fc39f831dcc554fcc3404f6405cda36050432f0796803a414470db353bfc4563·...·]-6">}</span><span·class="w">
174 </span><span·class="n">InitArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9056107953-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="9056107953-10">(</span><span·class="p"·data-group-id="9056107953-10">)</span><span·class="p"·data-group-id="9056107953-9">]</span></code></pre><p>In·the·following·example,·two·event·handlers·for·the·<code·class="inline">my_SUITE</code>·test·are174 </span><span·class="n">InitArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9491448901-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="9491448901-10">(</span><span·class="p"·data-group-id="9491448901-10">)</span><span·class="p"·data-group-id="9491448901-9">]</span></code></pre><p>In·the·following·example,·two·event·handlers·for·the·<code·class="inline">my_SUITE</code>·test·are
175 installed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="3287548565-1">(</span><span·class="p"·data-group-id="3287548565-2">[</span><span·class="p"·data-group-id="3287548565-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;test/my_SUITE&quot;</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·873,·SHA:·b02146bae955f8d84ebfccdce2e9f6054ad25d3ebb01af522975c2cb20c277c3·...·]-1">)</span><span·class="p">.</span></code></pre><p>Event·handler·<code·class="inline">my_evh1</code>·is·started·with·<code·class="inline">[]</code>·as·argument·to·the·init·function.175 installed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="0481865356-1">(</span><span·class="p"·data-group-id="0481865356-2">[</span><span·class="p"·data-group-id="0481865356-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;test/my_SUITE&quot;</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·873,·SHA:·bdeded536cec08988299977816d8ddfdfc96db9ca0c0589b19139506f86ed294·...·]-1">)</span><span·class="p">.</span></code></pre><p>Event·handler·<code·class="inline">my_evh1</code>·is·started·with·<code·class="inline">[]</code>·as·argument·to·the·init·function.
176 Event·handler·<code·class="inline">my_evh2</code>·is·started·with·the·name·of·the·current·node·in·the·init176 Event·handler·<code·class="inline">my_evh2</code>·is·started·with·the·name·of·the·current·node·in·the·init
177 argument·list.</p><p>Event·handlers·can·also·be·plugged·in·using·one·of·the·following177 argument·list.</p><p>Event·handlers·can·also·be·plugged·in·using·one·of·the·following
178 <a·href="run_test_chapter.html#test_specifications">test·specification</a>·terms:</p><ul><li><code·class="inline">{event_handler,·EventHandlers}</code></li><li><code·class="inline">{event_handler,·EventHandlers,·InitArgs}</code></li><li><code·class="inline">{event_handler,·NodeRefs,·EventHandlers}</code></li><li><code·class="inline">{event_handler,·NodeRefs,·EventHandlers,·InitArgs}</code></li></ul><p><code·class="inline">EventHandlers</code>·is·a·list·of·module·names.·Before·a·test·session·starts,·the178 <a·href="run_test_chapter.html#test_specifications">test·specification</a>·terms:</p><ul><li><code·class="inline">{event_handler,·EventHandlers}</code></li><li><code·class="inline">{event_handler,·EventHandlers,·InitArgs}</code></li><li><code·class="inline">{event_handler,·NodeRefs,·EventHandlers}</code></li><li><code·class="inline">{event_handler,·NodeRefs,·EventHandlers,·InitArgs}</code></li></ul><p><code·class="inline">EventHandlers</code>·is·a·list·of·module·names.·Before·a·test·session·starts,·the
179 init·function·of·each·plugged·in·event·handler·is·called·(with·the·<code·class="inline">InitArgs</code>179 init·function·of·each·plugged·in·event·handler·is·called·(with·the·<code·class="inline">InitArgs</code>
180 list·as·argument·or·<code·class="inline">[]</code>·if·no·start·arguments·are·specified).</p><p>To·plug·in·a·handler·to·the·<code·class="inline">Common·Test</code>·Master·event·manager,·specify·<code·class="inline">master</code>180 list·as·argument·or·<code·class="inline">[]</code>·if·no·start·arguments·are·specified).</p><p>To·plug·in·a·handler·to·the·<code·class="inline">Common·Test</code>·Master·event·manager,·specify·<code·class="inline">master</code>
181 as·the·node·in·<code·class="inline">NodeRefs</code>.</p><p>To·be·able·to·match·on·events,·the·event·handler·module·must·include·the·header181 as·the·node·in·<code·class="inline">NodeRefs</code>.</p><p>To·be·able·to·match·on·events,·the·event·handler·module·must·include·the·header
182 file·<code·class="inline">ct_event.hrl</code>.·An·event·is·a·record·with·the·following·definition:</p><p><code·class="inline">#event{name,·node,·data}</code></p><ul><li><p><strong><code·class="inline">name</code></strong>·-·Label·(type)·of·the·event.</p></li><li><p><strong><code·class="inline">node</code></strong>·-·Name·of·the·node·that·the·event·originated·from·(only·relevant182 file·<code·class="inline">ct_event.hrl</code>.·An·event·is·a·record·with·the·following·definition:</p><p><code·class="inline">#event{name,·node,·data}</code></p><ul><li><p><strong><code·class="inline">name</code></strong>·-·Label·(type)·of·the·event.</p></li><li><p><strong><code·class="inline">node</code></strong>·-·Name·of·the·node·that·the·event·originated·from·(only·relevant
77.6 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/example_chapter.html
    
Offset 127, 136 lines modifiedOffset 127, 136 lines modified
  
127 <p><a·href=""·id="top"></a></p><h2·id="test-suite-example"·class="section-heading">127 <p><a·href=""·id="top"></a></p><h2·id="test-suite-example"·class="section-heading">
128 ··<a·href="#test-suite-example"·class="hover-link">128 ··<a·href="#test-suite-example"·class="hover-link">
129 ····<i·class="ri-link-m"·aria-hidden="true"></i>129 ····<i·class="ri-link-m"·aria-hidden="true"></i>
130 ··</a>130 ··</a>
131 ··<span·class="text">Test·Suite·Example</span>131 ··<span·class="text">Test·Suite·Example</span>
132 </h2>132 </h2>
133 <p>The·following·example·test·suite·shows·some·tests·of·a·database·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9334104573-1">(</span><span·class="ss">db_data_type_SUITE</span><span·class="p"·data-group-id="9334104573-1">)</span><span·class="p">.</span><span·class="w">133 <p>The·following·example·test·suite·shows·some·tests·of·a·database·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3751037152-1">(</span><span·class="ss">db_data_type_SUITE</span><span·class="p"·data-group-id="3751037152-1">)</span><span·class="p">.</span><span·class="w">
134 </span><span·class="w">134 </span><span·class="w">
135 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="9334104573-2">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="9334104573-2">)</span><span·class="p">.</span><span·class="w">135 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3751037152-2">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="3751037152-2">)</span><span·class="p">.</span><span·class="w">
  
136 </span><span·class="c1">%%·Test·server·callbacks</span><span·class="w">136 </span><span·class="c1">%%·Test·server·callbacks</span><span·class="w">
137 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9334104573-3">(</span><span·class="p"·data-group-id="9334104573-4">[</span><span·class="ss">suite</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">137 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3751037152-3">(</span><span·class="p"·data-group-id="3751037152-4">[</span><span·class="ss">suite</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
138 ·········</span><span·class="ss">init_per_suite</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_per_suite</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">138 ·········</span><span·class="ss">init_per_suite</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_per_suite</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
139 ·········</span><span·class="ss">init_per_testcase</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_per_testcase</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="9334104573-4">]</span><span·class="p"·data-group-id="9334104573-3">)</span><span·class="p">.</span><span·class="w">139 ·········</span><span·class="ss">init_per_testcase</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_per_testcase</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="3751037152-4">]</span><span·class="p"·data-group-id="3751037152-3">)</span><span·class="p">.</span><span·class="w">
  
140 </span><span·class="c1">%%·Test·cases</span><span·class="w">140 </span><span·class="c1">%%·Test·cases</span><span·class="w">
141 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9334104573-5">(</span><span·class="p"·data-group-id="9334104573-6">[</span><span·class="ss">string</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">integer</span><span·class="p">/</span[·...·truncated·by·diffoscope;·len:·120,·SHA:·68690c8d6f35076e351bad138edc5e539ae9f5cfda4b85257fa193ff439ef28a·...·]-5">)</span><span·class="p">.</span><span·class="w">141 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3751037152-5">(</span><span·class="p"·data-group-id="3751037152-6">[</span><span·class="ss">string</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">integer</span><span·class="p">/</span[·...·truncated·by·diffoscope;·len:·120,·SHA:·5119f2e8c4d703bf22fca63218e21b781a2fd7d38ec263adb5086d3c150083a8·...·]-5">)</span><span·class="p">.</span><span·class="w">
142 </span><span·class="w">142 </span><span·class="w">
143 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="9334104573-7">(</span><span·class="n">CONNECT_STR</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;DSN=sqlserver;UID=alladin;PWD=sesame&quot;</span><span·class="p"·data-group-id="9334104573-7">)</span><span·class="p">.</span><span·class="w">143 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3751037152-7">(</span><span·class="n">CONNECT_STR</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;DSN=sqlserver;UID=alladin;PWD=sesame&quot;</span><span·class="p"·data-group-id="3751037152-7">)</span><span·class="p">.</span><span·class="w">
  
144 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">144 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
145 </span><span·class="c1">%%·COMMON·TEST·CALLBACK·FUNCTIONS</span><span·class="w">145 </span><span·class="c1">%%·COMMON·TEST·CALLBACK·FUNCTIONS</span><span·class="w">
146 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">146 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
  
147 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">147 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
148 </span><span·class="c1">%%·Function:·suite()·-&gt;·Info</span><span·class="w">148 </span><span·class="c1">%%·Function:·suite()·-&gt;·Info</span><span·class="w">
149 </span><span·class="c1">%%</span><span·class="w">149 </span><span·class="c1">%%</span><span·class="w">
150 </span><span·class="c1">%%·Info·=·[tuple()]</span><span·class="w">150 </span><span·class="c1">%%·Info·=·[tuple()]</span><span·class="w">
151 </span><span·class="c1">%%···List·of·key/value·pairs.</span><span·class="w">151 </span><span·class="c1">%%···List·of·key/value·pairs.</span><span·class="w">
152 </span><span·class="c1">%%</span><span·class="w">152 </span><span·class="c1">%%</span><span·class="w">
153 </span><span·class="c1">%%·Description:·Returns·list·of·tuples·to·set·default·properties</span><span·class="w">153 </span><span·class="c1">%%·Description:·Returns·list·of·tuples·to·set·default·properties</span><span·class="w">
154 </span><span·class="c1">%%··············for·the·suite.</span><span·class="w">154 </span><span·class="c1">%%··············for·the·suite.</span><span·class="w">
155 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">155 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
156 </span><span·class="nf">suite</span><span·class="p"·data-group-id="9334104573-8">(</span><span·class="p"·data-group-id="9334104573-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 </span><span·class="nf">suite</span><span·class="p"·data-group-id="3751037152-8">(</span><span·class="p"·data-group-id="3751037152-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="p"·data-group-id="9334104573-9">[</span><span·class="p"·data-group-id="9334104573-10">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="9334104573-11">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·159,·SHA:·0cebed321971ab9f61cd0a987cafe6b952ef0e5e1991d0ae4615a137c9452300·...·]-9">]</span><span·class="p">.</span><span·class="w">157 ····</span><span·class="p"·data-group-id="3751037152-9">[</span><span·class="p"·data-group-id="3751037152-10">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="3751037152-11">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·159,·SHA:·dd6ee0b4efcb79bf51501dcc6b555c32925195cb31b95b219560f83a29cc6c40·...·]-9">]</span><span·class="p">.</span><span·class="w">
  
158 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">158 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
159 </span><span·class="c1">%%·Function:·init_per_suite(Config0)·-&gt;·Config1</span><span·class="w">159 </span><span·class="c1">%%·Function:·init_per_suite(Config0)·-&gt;·Config1</span><span·class="w">
160 </span><span·class="c1">%%</span><span·class="w">160 </span><span·class="c1">%%</span><span·class="w">
161 </span><span·class="c1">%%·Config0·=·Config1·=·[tuple()]</span><span·class="w">161 </span><span·class="c1">%%·Config0·=·Config1·=·[tuple()]</span><span·class="w">
162 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">162 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">
163 </span><span·class="c1">%%</span><span·class="w">163 </span><span·class="c1">%%</span><span·class="w">
164 </span><span·class="c1">%%·Description:·Initialization·before·the·suite.</span><span·class="w">164 </span><span·class="c1">%%·Description:·Initialization·before·the·suite.</span><span·class="w">
165 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">165 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
166 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="9334104573-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">166 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="3751037152-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
167 ····</span><span·class="p"·data-group-id="9334104573-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ref</span><span·class="p"·data-group-id="9334104573-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·383,·SHA:·e87d8547dd2af78f11233d4abdafaeba47ca38ace8be62be3359abcbc164eb49·...·]-14">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="p"·data-group-id="3751037152-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ref</span><span·class="p"·data-group-id="3751037152-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·383,·SHA:·0135220db28b02e21b481520a6271563aead80b193dbe3c5dd1ab539d05bb160·...·]-14">)</span><span·class="p">,</span><span·class="w">
168 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db_lib</span><span·class="p">:</span><span·class="nf">unique_table_name</span><span·class="p"·data-group-id="9334104573-16">(</span><span·class="p"·data-group-id="9334104573-16">)</span><span·class="p">,</span><span·class="w">168 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db_lib</span><span·class="p">:</span><span·class="nf">unique_table_name</span><span·class="p"·data-group-id="3751037152-16">(</span><span·class="p"·data-group-id="3751037152-16">)</span><span·class="p">,</span><span·class="w">
169 ····</span><span·class="p"·data-group-id="9334104573-17">[</span><span·class="p"·data-group-id="9334104573-18">{</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ref</span><span·class="w">·</span><span·class="p"·data-group-id="9334104573-18">}</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·a488944623b545f85aa1dc3b62dc9c97e4f6fb6213e5101660bdd445e6abcaa9·...·]-17">]</span><span·class="p">.</span><span·class="w">169 ····</span><span·class="p"·data-group-id="3751037152-17">[</span><span·class="p"·data-group-id="3751037152-18">{</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ref</span><span·class="w">·</span><span·class="p"·data-group-id="3751037152-18">}</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·da25261af936419fc17ebb8b216b15e54980f19128a72052a5590eb6ae4dbbe5·...·]-17">]</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">170 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
171 </span><span·class="c1">%%·Function:·end_per_suite(Config)·-&gt;·term()</span><span·class="w">171 </span><span·class="c1">%%·Function:·end_per_suite(Config)·-&gt;·term()</span><span·class="w">
172 </span><span·class="c1">%%</span><span·class="w">172 </span><span·class="c1">%%</span><span·class="w">
173 </span><span·class="c1">%%·Config·=·[tuple()]</span><span·class="w">173 </span><span·class="c1">%%·Config·=·[tuple()]</span><span·class="w">
174 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">174 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">
175 </span><span·class="c1">%%</span><span·class="w">175 </span><span·class="c1">%%</span><span·class="w">
176 </span><span·class="c1">%%·Description:·Cleanup·after·the·suite.</span><span·class="w">176 </span><span·class="c1">%%·Description:·Cleanup·after·the·suite.</span><span·class="w">
177 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">177 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
178 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="9334104573-20">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="3751037152-20">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9334104573-21">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-21">)</span><span·class="p">,</span><span·class="w">179 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3751037152-21">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-21">)</span><span·class="p">,</span><span·class="w">
180 ····</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="9334104573-22">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="9334104573-22">)</span><span·class="p">,</span><span·class="w">180 ····</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="3751037152-22">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="3751037152-22">)</span><span·class="p">,</span><span·class="w">
181 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">181 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">182 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
183 </span><span·class="c1">%%·Function:·init_per_testcase(TestCase,·Config0)·-&gt;·Config1</span><span·class="w">183 </span><span·class="c1">%%·Function:·init_per_testcase(TestCase,·Config0)·-&gt;·Config1</span><span·class="w">
184 </span><span·class="c1">%%</span><span·class="w">184 </span><span·class="c1">%%</span><span·class="w">
185 </span><span·class="c1">%%·TestCase·=·atom()</span><span·class="w">185 </span><span·class="c1">%%·TestCase·=·atom()</span><span·class="w">
186 </span><span·class="c1">%%···Name·of·the·test·case·that·is·about·to·run.</span><span·class="w">186 </span><span·class="c1">%%···Name·of·the·test·case·that·is·about·to·run.</span><span·class="w">
187 </span><span·class="c1">%%·Config0·=·Config1·=·[tuple()]</span><span·class="w">187 </span><span·class="c1">%%·Config0·=·Config1·=·[tuple()]</span><span·class="w">
188 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">188 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">
189 </span><span·class="c1">%%</span><span·class="w">189 </span><span·class="c1">%%</span><span·class="w">
190 </span><span·class="c1">%%·Description:·Initialization·before·each·test·case.</span><span·class="w">190 </span><span·class="c1">%%·Description:·Initialization·before·each·test·case.</span><span·class="w">
191 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">191 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
192 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="9334104573-23">(</span><span·class="n">Case</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="3751037152-23">(</span><span·class="n">Case</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9334104573-24">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-24">)</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3751037152-24">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-24">)</span><span·class="p">,</span><span·class="w">
194 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9334104573-25">(</span><span·class="ss">table_name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-25">)</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3751037152-25">(</span><span·class="ss">table_name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-25">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="9334104573-26">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TableName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">table_type</span><span·class="p"·data-group-id="9334104573-27"[·...·truncated·by·diffoscope;·len:·131,·SHA:·0469884693674f1cd4fcb6954799b201409d0254c034d4737f23003a562c89a9·...·]-26">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="3751037152-26">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TableName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">table_type</span><span·class="p"·data-group-id="3751037152-27"[·...·truncated·by·diffoscope;·len:·131,·SHA:·e416510da7d2b1812ba83fe6f478b0f7e74a2b70ec235b5272f56fff495e09fb·...·]-26">)</span><span·class="p">,</span><span·class="w">
196 ····</span><span·class="n">Config</span><span·class="p">.</span><span·class="w">196 ····</span><span·class="n">Config</span><span·class="p">.</span><span·class="w">
  
197 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">197 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
198 </span><span·class="c1">%%·Function:·end_per_testcase(TestCase,·Config)·-&gt;·term()</span><span·class="w">198 </span><span·class="c1">%%·Function:·end_per_testcase(TestCase,·Config)·-&gt;·term()</span><span·class="w">
199 </span><span·class="c1">%%</span><span·class="w">199 </span><span·class="c1">%%</span><span·class="w">
200 </span><span·class="c1">%%·TestCase·=·atom()</span><span·class="w">200 </span><span·class="c1">%%·TestCase·=·atom()</span><span·class="w">
201 </span><span·class="c1">%%···Name·of·the·test·case·that·is·finished.</span><span·class="w">201 </span><span·class="c1">%%···Name·of·the·test·case·that·is·finished.</span><span·class="w">
202 </span><span·class="c1">%%·Config·=·[tuple()]</span><span·class="w">202 </span><span·class="c1">%%·Config·=·[tuple()]</span><span·class="w">
203 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">203 </span><span·class="c1">%%···A·list·of·key/value·pairs,·holding·the·test·case·configuration.</span><span·class="w">
204 </span><span·class="c1">%%</span><span·class="w">204 </span><span·class="c1">%%</span><span·class="w">
205 </span><span·class="c1">%%·Description:·Cleanup·after·each·test·case.</span><span·class="w">205 </span><span·class="c1">%%·Description:·Cleanup·after·each·test·case.</span><span·class="w">
206 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">206 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
207 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="9334104573-28">(</span><span·class="p">_</span><span·class="n">Case</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">207 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="3751037152-28">(</span><span·class="p">_</span><span·class="n">Case</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
208 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9334104573-29">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-29">)</span><span·class="p">,</span><span·class="w">208 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3751037152-29">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-29">)</span><span·class="p">,</span><span·class="w">
209 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9334104573-30">(</span><span·class="ss">table_name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-30">)</span><span·class="p">,</span><span·class="w">209 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3751037152-30">(</span><span·class="ss">table_name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-30">)</span><span·class="p">,</span><span·class="w">
210 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">delete_table</span><span·class="p"·data-group-id="9334104573-31">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TableName</span><span·class="p"·data-group-id="9334104573-31">)</span><span·class="p">,</span><span·class="w">210 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">delete_table</span><span·class="p"·data-group-id="3751037152-31">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TableName</span><span·class="p"·data-group-id="3751037152-31">)</span><span·class="p">,</span><span·class="w">
211 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">211 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">212 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
213 </span><span·class="c1">%%·Function:·all()·-&gt;·GroupsAndTestCases</span><span·class="w">213 </span><span·class="c1">%%·Function:·all()·-&gt;·GroupsAndTestCases</span><span·class="w">
214 </span><span·class="c1">%%</span><span·class="w">214 </span><span·class="c1">%%</span><span·class="w">
215 </span><span·class="c1">%%·GroupsAndTestCases·=·[{group,GroupName}·|·TestCase]</span><span·class="w">215 </span><span·class="c1">%%·GroupsAndTestCases·=·[{group,GroupName}·|·TestCase]</span><span·class="w">
216 </span><span·class="c1">%%·GroupName·=·atom()</span><span·class="w">216 </span><span·class="c1">%%·GroupName·=·atom()</span><span·class="w">
217 </span><span·class="c1">%%···Name·of·a·test·case·group.</span><span·class="w">217 </span><span·class="c1">%%···Name·of·a·test·case·group.</span><span·class="w">
218 </span><span·class="c1">%%·TestCase·=·atom()</span><span·class="w">218 </span><span·class="c1">%%·TestCase·=·atom()</span><span·class="w">
219 </span><span·class="c1">%%···Name·of·a·test·case.</span><span·class="w">219 </span><span·class="c1">%%···Name·of·a·test·case.</span><span·class="w">
220 </span><span·class="c1">%%</span><span·class="w">220 </span><span·class="c1">%%</span><span·class="w">
221 </span><span·class="c1">%%·Description:·Returns·the·list·of·groups·and·test·cases·that</span><span·class="w">221 </span><span·class="c1">%%·Description:·Returns·the·list·of·groups·and·test·cases·that</span><span·class="w">
222 </span><span·class="c1">%%··············are·to·be·executed.</span><span·class="w">222 </span><span·class="c1">%%··············are·to·be·executed.</span><span·class="w">
223 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">223 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
224 </span><span·class="nf">all</span><span·class="p"·data-group-id="9334104573-32">(</span><span·class="p"·data-group-id="9334104573-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 </span><span·class="nf">all</span><span·class="p"·data-group-id="3751037152-32">(</span><span·class="p"·data-group-id="3751037152-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="9334104573-33">[</span><span·class="ss">string</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">integer</span><span·class="p"·data-group-id="9334104573-33">]</span><span·class="p">.</span><span·class="w">225 ····</span><span·class="p"·data-group-id="3751037152-33">[</span><span·class="ss">string</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">integer</span><span·class="p"·data-group-id="3751037152-33">]</span><span·class="p">.</span><span·class="w">
  
  
226 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">226 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
227 </span><span·class="c1">%%·TEST·CASES</span><span·class="w">227 </span><span·class="c1">%%·TEST·CASES</span><span·class="w">
228 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">228 </span><span·class="c1">%%--------------------------------------------------------------------</span><span·class="w">
  
229 </span><span·class="nf">string</span><span·class="p"·data-group-id="9334104573-34">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 </span><span·class="nf">string</span><span·class="p"·data-group-id="3751037152-34">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="9334104573-35">(</span><span·class="ss">dummy_key</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Dummy·string&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·88830cd84e09d02808d41392786de22e0df62b0a3cc861f4ed4f1e6ab4061907·...·]-35">)</span><span·class="p">.</span><span·class="w">230 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="3751037152-35">(</span><span·class="ss">dummy_key</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Dummy·string&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·e698b23add43a864f6b4cc10b83c8942352b242bbe365c8ae58c0ed1267634e6·...·]-35">)</span><span·class="p">.</span><span·class="w">
  
231 </span><span·class="nf">integer</span><span·class="p"·data-group-id="9334104573-36">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 </span><span·class="nf">integer</span><span·class="p"·data-group-id="3751037152-36">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="9334104573-37">(</span><span·class="ss">dummy_key</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-37">)</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="3751037152-37">(</span><span·class="ss">dummy_key</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-37">)</span><span·class="p">.</span><span·class="w">
  
  
233 </span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="9334104573-38">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">233 </span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="3751037152-38">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
234 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9334104573-39">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-39">)</span><span·class="p">,</span><span·class="w">234 ····</span><span·class="n">Ref</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3751037152-39">(</span><span·class="ss">con_ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-39">)</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9334104573-40">(</span><span·class="ss">table_name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="9334104573-40">)</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="n">TableName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3751037152-40">(</span><span·class="ss">table_name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="3751037152-40">)</span><span·class="p">,</span><span·class="w">
236 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="9334104573-41">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TableName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·f702ce898c1255f9a7880c87581db288fa3ba34cbe7c7285801587ce1b17cd52·...·]-41">)</span><span·class="p">,</span><span·class="w">236 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="3751037152-41">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TableName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·3b0beb0baf65dd54c88e522d92130d714550cae1ea06bdd8578796efc339706a·...·]-41">)</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="9334104573-42">[</span><span·class="n">Value</span><span·class="p"·data-group-id="9334104573-42">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">lookup</span[·...·truncated·by·diffoscope;·len:·276,·SHA:·bf64902fdab382bfb2470193ae1a0d47a4e04c26b6578f5d62e22ffe49175df0·...·]-43">)</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="p"·data-group-id="3751037152-42">[</span><span·class="n">Value</span><span·class="p"·data-group-id="3751037152-42">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">db</span><span·class="p">:</span><span·class="nf">lookup</span[·...·truncated·by·diffoscope;·len:·276,·SHA:·a62de7a8416c3740346ef637e5a04cb98e58371881bef7faa2db31c392f80964·...·]-43">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 42114/79284 bytes (53.12%) of diff not shown.
25.1 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/getting_started_chapter.html
    
Offset 165, 61 lines modifiedOffset 165, 61 lines modified
165 ··</a>165 ··</a>
166 ··<span·class="text">A·Simple·Test·Suite</span>166 ··<span·class="text">A·Simple·Test·Suite</span>
167 </h2>167 </h2>
168 <p>As·shown·in·section·<a·href="basics_chapter.html#External_Interfaces">Common·Test·Basics</a>,168 <p>As·shown·in·section·<a·href="basics_chapter.html#External_Interfaces">Common·Test·Basics</a>,
169 the·test·suite·module·implements·<a·href="ct_suite.html">callback·functions</a>·(mandatory169 the·test·suite·module·implements·<a·href="ct_suite.html">callback·functions</a>·(mandatory
170 or·optional)·for·various·purposes,·for·example:</p><ul><li>Init/end·configuration·function·for·the·test·suite</li><li>Init/end·configuration·function·for·a·test·case</li><li>Init/end·configuration·function·for·a·test·case·group</li><li>Test·cases</li></ul><p>The·configuration·functions·are·optional.·The·following·example·is·a·test·suite170 or·optional)·for·various·purposes,·for·example:</p><ul><li>Init/end·configuration·function·for·the·test·suite</li><li>Init/end·configuration·function·for·a·test·case</li><li>Init/end·configuration·function·for·a·test·case·group</li><li>Test·cases</li></ul><p>The·configuration·functions·are·optional.·The·following·example·is·a·test·suite
171 without·configuration·functions,·including·one·simple·test·case,·to·check·that171 without·configuration·functions,·including·one·simple·test·case,·to·check·that
172 module·<code·class="inline">mymod</code>·exists·(that·is,·can·be·successfully·loaded·by·the·code·server):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6163239138-1">(</span><span·class="ss">my1st_SUITE</span><span·class="p"·data-group-id="6163239138-1">)</span><span·class="p">.</span><span·class="w">172 module·<code·class="inline">mymod</code>·exists·(that·is,·can·be·successfully·loaded·by·the·code·server):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8834303988-1">(</span><span·class="ss">my1st_SUITE</span><span·class="p"·data-group-id="8834303988-1">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="6163239138-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="6163239138-2">)</span><span·class="p">.</span><span·class="w">173 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="8834303988-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8834303988-2">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">all</span><span·class="p"·data-group-id="6163239138-3">(</span><span·class="p"·data-group-id="6163239138-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 </span><span·class="nf">all</span><span·class="p"·data-group-id="8834303988-3">(</span><span·class="p"·data-group-id="8834303988-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 ····</span><span·class="p"·data-group-id="6163239138-4">[</span><span·class="ss">mod_exists</span><span·class="p"·data-group-id="6163239138-4">]</span><span·class="p">.</span><span·class="w">175 ····</span><span·class="p"·data-group-id="8834303988-4">[</span><span·class="ss">mod_exists</span><span·class="p"·data-group-id="8834303988-4">]</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="nf">mod_exists</span><span·class="p"·data-group-id="6163239138-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="6163239138-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 </span><span·class="nf">mod_exists</span><span·class="p"·data-group-id="8834303988-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="8834303988-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="6163239138-6">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">mymod</span><span·class="p"·data-group-id="6163239138-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</spa[·...·truncated·by·diffoscope;·len:·181,·SHA:·6c746590963f8be871a30f9a8e6ad92389ed57b2cda70cc2d681011e4ddab8f9·...·]8-7">)</span><span·class="p">.</span></code></pre><p>If·the·operation·fails,·a·bad·match·error·occurs·that·terminates·the·test·case.</p><h2·id="a-test-suite-with-configuration-functions"·class="section-heading">177 ····</span><span·class="p"·data-group-id="8834303988-6">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">mymod</span><span·class="p"·data-group-id="8834303988-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</spa[·...·truncated·by·diffoscope;·len:·181,·SHA:·0827f0bf609f11bda7d305a23d70d255fe4136e3194b49da0b821d24aa82c4b9·...·]8-7">)</span><span·class="p">.</span></code></pre><p>If·the·operation·fails,·a·bad·match·error·occurs·that·terminates·the·test·case.</p><h2·id="a-test-suite-with-configuration-functions"·class="section-heading">
178 ··<a·href="#a-test-suite-with-configuration-functions"·class="hover-link">178 ··<a·href="#a-test-suite-with-configuration-functions"·class="hover-link">
179 ····<i·class="ri-link-m"·aria-hidden="true"></i>179 ····<i·class="ri-link-m"·aria-hidden="true"></i>
180 ··</a>180 ··</a>
181 ··<span·class="text">A·Test·Suite·with·Configuration·Functions</span>181 ··<span·class="text">A·Test·Suite·with·Configuration·Functions</span>
182 </h2>182 </h2>
183 <p>If·you·need·to·perform·configuration·operations·to·run·your·test,·you·can183 <p>If·you·need·to·perform·configuration·operations·to·run·your·test,·you·can
184 implement·configuration·functions·in·your·suite.·The·result·from·a·configuration184 implement·configuration·functions·in·your·suite.·The·result·from·a·configuration
185 function·is·configuration·data,·or·<code·class="inline">Config</code>.·This·is·a·list·of·key-value·tuples185 function·is·configuration·data,·or·<code·class="inline">Config</code>.·This·is·a·list·of·key-value·tuples
186 that·get·passed·from·the·configuration·function·to·the·test·cases·(possibly186 that·get·passed·from·the·configuration·function·to·the·test·cases·(possibly
187 through·configuration·functions·on·&quot;lower·level&quot;).·The·data·flow·looks·as187 through·configuration·functions·on·&quot;lower·level&quot;).·The·data·flow·looks·as
188 follows:</p><p><img·src="assets/config.gif"·alt="Configuration·Data·Flow·in·a·Suite"·title="Configuration·Data·Flow·in·a·Suite"/></p><p>The·following·example·shows·a·test·suite·that·uses·configuration·functions·to188 follows:</p><p><img·src="assets/config.gif"·alt="Configuration·Data·Flow·in·a·Suite"·title="Configuration·Data·Flow·in·a·Suite"/></p><p>The·following·example·shows·a·test·suite·that·uses·configuration·functions·to
189 open·and·close·a·log·file·for·the·test·cases·(an·operation·that·is·unnecessary189 open·and·close·a·log·file·for·the·test·cases·(an·operation·that·is·unnecessary
190 and·irrelevant·to·perform·by·each·test·case):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2938196953-1">(</span><span·class="ss">check_log_SUITE</span><span·class="p"·data-group-id="2938196953-1">)</span><span·class="p">.</span><span·class="w">190 and·irrelevant·to·perform·by·each·test·case):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7966013135-1">(</span><span·class="ss">check_log_SUITE</span><span·class="p"·data-group-id="7966013135-1">)</span><span·class="p">.</span><span·class="w">
191 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2938196953-2">(</span><span·class="p"·data-group-id="2938196953-3">[</span><span·class="ss">all</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init_per_suite</span><span·class="p">/</[·...·truncated·by·diffoscope;·len:·258,·SHA:·8537b4db9097920af27615d562ca8ea69534ed610f0d9f5084eb823c5843e1bd·...·]-2">)</span><span·class="p">.</span><span·class="w">191 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7966013135-2">(</span><span·class="p"·data-group-id="7966013135-3">[</span><span·class="ss">all</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init_per_suite</span><span·class="p">/</[·...·truncated·by·diffoscope;·len:·258,·SHA:·5ac4f06a32ccfdfadea1d26306e3ef536a8a4e4dadac52664e0e8b87d326e0b9·...·]-2">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2938196953-4">(</span><span·class="p"·data-group-id="2938196953-5">[</span><span·class="ss">check_restart_result</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">check_no_errors</span><[·...·truncated·by·diffoscope;·len:·142,·SHA:·886d9a7fca5297d5434b837519db779e56817e4013eb403cb8f3a657c809c59a·...·]-4">)</span><span·class="p">.</span><span·class="w">192 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7966013135-4">(</span><span·class="p"·data-group-id="7966013135-5">[</span><span·class="ss">check_restart_result</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">check_no_errors</span><[·...·truncated·by·diffoscope;·len:·142,·SHA:·7704bce4e59a744f128ba0ac3f75b7c7da3f6247055a4d152d671efb6a7c20cb·...·]-4">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="w">193 </span><span·class="w">
194 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2938196953-6">(</span><span·class="nf">value</span><span·class="p"·data-group-id="2938196953-7">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="2938196953-7">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·344,·SHA:·ac2ff1767066ae862af92f26cc5af04b743e6dbc7fde6dcc56bfd2c53f70f343·...·]-6">)</span><span·class="p">.</span><span·class="w">194 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="7966013135-6">(</span><span·class="nf">value</span><span·class="p"·data-group-id="7966013135-7">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="7966013135-7">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·344,·SHA:·310b682cdb66842b6ef8e35ed6ed147c4ef4c202afebed6daf4efab5c9dc2c70·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
195 </span><span·class="nf">all</span><span·class="p"·data-group-id="2938196953-9">(</span><span·class="p"·data-group-id="2938196953-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2938196953-10">[</span><span·class="ss">check_restart_result</span><span·c[·...·truncated·by·diffoscope;·len:·121,·SHA:·60e8eab01f11c4619aab0ad389b412ca4488199021f87100fa46142b827d4ffe·...·]-10">]</span><span·class="p">.</span><span·class="w">195 </span><span·class="nf">all</span><span·class="p"·data-group-id="7966013135-9">(</span><span·class="p"·data-group-id="7966013135-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7966013135-10">[</span><span·class="ss">check_restart_result</span><span·c[·...·truncated·by·diffoscope;·len:·121,·SHA:·a97d9610f16d40779debebb0e7fcdc81f0cc1e1fe7b574512cab69dad34caaa2·...·]-10">]</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="2938196953-11">(</span><span·class="n">InitConfigData</span><span·class="p"·data-group-id="2938196953-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="7966013135-11">(</span><span·class="n">InitConfigData</span><span·class="p"·data-group-id="7966013135-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="p"·data-group-id="2938196953-12">[</span><span·class="p"·data-group-id="2938196953-13">{</span><span·class="ss">logref</span><span·class="p">,</span><span·class="nf">open_log</span><span·class="p"·data-group-id="2938196953-14">(</span><span·class="p"·data-group-id="29381969[·...·truncated·by·diffoscope;·len:·219,·SHA:·e645a4a792d86a83390a8ddd8f0bde6a1ddb53ce815c4b19067d4d36f6f58997·...·]-12">]</span><span·class="p">.</span><span·class="w">197 ····</span><span·class="p"·data-group-id="7966013135-12">[</span><span·class="p"·data-group-id="7966013135-13">{</span><span·class="ss">logref</span><span·class="p">,</span><span·class="nf">open_log</span><span·class="p"·data-group-id="7966013135-14">(</span><span·class="p"·data-group-id="79660131[·...·truncated·by·diffoscope;·len:·219,·SHA:·0765614dfee3be706f3aff4a32d8510b2b9a34ca9c4320f900135c48c1619901·...·]-12">]</span><span·class="p">.</span><span·class="w">
  
198 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="2938196953-15">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="2938196953-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="7966013135-15">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="7966013135-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="nf">close_log</span><span·class="p"·data-group-id="2938196953-16">(</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="2938196953-17">(</span><span·class="ss">logref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConfigData</span><span·class="p"[·...·truncated·by·diffoscope;·len:·80,·SHA:·7f2ca1b45b6e2fe34c8bbd0526e8a62cc5e2064ca3089e8cbf733fa72fac6107·...·]-16">)</span><span·class="p">.</span><span·class="w">199 ····</span><span·class="nf">close_log</span><span·class="p"·data-group-id="7966013135-16">(</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="7966013135-17">(</span><span·class="ss">logref</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConfigData</span><span·class="p"[·...·truncated·by·diffoscope;·len:·80,·SHA:·a2be2846ac3d8e86413e1a05cdceceacdc221b83bf3b633bd7513ad18100a504·...·]-16">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">check_restart_result</span><span·class="p"·data-group-id="2938196953-18">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="2938196953-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 </span><span·class="nf">check_restart_result</span><span·class="p"·data-group-id="7966013135-18">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="7966013135-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ····</span><span·class="n">TestData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">read_log</span><span·class="p"·data-group-id="2938196953-19">(</span><span·class="ss">restart</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="2938196953-20">(</span><span·class="ss">logref</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·159,·SHA:·ecc655e7deaec312f6b53e6f0f04ce3c8524a1ecccaa5bfc30df1e2bb773144d·...·]-19">)</span><span·class="p">,</span><span·class="w">201 ····</span><span·class="n">TestData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">read_log</span><span·class="p"·data-group-id="7966013135-19">(</span><span·class="ss">restart</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="7966013135-20">(</span><span·class="ss">logref</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·159,·SHA:·34990dd9660c224a80edf7058609d8a7c71804ebf6db4f75fa0bd7a5cee87098·...·]-19">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="2938196953-21">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Line</span><span·class="p"·data-group-id="2938196953-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·258,·SHA:·de301ef316cd9fcdd0fe1cbf5bf2350526591aa7ce54fcbdce2312b97017bf52·...·]-22">)</span><span·class="p">.</span><span·class="w">202 ····</span><span·class="p"·data-group-id="7966013135-21">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p">_</span><span·class="n">Line</span><span·class="p"·data-group-id="7966013135-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·258,·SHA:·1eacbcf084a55f5e97cdfd6d38c907f1aeb70768ee696a86b6e421bf921f61dd·...·]-22">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">check_no_errors</span><span·class="p"·data-group-id="2938196953-23">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="2938196953-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">203 </span><span·class="nf">check_no_errors</span><span·class="p"·data-group-id="7966013135-23">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="7966013135-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="n">TestData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">read_log</span><span·class="p"·data-group-id="2938196953-24">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="2938196953-25">(</span><span·class="ss">logref</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·155,·SHA:·81e85db484301babee6b06454a8d6e69831a90ca1bc0b5af42e9d68570029e1b·...·]-24">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="n">TestData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">read_log</span><span·class="p"·data-group-id="7966013135-24">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="7966013135-25">(</span><span·class="ss">logref</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·155,·SHA:·7724797c288050861d58f3091ac188a33fe70aa5d595e44cefc279e0191acf65·...·]-24">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">search_for</span><span·class="p"·data-group-id="2938196953-26">(</span><span·class="s">&quot;error&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TestData</span><span·class="p"·data-group-id="2938196953-26">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">205 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">search_for</span><span·class="p"·data-group-id="7966013135-26">(</span><span·class="s">&quot;error&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TestData</span><span·class="p"·data-group-id="7966013135-26">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
206 ········</span><span·class="p"·data-group-id="2938196953-27">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">Line</span><span·class="p"·data-group-id="2938196953-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">ct</sp[·...·truncated·by·diffoscope;·len:·351,·SHA:·79bdb7f226e26182563dd20be75976ab06ba36e58665616faa292505e2ed34a9·...·]-28">)</span><span·class="p">;</span><span·class="w">206 ········</span><span·class="p"·data-group-id="7966013135-27">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">Line</span><span·class="p"·data-group-id="7966013135-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">ct</sp[·...·truncated·by·diffoscope;·len:·351,·SHA:·41fb499245c258c381cd8fa49ffeb998b93c8f69d43dd72c248614cf418191ed·...·]-28">)</span><span·class="p">;</span><span·class="w">
207 ········</span><span·class="ss">nomatch</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">207 ········</span><span·class="ss">nomatch</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
208 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·test·cases·verify,·by·parsing·a·log·file,·that·our·SUT·has·performed·a208 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·test·cases·verify,·by·parsing·a·log·file,·that·our·SUT·has·performed·a
209 successful·restart·and·that·no·unexpected·errors·are·printed.</p><p>To·execute·the·test·cases·in·the·recent·test·suite,·type·the·following·on·the209 successful·restart·and·that·no·unexpected·errors·are·printed.</p><p>To·execute·the·test·cases·in·the·recent·test·suite,·type·the·following·on·the
210 UNIX/Linux·command·line·(assuming·that·the·suite·module·is·in·the·current210 UNIX/Linux·command·line·(assuming·that·the·suite·module·is·in·the·current
211 working·directory):</p><pre><code·class="text">$·ct_run·-dir·.</code></pre><p>or:</p><pre><code·class="text">$·ct_run·-suite·check_log_SUITE</code></pre><p>To·use·the·Erlang·shell·to·run·our·test,·you·can·evaluate·the·following·call:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="1956524460-1">(</span><span·class="p"·data-group-id="1956524460-2">[</span><span·class="p"·data-group-id="1956524460-3">{</span><span·class="ss">dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.&quot;</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·795,·SHA:·36d07f469fc088d6e2fb7762172834490fbf544373e8eeba2cb31a727b02740f·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·result·from·running·the·test·is·printed·in·log·files·in·HTML·format·(stored211 working·directory):</p><pre><code·class="text">$·ct_run·-dir·.</code></pre><p>or:</p><pre><code·class="text">$·ct_run·-suite·check_log_SUITE</code></pre><p>To·use·the·Erlang·shell·to·run·our·test,·you·can·evaluate·the·following·call:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="9648298236-1">(</span><span·class="p"·data-group-id="9648298236-2">[</span><span·class="p"·data-group-id="9648298236-3">{</span><span·class="ss">dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.&quot;</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·795,·SHA:·e40bd88a2e391c56cd13c0b24538ae0169cfa39fd7690c31a7386d96f51b72a7·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·result·from·running·the·test·is·printed·in·log·files·in·HTML·format·(stored
212 in·unique·log·directories·on·a·different·level).·The·following·illustration212 in·unique·log·directories·on·a·different·level).·The·following·illustration
213 shows·the·log·file·structure:</p><p><img·src="assets/html_logs.gif"·alt="HTML·Log·File·Structure"·title="HTML·Log·File·Structure"/></p><h2·id="questions-and-answers"·class="section-heading">213 shows·the·log·file·structure:</p><p><img·src="assets/html_logs.gif"·alt="HTML·Log·File·Structure"·title="HTML·Log·File·Structure"/></p><h2·id="questions-and-answers"·class="section-heading">
214 ··<a·href="#questions-and-answers"·class="hover-link">214 ··<a·href="#questions-and-answers"·class="hover-link">
215 ····<i·class="ri-link-m"·aria-hidden="true"></i>215 ····<i·class="ri-link-m"·aria-hidden="true"></i>
216 ··</a>216 ··</a>
217 ··<span·class="text">Questions·and·Answers</span>217 ··<span·class="text">Questions·and·Answers</span>
218 </h2>218 </h2>
199 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/run_test_chapter.html
    
Offset 275, 15 lines modifiedOffset 275, 15 lines modified
275 ··<a·href="#test-case-group-execution"·class="hover-link">275 ··<a·href="#test-case-group-execution"·class="hover-link">
276 ····<i·class="ri-link-m"·aria-hidden="true"></i>276 ····<i·class="ri-link-m"·aria-hidden="true"></i>
277 ··</a>277 ··</a>
278 ··<span·class="text">Test·Case·Group·Execution</span>278 ··<span·class="text">Test·Case·Group·Execution</span>
279 </h2>279 </h2>
280 <p>With·the·<code·class="inline">ct_run</code>·flag,·or·<a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>·option·<code·class="inline">group</code>,·one·or·more·test·case280 <p>With·the·<code·class="inline">ct_run</code>·flag,·or·<a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>·option·<code·class="inline">group</code>,·one·or·more·test·case
281 groups·can·be·specified,·optionally·in·combination·with·specific·test·cases.·The281 groups·can·be·specified,·optionally·in·combination·with·specific·test·cases.·The
282 syntax·for·specifying·groups·on·the·command·line·is·as·follows:</p><pre><code·class="text">$·ct_run·-group·&lt;group_names_or_paths&gt;·[-case·&lt;cases&gt;]</code></pre><p>The·syntax·in·the·Erlang·shell·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="1237743660-1">(</span><span·class="p"·data-group-id="1237743660-2">[</span><span·class="p"·data-group-id="1237743660-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="n">GroupsNamesOrPaths</span><span·class="p"·data-group-id="123[·...·truncated·by·diffoscope;·len:·346,·SHA:·b76d5effad594d67640d0649eedbf92f7eb73388eb3853fdea2baeb0d73901c8·...·]-1">)</span><span·class="p">.</span></code></pre><p>Parameter·<code·class="inline">group_names_or_paths</code>·specifies·one·or·more·group·names·and/or·one·or282 syntax·for·specifying·groups·on·the·command·line·is·as·follows:</p><pre><code·class="text">$·ct_run·-group·&lt;group_names_or_paths&gt;·[-case·&lt;cases&gt;]</code></pre><p>The·syntax·in·the·Erlang·shell·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="4893076834-1">(</span><span·class="p"·data-group-id="4893076834-2">[</span><span·class="p"·data-group-id="4893076834-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="n">GroupsNamesOrPaths</span><span·class="p"·data-group-id="489[·...·truncated·by·diffoscope;·len:·346,·SHA:·28930c082a022c094e72206f37d9f5c88cd01aab8792b4f1eac40afe1e9d0944·...·]-1">)</span><span·class="p">.</span></code></pre><p>Parameter·<code·class="inline">group_names_or_paths</code>·specifies·one·or·more·group·names·and/or·one·or
283 more·group·paths.·At·startup,·<code·class="inline">Common·Test</code>·searches·for·matching·groups·in·the283 more·group·paths.·At·startup,·<code·class="inline">Common·Test</code>·searches·for·matching·groups·in·the
284 group·definitions·tree·(that·is,·the·list·returned·from·<code·class="inline">Suite:groups/0</code>;·for284 group·definitions·tree·(that·is,·the·list·returned·from·<code·class="inline">Suite:groups/0</code>;·for
285 details,·see·section·<a·href="write_test_chapter.html#test_case_groups">Test·Case·Groups</a>.</p><p>Given·a·group·name,·say·<code·class="inline">g</code>,·<code·class="inline">Common·Test</code>·searches·for·all·paths·leading·to285 details,·see·section·<a·href="write_test_chapter.html#test_case_groups">Test·Case·Groups</a>.</p><p>Given·a·group·name,·say·<code·class="inline">g</code>,·<code·class="inline">Common·Test</code>·searches·for·all·paths·leading·to
286 <code·class="inline">g</code>.·By·path·is·meant·a·sequence·of·nested·groups,·which·must·be·followed·to·get286 <code·class="inline">g</code>.·By·path·is·meant·a·sequence·of·nested·groups,·which·must·be·followed·to·get
287 from·the·top-level·group·to·<code·class="inline">g</code>.·To·execute·the·test·cases·in·group·<code·class="inline">g</code>,287 from·the·top-level·group·to·<code·class="inline">g</code>.·To·execute·the·test·cases·in·group·<code·class="inline">g</code>,
288 <code·class="inline">Common·Test</code>·must·call·the·<code·class="inline">init_per_group/2</code>·function·for·each·group·in·the288 <code·class="inline">Common·Test</code>·must·call·the·<code·class="inline">init_per_group/2</code>·function·for·each·group·in·the
289 path·to·<code·class="inline">g</code>,·and·all·corresponding·<code·class="inline">end_per_group/2</code>·functions·afterwards.·This289 path·to·<code·class="inline">g</code>,·and·all·corresponding·<code·class="inline">end_per_group/2</code>·functions·afterwards.·This
Offset 307, 38 lines modifiedOffset 307, 38 lines modified
307 all·<code·class="inline">init</code>·configuration·functions·in·the·path·to·<code·class="inline">g4</code>,·that·is,·<code·class="inline">g1..g3..g4</code>.307 all·<code·class="inline">init</code>·configuration·functions·in·the·path·to·<code·class="inline">g4</code>,·that·is,·<code·class="inline">g1..g3..g4</code>.
308 It·then·calls·test·cases·<code·class="inline">tc1</code>·and·<code·class="inline">tc5</code>·in·<code·class="inline">g4</code>,·and·finally·all·<code·class="inline">end</code>308 It·then·calls·test·cases·<code·class="inline">tc1</code>·and·<code·class="inline">tc5</code>·in·<code·class="inline">g4</code>,·and·finally·all·<code·class="inline">end</code>
309 configuration·functions·in·order·<code·class="inline">g4..g3..g1</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·group·path·specification·does·not·necessarily·have·to·include·<em>all</em>·groups309 configuration·functions·in·order·<code·class="inline">g4..g3..g1</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·group·path·specification·does·not·necessarily·have·to·include·<em>all</em>·groups
310 in·the·path·to·the·terminating·group.·<code·class="inline">Common·Test</code>·searches·for·all·matching310 in·the·path·to·the·terminating·group.·<code·class="inline">Common·Test</code>·searches·for·all·matching
311 paths·if·an·incomplete·group·path·is·specified.</p></section><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Group·names·and·group·paths·can·be·combined·with·parameter311 paths·if·an·incomplete·group·path·is·specified.</p></section><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Group·names·and·group·paths·can·be·combined·with·parameter
312 <code·class="inline">group_names_or_paths</code>.·Each·element·is·treated·as·an·individual·specification312 <code·class="inline">group_names_or_paths</code>.·Each·element·is·treated·as·an·individual·specification
313 in·combination·with·parameter·<code·class="inline">cases</code>.·The·following·examples·illustrates313 in·combination·with·parameter·<code·class="inline">cases</code>.·The·following·examples·illustrates
314 this.</p></section><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3414073714-1">(</span><span·class="ss">x_SUITE</span><span·class="p"·data-group-id="3414073714-1">)</span><span·class="p">.</span><span·class="w">314 this.</p></section><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7876639194-1">(</span><span·class="ss">x_SUITE</span><span·class="p"·data-group-id="7876639194-1">)</span><span·class="p">.</span><span·class="w">
315 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">315 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
316 </span><span·class="c1">%%·The·group·definitions:</span><span·class="w">316 </span><span·class="c1">%%·The·group·definitions:</span><span·class="w">
317 </span><span·class="nf">groups</span><span·class="p"·data-group-id="3414073714-2">(</span><span·class="p"·data-group-id="3414073714-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">317 </span><span·class="nf">groups</span><span·class="p"·data-group-id="7876639194-2">(</span><span·class="p"·data-group-id="7876639194-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
318 ··</span><span·class="p"·data-group-id="3414073714-3">[</span><span·class="p"·data-group-id="3414073714-4">{</span><span·class="ss">top1</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-5">[</span><span·class="p"·data-group-id="3414073714-5">]</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·41,·SHA:·1df69283af625686fb8147ae4c2b70ff77d0f8d60fbab416b3b80f30bd0d7f14·...·]4-6">[</span><span·class="ss">tc11</span><span·class="p">,</span><span·class="ss">tc12</span><span·class="p">,</span><span·class="w">318 ··</span><span·class="p"·data-group-id="7876639194-3">[</span><span·class="p"·data-group-id="7876639194-4">{</span><span·class="ss">top1</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-5">[</span><span·class="p"·data-group-id="7876639194-5">]</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·41,·SHA:·0d2e5da895395c0d08298472b5d31e88d771e2e3f8b03a6ace2b9da73584830f·...·]4-6">[</span><span·class="ss">tc11</span><span·class="p">,</span><span·class="ss">tc12</span><span·class="p">,</span><span·class="w">
319 ·············</span><span·class="p"·data-group-id="3414073714-7">{</span><span·class="ss">sub11</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-8">[</span><span·class="p"·data-group-id="3414073714-8">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-9">[</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·83d9059a81960d91dbeace53aebc3b483a66c582edd646c742cf694b960dcd3a·...·]4-7">}</span><span·class="p">,</span><span·class="w">319 ·············</span><span·class="p"·data-group-id="7876639194-7">{</span><span·class="ss">sub11</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-8">[</span><span·class="p"·data-group-id="7876639194-8">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-9">[</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·6402a90dc3ca0d9829af02be02e025a0aa0fa092c438a430e37e4776aa75ebb1·...·]4-7">}</span><span·class="p">,</span><span·class="w">
320 ·············</span><span·class="p"·data-group-id="3414073714-10">{</span><span·class="ss">sub12</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-11">[</span><span·class="p"·data-group-id="3414073714-11">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-12">[</span><span·class="ss">tc14</span><span·class="p">,</span><span·class="ss">tc15</span><span·class="p">,</span><span·class="w">320 ·············</span><span·class="p"·data-group-id="7876639194-10">{</span><span·class="ss">sub12</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-11">[</span><span·class="p"·data-group-id="7876639194-11">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-12">[</span><span·class="ss">tc14</span><span·class="p">,</span><span·class="ss">tc15</span><span·class="p">,</span><span·class="w">
321 ·······»       »       ·</span><span·class="p"·data-group-id="3414073714-13">{</span><span·class="ss">sub121</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-14">[</span><span·class="p"·data-group-id="3414073714-14">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-15">[[·...·truncated·by·diffoscope;·len:·396,·SHA:·434738084347b52d3dde742903165137be6fbdf83fc7a36558b99d2585cc1d2b·...·]4-4">}</span><span·class="p">,</span><span·class="w">321 ·······»       »       ·</span><span·class="p"·data-group-id="7876639194-13">{</span><span·class="ss">sub121</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-14">[</span><span·class="p"·data-group-id="7876639194-14">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-15">[[·...·truncated·by·diffoscope;·len:·396,·SHA:·43a9a2ca89d2d69a8804db6cd45359bc554a75577c09e7c8629159e437e002e3·...·]4-4">}</span><span·class="p">,</span><span·class="w">
  
322 ···</span><span·class="p"·data-group-id="3414073714-16">{</span><span·class="ss">top2</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-17">[</span><span·class="p"·data-group-id="3414073714-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-18">[</[·...·truncated·by·diffoscope;·len:·503,·SHA:·f0163cb6117ca332bdebabf8bc625af4025c9453df2493a2052e7819e5190083·...·]4-16">}</span><span·class="p">,</span><span·class="w">322 ···</span><span·class="p"·data-group-id="7876639194-16">{</span><span·class="ss">top2</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-17">[</span><span·class="p"·data-group-id="7876639194-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-18">[</[·...·truncated·by·diffoscope;·len:·503,·SHA:·4ea35a453104cb09cf6ae357f2acac7bd66e1cd217169223353c1fd03233a96d·...·]4-16">}</span><span·class="p">,</span><span·class="w">
323 ···</span><span·class="p"·data-group-id="3414073714-21">{</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-22">[</span><span·class="p"·data-group-id="3414073714-22">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-23">[<[·...·truncated·by·diffoscope;·len:·343,·SHA:·beb49b97bd1f0aeb7944f082e0f641308b0ff202e0e9416ebc46352a4426a096·...·]4-21">}</span><span·class="p">,</span><span·class="w">323 ···</span><span·class="p"·data-group-id="7876639194-21">{</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-22">[</span><span·class="p"·data-group-id="7876639194-22">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-23">[<[·...·truncated·by·diffoscope;·len:·343,·SHA:·1042c7e98a64d6f472b43c47683ce0bd9114bcc6e6d862426061c3699cf5792d·...·]4-21">}</span><span·class="p">,</span><span·class="w">
324 ···</span><span·class="p"·data-group-id="3414073714-25">{</span><span·class="ss">sub22</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-26">[</span><span·class="p"·data-group-id="3414073714-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-27">[<[·...·truncated·by·diffoscope;·len:·610,·SHA:·0d83915935d5e892247e517b0187fe6d7f98b58d46ff10f83dd7b53717f65a92·...·]4-25">}</span><span·class="p">,</span><span·class="w">324 ···</span><span·class="p"·data-group-id="7876639194-25">{</span><span·class="ss">sub22</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-26">[</span><span·class="p"·data-group-id="7876639194-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-27">[<[·...·truncated·by·diffoscope;·len:·610,·SHA:·26d36d4c8d91f58e844167d57e5921f8f25e292497253c30a1bed3067aac9cad·...·]4-25">}</span><span·class="p">,</span><span·class="w">
325 ···</span><span·class="p"·data-group-id="3414073714-30">{</span><span·class="ss">sub221</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-31">[</span><span·class="p"·data-group-id="3414073714-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-32">[[·...·truncated·by·diffoscope;·len:·181,·SHA:·d191f4c9e298aae4bfc824e86fc99b1c1c8d631c5c99672cd913eaf2bf0e4ac4·...·]4-30">}</span><span·class="p">,</span><span·class="w">325 ···</span><span·class="p"·data-group-id="7876639194-30">{</span><span·class="ss">sub221</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-31">[</span><span·class="p"·data-group-id="7876639194-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-32">[[·...·truncated·by·diffoscope;·len:·181,·SHA:·3e962ce644f58e798c338b767853fc1ddc0958c0b5ebea2ed995ef1caf7c5701·...·]4-30">}</span><span·class="p">,</span><span·class="w">
326 ···</span><span·class="p"·data-group-id="3414073714-33">{</span><span·class="ss">sub2X2</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-34">[</span><span·class="p"·data-group-id="3414073714-34">]</span><span·class="p">,</span><span·class="p"·data-group-id="3414073714-35">[[·...·truncated·by·diffoscope;·len:·235,·SHA:·500b0da00af1fa29f9a4f7985fd7213b9ba3d4e75d287eb20565f209e93e5151·...·]4-3">]</span><span·class="p">.</span></code></pre><p>The·following·executes·two·tests,·one·for·all·cases·and·all·subgroups·under326 ···</span><span·class="p"·data-group-id="7876639194-33">{</span><span·class="ss">sub2X2</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-34">[</span><span·class="p"·data-group-id="7876639194-34">]</span><span·class="p">,</span><span·class="p"·data-group-id="7876639194-35">[[·...·truncated·by·diffoscope;·len:·235,·SHA:·c2a31a70ef93efa4359ea6b85bdcee985ee3907bdd773967a3e8b5ac78a33028·...·]4-3">]</span><span·class="p">.</span></code></pre><p>The·following·executes·two·tests,·one·for·all·cases·and·all·subgroups·under
327 <code·class="inline">top1</code>,·and·one·for·all·under·<code·class="inline">top2</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·all</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="4260431361-1">(</span><span·class="p"·data-group-id="4260431361-2">[</span><span·class="p"·data-group-id="4260431361-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="42[·...·truncated·by·diffoscope;·len:·1633,·SHA:·d536978dea4a5f5e8a1550902de3202bc035b9197ad0aabe136930769b68044f·...·]8-1">)</span><span·class="p">.</span></code></pre><p>The·following·runs·a·test·executing·<code·class="inline">tc12</code>·in·<code·class="inline">top1</code>·and·any·subgroup·under327 <code·class="inline">top1</code>,·and·one·for·all·under·<code·class="inline">top2</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·all</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="5754350020-1">(</span><span·class="p"·data-group-id="5754350020-2">[</span><span·class="p"·data-group-id="5754350020-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="57[·...·truncated·by·diffoscope;·len:·1633,·SHA:·93f0de71db1ed3ac33f919d25020ccf668690999dcb2ee4ecf4c0e87ee049446·...·]8-1">)</span><span·class="p">.</span></code></pre><p>The·following·runs·a·test·executing·<code·class="inline">tc12</code>·in·<code·class="inline">top1</code>·and·any·subgroup·under
328 <code·class="inline">top1</code>·where·it·can·be·found·(<code·class="inline">sub11</code>·and·<code·class="inline">sub121</code>):</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·top1·-case·tc12</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="1856409458-1">(</span><span·class="p"·data-group-id="1856409458-2">[</span><span·class="p"·data-group-id="1856409458-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="1856409458-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1856409458-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="1856409458-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="1856409458-5">]</span><span·class="p"·data-group-id="1856409458-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1856409458-6">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="1856409458-7">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="1856409458-7">]</span><span·class="p"·data-group-id="1856409458-6">}</span><span·class="p"·data-group-id="1856409458-2">]</span><span·class="p"·data-group-id="1856409458-1">)</span><span·class="p">.</span></code></pre><p>The·following·executes·<code·class="inline">tc12</code>·<em>only</em>·in·group·<code·class="inline">top1</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·[top1]·-case·tc12</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="9961626251-1">(</span><span·class="p"·data-group-id="9961626251-2">[</span><span·class="p"·data-group-id="9961626251-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="9961626251-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9961626251-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="9961626251-5">[</span><span·class="p"·data-group-id="9961626251-6">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="9961626251-6">]</span><span·class="p"·data-group-id="9961626251-5">]</span><span·class="p"·data-group-id="9961626251-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9961626251-7">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="9961626251-8">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="9961626251-8">]</span><span·class="p"·data-group-id="9961626251-7">}</span><span·class="p"·data-group-id="9961626251-2">]</span><span·class="p"·data-group-id="9961626251-1">)</span><span·class="p">.</span></code></pre><p>The·following·searches·<code·class="inline">top1</code>·and·all·its·subgroups·for·<code·class="inline">tc16</code>·resulting·in·that 
329 this·test·case·executes·in·group·<code·class="inline">sub121</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·top1·-case·tc16</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</spa[·...·truncated·by·diffoscope;·len:·1354,·SHA:·174eb44c0b695b8d9b7edec9b784ceff62afa19eb39372c9a3a899034bb67e92·...·]328 <code·class="inline">top1</code>·where·it·can·be·found·(<code·class="inline">sub11</code>·and·<code·class="inline">sub121</code>):</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·top1·-case·tc12</code></pre><pre><code·class="makeup·er[·...·truncated·by·diffoscope;·len:·3046,·SHA:·889bba86664a3e8e7713b16b144b29c57b8fb9bb0312d36465ef349731f8f56b·...·]
 329 this·test·case·executes·in·group·<code·class="inline">sub121</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·top1·-case·tc16</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="7150098533-1">(</span><span·class="p"·data-group-id="7150098533-2">[</span><span·class="p"·data-group-id="7150098533-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="7150098533-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7150098533-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="7150098533-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="7150098533-5">]</span><span·class="p"·data-group-id="7150098533-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7150098533-6">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="7150098533-7">[</span><span·class="ss">tc16</span><span·class="p"·data-group-id="7150098533-7">]</span><span·class="p"·data-group-id="7150098533-6">}</span><span·class="p"·data-group-id="7150098533-2">]</span><span·class="p"·data-group-id="7150098533-1">)</span><span·class="p">.</span></code></pre><p>Using·the·specific·path·<code·class="inline">-group·[sub121]</code>·or·<code·class="inline">{group,[[sub121]]}</code>·gives·the·same
330 result·in·this·example.</p><p>The·following·executes·two·tests,·one·including·all·cases·and·subgroups·under330 result·in·this·example.</p><p>The·following·executes·two·tests,·one·including·all·cases·and·subgroups·under
331 <code·class="inline">sub12</code>,·and·one·with·<em>only</em>·the·test·cases·in·<code·class="inline">sub12</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·sub12·[sub12]</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="8575849419-1">(</span><span·class="p"·data-group-id="8575849419-2">[</span><span·class="p"·data-group-id="8575849419-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="85[·...·truncated·by·diffoscope;·len:·615,·SHA:·63e4828a2d50b13b116bd81b9c2e5571c584ddd70ec3384b745aece2ed2888ab·...·]-1">)</span><span·class="p">.</span></code></pre><p>In·the·following·example,·<code·class="inline">Common·Test</code>·finds·and·executes·two·tests,·one·for331 <code·class="inline">sub12</code>,·and·one·with·<em>only</em>·the·test·cases·in·<code·class="inline">sub12</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·sub12·[sub12]</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="0159571522-1">(</span><span·class="p"·data-group-id="0159571522-2">[</span><span·class="p"·data-group-id="0159571522-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="01[·...·truncated·by·diffoscope;·len:·615,·SHA:·08831e2e6715945251b66024401b2b1c395121c46f210c2bac05d5395b24c7b5·...·]-1">)</span><span·class="p">.</span></code></pre><p>In·the·following·example,·<code·class="inline">Common·Test</code>·finds·and·executes·two·tests,·one·for
332 the·path·from·<code·class="inline">top2</code>·to·<code·class="inline">sub2X2</code>·through·<code·class="inline">sub21</code>,·and·one·from·<code·class="inline">top2</code>·to332 the·path·from·<code·class="inline">top2</code>·to·<code·class="inline">sub2X2</code>·through·<code·class="inline">sub21</code>,·and·one·from·<code·class="inline">top2</code>·to
333 <code·class="inline">sub2X2</code>·through·<code·class="inline">sub22</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·sub2X2</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="5621052624-1">(</span><span·class="p"·data-group-id="5621052624-2">[</span><span·class="p"·data-group-id="5621052624-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="562[·...·truncated·by·diffoscope;·len:·456,·SHA:·bb7273a67914733bc7c91fb44f9e578c26d1dcdeff819506c98ed998a20fc216·...·]-1">)</span><span·class="p">.</span></code></pre><p>In·the·following·example,·by·specifying·the·unique·path333 <code·class="inline">sub2X2</code>·through·<code·class="inline">sub22</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·sub2X2</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="5133987142-1">(</span><span·class="p"·data-group-id="5133987142-2">[</span><span·class="p"·data-group-id="5133987142-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="513[·...·truncated·by·diffoscope;·len:·456,·SHA:·732e4d961a5fafa015b621e7efab5be06883778ffd21f67c1fcedd7c2b5c17b6·...·]-1">)</span><span·class="p">.</span></code></pre><p>In·the·following·example,·by·specifying·the·unique·path
334 <code·class="inline">top2·-&gt;·sub21·-&gt;·sub2X2</code>,·only·one·test·is·executed.·The·second·possible·path,334 <code·class="inline">top2·-&gt;·sub21·-&gt;·sub2X2</code>,·only·one·test·is·executed.·The·second·possible·path,
335 from·<code·class="inline">top2</code>·to·<code·class="inline">sub2X2</code>·(from·the·former·example)·is·discarded:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·[sub21,sub2X2]</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="6414862192-1">(</span><span·class="p"·data-group-id="6414862192-2">[</span><span·class="p"·data-group-id="6414862192-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="6414862192-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6414862192-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="6414862192-5">[</span><span·class="p"·data-group-id="6414862192-6">[</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="ss">sub2X2</span><span·class="p"·data-group-id="6414862192-6">]</span><span·class="p"·data-group-id="6414862192-5">]</span><span·class="p"·data-group-id="6414862192-4">}</span><span·class="p"·data-group-id="6414862192-2">]</span><span·class="p"·data-group-id="6414862192-1">)</span><span·class="p">.</span></code></pre><p>The·following·executes·only·the·test·cases·for·<code·class="inline">sub22</code>·and·in·reverse·order 
336 compared·to·the·group·definition:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·[sub22]·-case·tc22·tc21</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span[·...·truncated·by·diffoscope;·len:·1428,·SHA:·301e79faa30bbf6a54116f5d93f897663b5a275ce15884cd1b8623ae3a04c8b1·...·]335 from·<code·class="inline">top2</code>·to·<code·class="inline">sub2X2</code>·(from·the·former·example)·is·discarded:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·[sub21,sub2X2]</code></pre><pre><code·class="makeup·erlang"·translate=[·...·truncated·by·diffoscope;·len:·1186,·SHA:·10849f0731527a0cd0cf29d60871af1aead6ad7fcd9a75f6c2cdce42d1844138·...·]
 336 compared·to·the·group·definition:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·[sub22]·-case·tc22·tc21</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="2476339551-1">(</span><span·class="p"·data-group-id="2476339551-2">[</span><span·class="p"·data-group-id="2476339551-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;x_SUITE&quot;</span><span·class="p"·data-group-id="2476339551-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2476339551-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="2476339551-5">[</span><span·class="p"·data-group-id="2476339551-6">[</span><span·class="ss">sub22</span><span·class="p"·data-group-id="2476339551-6">]</span><span·class="p"·data-group-id="2476339551-5">]</span><span·class="p"·data-group-id="2476339551-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2476339551-7">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="2476339551-8">[</span><span·class="ss">tc22</span><span·class="p">,</span><span·class="ss">tc21</span><span·class="p"·data-group-id="2476339551-8">]</span><span·class="p"·data-group-id="2476339551-7">}</span><span·class="p"·data-group-id="2476339551-2">]</span><span·class="p"·data-group-id="2476339551-1">)</span><span·class="p">.</span></code></pre><p>If·a·test·case·belonging·to·a·group·(according·to·the·group·definition)·is
337 executed·without·a·group·specification,·that·is,·simply·by·(using·the·command337 executed·without·a·group·specification,·that·is,·simply·by·(using·the·command
338 line):</p><p><code·class="inline">$·ct_run·-suite·&quot;my_SUITE&quot;·-case·my_tc</code></p><p>or·(using·the·Erlang·shell):</p><p><code·class="inline">1&gt;·ct:run_test([{suite,&quot;my_SUITE&quot;},·{testcase,my_tc}]).</code></p><p>then·<code·class="inline">Common·Test</code>·ignores·the·group·definition·and·executes·the·test·case·in338 line):</p><p><code·class="inline">$·ct_run·-suite·&quot;my_SUITE&quot;·-case·my_tc</code></p><p>or·(using·the·Erlang·shell):</p><p><code·class="inline">1&gt;·ct:run_test([{suite,&quot;my_SUITE&quot;},·{testcase,my_tc}]).</code></p><p>then·<code·class="inline">Common·Test</code>·ignores·the·group·definition·and·executes·the·test·case·in
339 the·scope·of·the·test·suite·only·(no·group·configuration·functions·are·called).</p><p>The·group·specification·feature,·as·presented·in·this·section,·can·also·be·used339 the·scope·of·the·test·suite·only·(no·group·configuration·functions·are·called).</p><p>The·group·specification·feature,·as·presented·in·this·section,·can·also·be·used
340 in·<a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·(with·some340 in·<a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·(with·some
341 extra·features·added).</p><h2·id="running-the-interactive-shell-mode"·class="section-heading">341 extra·features·added).</p><h2·id="running-the-interactive-shell-mode"·class="section-heading">
342 ··<a·href="#running-the-interactive-shell-mode"·class="hover-link">342 ··<a·href="#running-the-interactive-shell-mode"·class="hover-link">
343 ····<i·class="ri-link-m"·aria-hidden="true"></i>343 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 358, 20 lines modifiedOffset 358, 20 lines modified
358 displayed.·If·<code·class="inline">Common·Test</code>·has·been·run·from·the·same·directory·earlier,·the358 displayed.·If·<code·class="inline">Common·Test</code>·has·been·run·from·the·same·directory·earlier,·the
359 same·configuration·file(s)·are·used·again.·If·<code·class="inline">Common·Test</code>·has·not·been·run359 same·configuration·file(s)·are·used·again.·If·<code·class="inline">Common·Test</code>·has·not·been·run
360 from·this·directory·before,·no·configuration·files·are·available.</p><p>If·any·functions·using·&quot;required·configuration·data&quot;·(for·example,·functions360 from·this·directory·before,·no·configuration·files·are·available.</p><p>If·any·functions·using·&quot;required·configuration·data&quot;·(for·example,·functions
361 <code·class="inline">ct_telnet</code>·or·<code·class="inline">ct_ftp</code>)·are·to·be·called·from·the·Erlang·shell,·first·require361 <code·class="inline">ct_telnet</code>·or·<code·class="inline">ct_ftp</code>)·are·to·be·called·from·the·Erlang·shell,·first·require
362 configuration·data·with·<a·href="ct.html#require/1"><code·class="inline">ct:require/1,2</code></a>.·This·is·equivalent362 configuration·data·with·<a·href="ct.html#require/1"><code·class="inline">ct:require/1,2</code></a>.·This·is·equivalent
363 to·a·<code·class="inline">require</code>·statement·in·the363 to·a·<code·class="inline">require</code>·statement·in·the
364 <a·href="write_test_chapter.html#suite">Test·Suite·Information·Function</a>·or·in·the364 <a·href="write_test_chapter.html#suite">Test·Suite·Information·Function</a>·or·in·the
365 <a·href="write_test_chapter.html#info_function">Test·Case·Information·Function</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="3593768614-1">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix</span><span·class="p"·data-group-id="3593768614-1">)</span><span·class="p">.</span><span·class="w">365 <a·href="write_test_chapter.html#info_function">Test·Case·Information·Function</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">require</span><span·class="p"·data-group-id="6234913010-1">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix</span><span·class="p"·data-group-id="6234913010-1">)</span><span·class="p">.</span><span·class="w">
366 </span><span·class="ss">ok</span><span·class="gp·unselectable">366 </span><span·class="ss">ok</span><span·class="gp·unselectable">
367 2&gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="3593768614-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="3593768614-2">)</span><span·class="p">.</span><span·class="w">367 2&gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="6234913010-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="6234913010-2">)</span><span·class="p">.</span><span·class="w">
368 </span><span·class="p"·data-group-id="3593768614-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.105</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3593768614-3">}</span><span·class="gp·unselectable">368 </span><span·class="p"·data-group-id="6234913010-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.105</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6234913010-3">}</span><span·class="gp·unselectable">
369 4&gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="3593768614-4">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ls·.&quot;</span><span·class="p"·data-group-id="3593768614-4">)</span><span·class="p">.</span><span·class="w">369 4&gt;·</span><span·class="nc">ct_telnet</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="6234913010-4">(</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ls·.&quot;</span><span·class="p"·data-group-id="6234913010-4">)</span><span·class="p">.</span><span·class="w">
370 </span><span·class="p"·data-group-id="3593768614-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3593768614-6">[</span><span·class="s">&quot;ls·.&quot;</span><span·class="p">,</span><span·class="s">&quot;file1··...&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·167,·SHA:·b7c0ae81b87edbb3d790bd1067abb71bb7db6704e78c8c1e1de1ee76f988f078·...·]-5">}</span></code></pre><p>Everything·that·<code·class="inline">Common·Test</code>·normally·prints·in·the·test·case·logs,·are·in·the370 </span><span·class="p"·data-group-id="6234913010-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6234913010-6">[</span><span·class="s">&quot;ls·.&quot;</span><span·class="p">,</span><span·class="s">&quot;file1··...&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·167,·SHA:·260f44713a8b747862c2735ae60958331650a9fc7dcefac5dc69aa62777daf1f·...·]-5">}</span></code></pre><p>Everything·that·<code·class="inline">Common·Test</code>·normally·prints·in·the·test·case·logs,·are·in·the
371 interactive·mode·written·to·a·log·named·<code·class="inline">ctlog.html</code>·in·directory371 interactive·mode·written·to·a·log·named·<code·class="inline">ctlog.html</code>·in·directory
372 <code·class="inline">ct_run.&lt;timestamp&gt;</code>.·A·link·to·this·file·is·available·in·the·file·named372 <code·class="inline">ct_run.&lt;timestamp&gt;</code>.·A·link·to·this·file·is·available·in·the·file·named
373 <code·class="inline">last_interactive.html</code>·in·the·directory·from·which·you·execute·<code·class="inline">ct_run</code>.373 <code·class="inline">last_interactive.html</code>·in·the·directory·from·which·you·execute·<code·class="inline">ct_run</code>.
374 Specifying·a·different·root·directory·for·the·logs·than·the·current·working374 Specifying·a·different·root·directory·for·the·logs·than·the·current·working
375 directory·is·not·supported.</p><p>If·you·wish·to·exit·the·interactive·mode·(for·example,·to·start·an·automated375 directory·is·not·supported.</p><p>If·you·wish·to·exit·the·interactive·mode·(for·example,·to·start·an·automated
376 test·run·with·<a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>),·call·function·<a·href="ct.html#stop_interactive/0"><code·class="inline">ct:stop_interactive/0</code></a>.·This376 test·run·with·<a·href="ct.html#run_test/1"><code·class="inline">ct:run_test/1</code></a>),·call·function·<a·href="ct.html#stop_interactive/0"><code·class="inline">ct:stop_interactive/0</code></a>.·This
377 shuts·down·the·running·<code·class="inline">ct</code>·application.·Associations·between·configuration377 shuts·down·the·running·<code·class="inline">ct</code>·application.·Associations·between·configuration
Offset 450, 16 lines modifiedOffset 450, 16 lines modified
450 ··</a>450 ··</a>
451 ··<span·class="text">Test·Specification·File·Inclusion</span>451 ··<span·class="text">Test·Specification·File·Inclusion</span>
452 </h3>452 </h3>
453 <p>With·the·term·<code·class="inline">specs</code>,·a·test·specification·can·include·other·specifications.·An453 <p>With·the·term·<code·class="inline">specs</code>,·a·test·specification·can·include·other·specifications.·An
454 included·specification·can·either·be·joined·with·the·source·specification·or454 included·specification·can·either·be·joined·with·the·source·specification·or
455 used·to·produce·a·separate·test·run·(as·with·start·flag/option·<code·class="inline">join_specs</code>455 used·to·produce·a·separate·test·run·(as·with·start·flag/option·<code·class="inline">join_specs</code>
456 above).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·In·specification·file·&quot;a.spec&quot;</span><span·class="w">456 above).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·In·specification·file·&quot;a.spec&quot;</span><span·class="w">
457 </span><span·class="p"·data-group-id="8201165430-1">{</span><span·class="ss">specs</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">join</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8201165430-2">[</span><span·class="s">&quot;b.spec[·...·truncated·by·diffoscope;·len:·196,·SHA:·78c097d8964dbca72963b94ad412f081848dc85c1ee0b7a7edd993b2d12bc447·...·]-1">}</span><span·class="p">.</span><span·class="w">457 </span><span·class="p"·data-group-id="3972354335-1">{</span><span·class="ss">specs</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">join</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3972354335-2">[</span><span·class="s">&quot;b.spec[·...·truncated·by·diffoscope;·len:·196,·SHA:·4ce9108878c00e1cde336978ff7b3248a65137988597669f6c11916dcbf4a8ff·...·]-1">}</span><span·class="p">.</span><span·class="w">
458 </span><span·class="p"·data-group-id="8201165430-3">{</span><span·class="ss">specs</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">separate</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8201165430-4">[</span><span·class="s">&quot;d.[·...·truncated·by·diffoscope;·len:·200,·SHA:·4709228befa2fba93590b58e8a87a9ee8fe2c1046b7b48abaa72fb5f47a63110·...·]-3">}</span><span·class="p">.</span><span·class="w">458 </span><span·class="p"·data-group-id="3972354335-3">{</span><span·class="ss">specs</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">separate</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3972354335-4">[</span><span·class="s">&quot;d.[·...·truncated·by·diffoscope;·len:·200,·SHA:·69accb9c96cdbad3bb6c678c1416838cabf7db65c40b691035f5b60f460d94e4·...·]-3">}</span><span·class="p">.</span><span·class="w">
459 </span><span·class="c1">%%·Config·and·test·terms·follow</span><span·class="w">459 </span><span·class="c1">%%·Config·and·test·terms·follow</span><span·class="w">
460 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>In·this·example,·the·test·terms·defined·in·files·&quot;b.spec&quot;·and·&quot;c.spec&quot;·are460 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>In·this·example,·the·test·terms·defined·in·files·&quot;b.spec&quot;·and·&quot;c.spec&quot;·are
461 joined·with·the·terms·in·source·specification·&quot;a.spec&quot;·(if·any).·The·inclusion461 joined·with·the·terms·in·source·specification·&quot;a.spec&quot;·(if·any).·The·inclusion
462 of·specifications·&quot;d.spec&quot;·and·&quot;e.spec&quot;·results·in·two·separate,·and462 of·specifications·&quot;d.spec&quot;·and·&quot;e.spec&quot;·results·in·two·separate,·and
463 independent,·test·runs·(one·for·each·included·specification).</p><p>Option·<code·class="inline">join</code>·does·not·imply·that·the·test·terms·are·merged,·only·that·all·tests463 independent,·test·runs·(one·for·each·included·specification).</p><p>Option·<code·class="inline">join</code>·does·not·imply·that·the·test·terms·are·merged,·only·that·all·tests
464 are·executed·in·one·single·test·run.</p><p>Joined·specifications·share·common·configuration·settings,·such·as·the·list·of464 are·executed·in·one·single·test·run.</p><p>Joined·specifications·share·common·configuration·settings,·such·as·the·list·of
465 <code·class="inline">config</code>·files·or·<code·class="inline">include</code>·directories.·For·configurations·that·cannot·be465 <code·class="inline">config</code>·files·or·<code·class="inline">include</code>·directories.·For·configurations·that·cannot·be
Offset 513, 162 lines modifiedOffset 513, 162 lines modified
513 Testing).·The·node·parameters·in·term·<code·class="inline">init</code>·are·only·relevant·in·the·latter513 Testing).·The·node·parameters·in·term·<code·class="inline">init</code>·are·only·relevant·in·the·latter
514 (see·section·<a·href="ct_master_chapter.html#test_specifications">Test·Specifications</a>·in514 (see·section·<a·href="ct_master_chapter.html#test_specifications">Test·Specifications</a>·in
515 Large·Scale·Testing).·For·details·about·the·various·terms,·see·the·corresponding515 Large·Scale·Testing).·For·details·about·the·various·terms,·see·the·corresponding
516 sections·in·the·User's·Guide,·for·example,·the·following:</p><ul><li>The·<a·href="run_test_chapter.html#ct_run"><code·class="inline">ct_run</code>·program</a>·for·an·overview·of516 sections·in·the·User's·Guide,·for·example,·the·following:</p><ul><li>The·<a·href="run_test_chapter.html#ct_run"><code·class="inline">ct_run</code>·program</a>·for·an·overview·of
517 available·start·flags·(as·most·flags·have·a·corresponding·configuration·term)</li><li><a·href="write_test_chapter.html#logging">Logging</a>·(for·terms·<code·class="inline">verbosity</code>,·<code·class="inline">stylesheet</code>,517 available·start·flags·(as·most·flags·have·a·corresponding·configuration·term)</li><li><a·href="write_test_chapter.html#logging">Logging</a>·(for·terms·<code·class="inline">verbosity</code>,·<code·class="inline">stylesheet</code>,
518 <code·class="inline">basic_html</code>·and·<code·class="inline">esc_chars</code>)</li><li><a·href="config_file_chapter.html#top">External·Configuration·Data</a>·(for·terms·<code·class="inline">config</code>518 <code·class="inline">basic_html</code>·and·<code·class="inline">esc_chars</code>)</li><li><a·href="config_file_chapter.html#top">External·Configuration·Data</a>·(for·terms·<code·class="inline">config</code>
519 and·<code·class="inline">userconfig</code>)</li><li><a·href="event_handler_chapter.html#event_handling">Event·Handling</a>·(for·the519 and·<code·class="inline">userconfig</code>)</li><li><a·href="event_handler_chapter.html#event_handling">Event·Handling</a>·(for·the
520 <code·class="inline">event_handler</code>·term)</li><li><a·href="ct_hooks_chapter.html#installing">Common·Test·Hooks</a>·(for·term·<code·class="inline">ct_hooks</code>)</li></ul><p><em>Configuration·terms:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5874921265-1">{</span><span·class="ss">merge_tests</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bool</span><span·class="p"·data-group-id="5874921265-1">}</span><span·class="p">.</span><span·class="w">520 <code·class="inline">event_handler</code>·term)</li><li><a·href="ct_hooks_chapter.html#installing">Common·Test·Hooks</a>·(for·term·<code·class="inline">ct_hooks</code>)</li></ul><p><em>Configuration·terms:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3424974700-1">{</span><span·class="ss">merge_tests</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bool</span><span·class="p"·data-group-id="3424974700-1">}</span><span·class="p">.</span><span·class="w">
  
521 </span><span·class="p"·data-group-id="5874921265-2">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Constant</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="5874921265-2">}</span><span·class="p">.</span><span·class="w">521 </span><span·class="p"·data-group-id="3424974700-2">{</span><span·class="ss">define</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Constant</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="3424974700-2">}</span><span·class="p">.</span><span·class="w">
  
522 </span><span·class="p"·data-group-id="5874921265-3">{</span><span·class="ss">specs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InclSpecsOption</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TestSpecs</span><span·class="p"·data-group-id="58749212[·...·truncated·by·diffoscope;·len:·2,·SHA:·108c995b953c8a35561103e2014cf828eb654a99e310f87fab94c2f4b7d2a04f·...·]-3">}</span><span·class="p">.</span><span·class="w">522 </span><span·class="p"·data-group-id="3424974700-3">{</span><span·class="ss">specs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InclSpecsOption</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TestSpecs</span><span·class="p"·data-group-id="34249747[·...·truncated·by·diffoscope;·len:·2,·SHA:·f1534392279bddbf9d43dde8701cb5be14b82f76ec6607bf8d6ad557f60f304e·...·]-3">}</span><span·class="p">.</span><span·class="w">
  
523 </span><span·class="p"·data-group-id="5874921265-4">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeAlias</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="5874921265-4">}</span><span·class="p">.</span><span·class="w">523 </span><span·class="p"·data-group-id="3424974700-4">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeAlias</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="3424974700-4">}</span><span·class="p">.</span><span·class="w">
  
524 </span><span·class="p"·data-group-id="5874921265-5">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InitOptions</span><span·class="p"·data-group-id="5874921265-5">}</span><span·class="p">.</span><span·class="w">524 </span><span·class="p"·data-group-id="3424974700-5">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InitOptions</span><span·class="p"·data-group-id="3424974700-5">}</span><span·class="p">.</span><span·class="w">
525 </span><span·class="p"·data-group-id="5874921265-6">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5874921265-7">[</span><span·class="n">NodeAlias</span><span·class="p"·data-group-id="5874921265-7">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·103,·SHA:·e13d8ce286eb05ca1c93493fc519eddfee4d5d4eae81e72a3db65d03a593d6ef·...·]-6">}</span><span·class="p">.</span><span·class="w">525 </span><span·class="p"·data-group-id="3424974700-6">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3424974700-7">[</span><span·class="n">NodeAlias</span><span·class="p"·data-group-id="3424974700-7">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·103,·SHA:·1ff6f0cb3db7f8e74cbbd3e8fbc9c6b11f1becb63f33a16284d8b9ef9ac9f292·...·]-6">}</span><span·class="p">.</span><span·class="w">
  
526 </span><span·class="p"·data-group-id="5874921265-8">{</span><span·class="ss">label</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Label</span><span·class="p"·data-group-id="5874921265-8">}</span><span·class="p">.</span><span·class="w">526 </span><span·class="p"·data-group-id="3424974700-8">{</span><span·class="ss">label</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Label</span><span·class="p"·data-group-id="3424974700-8">}</span><span·class="p">.</span><span·class="w">
527 </span><span·class="p"·data-group-id="5874921265-9">{</span><span·class="ss">label</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Label</span><span·class="p"·data-group-id="5874921265-9">}</span><span·class="p">.</span><span·class="w">527 </span><span·class="p"·data-group-id="3424974700-9">{</span><span·class="ss">label</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Label</span><span·class="p"·data-group-id="3424974700-9">}</span><span·class="p">.</span><span·class="w">
  
528 </span><span·class="p"·data-group-id="5874921265-10">{</span><span·class="ss">verbosity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">VerbosityLevels</span><span·class="p"·data-group-id="5874921265-10">}</span><span·class="p">.</span><span·class="w">528 </span><span·class="p"·data-group-id="3424974700-10">{</span><span·class="ss">verbosity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">VerbosityLevels</span><span·class="p"·data-group-id="3424974700-10">}</span><span·class="p">.</span><span·class="w">
529 </span><span·class="p"·data-group-id="5874921265-11">{</span><span·class="ss">verbosity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">VerbosityLevels</span><span·class="p"·data-group-id="5874[·...·truncated·by·diffoscope;·len:·6,·SHA:·d1841c838656d2965cbe33aedf0aa6273fd6fc15f5f068dbab99162f6099539f·...·]-11">}</span><span·class="p">.</span><span·class="w">529 </span><span·class="p"·data-group-id="3424974700-11">{</span><span·class="ss">verbosity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">VerbosityLevels</span><span·class="p"·data-group-id="3424[·...·truncated·by·diffoscope;·len:·6,·SHA:·fc51004002ffacf8dda0793b33bff409e3fc178ec4b3b56edfea025ee6185261·...·]-11">}</span><span·class="p">.</span><span·class="w">
  
530 </span><span·class="p"·data-group-id="5874921265-12">{</span><span·class="ss">stylesheet</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CSSFile</span><span·class="p"·data-group-id="5874921265-12">}</span><span·class="p">.</span><span·class="w">530 </span><span·class="p"·data-group-id="3424974700-12">{</span><span·class="ss">stylesheet</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CSSFile</span><span·class="p"·data-group-id="3424974700-12">}</span><span·class="p">.</span><span·class="w">
531 </span><span·class="p"·data-group-id="5874921265-13">{</span><span·class="ss">stylesheet</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CSSFile</span><span·class="p"·data-group-id="5874921265-13">}</span><span·class="p">.</span><span·class="w">531 </span><span·class="p"·data-group-id="3424974700-13">{</span><span·class="ss">stylesheet</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CSSFile</span><span·class="p"·data-group-id="3424974700-13">}</span><span·class="p">.</span><span·class="w">
  
532 </span><span·class="p"·data-group-id="5874921265-14">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnTypes</span><span·class="p"·data-group-id="5874921265-14">}</span><span·class="p">.</span><span·class="w">532 </span><span·class="p"·data-group-id="3424974700-14">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnTypes</span><span·class="p"·data-group-id="3424974700-14">}</span><span·class="p">.</span><span·class="w">
533 </span><span·class="p"·data-group-id="5874921265-15">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnTypes</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·9,·SHA:·af22b1ed66c72714d64fb71b0ec98f0826985057c6a263a5486bad71e843e0a3·...·]-15">}</span><span·class="p">.</span><span·class="w">533 </span><span·class="p"·data-group-id="3424974700-15">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnTypes</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·9,·SHA:·95c83fc66934ac6abceded19d9f60ab9debcd63de7500dccafe308f531acbfaa·...·]-15">}</span><span·class="p">.</span><span·class="w">
  
534 </span><span·class="p"·data-group-id="5874921265-16">{</span><span·class="ss">multiply_timetraps</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="5874921265-16">}</span><span·class="p">.</span><span·class="w">534 </span><span·class="p"·data-group-id="3424974700-16">{</span><span·class="ss">multiply_timetraps</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="3424974700-16">}</span><span·class="p">.</span><span·class="w">
535 </span><span·class="p"·data-group-id="5874921265-17">{</span><span·class="ss">multiply_timetraps</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="587492126[·...·truncated·by·diffoscope;·len:·1,·SHA:·ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d·...·]-17">}</span><span·class="p">.</span><span·class="w">535 </span><span·class="p"·data-group-id="3424974700-17">{</span><span·class="ss">multiply_timetraps</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="342497470[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-17">}</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 136708/203603 bytes (67.14%) of diff not shown.
642 B
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/search.html
    
Offset 118, 15 lines modifiedOffset 118, 15 lines modified
118 <div·id="search">118 <div·id="search">
119 ··<h1>119 ··<h1>
120 ····<span></span>120 ····<span></span>
121 ··</h1>121 ··</h1>
  
122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>
123 </div>123 </div>
124 <script·src="dist/search_data-2059C099.js"></script>124 <script·src="dist/search_data-F658300A.js"></script>
125 ····<footer·class="footer">125 ····<footer·class="footer">
126 ······<p>126 ······<p>
  
127 ········<span·class="line">127 ········<span·class="line">
128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">
129 ············Search·HexDocs129 ············Search·HexDocs
130 ··········</button>130 ··········</button>
8.34 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/unix_telnet.html
    
Offset 125, 22 lines modifiedOffset 125, 22 lines modified
125 ····<small·class="app-vsn"·translate="no">(common_test·v1.27.6)</small>125 ····<small·class="app-vsn"·translate="no">(common_test·v1.27.6)</small>
  
126 ··</h1>126 ··</h1>
  
  
127 ····<section·id="moduledoc">127 ····<section·id="moduledoc">
128 <p>Callback·module·for·<a·href="ct_telnet.html"><code·class="inline">ct_telnet</code></a>,·for·connecting·to·a·Telnet·server·on·a·UNIX128 <p>Callback·module·for·<a·href="ct_telnet.html"><code·class="inline">ct_telnet</code></a>,·for·connecting·to·a·Telnet·server·on·a·UNIX
129 host.</p><p>It·requires·the·following·entry·in·the·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4290023722-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="4290023722-2">[</span><span·class="p"·data-group-id="4290023722-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">HostNam[·...·truncated·by·diffoscope;·len:·60,·SHA:·e4000ab0594c30cad59a10380829fc2c0437f1302fa1dd2343101be0f2af833e·...·]-3">}</span><span·class="p">,</span><span·class="w">129 host.</p><p>It·requires·the·following·entry·in·the·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4137366541-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="4137366541-2">[</span><span·class="p"·data-group-id="4137366541-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">HostNam[·...·truncated·by·diffoscope;·len:·60,·SHA:·e679cf9429b1f4a956b38727799cfacfc5d91fb6dbcb1c0b81bb95dafccc897f·...·]-3">}</span><span·class="p">,</span><span·class="w">
130 ·······</span><span·class="p"·data-group-id="4290023722-4">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="n">PortNum</span><span·class="p"·data-group-id="4290023722-4">}</span><span·class="p">,</span><span·class="w">·················</span><span·class="c1">%·optional</span><span·class="w">130 ·······</span><span·class="p"·data-group-id="4137366541-4">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="n">PortNum</span><span·class="p"·data-group-id="4137366541-4">}</span><span·class="p">,</span><span·class="w">·················</span><span·class="c1">%·optional</span><span·class="w">
131 ·······</span><span·class="p"·data-group-id="4290023722-5">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">UserName</span><span·class="p"·data-group-id="4290023722-5">}</span><span·class="p">,</span><span·class="w">131 ·······</span><span·class="p"·data-group-id="4137366541-5">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">UserName</span><span·class="p"·data-group-id="4137366541-5">}</span><span·class="p">,</span><span·class="w">
132 ·······</span><span·class="p"·data-group-id="4290023722-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="4290023722-6">}</span><span·class="p">,</span><span·class="w">132 ·······</span><span·class="p"·data-group-id="4137366541-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="4137366541-6">}</span><span·class="p">,</span><span·class="w">
133 ·······</span><span·class="p"·data-group-id="4290023722-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="4290023722-7">}</span><span·class="p"·data-group-id="4290023722-2">]</span><span·class="p"·data-group-id="4290023722-1">}</span><span·class="p">.</span><span·class="w">············</span><span·class="c1">%·optional</span></code></pre><p>To·communicate·through·Telnet·to·the·host·specified·by·<code·class="inline">HostNameOrIpAddress</code>,133 ·······</span><span·class="p"·data-group-id="4137366541-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="4137366541-7">}</span><span·class="p"·data-group-id="4137366541-2">]</span><span·class="p"·data-group-id="4137366541-1">}</span><span·class="p">.</span><span·class="w">············</span><span·class="c1">%·optional</span></code></pre><p>To·communicate·through·Telnet·to·the·host·specified·by·<code·class="inline">HostNameOrIpAddress</code>,
134 use·the·interface·functions·in·<a·href="ct_telnet.html"><code·class="inline">ct_telnet</code></a>,·for·example,·<code·class="inline">open(Name)</code>·and134 use·the·interface·functions·in·<a·href="ct_telnet.html"><code·class="inline">ct_telnet</code></a>,·for·example,·<code·class="inline">open(Name)</code>·and
135 <code·class="inline">cmd(Name,Cmd)</code>.</p><p><code·class="inline">Name</code>·is·the·name·you·allocated·to·the·Unix·host·in·your·<code·class="inline">require</code>·statement,135 <code·class="inline">cmd(Name,Cmd)</code>.</p><p><code·class="inline">Name</code>·is·the·name·you·allocated·to·the·Unix·host·in·your·<code·class="inline">require</code>·statement,
136 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="4010753432-1">(</span><span·class="p"·data-group-id="4010753432-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4010753432-2">[</span><span·class="p"·data-group-id="4010753432-3">{</span[·...·truncated·by·diffoscope;·len:·1121,·SHA:·54ef3bae49b8d021dea7556b7446e321c72233383dc8e26f2df785d61508ef14·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·&quot;keep·alive&quot;·activity·(that·is,·that·<code·class="inline">Common·Test</code>·sends·NOP·to·the·server136 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="3550414742-1">(</span><span·class="p"·data-group-id="3550414742-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3550414742-2">[</span><span·class="p"·data-group-id="3550414742-3">{</span[·...·truncated·by·diffoscope;·len:·1121,·SHA:·fbb891d411f76f96ba45c5001d4a6704965d331a629b988b996154aa0ccfc70b·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·&quot;keep·alive&quot;·activity·(that·is,·that·<code·class="inline">Common·Test</code>·sends·NOP·to·the·server
137 every·10·seconds·if·the·connection·is·idle)·can·be·enabled·or·disabled·for·one137 every·10·seconds·if·the·connection·is·idle)·can·be·enabled·or·disabled·for·one
138 particular·connection·as·described·here.·It·can·be·disabled·for·all·connections138 particular·connection·as·described·here.·It·can·be·disabled·for·all·connections
139 using·<code·class="inline">telnet_settings</code>·(see·<a·href="ct_telnet.html"><code·class="inline">ct_telnet</code></a>).</p><p>The·<code·class="inline">{port,PortNum}</code>·tuple·is·optional·and·if·omitted,·default·Telnet·port·23·is139 using·<code·class="inline">telnet_settings</code>·(see·<a·href="ct_telnet.html"><code·class="inline">ct_telnet</code></a>).</p><p>The·<code·class="inline">{port,PortNum}</code>·tuple·is·optional·and·if·omitted,·default·Telnet·port·23·is
140 used.·Also·the·<code·class="inline">keep_alive</code>·tuple·is·optional,·and·the·value·default·to·<code·class="inline">true</code>140 used.·Also·the·<code·class="inline">keep_alive</code>·tuple·is·optional,·and·the·value·default·to·<code·class="inline">true</code>
141 (enabled).</p><h2·id="module-see-also"·class="section-heading">141 (enabled).</p><h2·id="module-see-also"·class="section-heading">
142 ··<a·href="#module-see-also"·class="hover-link">142 ··<a·href="#module-see-also"·class="hover-link">
143 ····<i·class="ri-link-m"·aria-hidden="true"></i>143 ····<i·class="ri-link-m"·aria-hidden="true"></i>
109 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/write_test_chapter.html
    
Offset 262, 58 lines modifiedOffset 262, 58 lines modified
262 <a·href="write_test_chapter.html#timetraps">Timetrap·Time-Outs</a>.</p></li><li><p><strong><code·class="inline">userdata</code></strong>·-·Specifies·any·data·related·to·the·test·case.·This·data·can·be262 <a·href="write_test_chapter.html#timetraps">Timetrap·Time-Outs</a>.</p></li><li><p><strong><code·class="inline">userdata</code></strong>·-·Specifies·any·data·related·to·the·test·case.·This·data·can·be
263 retrieved·at·any·time·using·the·<a·href="ct.html#userdata/3"><code·class="inline">ct:userdata/3</code></a>·utility·function.</p></li><li><p><strong><code·class="inline">silent_connections</code></strong>·-·For·details,·see·section263 retrieved·at·any·time·using·the·<a·href="ct.html#userdata/3"><code·class="inline">ct:userdata/3</code></a>·utility·function.</p></li><li><p><strong><code·class="inline">silent_connections</code></strong>·-·For·details,·see·section
264 <a·href="run_test_chapter.html#silent_connections">Silent·Connections</a>.</p></li><li><p><strong><code·class="inline">require</code></strong>·-·Specifies·configuration·variables·required·by·the·test·case.264 <a·href="run_test_chapter.html#silent_connections">Silent·Connections</a>.</p></li><li><p><strong><code·class="inline">require</code></strong>·-·Specifies·configuration·variables·required·by·the·test·case.
265 If·the·required·configuration·variables·are·not·found·in·any·of·the·test265 If·the·required·configuration·variables·are·not·found·in·any·of·the·test
266 system·configuration·files,·the·test·case·is·skipped.</p><p>A·required·variable·can·also·be·given·a·default·value·to·be·used·if·the266 system·configuration·files,·the·test·case·is·skipped.</p><p>A·required·variable·can·also·be·given·a·default·value·to·be·used·if·the
267 variable·is·not·found·in·any·configuration·file.·To·specify·a·default·value,267 variable·is·not·found·in·any·configuration·file.·To·specify·a·default·value,
268 add·a·tuple·on·the·form·<code·class="inline">{default_config,ConfigVariableName,Value}</code>·to·the268 add·a·tuple·on·the·form·<code·class="inline">{default_config,ConfigVariableName,Value}</code>·to·the
269 test·case·information·list·(the·position·in·the·list·is·irrelevant).</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">testcase1</span><span·class="p"·data-group-id="1326915233-1">(</span><span·class="p"·data-group-id="1326915233-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">269 test·case·information·list·(the·position·in·the·list·is·irrelevant).</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">testcase1</span><span·class="p"·data-group-id="3372672365-1">(</span><span·class="p"·data-group-id="3372672365-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ····</span><span·class="p"·data-group-id="1326915233-2">[</span><span·class="p"·data-group-id="1326915233-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ftp</span><span·class="p"·data-group-id="1326915233-3">}</span><span·class="p">,</span><span·class="w">270 ····</span><span·class="p"·data-group-id="3372672365-2">[</span><span·class="p"·data-group-id="3372672365-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ftp</span><span·class="p"·data-group-id="3372672365-3">}</span><span·class="p">,</span><span·class="w">
271 ·····</span><span·class="p"·data-group-id="1326915233-4">{</span><span·class="ss">default_config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1326915233-5">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·195,·SHA:·3b5251e5ea4bf087188cab03d5da05949806befaa076d04342f3dcab1e3fd024·...·]-6">}</span><span·class="p">,</span><span·class="w">271 ·····</span><span·class="p"·data-group-id="3372672365-4">{</span><span·class="ss">default_config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3372672365-5">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·195,·SHA:·5d30e8b35e13deeecd1a543969d584197ef4ed8e9200277232b8f5d60a29e6fd·...·]-6">}</span><span·class="p">,</span><span·class="w">
272 ····························</span><span·class="p"·data-group-id="1326915233-7">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;aladdin&quot;</span><span·class="p"·data-group-id="1326915233-7">}</span><span·class="p">,</span><span·class="w">272 ····························</span><span·class="p"·data-group-id="3372672365-7">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;aladdin&quot;</span><span·class="p"·data-group-id="3372672365-7">}</span><span·class="p">,</span><span·class="w">
273 ····························</span><span·class="p"·data-group-id="1326915233-8">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sesame&quot;</span><span·class="p"·data-group-id="1326915233-8">}</span><span·class="p"·data-group-id="1326915233-5">]</span><span·c[·...·truncated·by·diffoscope;·len:·335,·SHA:·aafc3a8ce29ef8e81049d496fd364e1c08698a6d73de6b653e2c7429a2af7c46·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">273 ····························</span><span·class="p"·data-group-id="3372672365-8">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sesame&quot;</span><span·class="p"·data-group-id="3372672365-8">}</span><span·class="p"·data-group-id="3372672365-5">]</span><span·c[·...·truncated·by·diffoscope;·len:·335,·SHA:·f549930cfa70f4a714236fde31307559fbb21babb20a4cbe11069f938987cba5·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
274 ····</span><span·class="p"·data-group-id="3839812111-2">[</span><span·class="p"·data-group-id="3839812111-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">un[·...·truncated·by·diffoscope;·len:·50,·SHA:·855f8f001d51211997eaea2a72c6b4fa456f105b90a8737d05b82ebfdbc26a98·...·]-3">}</span><span·class="p">,</span><span·class="w">274 ····</span><span·class="p"·data-group-id="0074802738-2">[</span><span·class="p"·data-group-id="0074802738-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">un[·...·truncated·by·diffoscope;·len:·50,·SHA:·3190a169435d6567a45ee38c9e1d4bdfc39699198ce6584d703ad86fb5673ff4·...·]-3">}</span><span·class="p">,</span><span·class="w">
275 ·····</span><span·class="p"·data-group-id="3839812111-4">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3839812111-5">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·364,·SHA:·29daaafca887a349125f042407496f7e84b32117dc045893ce2d8416079f10d9·...·]-4">}</span><span·class="p">,</span><span·class="w">275 ·····</span><span·class="p"·data-group-id="0074802738-4">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0074802738-5">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·364,·SHA:·331727fd9136336bdd68b4dae6a70a8bc61e605c16db1f2a33f4ed0c765d84cc·...·]-4">}</span><span·class="p">,</span><span·class="w">
276 ·····</span><span·class="p"·data-group-id="3839812111-7">{</span><span·class="ss">default_config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3839812111-8">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·202,·SHA:·108ba88bdeec225a46db54230fa7341a6fa5b719af4226252f930ccb255bd1cc·...·]-9">}</span><span·class="p">,</span><span·class="w">276 ·····</span><span·class="p"·data-group-id="0074802738-7">{</span><span·class="ss">default_config</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0074802738-8">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·202,·SHA:·0936d6663304da8635455fcc96193499a6778f55ff969c6fadf05a74398ccfbf·...·]-9">}</span><span·class="p">,</span><span·class="w">
277 ·····························</span><span·class="p"·data-group-id="3839812111-10">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;aladdin&quot;</span><span·class="p"·data-group-id="3839812111-10">}</span><span·class="p">,</span><span·class="w">277 ·····························</span><span·class="p"·data-group-id="0074802738-10">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;aladdin&quot;</span><span·class="p"·data-group-id="0074802738-10">}</span><span·class="p">,</span><span·class="w">
278 ·····························</span><span·class="p"·data-group-id="3839812111-11">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sesame&quot;</span><span·class="p"·data-group-id="3839812111-11">}</span><span·class="p"·data-group-id="3839812111-8">]</span><span[·...·truncated·by·diffoscope;·len:·113,·SHA:·cf09ef36227c7448ad92715e3c0aebe92ec76babd295cb7b1b2a0120df88e6b0·...·]-2">]</span><span·class="p">.</span></code></pre></li></ul><p>For·more·information·about·<code·class="inline">require</code>,·see·section278 ·····························</span><span·class="p"·data-group-id="0074802738-11">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sesame&quot;</span><span·class="p"·data-group-id="0074802738-11">}</span><span·class="p"·data-group-id="0074802738-8">]</span><span[·...·truncated·by·diffoscope;·len:·113,·SHA:·bfc167dd5d6eb8bebde97f2c30f40a25b8e493c9306100bb8d2b434dd4971671·...·]-2">]</span><span·class="p">.</span></code></pre></li></ul><p>For·more·information·about·<code·class="inline">require</code>,·see·section
279 <a·href="config_file_chapter.html#require_config_data">Requiring·and·Reading·Configuration·Data</a>279 <a·href="config_file_chapter.html#require_config_data">Requiring·and·Reading·Configuration·Data</a>
280 in·section·External·Configuration·Data·and·function280 in·section·External·Configuration·Data·and·function
281 <a·href="ct.html#require/1"><code·class="inline">ct:require/1/2</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Specifying·a·default·value·for·a·required·variable·can·result·in·a·test·case281 <a·href="ct.html#require/1"><code·class="inline">ct:require/1/2</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Specifying·a·default·value·for·a·required·variable·can·result·in·a·test·case
282 always·getting·executed.·This·might·not·be·a·desired·behavior.</p></section><p>If·<code·class="inline">timetrap</code>·or·<code·class="inline">require</code>,·or·both,·is·not·set·specifically·for·a·particular282 always·getting·executed.·This·might·not·be·a·desired·behavior.</p></section><p>If·<code·class="inline">timetrap</code>·or·<code·class="inline">require</code>,·or·both,·is·not·set·specifically·for·a·particular
283 test·case,·default·values·specified·by·function283 test·case,·default·values·specified·by·function
284 <a·href="ct_suite.html#c:suite/0"><code·class="inline">suite/0</code></a>·are·used.</p><p>Tags·other·than·the·earlier·mentioned·are·ignored·by·the·test·server.</p><p>An·example·of·a·test·case·information·function·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">reboot_node</span><span·class="p"·data-group-id="6539997622-1">(</span><span·class="p"·data-group-id="6539997622-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">284 <a·href="ct_suite.html#c:suite/0"><code·class="inline">suite/0</code></a>·are·used.</p><p>Tags·other·than·the·earlier·mentioned·are·ignored·by·the·test·server.</p><p>An·example·of·a·test·case·information·function·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">reboot_node</span><span·class="p"·data-group-id="9552174646-1">(</span><span·class="p"·data-group-id="9552174646-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
285 ····</span><span·class="p"·data-group-id="6539997622-2">[</span><span·class="w">285 ····</span><span·class="p"·data-group-id="9552174646-2">[</span><span·class="w">
286 ·····</span><span·class="p"·data-group-id="6539997622-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="6539997622-4">{</span><span·class="ss">seconds</span><span·class="p">,</span><span·class="mi">60</span><span·class="p"·data-group-id="6539997622-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·fd12533d3fd945c71c2c7518035a2adb0d72c5bc724b8f28a736af797332120c·...·]-3">}</span><span·class="p">,</span><span·class="w">286 ·····</span><span·class="p"·data-group-id="9552174646-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="9552174646-4">{</span><span·class="ss">seconds</span><span·class="p">,</span><span·class="mi">60</span><span·class="p"·data-group-id="9552174646-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·b2eb9df4be570dbdbe91c9128eef5c607fdcf9868299fedc8dd28b04bdf2f53d·...·]-3">}</span><span·class="p">,</span><span·class="w">
287 ·····</span><span·class="p"·data-group-id="6539997622-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">interfaces</span><span·class="p"·data-group-id="6539997622-5">}</span><span·class="p">,</span><span·class="w">287 ·····</span><span·class="p"·data-group-id="9552174646-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">interfaces</span><span·class="p"·data-group-id="9552174646-5">}</span><span·class="p">,</span><span·class="w">
288 ·····</span><span·class="p"·data-group-id="6539997622-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="w">288 ·····</span><span·class="p"·data-group-id="9552174646-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="w">
289 ·········</span><span·class="p"·data-group-id="6539997622-7">[</span><span·class="p"·data-group-id="6539997622-8">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="s">&quot;System·Upgrade:·RpuAddition·Normal·RebootNode&quot;</span><span·class="p"·data-group-id="6539997622-8">}</span><span·class="p">,</span><span·class="w">289 ·········</span><span·class="p"·data-group-id="9552174646-7">[</span><span·class="p"·data-group-id="9552174646-8">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="s">&quot;System·Upgrade:·RpuAddition·Normal·RebootNode&quot;</span><span·class="p"·data-group-id="9552174646-8">}</span><span·class="p">,</span><span·class="w">
290 ··········</span><span·class="p"·data-group-id="6539997622-9">{</span><span·class="ss">fts</span><span·class="p">,</span><span·class="s">&quot;http://someserver.ericsson.se/test_doc4711.pdf&quot;</span><span·class="p"·data-group-id="6539997622-9">}</span><span·class="p"·data-group-id="6539997622-7">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·14ad38423ed39af3c3037dc55c96c4a133a4299ad5d614a890d9f0c666f468ce·...·]-6">}</span><span·class="w">290 ··········</span><span·class="p"·data-group-id="9552174646-9">{</span><span·class="ss">fts</span><span·class="p">,</span><span·class="s">&quot;http://someserver.ericsson.se/test_doc4711.pdf&quot;</span><span·class="p"·data-group-id="9552174646-9">}</span><span·class="p"·data-group-id="9552174646-7">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·843af2eaab55d2b9ada5b1eaa0c6242eddd843c2640503c8c2c81de407f194f6·...·]-6">}</span><span·class="w">
291 ····</span><span·class="p"·data-group-id="6539997622-2">]</span><span·class="p">.</span></code></pre><p><a·href=""·id="suite"></a></p><h2·id="test-suite-information-function"·class="section-heading">291 ····</span><span·class="p"·data-group-id="9552174646-2">]</span><span·class="p">.</span></code></pre><p><a·href=""·id="suite"></a></p><h2·id="test-suite-information-function"·class="section-heading">
292 ··<a·href="#test-suite-information-function"·class="hover-link">292 ··<a·href="#test-suite-information-function"·class="hover-link">
293 ····<i·class="ri-link-m"·aria-hidden="true"></i>293 ····<i·class="ri-link-m"·aria-hidden="true"></i>
294 ··</a>294 ··</a>
295 ··<span·class="text">Test·Suite·Information·Function</span>295 ··<span·class="text">Test·Suite·Information·Function</span>
296 </h2>296 </h2>
297 <p>Function·<a·href="ct_suite.html#c:suite/0"><code·class="inline">suite/0</code></a>·can,·for·example,·be·used·in·a·test297 <p>Function·<a·href="ct_suite.html#c:suite/0"><code·class="inline">suite/0</code></a>·can,·for·example,·be·used·in·a·test
298 suite·module·to·set·a·default·<code·class="inline">timetrap</code>·value·and·to·<code·class="inline">require</code>·external298 suite·module·to·set·a·default·<code·class="inline">timetrap</code>·value·and·to·<code·class="inline">require</code>·external
299 configuration·data.·If·a·test·case,·or·a·group·information·function·also299 configuration·data.·If·a·test·case,·or·a·group·information·function·also
300 specifies·any·of·the·information·tags,·it·overrides·the·default·values·set·by300 specifies·any·of·the·information·tags,·it·overrides·the·default·values·set·by
301 <code·class="inline">suite/0</code>.·For·details,·see301 <code·class="inline">suite/0</code>.·For·details,·see
302 <a·href="write_test_chapter.html#info_function">Test·Case·Information·Function</a>·and302 <a·href="write_test_chapter.html#info_function">Test·Case·Information·Function</a>·and
303 <a·href="write_test_chapter.html#test_case_groups">Test·Case·Groups</a>.</p><p>The·following·options·can·also·be·specified·with·the·suite·information·list:</p><ul><li><code·class="inline">stylesheet</code>,·see·<a·href="run_test_chapter.html#html_stylesheet">HTML·Style·Sheets</a></li><li><code·class="inline">userdata</code>,·see303 <a·href="write_test_chapter.html#test_case_groups">Test·Case·Groups</a>.</p><p>The·following·options·can·also·be·specified·with·the·suite·information·list:</p><ul><li><code·class="inline">stylesheet</code>,·see·<a·href="run_test_chapter.html#html_stylesheet">HTML·Style·Sheets</a></li><li><code·class="inline">userdata</code>,·see
304 <a·href="write_test_chapter.html#info_function">Test·Case·Information·Function</a></li><li><code·class="inline">silent_connections</code>,·see304 <a·href="write_test_chapter.html#info_function">Test·Case·Information·Function</a></li><li><code·class="inline">silent_connections</code>,·see
305 <a·href="run_test_chapter.html#silent_connections">Silent·Connections</a></li></ul><p>An·example·of·the·suite·information·function·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="8805322564-1">(</span><span·class="p"·data-group-id="8805322564-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">305 <a·href="run_test_chapter.html#silent_connections">Silent·Connections</a></li></ul><p>An·example·of·the·suite·information·function·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="0553648033-1">(</span><span·class="p"·data-group-id="0553648033-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
306 ····</span><span·class="p"·data-group-id="8805322564-2">[</span><span·class="w">306 ····</span><span·class="p"·data-group-id="0553648033-2">[</span><span·class="w">
307 ·····</span><span·class="p"·data-group-id="8805322564-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="8805322564-4">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="8805322564-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·7cc3bc649fe64a7db325d009dbbb4cd58c7c2be9cee4a1010d409e87793662ad·...·]-3">}</span><span·class="p">,</span><span·class="w">307 ·····</span><span·class="p"·data-group-id="0553648033-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="0553648033-4">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="0553648033-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·ff296b32a56feb3af1ddf3dc617f3526046272d6fe08453e46f7e8bd6ef628a4·...·]-3">}</span><span·class="p">,</span><span·class="w">
308 ·····</span><span·class="p"·data-group-id="8805322564-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">global_names</span><span·class="p"·data-group-id="8805322564-5">}</span><span·class="p">,</span><span·class="w">308 ·····</span><span·class="p"·data-group-id="0553648033-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">global_names</span><span·class="p"·data-group-id="0553648033-5">}</span><span·class="p">,</span><span·class="w">
309 ·····</span><span·class="p"·data-group-id="8805322564-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="p"·data-group-id="8805322564-7">[</span><span·class="p"·data-group-id="8805322564-8">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·201,·SHA:·be5441825982408c7a981db7dce808385f99d3250113e85a351bdf2f5eac9c87·...·]-6">}</span><span·class="p">,</span><span·class="w">309 ·····</span><span·class="p"·data-group-id="0553648033-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="p"·data-group-id="0553648033-7">[</span><span·class="p"·data-group-id="0553648033-8">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·201,·SHA:·77964d8ad387d191b097e79c2101f15a639018033dac00dc7b259c0c9e5de9a6·...·]-6">}</span><span·class="p">,</span><span·class="w">
310 ·····</span><span·class="p"·data-group-id="8805322564-9">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="p"·data-group-id="8805322564-10">[</span><span·class="ss">telnet</span><span·class="p"·data-group-id="8805322564-10">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·d55118bb8028aae936404ddb3ef25452bfaffd23bdd0a10ba71e7b0c0311901e·...·]-9">}</span><span·class="p">,</span><span·class="w">310 ·····</span><span·class="p"·data-group-id="0553648033-9">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="p"·data-group-id="0553648033-10">[</span><span·class="ss">telnet</span><span·class="p"·data-group-id="0553648033-10">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·bc485edd6c2160bb3d33f700c905e0d2e14bc55234b52c7249a0da070ee19662·...·]-9">}</span><span·class="p">,</span><span·class="w">
311 ·····</span><span·class="p"·data-group-id="8805322564-11">{</span><span·class="ss">stylesheet</span><span·class="p">,</span><span·class="s">&quot;db_testing.css&quot;</span><span·class="p"·data-group-id="8805322564-11">}</span><span·class="w">311 ·····</span><span·class="p"·data-group-id="0553648033-11">{</span><span·class="ss">stylesheet</span><span·class="p">,</span><span·class="s">&quot;db_testing.css&quot;</span><span·class="p"·data-group-id="0553648033-11">}</span><span·class="w">
312 ····</span><span·class="p"·data-group-id="8805322564-2">]</span><span·class="p">.</span></code></pre><p><a·href=""·id="test_case_groups"></a></p><h2·id="test-case-groups"·class="section-heading">312 ····</span><span·class="p"·data-group-id="0553648033-2">]</span><span·class="p">.</span></code></pre><p><a·href=""·id="test_case_groups"></a></p><h2·id="test-case-groups"·class="section-heading">
313 ··<a·href="#test-case-groups"·class="hover-link">313 ··<a·href="#test-case-groups"·class="hover-link">
314 ····<i·class="ri-link-m"·aria-hidden="true"></i>314 ····<i·class="ri-link-m"·aria-hidden="true"></i>
315 ··</a>315 ··</a>
316 ··<span·class="text">Test·Case·Groups</span>316 ··<span·class="text">Test·Case·Groups</span>
317 </h2>317 </h2>
318 <p>A·test·case·group·is·a·set·of·test·cases·sharing·configuration·functions·and318 <p>A·test·case·group·is·a·set·of·test·cases·sharing·configuration·functions·and
319 execution·properties.·Test·case·groups·are·defined·by·function319 execution·properties.·Test·case·groups·are·defined·by·function
Offset 327, 63 lines modifiedOffset 327, 63 lines modified
327 GroupName·=·atom()327 GroupName·=·atom()
328 GroupsAndTestCases·=·[GroupDef·|·{group,GroupName}·|·TestCase·|328 GroupsAndTestCases·=·[GroupDef·|·{group,GroupName}·|·TestCase·|
329 ·····················{testcase,TestCase,TCRepeatProps}]329 ·····················{testcase,TestCase,TCRepeatProps}]
330 TestCase·=·atom()330 TestCase·=·atom()
331 TCRepeatProps·=·[{repeat,N}·|·{repeat_until_ok,N}·|·{repeat_until_fail,N}]</code></pre><p><code·class="inline">GroupName</code>·is·the·name·of·the·group·and·must·be·unique·within·the·test·suite331 TCRepeatProps·=·[{repeat,N}·|·{repeat_until_ok,N}·|·{repeat_until_fail,N}]</code></pre><p><code·class="inline">GroupName</code>·is·the·name·of·the·group·and·must·be·unique·within·the·test·suite
332 module.·Groups·can·be·nested,·by·including·a·group·definition·within·the332 module.·Groups·can·be·nested,·by·including·a·group·definition·within·the
333 <code·class="inline">GroupsAndTestCases</code>·list·of·another·group.·<code·class="inline">Properties</code>·is·the·list·of333 <code·class="inline">GroupsAndTestCases</code>·list·of·another·group.·<code·class="inline">Properties</code>·is·the·list·of
334 execution·properties·for·the·group.·The·possible·values·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Properties</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4154215434-1">[</span><span·class="ss">parallel</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">sequence</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Shuffle</s[·...·truncated·by·diffoscope;·len:·309,·SHA:·e792fccecefdc907261a7667b68011765043ee6e8300b7fd0d21703ae7fe03ea·...·]-1">]</span><span·class="w">334 execution·properties·for·the·group.·The·possible·values·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Properties</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6576729420-1">[</span><span·class="ss">parallel</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">sequence</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Shuffle</s[·...·truncated·by·diffoscope;·len:·309,·SHA:·ee39bd744bfcd7594b2226cd434b11845660b429c8a86748b4e073b3d2ecb5fb·...·]-1">]</span><span·class="w">
335 </span><span·class="n">Shuffle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">shuffle</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="4154215434-3">{</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="n">Seed</span><span·class="p"·data-group-id="4154215434-3">}</span><span·class="w">335 </span><span·class="n">Shuffle</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">shuffle</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="6576729420-3">{</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="n">Seed</span><span·class="p"·data-group-id="6576729420-3">}</span><span·class="w">
336 </span><span·class="n">Seed</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4154215434-4">{</span><span·class="nf">integer</span><span·class="p"·data-group-id="4154215434-5">(</span><span·class="p"·data-group-id="4154215434-5">)</span><span·class="p">,</span><span·class="nf">integer</span><span·class="p"·data-group-id="4154215434-[·...·truncated·by·diffoscope;·len:·266,·SHA:·f894b32909d135174661b28cbfc328662ef4878e571a6160b4e2efa1786d9421·...·]-4">}</span><span·class="w">336 </span><span·class="n">Seed</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6576729420-4">{</span><span·class="nf">integer</span><span·class="p"·data-group-id="6576729420-5">(</span><span·class="p"·data-group-id="6576729420-5">)</span><span·class="p">,</span><span·class="nf">integer</span><span·class="p"·data-group-id="6576729420-[·...·truncated·by·diffoscope;·len:·266,·SHA:·3eaae2dba9f6285ce6c68d91b0a69b4c47e12591dbfe8e82ae93dbc6de15b167·...·]-4">}</span><span·class="w">
337 </span><span·class="n">GroupRepeatType</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">repeat</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">repeat_until_all_ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">repeat_until_all_fail</span><span·class="w">·</span><span·class="p">|</span><span·class="w">337 </span><span·class="n">GroupRepeatType</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">repeat</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">repeat_until_all_ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">repeat_until_all_fail</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
338 ··················</span><span·class="ss">repeat_until_any_ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">repeat_until_any_fail</span><span·class="w">338 ··················</span><span·class="ss">repeat_until_any_ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">repeat_until_any_fail</span><span·class="w">
339 </span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="4154215434-8">(</span><span·class="p"·data-group-id="4154215434-8">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">forever</span></code></pre><p><em>Explanations:</em></p><ul><li><p><strong><code·class="inline">parallel</code></strong>·-·<code·class="inline">Common·Test</code>·executes·all·test·cases·in·the·group·in339 </span><span·class="n">N</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="6576729420-8">(</span><span·class="p"·data-group-id="6576729420-8">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">forever</span></code></pre><p><em>Explanations:</em></p><ul><li><p><strong><code·class="inline">parallel</code></strong>·-·<code·class="inline">Common·Test</code>·executes·all·test·cases·in·the·group·in
340 parallel.</p></li><li><p><strong><code·class="inline">sequence</code></strong>·-·The·cases·are·executed·in·a·sequence·as·described·in·section340 parallel.</p></li><li><p><strong><code·class="inline">sequence</code></strong>·-·The·cases·are·executed·in·a·sequence·as·described·in·section
341 <a·href="dependencies_chapter.html#sequences">Sequences</a>·in·section·Dependencies·Between341 <a·href="dependencies_chapter.html#sequences">Sequences</a>·in·section·Dependencies·Between
342 Test·Cases·and·Suites.</p></li><li><p><strong><code·class="inline">shuffle</code></strong>·-·The·cases·in·the·group·are·executed·in·random·order.</p></li><li><p><strong><code·class="inline">repeat,·repeat_until_*</code></strong>·-·Orders·<code·class="inline">Common·Test</code>·to·repeat·execution·of·all342 Test·Cases·and·Suites.</p></li><li><p><strong><code·class="inline">shuffle</code></strong>·-·The·cases·in·the·group·are·executed·in·random·order.</p></li><li><p><strong><code·class="inline">repeat,·repeat_until_*</code></strong>·-·Orders·<code·class="inline">Common·Test</code>·to·repeat·execution·of·all
343 the·cases·in·the·group·a·given·number·of·times,·or·until·any,·or·all,·cases343 the·cases·in·the·group·a·given·number·of·times,·or·until·any,·or·all,·cases
344 fail·or·succeed.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">groups</span><span·class="p"·data-group-id="3615405636-1">(</span><span·class="p"·data-group-id="3615405636-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3615405636-2">[</span><span·class="p"·data-group-id="3615405636-3">{</span><span·class="ss">group1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3615405636-4">[</span><span·class="ss">parallel</span><span·class="p"·data-group-id="3615405636-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3615405636-5">[</span><span·class="ss">test1a</span><span·class="p">,</span><span·class="ss">test1b</span><span·class="p"·data-group-id="3615405636-5">]</span><span·class="p"·data-group-id="3615405636-3">}</span><span·class="p">,</span><span·class="w"> 
345 ·············</span><span·class="p"·data-group-id="3615405636-6">{</span><span·class="ss">group2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3615405636-7">[</span><span·class="ss">shuffle</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·604,·SHA:·afa39bd516fe14a9d89f6664b5b841c0f4e3ea75759e8faea5d2cde71fdb72f4·...·]344 fail·or·succeed.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">groups</span><span·class="p"·data-group-id="8066281644-1">(</span><span·class="p"·data-group-id="8066281644-1">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·711,·SHA:·9d37435d34aea918edb0256d7332be24261f6bb3310dae732e26d903acf0cb45·...·]
 345 ·············</span><span·class="p"·data-group-id="8066281644-6">{</span><span·class="ss">group2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8066281644-7">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="ss">sequence</span><span·class="p"·data-group-id="8066281644-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8066281644-8">[</span><span·class="ss">test2a</span><span·class="p">,</span><span·class="ss">test2b</span><span·class="p">,</span><span·class="ss">test2c</span><span·class="p"·data-group-id="8066281644-8">]</span><span·class="p"·data-group-id="8066281644-6">}</span><span·class="p"·data-group-id="8066281644-2">]</span><span·class="p">.</span></code></pre><p>To·specify·in·which·order·groups·are·to·be·executed·(also·with·respect·to·test
346 cases·that·are·not·part·of·any·group),·add·tuples·on·the·form346 cases·that·are·not·part·of·any·group),·add·tuples·on·the·form
347 <code·class="inline">{group,GroupName}</code>·to·the·<code·class="inline">all/0</code>·list.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="3166557199-1">(</span><span·class="p"·data-group-id="3166557199-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3166557199-2">[</span><span·class="ss">testcase1</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1055,·SHA:·c06f8a6ef1cbb58cc04dc15eee8225687283e0f592a217ca217cf6bd5c525ae4·...·]-2">]</span><span·class="p">.</span></code></pre><p>Execution·properties·with·a·group·tuple·in·<code·class="inline">all/0</code>:347 <code·class="inline">{group,GroupName}</code>·to·the·<code·class="inline">all/0</code>·list.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="5657077087-1">(</span><span·class="p"·data-group-id="5657077087-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5657077087-2">[</span><span·class="ss">testcase1</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1055,·SHA:·304a6a55ed14598c74b5583db26e22fe14c924a8708b9382cfca07b62f7bc75f·...·]-2">]</span><span·class="p">.</span></code></pre><p>Execution·properties·with·a·group·tuple·in·<code·class="inline">all/0</code>:
348 <code·class="inline">{group,GroupName,Properties}</code>·can·also·be·specified.·These·properties·override348 <code·class="inline">{group,GroupName,Properties}</code>·can·also·be·specified.·These·properties·override
349 those·specified·in·the·group·definition·(see·<code·class="inline">groups/0</code>·earlier).·This·way,·the349 those·specified·in·the·group·definition·(see·<code·class="inline">groups/0</code>·earlier).·This·way,·the
350 same·set·of·tests·can·be·run,·but·with·different·properties,·without·having·to350 same·set·of·tests·can·be·run,·but·with·different·properties,·without·having·to
351 make·copies·of·the·group·definition·in·question.</p><p>If·a·group·contains·subgroups,·the·execution·properties·for·these·can·also·be351 make·copies·of·the·group·definition·in·question.</p><p>If·a·group·contains·subgroups,·the·execution·properties·for·these·can·also·be
352 specified·in·the·group·tuple:·<code·class="inline">{group,GroupName,Properties,SubGroups}</code>·Where,352 specified·in·the·group·tuple:·<code·class="inline">{group,GroupName,Properties,SubGroups}</code>·Where,
353 <code·class="inline">SubGroups</code>·is·a·list·of·tuples,·<code·class="inline">{GroupName,Properties}</code>·or353 <code·class="inline">SubGroups</code>·is·a·list·of·tuples,·<code·class="inline">{GroupName,Properties}</code>·or
354 <code·class="inline">{GroupName,Properties,SubGroups}</code>·representing·the·subgroups.·Any·subgroups354 <code·class="inline">{GroupName,Properties,SubGroups}</code>·representing·the·subgroups.·Any·subgroups
355 defined·in·<code·class="inline">groups/0</code>·for·a·group,·that·are·not·specified·in·the·<code·class="inline">SubGroups</code>355 defined·in·<code·class="inline">groups/0</code>·for·a·group,·that·are·not·specified·in·the·<code·class="inline">SubGroups</code>
356 list,·executes·with·their·predefined·properties.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">groups</span><span·class="p"·data-group-id="9161721666-1">(</span><span·class="p"·data-group-id="9161721666-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9161721666-2">[</span><span·class="p"·data-group-id="9161721666-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9161721666-4">[</span><span·class="p"·data-group-id="9161721666-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9161721666-5">[</span><span·class="p"·data-group-id="9161721666-6">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9161721666-7">[</span><span·class="p"·data-group-id="9161721666-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9161721666-8">[</span><span·class="ss">t2a</span><span·class="p">,</span><span·class="ss">t2b</span><span·class="p"·data-group-id="9161721666-8">]</span><span·class="p"·data-group-id="9161721666-6">}</span><span·class="p">,</span><span·class="w"> 
357 ··························</span><span·class="p"·data-group-id="9161721666-9">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9161721666-10">[</span><span·class="p"·data-group-id="9161721[·...·truncated·by·diffoscope;·len:·629,·SHA:·4e51b1c92fa2ac20c28ca1014388350e71624e538fbdaaf5af2d62ae1a493f66·...·]356 list,·executes·with·their·predefined·properties.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">groups</span><span·class="p"·data-group-id="2958546749-1">(</span><span·class="p"·data-group-id="2958546749-1">)</s[·...·truncated·by·diffoscope;·len:·1033,·SHA:·9c57731f55fd1d874452356f194a4819e6f60ba6931abaa98620cd680cc0d4d7·...·]
 357 ··························</span><span·class="p"·data-group-id="2958546749-9">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2958546749-10">[</span><span·class="p"·data-group-id="2958546749-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2958546749-11">[</span><span·class="ss">t31</span><span·class="p">,</span><span·class="ss">t3b</span><span·class="p"·data-group-id="2958546749-11">]</span><span·class="p"·data-group-id="2958546749-9">}</span><span·class="p"·data-group-id="2958546749-5">]</span><span·class="p"·data-group-id="2958546749-3">}</span><span·class="p"·data-group-id="2958546749-2">]</span><span·class="p">.</span></code></pre><p>To·execute·group·<code·class="inline">tests1</code>·twice·with·different·properties·for·<code·class="inline">tests2</code>·each
358 time:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="1313895123-1">(</span><span·class="p"·data-group-id="1313895123-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">358 time:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="6095743385-1">(</span><span·class="p"·data-group-id="6095743385-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
359 ···</span><span·class="p"·data-group-id="1313895123-2">[</span><span·class="p"·data-group-id="1313895123-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1313895123-4">[</span><span·class="p"·data-group-id="1313895123-5">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1313895123-6">[</span><span·class="ss">parallel</span><span·class="p"·data-group-id="1313895123-6">]</span><span·class="p"·data-group-id="1313895123-5">}</span><span·class="p"·data-group-id="1313895123-4">]</span><span·class="p"·data-group-id="1313895123-3">}</span><span·class="p">,</span><span·class="w"> 
360 ····</span><span·class="p"·data-group-id="1313895123-7">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1313895123-8">[</span><span·class="p"·data-group-id="1313895123-9">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1313895123-10">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="1313895123-11">{</span><span·class="ss">repeat</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="1313895123-11">}</span><span·class="p"·data-group-id="1313895123-10">]</span><span·class="p"·data-group-id="1313895123-9">}</span><span·class="p"·data-group-id="1313895123-8">]</span><span·class="p"·data-group-id="1313895123-7">}</span><span·class="p"·data-group-id="1313895123-2">]</span><span·class="p">.</span></code></pre><p>This·is·equivalent·to·the·following·specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="7914588039-1">(</span><span·class="p"·data-group-id="7914588039-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
361 ···</span><span·class="p"·data-group-id="7914588039-2">[</span><span·class="p"·data-group-id="7914588039-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</[·...·truncated·by·diffoscope;·len:·418,·SHA:·cf273fbc5c8a80e703238d5769c52a236fafabfcbffa856f50c0bc9bdb36b69d·...·]">}</span><span·class="p">,</span><span·class="w">359 ···</span><span·class="p"·data-group-id="6095743385-2">[</span><span·class="p"·data-group-id="6095743385-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</[·...·truncated·by·diffoscope;·len:·524,·SHA:·d5a896de58f32137a3de2e214a443be433a0e05316ad09bee4c96fe3d3344d09·...·]">}</span><span·class="p">,</span><span·class="w">
 360 ····</span><span·class="p"·data-group-id="6095743385-7">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6095743385-8">[</span><span·class="p"·data-group-id="6095743385-9">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6095743385-10">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="6095743385-11">{</span><span·class="ss">repeat</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="6095743385-11">}</span><span·class="p"·data-group-id="6095743385-10">]</span><span·class="p"·data-group-id="6095743385-9">}</span><span·class="p"·data-group-id="6095743385-8">]</span><span·class="p"·data-group-id="6095743385-7">}</span><span·class="p"·data-group-id="6095743385-2">]</span><span·class="p">.</span></code></pre><p>This·is·equivalent·to·the·following·specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="4883153329-1">(</span><span·class="p"·data-group-id="4883153329-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 361 ···</span><span·class="p"·data-group-id="4883153329-2">[</span><span·class="p"·data-group-id="4883153329-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4883153329-4">[</span><span·class="p"·data-group-id="4883153329-5">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4883153329-6">[</span><span·class="ss">parallel</span><span·class="p"·data-group-id="4883153329-6">]</span><span·class="p"·data-group-id="4883153329-5">}</span><span·class="p">,</span><span·class="w">
362 ······························</span><span·class="p"·data-group-id="7914588039-7">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p"·data-group-id="7914588039-7">}</span><span·class="p"·data-group-id="7914588039-4">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·15d6d59859eaa8f64d22858041726f57c95e93b58bcab7a2f7cedc1506bb94db·...·]9-3">}</span><span·class="p">,</span><span·class="w">362 ······························</span><span·class="p"·data-group-id="4883153329-7">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p"·data-group-id="4883153329-7">}</span><span·class="p"·data-group-id="4883153329-4">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·65157c9b43b79aedce61e42a895402c0e3aa54389267a2adb423f74fd6be2152·...·]9-3">}</span><span·class="p">,</span><span·class="w">
363 ····</span><span·class="p"·data-group-id="7914588039-8">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·576,·SHA:·5d33f4ea6f5b61558c677130dfd4a213a603fc4340592841592692f913286740·...·]9-10">}</span><span·class="p">,</span><span·class="w">363 ····</span><span·class="p"·data-group-id="4883153329-8">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·576,·SHA:·0d9610f8b6f9853b3823ce8acb1fa1be02ba13febe27521a020ae1dcc2ce264d·...·]9-10">}</span><span·class="p">,</span><span·class="w">
364 ······························</span><span·class="p"·data-group-id="7914588039-13">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p"·data-group-id="7914588039-13">}</span><span·class="p"·data-group-id="7914588039-9">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·76,·SHA:·cc5b7b0053497c21bcffe353795751c6fb5522a06d5b879aa2d8d6f3c5af661f·...·]9-2">]</span><span·class="p">.</span></code></pre><p>Value·<code·class="inline">default</code>·states·that·the·predefined·properties·are·to·be·used.</p><p>The·following·example·shows·how·to·override·properties·in·a·scenario·with·deeply364 ······························</span><span·class="p"·data-group-id="4883153329-13">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p"·data-group-id="4883153329-13">}</span><span·class="p"·data-group-id="4883153329-9">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·76,·SHA:·f7ff68f2484a90e9d539839381af00c7baacba7f4447df7e3ee95396a30d9130·...·]9-2">]</span><span·class="p">.</span></code></pre><p>Value·<code·class="inline">default</code>·states·that·the·predefined·properties·are·to·be·used.</p><p>The·following·example·shows·how·to·override·properties·in·a·scenario·with·deeply
365 nested·groups:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">groups</span><span·class="p"·data-group-id="2587657018-1">(</span><span·class="p"·data-group-id="2587657018-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">365 nested·groups:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">groups</span><span·class="p"·data-group-id="5283233547-1">(</span><span·class="p"·data-group-id="5283233547-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
366 ···</span><span·class="p"·data-group-id="2587657018-2">[</span><span·class="p"·data-group-id="2587657018-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2587657018-4">[</span><span·class="p"·data-group-id="2587657018-4">]</sp[·...·truncated·by·diffoscope;·len:·411,·SHA:·b3181a1efe56edee4266501e9e207e996c1a5f84ba1ae24954b4cbde21720914·...·]-3">}</span><span·class="p">,</span><span·class="w">366 ···</span><span·class="p"·data-group-id="5283233547-2">[</span><span·class="p"·data-group-id="5283233547-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5283233547-4">[</span><span·class="p"·data-group-id="5283233547-4">]</sp[·...·truncated·by·diffoscope;·len:·411,·SHA:·c28d4e336ce142b1862b8a0c20b857d308cfe2bd2c44f2acd3e97008dca72e33·...·]-3">}</span><span·class="p">,</span><span·class="w">
367 ····</span><span·class="p"·data-group-id="2587657018-7">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2587657018-8">[</span><span·class="p"·data-group-id="2587657018-8">]</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·360,·SHA:·02948fd0d485a683bcc54c4824e8a3aa96d2dbec5aad8427846c1cadb79e98f6·...·]-7">}</span><span·class="p">,</span><span·class="w">367 ····</span><span·class="p"·data-group-id="5283233547-7">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5283233547-8">[</span><span·class="p"·data-group-id="5283233547-8">]</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·360,·SHA:·2ef87ccaf73e57e17be62f0eb7ede5130528b38944ecf457053b62fa3fece632·...·]-7">}</span><span·class="p">,</span><span·class="w">
368 ····</span><span·class="p"·data-group-id="2587657018-11">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2587657018-12">[</span><span·class="p"·data-group-id="2587657018-13">{</span><span·class="ss">repeat</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·520,·SHA:·104ad857f88e72dc0852f11c1a8d0b5f9eceb1bfbdc39feb295379366e45910d·...·]-2">]</span><span·class="p">.</span><span·class="w">368 ····</span><span·class="p"·data-group-id="5283233547-11">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5283233547-12">[</span><span·class="p"·data-group-id="5283233547-13">{</span><span·class="ss">repeat</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·520,·SHA:·2364638f74708bef09aaf3a9c71a4e6d5dcdc82adc1fb7bdc498deb79b54970a·...·]-2">]</span><span·class="p">.</span><span·class="w">
  
369 </span><span·class="nf">all</span><span·class="p"·data-group-id="2587657018-15">(</span><span·class="p"·data-group-id="2587657018-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">369 </span><span·class="nf">all</span><span·class="p"·data-group-id="5283233547-15">(</span><span·class="p"·data-group-id="5283233547-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
370 ···</span><span·class="p"·data-group-id="2587657018-16">[</span><span·class="p"·data-group-id="2587657018-17">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">370 ···</span><span·class="p"·data-group-id="5283233547-16">[</span><span·class="p"·data-group-id="5283233547-17">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">
371 ·····</span><span·class="p"·data-group-id="2587657018-18">[</span><span·class="p"·data-group-id="2587657018-19">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">371 ·····</span><span·class="p"·data-group-id="5283233547-18">[</span><span·class="p"·data-group-id="5283233547-19">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">
372 ·······</span><span·class="p"·data-group-id="2587657018-20">[</span><span·class="p"·data-group-id="2587657018-21">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2587657018-22">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·563,·SHA:·d48906059a80be9f6fd16cff22e813ae24aaa5d2dc9212672660dc0a7edd42ca·...·]-16">]</span><span·class="p">.</span></code></pre><p>For·ease·of·readability,·all·syntax·definitions·can·be·replaced·by·a·function372 ·······</span><span·class="p"·data-group-id="5283233547-20">[</span><span·class="p"·data-group-id="5283233547-21">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5283233547-22">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·563,·SHA:·d48950a9447835869e86c419c2f165000455e62f15102d20be087762e9da1cd0·...·]-16">]</span><span·class="p">.</span></code></pre><p>For·ease·of·readability,·all·syntax·definitions·can·be·replaced·by·a·function
373 call·whose·return·value·should·match·the·expected·syntax·case.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="6801757922-1">(</span><span·class="p"·data-group-id="6801757922-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">373 call·whose·return·value·should·match·the·expected·syntax·case.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">all</span><span·class="p"·data-group-id="0700503363-1">(</span><span·class="p"·data-group-id="0700503363-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
374 ···</span><span·class="p"·data-group-id="6801757922-2">[</span><span·class="p"·data-group-id="6801757922-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</[·...·truncated·by·diffoscope;·len:·234,·SHA:·815f3c15e09c6729a564f9543dc5a0597f7d5ef72e6f42346062451cc1acec0e·...·]-3">}</span><span·class="p">,</span><span·class="w">374 ···</span><span·class="p"·data-group-id="0700503363-2">[</span><span·class="p"·data-group-id="0700503363-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</[·...·truncated·by·diffoscope;·len:·234,·SHA:·bbab73ad73db1d8b77dc6fc2ec1e1f79d2cce3d46c2fa4d0a4d9e2e0c1cbf124·...·]-3">}</span><span·class="p">,</span><span·class="w">
375 ····</span><span·class="p"·data-group-id="6801757922-5">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·183,·SHA:·7e94d28c9dd846cb212b7d012fbaf60ba7c46a2e2edf946ee6f1c204c6b49aaf·...·]-7">)</span><span·class="p">,</span><span·class="w">375 ····</span><span·class="p"·data-group-id="0700503363-5">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·183,·SHA:·35e1c5db2fb980e2e10492472fdc78b106b2f116a47f295abca64f912021a41b·...·]-7">)</span><span·class="p">,</span><span·class="w">
376 ······························</span><span·class="p"·data-group-id="6801757922-8">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p"·data-group-id="6801757922-8">}</span><span·class="p"·data-group-id="6801757922-6">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·c519b9741b7edb332db259befe308f86581e925190405c22925f5551d54f7ca6·...·]-2">]</span><span·class="p">.</span><span·class="w">376 ······························</span><span·class="p"·data-group-id="0700503363-8">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p"·data-group-id="0700503363-8">}</span><span·class="p"·data-group-id="0700503363-6">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·d8899612f87c03e5f9983acf8303d4a74a63a7dd6f42a69a0f151d69a0e3306e·...·]-2">]</span><span·class="p">.</span><span·class="w">
377 </span><span·class="nf">test_cases</span><span·class="p"·data-group-id="6801757922-9">(</span><span·class="p"·data-group-id="6801757922-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">377 </span><span·class="nf">test_cases</span><span·class="p"·data-group-id="0700503363-9">(</span><span·class="p"·data-group-id="0700503363-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
378 ···</span><span·class="p"·data-group-id="6801757922-10">[</span><span·class="p"·data-group-id="6801757922-11">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6801757922-12">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·399,·SHA:·8139059bda3e6ac7a90568cf4369f3058e2c6287de72ccaabc1b495e7b4bdd5c·...·]-10">]</span><span·class="p">.</span><span·class="w">378 ···</span><span·class="p"·data-group-id="0700503363-10">[</span><span·class="p"·data-group-id="0700503363-11">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0700503363-12">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·399,·SHA:·0f7b0474ca1b7bd99f73ddf2a68ddddfffea7a079cdc1bcccffff221c3d3006a·...·]-10">]</span><span·class="p">.</span><span·class="w">
  
379 </span><span·class="nf">shuffle_test</span><span·class="p"·data-group-id="6801757922-14">(</span><span·class="p"·data-group-id="6801757922-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">379 </span><span·class="nf">shuffle_test</span><span·class="p"·data-group-id="0700503363-14">(</span><span·class="p"·data-group-id="0700503363-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
380 ···</span><span·class="p"·data-group-id="6801757922-15">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6801757922-16">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="6801757922-17">[·...·truncated·by·diffoscope;·len:·237,·SHA:·41b5f000e36268f3fca879b8ee795fa3354883f3027be9a804a7396e95b859e7·...·]-15">}</span><span·class="p">.</span></code></pre><p>The·described·syntax·can·also·be·used·in·test·specifications·to·change·group380 ···</span><span·class="p"·data-group-id="0700503363-15">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0700503363-16">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="0700503363-17">[·...·truncated·by·diffoscope;·len:·237,·SHA:·0935fb620ad4b8ca194f5efc57246ddbaba897a11dfdc46051a4d15ec3d46776·...·]-15">}</span><span·class="p">.</span></code></pre><p>The·described·syntax·can·also·be·used·in·test·specifications·to·change·group
381 properties·at·the·time·of·execution,·without·having·to·edit·the·test·suite.·For381 properties·at·the·time·of·execution,·without·having·to·edit·the·test·suite.·For
382 more·information,·see·section382 more·information,·see·section
383 <a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·in·section383 <a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·in·section
384 Running·Tests·and·Analyzing·Results.</p><p>As·illustrated,·properties·can·be·combined.·If,·for·example,·<code·class="inline">shuffle</code>,384 Running·Tests·and·Analyzing·Results.</p><p>As·illustrated,·properties·can·be·combined.·If,·for·example,·<code·class="inline">shuffle</code>,
385 <code·class="inline">repeat_until_any_fail</code>,·and·<code·class="inline">sequence</code>·are·all·specified,·the·test·cases·in·the385 <code·class="inline">repeat_until_any_fail</code>,·and·<code·class="inline">sequence</code>·are·all·specified,·the·test·cases·in·the
386 group·are·executed·repeatedly,·and·in·random·order,·until·a·test·case·fails.386 group·are·executed·repeatedly,·and·in·random·order,·until·a·test·case·fails.
387 Then·execution·is·immediately·stopped·and·the·remaining·cases·are·skipped.</p><p>Before·execution·of·a·group·begins,·the·configuration·function387 Then·execution·is·immediately·stopped·and·the·remaining·cases·are·skipped.</p><p>Before·execution·of·a·group·begins,·the·configuration·function
Offset 401, 21 lines modifiedOffset 401, 21 lines modified
Max diff block lines reached; 42629/111863 bytes (38.11%) of diff not shown.
599 B
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/.build
    
Offset 19, 13 lines modifiedOffset 19, 13 lines modified
19 dist/lato-latin-300-normal-YUMVEFOL.woff219 dist/lato-latin-300-normal-YUMVEFOL.woff2
20 dist/lato-latin-400-normal-W7754I4D.woff220 dist/lato-latin-400-normal-W7754I4D.woff2
21 dist/lato-latin-700-normal-2XVSBPG4.woff221 dist/lato-latin-700-normal-2XVSBPG4.woff2
22 dist/lato-latin-ext-300-normal-VPGGJKJL.woff222 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
23 dist/lato-latin-ext-400-normal-N27NCBWW.woff223 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
24 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff224 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
25 dist/remixicon-NKANDIL5.woff225 dist/remixicon-NKANDIL5.woff2
26 dist/search_data-6001A501.js26 dist/search_data-4B26B7BB.js
27 dist/sidebar_items-98758FE7.js27 dist/sidebar_items-98758FE7.js
28 index.html28 index.html
29 notes.html29 notes.html
30 search.html30 search.html
31 ssa_checks.html31 ssa_checks.html
5.84 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/beam_ssa.html
    
Offset 184, 16 lines modifiedOffset 184, 16 lines modified
  
184 </span><span·class="nc">landing_pad_block</span><span·class="p">:</span><span·class="w">184 </span><span·class="nc">landing_pad_block</span><span·class="p">:</span><span·class="w">
185 ···</span><span·class="p">@</span><span·class="ss">aggregate</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">landingpad</span><span·class="w">·</span><span·class="k">catch</span><span·class="p">,</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">tag</span><span·class="w">185 ···</span><span·class="p">@</span><span·class="ss">aggregate</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">landingpad</span><span·class="w">·</span><span·class="k">catch</span><span·class="p">,</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">tag</span><span·class="w">
186 ···</span><span·class="p">@</span><span·class="ss">catched_val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">extract</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">ssa_agg</span><span·class="p">,</span><span·class="w">·</span><span·class="err">`</span><span·class="mi">0</span><span·class="err">`</span><span·class="w">186 ···</span><span·class="p">@</span><span·class="ss">catched_val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">extract</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">ssa_agg</span><span·class="p">,</span><span·class="w">·</span><span·class="err">`</span><span·class="mi">0</span><span·class="err">`</span><span·class="w">
187 ···</span><span·class="ss">br</span><span·class="w">·</span><span·class="err">^</span><span·class="ss">common_end_of_catch</span><span·class="w">187 ···</span><span·class="ss">br</span><span·class="w">·</span><span·class="err">^</span><span·class="ss">common_end_of_catch</span><span·class="w">
  
188 </span><span·class="nc">common_end_of_catch</span><span·class="p">:</span><span·class="w">188 </span><span·class="nc">common_end_of_catch</span><span·class="p">:</span><span·class="w">
189 ··</span><span·class="p">@</span><span·class="ss">tmp</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">phi</span><span·class="w">·</span><span·class="p"·data-group-id="9126889449-1">{</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">catched_val</span><span·class="p">,</span><span·class="w">·</span><span·class="err">^</span><span·class="ss">landing_pad_block</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·e2ea7914ec538198c50f4084f8378a698b56be4f9391837cc7c6d38c4ace0278·...·]-1">}</span><span·class="p">,</span><span·class="w">189 ··</span><span·class="p">@</span><span·class="ss">tmp</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">phi</span><span·class="w">·</span><span·class="p"·data-group-id="4977628918-1">{</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">catched_val</span><span·class="p">,</span><span·class="w">·</span><span·class="err">^</span><span·class="ss">landing_pad_block</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·e2d711fc7d3611247f159133b7324ff2e838c9d02866bf5543925d030307c620·...·]-1">}</span><span·class="p">,</span><span·class="w">
190 ·············</span><span·class="p"·data-group-id="9126889449-2">{</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">successful_result</span><span·class="p">,</span><span·class="w">·</span><span·class="err">^</span><span·class="ss">protected_blockN</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·3be058db1794705adcf24f02f8263377e6ccdbab851f412c86f0bf25dcec15ea·...·]-2">}</span><span·class="w">190 ·············</span><span·class="p"·data-group-id="4977628918-2">{</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">successful_result</span><span·class="p">,</span><span·class="w">·</span><span·class="err">^</span><span·class="ss">protected_blockN</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·8ff3a98c1635a6e4018dadc6a4a3b140a3a6bca44c4c353548473ad4285164be·...·]-2">}</span><span·class="w">
191 ··</span><span·class="p">@</span><span·class="ss">result_of_catch_expr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">catch_end</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">tmp</span></code></pre><p>Just·as·for·a·<code·class="inline">try</code>-<code·class="inline">catch</code>·expression·all·code·that·can·cause·an191 ··</span><span·class="p">@</span><span·class="ss">result_of_catch_expr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">catch_end</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p">@</span><span·class="ss">tmp</span></code></pre><p>Just·as·for·a·<code·class="inline">try</code>-<code·class="inline">catch</code>·expression·all·code·that·can·cause·an
192 exception·in·one·of·the·protected·blocks·must·have·explicit·control192 exception·in·one·of·the·protected·blocks·must·have·explicit·control
193 flow·edges·to·the·landing·pad·block.</p><h2·id="exception-re-issuing"·class="section-heading">193 flow·edges·to·the·landing·pad·block.</p><h2·id="exception-re-issuing"·class="section-heading">
194 ··<a·href="#exception-re-issuing"·class="hover-link">194 ··<a·href="#exception-re-issuing"·class="hover-link">
195 ····<i·class="ri-link-m"·aria-hidden="true"></i>195 ····<i·class="ri-link-m"·aria-hidden="true"></i>
196 ··</a>196 ··</a>
197 ··<span·class="text">Exception·Re-issuing</span>197 ··<span·class="text">Exception·Re-issuing</span>
Offset 230, 15 lines modifiedOffset 230, 15 lines modified
230 proven·to·always·succeed·or·fail.</p></li></ul><h2·id="variable-naming"·class="section-heading">230 proven·to·always·succeed·or·fail.</p></li></ul><h2·id="variable-naming"·class="section-heading">
231 ··<a·href="#variable-naming"·class="hover-link">231 ··<a·href="#variable-naming"·class="hover-link">
232 ····<i·class="ri-link-m"·aria-hidden="true"></i>232 ····<i·class="ri-link-m"·aria-hidden="true"></i>
233 ··</a>233 ··</a>
234 ··<span·class="text">Variable·Naming</span>234 ··<span·class="text">Variable·Naming</span>
235 </h2>235 </h2>
236 <p>A·variable·name·in·BEAM·SSA·is·either·an·atom·or·a·non-negative236 <p>A·variable·name·in·BEAM·SSA·is·either·an·atom·or·a·non-negative
237 integer:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom</span><span·class="p"·data-group-id="0104118335-1">(</span><span·class="p"·data-group-id="0104118335-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="0104118335-2">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·19410c488c3828dda68c058d45b357737132e9266eebfaf07a6ca4be35bbfc1c·...·]-2">)</span></code></pre><p>In·order·to·generate·fresh·unused·variable·names,·all·compiler237 integer:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom</span><span·class="p"·data-group-id="0211383658-1">(</span><span·class="p"·data-group-id="0211383658-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="0211383658-2">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·ec4cc27cbfe88bb4a541ef1560169795002133f782299a743b4eb9df726e1cfb·...·]-2">)</span></code></pre><p>In·order·to·generate·fresh·unused·variable·names,·all·compiler
238 transforms·maintain·a·counter,·the·<code·class="inline">cnt</code>-field·in·the·<code·class="inline">b_function</code>·and238 transforms·maintain·a·counter,·the·<code·class="inline">cnt</code>-field·in·the·<code·class="inline">b_function</code>·and
239 <code·class="inline">opt_st</code>·records,·which·is·incremented·each·time·a·new·variable·or239 <code·class="inline">opt_st</code>·records,·which·is·incremented·each·time·a·new·variable·or
240 label·is·created.·In·the·following·description·the·value·of·the240 label·is·created.·In·the·following·description·the·value·of·the
241 <code·class="inline">cnt</code>-field·is·called·<code·class="inline">Cnt</code>.·The·<code·class="inline">Cnt</code>·value·is·guaranteed·to·never241 <code·class="inline">cnt</code>-field·is·called·<code·class="inline">Cnt</code>.·The·<code·class="inline">Cnt</code>·value·is·guaranteed·to·never
242 clash·with·a·previously·defined·variable·name.·Therefore,·value·of242 clash·with·a·previously·defined·variable·name.·Therefore,·value·of
243 <code·class="inline">Cnt</code>·can·directly·be·used·as·a·variable·name·in·the·SSA·passes.</p><p>Note·that·the·rules·were·more·complicated·before·Erlang/OTP·27,·because243 <code·class="inline">Cnt</code>·can·directly·be·used·as·a·variable·name·in·the·SSA·passes.</p><p>Note·that·the·rules·were·more·complicated·before·Erlang/OTP·27,·because
244 the·<code·class="inline">Cnt</code>·value·could·clash·with·other·variables.</p>244 the·<code·class="inline">Cnt</code>·value·could·clash·with·other·variables.</p>
15.3 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/compile.html
    
Offset 149, 15 lines modifiedOffset 149, 15 lines modified
149 ····<i·class="ri-link-m"·aria-hidden="true"></i>149 ····<i·class="ri-link-m"·aria-hidden="true"></i>
150 ··</a>150 ··</a>
151 ··<span·class="text">Order·of·Compiler·Options</span>151 ··<span·class="text">Order·of·Compiler·Options</span>
152 </h2>152 </h2>
153 <p>Options·given·in·the·<code·class="inline">compile()</code>·attribute·in·the·source·code·take153 <p>Options·given·in·the·<code·class="inline">compile()</code>·attribute·in·the·source·code·take
154 precedence·over·options·given·to·the·compiler,·which·in·turn·take154 precedence·over·options·given·to·the·compiler,·which·in·turn·take
155 precedence·over·options·given·in·the·environment.</p><p>A·later·compiler·option·takes·precedence·over·an·earlier·one·in·the155 precedence·over·options·given·in·the·environment.</p><p>A·later·compiler·option·takes·precedence·over·an·earlier·one·in·the
156 option·list.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="8848663874-1">(</span><span·class="ss">something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8848663874-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p">,</span><span·class="ss">warn_missing_spe[·...·truncated·by·diffoscope;·len:·102,·SHA:·492fe5498f0d911b30693a2d85d798ab56f5bf1aa2d0e4c23ab7082f4aacf861·...·]-1">)</span><span·class="p">.</span></code></pre><p>Warnings·will·be·emitted·for·functions·without·specifications,·unless156 option·list.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="3265305385-1">(</span><span·class="ss">something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3265305385-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p">,</span><span·class="ss">warn_missing_spe[·...·truncated·by·diffoscope;·len:·102,·SHA:·524d277770f844f0983ec65371d73b1cfa848682c764d0891c368caffb1165b1·...·]-1">)</span><span·class="p">.</span></code></pre><p>Warnings·will·be·emitted·for·functions·without·specifications,·unless
157 the·source·code·for·module·<code·class="inline">something</code>·contains·a·<code·class="inline">compile(nowarn_missing_spec)</code>157 the·source·code·for·module·<code·class="inline">something</code>·contains·a·<code·class="inline">compile(nowarn_missing_spec)</code>
158 attribute.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>In·Erlang/OTP·26·and·earlier,·the·option·order·was·the·opposite·of·what158 attribute.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>In·Erlang/OTP·26·and·earlier,·the·option·order·was·the·opposite·of·what
159 is·described·here.</p></section><h2·id="module-inlining"·class="section-heading">159 is·described·here.</p></section><h2·id="module-inlining"·class="section-heading">
160 ··<a·href="#module-inlining"·class="hover-link">160 ··<a·href="#module-inlining"·class="hover-link">
161 ····<i·class="ri-link-m"·aria-hidden="true"></i>161 ····<i·class="ri-link-m"·aria-hidden="true"></i>
162 ··</a>162 ··</a>
163 ··<span·class="text">Inlining</span>163 ··<span·class="text">Inlining</span>
Offset 173, 22 lines modifiedOffset 173, 22 lines modified
173 all·calls·to·the·function·are·inlined.</p><p>Inlining·does·not·necessarily·improve·running·time.·For·example,·inlining·can173 all·calls·to·the·function·are·inlined.</p><p>Inlining·does·not·necessarily·improve·running·time.·For·example,·inlining·can
174 increase·Beam·stack·use,·which·probably·is·detrimental·to·performance·for174 increase·Beam·stack·use,·which·probably·is·detrimental·to·performance·for
175 recursive·functions.</p><p>Inlining·is·never·default.·It·must·be·explicitly·enabled·with·a·compiler·option175 recursive·functions.</p><p>Inlining·is·never·default.·It·must·be·explicitly·enabled·with·a·compiler·option
176 or·a·<code·class="inline">-compile()</code>·attribute·in·the·source·module.</p><p>To·enable·inlining,·either·use·the·option·<code·class="inline">inline</code>·to·let·the·compiler·decide176 or·a·<code·class="inline">-compile()</code>·attribute·in·the·source·module.</p><p>To·enable·inlining,·either·use·the·option·<code·class="inline">inline</code>·to·let·the·compiler·decide
177 which·functions·to·inline,·or·<code·class="inline">{inline,[{Name,Arity},...]}</code>·to·have·the·compiler177 which·functions·to·inline,·or·<code·class="inline">{inline,[{Name,Arity},...]}</code>·to·have·the·compiler
178 inline·all·calls·to·the·given·functions.·If·the·option·is·given·inside·a178 inline·all·calls·to·the·given·functions.·If·the·option·is·given·inside·a
179 <code·class="inline">compile</code>·directive·in·an·Erlang·module,·<code·class="inline">{Name,Arity}</code>·can·be·written·as179 <code·class="inline">compile</code>·directive·in·an·Erlang·module,·<code·class="inline">{Name,Arity}</code>·can·be·written·as
180 <code·class="inline">Name/Arity</code>.</p><p>Example·of·explicit·inlining:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="7497379637-1">(</span><span·class="p"·data-group-id="7497379637-2">{</span><span·class="ss">inline</span><span·class="p">,</span><span·class="p"·data-group-id="7497379637-3">[</span><span·class="ss">pi</span><span·class="p">/</span><span·class="mi">0</span[·...·truncated·by·diffoscope;·len:·148,·SHA:·1fecb97363b7b2794034bccb9c582c35c304d3fba33d06b078cc09ad2162d032·...·]-1">)</span><span·class="p">.</span><span·class="w">180 <code·class="inline">Name/Arity</code>.</p><p>Example·of·explicit·inlining:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="9321088911-1">(</span><span·class="p"·data-group-id="9321088911-2">{</span><span·class="ss">inline</span><span·class="p">,</span><span·class="p"·data-group-id="9321088911-3">[</span><span·class="ss">pi</span><span·class="p">/</span><span·class="mi">0</span[·...·truncated·by·diffoscope;·len:·148,·SHA:·f8f925d1d41c816bc8d80d9b5f506921e368784444892838bac16ceefe536c5e·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
181 </span><span·class="nf">pi</span><span·class="p"·data-group-id="7497379637-4">(</span><span·class="p"·data-group-id="7497379637-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mf">3.1416</span><span·class="p">.</span></code></pre><p>Example·of·implicit·inlining:</p><pre><code·class="text">-compile(inline).</code></pre><p>The·option·<code·class="inline">{inline_size,Size}</code>·controls·how·large·functions·that·are·allowed·to181 </span><span·class="nf">pi</span><span·class="p"·data-group-id="9321088911-4">(</span><span·class="p"·data-group-id="9321088911-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mf">3.1416</span><span·class="p">.</span></code></pre><p>Example·of·implicit·inlining:</p><pre><code·class="text">-compile(inline).</code></pre><p>The·option·<code·class="inline">{inline_size,Size}</code>·controls·how·large·functions·that·are·allowed·to
182 be·inlined.·Default·is·<code·class="inline">24</code>,·which·keeps·the·size·of·the·inlined·code·roughly182 be·inlined.·Default·is·<code·class="inline">24</code>,·which·keeps·the·size·of·the·inlined·code·roughly
183 the·same·as·the·un-inlined·version·(only·relatively·small·functions·are183 the·same·as·the·un-inlined·version·(only·relatively·small·functions·are
184 inlined).</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Aggressive·inlining·-·will·increase·code·size.</span><span·class="w">184 inlined).</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Aggressive·inlining·-·will·increase·code·size.</span><span·class="w">
185 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="9790906543-1">(</span><span·class="ss">inline</span><span·class="p"·data-group-id="9790906543-1">)</span><span·class="p">.</span><span·class="w">185 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="9453694304-1">(</span><span·class="ss">inline</span><span·class="p"·data-group-id="9453694304-1">)</span><span·class="p">.</span><span·class="w">
186 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="9790906543-2">(</span><span·class="p"·data-group-id="9790906543-3">{</span><span·class="ss">inline_size</span><span·class="p">,</span><span·class="mi">100</span><span·class="p"·data-group-id="9790906543-3">}</span><span·class="p"·data-group-id="9790906543-2">)</span><span·class="p">.</span></code></pre><h2·id="module-inlining-of-list-functions"·class="section-heading">186 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="9453694304-2">(</span><span·class="p"·data-group-id="9453694304-3">{</span><span·class="ss">inline_size</span><span·class="p">,</span><span·class="mi">100</span><span·class="p"·data-group-id="9453694304-3">}</span><span·class="p"·data-group-id="9453694304-2">)</span><span·class="p">.</span></code></pre><h2·id="module-inlining-of-list-functions"·class="section-heading">
187 ··<a·href="#module-inlining-of-list-functions"·class="hover-link">187 ··<a·href="#module-inlining-of-list-functions"·class="hover-link">
188 ····<i·class="ri-link-m"·aria-hidden="true"></i>188 ····<i·class="ri-link-m"·aria-hidden="true"></i>
189 ··</a>189 ··</a>
190 ··<span·class="text">Inlining·of·List·Functions</span>190 ··<span·class="text">Inlining·of·List·Functions</span>
191 </h2>191 </h2>
192 <p>The·compiler·can·also·inline·various·list·manipulation·functions·from·the·module192 <p>The·compiler·can·also·inline·various·list·manipulation·functions·from·the·module
193 <code·class="inline">list</code>·in·STDLIB.</p><p>This·feature·must·be·explicitly·enabled·with·a·compiler·option·or·a·<code·class="inline">-compile()</code>193 <code·class="inline">list</code>·in·STDLIB.</p><p>This·feature·must·be·explicitly·enabled·with·a·compiler·option·or·a·<code·class="inline">-compile()</code>
Offset 900, 18 lines modifiedOffset 900, 18 lines modified
900 features.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·option·has·no·effect·when·used·in·a·<code·class="inline">-compile(..)</code>·attribute.·Instead,900 features.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·option·has·no·effect·when·used·in·a·<code·class="inline">-compile(..)</code>·attribute.·Instead,
901 the·<code·class="inline">-feature(..)</code>·directive·(described·next)·should·be·used.</p><p><a·href=""·id="feature-directive"></a>·A·feature·can·also·be·enabled·(disabled)·using901 the·<code·class="inline">-feature(..)</code>·directive·(described·next)·should·be·used.</p><p><a·href=""·id="feature-directive"></a>·A·feature·can·also·be·enabled·(disabled)·using
902 the·<code·class="inline">-feature(Feature,·enable·|·disable).</code>·module·directive.·Note·that·this902 the·<code·class="inline">-feature(Feature,·enable·|·disable).</code>·module·directive.·Note·that·this
903 directive·can·only·be·present·in·a·prefix·of·the·file,·before·exports·and903 directive·can·only·be·present·in·a·prefix·of·the·file,·before·exports·and
904 function·definitions.·This·is·the·preferred·method·of·enabling·and·disabling904 function·definitions.·This·is·the·preferred·method·of·enabling·and·disabling
905 features,·since·it·is·a·local·property·of·a·module.</p></section></li><li><p><strong><code·class="inline">makedep</code></strong>·-·Produces·a·Makefile·rule·to·track·headers·dependencies.·No905 features,·since·it·is·a·local·property·of·a·module.</p></section></li><li><p><strong><code·class="inline">makedep</code></strong>·-·Produces·a·Makefile·rule·to·track·headers·dependencies.·No
906 object·file·is·produced.</p><p>By·default,·this·rule·is·written·to·<code·class="inline">&lt;File&gt;.Pbeam</code>.·However,·if·option906 object·file·is·produced.</p><p>By·default,·this·rule·is·written·to·<code·class="inline">&lt;File&gt;.Pbeam</code>.·However,·if·option
907 <code·class="inline">binary</code>·is·set,·nothing·is·written·and·the·rule·is·returned·in·<code·class="inline">Binary</code>.</p><p>The·output·will·be·encoded·in·UTF-8.</p><p>For·example,·if·you·have·the·following·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1240538154-1">(</span><span·class="ss">module</span><span·class="p"·data-group-id="1240538154-1">)</span><span·class="p">.</span><span·class="w">907 <code·class="inline">binary</code>·is·set,·nothing·is·written·and·the·rule·is·returned·in·<code·class="inline">Binary</code>.</p><p>The·output·will·be·encoded·in·UTF-8.</p><p>For·example,·if·you·have·the·following·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1811675543-1">(</span><span·class="ss">module</span><span·class="p"·data-group-id="1811675543-1">)</span><span·class="p">.</span><span·class="w">
908 </span><span·class="w">908 </span><span·class="w">
909 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1240538154-2">(</span><span·class="s">&quot;eunit/include/eunit.hrl&quot;</span><span·class="p"·data-group-id="1240538154-2">)</span><span·class="p">.</span><span·class="w">909 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1811675543-2">(</span><span·class="s">&quot;eunit/include/eunit.hrl&quot;</span><span·class="p"·data-group-id="1811675543-2">)</span><span·class="p">.</span><span·class="w">
910 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="1240538154-3">(</span><span·class="s">&quot;header.hrl&quot;</span><span·class="p"·data-group-id="1240538154-3">)</span><span·class="p">.</span></code></pre><p>The·Makefile·rule·generated·by·this·option·looks·as·follows:</p><pre><code·class="text">module.beam:·module.erl·\910 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="1811675543-3">(</span><span·class="s">&quot;header.hrl&quot;</span><span·class="p"·data-group-id="1811675543-3">)</span><span·class="p">.</span></code></pre><p>The·Makefile·rule·generated·by·this·option·looks·as·follows:</p><pre><code·class="text">module.beam:·module.erl·\
911 ··/usr/local/lib/erlang/lib/eunit/include/eunit.hrl·\911 ··/usr/local/lib/erlang/lib/eunit/include/eunit.hrl·\
912 ··header.hrl</code></pre></li><li><p><strong><code·class="inline">makedep_side_effect</code></strong>·-·The·dependencies·are·created·as·a·side·effect·to912 ··header.hrl</code></pre></li><li><p><strong><code·class="inline">makedep_side_effect</code></strong>·-·The·dependencies·are·created·as·a·side·effect·to
913 the·normal·compilation·process.·This·means·that·the·object·file·will·also·be913 the·normal·compilation·process.·This·means·that·the·object·file·will·also·be
914 produced.·This·option·override·the·<code·class="inline">makedep</code>·option.</p></li><li><p><strong><code·class="inline">{makedep_output,·Output}</code></strong>·-·Writes·generated·rules·to·<code·class="inline">Output</code>·instead·of914 produced.·This·option·override·the·<code·class="inline">makedep</code>·option.</p></li><li><p><strong><code·class="inline">{makedep_output,·Output}</code></strong>·-·Writes·generated·rules·to·<code·class="inline">Output</code>·instead·of
915 the·default·<code·class="inline">&lt;File&gt;.Pbeam</code>.·<code·class="inline">Output</code>·can·be·a·filename·or·an·<code·class="inline">io_device()</code>.·To915 the·default·<code·class="inline">&lt;File&gt;.Pbeam</code>.·<code·class="inline">Output</code>·can·be·a·filename·or·an·<code·class="inline">io_device()</code>.·To
916 write·to·stdout,·use·<code·class="inline">standard_io</code>.·However,·if·<code·class="inline">binary</code>·is·set,·nothing·is916 write·to·stdout,·use·<code·class="inline">standard_io</code>.·However,·if·<code·class="inline">binary</code>·is·set,·nothing·is
917 written·to·<code·class="inline">Output</code>·and·the·result·is·returned·to·the·caller·with917 written·to·<code·class="inline">Output</code>·and·the·result·is·returned·to·the·caller·with
Offset 969, 15 lines modifiedOffset 969, 15 lines modified
969 that·verification·(there·will·not·even·be·a·warning·if·there·is·a969 that·verification·(there·will·not·even·be·a·warning·if·there·is·a
970 mismatch).</p></li><li><p><strong><code·class="inline">{no_auto_import,[{F,A},·...]}</code></strong>·-·Makes·the·function·<code·class="inline">F/A</code>·no·longer·being970 mismatch).</p></li><li><p><strong><code·class="inline">{no_auto_import,[{F,A},·...]}</code></strong>·-·Makes·the·function·<code·class="inline">F/A</code>·no·longer·being
971 auto-imported·from·the·<code·class="inline">erlang</code>·module,·which·resolves·BIF·name·clashes.·This971 auto-imported·from·the·<code·class="inline">erlang</code>·module,·which·resolves·BIF·name·clashes.·This
972 option·must·be·used·to·resolve·name·clashes·with·auto-imported·BIFs·that·existed972 option·must·be·used·to·resolve·name·clashes·with·auto-imported·BIFs·that·existed
973 before·Erlang/OTP·R14A··when·calling·a·local·function·with·the·same·name973 before·Erlang/OTP·R14A··when·calling·a·local·function·with·the·same·name
974 as·an·auto-imported·BIF·without·module·prefix.</p><p>If·the·BIF·is·to·be·called,·use·the·<code·class="inline">erlang</code>·module·prefix974 as·an·auto-imported·BIF·without·module·prefix.</p><p>If·the·BIF·is·to·be·called,·use·the·<code·class="inline">erlang</code>·module·prefix
975 in·the·call,·not·<code·class="inline">{no_auto_import,[{F,A},·...]}</code>.</p><p>If·this·option·is·written·in·the·source·code,·as·a·<code·class="inline">-compile</code>·directive,·the975 in·the·call,·not·<code·class="inline">{no_auto_import,[{F,A},·...]}</code>.</p><p>If·this·option·is·written·in·the·source·code,·as·a·<code·class="inline">-compile</code>·directive,·the
976 syntax·<code·class="inline">F/A</code>·can·be·used·instead·of·<code·class="inline">{F,A}</code>.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="5738095317-1">(</span><span·class="p"·data-group-id="5738095317-2">{</span><span·class="ss">no_auto_import</span><span·class="p">,</span><span·class="p"·data-group-id="5738095317-3">[</span><span·class="ss">error</span><span·class="p">/</span><span·class="[·...·truncated·by·diffoscope;·len:·159,·SHA:·d467ceb3136cb034dcda1dd7473d01dfeee8337bb8df959c5551da0766dd6194·...·]-1">)</span><span·class="p">.</span></code></pre></li><li><p><strong><code·class="inline">no_auto_import</code></strong>·-·Do·not·auto-import·any·functions·from·<code·class="inline">erlang</code>·module.</p></li><li><p><strong><code·class="inline">no_line_info</code></strong>·-·Omits·line·number·information·to·produce·a·slightly976 syntax·<code·class="inline">F/A</code>·can·be·used·instead·of·<code·class="inline">{F,A}</code>.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="0350828482-1">(</span><span·class="p"·data-group-id="0350828482-2">{</span><span·class="ss">no_auto_import</span><span·class="p">,</span><span·class="p"·data-group-id="0350828482-3">[</span><span·class="ss">error</span><span·class="p">/</span><span·class="[·...·truncated·by·diffoscope;·len:·159,·SHA:·c8de207b065a7916e724356e6821c15c27feb8c30dcd72806d4a5300441a4afc·...·]-1">)</span><span·class="p">.</span></code></pre></li><li><p><strong><code·class="inline">no_auto_import</code></strong>·-·Do·not·auto-import·any·functions·from·<code·class="inline">erlang</code>·module.</p></li><li><p><strong><code·class="inline">no_line_info</code></strong>·-·Omits·line·number·information·to·produce·a·slightly
977 smaller·output·file.</p></li><li><p><strong><code·class="inline">no_lint</code></strong>·-·Skips·the·pass·that·checks·for·errors·and·warnings.·Only977 smaller·output·file.</p></li><li><p><strong><code·class="inline">no_lint</code></strong>·-·Skips·the·pass·that·checks·for·errors·and·warnings.·Only
978 applicable·together·with·the·<code·class="inline">from_abstr</code>·option.·This·is·mainly·for978 applicable·together·with·the·<code·class="inline">from_abstr</code>·option.·This·is·mainly·for
979 implementations·of·other·languages·on·top·of·Erlang,·which·have·already·done979 implementations·of·other·languages·on·top·of·Erlang,·which·have·already·done
980 their·own·checks·to·guarantee·correctness·of·the·code.</p><p>Caveat:·When·this·option·is·used,·there·are·no·guarantees·that·the·code·output980 their·own·checks·to·guarantee·correctness·of·the·code.</p><p>Caveat:·When·this·option·is·used,·there·are·no·guarantees·that·the·code·output
981 by·the·compiler·is·correct·and·safe·to·use.·The·responsibility·for·correctness981 by·the·compiler·is·correct·and·safe·to·use.·The·responsibility·for·correctness
982 lies·on·the·code·or·person·generating·the·abstract·format.·If·the·code982 lies·on·the·code·or·person·generating·the·abstract·format.·If·the·code
983 contains·errors,·the·compiler·may·crash·or·produce·unsafe·code.</p></li><li><p><strong><code·class="inline">{extra_chunks,·[{binary(),·binary()}]}</code></strong>·-·Pass·extra·chunks·to·be·stored983 contains·errors,·the·compiler·may·crash·or·produce·unsafe·code.</p></li><li><p><strong><code·class="inline">{extra_chunks,·[{binary(),·binary()}]}</code></strong>·-·Pass·extra·chunks·to·be·stored
172 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/compiler.epub
2.67 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·181718·bytes,·number·of·entries:·161 Zip·file·size:·181719·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:47·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:04·mimetype
3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·10:47·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·09:04·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····12180·bx·defN·25-Feb-13·10:47·OEBPS/ssa_checks.xhtml4 ?rw-r--r--··6.1·unx····12180·bx·defN·25-Feb-13·09:04·OEBPS/ssa_checks.xhtml
5 ?rw-r--r--··6.1·unx···250530·bx·defN·25-Feb-13·10:47·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx···250530·bx·defN·25-Feb-13·09:04·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1421·bx·defN·25-Feb-13·10:47·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1421·bx·defN·25-Feb-13·09:04·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:47·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:04·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:47·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:04·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx·····2064·bx·defN·25-Feb-13·10:47·OEBPS/content.opf9 ?rw-r--r--··6.1·unx·····2064·bx·defN·25-Feb-13·09:04·OEBPS/content.opf
10 ?rw-r--r--··6.1·unx····78223·bx·defN·25-Feb-13·10:47·OEBPS/compile.xhtml10 ?rw-r--r--··6.1·unx····78223·bx·defN·25-Feb-13·09:04·OEBPS/compile.xhtml
11 ?rw-r--r--··6.1·unx····23045·bx·defN·25-Feb-13·10:47·OEBPS/cerl_trees.xhtml11 ?rw-r--r--··6.1·unx····23045·bx·defN·25-Feb-13·09:04·OEBPS/cerl_trees.xhtml
12 ?rw-r--r--··6.1·unx····22790·bx·defN·25-Feb-13·10:47·OEBPS/cerl_clauses.xhtml12 ?rw-r--r--··6.1·unx····22790·bx·defN·25-Feb-13·09:04·OEBPS/cerl_clauses.xhtml
13 ?rw-r--r--··6.1·unx···444582·bx·defN·25-Feb-13·10:47·OEBPS/cerl.xhtml13 ?rw-r--r--··6.1·unx···444582·bx·defN·25-Feb-13·09:04·OEBPS/cerl.xhtml
14 ?rw-r--r--··6.1·unx····18166·bx·defN·25-Feb-13·10:47·OEBPS/beam_ssa.xhtml14 ?rw-r--r--··6.1·unx····18166·bx·defN·25-Feb-13·09:04·OEBPS/beam_ssa.xhtml
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:47·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:04·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:47·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:04·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:47·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:04·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·875053·bytes·uncompressed,·178954·bytes·compressed:··79.5%18 16·files,·875053·bytes·uncompressed,·178955·bytes·compressed:··79.5%
85.1 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:47:04,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:04:12,·uncompressed·size·20,·method=store
15.8 KB
OEBPS/ssa_checks.xhtml
Max HTML report size reached
45.7 KB
OEBPS/notes.xhtml
Max HTML report size reached
1.22 KB
OEBPS/content.opf
1.19 KB
OEBPS/content.opf
Max HTML report size reached
15.2 KB
OEBPS/compile.xhtml
Max HTML report size reached
5.74 KB
OEBPS/beam_ssa.xhtml
Max HTML report size reached
45.9 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/notes.html
    
Offset 145, 18 lines modifiedOffset 145, 18 lines modified
145 </h2>145 </h2>
146 <h3·id="fixed-bugs-and-malfunctions-1"·class="section-heading">146 <h3·id="fixed-bugs-and-malfunctions-1"·class="section-heading">
147 ··<a·href="#fixed-bugs-and-malfunctions-1"·class="hover-link">147 ··<a·href="#fixed-bugs-and-malfunctions-1"·class="hover-link">
148 ····<i·class="ri-link-m"·aria-hidden="true"></i>148 ····<i·class="ri-link-m"·aria-hidden="true"></i>
149 ··</a>149 ··</a>
150 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>150 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
151 </h3>151 </h3>
152 <ul><li><p>Fixed·a·crash·in·the·common·sub-expression·elimination·pass.</p><p>Own·Id:·OTP-19243·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8818"·title="">GH-8818</a>,·<a·href="https://github.com/erlang/otp/pull/8838"·title="">PR-8838</a></p></li><li><p>Fixed·a·bug·where·bogus·code·was·generated·for·consecutive·calls·to·<code·class="inline">erlang:setelement/2</code>,·potentially·crashing·the·runtime·system.</p><p>Own·Id:·OTP-19270·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8783"·title="">GH-8783</a>,·<a·href="https://github.com/erlang/otp/pull/8898"·title="">PR-8898</a></p></li><li><p>When·the·<code·class="inline">line_coverage</code>·option·was·used,·exceptions·could·show·the·wrong·line·for·where·the·exception·was·raised.</p><p>Own·Id:·OTP-19282·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8907"·title="">PR-8907</a></p></li><li><p>The·<code·class="inline">line_coverage</code>·option·would·be·ignored·if·given·in·a·<code·class="inline">compile()</code>·attribute·within·a·module.</p><p>Own·Id:·OTP-19309·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8942"·title="">GH-8942</a>,·<a·href="https://github.com/erlang/otp/pull/8970"·title="">PR-8970</a></p></li><li><p>A·segment·matching·a·float·in·a·binary·generator·will·now·skip·any·invalid·float·(such·as·a·NaN)·and·continue·matching·the·rest·of·the·binary.·Before·this·correction,·the·comprehension·would·stop·as·soon·as·an·invalid·float·was·encountered.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">BadFloat</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5166074518-1">&lt;&lt;</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">64</span><span·class="p"·data-group-id="5166074518-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">152 <ul><li><p>Fixed·a·crash·in·the·common·sub-expression·elimination·pass.</p><p>Own·Id:·OTP-19243·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8818"·title="">GH-8818</a>,·<a·href="https://github.com/erlang/otp/pull/8838"·title="">PR-8838</a></p></li><li><p>Fixed·a·bug·where·bogus·code·was·generated·for·consecutive·calls·to·<code·class="inline">erlang:setelement/2</code>,·potentially·crashing·the·runtime·system.</p><p>Own·Id:·OTP-19270·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8783"·title="">GH-8783</a>,·<a·href="https://github.com/erlang/otp/pull/8898"·title="">PR-8898</a></p></li><li><p>When·the·<code·class="inline">line_coverage</code>·option·was·used,·exceptions·could·show·the·wrong·line·for·where·the·exception·was·raised.</p><p>Own·Id:·OTP-19282·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8907"·title="">PR-8907</a></p></li><li><p>The·<code·class="inline">line_coverage</code>·option·would·be·ignored·if·given·in·a·<code·class="inline">compile()</code>·attribute·within·a·module.</p><p>Own·Id:·OTP-19309·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8942"·title="">GH-8942</a>,·<a·href="https://github.com/erlang/otp/pull/8970"·title="">PR-8970</a></p></li><li><p>A·segment·matching·a·float·in·a·binary·generator·will·now·skip·any·invalid·float·(such·as·a·NaN)·and·continue·matching·the·rest·of·the·binary.·Before·this·correction,·the·comprehension·would·stop·as·soon·as·an·invalid·float·was·encountered.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">BadFloat</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3283254331-1">&lt;&lt;</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">64</span><span·class="p"·data-group-id="3283254331-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p"·data-group-id="5166074518-2">&lt;&lt;</span><span·class="s">&quot;ÿÿÿÿÿÿÿÿ&quot;</span><span·class="p"·data-group-id="5166074518-2">&gt;&gt;</span><span·class="gp·unselectable">153 </span><span·class="p"·data-group-id="3283254331-2">&lt;&lt;</span><span·class="s">&quot;ÿÿÿÿÿÿÿÿ&quot;</span><span·class="p"·data-group-id="3283254331-2">&gt;&gt;</span><span·class="gp·unselectable">
154 2&gt;·</span><span·class="p"·data-group-id="5166074518-3">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="p"·data-group-id="5166074518-4">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="mi">64</span><sp[·...·truncated·by·diffoscope;·len:·641,·SHA:·b736190022b3f7f6d0cfcc06ed1179c9968cc88124b505d3579e7a8959253b4b·...·]-3">]</span><span·class="p">.</span><span·class="w">154 2&gt;·</span><span·class="p"·data-group-id="3283254331-3">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="p"·data-group-id="3283254331-4">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="mi">64</span><sp[·...·truncated·by·diffoscope;·len:·641,·SHA:·b85fdc1972e55e680cbd744478943c01772c867d8149858b36ac428f27bc0d96·...·]-3">]</span><span·class="p">.</span><span·class="w">
155 </span><span·class="p"·data-group-id="5166074518-6">[</span><span·class="mf">0.0</span><span·class="p">,</span><span·class="mf">42.0</span><span·class="p"·data-group-id="5166074518-6">]</span></code></pre><p>Own·Id:·OTP-19331·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8978"·title="">PR-8978</a></p></li></ul><h2·id="compiler-8-5-3"·class="section-heading">155 </span><span·class="p"·data-group-id="3283254331-6">[</span><span·class="mf">0.0</span><span·class="p">,</span><span·class="mf">42.0</span><span·class="p"·data-group-id="3283254331-6">]</span></code></pre><p>Own·Id:·OTP-19331·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8978"·title="">PR-8978</a></p></li></ul><h2·id="compiler-8-5-3"·class="section-heading">
156 ··<a·href="#compiler-8-5-3"·class="hover-link">156 ··<a·href="#compiler-8-5-3"·class="hover-link">
157 ····<i·class="ri-link-m"·aria-hidden="true"></i>157 ····<i·class="ri-link-m"·aria-hidden="true"></i>
158 ··</a>158 ··</a>
159 ··<span·class="text">Compiler·8.5.3</span>159 ··<span·class="text">Compiler·8.5.3</span>
160 </h2>160 </h2>
161 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">161 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">
162 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">162 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">
Offset 196, 61 lines modifiedOffset 196, 61 lines modified
196 </h2>196 </h2>
197 <h3·id="fixed-bugs-and-malfunctions-5"·class="section-heading">197 <h3·id="fixed-bugs-and-malfunctions-5"·class="section-heading">
198 ··<a·href="#fixed-bugs-and-malfunctions-5"·class="hover-link">198 ··<a·href="#fixed-bugs-and-malfunctions-5"·class="hover-link">
199 ····<i·class="ri-link-m"·aria-hidden="true"></i>199 ····<i·class="ri-link-m"·aria-hidden="true"></i>
200 ··</a>200 ··</a>
201 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>201 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
202 </h3>202 </h3>
203 <ul><li><p>Generators·for·binary·comprehensions·could·be·evaluated·before·it·was·known·that·they·would·be·needed.·That·could·result·in·a·binary·comprehensions·failing·if·a·generator·that·should·not·be·evaluated·until·later·failed.</p><p>As·an·example,·consider·this·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1125811649-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="1125811649-1">)</span><span·class="p">.</span><span·class="w">203 <ul><li><p>Generators·for·binary·comprehensions·could·be·evaluated·before·it·was·known·that·they·would·be·needed.·That·could·result·in·a·binary·comprehensions·failing·if·a·generator·that·should·not·be·evaluated·until·later·failed.</p><p>As·an·example,·consider·this·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9669571923-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="9669571923-1">)</span><span·class="p">.</span><span·class="w">
204 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1125811649-2">(</span><span·class="p"·data-group-id="1125811649-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1125811649-3">]</span><span·class="p"·data-group-id="1125811649-2">)</span><span·class="p">.</span><span·class="w">204 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9669571923-2">(</span><span·class="p"·data-group-id="9669571923-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9669571923-3">]</span><span·class="p"·data-group-id="9669571923-2">)</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="nf">f</span><span·class="p"·data-group-id="1125811649-4">(</span><span·class="p"·data-group-id="1125811649-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 </span><span·class="nf">f</span><span·class="p"·data-group-id="9669571923-4">(</span><span·class="p"·data-group-id="9669571923-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="1125811649-5">&lt;&lt;</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·730,·SHA:·86310c0bb6b0d9fd917ab09dfc8ae39f71c711085be6b0ca22c3e6ff3f4d8768·...·]-1">)</span><span·class="p">.</span><span·class="w">206 ····</span><span·class="p"·data-group-id="9669571923-5">&lt;&lt;</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·730,·SHA:·020818f0322491cebfe03c118fffc770d133dd0946607f0cbae68b7e039c155d·...·]-1">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="gt">**·exception·error:·bad·generator·ok207 </span><span·class="gt">**·exception·error:·bad·generator·ok
208 ·····in·function··t:f/0·(t.erl,·line·6)</span></code></pre><p>In·Erlang/OTP·27·it·returns·an·empty·binary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">t</span><span·class="p">:</span><span·class="nf">f</span><span·class="p"·data-group-id="2860734297-1">(</span><span·class="p"·data-group-id="2860734297-1">)</span><span·class="p">.</span><span·class="w">208 ·····in·function··t:f/0·(t.erl,·line·6)</span></code></pre><p>In·Erlang/OTP·27·it·returns·an·empty·binary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">t</span><span·class="p">:</span><span·class="nf">f</span><span·class="p"·data-group-id="9289535944-1">(</span><span·class="p"·data-group-id="9289535944-1">)</span><span·class="p">.</span><span·class="w">
209 </span><span·class="p"·data-group-id="2860734297-2">&lt;&lt;</span><span·class="p"·data-group-id="2860734297-2">&gt;&gt;</span></code></pre><p>Own·Id:·OTP-18703·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/7494"·title="">GH-7494</a>,·<a·href="https://github.com/erlang/otp/pull/7538"·title="">PR-7538</a></p></li><li><p>The·documentation·for·the·preprocessor·now·mentions·that·<code·class="inline">defined(Name)</code>·can·be·called·in·the·condition·for·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·directive·to·test·whether·<code·class="inline">Name</code>·is·the·name·of·a·defined·macro.·(This·feature·was·implemented·in·OTP·21.)</p><p>If·a·function·call·in·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·with·a·name·that·is·not·the·name·of·a·guard·BIF,·there·would·not·be·a·compilation·error,·but·would·instead·cause·the·lines·following·the·directive·to·be·skipped.·This·has·now·been·changed·to·be·a·compilation·error.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18784·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/7706"·title="">GH-7706</a>,·<a·href="https://github.com/erlang/otp/pull/7726"·title="">PR-7726</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">209 </span><span·class="p"·data-group-id="9289535944-2">&lt;&lt;</span><span·class="p"·data-group-id="9289535944-2">&gt;&gt;</span></code></pre><p>Own·Id:·OTP-18703·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/7494"·title="">GH-7494</a>,·<a·href="https://github.com/erlang/otp/pull/7538"·title="">PR-7538</a></p></li><li><p>The·documentation·for·the·preprocessor·now·mentions·that·<code·class="inline">defined(Name)</code>·can·be·called·in·the·condition·for·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·directive·to·test·whether·<code·class="inline">Name</code>·is·the·name·of·a·defined·macro.·(This·feature·was·implemented·in·OTP·21.)</p><p>If·a·function·call·in·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·with·a·name·that·is·not·the·name·of·a·guard·BIF,·there·would·not·be·a·compilation·error,·but·would·instead·cause·the·lines·following·the·directive·to·be·skipped.·This·has·now·been·changed·to·be·a·compilation·error.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18784·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/7706"·title="">GH-7706</a>,·<a·href="https://github.com/erlang/otp/pull/7726"·title="">PR-7726</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
210 ··<a·href="#improvements-and-new-features"·class="hover-link">210 ··<a·href="#improvements-and-new-features"·class="hover-link">
211 ····<i·class="ri-link-m"·aria-hidden="true"></i>211 ····<i·class="ri-link-m"·aria-hidden="true"></i>
212 ··</a>212 ··</a>
213 ··<span·class="text">Improvements·and·New·Features</span>213 ··<span·class="text">Improvements·and·New·Features</span>
214 </h3>214 </h3>
215 <ul><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.215 <ul><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.
216 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="3488784022-1">(</span><span·class="p"·data-group-id="3488784022-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">216 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="1147891205-1">(</span><span·class="p"·data-group-id="1147891205-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
217 </span><span·class="nf">a</span><span·class="p"·data-group-id="3488784022-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="3488784022-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>Erlang/OTP·26·and·earlier·would·emit·a·diagnostic·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch217 </span><span·class="nf">a</span><span·class="p"·data-group-id="1147891205-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="1147891205-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>Erlang/OTP·26·and·earlier·would·emit·a·diagnostic·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch
218 %····6|·a(_)·-&gt;·error.218 %····6|·a(_)·-&gt;·error.
219 %·····|·^</code></pre><p>while·in·Erlang/OTP·27·the·diagnostic·is·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch:·function·a·with·arities·0·and·1·is·regarded·as·two·distinct·functions.·Is·the·number·of·arguments·incorrect·or·is·the·semicolon·in·a/0·unwanted?219 %·····|·^</code></pre><p>while·in·Erlang/OTP·27·the·diagnostic·is·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch:·function·a·with·arities·0·and·1·is·regarded·as·two·distinct·functions.·Is·the·number·of·arguments·incorrect·or·is·the·semicolon·in·a/0·unwanted?
220 %····6|·a(_)·-&gt;·error.220 %····6|·a(_)·-&gt;·error.
221 %·····|·^</code></pre><p>Own·Id:·OTP-18648·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7383"·title="">PR-7383</a></p></li><li><p>The·compiler·now·optimizes·creation·of·binaries·that·are·known·to·be·constant.</p><p>Consider·this·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bin</span><span·class="p"·data-group-id="0559200545-1">(</span><span·class="p"·data-group-id="0559200545-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 %·····|·^</code></pre><p>Own·Id:·OTP-18648·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7383"·title="">PR-7383</a></p></li><li><p>The·compiler·now·optimizes·creation·of·binaries·that·are·known·to·be·constant.</p><p>Consider·this·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bin</span><span·class="p"·data-group-id="3541510698-1">(</span><span·class="p"·data-group-id="3541510698-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 ····</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">char</span><span·class="p"·data-group-id="0559200545-2">(</span><span·class="p"·data-group-id="0559200545-2">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">char</span><span·class="p"·data-group-id="3541510698-2">(</span><span·class="p"·data-group-id="3541510698-2">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="0559200545-3">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-group-id="0559200545-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">223 ····</span><span·class="p"·data-group-id="3541510698-3">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-group-id="3541510698-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
  
224 </span><span·class="nf">char</span><span·class="p"·data-group-id="0559200545-4">(</span><span·class="p"·data-group-id="0559200545-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="sc">$*</span><span·class="p">.</span></code></pre><p>Essentially,·the·compiler·rewrites·the·[·...·truncated·by·diffoscope;·len:·212,·SHA:·18a18e39b2837b000567ce962e0eb4153efa0c90221dcc147bf61e9f10a54ec8·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 </span><span·class="nf">char</span><span·class="p"·data-group-id="3541510698-4">(</span><span·class="p"·data-group-id="3541510698-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="sc">$*</span><span·class="p">.</span></code></pre><p>Essentially,·the·compiler·rewrites·the·[·...·truncated·by·diffoscope;·len:·212,·SHA:·7859511a80eba438b9334ae5162ee9802d2111e1a17d7cc27b859d787ca3ea9e·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····</span><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">char</span><span·class="p"·data-group-id="1104820586-2">(</span><span·class="p"·data-group-id="1104820586-2">)</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">char</span><span·class="p"·data-group-id="8673633504-2">(</span><span·class="p"·data-group-id="8673633504-2">)</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="p"·data-group-id="1104820586-3">&lt;&lt;</span><span·class="sc">$*</span><span·class="p"·data-group-id="1104820586-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="p"·data-group-id="8673633504-3">&lt;&lt;</span><span·class="sc">$*</span><span·class="p"·data-group-id="8673633504-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">char</span><span·class="p"·data-group-id="1104820586-4">(</span><span·class="p"·data-group-id="1104820586-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="sc">$*</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-18673·Aux·Id:·<a·href="http[·...·truncated·by·diffoscope;·len:·818,·SHA:·cf6ff0019d8651bcdda5e6eb0a2b14e54e3a6eb00323acfdf555a5cc457dfa1b·...·]-1">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="nf">char</span><span·class="p"·data-group-id="8673633504-4">(</span><span·class="p"·data-group-id="8673633504-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="sc">$*</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-18673·Aux·Id:·<a·href="http[·...·truncated·by·diffoscope;·len:·818,·SHA:·76640303bff5201ec97c55285b4dc0b474020b03b71b2dbe0930783017badb08·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
228 </span><span·class="nf">update</span><span·class="p"·data-group-id="6213740529-3">(</span><span·class="n">Value</span><span·class="p"·data-group-id="6213740529-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">228 </span><span·class="nf">update</span><span·class="p"·data-group-id="8141972312-3">(</span><span·class="n">Value</span><span·class="p"·data-group-id="8141972312-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ····</span><span·class="n">R0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="6213740529-4">{</span><span·class="p"·data-group-id="6213740529-4">}</span><span·class="p">,</span><span·class="w">229 ····</span><span·class="n">R0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="8141972312-4">{</span><span·class="p"·data-group-id="8141972312-4">}</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R0</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="6213740529-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="n">Value</span><span·class="p"·data-group-id="6213740529-5">}</span><span·class="p">,</span><span·class="w">230 ····</span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R0</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="8141972312-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="n">Value</span><span·class="p"·data-group-id="8141972312-5">}</span><span·class="p">,</span><span·class="w">
231 ····</span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R1</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="6213740529-6">{</span><span·class="ss">b</span><span·class="o">=</span><span·class="mi">2</span><span·class="p"·data-group-id="6213740529-6">}</span><span·class="p">,</span><span·class="w">231 ····</span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R1</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="8141972312-6">{</span><span·class="ss">b</span><span·class="o">=</span><span·class="mi">2</span><span·class="p"·data-group-id="8141972312-6">}</span><span·class="p">,</span><span·class="w">
232 ····</span><span·class="n">R2</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="6213740529-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="mi">3</span><span·class="p"·data-group-id="6213740529-7">}</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-18680·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7491"·title="">PR-7491</a>,·<a·href="https://github.com/erlang/otp/pull/8086"·title="">PR-8086</a>,·ERIERL-967</p></li><li><p>Improved·the·performance·of·the·alias·analysis·pass.</p><p>Own·Id:·OTP-18714·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7528"·title="">PR-7528</a>,·<a·href="https://github.com/erlang/otp/issues/7432"·title="">GH-7432</a></p></li><li><p><code·class="inline">-spec</code>·attributes·are·now·used·for·documentation.</p><p>Own·Id:·OTP-18801·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7739"·title="">PR-7739</a></p></li><li><p>Native·coverage·support·has·been·implemented·in·the·JIT.·It·will··automatically·be·used·by·the·<a·href="../../../../lib/tools-4.1.1/doc/html/cover.html"><code·class="inline">cover</code></a>·tool·to·reduce·the·execution·overhead·when·running·cover-compiled·code.</p><p>There·are·also·new·APIs·to·support·native·coverage·without·using·the·<code·class="inline">cover</code>·tool.</p><p>To·instrument·code·for·native·coverage·it·must·be·compiled·with·the·<a·href="compile.html#line_coverage"><code·class="inline">line_coverage</code></a>·option.</p><p>To·enable·native·coverage·in·the·runtime·system,·start·it·like·so:</p><pre><code·class="text">$·erl·+JPcover·true</code></pre><p>There·are·also·the·following·new·functions·for·supporting·native·coverage:</p><ul><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/0"><code·class="inline">code:get_coverage_mode/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/1"><code·class="inline">code:get_coverage_mode/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#set_coverage_mode/1"><code·class="inline">code:set_coverage_mode/1</code></a></li></ul><p>Own·Id:·OTP-18856·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7856"·title="">PR-7856</a></p></li><li><p><a·href="https://www.erlang.org/eeps/eep-0059">EEP-59·-·Documentation·Attributes</a>·has·been·implemented.</p><p>Documentation·attributes·can·be·used·to·document·functions,·types,·callbacks,·and·modules.232 ····</span><span·class="n">R2</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="8141972312-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="mi">3</span><span·class="p"·data-group-id="8141972312-7">}</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-18680·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7491"·title="">PR-7491</a>,·<a·href="https://github.com/erlang/otp/pull/8086"·title="">PR-8086</a>,·ERIERL-967</p></li><li><p>Improved·the·performance·of·the·alias·analysis·pass.</p><p>Own·Id:·OTP-18714·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7528"·title="">PR-7528</a>,·<a·href="https://github.com/erlang/otp/issues/7432"·title="">GH-7432</a></p></li><li><p><code·class="inline">-spec</code>·attributes·are·now·used·for·documentation.</p><p>Own·Id:·OTP-18801·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7739"·title="">PR-7739</a></p></li><li><p>Native·coverage·support·has·been·implemented·in·the·JIT.·It·will··automatically·be·used·by·the·<a·href="../../../../lib/tools-4.1.1/doc/html/cover.html"><code·class="inline">cover</code></a>·tool·to·reduce·the·execution·overhead·when·running·cover-compiled·code.</p><p>There·are·also·new·APIs·to·support·native·coverage·without·using·the·<code·class="inline">cover</code>·tool.</p><p>To·instrument·code·for·native·coverage·it·must·be·compiled·with·the·<a·href="compile.html#line_coverage"><code·class="inline">line_coverage</code></a>·option.</p><p>To·enable·native·coverage·in·the·runtime·system,·start·it·like·so:</p><pre><code·class="text">$·erl·+JPcover·true</code></pre><p>There·are·also·the·following·new·functions·for·supporting·native·coverage:</p><ul><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/0"><code·class="inline">code:get_coverage_mode/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/1"><code·class="inline">code:get_coverage_mode/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#set_coverage_mode/1"><code·class="inline">code:set_coverage_mode/1</code></a></li></ul><p>Own·Id:·OTP-18856·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7856"·title="">PR-7856</a></p></li><li><p><a·href="https://www.erlang.org/eeps/eep-0059">EEP-59·-·Documentation·Attributes</a>·has·been·implemented.</p><p>Documentation·attributes·can·be·used·to·document·functions,·types,·callbacks,·and·modules.
233 The·keyword·<code·class="inline">-moduledoc·&quot;Documentation·here&quot;.</code>·is·used·to·document·modules,·while·<code·class="inline">-doc·&quot;Documentation·here&quot;.</code>·can·be·used·on·top·of·functions,·types,·and·callbacks·to·document·them,·respectively.</p><ul><li><p>Types,·callbacks,·and·function·documentation·can·be·set·to·<code·class="inline">hidden</code>·either·via·<code·class="inline">-doc·false</code>·or·<code·class="inline">-doc·hidden</code>.·When·documentation·attributes·mark·a·type·as·hidden,·they·will·not·be·part·of·the·documentation.</p></li><li><p>The·documentation·from·<code·class="inline">moduledoc</code>·and·<code·class="inline">doc</code>·gets·added·by·default·to·the·binary·beam·file,·following·the·format·of·<a·href="https://www.erlang.org/eeps/eep-0048">EEP-48</a>.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_doc</code>·will·raise·a·warning·when233 The·keyword·<code·class="inline">-moduledoc·&quot;Documentation·here&quot;.</code>·is·used·to·document·modules,·while·<code·class="inline">-doc·&quot;Documentation·here&quot;.</code>·can·be·used·on·top·of·functions,·types,·and·callbacks·to·document·them,·respectively.</p><ul><li><p>Types,·callbacks,·and·function·documentation·can·be·set·to·<code·class="inline">hidden</code>·either·via·<code·class="inline">-doc·false</code>·or·<code·class="inline">-doc·hidden</code>.·When·documentation·attributes·mark·a·type·as·hidden,·they·will·not·be·part·of·the·documentation.</p></li><li><p>The·documentation·from·<code·class="inline">moduledoc</code>·and·<code·class="inline">doc</code>·gets·added·by·default·to·the·binary·beam·file,·following·the·format·of·<a·href="https://www.erlang.org/eeps/eep-0048">EEP-48</a>.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_doc</code>·will·raise·a·warning·when
234 <code·class="inline">-doc</code>·attributes·are·missing·in·exported·functions,·types,·and·callbacks.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_spec_documented</code>·will·raise·a·warning·when234 <code·class="inline">-doc</code>·attributes·are·missing·in·exported·functions,·types,·and·callbacks.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_spec_documented</code>·will·raise·a·warning·when
235 spec·attributes·are·missing·in·documented·functions,·types,·and·callbacks.</p></li><li><p><code·class="inline">moduledoc</code>s·and·<code·class="inline">doc</code>s·may·refer·to·external·files·to·be·embedded,·such·as·<code·class="inline">-doc·{file,·&quot;README.md&quot;}.</code>,·which·refers·to·the·file·<code·class="inline">README.md</code>·found·in·the·current·working·directory.</p></li><li><p>The·compiler·warns·about·exported·functions·whose·specs·refer·to·hidden·types.·Thus,·there·will·be·warnings·when·a·hidden·type·(meaning,·the·type·is·not·part·of·the·documentation)·gets·used·in·an·exported·function.</p></li></ul><p>Own·Id:·OTP-18916·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7936"·title="">PR-7936</a></p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>The·order·in·which·the·compiler·looks·up·options·has·changed.</p><p>When·there·is·a·conflict·in·the·compiler·options·given·in·the·<code·class="inline">-compile()</code>·attribute·and·options·given·to·the·compiler,·the·options·given·in·the·<code·class="inline">-compile()</code>·attribute·overrides·the·option·given·to·the·compiler,·which·in·turn·overrides·options·given·in·the·<code·class="inline">ERL_COMPILER_OPTIONS</code>·environment·variable.</p><p>Example:</p><p>If··<code·class="inline">some_module.erl</code>·has·the·following·attribute:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="0729512056-1">(</span><span·class="p"·data-group-id="0729512056-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p"·data-group-id="0729512056-2">]</span><span·class="p"·data-group-id="0729512056-1">)</span><span·class="p">.</span></code><[·...·truncated·by·diffoscope;·len:·1215,·SHA:·b38f843c92d35cbdc95b41b3cb2b86e71f41b3fc5a84e910a598f679815887de·...·]-1">)</span><span·class="p">.</span><span·class="w">235 spec·attributes·are·missing·in·documented·functions,·types,·and·callbacks.</p></li><li><p><code·class="inline">moduledoc</code>s·and·<code·class="inline">doc</code>s·may·refer·to·external·files·to·be·embedded,·such·as·<code·class="inline">-doc·{file,·&quot;README.md&quot;}.</code>,·which·refers·to·the·file·<code·class="inline">README.md</code>·found·in·the·current·working·directory.</p></li><li><p>The·compiler·warns·about·exported·functions·whose·specs·refer·to·hidden·types.·Thus,·there·will·be·warnings·when·a·hidden·type·(meaning,·the·type·is·not·part·of·the·documentation)·gets·used·in·an·exported·function.</p></li></ul><p>Own·Id:·OTP-18916·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7936"·title="">PR-7936</a></p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>The·order·in·which·the·compiler·looks·up·options·has·changed.</p><p>When·there·is·a·conflict·in·the·compiler·options·given·in·the·<code·class="inline">-compile()</code>·attribute·and·options·given·to·the·compiler,·the·options·given·in·the·<code·class="inline">-compile()</code>·attribute·overrides·the·option·given·to·the·compiler,·which·in·turn·overrides·options·given·in·the·<code·class="inline">ERL_COMPILER_OPTIONS</code>·environment·variable.</p><p>Example:</p><p>If··<code·class="inline">some_module.erl</code>·has·the·following·attribute:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="2065621730-1">(</span><span·class="p"·data-group-id="2065621730-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p"·data-group-id="2065621730-2">]</span><span·class="p"·data-group-id="2065621730-1">)</span><span·class="p">.</span></code><[·...·truncated·by·diffoscope;·len:·1215,·SHA:·0f931888aad0c655bd5e529ea89871b25a1b27fd5852ebb41630ea7a19af3c3d·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
236 </span><span·class="nf">update</span><span·class="p"·data-group-id="2849225348-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="2849225348-4">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">needs_update</span><span·class="p">,</span><span·class="ss">b</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·5ffc98bec7146ba1298ed398d3d0b1bd3749dfdeacb514b50f6959c9beb49dc5·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">236 </span><span·class="nf">update</span><span·class="p"·data-group-id="0829462497-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="0829462497-4">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">needs_update</span><span·class="p">,</span><span·class="ss">b</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·5a7d872df92db8ba049b6d288f042f607448caf96ecb686fdf7b01a4a9964ac2·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
237 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R0</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="2849225348-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="2849225348-5">}</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">R0</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="0829462497-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="0829462497-5">}</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="k">if</span><span·class="w">238 ····</span><span·class="k">if</span><span·class="w">
239 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="2849225348-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="2849225348-6">}</span><span·class="p">;</span><span·class="w">240 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="0829462497-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="0829462497-6">}</span><span·class="p">;</span><span·class="w">
241 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">241 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
242 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="2849225348-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="2849225348-7">}</span><span·class="p">;</span><span·class="w">242 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="0829462497-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="0829462497-7">}</span><span·class="p">;</span><span·class="w">
243 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">243 ········</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
244 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="2849225348-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="2849225348-8">}</span><span·class="w">244 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="0829462497-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="0829462497-8">}</span><span·class="w">
245 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·record·updates·in·each·of·the·three·clauses·of·the·<code·class="inline">if</code>·can·safely·be·done·in-place,·because·variable·<code·class="inline">R</code>·is·not·used·again.</p><p>Own·Id:·OTP-18972·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8090"·title="">PR-8090</a></p></li><li><p>Improved·the·match·context·reuse·optimization·slightly,·allowing·match·contexts·to·be·passed·as-is·to·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>.</p><p>Own·Id:·OTP-18987</p></li><li><p><a·href="../../../../lib/stdlib-6.2/doc/html/erl_lint.html"><code·class="inline">erl_lint</code></a>·(and·by·extension·the·<a·href="compile.html"><code·class="inline">compiler</code></a>)·will·now·warn·for·code·using·deprecated·callbacks.</p><p>The·only·callback·currenly·deprecated·is·<code·class="inline">format_status/2</code>·in·<a·href="../../../../lib/stdlib-6.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="../../../../lib/stdlib-6.2/doc/html/gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="../../../../lib/stdlib-6.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_statem</code></a>.</p><p>You·can·use·<code·class="inline">nowarn_deprecated_callback</code>·to·silence·the·warning.</p><p>Own·Id:·OTP-19010·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8205"·title="">PR-8205</a></p></li></ul><h2·id="compiler-8-4-3-2"·class="section-heading">245 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·record·updates·in·each·of·the·three·clauses·of·the·<code·class="inline">if</code>·can·safely·be·done·in-place,·because·variable·<code·class="inline">R</code>·is·not·used·again.</p><p>Own·Id:·OTP-18972·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8090"·title="">PR-8090</a></p></li><li><p>Improved·the·match·context·reuse·optimization·slightly,·allowing·match·contexts·to·be·passed·as-is·to·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>.</p><p>Own·Id:·OTP-18987</p></li><li><p><a·href="../../../../lib/stdlib-6.2/doc/html/erl_lint.html"><code·class="inline">erl_lint</code></a>·(and·by·extension·the·<a·href="compile.html"><code·class="inline">compiler</code></a>)·will·now·warn·for·code·using·deprecated·callbacks.</p><p>The·only·callback·currenly·deprecated·is·<code·class="inline">format_status/2</code>·in·<a·href="../../../../lib/stdlib-6.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="../../../../lib/stdlib-6.2/doc/html/gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="../../../../lib/stdlib-6.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_statem</code></a>.</p><p>You·can·use·<code·class="inline">nowarn_deprecated_callback</code>·to·silence·the·warning.</p><p>Own·Id:·OTP-19010·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8205"·title="">PR-8205</a></p></li></ul><h2·id="compiler-8-4-3-2"·class="section-heading">
246 ··<a·href="#compiler-8-4-3-2"·class="hover-link">246 ··<a·href="#compiler-8-4-3-2"·class="hover-link">
247 ····<i·class="ri-link-m"·aria-hidden="true"></i>247 ····<i·class="ri-link-m"·aria-hidden="true"></i>
248 ··</a>248 ··</a>
249 ··<span·class="text">Compiler·8.4.3.2</span>249 ··<span·class="text">Compiler·8.4.3.2</span>
250 </h2>250 </h2>
251 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">251 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">
634 B
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/search.html
    
Offset 118, 15 lines modifiedOffset 118, 15 lines modified
118 <div·id="search">118 <div·id="search">
119 ··<h1>119 ··<h1>
120 ····<span></span>120 ····<span></span>
121 ··</h1>121 ··</h1>
  
122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>
123 </div>123 </div>
124 <script·src="dist/search_data-6001A501.js"></script>124 <script·src="dist/search_data-4B26B7BB.js"></script>
125 ····<footer·class="footer">125 ····<footer·class="footer">
126 ······<p>126 ······<p>
  
127 ········<span·class="line">127 ········<span·class="line">
128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">
129 ············Search·HexDocs129 ············Search·HexDocs
130 ··········</button>130 ··········</button>
15.9 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/ssa_checks.html
    
Offset 138, 50 lines modifiedOffset 138, 50 lines modified
138 ····<i·class="ri-link-m"·aria-hidden="true"></i>138 ····<i·class="ri-link-m"·aria-hidden="true"></i>
139 ··</a>139 ··</a>
140 ··<span·class="text">Syntax</span>140 ··<span·class="text">Syntax</span>
141 </h2>141 </h2>
142 <p>SSA·checks·are·embedded·in·the·source·code·as·comments·starting·with142 <p>SSA·checks·are·embedded·in·the·source·code·as·comments·starting·with
143 with·one·of·<code·class="inline">%ssa%</code>,·<code·class="inline">%%ssa%</code>·or·<code·class="inline">%%%ssa%</code>.·This·is·a·short143 with·one·of·<code·class="inline">%ssa%</code>,·<code·class="inline">%%ssa%</code>·or·<code·class="inline">%%%ssa%</code>.·This·is·a·short
144 introduction·the·syntax,·for·the·full·syntax·please·refer·to·the144 introduction·the·syntax,·for·the·full·syntax·please·refer·to·the
145 <code·class="inline">ssa_check_when_clause</code>·production·in·<code·class="inline">erl_parse.yrl</code>.</p><p>SSA·checks·can·be·placed·inside·any·Erlang·function,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t0</span><span·class="p"·data-group-id="4964673908-1">(</span><span·class="p"·data-group-id="4964673908-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">145 <code·class="inline">ssa_check_when_clause</code>·production·in·<code·class="inline">erl_parse.yrl</code>.</p><p>SSA·checks·can·be·placed·inside·any·Erlang·function,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t0</span><span·class="p"·data-group-id="5075709688-1">(</span><span·class="p"·data-group-id="5075709688-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
146 </span><span·class="c1">%ssa%·()·when·post_ssa_opt·-&gt;</span><span·class="w">146 </span><span·class="c1">%ssa%·()·when·post_ssa_opt·-&gt;</span><span·class="w">
147 </span><span·class="c1">%ssa%···ret(#{}).</span><span·class="w">147 </span><span·class="c1">%ssa%···ret(#{}).</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="4964673908-2">#{</span><span·class="p"·data-group-id="4964673908-2">}</span><span·class="p">.</span></code></pre><p>will·check·that·<code·class="inline">t0/0</code>·returns·the·literal·<code·class="inline">#{}</code>.·If·we·want·to·check148 ··</span><span·class="p"·data-group-id="5075709688-2">#{</span><span·class="p"·data-group-id="5075709688-2">}</span><span·class="p">.</span></code></pre><p>will·check·that·<code·class="inline">t0/0</code>·returns·the·literal·<code·class="inline">#{}</code>.·If·we·want·to·check
149 that·a·function·returns·its·first·formal·parameter,·we·can·write:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t1</span><span·class="p"·data-group-id="0760081925-1">(</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">B</span><span·class="p"·data-group-id="0760081925-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 that·a·function·returns·its·first·formal·parameter,·we·can·write:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t1</span><span·class="p"·data-group-id="8482045394-1">(</span><span·class="n">A</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">B</span><span·class="p"·data-group-id="8482045394-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 </span><span·class="c1">%ssa%·(X,·_)·when·post_ssa_opt·-&gt;</span><span·class="w">150 </span><span·class="c1">%ssa%·(X,·_)·when·post_ssa_opt·-&gt;</span><span·class="w">
151 </span><span·class="c1">%ssa%···ret(X).</span><span·class="w">151 </span><span·class="c1">%ssa%···ret(X).</span><span·class="w">
152 ··</span><span·class="n">A</span><span·class="p">.</span></code></pre><p>Note·how·we·match·the·first·formal·parameter·using·<code·class="inline">X</code>.·The·reason·for152 ··</span><span·class="n">A</span><span·class="p">.</span></code></pre><p>Note·how·we·match·the·first·formal·parameter·using·<code·class="inline">X</code>.·The·reason·for
153 having·our·own·formal·parameters·for·the·SSA·check,·is·that·we·don't153 having·our·own·formal·parameters·for·the·SSA·check,·is·that·we·don't
154 want·to·introduce·new·identifiers·at·the·Erlang·level·to·support154 want·to·introduce·new·identifiers·at·the·Erlang·level·to·support
155 SSA-level·checks.·Consider·if·<code·class="inline">t1/2</code>·had·been·defined·as·<code·class="inline">t1([A|As],·B)</code>·we·would·have·had·to·introduce·a·new·identifier·for·the·aggregate155 SSA-level·checks.·Consider·if·<code·class="inline">t1/2</code>·had·been·defined·as·<code·class="inline">t1([A|As],·B)</code>·we·would·have·had·to·introduce·a·new·identifier·for·the·aggregate
156 value·<code·class="inline">[A|As]</code>.</p><p>The·full·syntax·for·a·SSA·check·clause·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="ss">expected</span><span·class="o">-</span><span·class="ss">result</span><span·class="o">&gt;</span><span·class="o">?</span><span·class="w">·</span><span·class="p"·data-group-id="5141659911-1">(</span><span·class="o">&lt;</span><span·class="ss">formals</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5141659911-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">pipeline</span><span·class="o">-</span><span·class="ss">location</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">checks</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">&#39;.&#39;</span></code></pre><p>where·<code·class="inline">&lt;expected-result&gt;</code>·can·be·one·of·<code·class="inline">pass</code>·(the·check·must156 value·<code·class="inline">[A|As]</code>.</p><p>The·full·syntax·for·a·SSA·check·clause·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="ss">expected</span><span·class="o">-</span><span·class="ss">result</span><span·class="o">&gt;</span><span·class="o">?</span><span·class="w">·</span><span·class="p"·data-group-id="4909267213-1">(</span><span·class="o">&lt;</span><span·class="ss">formals</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4909267213-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">pipeline</span><span·class="o">-</span><span·class="ss">location</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">checks</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">&#39;.&#39;</span></code></pre><p>where·<code·class="inline">&lt;expected-result&gt;</code>·can·be·one·of·<code·class="inline">pass</code>·(the·check·must
157 succeed),·<code·class="inline">fail</code>·and·<code·class="inline">xfail</code>·(the·check·must·fail).·Omitting157 succeed),·<code·class="inline">fail</code>·and·<code·class="inline">xfail</code>·(the·check·must·fail).·Omitting
158 <code·class="inline">&lt;expected-result&gt;</code>·is·parsed·as·an·implicit·<code·class="inline">pass</code>.</p><p><code·class="inline">&lt;formals&gt;</code>·is·a·comma-separated·list·of·variables.</p><p><code·class="inline">&lt;pipeline-location&gt;</code>·specifies·when·in·the·compiler·pipeline·to·run158 <code·class="inline">&lt;expected-result&gt;</code>·is·parsed·as·an·implicit·<code·class="inline">pass</code>.</p><p><code·class="inline">&lt;formals&gt;</code>·is·a·comma-separated·list·of·variables.</p><p><code·class="inline">&lt;pipeline-location&gt;</code>·specifies·when·in·the·compiler·pipeline·to·run
159 the·checks.·For·now·the·only·supported·value·for·<code·class="inline">&lt;pipeline-location&gt;</code>159 the·checks.·For·now·the·only·supported·value·for·<code·class="inline">&lt;pipeline-location&gt;</code>
160 is·<code·class="inline">post_ssa_opt</code>·which·runs·the·checks·after·the·<code·class="inline">ssa_opt</code>·pass.</p><p><code·class="inline">&lt;checks&gt;</code>·is·a·comma-separated·list·of·matches·against·the·BEAM·SSA160 is·<code·class="inline">post_ssa_opt</code>·which·runs·the·checks·after·the·<code·class="inline">ssa_opt</code>·pass.</p><p><code·class="inline">&lt;checks&gt;</code>·is·a·comma-separated·list·of·matches·against·the·BEAM·SSA
161 code.·For·non-flow-control·operations·the·syntax·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="ss">variable</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">operation</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3227826326-1">(</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">arguments</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3227826326-1">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">annotation</span><span·class="o">&gt;</span><span·class="o">?</span></code></pre><p>where·<code·class="inline">&lt;operation&gt;</code>·is·the·<code·class="inline">#b_set.op</code>·field·from·the·internal·SSA161 code.·For·non-flow-control·operations·the·syntax·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="ss">variable</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">operation</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3212630193-1">(</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">arguments</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3212630193-1">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">annotation</span><span·class="o">&gt;</span><span·class="o">?</span></code></pre><p>where·<code·class="inline">&lt;operation&gt;</code>·is·the·<code·class="inline">#b_set.op</code>·field·from·the·internal·SSA
162 representation.·BIFs·are·written·as·<code·class="inline">bif:&lt;atom&gt;</code>.</p><p><code·class="inline">&lt;arguments&gt;</code>·is·a·comma-separated·list·of·variables·or·literals.</p><p>For·flow·control·operations·and·labels,·the·syntax·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">br</span><span·class="p"·data-group-id="9751941911-1">(</span><span·class="o">&lt;</span><span·class="ss">bool</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">true</span><span·class="o">-</span><span·class="ss">label</s[·...·truncated·by·diffoscope;·len:·256,·SHA:·eaf223f0d2a48520a8ba7f141f3e214c5394f7e86ba6f657201dc87a2fcd86db·...·]-1">)</span><span·class="w">162 representation.·BIFs·are·written·as·<code·class="inline">bif:&lt;atom&gt;</code>.</p><p><code·class="inline">&lt;arguments&gt;</code>·is·a·comma-separated·list·of·variables·or·literals.</p><p>For·flow·control·operations·and·labels,·the·syntax·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">br</span><span·class="p"·data-group-id="4185297792-1">(</span><span·class="o">&lt;</span><span·class="ss">bool</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">true</span><span·class="o">-</span><span·class="ss">label</s[·...·truncated·by·diffoscope;·len:·256,·SHA:·0d8d3cd8eceb2d437790b764448e74a6204983d1d3b6724a5da8ce863da8fed7·...·]-1">)</span><span·class="w">
  
163 </span><span·class="nf">switch</span><span·class="p"·data-group-id="9751941911-2">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">fail</span><span·class="o">-</span><span·class="ss">label</[·...·truncated·by·diffoscope;·len:·619,·SHA:·5cb33377769454d93ab31e06e7eaf515e8438fc1f8a97c32a7aebbad21b707fe·...·]-2">)</span><span·class="w">163 </span><span·class="nf">switch</span><span·class="p"·data-group-id="4185297792-2">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">fail</span><span·class="o">-</span><span·class="ss">label</[·...·truncated·by·diffoscope;·len:·619,·SHA:·1fcfb9f9d741574342933d2aa2ffd82fe7395a4d1dac5d7c6cffd1e0c9581860·...·]-2">)</span><span·class="w">
  
164 </span><span·class="nf">ret</span><span·class="p"·data-group-id="9751941911-5">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9751941911-5">)</span><span·class="w">164 </span><span·class="nf">ret</span><span·class="p"·data-group-id="4185297792-5">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4185297792-5">)</span><span·class="w">
  
165 </span><span·class="ss">label</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span></code></pre><p>where·<code·class="inline">&lt;value&gt;</code>·is·a·literal·or·a·variable.</p><p>A·check·can·also·include·an·assertion·on·operation·annotations.·The165 </span><span·class="ss">label</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span></code></pre><p>where·<code·class="inline">&lt;value&gt;</code>·is·a·literal·or·a·variable.</p><p>A·check·can·also·include·an·assertion·on·operation·annotations.·The
166 assertion·is·written·as·a·map-like·pattern·following·the·argument166 assertion·is·written·as·a·map-like·pattern·following·the·argument
167 list,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t0</span><span·class="p"·data-group-id="8541468457-1">(</span><span·class="p"·data-group-id="8541468457-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 list,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t0</span><span·class="p"·data-group-id="9912720641-1">(</span><span·class="p"·data-group-id="9912720641-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 </span><span·class="c1">%ssa%·()·when·post_ssa_opt·-&gt;</span><span·class="w">168 </span><span·class="c1">%ssa%·()·when·post_ssa_opt·-&gt;</span><span·class="w">
169 </span><span·class="c1">%ssa%·_·=·call(fun·return_int/0)·{·result_type·=&gt;·{t_integer,{17,17}},</span><span·class="w">169 </span><span·class="c1">%ssa%·_·=·call(fun·return_int/0)·{·result_type·=&gt;·{t_integer,{17,17}},</span><span·class="w">
170 </span><span·class="c1">%ssa%······························location·=&gt;·{_,32}·},</span><span·class="w">170 </span><span·class="c1">%ssa%······························location·=&gt;·{_,32}·},</span><span·class="w">
171 </span><span·class="c1">%ssa%·_·=·call(fun·return_tuple/0)·{</span><span·class="w">171 </span><span·class="c1">%ssa%·_·=·call(fun·return_tuple/0)·{</span><span·class="w">
172 </span><span·class="c1">%ssa%····result_type·=&gt;·{t_tuple,2,true,#{1·=&gt;·{t_integer,{1,1}},</span><span·class="w">172 </span><span·class="c1">%ssa%····result_type·=&gt;·{t_tuple,2,true,#{1·=&gt;·{t_integer,{1,1}},</span><span·class="w">
173 </span><span·class="c1">%ssa%·····································2·=&gt;·{t_integer,{2,2}}}}</span><span·class="w">173 </span><span·class="c1">%ssa%·····································2·=&gt;·{t_integer,{2,2}}}}</span><span·class="w">
174 </span><span·class="c1">%ssa%·}.</span><span·class="w">174 </span><span·class="c1">%ssa%·}.</span><span·class="w">
175 ····</span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">return_int</span><span·class="p"·data-group-id="8541468457-2">(</span><span·class="p"·data-group-id="8541468457-2">)</span><span·class="p">,</span><span·class="w">175 ····</span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">return_int</span><span·class="p"·data-group-id="9912720641-2">(</span><span·class="p"·data-group-id="9912720641-2">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">return_tuple</span><span·class="p"·data-group-id="8541468457-3">(</span><span·class="p"·data-group-id="8541468457-3">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">return_tuple</span><span·class="p"·data-group-id="9912720641-3">(</span><span·class="p"·data-group-id="9912720641-3">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="8541468457-4">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="8541468457-4">}</span><span·class="p">.</span></code></pre><h2·id="semantics"·class="section-heading">177 ····</span><span·class="p"·data-group-id="9912720641-4">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="9912720641-4">}</span><span·class="p">.</span></code></pre><h2·id="semantics"·class="section-heading">
178 ··<a·href="#semantics"·class="hover-link">178 ··<a·href="#semantics"·class="hover-link">
179 ····<i·class="ri-link-m"·aria-hidden="true"></i>179 ····<i·class="ri-link-m"·aria-hidden="true"></i>
180 ··</a>180 ··</a>
181 ··<span·class="text">Semantics</span>181 ··<span·class="text">Semantics</span>
182 </h2>182 </h2>
183 <p>When·an·SSA·assertion·is·matched·against·the·BEAM·SSA·for·a·function,183 <p>When·an·SSA·assertion·is·matched·against·the·BEAM·SSA·for·a·function,
184 patterns·are·applied·sequentially.·If·the·current·pattern·doesn't184 patterns·are·applied·sequentially.·If·the·current·pattern·doesn't
629 B
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/.build
    
Offset 17, 15 lines modifiedOffset 17, 15 lines modified
17 dist/lato-latin-300-normal-YUMVEFOL.woff217 dist/lato-latin-300-normal-YUMVEFOL.woff2
18 dist/lato-latin-400-normal-W7754I4D.woff218 dist/lato-latin-400-normal-W7754I4D.woff2
19 dist/lato-latin-700-normal-2XVSBPG4.woff219 dist/lato-latin-700-normal-2XVSBPG4.woff2
20 dist/lato-latin-ext-300-normal-VPGGJKJL.woff220 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
21 dist/lato-latin-ext-400-normal-N27NCBWW.woff221 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
22 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff222 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
23 dist/remixicon-NKANDIL5.woff223 dist/remixicon-NKANDIL5.woff2
24 dist/search_data-A37F9CDE.js24 dist/search_data-F9C7D1C8.js
25 dist/sidebar_items-B1937A60.js25 dist/sidebar_items-B1937A60.js
26 engine_keys.html26 engine_keys.html
27 engine_load.html27 engine_load.html
28 fips.html28 fips.html
29 index.html29 index.html
30 licenses.html30 licenses.html
31 new_api.html31 new_api.html
246 KB
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/crypto.epub
2.98 KB
zipinfo {}
    
Offset 1, 20 lines modifiedOffset 1, 20 lines modified
1 Zip·file·size:·126652·bytes,·number·of·entries:·181 Zip·file·size:·126643·bytes,·number·of·entries:·18
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:51·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:27·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Feb-13·10:51·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Feb-13·09:27·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···141227·bx·defN·25-Feb-13·10:51·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···141227·bx·defN·25-Feb-13·09:27·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx····48579·bx·defN·25-Feb-13·10:51·OEBPS/new_api.xhtml5 ?rw-r--r--··6.1·unx····48579·bx·defN·25-Feb-13·09:27·OEBPS/new_api.xhtml
6 ?rw-r--r--··6.1·unx·····1443·bx·defN·25-Feb-13·10:51·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1443·bx·defN·25-Feb-13·09:27·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx·····7065·bx·defN·25-Feb-13·10:51·OEBPS/licenses.xhtml7 ?rw-r--r--··6.1·unx·····7065·bx·defN·25-Feb-13·09:27·OEBPS/licenses.xhtml
8 ?rw-r--r--··6.1·unx·····9663·bx·defN·25-Feb-13·10:51·OEBPS/fips.xhtml8 ?rw-r--r--··6.1·unx·····9663·bx·defN·25-Feb-13·09:27·OEBPS/fips.xhtml
9 ?rw-r--r--··6.1·unx····14857·bx·defN·25-Feb-13·10:51·OEBPS/engine_load.xhtml9 ?rw-r--r--··6.1·unx····14857·bx·defN·25-Feb-13·09:27·OEBPS/engine_load.xhtml
10 ?rw-r--r--··6.1·unx····13755·bx·defN·25-Feb-13·10:51·OEBPS/engine_keys.xhtml10 ?rw-r--r--··6.1·unx····13755·bx·defN·25-Feb-13·09:27·OEBPS/engine_keys.xhtml
11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-erlang-ESPT6BQV.css11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:27·OEBPS/dist/epub-erlang-ESPT6BQV.css
12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-LSJCIYTM.js12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:27·OEBPS/dist/epub-LSJCIYTM.js
13 ?rw-r--r--··6.1·unx·····3970·bx·defN·25-Feb-13·10:51·OEBPS/crypto_app.xhtml13 ?rw-r--r--··6.1·unx·····3970·bx·defN·25-Feb-13·09:27·OEBPS/crypto_app.xhtml
14 ?rw-r--r--··6.1·unx···285776·bx·defN·25-Feb-13·10:51·OEBPS/crypto.xhtml14 ?rw-r--r--··6.1·unx···285776·bx·defN·25-Feb-13·09:27·OEBPS/crypto.xhtml
15 ?rw-r--r--··6.1·unx·····2365·bx·defN·25-Feb-13·10:51·OEBPS/content.opf15 ?rw-r--r--··6.1·unx·····2365·bx·defN·25-Feb-13·09:27·OEBPS/content.opf
16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:51·OEBPS/assets/logo.png16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:27·OEBPS/assets/logo.png
17 ?rw-r--r--··6.1·unx····29121·bx·defN·25-Feb-13·10:51·OEBPS/algorithm_details.xhtml17 ?rw-r--r--··6.1·unx····29121·bx·defN·25-Feb-13·09:27·OEBPS/algorithm_details.xhtml
18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:51·META-INF/container.xml18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:27·META-INF/container.xml
19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:51·META-INF/com.apple.ibooks.display-options.xml19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:27·META-INF/com.apple.ibooks.display-options.xml
20 18·files,·579869·bytes·uncompressed,·123538·bytes·compressed:··78.7%20 18·files,·579869·bytes·uncompressed,·123529·bytes·compressed:··78.7%
101 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:51:52,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:27:18,·uncompressed·size·20,·method=store
70.5 KB
OEBPS/new_api.xhtml
Max HTML report size reached
23.7 KB
OEBPS/engine_load.xhtml
Max HTML report size reached
18.8 KB
OEBPS/engine_keys.xhtml
Max HTML report size reached
27.1 KB
OEBPS/crypto.xhtml
Max HTML report size reached
1.21 KB
OEBPS/content.opf
1.18 KB
OEBPS/content.opf
Max HTML report size reached
27.2 KB
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/crypto.html
    
Offset 591, 15 lines modifiedOffset 591, 15 lines modified
  
591 ····<div·class="summary-row">591 ····<div·class="summary-row">
592 ······<div·class="summary-signature">592 ······<div·class="summary-signature">
593 ········<a·href="#t:rsa_params/0"·data-no-tooltip·translate="no">rsa_params()</a>593 ········<a·href="#t:rsa_params/0"·data-no-tooltip·translate="no">rsa_params()</a>
  
594 ······</div>594 ······</div>
  
595 ········<div·class="summary-synopsis"><pre><code·class="text">rsa_public()·=·[E,·N]</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rsa_private</span><span·class="p"·data-group-id="5125343955-1">(</span><span·class="p"·data-group-id="5125343955-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5125343955-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·862,·SHA:·3f704e64459f50543192c325d73e09c050f03b10b1c650df738fa5191cc8b1d1·...·]-3">]</span></code></pre><p>Where·E·is·the·public·exponent,·N·is·public·modulus·and·D·is·the·private595 ········<div·class="summary-synopsis"><pre><code·class="text">rsa_public()·=·[E,·N]</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rsa_private</span><span·class="p"·data-group-id="5336995908-1">(</span><span·class="p"·data-group-id="5336995908-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5336995908-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·862,·SHA:·e2dd4372f2394b0669acc300e59dc320fb497dadad3a47e21942dc3d5a338c87·...·]-3">]</span></code></pre><p>Where·E·is·the·public·exponent,·N·is·public·modulus·and·D·is·the·private
596 exponent.·The·longer·key·format·contains·redundant·information·that·will·make596 exponent.·The·longer·key·format·contains·redundant·information·that·will·make
597 the·calculation·faster.·P1·and·P2·are·first·and·second·prime·factors.·E1·and·E2597 the·calculation·faster.·P1·and·P2·are·first·and·second·prime·factors.·E1·and·E2
598 are·first·and·second·exponents.·C·is·the·CRT·coefficient.·The·terminology·is598 are·first·and·second·exponents.·C·is·the·CRT·coefficient.·The·terminology·is
599 taken·from·<a·href="http://www.ietf.org/rfc/rfc3447.txt">RFC·3447</a>.</p></div>599 taken·from·<a·href="http://www.ietf.org/rfc/rfc3447.txt">RFC·3447</a>.</p></div>
  
600 ····</div>600 ····</div>
  
Offset 3033, 15 lines modifiedOffset 3033, 15 lines modified
  
3033 ······<div·class="specs">3033 ······<div·class="specs">
  
3034 ··········<pre·translate="no"><span·class="attribute">-type</span>·rsa_params()·::·{ModulusSizeInBits·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·PublicExponent·::·<a·href="#t:key_integer/0">key_integer</a>()}.</pre>3034 ··········<pre·translate="no"><span·class="attribute">-type</span>·rsa_params()·::·{ModulusSizeInBits·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·PublicExponent·::·<a·href="#t:key_integer/0">key_integer</a>()}.</pre>
  
3035 ······</div>3035 ······</div>
  
3036 <pre><code·class="text">rsa_public()·=·[E,·N]</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rsa_private</span><span·class="p"·data-group-id="5125343955-1">(</span><span·class="p"·data-group-id="5125343955-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5125343955-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·862,·SHA:·3f704e64459f50543192c325d73e09c050f03b10b1c650df738fa5191cc8b1d1·...·]-3">]</span></code></pre><p>Where·E·is·the·public·exponent,·N·is·public·modulus·and·D·is·the·private3036 <pre><code·class="text">rsa_public()·=·[E,·N]</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">rsa_private</span><span·class="p"·data-group-id="5336995908-1">(</span><span·class="p"·data-group-id="5336995908-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5336995908-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·862,·SHA:·e2dd4372f2394b0669acc300e59dc320fb497dadad3a47e21942dc3d5a338c87·...·]-3">]</span></code></pre><p>Where·E·is·the·public·exponent,·N·is·public·modulus·and·D·is·the·private
3037 exponent.·The·longer·key·format·contains·redundant·information·that·will·make3037 exponent.·The·longer·key·format·contains·redundant·information·that·will·make
3038 the·calculation·faster.·P1·and·P2·are·first·and·second·prime·factors.·E1·and·E23038 the·calculation·faster.·P1·and·P2·are·first·and·second·prime·factors.·E1·and·E2
3039 are·first·and·second·exponents.·C·is·the·CRT·coefficient.·The·terminology·is3039 are·first·and·second·exponents.·C·is·the·CRT·coefficient.·The·terminology·is
3040 taken·from·<a·href="http://www.ietf.org/rfc/rfc3447.txt">RFC·3447</a>.</p>3040 taken·from·<a·href="http://www.ietf.org/rfc/rfc3447.txt">RFC·3447</a>.</p>
3041 ··</section>3041 ··</section>
3042 </section>3042 </section>
3043 <section·class="detail"·id="t:rsa_private/0">3043 <section·class="detail"·id="t:rsa_private/0">
Offset 5316, 17 lines modifiedOffset 5316, 17 lines modified
5316 ······</div>5316 ······</div>
  
5317 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html">random·number·generation</a>,·in·order·to5317 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html">random·number·generation</a>,·in·order·to
5318 generate·cryptographically·strong·random·numbers·(based·on·OpenSSL's5318 generate·cryptographically·strong·random·numbers·(based·on·OpenSSL's
5319 <code·class="inline">BN_rand_range</code>).</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as5319 <code·class="inline">BN_rand_range</code>).</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as
5320 well.·See·also·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_s/0"><code·class="inline">rand_seed_s/0</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it5320 well.·See·also·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_s/0"><code·class="inline">rand_seed_s/0</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it
5321 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due5321 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due
5322 to·lack·of·secure·&quot;randomness&quot;.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed</span><span·class="p"·data-group-id="9451047029-1">(</span><span·class="p"·data-group-id="9451047029-1">)</span><span·class="p">,</span><span·class="w">5322 to·lack·of·secure·&quot;randomness&quot;.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed</span><span·class="p"·data-group-id="0205005724-1">(</span><span·class="p"·data-group-id="0205005724-1">)</span><span·class="p">,</span><span·class="w">
5323 </span><span·class="p">_</span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="9451047029-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="9451047029-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·[1;·42]</span><span·class="w">5323 </span><span·class="p">_</span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="0205005724-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="0205005724-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·[1;·42]</span><span·class="w">
5324 </span><span·class="p">_</span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="9451047029-3">(</span><span·class="p"·data-group-id="9451047029-3">)</span><span·class="p">.</span><span·class="w">·····</span><span·class="c1">%·[0.0;·1.0[</span></code></pre>5324 </span><span·class="p">_</span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="0205005724-3">(</span><span·class="p"·data-group-id="0205005724-3">)</span><span·class="p">.</span><span·class="w">·····</span><span·class="c1">%·[0.0;·1.0[</span></code></pre>
5325 ··</section>5325 ··</section>
5326 </section>5326 </section>
5327 <section·class="detail"·id="rand_seed/1">5327 <section·class="detail"·id="rand_seed/1">
  
5328 ··<div·class="detail-header">5328 ··<div·class="detail-header">
5329 ····<a·href="#rand_seed/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">5329 ····<a·href="#rand_seed/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
5330 ······<i·class="ri-link-m"·aria-hidden="true"></i>5330 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 5380, 17 lines modifiedOffset 5380, 17 lines modified
  
5380 ······</div>5380 ······</div>
  
5381 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html">random·number·generation</a>,·in·order·to5381 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html">random·number·generation</a>,·in·order·to
5382 generate·cryptographically·strong·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also5382 generate·cryptographically·strong·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also
5383 <a·href="../../../../lib/stdlib-6.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_alg_s/1"><code·class="inline">rand_seed_alg_s/1</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it5383 <a·href="../../../../lib/stdlib-6.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_alg_s/1"><code·class="inline">rand_seed_alg_s/1</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it
5384 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due5384 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due
5385 to·lack·of·secure·&quot;randomness&quot;.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="3582876413-1">(</span><span·class="ss">crypto_cache</span><span·class="p"·data-group-id="3582876413-1">)</span><span·class="p">,</span><span·class="w">5385 to·lack·of·secure·&quot;randomness&quot;.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="7163962789-1">(</span><span·class="ss">crypto_cache</span><span·class="p"·data-group-id="7163962789-1">)</span><span·class="p">,</span><span·class="w">
5386 </span><span·class="p">_</span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="3582876413-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="3582876413-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·[1;·42]</span><span·class="w">5386 </span><span·class="p">_</span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="7163962789-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="7163962789-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·[1;·42]</span><span·class="w">
5387 </span><span·class="p">_</span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="3582876413-3">(</span><span·class="p"·data-group-id="3582876413-3">)</span><span·class="p">.</span><span·class="w">·····</span><span·class="c1">%·[0.0;·1.0[</span></code></pre>5387 </span><span·class="p">_</span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="7163962789-3">(</span><span·class="p"·data-group-id="7163962789-3">)</span><span·class="p">.</span><span·class="w">·····</span><span·class="c1">%·[0.0;·1.0[</span></code></pre>
5388 ··</section>5388 ··</section>
5389 </section>5389 </section>
5390 <section·class="detail"·id="rand_seed_alg/2">5390 <section·class="detail"·id="rand_seed_alg/2">
  
5391 ··<div·class="detail-header">5391 ··<div·class="detail-header">
5392 ····<a·href="#rand_seed_alg/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">5392 ····<a·href="#rand_seed_alg/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
5393 ······<i·class="ri-link-m"·aria-hidden="true"></i>5393 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 5412, 20 lines modifiedOffset 5412, 20 lines modified
  
5412 ··········<pre·translate="no"><span·class="attribute">-spec</span>·rand_seed_alg(Alg·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),·Seed·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·{<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html#t:alg_handler/0">rand:alg_handler</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="#t:rand_cache_seed/0">rand_cache_seed</a>()}.</pre>5412 ··········<pre·translate="no"><span·class="attribute">-spec</span>·rand_seed_alg(Alg·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),·Seed·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·{<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html#t:alg_handler/0">rand:alg_handler</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="#t:rand_cache_seed/0">rand_cache_seed</a>()}.</pre>
  
5413 ······</div>5413 ······</div>
  
5414 <p>Creates·a·state·object·for·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html">random·number·generation</a>,·in·order·to5414 <p>Creates·a·state·object·for·<a·href="../../../../lib/stdlib-6.2/doc/html/rand.html">random·number·generation</a>,·in·order·to
5415 generate·cryptographically·unpredictable·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also5415 generate·cryptographically·unpredictable·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also
5416 <a·href="#rand_seed_alg_s/2"><code·class="inline">rand_seed_alg_s/2</code></a>.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="1041104680-1">(</span><span·class="ss">crypto_aes</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my·seed&quot;</span><span·class="p"·data-group-id="1041104680-1">)</span><span·class="p">,</span><span·class="w">5416 <a·href="#rand_seed_alg_s/2"><code·class="inline">rand_seed_alg_s/2</code></a>.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="5939013281-1">(</span><span·class="ss">crypto_aes</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my·seed&quot;</span><span·class="p"·data-group-id="5939013281-1">)</span><span·class="p">,</span><span·class="w">
5417 </span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="1041104680-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="1041104680-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·[1;·42]</span><span·class="w">5417 </span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="5939013281-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5939013281-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·[1;·42]</span><span·class="w">
5418 </span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="1041104680-3">(</span><span·class="p"·data-group-id="1041104680-3">)</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%·[0.0;·1.0[</span><span·class="w">5418 </span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="5939013281-3">(</span><span·class="p"·data-group-id="5939013281-3">)</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%·[0.0;·1.0[</span><span·class="w">
5419 </span><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="1041104680-4">(</span><span·class="ss">crypto_aes</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my·seed&quot;</span><span·class="p"·data-group-id="1041104680-4">)</span><span·class="p">,</span><span·class="w">5419 </span><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="5939013281-4">(</span><span·class="ss">crypto_aes</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my·seed&quot;</span><span·class="p"·data-group-id="5939013281-4">)</span><span·class="p">,</span><span·class="w">
5420 </span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="1041104680-5">(</span><span·class="mi">42</span><span·class="p"·data-group-id="1041104680-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Same·values</span><span·class="w">5420 </span><span·class="n">IntegerValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="5939013281-5">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5939013281-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Same·values</span><span·class="w">
5421 </span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="1041104680-6">(</span><span·class="p"·data-group-id="1041104680-6">)</span><span·class="p">.</span><span·class="w">·····</span><span·class="c1">%·again</span></code></pre>5421 </span><span·class="n">FloatValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="5939013281-6">(</span><span·class="p"·data-group-id="5939013281-6">)</span><span·class="p">.</span><span·class="w">·····</span><span·class="c1">%·again</span></code></pre>
5422 ··</section>5422 ··</section>
5423 </section>5423 </section>
5424 <section·class="detail"·id="rand_seed_alg_s/1">5424 <section·class="detail"·id="rand_seed_alg_s/1">
  
5425 ··<div·class="detail-header">5425 ··<div·class="detail-header">
5426 ····<a·href="#rand_seed_alg_s/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">5426 ····<a·href="#rand_seed_alg_s/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
5427 ······<i·class="ri-link-m"·aria-hidden="true"></i>5427 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 5886, 20 lines modifiedOffset 5886, 20 lines modified
5886 ················cryptolib_version_compiled·=>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·undefined,5886 ················cryptolib_version_compiled·=>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·undefined,
5887 ················cryptolib_version_linked·:=·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),5887 ················cryptolib_version_linked·:=·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),
5888 ················link_type·:=·dynamic·|·static,5888 ················link_type·:=·dynamic·|·static,
5889 ················otp_crypto_version·:=·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()}.</pre>5889 ················otp_crypto_version·:=·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()}.</pre>
  
5890 ······</div>5890 ······</div>
  
5891 <p>Get·information·about·crypto·and·the·OpenSSL·backend.</p><p>Returns·a·map·with·information·about·the·compilation·and·linking·of·crypto.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="9195009166-1">(</span><span·class="p"·data-group-id="9195009166-1">)</span><span·class="p">.</span><span·class="w">5891 <p>Get·information·about·crypto·and·the·OpenSSL·backend.</p><p>Returns·a·map·with·information·about·the·compilation·and·linking·of·crypto.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="7222513234-1">(</span><span·class="p"·data-group-id="7222513234-1">)</span><span·class="p">.</span><span·class="w">
5892 </span><span·class="p"·data-group-id="9195009166-2">#{</span><span·class="ss">compile_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">5892 </span><span·class="p"·data-group-id="7222513234-2">#{</span><span·class="ss">compile_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">
5893 ··</span><span·class="ss">cryptolib_version_compiled</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;OpenSSL·3.0.0·7·sep·2021&quot;</span><span·class="p">,</span><span·class="w">5893 ··</span><span·class="ss">cryptolib_version_compiled</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;OpenSSL·3.0.0·7·sep·2021&quot;</span><span·class="p">,</span><span·class="w">
5894 ··</span><span·class="ss">cryptolib_version_linked</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;OpenSSL·3.0.0·7·sep·2021&quot;</span><span·class="p">,</span><span·class="w">5894 ··</span><span·class="ss">cryptolib_version_linked</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;OpenSSL·3.0.0·7·sep·2021&quot;</span><span·class="p">,</span><span·class="w">
5895 ··</span><span·class="ss">link_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">dynamic</span><span·class="p">,</span><span·class="w">5895 ··</span><span·class="ss">link_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">dynamic</span><span·class="p">,</span><span·class="w">
5896 ··</span><span·class="ss">otp_crypto_version</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;5.0.2&quot;</span><span·class="p"·data-group-id="9195009166-2">}</span><span·class="w">5896 ··</span><span·class="ss">otp_crypto_version</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;5.0.2&quot;</span><span·class="p"·data-group-id="7222513234-2">}</span><span·class="w">
5897 </span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre><p>More·association·types·than·documented·may·be·present·in·the·map.</p>5897 </span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre><p>More·association·types·than·documented·may·be·present·in·the·map.</p>
5898 ··</section>5898 ··</section>
5899 </section>5899 </section>
5900 <section·class="detail"·id="info_fips/0">5900 <section·class="detail"·id="info_fips/0">
  
5901 ··<div·class="detail-header">5901 ··<div·class="detail-header">
5902 ····<a·href="#info_fips/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">5902 ····<a·href="#info_fips/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 5954, 16 lines modifiedOffset 5954, 16 lines modified
5954 ··········<pre·translate="no"><span·class="attribute">-spec</span>·info_lib()·->·[{Name,·VerNum,·VerStr}]5954 ··········<pre·translate="no"><span·class="attribute">-spec</span>·info_lib()·->·[{Name,·VerNum,·VerStr}]
5955 ··················when·Name·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·VerNum·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·VerStr·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>5955 ··················when·Name·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·VerNum·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·VerStr·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>
  
5956 ······</div>5956 ······</div>
  
5957 <p>Get·the·name·and·version·of·the·libraries·used·by·crypto.</p><p><code·class="inline">Name</code>·is·the·name·of·the·library.·<code·class="inline">VerNum</code>·is·the·numeric·version·according·to5957 <p>Get·the·name·and·version·of·the·libraries·used·by·crypto.</p><p><code·class="inline">Name</code>·is·the·name·of·the·library.·<code·class="inline">VerNum</code>·is·the·numeric·version·according·to
5958 the·library's·own·versioning·scheme.·<code·class="inline">VerStr</code>·contains·a·text·variant·of·the5958 the·library's·own·versioning·scheme.·<code·class="inline">VerStr</code>·contains·a·text·variant·of·the
5959 version.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">info_lib</span><span·class="p"·data-group-id="3861867731-1">(</span><span·class="p"·data-group-id="3861867731-1">)</span><span·class="p">.</span><span·class="w">5959 version.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">info_lib</span><span·class="p"·data-group-id="7091059563-1">(</span><span·class="p"·data-group-id="7091059563-1">)</span><span·class="p">.</span><span·class="w">
5960 </span><span·class="p"·data-group-id="3861867731-2">[</span><span·class="p"·data-group-id="3861867731-3">{</span><span·class="p"·data-group-id="3861867731-4">&lt;&lt;</span><span·class="s">&quot;OpenSSL&quot;</span><span·class="p"·data-group-id="3861867731-4">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·367,·SHA:·8c981844f3fd2dfaffe79dd88a6fc8c12c9019904c7e78b88d38000affc5653d·...·]-2">]</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>From·OTP·R16·the·<em>numeric·version</em>·represents·the·version·of·the·OpenSSL5960 </span><span·class="p"·data-group-id="7091059563-2">[</span><span·class="p"·data-group-id="7091059563-3">{</span><span·class="p"·data-group-id="7091059563-4">&lt;&lt;</span><span·class="s">&quot;OpenSSL&quot;</span><span·class="p"·data-group-id="7091059563-4">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·367,·SHA:·1b620c0326677d2fb613028ef083072caa04fa110dfc6d9e93af773c3d5eb3e6·...·]-2">]</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>From·OTP·R16·the·<em>numeric·version</em>·represents·the·version·of·the·OpenSSL
5961 <em>header·files</em>·(<code·class="inline">openssl/opensslv.h</code>)·used·when·crypto·was·compiled.·The·text5961 <em>header·files</em>·(<code·class="inline">openssl/opensslv.h</code>)·used·when·crypto·was·compiled.·The·text
5962 variant·represents·the·libcrypto·library·used·at·runtime.·In·earlier·OTP5962 variant·represents·the·libcrypto·library·used·at·runtime.·In·earlier·OTP
5963 versions·both·numeric·and·text·was·taken·from·the·library.</p></section>5963 versions·both·numeric·and·text·was·taken·from·the·library.</p></section>
5964 ··</section>5964 ··</section>
5965 </section>5965 </section>
5966 <section·class="detail"·id="mod_pow/3">5966 <section·class="detail"·id="mod_pow/3">
  
19.0 KB
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/engine_keys.html
    
Offset 157, 50 lines modifiedOffset 157, 50 lines modified
157 <h3·id="sign-with-an-engine-stored-private-key"·class="section-heading">157 <h3·id="sign-with-an-engine-stored-private-key"·class="section-heading">
158 ··<a·href="#sign-with-an-engine-stored-private-key"·class="hover-link">158 ··<a·href="#sign-with-an-engine-stored-private-key"·class="hover-link">
159 ····<i·class="ri-link-m"·aria-hidden="true"></i>159 ····<i·class="ri-link-m"·aria-hidden="true"></i>
160 ··</a>160 ··</a>
161 ··<span·class="text">Sign·with·an·engine·stored·private·key</span>161 ··<span·class="text">Sign·with·an·engine·stored·private·key</span>
162 </h3>162 </h3>
163 <p>This·example·shows·how·to·construct·a·key·reference·that·is·used·in·a·sign163 <p>This·example·shows·how·to·construct·a·key·reference·that·is·used·in·a·sign
164 operation.·The·actual·key·is·stored·in·the·engine·that·is·loaded·at·prompt·1.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="6835591376-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p"·data-group-id="6835591376-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·0399c2ef830c75bc6fa65de7fc469aedb944b8ea8ac874eb89ac2cd858572690·...·]-2">)</span><span·class="p">.</span><span·class="w">164 operation.·The·actual·key·is·stored·in·the·engine·that·is·loaded·at·prompt·1.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="7252186578-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p"·data-group-id="7252186578-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·24a0ee5e14c3cf63fff4e464e669273b747d3c43d5ec670bab2ce2fd05d7a08f·...·]-2">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">165 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
166 </span><span·class="p"·data-group-id="6835591376-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2399045421</span><span·class="p">.</span><span·class="mf">3028942852.173962</span><span·[·...·truncated·by·diffoscope;·len:·62,·SHA:·0a5d7a00bed550a25a5658a4ae06808e0bb6054c54069e79e3620d5aa5b9f54a·...·]-3">}</span><span·class="gp·unselectable">166 </span><span·class="p"·data-group-id="7252186578-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2399045421</span><span·class="p">.</span><span·class="mf">3028942852.173962</span><span·[·...·truncated·by·diffoscope;·len:·62,·SHA:·27e07a06b1e1a79dc1dcab9bbe35a472bfb4fa4f5f37bf5b018a863f7679772e·...·]-3">}</span><span·class="gp·unselectable">
167 2&gt;·</span><span·class="n">PrivKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6835591376-4">#{</span><span·class="ss">engine</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p">,</span><span·class="w">167 2&gt;·</span><span·class="n">PrivKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7252186578-4">#{</span><span·class="ss">engine</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p">,</span><span·class="w">
168 ···············</span><span·class="ss">key_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;id·of·the·private·key·in·Engine&quot;</span><span·class="p"·data-group-id="6835591376-4">}</span><span·class="p">.</span><span·class="w">168 ···············</span><span·class="ss">key_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;id·of·the·private·key·in·Engine&quot;</span><span·class="p"·data-group-id="7252186578-4">}</span><span·class="p">.</span><span·class="w">
169 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">169 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
170 3&gt;·</span><span·class="n">Signature</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">sign</span><span·class="p"·data-group-id="6835591376-5">(</span><span·class="ss">rsa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6835591376-6">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·201,·SHA:·88f0431f52d7027c4a0e0d7417ed5fae73e2f5b128545a6bd41d6885064c7cd6·...·]-5">)</span><span·class="p">.</span><span·class="w">170 3&gt;·</span><span·class="n">Signature</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">sign</span><span·class="p"·data-group-id="7252186578-5">(</span><span·class="ss">rsa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7252186578-6">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·201,·SHA:·cc454913c1da3a5e5e69766a110210c783ccbd3217585fc3d497d2b67c43c103·...·]-5">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="6835591376-7">&lt;&lt;</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">125</span><span·class="p">,</span><span·class="mi">254</span><span·class="p">,</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">233</span><span·class="p">,</span><span·class="mi">84</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">63</span><span·class="p">,</span><span·class="mi">168</span><span·class="p">,</span><span·class="mi">28</span><span·class="p">,</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">121</span><span·class="p">,</span><span·class="mi">76</span><span·class="p">,</span><span·class="w">171 </span><span·class="p"·data-group-id="7252186578-7">&lt;&lt;</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">125</span><span·class="p">,</span><span·class="mi">254</span><span·class="p">,</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">233</span><span·class="p">,</span><span·class="mi">84</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">63</span><span·class="p">,</span><span·class="mi">168</span><span·class="p">,</span><span·class="mi">28</span><span·class="p">,</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">121</span><span·class="p">,</span><span·class="mi">76</span><span·class="p">,</span><span·class="w">
172 ··</span><span·class="mi">207</span><span·class="p">,</span><span·class="mi">177</span><span·class="p">,</span><span·class="mi">124</span><span·class="p">,</span><span·class="mi">183</span><span·class="p">,</span><span·class="mi">156</span><span·class="p">,</span><span·class="mi">185</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">243</span><span·class="p">,</span><span·class="mi">36</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">125</span><span·class="p">,</span><span·class="mi">230</span><span·class="p">,</span><span·class="mi">231</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6835591376-7">&gt;&gt;</span></code></pre><h3·id="verify-with-an-engine-stored-public-key"·class="section-heading">172 ··</span><span·class="mi">207</span><span·class="p">,</span><span·class="mi">177</span><span·class="p">,</span><span·class="mi">124</span><span·class="p">,</span><span·class="mi">183</span><span·class="p">,</span><span·class="mi">156</span><span·class="p">,</span><span·class="mi">185</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">243</span><span·class="p">,</span><span·class="mi">36</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">125</span><span·class="p">,</span><span·class="mi">230</span><span·class="p">,</span><span·class="mi">231</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7252186578-7">&gt;&gt;</span></code></pre><h3·id="verify-with-an-engine-stored-public-key"·class="section-heading">
173 ··<a·href="#verify-with-an-engine-stored-public-key"·class="hover-link">173 ··<a·href="#verify-with-an-engine-stored-public-key"·class="hover-link">
174 ····<i·class="ri-link-m"·aria-hidden="true"></i>174 ····<i·class="ri-link-m"·aria-hidden="true"></i>
175 ··</a>175 ··</a>
176 ··<span·class="text">Verify·with·an·engine·stored·public·key</span>176 ··<span·class="text">Verify·with·an·engine·stored·public·key</span>
177 </h3>177 </h3>
178 <p>Here·the·signature·and·message·in·the·last·example·is·verifyed·using·the·public178 <p>Here·the·signature·and·message·in·the·last·example·is·verifyed·using·the·public
179 key.·The·public·key·is·stored·in·an·engine,·only·to·exemplify·that·it·is179 key.·The·public·key·is·stored·in·an·engine,·only·to·exemplify·that·it·is
180 possible.·The·public·key·could·of·course·be·handled·openly·as·usual.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="n">PublicKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2052063106-1">#{</span><span·class="ss">engine</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p">,</span><span·class="w">180 possible.·The·public·key·could·of·course·be·handled·openly·as·usual.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="n">PublicKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3582890038-1">#{</span><span·class="ss">engine</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p">,</span><span·class="w">
181 ·················</span><span·class="ss">key_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;id·of·the·public·key·in·Engine&quot;</span><span·class="p"·data-group-id="2052063106-1">}</span><span·class="p">.</span><span·class="w">181 ·················</span><span·class="ss">key_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;id·of·the·public·key·in·Engine&quot;</span><span·class="p"·data-group-id="3582890038-1">}</span><span·class="p">.</span><span·class="w">
182 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">182 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
183 5&gt;·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">verify</span><span·class="p"·data-group-id="2052063106-2">(</span><span·class="ss">rsa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2052063106-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·283,·SHA:·0a05224894be9c8bff5b2f90cbb90698c83d387c657e603b841329f9f85b71d0·...·]-2">)</span><span·class="p">.</span><span·class="w">183 5&gt;·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">verify</span><span·class="p"·data-group-id="3582890038-2">(</span><span·class="ss">rsa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3582890038-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·283,·SHA:·a706094a71d0099a410f5be1077480377174745b93059e895a527bd5a3ea44b5·...·]-2">)</span><span·class="p">.</span><span·class="w">
184 </span><span·class="ss">true</span><span·class="w">184 </span><span·class="ss">true</span><span·class="w">
185 </span><span·class="mi">6</span><span·class="o">&gt;</span></code></pre><h3·id="using-a-password-protected-private-key"·class="section-heading">185 </span><span·class="mi">6</span><span·class="o">&gt;</span></code></pre><h3·id="using-a-password-protected-private-key"·class="section-heading">
186 ··<a·href="#using-a-password-protected-private-key"·class="hover-link">186 ··<a·href="#using-a-password-protected-private-key"·class="hover-link">
187 ····<i·class="ri-link-m"·aria-hidden="true"></i>187 ····<i·class="ri-link-m"·aria-hidden="true"></i>
188 ··</a>188 ··</a>
189 ··<span·class="text">Using·a·password·protected·private·key</span>189 ··<span·class="text">Using·a·password·protected·private·key</span>
190 </h3>190 </h3>
191 <p>The·same·example·as·the·first·sign·example,·except·that·a·password·protects·the191 <p>The·same·example·as·the·first·sign·example,·except·that·a·password·protects·the
192 key·down·in·the·Engine.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="n">PrivKeyPwd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9054568091-1">#{</span><span·class="ss">engine</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p">,</span><span·class="w">192 key·down·in·the·Engine.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="n">PrivKeyPwd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9312594884-1">#{</span><span·class="ss">engine</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">EngineRef</span><span·class="p">,</span><span·class="w">
193 ··················</span><span·class="ss">key_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;id·of·the·pwd·protected·private·key·in·Engine&quot;</span><span·class="p">,</span><span·class="w">193 ··················</span><span·class="ss">key_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;id·of·the·pwd·protected·private·key·in·Engine&quot;</span><span·class="p">,</span><span·class="w">
194 »       »       ··</span><span·class="ss">password</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;password&quot;</span><span·class="p"·data-group-id="9054568091-1">}</span><span·class="p">.</span><span·class="w">194 »       »       ··</span><span·class="ss">password</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;password&quot;</span><span·class="p"·data-group-id="9312594884-1">}</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">195 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
196 7&gt;·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">sign</span><span·class="p"·data-group-id="9054568091-2">(</span><span·class="ss">rsa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9054568091-3">&lt;&lt;</span><span·class="s">&quot;The[·...·truncated·by·diffoscope;·len:·203,·SHA:·0c3fe419718d87abf93ebca119a3c304b38bcf95552dc5d76594a8e47ecc0812·...·]-2">)</span><span·class="p">.</span><span·class="w">196 7&gt;·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">sign</span><span·class="p"·data-group-id="9312594884-2">(</span><span·class="ss">rsa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9312594884-3">&lt;&lt;</span><span·class="s">&quot;The[·...·truncated·by·diffoscope;·len:·203,·SHA:·97ab1460241278b3a5ff8db1baa8249061376091b07d9cc1a5deae2d4e511fc5·...·]-2">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="9054568091-4">&lt;&lt;</span><span·class="mi">140</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">168</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">234</span><span·class="p">,</span><span·class="mi">211</span><span·class="p">,</span><span·class="mi">146</span><span·class="p">,</span><span·class="mi">183</span><span·class="p">,</span><span·class="mi">231</span><span·class="p">,</span><span·class="mi">190</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">85</span><span·class="p">,</span><span·class="mi">163</span><span·class="p">,</span><span·class="w">197 </span><span·class="p"·data-group-id="9312594884-4">&lt;&lt;</span><span·class="mi">140</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">168</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">234</span><span·class="p">,</span><span·class="mi">211</span><span·class="p">,</span><span·class="mi">146</span><span·class="p">,</span><span·class="mi">183</span><span·class="p">,</span><span·class="mi">231</span><span·class="p">,</span><span·class="mi">190</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">85</span><span·class="p">,</span><span·class="mi">163</span><span·class="p">,</span><span·class="w">
198 ··</span><span·class="mi">175</span><span·class="p">,</span><span·class="mi">106</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">241</span><span·class="p">,</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">120</span><span·class="p">,</span><span·class="mi">72</span><span·class="p">,</span><span·class="mi">149</span><span·class="p">,</span><span·class="mi">181</span><span·class="p">,</span><span·class="mi">181</span><span·class="p">,</span><span·class="mi">194</span><span·class="p">,</span><span·class="mi">154</span><span·class="p">,</span><span·class="mi">175</span><span·class="p">,</span><span·class="mi">76</span><span·class="p">,</span><span·class="w">198 ··</span><span·class="mi">175</span><span·class="p">,</span><span·class="mi">106</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">241</span><span·class="p">,</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">120</span><span·class="p">,</span><span·class="mi">72</span><span·class="p">,</span><span·class="mi">149</span><span·class="p">,</span><span·class="mi">181</span><span·class="p">,</span><span·class="mi">181</span><span·class="p">,</span><span·class="mi">194</span><span·class="p">,</span><span·class="mi">154</span><span·class="p">,</span><span·class="mi">175</span><span·class="p">,</span><span·class="mi">76</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="mi">223</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9054568091-4">&gt;&gt;</span><span·class="w">199 ··</span><span·class="mi">223</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9312594884-4">&gt;&gt;</span><span·class="w">
200 </span><span·class="mi">8</span><span·class="o">&gt;</span></code></pre>200 </span><span·class="mi">8</span><span·class="o">&gt;</span></code></pre>
201 </div>201 </div>
  
202 <div·class="bottom-actions"·id="bottom-actions">202 <div·class="bottom-actions"·id="bottom-actions">
203 ··<div·class="bottom-actions-item">203 ··<div·class="bottom-actions-item">
  
204 ······<a·href="engine_load.html"·class="bottom-actions-button"·rel="prev">204 ······<a·href="engine_load.html"·class="bottom-actions-button"·rel="prev">
23.9 KB
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/engine_load.html
    
Offset 148, 64 lines modifiedOffset 148, 64 lines modified
148 <h3·id="dynamically-load-an-engine-from-default-directory"·class="section-heading">148 <h3·id="dynamically-load-an-engine-from-default-directory"·class="section-heading">
149 ··<a·href="#dynamically-load-an-engine-from-default-directory"·class="hover-link">149 ··<a·href="#dynamically-load-an-engine-from-default-directory"·class="hover-link">
150 ····<i·class="ri-link-m"·aria-hidden="true"></i>150 ····<i·class="ri-link-m"·aria-hidden="true"></i>
151 ··</a>151 ··</a>
152 ··<span·class="text">Dynamically·load·an·engine·from·default·directory</span>152 ··<span·class="text">Dynamically·load·an·engine·from·default·directory</span>
153 </h3>153 </h3>
154 <p>If·the·engine·is·located·in·the·OpenSSL/LibreSSL·installation·<code·class="inline">engines</code>154 <p>If·the·engine·is·located·in·the·OpenSSL/LibreSSL·installation·<code·class="inline">engines</code>
155 directory.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="7709475250-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Engine</span><span·class="p"·data-group-id="7709475250-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_load</span><span·class="p"·data-group-id="7709475250-2">(</span><span·class="p"·data-group-id="7709475250-3">&lt;&lt;</span><span·class="s">&quot;otp_test_engine&quot;</span><span·class="p"·data-group-id="7709475250-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7709475250-4">[</span><span·class="p"·data-group-id="7709475250-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7709475250-5">[</span><span·class="p"·data-group-id="7709475250-5">]</span><span·class="p"·data-group-id="7709475250-2">)</span><span·class="p">.</span><span·class="w"> 
156 ·</span><span·class="p"·data-group-id="7709475250-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="7709475250-6">}</span></code></pre><h3·i[·...·truncated·by·diffoscope;·len:·65,·SHA:·6843b29c2536b654e20e52263252797b98ab356d5b1d426f542309cac7f8a9e7·...·]">155 directory.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="6497457147-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Engine</[·...·truncated·by·diffoscope;·len:·841,·SHA:·bd3dc71f2731a8b455f947f0a8a23076a8a5596867b9863dd17b88edee9927df·...·]">
 156 ·</span><span·class="p"·data-group-id="6497457147-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="6497457147-6">}</span></code></pre><h3·id="load-an-engine-with-the-dynamic-engine"·class="section-heading">
157 ··<a·href="#load-an-engine-with-the-dynamic-engine"·class="hover-link">157 ··<a·href="#load-an-engine-with-the-dynamic-engine"·class="hover-link">
158 ····<i·class="ri-link-m"·aria-hidden="true"></i>158 ····<i·class="ri-link-m"·aria-hidden="true"></i>
159 ··</a>159 ··</a>
160 ··<span·class="text">Load·an·engine·with·the·dynamic·engine</span>160 ··<span·class="text">Load·an·engine·with·the·dynamic·engine</span>
161 </h3>161 </h3>
162 <p>Load·an·engine·with·the·help·of·the·dynamic·engine·by·giving·the·path·to·the162 <p>Load·an·engine·with·the·help·of·the·dynamic·engine·by·giving·the·path·to·the
163 library.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8167002972-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Engine</span><span·class="p"·data-group-id="8167002972-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_load</span><span·class="p"·data-group-id="8167002972-2">(</span><span·class="p"·data-group-id="8167002972-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="8167002972-3">&gt;&gt;</span><span·class="p">,</span><span·class="w"> 
164 ······································</span><span·class="p"·data-group-id="8167002972-4">[</span><span·class="p"·data-group-id="8167002972-5">{</span><span·class="p"·data-group-id="8167002972-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><sp[·...·truncated·by·diffoscope;·len:·40,·SHA:·e5f5ff9d7da901188b6088e62251949cb0a4ff4a16ca0cf0b9e2baf7bd8cec7f·...·]">&gt;&gt;</span><span·class="p">,</span><span·class="w">163 library.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0923786598-1">{</span><span·class="ss">ok</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·472,·SHA:·666d8cd5aa18bfb49abc0d95e6650ea19ce89aae2a8559c6b70856ecb0353757·...·]">&gt;&gt;</span><span·class="p">,</span><span·class="w">
 164 ······································</span><span·class="p"·data-group-id="0923786598-4">[</span><span·class="p"·data-group-id="0923786598-5">{</span><span·class="p"·data-group-id="0923786598-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="0923786598-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">
165 ········································</span><span·class="p"·data-group-id="8167002972-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="8167002972-7">&gt;&gt;</span><span·class="p"·data-group-id="8167002972-5">}</span><span·class="p">,</span><span·class="w">165 ········································</span><span·class="p"·data-group-id="0923786598-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="0923786598-7">&gt;&gt;</span><span·class="p"·data-group-id="0923786598-5">}</span><span·class="p">,</span><span·class="w">
166 ·······································</span><span·class="p"·data-group-id="8167002972-8">{</span><span·class="p"·data-group-id="8167002972-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="8167002972-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·a0d796c80c75138a678a56dc398c3858b253574d9f2d05ca63cc43db2ad801b5·...·]-8">}</span><span·class="p">,</span><span·class="w">166 ·······································</span><span·class="p"·data-group-id="0923786598-8">{</span><span·class="p"·data-group-id="0923786598-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="0923786598-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·eebc8d2f95e6d344942f6b7a8011541459ebbf563a2fd56a16c8fc9d22e4899b·...·]-8">}</span><span·class="p">,</span><span·class="w">
167 ·······································</span><span·class="p"·data-group-id="8167002972-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="8167002972-11">&gt;&gt;</span><span·class="p"·data-group-id="8167002972-4">]</span><span·class="p">,</span><span·class="w">167 ·······································</span><span·class="p"·data-group-id="0923786598-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="0923786598-11">&gt;&gt;</span><span·class="p"·data-group-id="0923786598-4">]</span><span·class="p">,</span><span·class="w">
168 ······································</span><span·class="p"·data-group-id="8167002972-12">[</span><span·class="p"·data-group-id="8167002972-12">]</span><span·class="p"·data-group-id="8167002972-2">)</span><span·class="p">.</span><span·class="w">168 ······································</span><span·class="p"·data-group-id="0923786598-12">[</span><span·class="p"·data-group-id="0923786598-12">]</span><span·class="p"·data-group-id="0923786598-2">)</span><span·class="p">.</span><span·class="w">
169 ·</span><span·class="p"·data-group-id="8167002972-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="8167002972-13">}</span></code></pre><h3·id="load-an-engine-and-replace-some-methods"·class="section-heading">169 ·</span><span·class="p"·data-group-id="0923786598-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="0923786598-13">}</span></code></pre><h3·id="load-an-engine-and-replace-some-methods"·class="section-heading">
170 ··<a·href="#load-an-engine-and-replace-some-methods"·class="hover-link">170 ··<a·href="#load-an-engine-and-replace-some-methods"·class="hover-link">
171 ····<i·class="ri-link-m"·aria-hidden="true"></i>171 ····<i·class="ri-link-m"·aria-hidden="true"></i>
172 ··</a>172 ··</a>
173 ··<span·class="text">Load·an·engine·and·replace·some·methods</span>173 ··<span·class="text">Load·an·engine·and·replace·some·methods</span>
174 </h3>174 </h3>
175 <p>Load·an·engine·with·the·help·of·the·dynamic·engine·and·just·replace·some·engine175 <p>Load·an·engine·with·the·help·of·the·dynamic·engine·and·just·replace·some·engine
176 methods.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1274876455-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Engine</span><span·class="p"·data-group-id="1274876455-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·279,·SHA:·e8e266771723e60e6304d8b9c79e413ae755c7a7f4cac36d2f380e3fa1871f7e·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">176 methods.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4612529174-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Engine</span><span·class="p"·data-group-id="4612529174-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·279,·SHA:·ac0f5c3b22f0c987dd006ec5cbad0976fc7025ff45d1b0a41d463a8080361a33·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">
177 ······································</span><span·class="p"·data-group-id="1274876455-4">[</span><span·class="p"·data-group-id="1274876455-5">{</span><span·class="p"·data-group-id="1274876455-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="1274876455-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">177 ······································</span><span·class="p"·data-group-id="4612529174-4">[</span><span·class="p"·data-group-id="4612529174-5">{</span><span·class="p"·data-group-id="4612529174-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="4612529174-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">
178 ········································</span><span·class="p"·data-group-id="1274876455-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="1274876455-7">&gt;&gt;</span><span·class="p"·data-group-id="1274876455-5">}</span><span·class="p">,</span><span·class="w">178 ········································</span><span·class="p"·data-group-id="4612529174-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="4612529174-7">&gt;&gt;</span><span·class="p"·data-group-id="4612529174-5">}</span><span·class="p">,</span><span·class="w">
179 ·······································</span><span·class="p"·data-group-id="1274876455-8">{</span><span·class="p"·data-group-id="1274876455-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="1274876455-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1274876455-10">&lt;&lt;</span><span·class="s">&quot;MD5&quot;</span><span·class="p"·data-group-id="1274876455-10">&gt;&gt;</span><span·class="p"·data-group-id="1274876455-8">}</span><span·class="p">,</span><span·class="w"> 
180 ·······································</span><span·class="p"·data-group-id="1274876455-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="1274876455-11">&gt;&gt;</span><span·class="p"·data-group-id="1274876455-4">]</span><span·class="p">,</span><span·class="w">179 ·······································</span><span·class="p"·data-group-id="4612529174-8">{</span><span·class="p"·data-group-id="4612529174-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="4612529174-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·177,·SHA:·9f1f80b3f243e592f4d12bcf5c7abe22ec49ea21b7f303426e8dfe1408885286·...·]</span><span·class="p">,</span><span·class="w">
 180 ·······································</span><span·class="p"·data-group-id="4612529174-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="4612529174-11">&gt;&gt;</span><span·class="p"·data-group-id="4612529174-4">]</span><span·class="p">,</span><span·class="w">
181 ······································</span><span·class="p"·data-group-id="1274876455-12">[</span><span·class="p"·data-group-id="1274876455-12">]</span><span·class="p"·data-group-id="1274876455-2">)</span><span·class="p">.</span><span·class="w">181 ······································</span><span·class="p"·data-group-id="4612529174-12">[</span><span·class="p"·data-group-id="4612529174-12">]</span><span·class="p"·data-group-id="4612529174-2">)</span><span·class="p">.</span><span·class="w">
182 </span><span·class="p"·data-group-id="1274876455-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="1274876455-13">}</span><span·class="gp·unselectable">182 </span><span·class="p"·data-group-id="4612529174-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="4612529174-13">}</span><span·class="gp·unselectable">
183 4&gt;·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_register</span><span·class="p"·data-group-id="1274876455-14">(</span><span·class="n">Engine</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1274876455-15">[</span><span·class="ss">engine_method_digests</span><span·class="p"·data-group-id="1274876455-15">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·8d55df03b9652a7e4b0c85a130ff4b0e7ce8eb549b154d7c98f343cf5e8ab921·...·]-14">)</span><span·class="p">.</span><span·class="w">183 4&gt;·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_register</span><span·class="p"·data-group-id="4612529174-14">(</span><span·class="n">Engine</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4612529174-15">[</span><span·class="ss">engine_method_digests</span><span·class="p"·data-group-id="4612529174-15">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·77f735acc256eb45ea891cff541811c18f9f4a2fd4460406664b67beafae0ddd·...·]-14">)</span><span·class="p">.</span><span·class="w">
184 </span><span·class="ss">ok</span></code></pre><h3·id="load-with-the-ensure-loaded-function"·class="section-heading">184 </span><span·class="ss">ok</span></code></pre><h3·id="load-with-the-ensure-loaded-function"·class="section-heading">
185 ··<a·href="#load-with-the-ensure-loaded-function"·class="hover-link">185 ··<a·href="#load-with-the-ensure-loaded-function"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">Load·with·the·ensure·loaded·function</span>188 ··<span·class="text">Load·with·the·ensure·loaded·function</span>
189 </h3>189 </h3>
190 <p>This·function·makes·sure·the·engine·is·loaded·just·once·and·the·ID·is·added·to190 <p>This·function·makes·sure·the·engine·is·loaded·just·once·and·the·ID·is·added·to
191 the·internal·engine·list·of·OpenSSL.·The·following·calls·to·the·function·will191 the·internal·engine·list·of·OpenSSL.·The·following·calls·to·the·function·will
192 check·if·the·ID·is·loaded·and·then·just·get·a·new·reference·to·the·engine.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9232678620-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Engine</span><span·class="p"·data-group-id="9232678620-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·f5ecbebe52ab8a95a76b1ccb17f2a712b823cbb75c3ee687d1f1ef6888ae4ed3·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">192 check·if·the·ID·is·loaded·and·then·just·get·a·new·reference·to·the·engine.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7734059972-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Engine</span><span·class="p"·data-group-id="7734059972-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·7028831a5c00298e7a2835b0096ccd43c253932846fc9d8a7633ca71ab22c7e7·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">
193 ···············································</span><span·class="p"·data-group-id="9232678620-4">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="9232678620-4">&gt;&gt;</span><span·class="p"·data-group-id="9232678620-2">)</span><span·class="p">.</span><span·class="w">193 ···············································</span><span·class="p"·data-group-id="7734059972-4">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="7734059972-4">&gt;&gt;</span><span·class="p"·data-group-id="7734059972-2">)</span><span·class="p">.</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="9232678620-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="9232678620-5">}</span></code></pre><p>To·remove·the·tag·from·the·OpenSSL·engine[·...·truncated·by·diffoscope;·len:·469,·SHA:·7f9fea8bdf8553803ac0c66769c1647ea38b3c5470c94a4b17812606b01dac56·...·]-1">)</span><span·class="p">.</span><span·class="w">194 ·</span><span·class="p"·data-group-id="7734059972-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Ref</span><span·class="p"·data-group-id="7734059972-5">}</span></code></pre><p>To·remove·the·tag·from·the·OpenSSL·engine[·...·truncated·by·diffoscope;·len:·469,·SHA:·1349413c9c369fa43414227c246de35547596fe3a486cc93bd235bb62571679f·...·]-1">)</span><span·class="p">.</span><span·class="w">
195 ·</span><span·class="ss">ok</span></code></pre><p>To·unload·it·use·<a·href="crypto.html#engine_unload/1"><code·class="inline">crypto:engine_unload/1</code></a>·which·removes·the·references·to·the195 ·</span><span·class="ss">ok</span></code></pre><p>To·unload·it·use·<a·href="crypto.html#engine_unload/1"><code·class="inline">crypto:engine_unload/1</code></a>·which·removes·the·references·to·the
196 engine.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_unload</span><span·class="p"·data-group-id="0692895312-1">(</span><span·class="n">Engine</span><span·class="p"·data-group-id="0692895312-1">)</span><span·class="p">.</span><span·class="w">196 engine.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_unload</span><span·class="p"·data-group-id="9043171234-1">(</span><span·class="n">Engine</span><span·class="p"·data-group-id="9043171234-1">)</span><span·class="p">.</span><span·class="w">
197 ·</span><span·class="ss">ok</span></code></pre><h3·id="list-all-engines-currently-loaded"·class="section-heading">197 ·</span><span·class="ss">ok</span></code></pre><h3·id="list-all-engines-currently-loaded"·class="section-heading">
198 ··<a·href="#list-all-engines-currently-loaded"·class="hover-link">198 ··<a·href="#list-all-engines-currently-loaded"·class="hover-link">
199 ····<i·class="ri-link-m"·aria-hidden="true"></i>199 ····<i·class="ri-link-m"·aria-hidden="true"></i>
200 ··</a>200 ··</a>
201 ··<span·class="text">List·all·engines·currently·loaded</span>201 ··<span·class="text">List·all·engines·currently·loaded</span>
202 </h3>202 </h3>
203 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_list</span><span·class="p"·data-group-id="1652317265-1">(</span><span·class="p"·data-group-id="1652317265-1">)</span><span·class="p">.</span><span·class="w">203 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">engine_list</span><span·class="p"·data-group-id="8741763392-1">(</span><span·class="p"·data-group-id="8741763392-1">)</span><span·class="p">.</span><span·class="w">
204 </span><span·class="p"·data-group-id="1652317265-2">[</span><span·class="p"·data-group-id="1652317265-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="1652317265-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·175,·SHA:·71fdb5d563ce6f7ae1209279c7bf780ac91f11d9b5f8020420c7650d5d458dbf·...·]-2">]</span></code></pre>204 </span><span·class="p"·data-group-id="8741763392-2">[</span><span·class="p"·data-group-id="8741763392-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="8741763392-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·175,·SHA:·eb7ca830e97a3a7652359c3cc58b86b6fd4ebfdd515fa81e56d1d13caa296e8d·...·]-2">]</span></code></pre>
205 </div>205 </div>
  
206 <div·class="bottom-actions"·id="bottom-actions">206 <div·class="bottom-actions"·id="bottom-actions">
207 ··<div·class="bottom-actions-item">207 ··<div·class="bottom-actions-item">
  
208 ······<a·href="fips.html"·class="bottom-actions-button"·rel="prev">208 ······<a·href="fips.html"·class="bottom-actions-button"·rel="prev">
209 ········<span·class="subheader">209 ········<span·class="subheader">
70.6 KB
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/new_api.html
    
Offset 188, 111 lines modifiedOffset 188, 111 lines modified
188 </h3>188 </h3>
189 <p>The·functions·<a·href="crypto.html#crypto_init/4">crypto_init/4</a>·and189 <p>The·functions·<a·href="crypto.html#crypto_init/4">crypto_init/4</a>·and
190 <a·href="crypto.html#crypto_update/2">crypto_update/2</a>·are·intended·to·be·used·for190 <a·href="crypto.html#crypto_update/2">crypto_update/2</a>·are·intended·to·be·used·for
191 encrypting·or·decrypting·a·sequence·of·blocks.·First·one·call·of·<code·class="inline">crypto_init/4</code>191 encrypting·or·decrypting·a·sequence·of·blocks.·First·one·call·of·<code·class="inline">crypto_init/4</code>
192 initialises·the·crypto·context.·One·or·more·calls·<code·class="inline">crypto_update/2</code>·does·the192 initialises·the·crypto·context.·One·or·more·calls·<code·class="inline">crypto_update/2</code>·does·the
193 actual·encryption·or·decryption·for·each·block.</p><p>This·example·shows·first·the·encryption·of·two·blocks·and·then·decryptions·of193 actual·encryption·or·decryption·for·each·block.</p><p>This·example·shows·first·the·encryption·of·two·blocks·and·then·decryptions·of
194 the·cipher·text,·but·divided·into·three·blocks·just·to·show·that·it·is·possible194 the·cipher·text,·but·divided·into·three·blocks·just·to·show·that·it·is·possible
195 to·divide·the·plain·text·and·cipher·text·differently·for·some·ciphers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»    </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7352665281-1">(</span><span·class="p"·data-group-id="7352665281-1">)</span><span·class="p">.</span><span·class="w">195 to·divide·the·plain·text·and·cipher·text·differently·for·some·ciphers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»    </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="6534878025-1">(</span><span·class="p"·data-group-id="6534878025-1">)</span><span·class="p">.</span><span·class="w">
196 »       </span><span·class="ss">ok</span><span·class="w">196 »       </span><span·class="ss">ok</span><span·class="w">
197 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7352665281-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="7352665281-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">197 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6534878025-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6534878025-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">
198 »       </span><span·class="p"·data-group-id="7352665281-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·258c44418242477439afb494e44027a28eb1a4fe9885d93b2baab97f2fae8772·...·]-3">&gt;&gt;</span><span·class="w">198 »       </span><span·class="p"·data-group-id="6534878025-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·59731f02d8cef2a55f74fbe52ecb275ab591d2e387d14ea18b2b9b30884b14ae·...·]-3">&gt;&gt;</span><span·class="w">
199 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">IV</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7352665281-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="7352665281-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">199 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">IV</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6534878025-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6534878025-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">
200 »       </span><span·class="p"·data-group-id="7352665281-5">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·af4455e1f150e9003c446d9e9ad71b63b9f98dbc96172a6add595d5d4c24d505·...·]-5">&gt;&gt;</span><span·class="w">200 »       </span><span·class="p"·data-group-id="6534878025-5">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·2b15997cc93492eb78baa13a80a8b580380f7ae8d369c7189d8663fb5b608b7e·...·]-5">&gt;&gt;</span><span·class="w">
201 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">StateEnc</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="7352665281-6">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·65,·SHA:·d1ef3ba214e5adf2111cf73214819083ebbe2134b2ce61ee6aacfa1488089b7d·...·]-6">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·encrypt·-&gt;·true</span><span·class="w">201 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">StateEnc</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="6534878025-6">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·65,·SHA:·ffe7197e004d541a81def639a776b343abdf67d2fa3c34993d93d4d699f779f1·...·]-6">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·encrypt·-&gt;·true</span><span·class="w">
202 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.3768901617</span><span·class="p">.</span><span·class="mf">1128660993.124047</span><span·class="o">&gt;</span><span·class="w">202 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.3768901617</span><span·class="p">.</span><span·class="mf">1128660993.124047</span><span·class="o">&gt;</span><span·class="w">
203 »       </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="7352665281-7">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7352665281-8">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="7352665281-8">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·ce34d9c7eb28560a373df2d55356e02be135e31f53fffe9c49d4b663dea65ea5·...·]-7">)</span><span·class="p">.</span><span·class="w">203 »       </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="6534878025-7">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6534878025-8">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6534878025-8">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·e4e788dfee4386d69f4c4936b74e19a2ed0e7bb919a322bdef5c3327541e22f2·...·]-7">)</span><span·class="p">.</span><span·class="w">
204 »       </span><span·class="p"·data-group-id="7352665281-9">&lt;&lt;</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">44</span><span·class="p">,</span><span·class="mi">216</span><span·class="p">,</span><span·class="mi">166</span><span·class="p">,</span><span·class="mi">25</span[·...·truncated·by·diffoscope;·len:·343,·SHA:·f78d8a75c30007ae2346888b893010256bf7ba2afafa4121557b57b980c532bf·...·]-9">&gt;&gt;</span><span·class="w">204 »       </span><span·class="p"·data-group-id="6534878025-9">&lt;&lt;</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">44</span><span·class="p">,</span><span·class="mi">216</span><span·class="p">,</span><span·class="mi">166</span><span·class="p">,</span><span·class="mi">25</span[·...·truncated·by·diffoscope;·len:·343,·SHA:·f6f177c1adc3735eb87050edf2e9cb5f9aa0db8b2a44c3e922e335ca695acd11·...·]-9">&gt;&gt;</span><span·class="w">
205 »       </span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="7352665281-10">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7352665281-11">&lt;&lt;</span><span·class="s">&quot;Second·bytes&quot;</span><span·class="p"·data-group-id="7352665281-11">[·...·truncated·by·diffoscope;·len:·56,·SHA:·3166ea2d1fedfee8f62706ba8eede849e308e35787269f0284768623086b46fc·...·]-10">)</span><span·class="p">.</span><span·class="w">205 »       </span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="6534878025-10">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6534878025-11">&lt;&lt;</span><span·class="s">&quot;Second·bytes&quot;</span><span·class="p"·data-group-id="6534878025-11">[·...·truncated·by·diffoscope;·len:·56,·SHA:·f12527284960b07ae6b8e14a2ed923a1847f2bcbc5a6f8a897102e1dfcba4393·...·]-10">)</span><span·class="p">.</span><span·class="w">
206 »       </span><span·class="p"·data-group-id="7352665281-12">&lt;&lt;</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">115</span><span·class="p">,</span><span·class="mi">234</spa[·...·truncated·by·diffoscope;·len:·397,·SHA:·2f98ac98029593d779a6c6b970707795e67b7f4b48a64745ea6f6b542894bf57·...·]-12">&gt;&gt;</span><span·class="w">206 »       </span><span·class="p"·data-group-id="6534878025-12">&lt;&lt;</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">115</span><span·class="p">,</span><span·class="mi">234</spa[·...·truncated·by·diffoscope;·len:·397,·SHA:·c3098203b2a75f4fa81783ca8e1860d8fa6ca654f120bd2230a9b069ca68cbf8·...·]-12">&gt;&gt;</span><span·class="w">
207 »       </span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">207 »       </span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">
208 »       </span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">StateDec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="7352665281-13">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·67,·SHA:·f2b9a227579349dc7dad181a2a04731b25f964875c68fd905ff77f80690bc159·...·]-13">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·decrypt·-&gt;·false</span><span·class="w">208 »       </span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">StateDec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="6534878025-13">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·67,·SHA:·e8df2b0a4424042ddb83f1fd3be6e0a748789f01362355f2dcb8f08c8488b3a7·...·]-13">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·decrypt·-&gt;·false</span><span·class="w">
209 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.3768901617</span><span·class="p">.</span><span·class="mf">1128660994.124255</span><span·class="o">&gt;</span><span·class="w">209 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.3768901617</span><span·class="p">.</span><span·class="mf">1128660994.124255</span><span·class="o">&gt;</span><span·class="w">
210 »       </span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="7352665281-14">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7352665281-15">&lt;&lt;</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">44</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·339,·SHA:·354094eeae7900fefcfaec25554870e5d783722dde24d4e0ccb3119068bece92·...·]-14">)</span><span·class="p">.</span><span·class="w">210 »       </span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="6534878025-14">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6534878025-15">&lt;&lt;</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">44</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·339,·SHA:·ab3071b8dc50e77851ebbd31a5842f4002388b840b317ab478e00d48742940fc·...·]-14">)</span><span·class="p">.</span><span·class="w">
211 »       </span><span·class="p"·data-group-id="7352665281-16">&lt;&lt;</span><span·class="s">&quot;First·b&quot;</span><span·class="p"·data-group-id="7352665281-16">&gt;&gt;</span><span·class="w">211 »       </span><span·class="p"·data-group-id="6534878025-16">&lt;&lt;</span><span·class="s">&quot;First·b&quot;</span><span·class="p"·data-group-id="6534878025-16">&gt;&gt;</span><span·class="w">
212 »       </span><span·class="mi">9</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="7352665281-17">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7352665281-18">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">162</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">115</span><span·class="p">,</span><span·class="mi">234</span><span·class="p">,</span><span·class="mi">197</span><span·class="p">,</span><span·class="w">212 »       </span><span·class="mi">9</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="6534878025-17">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6534878025-18">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">162</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">115</span><span·class="p">,</span><span·class="mi">234</span><span·class="p">,</span><span·class="mi">197</span><span·class="p">,</span><span·class="w">
213 ········</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">253</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">144</span><span·class="p">,</span><span·class="mi">151</span><span·class="p"·data-group-id="7352665281-18">&gt;&gt;</span><span·class="p"·data-group-id="7352665281-17">)</span><span·class="p">.</span><span·class="w">213 ········</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">253</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">144</span><span·class="p">,</span><span·class="mi">151</span><span·class="p"·data-group-id="6534878025-18">&gt;&gt;</span><span·class="p"·data-group-id="6534878025-17">)</span><span·class="p">.</span><span·class="w">
214 »       </span><span·class="p"·data-group-id="7352665281-19">&lt;&lt;</span><span·class="s">&quot;ytesSecond·byte&quot;</span><span·class="p"·data-group-id="7352665281-19">&gt;&gt;</span><span·class="w">214 »       </span><span·class="p"·data-group-id="6534878025-19">&lt;&lt;</span><span·class="s">&quot;ytesSecond·byte&quot;</span><span·class="p"·data-group-id="6534878025-19">&gt;&gt;</span><span·class="w">
215 »       </span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="7352665281-20">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7352665281-21">&lt;&lt;</span><span·class="mi">41</span><span·class="p"·data-group-id="7352665281-21">&gt;&gt;</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·918def0bcdcde917aff08fcc975d09009c4369b0dc03ea4a7472a2b6f28e6984·...·]-20">)</span><span·class="p">.</span><span·class="w">215 »       </span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="6534878025-20">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6534878025-21">&lt;&lt;</span><span·class="mi">41</span><span·class="p"·data-group-id="6534878025-21">&gt;&gt;</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·ef9246026cf9d06399fc4393416f6ddd68ecb853befbbd6a78bf66788fa42566·...·]-20">)</span><span·class="p">.</span><span·class="w">
216 »       </span><span·class="p"·data-group-id="7352665281-22">&lt;&lt;</span><span·class="s">&quot;s&quot;</span><span·class="p"·data-group-id="7352665281-22">&gt;&gt;</span><span·class="w">216 »       </span><span·class="p"·data-group-id="6534878025-22">&lt;&lt;</span><span·class="s">&quot;s&quot;</span><span·class="p"·data-group-id="6534878025-22">&gt;&gt;</span><span·class="w">
217 »       </span><span·class="mi">11</span><span·class="o">&gt;</span></code></pre><p>Note·that·the·internal·data·that·the·<code·class="inline">StateEnc</code>·and·<code·class="inline">StateDec</code>·references·are217 »       </span><span·class="mi">11</span><span·class="o">&gt;</span></code></pre><p>Note·that·the·internal·data·that·the·<code·class="inline">StateEnc</code>·and·<code·class="inline">StateDec</code>·references·are
218 destructivly·updated·by·the·calls·to218 destructivly·updated·by·the·calls·to
219 <a·href="crypto.html#crypto_update/2">crypto_update/2</a>.·This·is·to·gain·time·in·the·calls219 <a·href="crypto.html#crypto_update/2">crypto_update/2</a>.·This·is·to·gain·time·in·the·calls
220 of·the·nifs·interfacing·the·cryptolib.·In·a·loop·where·the·state·is·saved·in·the220 of·the·nifs·interfacing·the·cryptolib.·In·a·loop·where·the·state·is·saved·in·the
221 loop's·state,·it·also·saves·one·update·of·the·loop·state·per·crypto·operation.</p><p>For·example,·a·simple·server·receiving·text·parts·to·encrypt·and·send·the·result221 loop's·state,·it·also·saves·one·update·of·the·loop·state·per·crypto·operation.</p><p>For·example,·a·simple·server·receiving·text·parts·to·encrypt·and·send·the·result
222 back·to·the·one·who·sent·them·(the·<code·class="inline">Requester</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»      </span><span·class="nf">encode</span><span·class="p"·data-group-id="8781279930-1">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p"·data-group-id="8781279930-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 back·to·the·one·who·sent·them·(the·<code·class="inline">Requester</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»      </span><span·class="nf">encode</span><span·class="p"·data-group-id="4219153819-1">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p"·data-group-id="4219153819-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="8781279930-2">(</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="8781279930-3">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·254,·SHA:·6d92af32826a939767a30cf89c4341d692e36344e9dae16663ed7ed286626bd8·...·]-2">)</span><span·class="p">.</span><span·class="w">223 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="4219153819-2">(</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="4219153819-3">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·254,·SHA:·3df9ba4fdf21d95e57637baa0cdbfeebef1088d97c20a50db2957795c5b275de·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
224 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="8781279930-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="8781279930-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="4219153819-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="4219153819-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 »       </span><span·class="k">receive</span><span·class="w">225 »       </span><span·class="k">receive</span><span·class="w">
226 ········</span><span·class="p"·data-group-id="8781279930-5">{</span><span·class="n">Text</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Requester</span><span·class="p"·data-group-id="8781279930-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 ········</span><span·class="p"·data-group-id="4219153819-5">{</span><span·class="n">Text</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Requester</span><span·class="p"·data-group-id="4219153819-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
227 ········</span><span·class="n">Requester</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="8781279930-6">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Text</span><span·class="p"·data-group-id="8781279930-6">)</span><span·class="p">,</span><span·class="w">227 ········</span><span·class="n">Requester</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_update</span><span·class="p"·data-group-id="4219153819-6">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Text</span><span·class="p"·data-group-id="4219153819-6">)</span><span·class="p">,</span><span·class="w">
228 »       </span><span·class="nf">loop</span><span·class="p"·data-group-id="8781279930-7">(</span><span·class="n">State</span><span·class="p"·data-group-id="8781279930-7">)</span><span·class="w">228 »       </span><span·class="nf">loop</span><span·class="p"·data-group-id="4219153819-7">(</span><span·class="n">State</span><span·class="p"·data-group-id="4219153819-7">)</span><span·class="w">
229 »       </span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="example-of-crypto_one_time-5"·class="section-heading">229 »       </span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="example-of-crypto_one_time-5"·class="section-heading">
230 ··<a·href="#example-of-crypto_one_time-5"·class="hover-link">230 ··<a·href="#example-of-crypto_one_time-5"·class="hover-link">
231 ····<i·class="ri-link-m"·aria-hidden="true"></i>231 ····<i·class="ri-link-m"·aria-hidden="true"></i>
232 ··</a>232 ··</a>
233 ··<span·class="text">Example·of·crypto_one_time/5</span>233 ··<span·class="text">Example·of·crypto_one_time/5</span>
234 </h3>234 </h3>
235 <p>The·same·example·as·in·the235 <p>The·same·example·as·in·the
236 <a·href="new_api.html#examples-of-crypto_init-4-and-crypto_update-2">previous·section</a>,236 <a·href="new_api.html#examples-of-crypto_init-4-and-crypto_update-2">previous·section</a>,
237 but·now·with·one·call·to·<a·href="crypto.html#crypto_one_time/5">crypto_one_time/5</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»       </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2270507298-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="2270507298-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">237 but·now·with·one·call·to·<a·href="crypto.html#crypto_one_time/5">crypto_one_time/5</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»       </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1253205005-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="1253205005-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
238 »       </span><span·class="p"·data-group-id="2270507298-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·65aa9d48eda6103b519392bcbfae4bfcd034edc4e5acd8e448fa6d3f2b6830b9·...·]-2">&gt;&gt;</span><span·class="w">238 »       </span><span·class="p"·data-group-id="1253205005-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·a3e1846ac4613e48a3724eaea89cd9fac4704770adcc65b8efec3dd5a0e896f5·...·]-2">&gt;&gt;</span><span·class="w">
239 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">IV</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2270507298-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="2270507298-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">239 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">IV</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1253205005-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="1253205005-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
240 »       </span><span·class="p"·data-group-id="2270507298-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·6e1dbfbcb860656d6871517f551fd88d7f4b663d7e0b521bd39fb88aaa5fc29d·...·]-4">&gt;&gt;</span><span·class="w">240 »       </span><span·class="p"·data-group-id="1253205005-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·dedd0b4390c59983b5f3bac4cab49775cc8ed80772b920063ee2071d7298e22e·...·]-4">&gt;&gt;</span><span·class="w">
241 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Txt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2270507298-5">[</span><span·class="p"·data-group-id="2270507298-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="2270507298-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2270507298-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·f380a9e83c70906b6b4c2e4684d9f3986517b3db8757f18648928dbacd5501f8·...·]-5">]</span><span·class="p">.</span><span·class="w">241 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Txt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1253205005-5">[</span><span·class="p"·data-group-id="1253205005-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="1253205005-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1253205005-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·c755adf6fee7d8670c9253a662331eb29e0f0374e5074cd3804141aa143141c8·...·]-5">]</span><span·class="p">.</span><span·class="w">
242 »       </span><span·class="p"·data-group-id="2270507298-8">[</span><span·class="p"·data-group-id="2270507298-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="2270507298-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2270507298-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·49b56f741eb49195c82c5337f6f28181581a4d314b475fa63dee5107fd39a4f2·...·]-8">]</span><span·class="w">242 »       </span><span·class="p"·data-group-id="1253205005-8">[</span><span·class="p"·data-group-id="1253205005-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="1253205005-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1253205005-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·a09cdb219055d59e6c963f6308756d15d7ede2cc0dbeba018c3127a1d2bd089c·...·]-8">]</span><span·class="w">
243 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_one_time</span><span·class="p"·data-group-id="2270507298-11">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·a14e0c5fb51345a6e484ad1ac57b1563c4e56816f125ec259f219239ac5716e6·...·]-11">)</span><span·class="p">.</span><span·class="w">243 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_one_time</span><span·class="p"·data-group-id="1253205005-11">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·920b2b877bbca140ae064bbdbadfb01e77e1eed64c67320b54e0673ac47a81e0·...·]-11">)</span><span·class="p">.</span><span·class="w">
244 »       </span><span·class="p"·data-group-id="2270507298-12">&lt;&lt;</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">44</span><span·class="p">,</span><span·class="mi">216</span><span·class="p">,</span><span·class="mi">166</span><span·class="p">,</span><span·class="mi">25</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">203</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">162</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">115</span><span·class="p">,</span><span·class="mi">234</span><span·class="p">,</span><span·class="w">244 »       </span><span·class="p"·data-group-id="1253205005-12">&lt;&lt;</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">44</span><span·class="p">,</span><span·class="mi">216</span><span·class="p">,</span><span·class="mi">166</span><span·class="p">,</span><span·class="mi">25</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">203</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">162</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">115</span><span·class="p">,</span><span·class="mi">234</span><span·class="p">,</span><span·class="w">
245 »       </span><span·class="mi">197</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">253</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">144</span><span·class="p">,</span><span·class="mi">151</span><span·class="p">,</span><span·class="mi">41</span><span·class="p"·data-group-id="2270507298-12">&gt;&gt;</span><span·class="w">245 »       </span><span·class="mi">197</span><span·class="p">,</span><span·class="mi">94</span><span·class="p">,</span><span·class="mi">253</span><span·class="p">,</span><span·class="mi">16</span><span·class="p">,</span><span·class="mi">144</span><span·class="p">,</span><span·class="mi">151</span><span·class="p">,</span><span·class="mi">41</span><span·class="p"·data-group-id="1253205005-12">&gt;&gt;</span><span·class="w">
246 »       </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p>The·<code·class="inline">[&lt;&lt;&quot;First·bytes&quot;&gt;&gt;,&lt;&lt;&quot;Second·bytes&quot;&gt;&gt;]</code>·could·of·course·have·been·one246 »       </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p>The·<code·class="inline">[&lt;&lt;&quot;First·bytes&quot;&gt;&gt;,&lt;&lt;&quot;Second·bytes&quot;&gt;&gt;]</code>·could·of·course·have·been·one
247 single·binary:·<code·class="inline">&lt;&lt;&quot;First·bytesSecond·bytes&quot;&gt;&gt;</code>.</p><h3·id="example-of-crypto_one_time_aead-6"·class="section-heading">247 single·binary:·<code·class="inline">&lt;&lt;&quot;First·bytesSecond·bytes&quot;&gt;&gt;</code>.</p><h3·id="example-of-crypto_one_time_aead-6"·class="section-heading">
248 ··<a·href="#example-of-crypto_one_time_aead-6"·class="hover-link">248 ··<a·href="#example-of-crypto_one_time_aead-6"·class="hover-link">
249 ····<i·class="ri-link-m"·aria-hidden="true"></i>249 ····<i·class="ri-link-m"·aria-hidden="true"></i>
250 ··</a>250 ··</a>
251 ··<span·class="text">Example·of·crypto_one_time_aead/6</span>251 ··<span·class="text">Example·of·crypto_one_time_aead/6</span>
252 </h3>252 </h3>
253 <p>The·same·example·as·in·the253 <p>The·same·example·as·in·the
254 <a·href="new_api.html#example-of-crypto_one_time-5">previous·section</a>,·but·now·with·one254 <a·href="new_api.html#example-of-crypto_one_time-5">previous·section</a>,·but·now·with·one
255 call·to·<a·href="crypto.html#crypto_one_time_aead/6">crypto_one_time_aead/6</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»  </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1782674903-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="1782674903-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">255 call·to·<a·href="crypto.html#crypto_one_time_aead/6">crypto_one_time_aead/6</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»  </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8378320440-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="8378320440-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
256 »       </span><span·class="p"·data-group-id="1782674903-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·2443c87727bcd5ef1f96b9d04293de5cea36a937088fd16b716ad2b3363ea84e·...·]-2">&gt;&gt;</span><span·class="w">256 »       </span><span·class="p"·data-group-id="8378320440-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·17201ad46ea87cb7c6919b593797cf1de4ea07d4288432b71b9e3308a27e3d2e·...·]-2">&gt;&gt;</span><span·class="w">
257 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">IV</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1782674903-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="1782674903-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">257 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">IV</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8378320440-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="8378320440-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
258 »       </span><span·class="p"·data-group-id="1782674903-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·6162b6e2616347fe2f09d18335d425a47dfa0100033eb9f1d08b35eac6c82a7c·...·]-4">&gt;&gt;</span><span·class="w">258 »       </span><span·class="p"·data-group-id="8378320440-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·71aed4467f83bbad525a9045b4f307712c1ce22860e20cc59e577eed2cad5aca·...·]-4">&gt;&gt;</span><span·class="w">
259 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Txt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1782674903-5">[</span><span·class="p"·data-group-id="1782674903-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="1782674903-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1782674903-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·d92bd1f0fcde8c44c74120de2611d0da84df035166e4cbe438bdd8689c539226·...·]-5">]</span><span·class="p">.</span><span·class="w">259 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Txt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8378320440-5">[</span><span·class="p"·data-group-id="8378320440-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="8378320440-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8378320440-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·c3eef2f7dac439630ac0de8715cf22f1e720f23b6d8d2ff66e043079682ab54c·...·]-5">]</span><span·class="p">.</span><span·class="w">
260 »       </span><span·class="p"·data-group-id="1782674903-8">[</span><span·class="p"·data-group-id="1782674903-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="1782674903-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1782674903-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·462c4e28654161827f5bc4cd7c0dfedcc07f95b0d8667716053624b16b9dd21f·...·]-8">]</span><span·class="w">260 »       </span><span·class="p"·data-group-id="8378320440-8">[</span><span·class="p"·data-group-id="8378320440-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="8378320440-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8378320440-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·dfbedb7dac6038f30e86962c4610705cd8b4e5ef8cb73ee63815bf198f624b07·...·]-8">]</span><span·class="w">
261 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">AAD</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1782674903-11">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="1782674903-11">&gt;&gt;</span><span·class="p">.</span><span·class="w">261 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">AAD</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8378320440-11">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="8378320440-11">&gt;&gt;</span><span·class="p">.</span><span·class="w">
262 »       </span><span·class="p"·data-group-id="1782674903-12">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="1782674903-12">&gt;&gt;</span><span·class="w">262 »       </span><span·class="p"·data-group-id="8378320440-12">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="8378320440-12">&gt;&gt;</span><span·class="w">
263 »       </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_one_time_aead</span><span·class="p"·data-group-id="1782674903-13">(</span><span·class="ss">aes_128_gcm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·214,·SHA:·e5e0bf84bd7f8813de9393791a5490698b2a37ef3f5e950bd50e9f7b4ce63f3e·...·]-13">)</span><span·class="p">.</span><span·class="w">263 »       </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_one_time_aead</span><span·class="p"·data-group-id="8378320440-13">(</span><span·class="ss">aes_128_gcm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·214,·SHA:·92be633d7e07a5c1451f9a885e74dcfe0fb7db6ea6ef3d3f1cbb5c2647b28018·...·]-13">)</span><span·class="p">.</span><span·class="w">
264 »       </span><span·class="p"·data-group-id="1782674903-14">{</span><span·class="p"·data-group-id="1782674903-15">&lt;&lt;</span><span·class="mi">240</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">38</span><span·class="p">,</span><span·class="mi">96</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">241</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">52</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">190</span><span·class="p">,</span><span·class="mi">179</span><span·class="p">,</span><span·class="mi">213</span><span·class="p">,</span><span·class="mi">132</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">72</span><span·class="p">,</span><span·class="w">264 »       </span><span·class="p"·data-group-id="8378320440-14">{</span><span·class="p"·data-group-id="8378320440-15">&lt;&lt;</span><span·class="mi">240</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">38</span><span·class="p">,</span><span·class="mi">96</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">241</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">52</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">190</span><span·class="p">,</span><span·class="mi">179</span><span·class="p">,</span><span·class="mi">213</span><span·class="p">,</span><span·class="mi">132</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">72</span><span·class="p">,</span><span·class="w">
265 »       </span><span·class="mi">192</span><span·class="p">,</span><span·class="mi">103</span><span·class="p">,</span><span·class="mi">176</span><span·class="p">,</span><span·class="mi">90</span><span·class="p">,</span><span·class="mi">104</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">71</span><span·class="p">,</span><span·class="mi">158</span><span·class="p"·data-group-id="1782674903-15">&gt;&gt;</span><span·class="p">,</span><span·class="w">265 »       </span><span·class="mi">192</span><span·class="p">,</span><span·class="mi">103</span><span·class="p">,</span><span·class="mi">176</span><span·class="p">,</span><span·class="mi">90</span><span·class="p">,</span><span·class="mi">104</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">71</span><span·class="p">,</span><span·class="mi">158</span><span·class="p"·data-group-id="8378320440-15">&gt;&gt;</span><span·class="p">,</span><span·class="w">
266 »       </span><span·class="p"·data-group-id="1782674903-16">&lt;&lt;</span><span·class="mi">131</span><span·class="p">,</span><span·class="mi">47</span><span·class="p">,</span><span·class="mi">45</span><span·class="p">,</span><span·class="mi">91</span><span·class="p">,</span><span·class="mi">142</spa[·...·truncated·by·diffoscope;·len:·657,·SHA:·8ad3f9dc4e1cca619cf6b150c8b163bc96e03e8af1c3c9401f1323661fbffbbb·...·]-14">}</span><span·class="w">266 »       </span><span·class="p"·data-group-id="8378320440-16">&lt;&lt;</span><span·class="mi">131</span><span·class="p">,</span><span·class="mi">47</span><span·class="p">,</span><span·class="mi">45</span><span·class="p">,</span><span·class="mi">91</span><span·class="p">,</span><span·class="mi">142</spa[·...·truncated·by·diffoscope;·len:·657,·SHA:·2f9866777cfdf9e10ba15ead6a45c9f91d114714594005e2372cdb6deb056351·...·]-14">}</span><span·class="w">
267 »       </span><span·class="mi">6</span><span·class="o">&gt;</span></code></pre><p>The·<code·class="inline">[&lt;&lt;&quot;First·bytes&quot;&gt;&gt;,&lt;&lt;&quot;Second·bytes&quot;&gt;&gt;]</code>·could·of·course·have·been·one267 »       </span><span·class="mi">6</span><span·class="o">&gt;</span></code></pre><p>The·<code·class="inline">[&lt;&lt;&quot;First·bytes&quot;&gt;&gt;,&lt;&lt;&quot;Second·bytes&quot;&gt;&gt;]</code>·could·of·course·have·been·one
268 single·binary:·<code·class="inline">&lt;&lt;&quot;First·bytesSecond·bytes&quot;&gt;&gt;</code>.</p><h3·id="example-of-mac_init-mac_update-and-mac_final"·class="section-heading">268 single·binary:·<code·class="inline">&lt;&lt;&quot;First·bytesSecond·bytes&quot;&gt;&gt;</code>.</p><h3·id="example-of-mac_init-mac_update-and-mac_final"·class="section-heading">
269 ··<a·href="#example-of-mac_init-mac_update-and-mac_final"·class="hover-link">269 ··<a·href="#example-of-mac_init-mac_update-and-mac_final"·class="hover-link">
270 ····<i·class="ri-link-m"·aria-hidden="true"></i>270 ····<i·class="ri-link-m"·aria-hidden="true"></i>
271 ··</a>271 ··</a>
272 ··<span·class="text">Example·of·mac_init·mac_update·and·mac_final</span>272 ··<span·class="text">Example·of·mac_init·mac_update·and·mac_final</span>
273 </h3>273 </h3>
274 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">»   </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3764498450-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="3764498450-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">274 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">»   </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3445193269-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="3445193269-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
275 »       </span><span·class="p"·data-group-id="3764498450-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·573,·SHA:·48d4161fffbecd1f4218b821d4945c35eb77878744840c1d36c146536a7ccfe4·...·]-2">&gt;&gt;</span><span·class="w">275 »       </span><span·class="p"·data-group-id="3445193269-2">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·573,·SHA:·34185456731d443a3f70933b9f127af5dce28d671a45732c7938123f187a3cad·...·]-2">&gt;&gt;</span><span·class="w">
276 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">StateMac</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_init</span><span·class="p"·data-group-id="3764498450-3">(</span><span·class="ss">cmac</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="3764498450-3">)</span><span·class="p">.</span><span·class="w">276 »       </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">StateMac</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_init</span><span·class="p"·data-group-id="3445193269-3">(</span><span·class="ss">cmac</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="3445193269-3">)</span><span·class="p">.</span><span·class="w">
277 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">277 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">
278 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_update</span><span·class="p"·data-group-id="3764498450-4">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3764498450-5">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="3764498450-5">&gt;&[·...·truncated·by·diffoscope;·len:·51,·SHA:·01f72a6501245b45354ce359a2d0b0e7b0177a222699267545dc755cb62aaae9·...·]-4">)</span><span·class="p">.</span><span·class="w">278 »       </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_update</span><span·class="p"·data-group-id="3445193269-4">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3445193269-5">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="3445193269-5">&gt;&[·...·truncated·by·diffoscope;·len:·51,·SHA:·29b3979cfd0827e578d7d0773bd47c4c5791f4fd6b880b639ed932033f7e19bc·...·]-4">)</span><span·class="p">.</span><span·class="w">
279 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">279 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">
280 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_update</span><span·class="p"·data-group-id="3764498450-6">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&quot;</span><span·class="p"·data-group-id="3764498450-6">)</span><span·class="p">.</span><span·class="w">280 »       </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_update</span><span·class="p"·data-group-id="3445193269-6">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&quot;</span><span·class="p"·data-group-id="3445193269-6">)</span><span·class="p">.</span><span·class="w">
281 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">281 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">
282 »       </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_update</span><span·class="p"·data-group-id="3764498450-7">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3764498450-8">&lt;&lt;</span><span·class="s">&quot;last·bytes&quot;</span><span·class="p"·data-group-id="3764498450-8">&gt;&g[·...·truncated·by·diffoscope;·len:·50,·SHA:·6a53d7bc0adf81938235a3179e70b283c1488f256b9a844c5cd71caff22ed884·...·]-7">)</span><span·class="p">.</span><span·class="w">282 »       </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_update</span><span·class="p"·data-group-id="3445193269-7">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3445193269-8">&lt;&lt;</span><span·class="s">&quot;last·bytes&quot;</span><span·class="p"·data-group-id="3445193269-8">&gt;&g[·...·truncated·by·diffoscope;·len:·50,·SHA:·b00c050f0c6333204b78b710a60b7256f152dc965087a48f4bf8f7744c828c30·...·]-7">)</span><span·class="p">.</span><span·class="w">
283 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">283 »       </span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.2424664121</span><span·class="p">.</span><span·class="mf">2781478916.232610</span><span·class="o">&gt;</span><span·class="w">
284 »       </span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_final</span><span·class="p"·data-group-id="3764498450-9">(</span><span·class="n">StateMac</span><span·class="p"·data-group-id="3764498450-9">)</span><span·class="p">.</span><span·class="w">284 »       </span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac_final</span><span·class="p"·data-group-id="3445193269-9">(</span><span·class="n">StateMac</span><span·class="p"·data-group-id="3445193269-9">)</span><span·class="p">.</span><span·class="w">
285 »       </span><span·class="p"·data-group-id="3764498450-10">&lt;&lt;</span><span·class="mi">68</span><span·class="p">,</span><span·class="mi">191</span><span·class="p">,</span><span·class="mi">219</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">84</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">193</span><span·class="p">,</span><span·class="mi">197</span><span·class="p">,</span><span·class="mi">238</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="w">285 »       </span><span·class="p"·data-group-id="3445193269-10">&lt;&lt;</span><span·class="mi">68</span><span·class="p">,</span><span·class="mi">191</span><span·class="p">,</span><span·class="mi">219</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">84</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">193</span><span·class="p">,</span><span·class="mi">197</span><span·class="p">,</span><span·class="mi">238</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="w">
286 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="3764498450-10">&gt;&gt;</span><span·class="w">286 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="3445193269-10">&gt;&gt;</span><span·class="w">
287 »       </span><span·class="mi">7</span><span·class="o">&gt;</span></code></pre><p>and·compare·the·result·with·a·single·calculation·just·for·this·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»  </span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac</span><span·class="p"·data-group-id="6163745148-1">(</span><span·class="ss">cmac</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·96,·SHA:·afc95f020bc9d21c320ef8291a6fefce6302e117fd05880af63185d8ca1fd215·...·]8-1">)</span><span·class="p">.</span><span·class="w">287 »       </span><span·class="mi">7</span><span·class="o">&gt;</span></code></pre><p>and·compare·the·result·with·a·single·calculation·just·for·this·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»  </span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">mac</span><span·class="p"·data-group-id="0811185908-1">(</span><span·class="ss">cmac</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·96,·SHA:·ab6c9b365a35ce53ed58955d22bf84f4af69f52452efcf4c5f7cd38e55fe4e55·...·]8-1">)</span><span·class="p">.</span><span·class="w">
288 »       </span><span·class="p"·data-group-id="6163745148-2">&lt;&lt;</span><span·class="mi">68</span><span·class="p">,</span><span·class="mi">191</span><span·class="p">,</span><span·class="mi">219</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">84</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">193</span><span·class="p">,</span><span·class="mi">197</span><span·class="p">,</span><span·class="mi">238</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="w">288 »       </span><span·class="p"·data-group-id="0811185908-2">&lt;&lt;</span><span·class="mi">68</span><span·class="p">,</span><span·class="mi">191</span><span·class="p">,</span><span·class="mi">219</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">84</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">193</span><span·class="p">,</span><span·class="mi">197</span><span·class="p">,</span><span·class="mi">238</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="w">
289 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="6163745148-2">&gt;&gt;</span><span·class="w">289 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="0811185908-2">&gt;&gt;</span><span·class="w">
290 »       </span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">v</span><span·class="p"·data-group-id="6163745148-3">(</span><span·class="mi">7</span><span·class="p"·data-group-id="6163745148-3">)</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="nf">v</span><span·class="p"·data-group-id="6163745148-4">(</span><span[·...·truncated·by·diffoscope;·len:·60,·SHA:·d525a079e6b1cc02d9bdb97c838e2c07f206ae35f6e7e55cff088ad1c4c1253c·...·]8-4">)</span><span·class="p">.</span><span·class="w">290 »       </span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">v</span><span·class="p"·data-group-id="0811185908-3">(</span><span·class="mi">7</span><span·class="p"·data-group-id="0811185908-3">)</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="nf">v</span><span·class="p"·data-group-id="0811185908-4">(</span><span[·...·truncated·by·diffoscope;·len:·60,·SHA:·a595354b002e831e652eb15de233f07bb264dd0407c1de017643e532b62d43c9·...·]8-4">)</span><span·class="p">.</span><span·class="w">
291 »       </span><span·class="ss">true</span><span·class="w">291 »       </span><span·class="ss">true</span><span·class="w">
292 »       </span><span·class="mi">9</span><span·class="o">&gt;</span></code></pre><h2·id="retired-cipher-names"·class="section-heading">292 »       </span><span·class="mi">9</span><span·class="o">&gt;</span></code></pre><h2·id="retired-cipher-names"·class="section-heading">
293 ··<a·href="#retired-cipher-names"·class="hover-link">293 ··<a·href="#retired-cipher-names"·class="hover-link">
294 ····<i·class="ri-link-m"·aria-hidden="true"></i>294 ····<i·class="ri-link-m"·aria-hidden="true"></i>
295 ··</a>295 ··</a>
296 ··<span·class="text">Retired·cipher·names</span>296 ··<span·class="text">Retired·cipher·names</span>
297 </h2>297 </h2>
630 B
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/search.html
    
Offset 118, 15 lines modifiedOffset 118, 15 lines modified
118 <div·id="search">118 <div·id="search">
119 ··<h1>119 ··<h1>
120 ····<span></span>120 ····<span></span>
121 ··</h1>121 ··</h1>
  
122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>
123 </div>123 </div>
124 <script·src="dist/search_data-A37F9CDE.js"></script>124 <script·src="dist/search_data-F9C7D1C8.js"></script>
125 ····<footer·class="footer">125 ····<footer·class="footer">
126 ······<p>126 ······<p>
  
127 ········<span·class="line">127 ········<span·class="line">
128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">
129 ············Search·HexDocs129 ············Search·HexDocs
130 ··········</button>130 ··········</button>
164 KB
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger.epub
3.66 KB
zipinfo {}
    
Offset 1, 24 lines modifiedOffset 1, 24 lines modified
1 Zip·file·size:·219256·bytes,·number·of·entries:·221 Zip·file·size:·219249·bytes,·number·of·entries:·22
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:51·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:25·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Feb-13·10:51·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Feb-13·09:25·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····49258·bx·defN·25-Feb-13·10:51·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····49258·bx·defN·25-Feb-13·09:25·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1227·bx·defN·25-Feb-13·10:51·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1227·bx·defN·25-Feb-13·09:25·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1576·bx·defN·25-Feb-13·10:51·OEBPS/introduction.xhtml6 ?rw-r--r--··6.1·unx·····1576·bx·defN·25-Feb-13·09:25·OEBPS/introduction.xhtml
7 ?rw-r--r--··6.1·unx····55715·bx·defN·25-Feb-13·10:51·OEBPS/int.xhtml7 ?rw-r--r--··6.1·unx····55715·bx·defN·25-Feb-13·09:25·OEBPS/int.xhtml
8 ?rw-r--r--··6.1·unx····42294·bx·defN·25-Feb-13·10:51·OEBPS/i.xhtml8 ?rw-r--r--··6.1·unx····42294·bx·defN·25-Feb-13·09:25·OEBPS/i.xhtml
9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-erlang-ESPT6BQV.css9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:25·OEBPS/dist/epub-erlang-ESPT6BQV.css
10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-LSJCIYTM.js10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:25·OEBPS/dist/epub-LSJCIYTM.js
11 ?rw-r--r--··6.1·unx····46232·bx·defN·25-Feb-13·10:51·OEBPS/debugger_chapter.xhtml11 ?rw-r--r--··6.1·unx····46232·bx·defN·25-Feb-13·09:25·OEBPS/debugger_chapter.xhtml
12 ?rw-r--r--··6.1·unx·····7328·bx·defN·25-Feb-13·10:51·OEBPS/debugger.xhtml12 ?rw-r--r--··6.1·unx·····7328·bx·defN·25-Feb-13·09:25·OEBPS/debugger.xhtml
13 ?rw-r--r--··6.1·unx·····2548·bx·defN·25-Feb-13·10:51·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····2548·bx·defN·25-Feb-13·09:25·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx····34504·bx·defN·25-Feb-13·10:51·OEBPS/assets/view.jpg14 ?rw-r--r--··6.1·unx····34504·bx·defN·25-Feb-13·09:25·OEBPS/assets/view.jpg
15 ?rw-r--r--··6.1·unx····40742·bx·defN·25-Feb-13·10:51·OEBPS/assets/monitor.jpg15 ?rw-r--r--··6.1·unx····40742·bx·defN·25-Feb-13·09:25·OEBPS/assets/monitor.jpg
16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:51·OEBPS/assets/logo.png16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:25·OEBPS/assets/logo.png
17 ?rw-r--r--··6.1·unx····14414·bx·defN·25-Feb-13·10:51·OEBPS/assets/line_break_dialog.jpg17 ?rw-r--r--··6.1·unx····14414·bx·defN·25-Feb-13·09:25·OEBPS/assets/line_break_dialog.jpg
18 ?rw-r--r--··6.1·unx····28924·bx·defN·25-Feb-13·10:51·OEBPS/assets/interpret.jpg18 ?rw-r--r--··6.1·unx····28924·bx·defN·25-Feb-13·09:25·OEBPS/assets/interpret.jpg
19 ?rw-r--r--··6.1·unx····13532·bx·defN·25-Feb-13·10:51·OEBPS/assets/function_break_dialog.jpg19 ?rw-r--r--··6.1·unx····13532·bx·defN·25-Feb-13·09:25·OEBPS/assets/function_break_dialog.jpg
20 ?rw-r--r--··6.1·unx····21770·bx·defN·25-Feb-13·10:51·OEBPS/assets/cond_break_dialog.jpg20 ?rw-r--r--··6.1·unx····21770·bx·defN·25-Feb-13·09:25·OEBPS/assets/cond_break_dialog.jpg
21 ?rw-r--r--··6.1·unx····56341·bx·defN·25-Feb-13·10:51·OEBPS/assets/attach.jpg21 ?rw-r--r--··6.1·unx····56341·bx·defN·25-Feb-13·09:25·OEBPS/assets/attach.jpg
22 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:51·META-INF/container.xml22 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:25·META-INF/container.xml
23 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:51·META-INF/com.apple.ibooks.display-options.xml23 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:25·META-INF/com.apple.ibooks.display-options.xml
24 22·files,·438453·bytes·uncompressed,·215370·bytes·compressed:··50.9%24 22·files,·438453·bytes·uncompressed,·215363·bytes·compressed:··50.9%
121 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:51:38,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:25:26,·uncompressed·size·20,·method=store
4.5 KB
OEBPS/notes.xhtml
    
Offset 30, 23 lines modifiedOffset 30, 23 lines modified
30 ··<a·href="#fixed-bugs-and-malfunctions"·class="hover-link">30 ··<a·href="#fixed-bugs-and-malfunctions"·class="hover-link">
31 ····<i·class="ri-link-m"·aria-hidden="true"></i>31 ····<i·class="ri-link-m"·aria-hidden="true"></i>
32 ··</a>32 ··</a>
33 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>33 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
34 </h3>34 </h3>
35 <ul><li><p>Defining·a·fun·in·the·shell·using·the·syntax·<code·class="inline">fun·Name/Arity</code>·would·fail.·This·has·been·corrected·so·that·the·following·now·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nb">is_atom</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">35 <ul><li><p>Defining·a·fun·in·the·shell·using·the·syntax·<code·class="inline">fun·Name/Arity</code>·would·fail.·This·has·been·corrected·so·that·the·following·now·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nb">is_atom</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
36 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">36 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">
37 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="6013513188-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="6013513188-1">)</span><span·class="p">.</span><span·class="w">37 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="3497158432-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="3497158432-1">)</span><span·class="p">.</span><span·class="w">
38 </span><span·class="ss">true</span><span·class="gp·unselectable">38 </span><span·class="ss">true</span><span·class="gp·unselectable">
39 3&gt;·</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">39 3&gt;·</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
40 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">40 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">
41 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="6013513188-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6013513188-2">)</span><span·class="p">.</span><span·class="w">41 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="3497158432-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="3497158432-2">)</span><span·class="p">.</span><span·class="w">
42 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">42 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">
43 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="6013513188-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="6013513188-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">I</span><span·class="p">.</span><span·class="w">43 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="3497158432-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="3497158432-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">I</span><span·class="p">.</span><span·class="w">
44 </span><span·class="ss">ok</span><span·class="gp·unselectable">44 </span><span·class="ss">ok</span><span·class="gp·unselectable">
45 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="6013513188-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6013513188-4">)</span><span·class="p">.</span><span·class="w">45 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="3497158432-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="3497158432-4">)</span><span·class="p">.</span><span·class="w">
46 </span><span·class="mi">42</span></code></pre><p>The·Debugger·has·also·been·corrected·to·correctly·handle·this·syntax·for·a·BIF.</p><p>Own·Id:·OTP-19322·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8963"·title="">GH-8963</a>,·<a·href="https://github.com/erlang/otp/pull/8987"·title="">PR-8987</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">46 </span><span·class="mi">42</span></code></pre><p>The·Debugger·has·also·been·corrected·to·correctly·handle·this·syntax·for·a·BIF.</p><p>Own·Id:·OTP-19322·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8963"·title="">GH-8963</a>,·<a·href="https://github.com/erlang/otp/pull/8987"·title="">PR-8987</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
47 ··<a·href="#improvements-and-new-features"·class="hover-link">47 ··<a·href="#improvements-and-new-features"·class="hover-link">
48 ····<i·class="ri-link-m"·aria-hidden="true"></i>48 ····<i·class="ri-link-m"·aria-hidden="true"></i>
49 ··</a>49 ··</a>
50 ··<span·class="text">Improvements·and·New·Features</span>50 ··<span·class="text">Improvements·and·New·Features</span>
51 </h3>51 </h3>
52 <ul><li><p>Erlang/OTP·type·specifications·has·been·updated·to·eliminate·overlapping·domains.</p><p>Own·Id:·OTP-19310·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8810"·title="">GH-8810</a>,·<a·href="https://github.com/erlang/otp/issues/8821"·title="">GH-8821</a>,·<a·href="https://github.com/erlang/otp/pull/8986"·title="">PR-8986</a></p></li></ul><h2·id="debugger-5-4"·class="section-heading">52 <ul><li><p>Erlang/OTP·type·specifications·has·been·updated·to·eliminate·overlapping·domains.</p><p>Own·Id:·OTP-19310·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8810"·title="">GH-8810</a>,·<a·href="https://github.com/erlang/otp/issues/8821"·title="">GH-8821</a>,·<a·href="https://github.com/erlang/otp/pull/8986"·title="">PR-8986</a></p></li></ul><h2·id="debugger-5-4"·class="section-heading">
2.79 KB
OEBPS/int.xhtml
    
Offset 554, 15 lines modifiedOffset 554, 15 lines modified
554 ·························Args·::·[<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>()].</pre>554 ·························Args·::·[<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>()].</pre>
  
555 ······</div>555 ······</div>
  
556 <p>Sets·when·and·how·to·attach·automatically·to·a·process·executing·code556 <p>Sets·when·and·how·to·attach·automatically·to·a·process·executing·code
557 in·interpreted·modules.</p><p>By·default·when·the·interpreter·is·started,·automatic·attach·is·disabled.</p><p>If·<code·class="inline">Flags</code>·is·an·empty·list,·automatic·attach·is·disabled.</p><p>Otherwise·<code·class="inline">Flags</code>·should·be·a·list·containing··at·least·one·of·the·following557 in·interpreted·modules.</p><p>By·default·when·the·interpreter·is·started,·automatic·attach·is·disabled.</p><p>If·<code·class="inline">Flags</code>·is·an·empty·list,·automatic·attach·is·disabled.</p><p>Otherwise·<code·class="inline">Flags</code>·should·be·a·list·containing··at·least·one·of·the·following
558 flags:</p><ul><li><code·class="inline">init</code>·-·Attach·when·a·process·for·the·first·time·calls·an·interpreted558 flags:</p><ul><li><code·class="inline">init</code>·-·Attach·when·a·process·for·the·first·time·calls·an·interpreted
559 function.</li><li><code·class="inline">break</code>·-·Attach·whenever·a·process·reaches·a·breakpoint.</li><li><code·class="inline">exit</code>·-·Attach·when·a·process·terminates.</li></ul><p>When·the·specified·event·occurs,·the·function·<code·class="inline">Function</code>·is·called·as:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">spawn</samp><samp·class="p"·data-group-id="3276534147-1">(</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3276534147-2">[</samp><samp·class="n">Pid</samp><sa[·...·truncated·by·diffoscope;·len:·190,·SHA:·30c1ebe76aaf54a3b43f43a70c1eeeea95706f0f8384f9f1146b27ef6732e877·...·]-1">)</samp></code></pre><p><code·class="inline">Pid</code>·is·the·pid·of·the·process·executing·interpreted·code.</p>559 function.</li><li><code·class="inline">break</code>·-·Attach·whenever·a·process·reaches·a·breakpoint.</li><li><code·class="inline">exit</code>·-·Attach·when·a·process·terminates.</li></ul><p>When·the·specified·event·occurs,·the·function·<code·class="inline">Function</code>·is·called·as:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">spawn</samp><samp·class="p"·data-group-id="9306278814-1">(</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9306278814-2">[</samp><samp·class="n">Pid</samp><sa[·...·truncated·by·diffoscope;·len:·190,·SHA:·66c10a4234532c855803be9f9b0ea69b988c52fc9d0e2e10bff0f7a2a3f2d30f·...·]-1">)</samp></code></pre><p><code·class="inline">Pid</code>·is·the·pid·of·the·process·executing·interpreted·code.</p>
560 ··</section>560 ··</section>
561 </section>561 </section>
562 <section·class="detail"·id="break/2">562 <section·class="detail"·id="break/2">
  
563 ··<div·class="detail-header">563 ··<div·class="detail-header">
564 ····<a·href="#break/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">564 ····<a·href="#break/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
565 ······<i·class="ri-link-m"·aria-hidden="true"></i>565 ······<i·class="ri-link-m"·aria-hidden="true"></i>
2.8 KB
OEBPS/i.xhtml
    
Offset 25, 17 lines modifiedOffset 25, 17 lines modified
25 ······<section·id="moduledoc"·class="docstring">25 ······<section·id="moduledoc"·class="docstring">
26 <p>Debugger/Interpreter·Interface.</p><p>The·<code·class="inline">i</code>·module·provides·short·forms·for·some·of·the·functions·used·by·the26 <p>Debugger/Interpreter·Interface.</p><p>The·<code·class="inline">i</code>·module·provides·short·forms·for·some·of·the·functions·used·by·the
27 graphical·Debugger·and·some·of·the·functions·in·module·<a·href="int.xhtml"><code·class="inline">int</code></a>,·the·Erlang27 graphical·Debugger·and·some·of·the·functions·in·module·<a·href="int.xhtml"><code·class="inline">int</code></a>,·the·Erlang
28 interpreter.</p><p>This·module·also·provides·facilities·for·displaying·status·information·about28 interpreter.</p><p>This·module·also·provides·facilities·for·displaying·status·information·about
29 interpreted·processes·and·break·points.</p><p>It·is·possible·to·attach·to·interpreted·processes·by·only·giving·the·corresponding29 interpreted·processes·and·break·points.</p><p>It·is·possible·to·attach·to·interpreted·processes·by·only·giving·the·corresponding
30 process·identity.·By·default,·an·attachment·window·is·displayed.·Processes30 process·identity.·By·default,·an·attachment·window·is·displayed.·Processes
31 at·other·Erlang·nodes·can·be·attached·manually·or·automatically.</p><p>The·functions·in·this·module·are·defined·in·the·Erlang·shell.·That·is,31 at·other·Erlang·nodes·can·be·attached·manually·or·automatically.</p><p>The·functions·in·this·module·are·defined·in·the·Erlang·shell.·That·is,
32 they·can·be·called·without·the·<code·class="inline">i:</code>·prefix.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nf">ii</samp><samp·class="p"·data-group-id="3569132821-1">(</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="3569132821-1">)</samp><samp·class="p">.</samp><samp·class="w">32 they·can·be·called·without·the·<code·class="inline">i:</code>·prefix.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nf">ii</samp><samp·class="p"·data-group-id="1340978150-1">(</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="1340978150-1">)</samp><samp·class="p">.</samp><samp·class="w">
33 </samp><samp·class="p"·data-group-id="3569132821-2">{</samp><samp·class="ss">module</samp><samp·class="p">,</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="3569132821-2">}</samp><samp·class="gp·unselectable">33 </samp><samp·class="p"·data-group-id="1340978150-2">{</samp><samp·class="ss">module</samp><samp·class="p">,</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="1340978150-2">}</samp><samp·class="gp·unselectable">
34 2&gt;·</samp><samp·class="nf">iaa</samp><samp·class="p"·data-group-id="3569132821-3">(</samp><samp·class="p"·data-group-id="3569132821-4">[</samp><samp·class="ss">init</samp><samp·class="p"·data-group-id="3569132821-4">]</samp><samp·class="p"·data-group-id="3569132821-3">)</samp><samp·class="p">.</samp><samp·class="w">34 2&gt;·</samp><samp·class="nf">iaa</samp><samp·class="p"·data-group-id="1340978150-3">(</samp><samp·class="p"·data-group-id="1340978150-4">[</samp><samp·class="ss">init</samp><samp·class="p"·data-group-id="1340978150-4">]</samp><samp·class="p"·data-group-id="1340978150-3">)</samp><samp·class="p">.</samp><samp·class="w">
35 </samp><samp·class="ss">true</samp></code></pre>35 </samp><samp·class="ss">true</samp></code></pre>
36 ······</section>36 ······</section>
  
  
37 ······<section·id="summary"·class="details-list">37 ······<section·id="summary"·class="details-list">
38 ········<h1·class="section-heading">Summary</h1>38 ········<h1·class="section-heading">Summary</h1>
39 <div·class="summary-functions·summary">39 <div·class="summary-functions·summary">
25.5 KB
OEBPS/debugger_chapter.xhtml
Max HTML report size reached
2.87 KB
OEBPS/content.opf
2.83 KB
OEBPS/content.opf
Max HTML report size reached
25.6 KB
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger_chapter.html
    
Offset 160, 20 lines modifiedOffset 160, 20 lines modified
160 ····<i·class="ri-link-m"·aria-hidden="true"></i>160 ····<i·class="ri-link-m"·aria-hidden="true"></i>
161 ··</a>161 ··</a>
162 ··<span·class="text">Executable·Lines</span>162 ··<span·class="text">Executable·Lines</span>
163 </h3>163 </h3>
164 <p>To·have·an·effect,·a·breakpoint·must·be·set·at·an·<em>executable·line</em>,·which·is·a164 <p>To·have·an·effect,·a·breakpoint·must·be·set·at·an·<em>executable·line</em>,·which·is·a
165 line·of·code·containing·an·executable·expression·such·as·a·matching·or·a165 line·of·code·containing·an·executable·expression·such·as·a·matching·or·a
166 function·call.·A·blank·line·or·a·line·containing·a·comment,·function·head,·or166 function·call.·A·blank·line·or·a·line·containing·a·comment,·function·head,·or
167 pattern·in·a·<code·class="inline">case</code>·statement·or·<code·class="inline">receive</code>·statement·is·not·executable.</p><p>In·the·following·example,·lines·2,·4,·6,·8,·and·11·are·executable·lines:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">is_loaded</span><span·class="p"·data-group-id="0606420753-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="0606420753-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 pattern·in·a·<code·class="inline">case</code>·statement·or·<code·class="inline">receive</code>·statement·is·not·executable.</p><p>In·the·following·example,·lines·2,·4,·6,·8,·and·11·are·executable·lines:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">is_loaded</span><span·class="p"·data-group-id="0797769150-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="0797769150-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 </span><span·class="mi">2</span><span·class="p">:</span><span·class="w">···</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_file</span><span·class="p"·data-group-id="0606420753-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="0606420753-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">168 </span><span·class="mi">2</span><span·class="p">:</span><span·class="w">···</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_file</span><span·class="p"·data-group-id="0797769150-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="0797769150-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
169 </span><span·class="mi">3</span><span·class="p">:</span><span·class="w">·····</span><span·class="p"·data-group-id="0606420753-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="0606420753-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">169 </span><span·class="mi">3</span><span·class="p">:</span><span·class="w">·····</span><span·class="p"·data-group-id="0797769150-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="0797769150-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 </span><span·class="mi">4</span><span·class="p">:</span><span·class="w">·······</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">which</span><span·class="p"·data-group-id="0606420753-4">(</span><span·class="n">Module</span><span·class="p"·data-group-id="0606420753-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">170 </span><span·class="mi">4</span><span·class="p">:</span><span·class="w">·······</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">which</span><span·class="p"·data-group-id="0797769150-4">(</span><span·class="n">Module</span><span·class="p"·data-group-id="0797769150-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
171 </span><span·class="mi">5</span><span·class="p">:</span><span·class="w">·········</span><span·class="o">?</span><span·class="n">TAG</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 </span><span·class="mi">5</span><span·class="p">:</span><span·class="w">·········</span><span·class="o">?</span><span·class="n">TAG</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 </span><span·class="mi">6</span><span·class="p">:</span><span·class="w">···········</span><span·class="p"·data-group-id="0606420753-5">{</span><span·class="ss">loaded</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="0606420753-5">}</span><span·class="p">;</span><span·class="w">172 </span><span·class="mi">6</span><span·class="p">:</span><span·class="w">···········</span><span·class="p"·data-group-id="0797769150-5">{</span><span·class="ss">loaded</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="0797769150-5">}</span><span·class="p">;</span><span·class="w">
173 </span><span·class="mi">7</span><span·class="p">:</span><span·class="w">·········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="mi">7</span><span·class="p">:</span><span·class="w">·········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 </span><span·class="mi">8</span><span·class="p">:</span><span·class="w">···········</span><span·class="ss">unloaded</span><span·class="w">174 </span><span·class="mi">8</span><span·class="p">:</span><span·class="w">···········</span><span·class="ss">unloaded</span><span·class="w">
175 </span><span·class="mi">9</span><span·class="p">:</span><span·class="w">·······</span><span·class="k">end</span><span·class="p">;</span><span·class="w">175 </span><span·class="mi">9</span><span·class="p">:</span><span·class="w">·······</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
176 </span><span·class="mi">10</span><span·class="p">:</span><span·class="w">····</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 </span><span·class="mi">10</span><span·class="p">:</span><span·class="w">····</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 </span><span·class="mi">11</span><span·class="p">:</span><span·class="w">······</span><span·class="ss">false</span><span·class="w">177 </span><span·class="mi">11</span><span·class="p">:</span><span·class="w">······</span><span·class="ss">false</span><span·class="w">
178 </span><span·class="mi">12</span><span·class="p">:</span><span·class="w">··</span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="status-and-trigger-action"·class="section-heading">178 </span><span·class="mi">12</span><span·class="p">:</span><span·class="w">··</span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="status-and-trigger-action"·class="section-heading">
179 ··<a·href="#status-and-trigger-action"·class="hover-link">179 ··<a·href="#status-and-trigger-action"·class="hover-link">
Offset 204, 21 lines modifiedOffset 204, 21 lines modified
204 returns·<code·class="inline">true</code>,·the·process·stops.·If·the·function·call·returns·<code·class="inline">false</code>,·the204 returns·<code·class="inline">true</code>,·the·process·stops.·If·the·function·call·returns·<code·class="inline">false</code>,·the
205 breakpoint·is·silently·ignored.</p><p><code·class="inline">Bindings</code>·is·a·list·of·variable·bindings.·To·retrieve·the·value·of·<code·class="inline">Variable</code>205 breakpoint·is·silently·ignored.</p><p><code·class="inline">Bindings</code>·is·a·list·of·variable·bindings.·To·retrieve·the·value·of·<code·class="inline">Variable</code>
206 (given·as·an·atom),·use·function206 (given·as·an·atom),·use·function
207 <a·href="int.html#get_binding/2"><code·class="inline">int:get_binding(Variable,·Bindings)</code></a>.·The·function207 <a·href="int.html#get_binding/2"><code·class="inline">int:get_binding(Variable,·Bindings)</code></a>.·The·function
208 returns·<code·class="inline">unbound</code>·or·<code·class="inline">{value,Value}</code>.</p><p><img·src="assets/cond_break_dialog.jpg"·alt="Conditional·Break·Dialog·Window"·title="Conditional·Break·Dialog·Window"/></p><p>Right-click·the·<em>Module</em>·entry·to·open·a·popup·menu·from·which·the·appropriate208 returns·<code·class="inline">unbound</code>·or·<code·class="inline">{value,Value}</code>.</p><p><img·src="assets/cond_break_dialog.jpg"·alt="Conditional·Break·Dialog·Window"·title="Conditional·Break·Dialog·Window"/></p><p>Right-click·the·<em>Module</em>·entry·to·open·a·popup·menu·from·which·the·appropriate
209 module·can·be·selected.</p><p><em>Example:</em></p><p>A·conditional·breakpoint·calling·<code·class="inline">c_test:c_break/1</code>·is·added·at·line·6·in·module209 module·can·be·selected.</p><p><em>Example:</em></p><p>A·conditional·breakpoint·calling·<code·class="inline">c_test:c_break/1</code>·is·added·at·line·6·in·module
210 <code·class="inline">fact</code>.·Each·time·the·breakpoint·is·reached,·the·function·is·called.·When·<code·class="inline">N</code>·is210 <code·class="inline">fact</code>.·Each·time·the·breakpoint·is·reached,·the·function·is·called.·When·<code·class="inline">N</code>·is
211 equal·to·3,·the·function·returns·<code·class="inline">true</code>·and·the·process·stops.</p><p>Extract·from·<code·class="inline">fact.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="p">.</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="8275754206-1">(</span><span·class="mi">0</span><span·class="p"·data-group-id="8275754206-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">211 equal·to·3,·the·function·returns·<code·class="inline">true</code>·and·the·process·stops.</p><p>Extract·from·<code·class="inline">fact.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="p">.</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="0201253315-1">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0201253315-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
212 </span><span·class="mi">6</span><span·class="p">.</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="8275754206-2">(</span><span·class="n">N</span><span·class="p"·data-group-id="8275754206-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·961,·SHA:·8685630e84789aa96a995cae1edc41e776623a2d8c993d42279493240f4ae25e·...·]-1">)</span><span·class="p">.</span><span·class="w">212 </span><span·class="mi">6</span><span·class="p">.</span><span·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="0201253315-2">(</span><span·class="n">N</span><span·class="p"·data-group-id="0201253315-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·961,·SHA:·fa4707c1e383950fbc8d427820800a158f71a38570c0b9bff6d5b6f471b7b9a1·...·]-1">)</span><span·class="p">.</span><span·class="w">
213 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6072950482-2">(</span><span·class="p"·data-group-id="6072950482-3">[</span><span·class="ss">c_break</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6072950482-3">]</span><span·class="p"·data-group-id="6072950482-2">)</span><span·class="p">.</span><span·class="w">213 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0639638680-2">(</span><span·class="p"·data-group-id="0639638680-3">[</span><span·class="ss">c_break</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0639638680-3">]</span><span·class="p"·data-group-id="0639638680-2">)</span><span·class="p">.</span><span·class="w">
  
214 </span><span·class="nf">c_break</span><span·class="p"·data-group-id="6072950482-4">(</span><span·class="n">Bindings</span><span·class="p"·data-group-id="6072950482-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 </span><span·class="nf">c_break</span><span·class="p"·data-group-id="0639638680-4">(</span><span·class="n">Bindings</span><span·class="p"·data-group-id="0639638680-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">int</span><span·class="p">:</span><span·class="nf">get_binding</span><span·class="p"·data-group-id="6072950482-5">(</span><span·class="ss">&#39;N&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bindings</span><span·class="p"·data-group-id="6072950482-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">215 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">int</span><span·class="p">:</span><span·class="nf">get_binding</span><span·class="p"·data-group-id="0639638680-5">(</span><span·class="ss">&#39;N&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bindings</span><span·class="p"·data-group-id="0639638680-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
216 ········</span><span·class="p"·data-group-id="6072950482-6">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="6072950482-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 ········</span><span·class="p"·data-group-id="0639638680-6">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="0639638680-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
217 ············</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">217 ············</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
218 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 ············</span><span·class="ss">false</span><span·class="w">219 ············</span><span·class="ss">false</span><span·class="w">
220 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="function-breakpoints"·class="section-heading">220 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><h3·id="function-breakpoints"·class="section-heading">
221 ··<a·href="#function-breakpoints"·class="hover-link">221 ··<a·href="#function-breakpoints"·class="hover-link">
222 ····<i·class="ri-link-m"·aria-hidden="true"></i>222 ····<i·class="ri-link-m"·aria-hidden="true"></i>
223 ··</a>223 ··</a>
Offset 231, 20 lines modifiedOffset 231, 20 lines modified
231 ··<a·href="#stack-trace"·class="hover-link">231 ··<a·href="#stack-trace"·class="hover-link">
232 ····<i·class="ri-link-m"·aria-hidden="true"></i>232 ····<i·class="ri-link-m"·aria-hidden="true"></i>
233 ··</a>233 ··</a>
234 ··<span·class="text">Stack·Trace</span>234 ··<span·class="text">Stack·Trace</span>
235 </h2>235 </h2>
236 <p>The·Erlang·emulator·keeps·track·of·a·<em>stack·trace</em>,·information·about·recent236 <p>The·Erlang·emulator·keeps·track·of·a·<em>stack·trace</em>,·information·about·recent
237 function·calls.·This·information·is·used·if·an·error·occurs,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="k">catch</span><span·class="w">·</span><span·class="ss">a</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">237 function·calls.·This·information·is·used·if·an·error·occurs,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="k">catch</span><span·class="w">·</span><span·class="ss">a</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="1024052769-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-2">{</span><span·class="ss">badarith</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-3">[</span><span·clas[·...·truncated·by·diffoscope;·len:·507,·SHA:·11473a36fcf007c78236220b736f9f69cf423203195abf6c8b4ec3e59251ebba·...·]-4">}</span><span·class="p">,</span><span·class="w">238 </span><span·class="p"·data-group-id="5545050794-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-2">{</span><span·class="ss">badarith</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-3">[</span><span·clas[·...·truncated·by·diffoscope;·len:·507,·SHA:·abdb08cc12a8fa2fdd4add1acae497b9cfeac9b6e4e233d5a82ef7187a23e34c·...·]-4">}</span><span·class="p">,</span><span·class="w">
239 ···················</span><span·class="p"·data-group-id="1024052769-7">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-8">[</span><span·class="p"·data-group-id="1024052769-9">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;erl_eval.erl&quot;</span><span·class="p"·data-group-id="1024052769-9">}</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-10">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">573</span><span·class="p"·data-group-id="1024052769-10">}</span><span·class="p"·data-group-id="1024052769-8">]</span><span·class="p"·data-group-id="1024052769-7">}</span><span·class="p">,</span><span·class="w"> 
240 ···················</span><span·class="p"·data-group-id="1024052769-11">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">expr</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-12">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·494,·SHA:·4e4a28f861aa83fd54a9ae624a3dcfd3e43a510b73c4e8c336f4ed95e8966b28·...·]">}</span><span·class="p">,</span><span·class="w">239 ···················</span><span·class="p"·data-group-id="5545050794-7">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">do_apply</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-8">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·492,·SHA:·d5678a561b166ce3514f7578358897233c2ed4d7d1f8d2be05968566d858d15b·...·]">}</span><span·class="p">,</span><span·class="w">
 240 ···················</span><span·class="p"·data-group-id="5545050794-11">{</span><span·class="ss">erl_eval</span><span·class="p">,</span><span·class="ss">expr</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-12">[</span><span·class="p"·data-group-id="5545050794-13">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;erl_eval.erl&quot;</span><span·class="p"·data-group-id="5545050794-13">}</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-14">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">357</span><span·class="p"·data-group-id="5545050794-14">}</span><span·class="p"·data-group-id="5545050794-12">]</span><span·class="p"·data-group-id="5545050794-11">}</span><span·class="p">,</span><span·class="w">
241 ···················</span><span·class="p"·data-group-id="1024052769-15">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-16">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·486,·SHA:·ea684f84b89488c9c4875c3657e39eea0681549581532035c757817c9b346e60·...·]-15">}</span><span·class="p">,</span><span·class="w">241 ···················</span><span·class="p"·data-group-id="5545050794-15">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-16">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·486,·SHA:·249a5e4f3c02cc188d7eddfba9483ff1cf1c455fb22375b8bfc1e23284ef1dea·...·]-15">}</span><span·class="p">,</span><span·class="w">
242 ···················</span><span·class="p"·data-group-id="1024052769-19">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-20">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·491,·SHA:·693a1f8fbcfae9c884824906ecfcb417b0371aafe9df5a09e4f58e7f1ed515ac·...·]-19">}</span><span·class="p">,</span><span·class="w">242 ···················</span><span·class="p"·data-group-id="5545050794-19">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-20">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·491,·SHA:·b65eae0da40a7ce9a2685260843daf077d724c6ffe292d038faf14953eeb3598·...·]-19">}</span><span·class="p">,</span><span·class="w">
243 ···················</span><span·class="p"·data-group-id="1024052769-23">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_loop</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-group-id="1024052769-24">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·650,·SHA:·36a7055560478ea4a4611b65563224e5276008b29b6760f208c14be493a85970·...·]-1">}</span></code></pre><p>For·details·about·the·stack·trace,·see·section243 ···················</span><span·class="p"·data-group-id="5545050794-23">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">eval_loop</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-group-id="5545050794-24">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·650,·SHA:·24642f083dfe2a0bc91a93749a8f31a8988dc6fb1d913c5a07008022865d602d·...·]-1">}</span></code></pre><p>For·details·about·the·stack·trace,·see·section
244 <a·href="../../../../doc/system/errors.html">Errors·and·Error·Handling</a>·in·the·Erlang·Reference244 <a·href="../../../../doc/system/errors.html">Errors·and·Error·Handling</a>·in·the·Erlang·Reference
245 Manual.</p><p>Debugger·emulates·the·stack·trace·by·keeping·track·of·recently·called245 Manual.</p><p>Debugger·emulates·the·stack·trace·by·keeping·track·of·recently·called
246 interpreted·functions.·(The·real·stack·trace·cannot·be·used,·as·it·shows·which246 interpreted·functions.·(The·real·stack·trace·cannot·be·used,·as·it·shows·which
247 functions·of·Debugger·have·been·called,·rather·than·which·interpreted247 functions·of·Debugger·have·been·called,·rather·than·which·interpreted
248 functions.)</p><p>This·information·can·be·used·to·traverse·the·chain·of·function·calls,·using·the248 functions.)</p><p>This·information·can·be·used·to·traverse·the·chain·of·function·calls,·using·the
249 <em>Up</em>·and·<em>Down</em>·buttons·in·the249 <em>Up</em>·and·<em>Down</em>·buttons·in·the
250 <a·href="debugger_chapter.html#attach">Attach·Process·window</a>.</p><p>By·default,·Debugger·only·saves·information·about·recursive·function·calls,·that250 <a·href="debugger_chapter.html#attach">Attach·Process·window</a>.</p><p>By·default,·Debugger·only·saves·information·about·recursive·function·calls,·that
2.83 KB
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/i.html
    
Offset 130, 17 lines modifiedOffset 130, 17 lines modified
130 ····<section·id="moduledoc">130 ····<section·id="moduledoc">
131 <p>Debugger/Interpreter·Interface.</p><p>The·<code·class="inline">i</code>·module·provides·short·forms·for·some·of·the·functions·used·by·the131 <p>Debugger/Interpreter·Interface.</p><p>The·<code·class="inline">i</code>·module·provides·short·forms·for·some·of·the·functions·used·by·the
132 graphical·Debugger·and·some·of·the·functions·in·module·<a·href="int.html"><code·class="inline">int</code></a>,·the·Erlang132 graphical·Debugger·and·some·of·the·functions·in·module·<a·href="int.html"><code·class="inline">int</code></a>,·the·Erlang
133 interpreter.</p><p>This·module·also·provides·facilities·for·displaying·status·information·about133 interpreter.</p><p>This·module·also·provides·facilities·for·displaying·status·information·about
134 interpreted·processes·and·break·points.</p><p>It·is·possible·to·attach·to·interpreted·processes·by·only·giving·the·corresponding134 interpreted·processes·and·break·points.</p><p>It·is·possible·to·attach·to·interpreted·processes·by·only·giving·the·corresponding
135 process·identity.·By·default,·an·attachment·window·is·displayed.·Processes135 process·identity.·By·default,·an·attachment·window·is·displayed.·Processes
136 at·other·Erlang·nodes·can·be·attached·manually·or·automatically.</p><p>The·functions·in·this·module·are·defined·in·the·Erlang·shell.·That·is,136 at·other·Erlang·nodes·can·be·attached·manually·or·automatically.</p><p>The·functions·in·this·module·are·defined·in·the·Erlang·shell.·That·is,
137 they·can·be·called·without·the·<code·class="inline">i:</code>·prefix.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">ii</span><span·class="p"·data-group-id="2370918368-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="2370918368-1">)</span><span·class="p">.</span><span·class="w">137 they·can·be·called·without·the·<code·class="inline">i:</code>·prefix.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">ii</span><span·class="p"·data-group-id="1556032968-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="1556032968-1">)</span><span·class="p">.</span><span·class="w">
138 </span><span·class="p"·data-group-id="2370918368-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">t</span><span·class="p"·data-group-id="2370918368-2">}</span><span·class="gp·unselectable">138 </span><span·class="p"·data-group-id="1556032968-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">t</span><span·class="p"·data-group-id="1556032968-2">}</span><span·class="gp·unselectable">
139 2&gt;·</span><span·class="nf">iaa</span><span·class="p"·data-group-id="2370918368-3">(</span><span·class="p"·data-group-id="2370918368-4">[</span><span·class="ss">init</span><span·class="p"·data-group-id="2370918368-4">]</span><span·class="p"·data-group-id="2370918368-3">)</span><span·class="p">.</span><span·class="w">139 2&gt;·</span><span·class="nf">iaa</span><span·class="p"·data-group-id="1556032968-3">(</span><span·class="p"·data-group-id="1556032968-4">[</span><span·class="ss">init</span><span·class="p"·data-group-id="1556032968-4">]</span><span·class="p"·data-group-id="1556032968-3">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="ss">true</span></code></pre>140 </span><span·class="ss">true</span></code></pre>
141 ····</section>141 ····</section>
  
142 </div>142 </div>
  
143 ··<section·id="summary"·class="details-list">143 ··<section·id="summary"·class="details-list">
144 ····<h1·class="section-heading">144 ····<h1·class="section-heading">
2.89 KB
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/int.html
    
Offset 670, 15 lines modifiedOffset 670, 15 lines modified
670 ·························Args·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>670 ·························Args·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>
  
671 ······</div>671 ······</div>
  
672 <p>Sets·when·and·how·to·attach·automatically·to·a·process·executing·code672 <p>Sets·when·and·how·to·attach·automatically·to·a·process·executing·code
673 in·interpreted·modules.</p><p>By·default·when·the·interpreter·is·started,·automatic·attach·is·disabled.</p><p>If·<code·class="inline">Flags</code>·is·an·empty·list,·automatic·attach·is·disabled.</p><p>Otherwise·<code·class="inline">Flags</code>·should·be·a·list·containing··at·least·one·of·the·following673 in·interpreted·modules.</p><p>By·default·when·the·interpreter·is·started,·automatic·attach·is·disabled.</p><p>If·<code·class="inline">Flags</code>·is·an·empty·list,·automatic·attach·is·disabled.</p><p>Otherwise·<code·class="inline">Flags</code>·should·be·a·list·containing··at·least·one·of·the·following
674 flags:</p><ul><li><code·class="inline">init</code>·-·Attach·when·a·process·for·the·first·time·calls·an·interpreted674 flags:</p><ul><li><code·class="inline">init</code>·-·Attach·when·a·process·for·the·first·time·calls·an·interpreted
675 function.</li><li><code·class="inline">break</code>·-·Attach·whenever·a·process·reaches·a·breakpoint.</li><li><code·class="inline">exit</code>·-·Attach·when·a·process·terminates.</li></ul><p>When·the·specified·event·occurs,·the·function·<code·class="inline">Function</code>·is·called·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="1603597556-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1603597556-2">[</span><span·class="n">Pid</span><sp[·...·truncated·by·diffoscope;·len:·190,·SHA:·4c0b12d6b6340c4cecc353bf18a031fb29de758c538f212014fc5640332b86cb·...·]-1">)</span></code></pre><p><code·class="inline">Pid</code>·is·the·pid·of·the·process·executing·interpreted·code.</p>675 function.</li><li><code·class="inline">break</code>·-·Attach·whenever·a·process·reaches·a·breakpoint.</li><li><code·class="inline">exit</code>·-·Attach·when·a·process·terminates.</li></ul><p>When·the·specified·event·occurs,·the·function·<code·class="inline">Function</code>·is·called·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">spawn</span><span·class="p"·data-group-id="3992973034-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3992973034-2">[</span><span·class="n">Pid</span><sp[·...·truncated·by·diffoscope;·len:·190,·SHA:·3925ed11b1e9617a979ba2c536f2fdf0932784825709f787e0ffc5dc91f24c05·...·]-1">)</span></code></pre><p><code·class="inline">Pid</code>·is·the·pid·of·the·process·executing·interpreted·code.</p>
676 ··</section>676 ··</section>
677 </section>677 </section>
678 <section·class="detail"·id="break/2">678 <section·class="detail"·id="break/2">
  
679 ··<div·class="detail-header">679 ··<div·class="detail-header">
680 ····<a·href="#break/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">680 ····<a·href="#break/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
681 ······<i·class="ri-link-m"·aria-hidden="true"></i>681 ······<i·class="ri-link-m"·aria-hidden="true"></i>
4.6 KB
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/notes.html
    
Offset 135, 23 lines modifiedOffset 135, 23 lines modified
135 ··<a·href="#fixed-bugs-and-malfunctions"·class="hover-link">135 ··<a·href="#fixed-bugs-and-malfunctions"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>138 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
139 </h3>139 </h3>
140 <ul><li><p>Defining·a·fun·in·the·shell·using·the·syntax·<code·class="inline">fun·Name/Arity</code>·would·fail.·This·has·been·corrected·so·that·the·following·now·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nb">is_atom</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">140 <ul><li><p>Defining·a·fun·in·the·shell·using·the·syntax·<code·class="inline">fun·Name/Arity</code>·would·fail.·This·has·been·corrected·so·that·the·following·now·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nb">is_atom</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
141 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">141 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">
142 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="6353463881-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="6353463881-1">)</span><span·class="p">.</span><span·class="w">142 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="7028299822-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="7028299822-1">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="ss">true</span><span·class="gp·unselectable">143 </span><span·class="ss">true</span><span·class="gp·unselectable">
144 3&gt;·</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">144 3&gt;·</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">145 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">
146 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="6353463881-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6353463881-2">)</span><span·class="p">.</span><span·class="w">146 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="7028299822-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="7028299822-2">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">147 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">
148 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="6353463881-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="6353463881-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">I</span><span·class="p">.</span><span·class="w">148 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="7028299822-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="7028299822-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">I</span><span·class="p">.</span><span·class="w">
149 </span><span·class="ss">ok</span><span·class="gp·unselectable">149 </span><span·class="ss">ok</span><span·class="gp·unselectable">
150 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="6353463881-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6353463881-4">)</span><span·class="p">.</span><span·class="w">150 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="7028299822-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="7028299822-4">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="mi">42</span></code></pre><p>The·Debugger·has·also·been·corrected·to·correctly·handle·this·syntax·for·a·BIF.</p><p>Own·Id:·OTP-19322·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8963"·title="">GH-8963</a>,·<a·href="https://github.com/erlang/otp/pull/8987"·title="">PR-8987</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">151 </span><span·class="mi">42</span></code></pre><p>The·Debugger·has·also·been·corrected·to·correctly·handle·this·syntax·for·a·BIF.</p><p>Own·Id:·OTP-19322·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8963"·title="">GH-8963</a>,·<a·href="https://github.com/erlang/otp/pull/8987"·title="">PR-8987</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
152 ··<a·href="#improvements-and-new-features"·class="hover-link">152 ··<a·href="#improvements-and-new-features"·class="hover-link">
153 ····<i·class="ri-link-m"·aria-hidden="true"></i>153 ····<i·class="ri-link-m"·aria-hidden="true"></i>
154 ··</a>154 ··</a>
155 ··<span·class="text">Improvements·and·New·Features</span>155 ··<span·class="text">Improvements·and·New·Features</span>
156 </h3>156 </h3>
157 <ul><li><p>Erlang/OTP·type·specifications·has·been·updated·to·eliminate·overlapping·domains.</p><p>Own·Id:·OTP-19310·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8810"·title="">GH-8810</a>,·<a·href="https://github.com/erlang/otp/issues/8821"·title="">GH-8821</a>,·<a·href="https://github.com/erlang/otp/pull/8986"·title="">PR-8986</a></p></li></ul><h2·id="debugger-5-4"·class="section-heading">157 <ul><li><p>Erlang/OTP·type·specifications·has·been·updated·to·eliminate·overlapping·domains.</p><p>Own·Id:·OTP-19310·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8810"·title="">GH-8810</a>,·<a·href="https://github.com/erlang/otp/issues/8821"·title="">GH-8821</a>,·<a·href="https://github.com/erlang/otp/pull/8986"·title="">PR-8986</a></p></li></ul><h2·id="debugger-5-4"·class="section-heading">
106 KB
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer.epub
2.24 KB
zipinfo {}
    
Offset 1, 15 lines modifiedOffset 1, 15 lines modified
1 Zip·file·size:·66309·bytes,·number·of·entries:·131 Zip·file·size:·66305·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:34·mimetype
3 ?rw-r--r--··6.1·unx·····5041·bx·defN·25-Feb-13·10:52·OEBPS/typer_cmd.xhtml3 ?rw-r--r--··6.1·unx·····5041·bx·defN·25-Feb-13·09:34·OEBPS/typer_cmd.xhtml
4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·09:34·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx···125342·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx···125342·bx·defN·25-Feb-13·09:34·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1214·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1214·bx·defN·25-Feb-13·09:34·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:34·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:34·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx····19847·bx·defN·25-Feb-13·10:52·OEBPS/dialyzer_chapter.xhtml9 ?rw-r--r--··6.1·unx····19847·bx·defN·25-Feb-13·09:34·OEBPS/dialyzer_chapter.xhtml
10 ?rw-r--r--··6.1·unx····47575·bx·defN·25-Feb-13·10:52·OEBPS/dialyzer.xhtml10 ?rw-r--r--··6.1·unx····47575·bx·defN·25-Feb-13·09:34·OEBPS/dialyzer.xhtml
11 ?rw-r--r--··6.1·unx·····1653·bx·defN·25-Feb-13·10:52·OEBPS/content.opf11 ?rw-r--r--··6.1·unx·····1653·bx·defN·25-Feb-13·09:34·OEBPS/content.opf
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:34·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:34·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:34·META-INF/com.apple.ibooks.display-options.xml
15 13·files,·222724·bytes·uncompressed,·64037·bytes·compressed:··71.2%15 13·files,·222724·bytes·uncompressed,·64033·bytes·compressed:··71.3%
68.4 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:56,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:34:04,·uncompressed·size·20,·method=store
18.8 KB
OEBPS/dialyzer_chapter.xhtml
Max HTML report size reached
14.8 KB
OEBPS/dialyzer.xhtml
Max HTML report size reached
1.23 KB
OEBPS/content.opf
1.2 KB
OEBPS/content.opf
Max HTML report size reached
14.9 KB
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer.html
    
Offset 266, 35 lines modifiedOffset 266, 35 lines modified
266 the·value·is·a·list,·it·is·used·as·is.·If·it·is·not·a·list,·it·is·put·into·a266 the·value·is·a·list,·it·is·used·as·is.·If·it·is·not·a·list,·it·is·put·into·a
267 list.</p><p>The·list·is·appended·to·any·options·given·to·<a·href="#run/1"><code·class="inline">run/1</code></a>·or·on·the·command·line.</p><p>The·list·can·be·retrieved·with·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html#env_compiler_options/0"><code·class="inline">compile:env_compiler_options/0</code></a>.</p><p>Currently·the·only·option·used·is·the267 list.</p><p>The·list·is·appended·to·any·options·given·to·<a·href="#run/1"><code·class="inline">run/1</code></a>·or·on·the·command·line.</p><p>The·list·can·be·retrieved·with·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html#env_compiler_options/0"><code·class="inline">compile:env_compiler_options/0</code></a>.</p><p>Currently·the·only·option·used·is·the
268 <a·href="dialyzer.html#error_location"><code·class="inline">error_location</code></a>·option.</p><p><em>Dialyzer·configuration·file:</em></p><p>Dialyzer's·configuration·file·may·also·be·used·to·augment·the·default·options268 <a·href="dialyzer.html#error_location"><code·class="inline">error_location</code></a>·option.</p><p><em>Dialyzer·configuration·file:</em></p><p>Dialyzer's·configuration·file·may·also·be·used·to·augment·the·default·options
269 and·those·given·directly·to·the·Dialyzer·command.·It·is·commonly·used·to·avoid269 and·those·given·directly·to·the·Dialyzer·command.·It·is·commonly·used·to·avoid
270 repeating·options·which·would·otherwise·need·to·be·given·explicitly·to·Dialyzer270 repeating·options·which·would·otherwise·need·to·be·given·explicitly·to·Dialyzer
271 on·every·invocation.</p><p>The·location·of·the·configuration·file·can·be·set·via·the·<code·class="inline">DIALYZER_CONFIG</code>271 on·every·invocation.</p><p>The·location·of·the·configuration·file·can·be·set·via·the·<code·class="inline">DIALYZER_CONFIG</code>
272 environment·variable,·and·defaults·to·within·the·<code·class="inline">user_config</code>·from272 environment·variable,·and·defaults·to·within·the·<code·class="inline">user_config</code>·from
273 <a·href="../../../../lib/stdlib-6.2/doc/html/filename.html#basedir/3"><code·class="inline">filename:basedir/3</code></a>.</p><p>An·example·configuration·file's·contents·might·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="3964359807-1">{</span><span·class="ss">incremental</span><span·class="p">,</span><span·class="w">273 <a·href="../../../../lib/stdlib-6.2/doc/html/filename.html#basedir/3"><code·class="inline">filename:basedir/3</code></a>.</p><p>An·example·configuration·file's·contents·might·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="4270518920-1">{</span><span·class="ss">incremental</span><span·class="p">,</span><span·class="w">
274 ········</span><span·class="p"·data-group-id="3964359807-2">{</span><span·class="ss">default_apps</span><span·class="p">,</span><span·class="p"·data-group-id="3964359807-3">[</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·109,·SHA:·96f718fca9a763f290b01a92a7d991edfd8aa2db90d44ca2c6e4b9e6e269809d·...·]-2">}</span><span·class="p">,</span><span·class="w">274 ········</span><span·class="p"·data-group-id="4270518920-2">{</span><span·class="ss">default_apps</span><span·class="p">,</span><span·class="p"·data-group-id="4270518920-3">[</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·109,·SHA:·f8c05fda0316c3d3316696437abe5c3019b85a273d4f9a874f53f8e2af9a4777·...·]-2">}</span><span·class="p">,</span><span·class="w">
275 ········</span><span·class="p"·data-group-id="3964359807-4">{</span><span·class="ss">default_warning_apps</span><span·class="p">,</span><span·class="p"·data-group-id="3964359807-5">[</span><span·class="ss">stdlib</span><span·class="p"·data-group-id="3964359807-5">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·81d5ece9253ffb1d27022e83d48e8d5174e46c6f3b14e906934569301f474264·...·]-4">}</span><span·class="w">275 ········</span><span·class="p"·data-group-id="4270518920-4">{</span><span·class="ss">default_warning_apps</span><span·class="p">,</span><span·class="p"·data-group-id="4270518920-5">[</span><span·class="ss">stdlib</span><span·class="p"·data-group-id="4270518920-5">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·4084f464cfc92671c7963f0eadfb97697dad79a6cf2029f91950472daca9f1f6·...·]-4">}</span><span·class="w">
276 ······</span><span·class="p"·data-group-id="3964359807-1">}</span><span·class="p">.</span><span·class="w">276 ······</span><span·class="p"·data-group-id="4270518920-1">}</span><span·class="p">.</span><span·class="w">
277 ······</span><span·class="p"·data-group-id="3964359807-6">{</span><span·class="ss">warnings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3964359807-7">[</span><span·class="ss">no_improper_lists</span><span·class="p"·data-group-id="3964359807-7">]</span><span·class="p"·data-group-id="3964359807-6">}</span><span·class="p">.</span><span·class="w"> 
278 ······</span><span·class="p"·data-group-id="3964359807-8">{</span><span·class="ss">add_pathsa</span><span·class="p">,</span><span·class="p"·data-group-id="3964359807-9">[</span><span·class="s">&quot;/users/samwise/potatoes/ebin&quot;</span><span·class="p"·data-group-id="3964359807-9">]</span><span·class="p"·data-group-id="3964359807-8">}</span><span·class="p">.</span><span·class="w"> 
279 ······</span><span·class="p"·data-group-id="3964359807-10">{</span><span·class="ss">add_pathsz</span><span·class="p">,</span><span·class="p"·data-group-id="3964359807-11">[</span><span·class="s">&quot;/users/smeagol/fish/ebin&quot;</span><span·class="p"·data-group-id="3964359807-11">]</span><span·cl[·...·truncated·by·diffoscope;·len:·211,·SHA:·f08acde8e6751d0891a12134f0dfd959564a4c695936fe3bf19ae41817e551b8·...·]">277 ······</span><span·class="p"·data-group-id="4270518920-6">{</span><span·class="ss">warnings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4270518920-7">[</span><span·class="ss">no_improper_lists</span><span·class="p"·data-group-id="4270518920-7">]</span><span·c[·...·truncated·by·diffoscope;·len:·84,·SHA:·81a4565f0c98a4217f2796223953229f9e962a41c9cbda45205b78032a9c7dbc·...·]">
 278 ······</span><span·class="p"·data-group-id="4270518920-8">{</span><span·class="ss">add_pathsa</span><span·class="p">,</span><span·class="p"·data-group-id="4270518920-9">[</span><span·class="s">&quot;/users/samwise/potatoes/ebin&quot;</span><span·class="p"·data-group-id="4270518920-9">]</span><span·class="p"·data-group-id="4270518920-8">}</span><span·class="p">.</span><span·class="w">
 279 ······</span><span·class="p"·data-group-id="4270518920-10">{</span><span·class="ss">add_pathsz</span><span·class="p">,</span><span·class="p"·data-group-id="4270518920-11">[</span><span·class="s">&quot;/users/smeagol/fish/ebin&quot;</span><span·class="p"·data-group-id="4270518920-11">]</span><span·class="p"·data-group-id="4270518920-10">}</span><span·class="p">.</span></code></pre><p><a·href=""·id="suppression"></a></p><h2·id="module-requesting-or-suppressing-warnings-in-source-files"·class="section-heading">
280 ··<a·href="#module-requesting-or-suppressing-warnings-in-source-files"·class="hover-link">280 ··<a·href="#module-requesting-or-suppressing-warnings-in-source-files"·class="hover-link">
281 ····<i·class="ri-link-m"·aria-hidden="true"></i>281 ····<i·class="ri-link-m"·aria-hidden="true"></i>
282 ··</a>282 ··</a>
283 ··<span·class="text">Requesting·or·Suppressing·Warnings·in·Source·Files</span>283 ··<span·class="text">Requesting·or·Suppressing·Warnings·in·Source·Files</span>
284 </h2>284 </h2>
285 <p>Attribute·<code·class="inline">-dialyzer()</code>·can·be·used·for·turning·off·warnings·in·a·module·by285 <p>Attribute·<code·class="inline">-dialyzer()</code>·can·be·used·for·turning·off·warnings·in·a·module·by
286 specifying·functions·or·warning·options.·For·example,·to·turn·off·all·warnings286 specifying·functions·or·warning·options.·For·example,·to·turn·off·all·warnings
287 for·the·function·<code·class="inline">f/0</code>,·include·the·following·line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">dialyzer</span><span·class="p"·data-group-id="5944458817-1">(</span><span·class="p"·data-group-id="5944458817-2">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·56cc1a03ae09181d12f079290fca518ecc185217e2d37a6cfdb639596fa272b2·...·]-1">)</span><span·class="p">.</span></code></pre><p>To·turn·off·warnings·for·improper·lists,·add·the·following·line·to·the·source287 for·the·function·<code·class="inline">f/0</code>,·include·the·following·line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">dialyzer</span><span·class="p"·data-group-id="2218190514-1">(</span><span·class="p"·data-group-id="2218190514-2">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·72113834d73ba41a70e5df3311b03a9f95fb36f39922e549cb17f5dbb5445000·...·]-1">)</span><span·class="p">.</span></code></pre><p>To·turn·off·warnings·for·improper·lists,·add·the·following·line·to·the·source
288 file:</p><pre><code·class="text">-dialyzer(no_improper_lists).</code></pre><p>Attribute·<code·class="inline">-dialyzer()</code>·is·allowed·after·function·declarations.·Lists·of·warning288 file:</p><pre><code·class="text">-dialyzer(no_improper_lists).</code></pre><p>Attribute·<code·class="inline">-dialyzer()</code>·is·allowed·after·function·declarations.·Lists·of·warning
289 options·or·functions·are·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">dialyzer</span><span·class="p"·data-group-id="3199103043-1">(</span><span·class="p"·data-group-id="3199103043-2">[</span><span·class="p"·data-group-id="3199103043-3">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3199103043[·...·truncated·by·diffoscope;·len:·1867,·SHA:·d2828f3f0c4f90d74b1770700cd1f60f4ad8fedf41fedcbcfd6392869ca7c1a1·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·warning·option·for·underspecified·functions,·<code·class="inline">-Wunderspecs</code>,·can·result·in289 options·or·functions·are·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">dialyzer</span><span·class="p"·data-group-id="7762438996-1">(</span><span·class="p"·data-group-id="7762438996-2">[</span><span·class="p"·data-group-id="7762438996-3">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7762438996[·...·truncated·by·diffoscope;·len:·1867,·SHA:·9aec03d98048e8f3b0d712ae3e93364105cf195e825ff3bb3b630b185495db89·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·warning·option·for·underspecified·functions,·<code·class="inline">-Wunderspecs</code>,·can·result·in
290 useful·warnings,·but·often·functions·with·specifications·that·are·strictly·more290 useful·warnings,·but·often·functions·with·specifications·that·are·strictly·more
291 allowing·than·the·success·typing·cannot·easily·be·modified·to·be·less·allowing.291 allowing·than·the·success·typing·cannot·easily·be·modified·to·be·less·allowing.
292 To·turn·off·the·warning·for·underspecified·function·<code·class="inline">f/0</code>,·include·the·following292 To·turn·off·the·warning·for·underspecified·function·<code·class="inline">f/0</code>,·include·the·following
293 line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">dialyzer</span><span·class="p"·data-group-id="7477086896-1">(</span><span·class="p"·data-group-id="7477086896-2">{</span><span·class="ss">no_underspecs</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·0b2b633ce29b43f8629a9f521a9249f66f681375fd826a468d54412b85be79ad·...·]-1">)</span><span·class="p">.</span></code></pre><p>For·help·on·the·warning·options,·use·<code·class="inline">dialyzer·-Whelp</code>.·The·options·are·also293 line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">dialyzer</span><span·class="p"·data-group-id="2299248048-1">(</span><span·class="p"·data-group-id="2299248048-2">{</span><span·class="ss">no_underspecs</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·12348bdd72bf7e189157f565e16a16dc735e14e3f997d1df437001b60a44ccc9·...·]-1">)</span><span·class="p">.</span></code></pre><p>For·help·on·the·warning·options,·use·<code·class="inline">dialyzer·-Whelp</code>.·The·options·are·also
294 enumerated,·see·type·<a·href="#t:warn_option/0"><code·class="inline">warn_option/0</code></a>.</p><p>Attribute·<code·class="inline">-dialyzer()</code>·can·also·be·used·for·turning·on·warnings.·For·example,294 enumerated,·see·type·<a·href="#t:warn_option/0"><code·class="inline">warn_option/0</code></a>.</p><p>Attribute·<code·class="inline">-dialyzer()</code>·can·also·be·used·for·turning·on·warnings.·For·example,
295 if·a·module·has·been·fixed·regarding·unmatched·returns,·adding·the·following295 if·a·module·has·been·fixed·regarding·unmatched·returns,·adding·the·following
296 line·can·help·in·assuring·that·no·new·unmatched·return·warnings·are·introduced:</p><pre><code·class="text">-dialyzer(unmatched_returns).</code></pre>296 line·can·help·in·assuring·that·no·new·unmatched·return·warnings·are·introduced:</p><pre><code·class="text">-dialyzer(unmatched_returns).</code></pre>
297 ····</section>297 ····</section>
  
298 </div>298 </div>
  
18.9 KB
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer_chapter.html
    
Offset 205, 37 lines modifiedOffset 205, 37 lines modified
205 spec·is·invalid·with·respect·to·the·implementation.·However,·if·they·do·overlap,205 spec·is·invalid·with·respect·to·the·implementation.·However,·if·they·do·overlap,
206 Dialyzer·will·proceed·under·the·assumption·that·the·correct·type·for·the·given206 Dialyzer·will·proceed·under·the·assumption·that·the·correct·type·for·the·given
207 function·is·the·intersection·of·the·inferred·type·and·the·specified·type·(the207 function·is·the·intersection·of·the·inferred·type·and·the·specified·type·(the
208 rationale·being·that·the·user·may·know·something·that·Dialyzer·itself·cannot208 rationale·being·that·the·user·may·know·something·that·Dialyzer·itself·cannot
209 deduce).·One·implication·of·this·is·that·if·the·user·gives·a·spec·for·a·function209 deduce).·One·implication·of·this·is·that·if·the·user·gives·a·spec·for·a·function
210 which·overlaps·with·Dialyzer's·inferred·type,·but·is·more·restrictive,·Dialyzer210 which·overlaps·with·Dialyzer's·inferred·type,·but·is·more·restrictive,·Dialyzer
211 will·trust·those·restrictions.·This·may·then·generate·an·error·elsewhere·that211 will·trust·those·restrictions.·This·may·then·generate·an·error·elsewhere·that
212 follows·from·the·erroneously·restricted·spec.</p><p><em>Examples:</em></p><p>Non-overlapping·argument:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="6940201827-1">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="6940201827-2">(</span><span·class="p"·data-group-id="6940201827-2">)</span><span·class="p"·data-group-id="6940201827-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·e672c8b705d6abdef273394465bcbef95ad24d6cd25e38270c58f872baf7ca79·...·]-3">)</span><span·class="p">.</span><span·class="w">212 follows·from·the·erroneously·restricted·spec.</p><p><em>Examples:</em></p><p>Non-overlapping·argument:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="0830675110-1">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="0830675110-2">(</span><span·class="p"·data-group-id="0830675110-2">)</span><span·class="p"·data-group-id="0830675110-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·5677df4488fd672352027a8482bcf4f2d883f3aee26b0c8dccda02f593325354·...·]-3">)</span><span·class="p">.</span><span·class="w">
213 </span><span·class="c1">%%·Dialyzer·will·infer:·foo(integer())·-&gt;·string().</span><span·class="w">213 </span><span·class="c1">%%·Dialyzer·will·infer:·foo(integer())·-&gt;·string().</span><span·class="w">
214 </span><span·class="nf">foo</span><span·class="p"·data-group-id="6940201827-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="6940201827-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 </span><span·class="nf">foo</span><span·class="p"·data-group-id="0830675110-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="0830675110-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····</span><span·class="nf">integer_to_list</span><span·class="p"·data-group-id="6940201827-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="6940201827-5">)</span><span·class="p">.</span></code></pre><p>Since·the·type·of·the·argument·in·the·spec·is·different·from·the·type·that215 ····</span><span·class="nf">integer_to_list</span><span·class="p"·data-group-id="0830675110-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="0830675110-5">)</span><span·class="p">.</span></code></pre><p>Since·the·type·of·the·argument·in·the·spec·is·different·from·the·type·that
216 Dialyzer·inferred,·Dialyzer·will·generate·the·following·warning:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">some_module</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">7</span><span·class="p">:</span><span·class="mi">2</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Invalid</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><span·class="ss">specification</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">216 Dialyzer·inferred,·Dialyzer·will·generate·the·following·warning:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">some_module</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">7</span><span·class="p">:</span><span·class="mi">2</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Invalid</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><span·class="ss">specification</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="ss">foo</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
217 ·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">success</span><span·class="w">·</span><span·class="ss">typing</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">foo</span><span·class="w">217 ·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">success</span><span·class="w">·</span><span·class="ss">typing</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">foo</span><span·class="w">
218 ··········</span><span·class="p"·data-group-id="4300036341-1">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="4300036341-2">(</span><span·class="p"·data-group-id="4300036341-2">)</span><span·class="p"·data-group-id="4300036341-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·a5531bc61c867be8718b92c243263d5b698cf55fea87a0c3ee68ddf32a170b69·...·]-3">)</span><span·class="w">218 ··········</span><span·class="p"·data-group-id="1531336233-1">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="1531336233-2">(</span><span·class="p"·data-group-id="1531336233-2">)</span><span·class="p"·data-group-id="1531336233-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·e41b85ff6cfdc050f122cc145c26ed674124cd580b22871d1c8fca10dfee9bf0·...·]-3">)</span><span·class="w">
219 ·</span><span·class="n">But</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">spec</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">foo</span><span·class="w">219 ·</span><span·class="n">But</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">spec</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">foo</span><span·class="w">
220 ··········</span><span·class="p"·data-group-id="4300036341-4">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="4300036341-5">(</span><span·class="p"·data-group-id="4300036341-5">)</span><span·class="p"·data-group-id="4300036341-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·4a6fcc918cf80ee87bd5c450564924d2d49b0ab40024808cb0fdf69d1e8717b5·...·]-6">)</span><span·class="w">220 ··········</span><span·class="p"·data-group-id="1531336233-4">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1531336233-5">(</span><span·class="p"·data-group-id="1531336233-5">)</span><span·class="p"·data-group-id="1531336233-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·b538cd8c6c70c1f9fb5a18295ce6398875cd9df97290b9b3f9660d50799d594f·...·]-6">)</span><span·class="w">
221 ·</span><span·class="n">They</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">overlap</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="mi">1</span><span·class="ss">st</span><span·class="w">·</span><span·class="ss">argument</span></code></pre><p>Non-overlapping·return:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">bar</span><span·class="p"·data-group-id="2187102861-1">(</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="2187102861-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·1ab30708366e63f08f2e4551b5879bfe89b096772f2a3584a6fcbde306889a1c·...·]-2">)</span><span·class="p">.</span><span·class="w">221 ·</span><span·class="n">They</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">overlap</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="mi">1</span><span·class="ss">st</span><span·class="w">·</span><span·class="ss">argument</span></code></pre><p>Non-overlapping·return:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">bar</span><span·class="p"·data-group-id="0699947238-1">(</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="0699947238-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·9fc36f90afac185c1169c8a79e751e7fdbc2d44a23bc118c67a255e031066fd7·...·]-2">)</span><span·class="p">.</span><span·class="w">
222 </span><span·class="c1">%%·Dialyzer·will·infer:·bar(a·|·b)·-&gt;·binary().</span><span·class="w">222 </span><span·class="c1">%%·Dialyzer·will·infer:·bar(a·|·b)·-&gt;·binary().</span><span·class="w">
223 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2187102861-3">(</span><span·class="ss">a</span><span·class="p"·data-group-id="2187102861-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2187102861-4">&lt;&lt;</span><span·class="s">&quot;a&quot;</span><span·class="p"·data-group-id="2187102861-4">&gt;&gt;</span><span·class="p">;</span><span·class="w"> 
224 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2187102861-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="2187102861-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2187102861-6">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·196,·SHA:·e7ca8110f40ea4b2ee482ceaca095b0fb51325fc7d32fd2a6bfc081d342c59b7·...·]223 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0699947238-3">(</span><span·class="ss">a</span><span·class="p"·data-group-id="0699947238-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0699947238-4">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·116,·SHA:·96cfb19f3e9d8a918598f7a178d3198b34bb026e1caf470ffae1150d11aab830·...·]
 224 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0699947238-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="0699947238-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0699947238-6">&lt;&lt;</span><span·class="s">&quot;b&quot;</span><span·class="p"·data-group-id="0699947238-6">&gt;&gt;</span><span·class="p">.</span></code></pre><p>Since·the·return·value·in·the·spec·and·the·return·value·inferred·by·Dialyzer·are
225 different,·Dialyzer·will·generate·the·following·warning:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">some_module</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">11</span><span·class="p">:</span><span·class="mi">2</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Invalid</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><span·class="ss">specification</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="ss">bar</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">225 different,·Dialyzer·will·generate·the·following·warning:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">some_module</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">11</span><span·class="p">:</span><span·class="mi">2</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Invalid</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><span·class="ss">specification</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="ss">bar</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
226 ·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">success</span><span·class="w">·</span><span·class="ss">typing</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">bar</span><span·class="w">226 ·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">success</span><span·class="w">·</span><span·class="ss">typing</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">bar</span><span·class="w">
227 ··········</span><span·class="p"·data-group-id="9234505101-1">(</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="9234505101-1">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·211,·SHA:·2de62abdc993a8f46588d2d58f5741fefabeabe4328904f0cb46494b349f523d·...·]-2">&gt;&gt;</span><span·class="w">227 ··········</span><span·class="p"·data-group-id="0743337600-1">(</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="0743337600-1">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·211,·SHA:·648d43090f4883f9343793d86f87a9abbe63e5130ab73651b657bc767fd3fa04·...·]-2">&gt;&gt;</span><span·class="w">
228 ·</span><span·class="n">But</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">spec</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">bar</span><span·class="w">228 ·</span><span·class="n">But</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">spec</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="nc">some_module</span><span·class="p">:</span><span·class="nf">bar</span><span·class="w">
229 ··········</span><span·class="p"·data-group-id="9234505101-3">(</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="9234505101-3">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·159,·SHA:·382becc9f354c9b1fe3efa0ba6f16a3be5d27fa465250c07229b8b0aef269a03·...·]-4">)</span><span·class="w">229 ··········</span><span·class="p"·data-group-id="0743337600-3">(</span><span·class="ss">&#39;a&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;b&#39;</span><span·class="p"·data-group-id="0743337600-3">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·159,·SHA:·13767879e01c14ffebadd6d1dc1787c782aec9b974df22b782d36d161ac70aa6·...·]-4">)</span><span·class="w">
230 ·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">return</span><span·class="w">·</span><span·class="ss">types</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">overlap</span></code></pre><p>Overlapping·spec·and·inferred·type:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">baz</span><span·class="p"·data-group-id="2948856331-1">(</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="2948856331-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·cl[·...·truncated·by·diffoscope;·len:·148,·SHA:·62c9aaa468d858715a325354148622d4fad728b5fd9f21c449e192dd79ab43fa·...·]1-2">)</span><span·class="p">.</span><span·class="w">230 ·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">return</span><span·class="w">·</span><span·class="ss">types</span><span·class="w">·</span><span·class="ss">do</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">overlap</span></code></pre><p>Overlapping·spec·and·inferred·type:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">baz</span><span·class="p"·data-group-id="2477772071-1">(</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="2477772071-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·cl[·...·truncated·by·diffoscope;·len:·148,·SHA:·a2117be688ee1ffdc0e35ce5bd9abba301c2bd60e38f336f41ab33e605057f13·...·]1-2">)</span><span·class="p">.</span><span·class="w">
231 </span><span·class="c1">%%·Dialyzer·will·infer:·baz(b·|·c·|·d)·-&gt;·-1·|·0·|·1.</span><span·class="w">231 </span><span·class="c1">%%·Dialyzer·will·infer:·baz(b·|·c·|·d)·-&gt;·-1·|·0·|·1.</span><span·class="w">
232 </span><span·class="nf">baz</span><span·class="p"·data-group-id="2948856331-3">(</span><span·class="ss">b</span><span·class="p"·data-group-id="2948856331-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">232 </span><span·class="nf">baz</span><span·class="p"·data-group-id="2477772071-3">(</span><span·class="ss">b</span><span·class="p"·data-group-id="2477772071-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
233 </span><span·class="nf">baz</span><span·class="p"·data-group-id="2948856331-4">(</span><span·class="ss">c</span><span·class="p"·data-group-id="2948856331-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">;</span><span·class="w">233 </span><span·class="nf">baz</span><span·class="p"·data-group-id="2477772071-4">(</span><span·class="ss">c</span><span·class="p"·data-group-id="2477772071-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">;</span><span·class="w">
234 </span><span·class="nf">baz</span><span·class="p"·data-group-id="2948856331-5">(</span><span·class="ss">d</span><span·class="p"·data-group-id="2948856331-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span></code></pre><p>Dialyzer·will·&quot;trust&quot;·the·spec·and·using·the·intersection·of·the·spec·and234 </span><span·class="nf">baz</span><span·class="p"·data-group-id="2477772071-5">(</span><span·class="ss">d</span><span·class="p"·data-group-id="2477772071-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span></code></pre><p>Dialyzer·will·&quot;trust&quot;·the·spec·and·using·the·intersection·of·the·spec·and
235 inferred·type:</p><pre><code·class="text">baz(b)·-&gt;·0·|·1.</code></pre><p>Notice·how·the·<code·class="inline">c</code>·and·<code·class="inline">d</code>·from·the·argument·to·<code·class="inline">baz/1</code>·and·the·<code·class="inline">-1</code>·in·the235 inferred·type:</p><pre><code·class="text">baz(b)·-&gt;·0·|·1.</code></pre><p>Notice·how·the·<code·class="inline">c</code>·and·<code·class="inline">d</code>·from·the·argument·to·<code·class="inline">baz/1</code>·and·the·<code·class="inline">-1</code>·in·the
236 return·from·the·inferred·type·were·dropped·once·the·spec·and·inferred·type·were236 return·from·the·inferred·type·were·dropped·once·the·spec·and·inferred·type·were
237 intersected.·This·could·result·in·warnings·being·emitted·for·later·functions.</p><p>For·example,·if·<code·class="inline">baz/1</code>·is·called·like·this:</p><pre><code·class="text">call_baz1(A)·-&gt;237 intersected.·This·could·result·in·warnings·being·emitted·for·later·functions.</p><p>For·example,·if·<code·class="inline">baz/1</code>·is·called·like·this:</p><pre><code·class="text">call_baz1(A)·-&gt;
238 ····case·baz(A)·of238 ····case·baz(A)·of
239 ········-1·-&gt;·negative;239 ········-1·-&gt;·negative;
240 ········0·-&gt;·zero;240 ········0·-&gt;·zero;
241 ········1·-&gt;·positive241 ········1·-&gt;·positive
645 KB
./usr/share/doc/erlang-doc/html/lib/diameter-2.4.1/doc/html/diameter.epub
3.99 KB
zipinfo {}
    
Offset 1, 26 lines modifiedOffset 1, 26 lines modified
1 Zip·file·size:·143780·bytes,·number·of·entries:·241 Zip·file·size:·143787·bytes,·number·of·entries:·24
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:31·mimetype
3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·09:31·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····93844·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····93844·bx·defN·25-Feb-13·09:31·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2002·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2002·bx·defN·25-Feb-13·09:31·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:31·OEBPS/dist/epub-erlang-ESPT6BQV.css
7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:31·OEBPS/dist/epub-LSJCIYTM.js
8 ?rw-r--r--··6.1·unx·····3956·bx·defN·25-Feb-13·10:52·OEBPS/diameterc_cmd.xhtml8 ?rw-r--r--··6.1·unx·····3956·bx·defN·25-Feb-13·09:31·OEBPS/diameterc_cmd.xhtml
9 ?rw-r--r--··6.1·unx······620·bx·defN·25-Feb-13·10:52·OEBPS/diameter_using.xhtml9 ?rw-r--r--··6.1·unx······620·bx·defN·25-Feb-13·09:31·OEBPS/diameter_using.xhtml
10 ?rw-r--r--··6.1·unx····13050·bx·defN·25-Feb-13·10:52·OEBPS/diameter_transport.xhtml10 ?rw-r--r--··6.1·unx····13050·bx·defN·25-Feb-13·09:31·OEBPS/diameter_transport.xhtml
11 ?rw-r--r--··6.1·unx····17167·bx·defN·25-Feb-13·10:52·OEBPS/diameter_tcp.xhtml11 ?rw-r--r--··6.1·unx····17167·bx·defN·25-Feb-13·09:31·OEBPS/diameter_tcp.xhtml
12 ?rw-r--r--··6.1·unx····43142·bx·defN·25-Feb-13·10:52·OEBPS/diameter_soc.xhtml12 ?rw-r--r--··6.1·unx····43142·bx·defN·25-Feb-13·09:31·OEBPS/diameter_soc.xhtml
13 ?rw-r--r--··6.1·unx·····2082·bx·defN·25-Feb-13·10:52·OEBPS/diameter_service.xhtml13 ?rw-r--r--··6.1·unx·····2082·bx·defN·25-Feb-13·09:31·OEBPS/diameter_service.xhtml
14 ?rw-r--r--··6.1·unx····14287·bx·defN·25-Feb-13·10:52·OEBPS/diameter_sctp.xhtml14 ?rw-r--r--··6.1·unx····14287·bx·defN·25-Feb-13·09:31·OEBPS/diameter_sctp.xhtml
15 ?rw-r--r--··6.1·unx····16021·bx·defN·25-Feb-13·10:52·OEBPS/diameter_make.xhtml15 ?rw-r--r--··6.1·unx····16021·bx·defN·25-Feb-13·09:31·OEBPS/diameter_make.xhtml
16 ?rw-r--r--··6.1·unx·····3472·bx·defN·25-Feb-13·10:52·OEBPS/diameter_intro.xhtml16 ?rw-r--r--··6.1·unx·····3472·bx·defN·25-Feb-13·09:31·OEBPS/diameter_intro.xhtml
17 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·10:52·OEBPS/diameter_examples.xhtml17 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·09:31·OEBPS/diameter_examples.xhtml
18 ?rw-r--r--··6.1·unx····26449·bx·defN·25-Feb-13·10:52·OEBPS/diameter_dict.xhtml18 ?rw-r--r--··6.1·unx····26449·bx·defN·25-Feb-13·09:31·OEBPS/diameter_dict.xhtml
19 ?rw-r--r--··6.1·unx····23141·bx·defN·25-Feb-13·10:52·OEBPS/diameter_codec.xhtml19 ?rw-r--r--··6.1·unx····23141·bx·defN·25-Feb-13·09:31·OEBPS/diameter_codec.xhtml
20 ?rw-r--r--··6.1·unx····51180·bx·defN·25-Feb-13·10:52·OEBPS/diameter_app.xhtml20 ?rw-r--r--··6.1·unx····51180·bx·defN·25-Feb-13·09:31·OEBPS/diameter_app.xhtml
21 ?rw-r--r--··6.1·unx···247889·bx·defN·25-Feb-13·10:52·OEBPS/diameter.xhtml21 ?rw-r--r--··6.1·unx···247889·bx·defN·25-Feb-13·09:31·OEBPS/diameter.xhtml
22 ?rw-r--r--··6.1·unx·····3430·bx·defN·25-Feb-13·10:52·OEBPS/content.opf22 ?rw-r--r--··6.1·unx·····3430·bx·defN·25-Feb-13·09:31·OEBPS/content.opf
23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:31·OEBPS/assets/logo.png
24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:31·META-INF/container.xml
25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:31·META-INF/com.apple.ibooks.display-options.xml
26 24·files,·584502·bytes·uncompressed,·139524·bytes·compressed:··76.1%26 24·files,·584502·bytes·uncompressed,·139531·bytes·compressed:··76.1%
125 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:28,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:31:54,·uncompressed·size·20,·method=store
1.51 KB
OEBPS/diameterc_cmd.xhtml
    
Offset 22, 15 lines modifiedOffset 22, 15 lines modified
22 ····</h1>22 ····</h1>
23 <p>Compile·a·diameter·dictionary·to·Erlang·source.</p><h2·id="synopsis"·class="section-heading">23 <p>Compile·a·diameter·dictionary·to·Erlang·source.</p><h2·id="synopsis"·class="section-heading">
24 ··<a·href="#synopsis"·class="hover-link">24 ··<a·href="#synopsis"·class="hover-link">
25 ····<i·class="ri-link-m"·aria-hidden="true"></i>25 ····<i·class="ri-link-m"·aria-hidden="true"></i>
26 ··</a>26 ··</a>
27 ··<span·class="text">Synopsis</span>27 ··<span·class="text">Synopsis</span>
28 </h2>28 </h2>
29 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">diameterc</span><span·class="w">·</span><span·class="p"·data-group-id="9672522916-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9672522916-1">]</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">file</span><span·class="o">&gt;</span></code></pre><h2·id="description"·class="section-heading">29 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">diameterc</span><span·class="w">·</span><span·class="p"·data-group-id="0720843164-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0720843164-1">]</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">file</span><span·class="o">&gt;</span></code></pre><h2·id="description"·class="section-heading">
30 ··<a·href="#description"·class="hover-link">30 ··<a·href="#description"·class="hover-link">
31 ····<i·class="ri-link-m"·aria-hidden="true"></i>31 ····<i·class="ri-link-m"·aria-hidden="true"></i>
32 ··</a>32 ··</a>
33 ··<span·class="text">Description</span>33 ··<span·class="text">Description</span>
34 </h2>34 </h2>
35 <p>The·diameterc·utility·is·used·to·compile·a·diameter35 <p>The·diameterc·utility·is·used·to·compile·a·diameter
36 <a·href="diameter_dict.xhtml">dictionary·file</a>·into·Erlang·source.·The·resulting·source36 <a·href="diameter_dict.xhtml">dictionary·file</a>·into·Erlang·source.·The·resulting·source
17.4 KB
OEBPS/diameter_dict.xhtml
Max HTML report size reached
2.31 KB
OEBPS/diameter_codec.xhtml
    
Offset 30, 15 lines modifiedOffset 30, 15 lines modified
30 encode/decode.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·diameter·user·does·not·need·to·call·functions·here·explicitly·when·sending30 encode/decode.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·diameter·user·does·not·need·to·call·functions·here·explicitly·when·sending
31 and·receiving·messages·using·<a·href="diameter.xhtml#call/4"><code·class="inline">diameter:call/4</code></a>·and·the·callback·interface31 and·receiving·messages·using·<a·href="diameter.xhtml#call/4"><code·class="inline">diameter:call/4</code></a>·and·the·callback·interface
32 documented·in·<a·href="diameter_app.xhtml"><code·class="inline">diameter_app</code></a>:·diameter·itself·provides·encode/decode·as·a32 documented·in·<a·href="diameter_app.xhtml"><code·class="inline">diameter_app</code></a>:·diameter·itself·provides·encode/decode·as·a
33 consequence·of·configuration·passed·to·<a·href="diameter.xhtml#start_service/2"><code·class="inline">diameter:start_service/2</code></a>,·and·the33 consequence·of·configuration·passed·to·<a·href="diameter.xhtml#start_service/2"><code·class="inline">diameter:start_service/2</code></a>,·and·the
34 results·may·differ·from·those·returned·by·the·functions·documented·here,34 results·may·differ·from·those·returned·by·the·functions·documented·here,
35 depending·on·configuration.</p></section><p>The·<a·href="diameter_codec.xhtml#header">header()</a>·and35 depending·on·configuration.</p></section><p>The·<a·href="diameter_codec.xhtml#header">header()</a>·and
36 <a·href="diameter_codec.xhtml#packet">packet()</a>·records·below·are·defined·in·diameter.hrl,36 <a·href="diameter_codec.xhtml#packet">packet()</a>·records·below·are·defined·in·diameter.hrl,
37 which·can·be·included·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p">-</samp><samp·class="na">include_lib</samp><samp·class="p"·data-group-id="3900484055-1">(</samp><samp·class="s">&quot;diameter/include/diameter.hrl&quot;</samp><samp·class="p"·data-group-id="3900484055-1">)</samp><samp·class="p">.</samp></code></pre><p>Application-specific·records·are·defined·in·the·hrl·files·resulting·from37 which·can·be·included·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p">-</samp><samp·class="na">include_lib</samp><samp·class="p"·data-group-id="6563940349-1">(</samp><samp·class="s">&quot;diameter/include/diameter.hrl&quot;</samp><samp·class="p"·data-group-id="6563940349-1">)</samp><samp·class="p">.</samp></code></pre><p>Application-specific·records·are·defined·in·the·hrl·files·resulting·from
38 dictionary·file·compilation.</p><h2·id="module-data-types"·class="section-heading">38 dictionary·file·compilation.</p><h2·id="module-data-types"·class="section-heading">
39 ··<a·href="#module-data-types"·class="hover-link">39 ··<a·href="#module-data-types"·class="hover-link">
40 ····<i·class="ri-link-m"·aria-hidden="true"></i>40 ····<i·class="ri-link-m"·aria-hidden="true"></i>
41 ··</a>41 ··</a>
42 ··<span·class="text">DATA·TYPES</span>42 ··<span·class="text">DATA·TYPES</span>
43 </h2>43 </h2>
44 <ul><li><p><strong><code·class="inline"·id="integers">uint8() ·=·0..255</code></strong></p></li><li><p><strong><code·class="inline">uint24()·=·0..16777215</code></strong></p></li><li><p><strong><code·class="inline">uint32()·=·0..4294967295</code></strong>·-·8-bit,·24-bit·and·32-bit·integers·occurring44 <ul><li><p><strong><code·class="inline"·id="integers">uint8() ·=·0..255</code></strong></p></li><li><p><strong><code·class="inline">uint24()·=·0..16777215</code></strong></p></li><li><p><strong><code·class="inline">uint32()·=·0..4294967295</code></strong>·-·8-bit,·24-bit·and·32-bit·integers·occurring
7.47 KB
OEBPS/diameter_app.xhtml
Max HTML report size reached
485 KB
OEBPS/diameter.xhtml
Max HTML report size reached
1.24 KB
OEBPS/content.opf
1.21 KB
OEBPS/content.opf
Max HTML report size reached
198 KB
./usr/share/doc/erlang-doc/html/lib/diameter-2.4.1/doc/html/diameter.html
    
Offset 225, 22 lines modifiedOffset 225, 22 lines modified
225 not·setting·a·value,·as·documented·in·RFC·6733.·The·function225 not·setting·a·value,·as·documented·in·RFC·6733.·The·function
226 <a·href="#origin_state_id/0"><code·class="inline">origin_state_id/0</code></a>·can·be·used·as·to·retrieve·a·value·that·is·computed·when226 <a·href="#origin_state_id/0"><code·class="inline">origin_state_id/0</code></a>·can·be·used·as·to·retrieve·a·value·that·is·computed·when
227 the·diameter·application·is·started.</p></li><li><p><strong><code·class="inline">{'Supported-Vendor-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Auth-Application-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Inband-Security-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong>·-227 the·diameter·application·is·started.</p></li><li><p><strong><code·class="inline">{'Supported-Vendor-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Auth-Application-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Inband-Security-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong>·-
228 Inband-Security-Id·defaults·to·the·empty·list,·which·is·equivalent·to·a·list228 Inband-Security-Id·defaults·to·the·empty·list,·which·is·equivalent·to·a·list
229 containing·only·0·(NO_INBAND_SECURITY).·If·1·(TLS)·is·specified·then·TLS·is229 containing·only·0·(NO_INBAND_SECURITY).·If·1·(TLS)·is·specified·then·TLS·is
230 selected·if·the·CER/CEA·received·from·the·peer·offers·it.</p></li><li><p><strong><code·class="inline">{'Acct-Application-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Vendor-Specific-Application-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Grouped()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Firmware-Revision',</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">}</code></strong></p></li></ul><p>Note·that·each·tuple·communicates·one·or·more·AVP·values.·It·is·an·error·to230 selected·if·the·CER/CEA·received·from·the·peer·offers·it.</p></li><li><p><strong><code·class="inline">{'Acct-Application-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Vendor-Specific-Application-Id',·[</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Grouped()</code></a><code·class="inline">]}</code></strong></p></li><li><p><strong><code·class="inline">{'Firmware-Revision',</code><a·href="diameter_dict.html#DATA_TYPES"><code·class="inline">Unsigned32()</code></a><code·class="inline">}</code></strong></p></li></ul><p>Note·that·each·tuple·communicates·one·or·more·AVP·values.·It·is·an·error·to
231 specify·duplicate·tuples.</p><p><a·href=""·id="eval"></a></p></li><li><p><strong><code·class="inline">eval()·=·{M,F,A}·|·fun()·|·[eval()·|·A]</code></strong>·-·An·expression·that·can·be231 specify·duplicate·tuples.</p><p><a·href=""·id="eval"></a></p></li><li><p><strong><code·class="inline">eval()·=·{M,F,A}·|·fun()·|·[eval()·|·A]</code></strong>·-·An·expression·that·can·be
232 evaluated·as·a·function·in·the·following·sense.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">eval</span><span·class="p"·data-group-id="4431979614-1">(</span><span·class="p"·data-group-id="4431979614-2">[</span><span·class="p"·data-group-id="4431979614-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="n">A</span><span·cl[·...·truncated·by·diffoscope;·len:·233,·SHA:·295a2cb8d5e911c5f21541665e936b3bf4c605eaba6f9ec91bd8ad205c4d1ef5·...·]14-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">232 evaluated·as·a·function·in·the·following·sense.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">eval</span><span·class="p"·data-group-id="6681726114-1">(</span><span·class="p"·data-group-id="6681726114-2">[</span><span·class="p"·data-group-id="6681726114-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="n">A</span><span·cl[·...·truncated·by·diffoscope;·len:·233,·SHA:·5bfe2b00cfd889deaaebed13d8fad5f866376eb05a3ca7d2d0645ae3c8d5965a·...·]14-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
233 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="4431979614-4">(</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·70,·SHA:·8b5320054e0edc1113e17e1821c4f1506537cb2e331b0ec6a91527140803dae0·...·]14-4">)</span><span·class="p">;</span><span·class="w">233 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="6681726114-4">(</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·70,·SHA:·ce1bcd064e3cbddbfc8b5d3fc196fa94274727eb686ad905efb8d1f43e0625fb·...·]14-4">)</span><span·class="p">;</span><span·class="w">
234 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4431979614-5">(</span><span·class="p"·data-group-id="4431979614-6">[</span><span·class="p"·data-group-id="4431979614-7">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="4431979614-7">]</span><sp[·...·truncated·by·diffoscope;·len:·185,·SHA:·aaf099e82267ae9d6f01fcb99f589ed6157e816dd0c42b72eaba2df1b4805fd6·...·]14-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 </span><span·class="nf">eval</span><span·class="p"·data-group-id="6681726114-5">(</span><span·class="p"·data-group-id="6681726114-6">[</span><span·class="p"·data-group-id="6681726114-7">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="6681726114-7">]</span><sp[·...·truncated·by·diffoscope;·len:·185,·SHA:·88da3ad9bd957d48681efac7f723465f2771c73262d9d523d905bfb3c6c9b255·...·]14-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
235 ····</span><span·class="nf">eval</span><span·class="p"·data-group-id="4431979614-8">(</span><span·class="p"·data-group-id="4431979614-9">[</span><span·class="n">F</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">T</span><span·class="w">·</span><span·class="o">++</span><span·class=[·...·truncated·by·diffoscope;·len:·128,·SHA:·1099c7327844c30aec0380051316129e16125f25d14be84b6102c865df7926f1·...·]14-8">)</span><span·class="p">;</span><span·class="w">235 ····</span><span·class="nf">eval</span><span·class="p"·data-group-id="6681726114-8">(</span><span·class="p"·data-group-id="6681726114-9">[</span><span·class="n">F</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">T</span><span·class="w">·</span><span·class="o">++</span><span·class=[·...·truncated·by·diffoscope;·len:·128,·SHA:·463cc8268d14f905da824a976fd8f4e45b887196e9e59f9d738f45d54dec7c8c·...·]14-8">)</span><span·class="p">;</span><span·class="w">
236 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4431979614-10">(</span><span·class="p"·data-group-id="4431979614-11">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="4431979614-11">]</span><span·class="p"·data-group-id="4431979614-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">236 </span><span·class="nf">eval</span><span·class="p"·data-group-id="6681726114-10">(</span><span·class="p"·data-group-id="6681726114-11">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="6681726114-11">]</span><span·class="p"·data-group-id="6681726114-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
237 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="4431979614-12">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="4431979614-12">)</span><span·class="p">;</span><span·class="w">237 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="6681726114-12">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="6681726114-12">)</span><span·class="p">;</span><span·class="w">
238 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4431979614-13">(</span><span·class="n">F</span><span·class="p"·data-group-id="4431979614-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">238 </span><span·class="nf">eval</span><span·class="p"·data-group-id="6681726114-13">(</span><span·class="n">F</span><span·class="p"·data-group-id="6681726114-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
239 ····</span><span·class="nf">eval</span><span·class="p"·data-group-id="4431979614-14">(</span><span·class="p"·data-group-id="4431979614-15">[</span><span·class="n">F</span><span·class="p"·data-group-id="4431979614-15">]</span><span·class="p"·data-group-id="4431979614-14">)</span><span·class="p">.</span></code></pre><p>Applying·an·<a·href="diameter.html#eval"><code·class="inline">eval()</code></a>·<code·class="inline">E</code>·to·an·argument·list·<code·class="inline">A</code>·is·meant239 ····</span><span·class="nf">eval</span><span·class="p"·data-group-id="6681726114-14">(</span><span·class="p"·data-group-id="6681726114-15">[</span><span·class="n">F</span><span·class="p"·data-group-id="6681726114-15">]</span><span·class="p"·data-group-id="6681726114-14">)</span><span·class="p">.</span></code></pre><p>Applying·an·<a·href="diameter.html#eval"><code·class="inline">eval()</code></a>·<code·class="inline">E</code>·to·an·argument·list·<code·class="inline">A</code>·is·meant
240 in·the·sense·of·<code·class="inline">eval([E|A])</code>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Beware·of·using·fun·expressions·of·the·form·<code·class="inline">fun·Name/Arity</code>·in·situations240 in·the·sense·of·<code·class="inline">eval([E|A])</code>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Beware·of·using·fun·expressions·of·the·form·<code·class="inline">fun·Name/Arity</code>·in·situations
241 in·which·the·fun·is·not·short-lived·and·code·is·to·be·upgraded·at·runtime241 in·which·the·fun·is·not·short-lived·and·code·is·to·be·upgraded·at·runtime
242 since·any·processes·retaining·such·a·fun·will·have·a·reference·to·old·code.242 since·any·processes·retaining·such·a·fun·will·have·a·reference·to·old·code.
243 In·particular,·such·a·value·is·typically·inappropriate·in·configuration243 In·particular,·such·a·value·is·typically·inappropriate·in·configuration
244 passed·to·<a·href="#start_service/2"><code·class="inline">start_service/2</code></a>·or·<a·href="#add_transport/2"><code·class="inline">add_transport/2</code></a>.</p></section><p><a·href=""·id="peer_filter"></a></p></li><li><p><strong><code·class="inline">peer_filter()·=·term()</code></strong>·-·Filter·passed·to·<a·href="#call/4"><code·class="inline">call/4</code></a>·in·order·to·select244 passed·to·<a·href="#start_service/2"><code·class="inline">start_service/2</code></a>·or·<a·href="#add_transport/2"><code·class="inline">add_transport/2</code></a>.</p></section><p><a·href=""·id="peer_filter"></a></p></li><li><p><strong><code·class="inline">peer_filter()·=·term()</code></strong>·-·Filter·passed·to·<a·href="#call/4"><code·class="inline">call/4</code></a>·in·order·to·select
245 candidate·peers·for·a·<a·href="diameter_app.html#c:pick_peer/4">pick_peer/4</a>·callback.245 candidate·peers·for·a·<a·href="diameter_app.html#c:pick_peer/4">pick_peer/4</a>·callback.
246 Has·one·of·the·following·types.</p><ul><li><p><strong><code·class="inline">none</code></strong>·-·Matches·any·peer.·This·is·a·convenience·that·provides·a·filter246 Has·one·of·the·following·types.</p><ul><li><p><strong><code·class="inline">none</code></strong>·-·Matches·any·peer.·This·is·a·convenience·that·provides·a·filter
Offset 304, 18 lines modifiedOffset 304, 18 lines modified
304 peer·respectively.·<code·class="inline">Pkt</code>·contains·the·CER·in·question.·In·the·case·of304 peer·respectively.·<code·class="inline">Pkt</code>·contains·the·CER·in·question.·In·the·case·of
305 rejection·by·a·capabilities·callback,·the·tuple·contains·the·rejecting305 rejection·by·a·capabilities·callback,·the·tuple·contains·the·rejecting
306 callback.</p></li><li><p><strong><code·class="inline">{'CER',·Caps,·{ResultCode,·Pkt}}</code></strong></p><pre><code·class="text">ResultCode·=·integer()306 callback.</p></li><li><p><strong><code·class="inline">{'CER',·Caps,·{ResultCode,·Pkt}}</code></strong></p><pre><code·class="text">ResultCode·=·integer()
307 Caps·=·#diameter_caps{}307 Caps·=·#diameter_caps{}
308 Pkt··=·#diameter_packet{}</code></pre><p>An·incoming·CER·contained·errors·and·has·been·answered·with·the·indicated308 Pkt··=·#diameter_packet{}</code></pre><p>An·incoming·CER·contained·errors·and·has·been·answered·with·the·indicated
309 result·code.·<code·class="inline">Caps</code>·contains·values·for·the·local·node·only.·<code·class="inline">Pkt</code>309 result·code.·<code·class="inline">Caps</code>·contains·values·for·the·local·node·only.·<code·class="inline">Pkt</code>
310 contains·the·CER·in·question.</p></li><li><p><strong><code·class="inline">{'CER',·timeout}</code></strong>·-·An·expected·CER·was·not·received·within310 contains·the·CER·in·question.</p></li><li><p><strong><code·class="inline">{'CER',·timeout}</code></strong>·-·An·expected·CER·was·not·received·within
311 <a·href="diameter.html#capx_timeout">capx_timeout</a>·of·connection·establishment.</p></li><li><p><strong><code·class="inline">{'CEA',·Result,·Caps,·Pkt}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ResultCode</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9808575350-1">(</span><span·class="p"·data-group-id="9808575350-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9808575350-2">{</span><span·class="ss">capabilities_cb</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·233,·SHA:·62ed1aeaae037f5c2f87a5456af603b236d11d6b1ae621ad7f1c2ef0f2e5fd16·...·]-2">}</span><span·class="w">311 <a·href="diameter.html#capx_timeout">capx_timeout</a>·of·connection·establishment.</p></li><li><p><strong><code·class="inline">{'CEA',·Result,·Caps,·Pkt}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ResultCode</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="8504650957-1">(</span><span·class="p"·data-group-id="8504650957-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8504650957-2">{</span><span·class="ss">capabilities_cb</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·233,·SHA:·d0deb8d73c7136c11a08d92160641205a1e62c3df8bdc92841083c20bae230bd·...·]-2">}</span><span·class="w">
312 </span><span·class="n">Caps</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">diameter_caps</span><span·class="p"·data-group-id="9808575350-3">{</span><span·class="p"·data-group-id="9808575350-3">}</span><span·class="w">312 </span><span·class="n">Caps</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">diameter_caps</span><span·class="p"·data-group-id="8504650957-3">{</span><span·class="p"·data-group-id="8504650957-3">}</span><span·class="w">
313 </span><span·class="n">Pkt</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">diameter_packet</span><span·class="p"·data-group-id="9808575350-4">{</span><span·class="p"·data-group-id="9808575350-4">}</span><span·class="w">313 </span><span·class="n">Pkt</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">diameter_packet</span><span·class="p"·data-group-id="8504650957-4">{</span><span·class="p"·data-group-id="8504650957-4">}</span><span·class="w">
314 </span><span·class="n">ResultCode</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9808575350-5">(</span><span·class="p"·data-group-id="9808575350-5">)</span></code></pre><p>An·incoming·CEA·has·been·rejected·for·the·indicated·reason.·An314 </span><span·class="n">ResultCode</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8504650957-5">(</span><span·class="p"·data-group-id="8504650957-5">)</span></code></pre><p>An·incoming·CEA·has·been·rejected·for·the·indicated·reason.·An
315 integer-valued·<code·class="inline">Result</code>·indicates·the·result·code·sent·by·the·peer.·<code·class="inline">Caps</code>315 integer-valued·<code·class="inline">Result</code>·indicates·the·result·code·sent·by·the·peer.·<code·class="inline">Caps</code>
316 contains·pairs·of·values·for·the·local·node·and·remote·peer.·<code·class="inline">Pkt</code>316 contains·pairs·of·values·for·the·local·node·and·remote·peer.·<code·class="inline">Pkt</code>
317 contains·the·CEA·in·question.·In·the·case·of·rejection·by·a·capabilities317 contains·the·CEA·in·question.·In·the·case·of·rejection·by·a·capabilities
318 callback,·the·tuple·contains·the·rejecting·callback.</p></li><li><p><strong><code·class="inline">{'CEA',·Caps,·Pkt}</code></strong></p><pre><code·class="text">Caps·=·#diameter_caps{}318 callback,·the·tuple·contains·the·rejecting·callback.</p></li><li><p><strong><code·class="inline">{'CEA',·Caps,·Pkt}</code></strong></p><pre><code·class="text">Caps·=·#diameter_caps{}
319 Pkt··=·#diameter_packet{}</code></pre><p>An·incoming·CEA·contained·errors·and·has·been·rejected.·<code·class="inline">Caps</code>·contains319 Pkt··=·#diameter_packet{}</code></pre><p>An·incoming·CEA·contained·errors·and·has·been·rejected.·<code·class="inline">Caps</code>·contains
320 only·values·for·the·local·node.·<code·class="inline">Pkt</code>·contains·the·CEA·in·question.</p></li><li><p><strong><code·class="inline">{'CEA',·timeout}</code></strong>·-·An·expected·CEA·was·not·received·within320 only·values·for·the·local·node.·<code·class="inline">Pkt</code>·contains·the·CEA·in·question.</p></li><li><p><strong><code·class="inline">{'CEA',·timeout}</code></strong>·-·An·expected·CEA·was·not·received·within
321 <a·href="diameter.html#capx_timeout">capx_timeout</a>·of·connection·establishment.</p></li></ul></li><li><p><strong><code·class="inline">{watchdog,·Ref,·PeerRef,·{From,·To},·Config}</code></strong></p><pre><code·class="c">Ref·=·transport_ref()321 <a·href="diameter.html#capx_timeout">capx_timeout</a>·of·connection·establishment.</p></li></ul></li><li><p><strong><code·class="inline">{watchdog,·Ref,·PeerRef,·{From,·To},·Config}</code></strong></p><pre><code·class="c">Ref·=·transport_ref()
Offset 565, 18 lines modifiedOffset 565, 18 lines modified
565 Term·passed·as·the·third·argument·to·the565 Term·passed·as·the·third·argument·to·the
566 <a·href="diameter_transport.html#c:start/3">start/3</a>·function·of·the·relevant566 <a·href="diameter_transport.html#c:start/3">start/3</a>·function·of·the·relevant
567 <a·href="diameter_transport.html">transport·module</a>·in·order·to·start·a·transport567 <a·href="diameter_transport.html">transport·module</a>·in·order·to·start·a·transport
568 process.·Defaults·to·the·empty·list.</p><p>The·3-tuple·form·additionally·specifies·an·interval,·in·milliseconds,·after568 process.·Defaults·to·the·empty·list.</p><p>The·3-tuple·form·additionally·specifies·an·interval,·in·milliseconds,·after
569 which·a·started·transport·process·should·be·terminated·if·it·has·not·yet569 which·a·started·transport·process·should·be·terminated·if·it·has·not·yet
570 established·a·connection.·For·example,·the·following·options·on·a·connecting570 established·a·connection.·For·example,·the·following·options·on·a·connecting
571 transport·request·a·connection·with·one·peer·over·SCTP·or·another·(typically571 transport·request·a·connection·with·one·peer·over·SCTP·or·another·(typically
572 the·same)·over·TCP.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2927422027-1">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">diameter_sctp</span><span·class="p"·data-group-id="2927422027-1">}</span><span·class="w">572 the·same)·over·TCP.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9966294808-1">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">diameter_sctp</span><span·class="p"·data-group-id="9966294808-1">}</span><span·class="w">
573 </span><span·class="p"·data-group-id="2927422027-2">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SctpOpts</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="29274220[·...·truncated·by·diffoscope;·len:·2,·SHA:·670671cd97404156226e507973f2ab8330d3022ca96e0c93bdbdb320c41adcaf·...·]-2">}</span><span·class="w">573 </span><span·class="p"·data-group-id="9966294808-2">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SctpOpts</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="99662948[·...·truncated·by·diffoscope;·len:·2,·SHA:·323783be9a53a31e158ec9600626a4703e99f4e183bc1acb8772cbdf5c3a1ece·...·]-2">}</span><span·class="w">
574 </span><span·class="p"·data-group-id="2927422027-3">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="2927422027-3">}</span><span·class="w">574 </span><span·class="p"·data-group-id="9966294808-3">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="9966294808-3">}</span><span·class="w">
575 </span><span·class="p"·data-group-id="2927422027-4">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TcpOpts</span><span·class="p"·data-group-id="2927422027-4">}</span></code></pre><p>To·listen·on·both·SCTP·and·TCP,·define·one·transport·for·each.</p></li><li><p><strong><code·class="inline"·id="transport_module">{transport_module,·atom()}</code></strong>·-·Module·implementing575 </span><span·class="p"·data-group-id="9966294808-4">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TcpOpts</span><span·class="p"·data-group-id="9966294808-4">}</span></code></pre><p>To·listen·on·both·SCTP·and·TCP,·define·one·transport·for·each.</p></li><li><p><strong><code·class="inline"·id="transport_module">{transport_module,·atom()}</code></strong>·-·Module·implementing
576 a·transport·process·as·defined·in·<a·href="diameter_transport.html"><code·class="inline">diameter_transport</code></a>.·Defaults·to576 a·transport·process·as·defined·in·<a·href="diameter_transport.html"><code·class="inline">diameter_transport</code></a>.·Defaults·to
577 <code·class="inline">diameter_tcp</code>.</p><p>Multiple·<code·class="inline">transport_module</code>·and577 <code·class="inline">diameter_tcp</code>.</p><p>Multiple·<code·class="inline">transport_module</code>·and
578 <a·href="diameter.html#transport_config">transport_config</a>·options·are·allowed.·The578 <a·href="diameter.html#transport_config">transport_config</a>·options·are·allowed.·The
579 order·of·these·is·significant·in·this·case·(and·only·in·this·case),·a579 order·of·these·is·significant·in·this·case·(and·only·in·this·case),·a
580 <code·class="inline">transport_module</code>·being·paired·with·the·first580 <code·class="inline">transport_module</code>·being·paired·with·the·first
581 <a·href="diameter.html#transport_config">transport_config</a>·following·it·in·the581 <a·href="diameter.html#transport_config">transport_config</a>·following·it·in·the
582 options·list,·or·the·default·value·for·trailing·modules.·Transport·starts582 options·list,·or·the·default·value·for·trailing·modules.·Transport·starts
Offset 2471, 21 lines modifiedOffset 2471, 21 lines modified
2471 ··························when·SvcName·::·<a·href="#t:service_name/0">service_name</a>(),·Pred·::·<a·href="#t:transport_pred/0">transport_pred</a>(),·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>2471 ··························when·SvcName·::·<a·href="#t:service_name/0">service_name</a>(),·Pred·::·<a·href="#t:transport_pred/0">transport_pred</a>(),·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
2472 ······</div>2472 ······</div>
  
2473 <p>Remove·previously·added·transports.</p><p><code·class="inline">Pred</code>·determines·which·transports·to·remove.·An·arity-3-valued·<code·class="inline">Pred</code>·removes2473 <p>Remove·previously·added·transports.</p><p><code·class="inline">Pred</code>·determines·which·transports·to·remove.·An·arity-3-valued·<code·class="inline">Pred</code>·removes
2474 all·transports·for·which·<code·class="inline">Pred(Ref,·Type,·Opts)</code>·returns·<code·class="inline">true</code>,·where·<code·class="inline">Type</code>2474 all·transports·for·which·<code·class="inline">Pred(Ref,·Type,·Opts)</code>·returns·<code·class="inline">true</code>,·where·<code·class="inline">Type</code>
2475 and·<code·class="inline">Opts</code>·are·as·passed·to·<a·href="#add_transport/2"><code·class="inline">add_transport/2</code></a>·and·<code·class="inline">Ref</code>·is·as·returned·by·it.2475 and·<code·class="inline">Opts</code>·are·as·passed·to·<a·href="#add_transport/2"><code·class="inline">add_transport/2</code></a>·and·<code·class="inline">Ref</code>·is·as·returned·by·it.
2476 The·remaining·forms·are·equivalent·to·an·arity-3·fun·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5970461063-1">(</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="5970461063-2">(</span><span·class="p"·data-group-id="5970461063-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"[·...·truncated·by·diffoscope;·len:·797,·SHA:·81f8017bdf37a46f2e517af0c9ac36c12aa922f95906166ee264054ab3f29b18·...·]-5">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">2476 The·remaining·forms·are·equivalent·to·an·arity-3·fun·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1934594050-1">(</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="1934594050-2">(</span><span·class="p"·data-group-id="1934594050-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"[·...·truncated·by·diffoscope;·len:·797,·SHA:·87c5373e89d345c9bf65186b7317a3f6f9549629ff6e6152d99adad81b664ad5·...·]-5">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
2477 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5970461063-6">(</span><span·class="nf">list</span><span·class="p"·data-group-id="5970461063-7">(</span><span·class="p"·data-group-id="5970461063-7">)</span><span·class="p"·data-group-id="5970461063-6">)</span><span·class="p">:</span><span·class="w">·······[·...·truncated·by·diffoscope;·len:·547,·SHA:·b66a77839cb9771b810ed35be2be3205bf1e05471caa1d355ae466e8bafe14e9·...·]-9">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">2477 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1934594050-6">(</span><span·class="nf">list</span><span·class="p"·data-group-id="1934594050-7">(</span><span·class="p"·data-group-id="1934594050-7">)</span><span·class="p"·data-group-id="1934594050-6">)</span><span·class="p">:</span><span·class="w">·······[·...·truncated·by·diffoscope;·len:·547,·SHA:·c422686b79193f5931c1da547c31d6a734a6e2b7f82b143d456eb77a60b390c6·...·]-9">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
2478 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="5970461063-10">(</span><span·class="p"·data-group-id="5970461063-10">)</span><span·class="p">:</span><span·class="w">···············</span><span·class="nf">fun</span><span·class="p"·data-group-id="5970461063-11">(</span><span·class="n">Ref</span><span·clas[·...·truncated·by·diffoscope;·len:·175,·SHA:·27a10aec5ced60771149e460a106a7e4007a91750ca7054429ae15e28dfbe803·...·]-11">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">Ref</span><span·class="w">·</span><span·class="k">end</span><span·class="w">2478 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="1934594050-10">(</span><span·class="p"·data-group-id="1934594050-10">)</span><span·class="p">:</span><span·class="w">···············</span><span·class="nf">fun</span><span·class="p"·data-group-id="1934594050-11">(</span><span·class="n">Ref</span><span·clas[·...·truncated·by·diffoscope;·len:·175,·SHA:·8af49c05643effa047f012ba6473a567dfd978f707cfc6f17a491fc9f8c821f6·...·]-11">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">Ref</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
2479 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="5970461063-12">(</span><span·class="p"·data-group-id="5970461063-12">)</span><span·class="p">:</span><span·class="w">························</span><span·class="nf">fun</span><span·class="p"·data-group-id="5970461063-13">(</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·369,·SHA:·38e4bfa67691cc5c936d5d204838bfb8e26ec7e569a76b3b7ed28fea95559f35·...·]-14">]</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">--</span><span·class="w">·</span><span·class="n">Opts</span><span·class="w">·</span><span·class="k">end</span><span·class="w">2479 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="1934594050-12">(</span><span·class="p"·data-group-id="1934594050-12">)</span><span·class="p">:</span><span·class="w">························</span><span·class="nf">fun</span><span·class="p"·data-group-id="1934594050-13">(</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·369,·SHA:·331f189ade8171c05ea64bee45bb2ff40d802fd0b7296d3ae26a10765f3ac44f·...·]-14">]</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">--</span><span·class="w">·</span><span·class="n">Opts</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
2480 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">true</span><span·class="p">:</span><span·class="w">··························</span><span·class="nf">fun</span><span·class="p"·data-group-id="5970461063-15">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="5970461063-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="k">end</span><span·class="w">2480 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">true</span><span·class="p">:</span><span·class="w">··························</span><span·class="nf">fun</span><span·class="p"·data-group-id="1934594050-15">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="1934594050-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
2481 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">false</span><span·class="p">:</span><span·class="w">·························</span><span·class="nf">fun</span><span·class="p"·data-group-id="5970461063-16">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="5970461063-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">·</span><span·class="k">end</span><span·class="w">2481 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">false</span><span·class="p">:</span><span·class="w">·························</span><span·class="nf">fun</span><span·class="p"·data-group-id="1934594050-16">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="1934594050-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
2482 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5970461063-17">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="n">A</span><span·class="p"·data-group-id="5970461063-17">}</span><span·class="p">:</span><span·class="w">··</span><span·clas[·...·truncated·by·diffoscope;·len:·1025,·SHA:·38ac59db2d3ff6d49f8db55a2a45d61ce37692eb4ad0894ec62155efca47b7f5·...·]-19">)</span><span·class="w">·</span><span·class="k">end</span></code></pre><p>Removing·a·transport·causes·the·corresponding·transport·processes·to·be2482 </span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1934594050-17">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="n">A</span><span·class="p"·data-group-id="1934594050-17">}</span><span·class="p">:</span><span·class="w">··</span><span·clas[·...·truncated·by·diffoscope;·len:·1025,·SHA:·8dbbb922aac7dd5eae323a65224ee080274db496eb121c568682d13d4aebe8d3·...·]-19">)</span><span·class="w">·</span><span·class="k">end</span></code></pre><p>Removing·a·transport·causes·the·corresponding·transport·processes·to·be
2483 terminated.·Whether·or·not·a·DPR·message·is·sent·to·a·peer·is·controlled·by2483 terminated.·Whether·or·not·a·DPR·message·is·sent·to·a·peer·is·controlled·by
2484 value·of·<a·href="diameter.html#disconnect_cb">disconnect_cb</a>·configured·on·the2484 value·of·<a·href="diameter.html#disconnect_cb">disconnect_cb</a>·configured·on·the
2485 transport.</p>2485 transport.</p>
2486 ··</section>2486 ··</section>
2487 </section>2487 </section>
2488 <section·class="detail"·id="service_info/2">2488 <section·class="detail"·id="service_info/2">
  
Offset 2519, 60 lines modifiedOffset 2519, 60 lines modified
2519 <a·href="#start_service/2"><code·class="inline">start_service/2</code></a>.</p></li><li><p><strong><code·class="inline">applications</code></strong>·-·Return·the·list·of·applications·as·configured·with2519 <a·href="#start_service/2"><code·class="inline">start_service/2</code></a>.</p></li><li><p><strong><code·class="inline">applications</code></strong>·-·Return·the·list·of·applications·as·configured·with
2520 <a·href="#start_service/2"><code·class="inline">start_service/2</code></a>.</p></li><li><p><strong><code·class="inline">capabilities</code></strong>·-·Return·a·tagged·list·of·all·capabilities·values·as2520 <a·href="#start_service/2"><code·class="inline">start_service/2</code></a>.</p></li><li><p><strong><code·class="inline">capabilities</code></strong>·-·Return·a·tagged·list·of·all·capabilities·values·as
2521 configured·with·<a·href="#start_service/2"><code·class="inline">start_service/2</code></a>.</p></li><li><p><strong><code·class="inline">transport</code></strong>·-·Return·a·list·containing·one·entry·for·each·of·the·service's2521 configured·with·<a·href="#start_service/2"><code·class="inline">start_service/2</code></a>.</p></li><li><p><strong><code·class="inline">transport</code></strong>·-·Return·a·list·containing·one·entry·for·each·of·the·service's
2522 transport·as·configured·with·<a·href="#add_transport/2"><code·class="inline">add_transport/2</code></a>.·Each·entry·is·a·tagged·list2522 transport·as·configured·with·<a·href="#add_transport/2"><code·class="inline">add_transport/2</code></a>.·Each·entry·is·a·tagged·list
2523 containing·both·configuration·and·information·about·established·peer2523 containing·both·configuration·and·information·about·established·peer
2524 connections.·An·example·return·value·with·for·a·client·service·with2524 connections.·An·example·return·value·with·for·a·client·service·with
2525 Origin-Host·&quot;client.example.com&quot;·configured·with·a·single·transport·connected2525 Origin-Host·&quot;client.example.com&quot;·configured·with·a·single·transport·connected
2526 to·&quot;server.example.com&quot;·might·look·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8682281480-1">[</span><span·class="p"·data-group-id="8682281480-2">[</span><span·class="p"·data-group-id="8682281480-3">{</span><span·class="ss">ref</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·5374aa1b93146d265bb5831da8de4d2c608610fcef15983c8dbc8f5504d0071f·...·]-3">}</span><span·class="p">,</span><span·class="w">2526 to·&quot;server.example.com&quot;·might·look·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1494733646-1">[</span><span·class="p"·data-group-id="1494733646-2">[</span><span·class="p"·data-group-id="1494733646-3">{</span><span·class="ss">ref</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·88d21b4f5d2e7e5daf50b2e38b71ee49fdc4a815f88fec767cdac42731954c1c·...·]-3">}</span><span·class="p">,</span><span·class="w">
2527 ··</span><span·class="p"·data-group-id="8682281480-4">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="ss">connect</span><span·class="p"·data-group-id="8682281480-4">}</span><span·class="p">,</span><span·class="w">2527 ··</span><span·class="p"·data-group-id="1494733646-4">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="ss">connect</span><span·class="p"·data-group-id="1494733646-4">}</span><span·class="p">,</span><span·class="w">
2528 ··</span><span·class="p"·data-group-id="8682281480-5">{</span><span·class="ss">options</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-6">[</span><span·class="p"·data-group-id="8682281480-7">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·68,·SHA:·edfe7a2007eeb020a30f4142e8f0fed2fb096e30e605c3897799a421f0e4c1cb·...·]-7">}</span><span·class="p">,</span><span·class="w">2528 ··</span><span·class="p"·data-group-id="1494733646-5">{</span><span·class="ss">options</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-6">[</span><span·class="p"·data-group-id="1494733646-7">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·68,·SHA:·3e421a4d99f6fc6e028ff03b8e9956ad021e6a493ef6b66b970f051a58d0d7bb·...·]-7">}</span><span·class="p">,</span><span·class="w">
2529 ············</span><span·class="p"·data-group-id="8682281480-8">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-9">[</span><span·class="p"·data-group-id="8682281480-10">{</span><span·class="ss">ip</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·310,·SHA:·d0ffe663836757512f68a2645acdc67fa678842a02cbbbd3889d646ecbba5102·...·]-10">}</span><span·class="p">,</span><span·class="w">2529 ············</span><span·class="p"·data-group-id="1494733646-8">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-9">[</span><span·class="p"·data-group-id="1494733646-10">{</span><span·class="ss">ip</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·310,·SHA:·a8db8a0667f14fc1c6de004d47bfd26cefccb02048f7e1b524ba10e914e6cff4·...·]-10">}</span><span·class="p">,</span><span·class="w">
2530 ·······························</span><span·class="p"·data-group-id="8682281480-12">{</span><span·class="ss">raddr</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-13">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·143,·SHA:·7c3900ee05b88af1fc9a823dd3fa3a104d4acd229472b75066c3cdd2333fa319·...·]-12">}</span><span·class="p">,</span><span·class="w">2530 ·······························</span><span·class="p"·data-group-id="1494733646-12">{</span><span·class="ss">raddr</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-13">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·143,·SHA:·c37ceaefc3de89f9c85ac3bfcbde6dd1557810cd75f35e335bfc46165bab2d59·...·]-12">}</span><span·class="p">,</span><span·class="w">
2531 ·······························</span><span·class="p"·data-group-id="8682281480-14">{</span><span·class="ss">rport</span><span·class="p">,</span><span·class="mi">3868</span><span·class="p"·data-group-id="8682281480-14">}</span><span·class="p">,</span><span·class="w">2531 ·······························</span><span·class="p"·data-group-id="1494733646-14">{</span><span·class="ss">rport</span><span·class="p">,</span><span·class="mi">3868</span><span·class="p"·data-group-id="1494733646-14">}</span><span·class="p">,</span><span·class="w">
2532 ·······························</span><span·class="p"·data-group-id="8682281480-15">{</span><span·class="ss">reuseaddr</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8682281480-15">}</span><span·class="p"·data-group-id="8682281480-9">]</span><span·class="p"·data-group-id="8682281480[·...·truncated·by·diffoscope;·len:·106,·SHA:·f766d4bafb3e2d4cdb225c41cda0f48c2664744214f7b45ccf6d4ac74606ce86·...·]-5">}</span><span·class="p">,</span><span·class="w">2532 ·······························</span><span·class="p"·data-group-id="1494733646-15">{</span><span·class="ss">reuseaddr</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="1494733646-15">}</span><span·class="p"·data-group-id="1494733646-9">]</span><span·class="p"·data-group-id="1494733646[·...·truncated·by·diffoscope;·len:·106,·SHA:·e00c108f7bc7095d00d697d6c691febde3788afe8166d215cda4b4c37ddcf738·...·]-5">}</span><span·class="p">,</span><span·class="w">
2533 ··</span><span·class="p"·data-group-id="8682281480-16">{</span><span·class="ss">watchdog</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-17">{</span><span·class="o">&lt;</span><span·class="mf">0.66</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt[·...·truncated·by·diffoscope;·len:·245,·SHA:·7837c77441446e4f0b240a27cea49effb6425c60ff695892fa94e3c320fffdb4·...·]-16">}</span><span·class="p">,</span><span·class="w">2533 ··</span><span·class="p"·data-group-id="1494733646-16">{</span><span·class="ss">watchdog</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-17">{</span><span·class="o">&lt;</span><span·class="mf">0.66</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt[·...·truncated·by·diffoscope;·len:·245,·SHA:·c595e146f099985cac34091540433f6929d6ba0fbacb3febea53a9ab7965d556·...·]-16">}</span><span·class="p">,</span><span·class="w">
2534 ··</span><span·class="p"·data-group-id="8682281480-18">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-19">{</span><span·class="o">&lt;</span><span·class="mf">0.67</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</s[·...·truncated·by·diffoscope;·len:·189,·SHA:·6731b686ee3f568861bdcb76843e0ba0a5d6fa8838e09769441d46190791c4f8·...·]-18">}</span><span·class="p">,</span><span·class="w">2534 ··</span><span·class="p"·data-group-id="1494733646-18">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-19">{</span><span·class="o">&lt;</span><span·class="mf">0.67</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</s[·...·truncated·by·diffoscope;·len:·189,·SHA:·4f77fe58153dcf8e6c8a547629a9db0d9f19a1bb825c3b5cbbbd097dd6330f61·...·]-18">}</span><span·class="p">,</span><span·class="w">
2535 ··</span><span·class="p"·data-group-id="8682281480-20">{</span><span·class="ss">apps</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-21">[</span><span·class="p"·data-group-id="8682281480-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">common<[·...·truncated·by·diffoscope;·len:·155,·SHA:·463086e6e9776945291fdd11122267e5dd753cbbb76fb88d5c03569ad4ae0da4·...·]-20">}</span><span·class="p">,</span><span·class="w">2535 ··</span><span·class="p"·data-group-id="1494733646-20">{</span><span·class="ss">apps</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-21">[</span><span·class="p"·data-group-id="1494733646-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">common<[·...·truncated·by·diffoscope;·len:·155,·SHA:·9b71ba3f49dd40bcc10f3e1b4f35ed3c03f53000db7f7b01648ce3e7f9ae9ad1·...·]-20">}</span><span·class="p">,</span><span·class="w">
2536 ··</span><span·class="p"·data-group-id="8682281480-23">{</span><span·class="ss">caps</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-24">[</span><span·class="p"·data-group-id="8682281480-25">{</span><span·class="ss">origin_host</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-26">{</span><span·class="s">&quot;client.example.com&quot;</span><span·class="p">,</span><span·class="s">&quot;server.example.com&quot;</span><span·class="p"·data-group-id="8682281480-26">}</span><span·class="p"·data-group-id="8682281480-25">}</span><span·class="p">,</span><span·class="w"> 
2537 ·········</span><span·class="p"·data-group-id="8682281480-27">{</span><span·class="ss">origin_realm</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-28">{</span><span·class="s">&quot;example.com&quot;</span><span·class="p">,</span><span·class="s">&quot;example.com&quot;</span><span·class="p"·data-group-id="8682281480-28">}</span><span·class="p"·data-group-id="8682281480-27">}</span><span·class="p">,</span><span·class="w"> 
2538 ·········</span><span·class="p"·data-group-id="8682281480-29">{</span><span·class="ss">host_ip_address</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-30">{</span><span·class="p"·data-group-id="8682281480-31">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·831,·SHA:·1f01db83dbf20cd99b699b8e295bea7ee5ace8af5fb89fe9725cfe78a702a266·...·]">}</span><span·class="p">,</span><span·class="w">2536 ··</span><span·class="p"·data-group-id="1494733646-23">{</span><span·class="ss">caps</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-24">[</span><span·class="p"·data-group-id="1494733646-25">{</span><span·class="ss">origin_host</span>[·...·truncated·by·diffoscope;·len:·306,·SHA:·734468460a02061850f9cc63d3508431232ef9943aa18b60e24f0f70ac0bc525·...·]">}</span><span·class="p">,</span><span·class="w">
 2537 ·········</span><span·class="p"·data-group-id="1494733646-27">{</span><span·class="ss">origin_realm</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-28">{</span><span·class="s">&quot;example.com&quot;</span><span·class="p">,</span><span·class="s">&quot;example.com&quot;</span><span·class="p"·data-group-id="1494733646-28">}</span><span·class="p"·data-group-id="1494733646-27">}</span><span·class="p">,</span><span·class="w">
 2538 ·········</span><span·class="p"·data-group-id="1494733646-29">{</span><span·class="ss">host_ip_address</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-30">{</span><span·class="p"·data-group-id="1494733646-31">[</span><span·class="p"·data-group-id="1494733646-32">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1494733646-32">}</span><span·class="p"·data-group-id="1494733646-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-33">[</span><span·class="p"·data-group-id="1494733646-34">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1494733646-34">}</span><span·class="p"·data-group-id="1494733646-33">]</span><span·class="p"·data-group-id="1494733646-30">}</span><span·class="p"·data-group-id="1494733646-29">}</span><span·class="p">,</span><span·class="w">
2539 ·········</span><span·class="p"·data-group-id="8682281480-35">{</span><span·class="ss">vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-36">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">193</span><span·class="p"·data-group-id="8682281480-36">[·...·truncated·by·diffoscope;·len:·49,·SHA:·ca0d262b358ff81fb3d66382688e310b9414ca9c6ac40ac10fdfc2b9870be56a·...·]-35">}</span><span·class="p">,</span><span·class="w">2539 ·········</span><span·class="p"·data-group-id="1494733646-35">{</span><span·class="ss">vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-36">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">193</span><span·class="p"·data-group-id="1494733646-36">[·...·truncated·by·diffoscope;·len:·49,·SHA:·f48634c02c08628c51284eb31951ce616730f0cc30d562579b0617d91ba6d1a0·...·]-35">}</span><span·class="p">,</span><span·class="w">
2540 ·········</span><span·class="p"·data-group-id="8682281480-37">{</span><span·class="ss">product_name</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-38">{</span><span·class="s">&quot;Client&quot;</span><span·class="p">,</span><span·class="s">&quot;Server&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·67e1dffdf1d1393f0423c6216b98cd73c95121c097845055b3f9f7a9bc37c6e9·...·]-37">}</span><span·class="p">,</span><span·class="w">2540 ·········</span><span·class="p"·data-group-id="1494733646-37">{</span><span·class="ss">product_name</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-38">{</span><span·class="s">&quot;Client&quot;</span><span·class="p">,</span><span·class="s">&quot;Server&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·059cc84c6f7574262c02f53e3c0f5650a40ede019f78246c3634843533ad4034·...·]-37">}</span><span·class="p">,</span><span·class="w">
2541 ·········</span><span·class="p"·data-group-id="8682281480-39">{</span><span·class="ss">origin_state_id</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-40">{</span><span·class="p"·data-group-id="8682281480-41">[</span><span·class="p"·data-group-id="8682281480-41">]</span><span·cl[·...·truncated·by·diffoscope;·len:·219,·SHA:·77bd7c18709b466a6be3eb3ae019eb1ff44275b49542e0fdfb42afd7847e453f·...·]-39">}</span><span·class="p">,</span><span·class="w">2541 ·········</span><span·class="p"·data-group-id="1494733646-39">{</span><span·class="ss">origin_state_id</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-40">{</span><span·class="p"·data-group-id="1494733646-41">[</span><span·class="p"·data-group-id="1494733646-41">]</span><span·cl[·...·truncated·by·diffoscope;·len:·219,·SHA:·88be957b7e02a6af3cb950008d56a84a4d48f876b541b5bc2574854ac45783bc·...·]-39">}</span><span·class="p">,</span><span·class="w">
2542 ·········</span><span·class="p"·data-group-id="8682281480-43">{</span><span·class="ss">supported_vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-44">{</span><span·class="p"·data-group-id="8682281480-45">[</span><span·class="p"·data-group-id="8682281480-45">]</span><spa[·...·truncated·by·diffoscope;·len:·223,·SHA:·b90ea6d57773bed8f2925fa97f10457f490f9ac3f7abc0d4fcbe57635272f953·...·]-43">}</span><span·class="p">,</span><span·class="w">2542 ·········</span><span·class="p"·data-group-id="1494733646-43">{</span><span·class="ss">supported_vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-44">{</span><span·class="p"·data-group-id="1494733646-45">[</span><span·class="p"·data-group-id="1494733646-45">]</span><spa[·...·truncated·by·diffoscope;·len:·223,·SHA:·c29fee6b05989c341bfaf71acf516b1653f3b2cdef31b2a6b207fe3843043940·...·]-43">}</span><span·class="p">,</span><span·class="w">
2543 ·········</span><span·class="p"·data-group-id="8682281480-47">{</span><span·class="ss">auth_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-48">{</span><span·class="p"·data-group-id="8682281480-49">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8682281480-49">]</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-50">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8682281480-50">]</span><span·class="p"·data-group-id="8682281480-48">}</span><span·class="p"·data-group-id="8682281480-47">}</span><span·class="p">,</span><span·class="w"> 
2544 ·········</span><span·class="p"·data-group-id="8682281480-51">{</span><span·class="ss">inband_security_id</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-52">{</span><span·class="p"·data-group-id="8682281480-53">[</span><span·class="p"·data-group-id="8682281480-53">]</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-54">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8682281480-54">]</span><span·class="p"·data-group-id="8682281480-52">}</span><span·class="p"·data-group-id="8682281480-51">}</span><span·class="p">,</span><span·class="w"> 
2545 ·········</span><span·class="p"·data-group-id="8682281480-55">{</span><span·class="ss">acct_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-56">{</span><span·class="p"·data-group-id="8682281480-57">[</span><span·class="p"·data-group-id="8682281480-57">]</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-58">[</span><span·class="p"·data-group-id="8682281480-58">]</span><span·class="p"·data-group-id="8682281480-56">}</span><span·class="p"·data-group-id="8682281480-55">}</span><span·class="p">,</span><span·class="w"> 
2546 ·········</span><span·class="p"·data-group-id="8682281480-59">{</span><span·class="ss">vendor_specific_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-60">{</span><span·class="p"·data-group-id="8682281480-61">[</span><span·class="p"·data-group-id="8682281480-61">][·...·truncated·by·diffoscope;·len:·237,·SHA:·a101045c642eff5dea919a5490b8d4c3c3b06cf10e9cced272cd1cb24b27733b·...·]">}</span><span·class="p">,</span><span·class="w">2543 ·········</span><span·class="p"·data-group-id="1494733646-47">{</span><span·class="ss">auth_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-48">{</span><span·class="p"·data-group-id="1494733646-49">[</span><span·class="mi">0</span><span·class="p"·data-group-id="14[·...·truncated·by·diffoscope;·len:·276,·SHA:·0f6a9b518b84eb07b531cac07a67dc606abef0e2ac81c98b7635f09387fded1b·...·]">}</span><span·class="p">,</span><span·class="w">
 2544 ·········</span><span·class="p"·data-group-id="1494733646-51">{</span><span·class="ss">inband_security_id</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-52">{</span><span·class="p"·data-group-id="1494733646-53">[</span><span·class="p"·data-group-id="1494733646-53">]</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-54">[</span><span·class="mi">0</span><span·class="p"·data-group-id="1494733646-54">]</span><span·class="p"·data-group-id="1494733646-52">}</span><span·class="p"·data-group-id="1494733646-51">}</span><span·class="p">,</span><span·class="w">
 2545 ·········</span><span·class="p"·data-group-id="1494733646-55">{</span><span·class="ss">acct_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-56">{</span><span·class="p"·data-group-id="1494733646-57">[</span><span·class="p"·data-group-id="1494733646-57">]</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-58">[</span><span·class="p"·data-group-id="1494733646-58">]</span><span·class="p"·data-group-id="1494733646-56">}</span><span·class="p"·data-group-id="1494733646-55">}</span><span·class="p">,</span><span·class="w">
 2546 ·········</span><span·class="p"·data-group-id="1494733646-59">{</span><span·class="ss">vendor_specific_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-60">{</span><span·class="p"·data-group-id="1494733646-61">[</span><span·class="p"·data-group-id="1494733646-61">]</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-62">[</span><span·class="p"·data-group-id="1494733646-62">]</span><span·class="p"·data-group-id="1494733646-60">}</span><span·class="p"·data-group-id="1494733646-59">}</span><span·class="p">,</span><span·class="w">
2547 ·········</span><span·class="p"·data-group-id="8682281480-63">{</span><span·class="ss">firmware_revision</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-64">{</span><span·class="p"·data-group-id="8682281480-65">[</span><span·class="p"·data-group-id="8682281480-65">]</span><span·[·...·truncated·by·diffoscope;·len:·221,·SHA:·7435dbe722a5a121f59861c5479acf1efe4e54e8f5fcbe3f2c3cc95b8b2a6f17·...·]-63">}</span><span·class="p">,</span><span·class="w">2547 ·········</span><span·class="p"·data-group-id="1494733646-63">{</span><span·class="ss">firmware_revision</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-64">{</span><span·class="p"·data-group-id="1494733646-65">[</span><span·class="p"·data-group-id="1494733646-65">]</span><span·[·...·truncated·by·diffoscope;·len:·221,·SHA:·d58f0953fdbde8c77ebf15f7ca0d55a0288726f6fe1c4696a501872cd79af3e5·...·]-63">}</span><span·class="p">,</span><span·class="w">
2548 ·········</span><span·class="p"·data-group-id="8682281480-67">{</span><span·class="ss">avp</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-68">{</span><span·class="p"·data-group-id="8682281480-69">[</span><span·class="p"·data-group-id="8682281480-69">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·315,·SHA:·69ded62e2d36c56129a7c5cf1a2439f4ceda6a55226b5e508c97ed5c3d14e9f0·...·]-23">}</span><span·class="p">,</span><span·class="w">2548 ·········</span><span·class="p"·data-group-id="1494733646-67">{</span><span·class="ss">avp</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-68">{</span><span·class="p"·data-group-id="1494733646-69">[</span><span·class="p"·data-group-id="1494733646-69">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·315,·SHA:·2d3a653cfeaf3d4b10d7e3be51aaa73b6b71c4075b44c85f4aceac2b27a81cd3·...·]-23">}</span><span·class="p">,</span><span·class="w">
2549 ··</span><span·class="p"·data-group-id="8682281480-71">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-72">[</span><span·class="p"·data-group-id="8682281480-73">{</span><span·class="ss">owner</span><span·class="p">,</span><span·class="o">&lt;[·...·truncated·by·diffoscope;·len:·152,·SHA:·e52a4b7e0cfbf811c89542e3b197694ac0ef72f322ee75fa3d576a9f16f7a7c7·...·]-73">}</span><span·class="p">,</span><span·class="w">2549 ··</span><span·class="p"·data-group-id="1494733646-71">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-72">[</span><span·class="p"·data-group-id="1494733646-73">{</span><span·class="ss">owner</span><span·class="p">,</span><span·class="o">&lt;[·...·truncated·by·diffoscope;·len:·152,·SHA:·b15e5de64009a04f5ebf4163f059fdccd3a879fdf5624010730f15fd4788a385·...·]-73">}</span><span·class="p">,</span><span·class="w">
2550 ·········</span><span·class="p"·data-group-id="8682281480-74">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="8682281480-74">}</span><span·class="p">,</span><span·class="w">2550 ·········</span><span·class="p"·data-group-id="1494733646-74">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="1494733646-74">}</span><span·class="p">,</span><span·class="w">
2551 ·········</span><span·class="p"·data-group-id="8682281480-75">{</span><span·class="ss">socket</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-76">{</span><span·class="p"·data-group-id="8682281480-77">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</[·...·truncated·by·diffoscope;·len:·305,·SHA:·16c98b60406aa8f24355fd54d9902fff476aaf26541406f2bd20439e67f41489·...·]-75">}</span><span·class="p">,</span><span·class="w">2551 ·········</span><span·class="p"·data-group-id="1494733646-75">{</span><span·class="ss">socket</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-76">{</span><span·class="p"·data-group-id="1494733646-77">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</[·...·truncated·by·diffoscope;·len:·305,·SHA:·14451106c8774f8d2dbcd018145936916dcef85e620858aa400f1ae0ae4c498d·...·]-75">}</span><span·class="p">,</span><span·class="w">
2552 ·········</span><span·class="p"·data-group-id="8682281480-78">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-79">{</span><span·class="p"·data-group-id="8682281480-80">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·302,·SHA:·5c08b98b8dad9c406fbe91d401652dbb284c6d220ca683263c0df62f9b10e5dd·...·]-78">}</span><span·class="p">,</span><span·class="w">2552 ·········</span><span·class="p"·data-group-id="1494733646-78">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-79">{</span><span·class="p"·data-group-id="1494733646-80">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·302,·SHA:·b504786d3af857dfd735a8d4684bf7cdd10e5d7cdecc5bccf7b1d7dc12953cfa·...·]-78">}</span><span·class="p">,</span><span·class="w">
2553 ·········</span><span·class="p"·data-group-id="8682281480-81">{</span><span·class="nb">statistics</span><span·class="p">,</span><span·class="p"·data-group-id="8682281480-82">[</span><span·class="p"·data-group-id="8682281480-83">{</span><span·class="ss">recv_oct</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·57,·SHA:·18cedacbb451e8daa3097f7986d6d795e4165b54ebe8fce0922f28c3f568e792·...·]-83">}</span><span·class="p">,</span><span·class="w">2553 ·········</span><span·class="p"·data-group-id="1494733646-81">{</span><span·class="nb">statistics</span><span·class="p">,</span><span·class="p"·data-group-id="1494733646-82">[</span><span·class="p"·data-group-id="1494733646-83">{</span><span·class="ss">recv_oct</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·57,·SHA:·193f8487b714c6742d9c580cc3f992a2f910e3a0dbf84e16f7234a8532c6f340·...·]-83">}</span><span·class="p">,</span><span·class="w">
2554 ······················</span><span·class="p"·data-group-id="8682281480-84">{</span><span·class="ss">recv_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="8682281480-84">}</span><span·class="p">,</span><span·class="w">2554 ······················</span><span·class="p"·data-group-id="1494733646-84">{</span><span·class="ss">recv_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="1494733646-84">}</span><span·class="p">,</span><span·class="w">
2555 ······················</span><span·class="p"·data-group-id="8682281480-85">{</span><span·class="ss">recv_max</span><span·class="p">,</span><span·class="mi">148</span><span·class="p"·data-group-id="8682281480-85">}</span><span·class="p">,</span><span·class="w">2555 ······················</span><span·class="p"·data-group-id="1494733646-85">{</span><span·class="ss">recv_max</span><span·class="p">,</span><span·class="mi">148</span><span·class="p"·data-group-id="1494733646-85">}</span><span·class="p">,</span><span·class="w">
2556 ······················</span><span·class="p"·data-group-id="8682281480-86">{</span><span·class="ss">recv_avg</span><span·class="p">,</span><span·class="mi">109</span><span·class="p"·data-group-id="8682281480-86">}</span><span·class="p">,</span><span·class="w">2556 ······················</span><span·class="p"·data-group-id="1494733646-86">{</span><span·class="ss">recv_avg</span><span·class="p">,</span><span·class="mi">109</span><span·class="p"·data-group-id="1494733646-86">}</span><span·class="p">,</span><span·class="w">
2557 ······················</span><span·class="p"·data-group-id="8682281480-87">{</span><span·class="ss">recv_dvi</span><span·class="p">,</span><span·class="mi">19</span><span·class="p"·data-group-id="8682281480-87">}</span><span·class="p">,</span><span·class="w">2557 ······················</span><span·class="p"·data-group-id="1494733646-87">{</span><span·class="ss">recv_dvi</span><span·class="p">,</span><span·class="mi">19</span><span·class="p"·data-group-id="1494733646-87">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 116439/202476 bytes (57.51%) of diff not shown.
7.57 KB
./usr/share/doc/erlang-doc/html/lib/diameter-2.4.1/doc/html/diameter_app.html
    
Offset 697, 20 lines modifiedOffset 697, 20 lines modified
697 ······</div>697 ······</div>
  
698 <p>Invoked·when·a·request·message·is·received·from·a·peer.·The·application·in·which698 <p>Invoked·when·a·request·message·is·received·from·a·peer.·The·application·in·which
699 the·callback·takes·place·(that·is,·the·callback·module·as·configured·with699 the·callback·takes·place·(that·is,·the·callback·module·as·configured·with
700 <a·href="diameter.html#start_service/2"><code·class="inline">diameter:start_service/2</code></a>)·is·determined·by·the·Application·Identifier·in·the700 <a·href="diameter.html#start_service/2"><code·class="inline">diameter:start_service/2</code></a>)·is·determined·by·the·Application·Identifier·in·the
701 header·of·the·incoming·request·message,·the·selected·module·being·the·one·whose701 header·of·the·incoming·request·message,·the·selected·module·being·the·one·whose
702 corresponding·dictionary·declares·itself·as·defining·either·the·application·in702 corresponding·dictionary·declares·itself·as·defining·either·the·application·in
703 question·or·the·Relay·application.</p><p>The·argument·<a·href="#t:packet/0">packet()</a>·has·the·following·signature.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">diameter_packet</span><span·class="p"·data-group-id="0233233984-1">{</span><span·class="ss">header</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">diameter_header</span><span·class="p"·data-group-id="0233233984-2">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·3403a83ee92c10bbd0520e6d619a3e892cc68870cacbfd35e50d2a7ebef2ee2b·...·]-2">}</span><span·class="p">,</span><span·class="w">703 question·or·the·Relay·application.</p><p>The·argument·<a·href="#t:packet/0">packet()</a>·has·the·following·signature.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">diameter_packet</span><span·class="p"·data-group-id="6128652443-1">{</span><span·class="ss">header</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">diameter_header</span><span·class="p"·data-group-id="6128652443-2">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·8890626e764a38f87993c9bf7eaff29fe637080a87c5bb9d0cb3fecaa9484746·...·]-2">}</span><span·class="p">,</span><span·class="w">
704 ·················</span><span·class="ss">avps</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0233233984-3">[</span><span·class="o">#</span><span·class="ss">diameter_avp</span><span·class="p"·data-group-id="0233233984-4">{</span><span·class="p"·data-group-id="0233233984-4">}</span><span·class="p"·data-group-id="0233233984-3">]</span><span·class="p">,</span><span·class="w">704 ·················</span><span·class="ss">avps</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6128652443-3">[</span><span·class="o">#</span><span·class="ss">diameter_avp</span><span·class="p"·data-group-id="6128652443-4">{</span><span·class="p"·data-group-id="6128652443-4">}</span><span·class="p"·data-group-id="6128652443-3">]</span><span·class="p">,</span><span·class="w">
705 ·················</span><span·class="ss">msg</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record</span><span·class="p"·data-group-id="0233233984-5">(</span><span·class="p"·data-group-id="0233233984-5">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="w">705 ·················</span><span·class="ss">msg</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record</span><span·class="p"·data-group-id="6128652443-5">(</span><span·class="p"·data-group-id="6128652443-5">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="w">
706 ·················</span><span·class="ss">errors</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0233233984-6">[</span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="0233233984-7">(</span><span·class="p"·data-group-id="0233233984-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·479,·SHA:·ef7288bcba779411536233ba1187ccaf2e59e52e3b84b281d9879efdcd8bc136·...·]-6">]</span><span·class="p">,</span><span·class="w">706 ·················</span><span·class="ss">errors</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6128652443-6">[</span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="6128652443-7">(</span><span·class="p"·data-group-id="6128652443-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·479,·SHA:·888c5fddfe3d94da50dc2bd1837466a4a465d218e6c7e72b2875b2a1ef1fa865·...·]-6">]</span><span·class="p">,</span><span·class="w">
707 ·················</span><span·class="ss">bin</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="0233233984-11">(</span><span·class="p"·data-group-id="0233233984-11">)</span><span·class="p">,</span><span·class="w">707 ·················</span><span·class="ss">bin</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="6128652443-11">(</span><span·class="p"·data-group-id="6128652443-11">)</span><span·class="p">,</span><span·class="w">
708 ·················</span><span·class="ss">transport_data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0233233984-12">(</span><span·class="p"·data-group-id="0233233984-12">)</span><span·class="p"·data-group-id="0233233984-1">}</span></code></pre><p>The·<code·class="inline">msg</code>·field·will·be·<code·class="inline">undefined</code>·in·case·the·request·has·been·received·in·the708 ·················</span><span·class="ss">transport_data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="6128652443-12">(</span><span·class="p"·data-group-id="6128652443-12">)</span><span·class="p"·data-group-id="6128652443-1">}</span></code></pre><p>The·<code·class="inline">msg</code>·field·will·be·<code·class="inline">undefined</code>·in·case·the·request·has·been·received·in·the
709 relay·application.·Otherwise·it·contains·the·record·representing·the·request·as709 relay·application.·Otherwise·it·contains·the·record·representing·the·request·as
710 outlined·in·<a·href="diameter_dict.html#MESSAGE_RECORDS">diameter_dict(4)</a>.</p><p>The·<code·class="inline">errors</code>·field·specifies·any·results·codes·identifying·errors·found·while710 outlined·in·<a·href="diameter_dict.html#MESSAGE_RECORDS">diameter_dict(4)</a>.</p><p>The·<code·class="inline">errors</code>·field·specifies·any·results·codes·identifying·errors·found·while
711 decoding·the·request.·This·is·used·to·set·Result-Code·and/or·Failed-AVP·in·a711 decoding·the·request.·This·is·used·to·set·Result-Code·and/or·Failed-AVP·in·a
712 returned·answer·unless·the·callback·returns·a·<code·class="inline">#diameter_packet{}</code>·whose712 returned·answer·unless·the·callback·returns·a·<code·class="inline">#diameter_packet{}</code>·whose
713 <code·class="inline">errors</code>·field·is·set·to·either·a·non-empty·list·of·its·own,·in·which·case·this713 <code·class="inline">errors</code>·field·is·set·to·either·a·non-empty·list·of·its·own,·in·which·case·this
714 list·is·used·instead,·or·the·atom·<code·class="inline">false</code>·to·disable·any·setting·of·Result-Code714 list·is·used·instead,·or·the·atom·<code·class="inline">false</code>·to·disable·any·setting·of·Result-Code
715 and·Failed-AVP.·Note·that·the·errors·detected·by·diameter·are·of·the·3xxx·and715 and·Failed-AVP.·Note·that·the·errors·detected·by·diameter·are·of·the·3xxx·and
2.41 KB
./usr/share/doc/erlang-doc/html/lib/diameter-2.4.1/doc/html/diameter_codec.html
    
Offset 135, 15 lines modifiedOffset 135, 15 lines modified
135 encode/decode.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·diameter·user·does·not·need·to·call·functions·here·explicitly·when·sending135 encode/decode.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·diameter·user·does·not·need·to·call·functions·here·explicitly·when·sending
136 and·receiving·messages·using·<a·href="diameter.html#call/4"><code·class="inline">diameter:call/4</code></a>·and·the·callback·interface136 and·receiving·messages·using·<a·href="diameter.html#call/4"><code·class="inline">diameter:call/4</code></a>·and·the·callback·interface
137 documented·in·<a·href="diameter_app.html"><code·class="inline">diameter_app</code></a>:·diameter·itself·provides·encode/decode·as·a137 documented·in·<a·href="diameter_app.html"><code·class="inline">diameter_app</code></a>:·diameter·itself·provides·encode/decode·as·a
138 consequence·of·configuration·passed·to·<a·href="diameter.html#start_service/2"><code·class="inline">diameter:start_service/2</code></a>,·and·the138 consequence·of·configuration·passed·to·<a·href="diameter.html#start_service/2"><code·class="inline">diameter:start_service/2</code></a>,·and·the
139 results·may·differ·from·those·returned·by·the·functions·documented·here,139 results·may·differ·from·those·returned·by·the·functions·documented·here,
140 depending·on·configuration.</p></section><p>The·<a·href="diameter_codec.html#header">header()</a>·and140 depending·on·configuration.</p></section><p>The·<a·href="diameter_codec.html#header">header()</a>·and
141 <a·href="diameter_codec.html#packet">packet()</a>·records·below·are·defined·in·diameter.hrl,141 <a·href="diameter_codec.html#packet">packet()</a>·records·below·are·defined·in·diameter.hrl,
142 which·can·be·included·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4743458360-1">(</span><span·class="s">&quot;diameter/include/diameter.hrl&quot;</span><span·class="p"·data-group-id="4743458360-1">)</span><span·class="p">.</span></code></pre><p>Application-specific·records·are·defined·in·the·hrl·files·resulting·from142 which·can·be·included·as·follows.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4572471119-1">(</span><span·class="s">&quot;diameter/include/diameter.hrl&quot;</span><span·class="p"·data-group-id="4572471119-1">)</span><span·class="p">.</span></code></pre><p>Application-specific·records·are·defined·in·the·hrl·files·resulting·from
143 dictionary·file·compilation.</p><h2·id="module-data-types"·class="section-heading">143 dictionary·file·compilation.</p><h2·id="module-data-types"·class="section-heading">
144 ··<a·href="#module-data-types"·class="hover-link">144 ··<a·href="#module-data-types"·class="hover-link">
145 ····<i·class="ri-link-m"·aria-hidden="true"></i>145 ····<i·class="ri-link-m"·aria-hidden="true"></i>
146 ··</a>146 ··</a>
147 ··<span·class="text">DATA·TYPES</span>147 ··<span·class="text">DATA·TYPES</span>
148 </h2>148 </h2>
149 <ul><li><p><strong><code·class="inline"·id="integers">uint8() ·=·0..255</code></strong></p></li><li><p><strong><code·class="inline">uint24()·=·0..16777215</code></strong></p></li><li><p><strong><code·class="inline">uint32()·=·0..4294967295</code></strong>·-·8-bit,·24-bit·and·32-bit·integers·occurring149 <ul><li><p><strong><code·class="inline"·id="integers">uint8() ·=·0..255</code></strong></p></li><li><p><strong><code·class="inline">uint24()·=·0..16777215</code></strong></p></li><li><p><strong><code·class="inline">uint32()·=·0..4294967295</code></strong>·-·8-bit,·24-bit·and·32-bit·integers·occurring
17.5 KB
./usr/share/doc/erlang-doc/html/lib/diameter-2.4.1/doc/html/diameter_dict.html
    
Offset 305, 37 lines modifiedOffset 305, 37 lines modified
305 (&quot;Derived·AVP·Data·Formats&quot;)·of·RFC·6733·are·encoded·as·values·of·the·types305 (&quot;Derived·AVP·Data·Formats&quot;)·of·RFC·6733·are·encoded·as·values·of·the·types
306 defined·here.·Values·are·passed·to·<a·href="diameter.html#call/4"><code·class="inline">diameter:call/4</code></a>·in·a·request·record·when306 defined·here.·Values·are·passed·to·<a·href="diameter.html#call/4"><code·class="inline">diameter:call/4</code></a>·in·a·request·record·when
307 sending·a·request,·returned·in·a·resulting·answer·record·and·passed·to·a307 sending·a·request,·returned·in·a·resulting·answer·record·and·passed·to·a
308 <a·href="diameter_app.html#c:handle_request/3">handle_request/3</a>·callback·upon·reception·of308 <a·href="diameter_app.html#c:handle_request/3">handle_request/3</a>·callback·upon·reception·of
309 an·incoming·request.</p><p>In·cases·in·which·there·is·a·choice·between·string()·and·binary()·types·for309 an·incoming·request.</p><p>In·cases·in·which·there·is·a·choice·between·string()·and·binary()·types·for
310 OctetString()·and·derived·types,·the·representation·is·determined·by·the·value310 OctetString()·and·derived·types,·the·representation·is·determined·by·the·value
311 of·<a·href="diameter.html#service_opt">diameter:service_opt()</a>311 of·<a·href="diameter.html#service_opt">diameter:service_opt()</a>
312 <a·href="diameter.html#string_decode">string_decode</a>.</p><p><em>Basic·AVP·Data·Formats</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OctetString</span><span·class="p"·data-group-id="8817991369-1">(</span><span·class="p"·data-group-id="8817991369-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8817991369-2">(</span><span·class="p"·data-group-id="8817991369-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="8817991369-3">(</span><span·class="p"·data-group-id="8817991369-3">)</span><span·class="w"> 
313 </span><span·class="n">Integer32</span><span·class="p"·data-group-id="8817991369-4">(</span><span·class="p"·data-group-id="8817991369-4">)</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="o">-</span><span·class="m[·...·truncated·by·diffoscope;·len:·95,·SHA:·57e08c7a64baf0e5bac48c9014bcd46859011a3f9dde898d0ceb7919c79b834b·...·]</span><span·class="w">312 <a·href="diameter.html#string_decode">string_decode</a>.</p><p><em>Basic·AVP·Data·Formats</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OctetString</span><span·class="p"·data-group-id="6550478828-1">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·438,·SHA:·5f5e4deaa37a955b2b1c66af4f405c6a1de4e505b18160f9509677eea94003c4·...·]</span><span·class="w">
 313 </span><span·class="n">Integer32</span><span·class="p"·data-group-id="6550478828-4">(</span><span·class="p"·data-group-id="6550478828-4">)</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">2147483647</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">2147483647</span><span·class="w">
314 </span><span·class="n">Integer64</span><span·class="p"·data-group-id="8817991369-5">(</span><span·class="p"·data-group-id="8817991369-5">)</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">9223372036854775807</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">9223372036854775807</span><span·class="w">314 </span><span·class="n">Integer64</span><span·class="p"·data-group-id="6550478828-5">(</span><span·class="p"·data-group-id="6550478828-5">)</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">9223372036854775807</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">9223372036854775807</span><span·class="w">
315 </span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="8817991369-6">(</span><span·class="p"·data-group-id="8817991369-6">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">4294967295</span><span·class="w">315 </span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="6550478828-6">(</span><span·class="p"·data-group-id="6550478828-6">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">4294967295</span><span·class="w">
316 </span><span·class="n">Unsigned64</span><span·class="p"·data-group-id="8817991369-7">(</span><span·class="p"·data-group-id="8817991369-7">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">18446744073709551615</span><span·class="w">316 </span><span·class="n">Unsigned64</span><span·class="p"·data-group-id="6550478828-7">(</span><span·class="p"·data-group-id="6550478828-7">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">18446744073709551615</span><span·class="w">
317 </span><span·class="n">Float32</span><span·class="p"·data-group-id="8817991369-8">(</span><span·class="p"·data-group-id="8817991369-8">)</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;-infinity&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w[·...·truncated·by·diffoscope;·len:·133,·SHA:·02c4547080ab3c6b5788613d8b1911c7e462ccb77055605c505882440c250147·...·]-9">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="w">317 </span><span·class="n">Float32</span><span·class="p"·data-group-id="6550478828-8">(</span><span·class="p"·data-group-id="6550478828-8">)</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;-infinity&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w[·...·truncated·by·diffoscope;·len:·133,·SHA:·a1dedf2fb3441471c6d4b8e2d22c1bb4a3782e2c02c4bdfa827168b0b003f794·...·]-9">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="w">
318 </span><span·class="n">Float64</span><span·class="p"·data-group-id="8817991369-10">(</span><span·class="p"·data-group-id="8817991369-10">)</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;-infinity&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class=[·...·truncated·by·diffoscope;·len:·136,·SHA:·9a628246edfae0fda2915864561b27abe848447eef8f33b5618caa31ae50dec6·...·]-11">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="w">318 </span><span·class="n">Float64</span><span·class="p"·data-group-id="6550478828-10">(</span><span·class="p"·data-group-id="6550478828-10">)</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;-infinity&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class=[·...·truncated·by·diffoscope;·len:·136,·SHA:·7a3040ebfd05d9d38b49b5c66d337da0fa18ca59d4206893811c264b2136bf29·...·]-11">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="w">
319 </span><span·class="n">Grouped</span><span·class="p"·data-group-id="8817991369-12">(</span><span·class="p"·data-group-id="8817991369-12">)</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record</span><span·class="p"·data-group-id="8817991369-13">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·15faa7dcd0c14a1df849a0323053b0cce18f1463bda9df8e4723c6227cebddb0·...·]-13">)</span></code></pre><p>On·encode,·an·OctetString()·can·be·specified·as·an·iolist(),·excessively·large319 </span><span·class="n">Grouped</span><span·class="p"·data-group-id="6550478828-12">(</span><span·class="p"·data-group-id="6550478828-12">)</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record</span><span·class="p"·data-group-id="6550478828-13">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·d2440050cbd4d7e2f28a74d7d6f4cae819d858b78adde5bf38e5cf6fbc7af2df·...·]-13">)</span></code></pre><p>On·encode,·an·OctetString()·can·be·specified·as·an·iolist(),·excessively·large
320 floats·(in·absolute·value)·are·equivalent·to·<code·class="inline">infinity</code>·or·<code·class="inline">'-infinity'</code>·and320 floats·(in·absolute·value)·are·equivalent·to·<code·class="inline">infinity</code>·or·<code·class="inline">'-infinity'</code>·and
321 excessively·large·integers·result·in·encode·failure.·The·records·for·grouped321 excessively·large·integers·result·in·encode·failure.·The·records·for·grouped
322 AVPs·are·as·discussed·in·the·previous·section.</p><p><em>Derived·AVP·Data·Formats</em></p><p><a·href=""·id="Address"></a></p><pre><code·class="text">Address()·=·OctetString()322 AVPs·are·as·discussed·in·the·previous·section.</p><p><em>Derived·AVP·Data·Formats</em></p><p><a·href=""·id="Address"></a></p><pre><code·class="text">Address()·=·OctetString()
323 ··········|·tuple()</code></pre><p>On·encode,·an·OctetString()·IPv4·address·is·parsed·in·the·usual·x.x.x.x·format323 ··········|·tuple()</code></pre><p>On·encode,·an·OctetString()·IPv4·address·is·parsed·in·the·usual·x.x.x.x·format
324 while·an·IPv6·address·is·parsed·in·any·of·the·formats·specified·by·section·2.2324 while·an·IPv6·address·is·parsed·in·any·of·the·formats·specified·by·section·2.2
325 of·RFC·2373,·&quot;Text·Representation·of·Addresses&quot;.·An·IPv4·tuple()·has·length·4325 of·RFC·2373,·&quot;Text·Representation·of·Addresses&quot;.·An·IPv4·tuple()·has·length·4
326 and·contains·values·of·type·0..255.·An·IPv6·tuple()·has·length·8·and·contains326 and·contains·values·of·type·0..255.·An·IPv6·tuple()·has·length·8·and·contains
327 values·of·type·0..65535.·The·tuple·representation·is·used·on·decode.</p><p><a·href=""·id="Time"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Time</span><span·class="p"·data-group-id="4870712012-1">(</span><span·class="p"·data-group-id="4870712012-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4870712012-2">{</span><span·class="nf">date</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·301,·SHA:·a0dd78ddbf40ae0fb01e8ed2cb4e8e10fd25def2505aaf0b3007714bf67a53f7·...·]-2">}</span><span·class="w">327 values·of·type·0..65535.·The·tuple·representation·is·used·on·decode.</p><p><a·href=""·id="Time"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Time</span><span·class="p"·data-group-id="3001115133-1">(</span><span·class="p"·data-group-id="3001115133-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3001115133-2">{</span><span·class="nf">date</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·301,·SHA:·480fa6807a69efeb4b5c4af4293bddfb08a36bf2964ac834941a2dacff08e6f1·...·]-2">}</span><span·class="w">
  
328 </span><span·class="ss">where</span><span·class="w">328 </span><span·class="ss">where</span><span·class="w">
  
329 ··</span><span·class="nf">date</span><span·class="p"·data-group-id="4870712012-5">(</span><span·class="p"·data-group-id="4870712012-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4870712012-6">{</span><span·class="n">Year</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·eeea94d820a71a507ab0020447b7bf6e7d643805321cd2eaf121023e63a2240f·...·]-6">}</span><span·class="w">329 ··</span><span·class="nf">date</span><span·class="p"·data-group-id="3001115133-5">(</span><span·class="p"·data-group-id="3001115133-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3001115133-6">{</span><span·class="n">Year</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·2b2b65e1b4a9a7074695d7a4e5f1f61105412ad20b616dc3d1d66aac41942931·...·]-6">}</span><span·class="w">
330 ··</span><span·class="nf">time</span><span·class="p"·data-group-id="4870712012-7">(</span><span·class="p"·data-group-id="4870712012-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4870712012-8">{</span><span·class="n">Hour</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·b7d827f59ef1047ef1e4bd2a3fcdbc32290d2bb34f0cdd89f17865272606040e·...·]-8">}</span><span·class="w">330 ··</span><span·class="nf">time</span><span·class="p"·data-group-id="3001115133-7">(</span><span·class="p"·data-group-id="3001115133-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3001115133-8">{</span><span·class="n">Hour</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·33e81cf9f94308c791326e6ef48e977af5cdafa48c558f9e3f1c59d248fd5305·...·]-8">}</span><span·class="w">
  
331 ··</span><span·class="n">Year</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="4870712012-9">(</span><span·class="p"·data-group-id="4870712012-9">)</span><span·class="w">331 ··</span><span·class="n">Year</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3001115133-9">(</span><span·class="p"·data-group-id="3001115133-9">)</span><span·class="w">
332 ··</span><span·class="n">Month</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">12</span><span·class="w">332 ··</span><span·class="n">Month</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">12</span><span·class="w">
333 ··</span><span·class="n">Day</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">31</span><span·class="w">333 ··</span><span·class="n">Day</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">31</span><span·class="w">
334 ··</span><span·class="n">Hour</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">23</span><span·class="w">334 ··</span><span·class="n">Hour</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">23</span><span·class="w">
335 ··</span><span·class="n">Minute</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">59</span><span·class="w">335 ··</span><span·class="n">Minute</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">59</span><span·class="w">
336 ··</span><span·class="n">Second</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">59</span></code></pre><p>Additionally,·values·that·can·be·encoded·are·limited·by·way·of·their·encoding·as336 ··</span><span·class="n">Second</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">59</span></code></pre><p>Additionally,·values·that·can·be·encoded·are·limited·by·way·of·their·encoding·as
337 four·octets·as·required·by·RFC·6733·with·the·required·extension·from·RFC·2030.337 four·octets·as·required·by·RFC·6733·with·the·required·extension·from·RFC·2030.
338 In·particular,·only·values·between·<code·class="inline">{{1968,1,20},{3,14,8}}</code>·and338 In·particular,·only·values·between·<code·class="inline">{{1968,1,20},{3,14,8}}</code>·and
Offset 355, 16 lines modifiedOffset 355, 16 lines modified
355 ··FQDN·=·OctetString()355 ··FQDN·=·OctetString()
356 ··Port·=·integer()356 ··Port·=·integer()
357 ··Transport·=·sctp·|·tcp357 ··Transport·=·sctp·|·tcp
358 ··Protocol··=·diameter·|·radius·|·'tacacs+'</code></pre><p>On·encode,·fields·port,·transport·and·protocol·default·to·3868,·sctp·and358 ··Protocol··=·diameter·|·radius·|·'tacacs+'</code></pre><p>On·encode,·fields·port,·transport·and·protocol·default·to·3868,·sctp·and
359 diameter·respectively.·The·grammar·of·an·OctetString-valued·DiameterURI()·is·as359 diameter·respectively.·The·grammar·of·an·OctetString-valued·DiameterURI()·is·as
360 specified·in·section·4.3·of·RFC·6733.·The·record·representation·is·used·on360 specified·in·section·4.3·of·RFC·6733.·The·record·representation·is·used·on
361 decode.</p><p><a·href=""·id="Enumerated"></a></p><pre><code·class="text">Enumerated()·=·Integer32()</code></pre><p>On·encode,·values·can·be·specified·using·the·macros·defined·in·a·dictionary's361 decode.</p><p><a·href=""·id="Enumerated"></a></p><pre><code·class="text">Enumerated()·=·Integer32()</code></pre><p>On·encode,·values·can·be·specified·using·the·macros·defined·in·a·dictionary's
362 hrl·file.</p><p><a·href=""·id="IPFilterRule"></a>·<a·href=""·id="QoSFilterRule"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">IPFilterRule</span><span·class="p"·data-group-id="9239923052-1">(</span><span·class="p"·data-group-id="9239923052-1">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OctetString</span><span·class="p"·data-group-id="9239923052-2">(</span><span·class="p"·data-group-id="9239923052-2">)</span><span·class="w"> 
363 </span><span·class="n">QoSFilterRule</span><span·class="p"·data-group-id="9239923052-3">(</span><span·class="p"·data-group-id="9239923052-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OctetString</span><[·...·truncated·by·diffoscope;·len:·224,·SHA:·4dca6cb378e9999ea4d746db2302ff29bb1151f4b86b00173b5ce57e1697d18c·...·]">362 hrl·file.</p><p><a·href=""·id="IPFilterRule"></a>·<a·href=""·id="QoSFilterRule"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">IPFilterRule</span><span·class="p"·data-group-id="3943087862-1">(</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·248,·SHA:·471114e058d3a49deabd65ca6b5013065cd1236ae3d04d6a2b8585ff5bdbbe0b·...·]">
 363 </span><span·class="n">QoSFilterRule</span><span·class="p"·data-group-id="3943087862-3">(</span><span·class="p"·data-group-id="3943087862-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OctetString</span><span·class="p"·data-group-id="3943087862-4">(</span><span·class="p"·data-group-id="3943087862-4">)</span></code></pre><p>Values·of·these·types·are·not·currently·parsed·by·diameter.</p><h2·id="see-also"·class="section-heading">
364 ··<a·href="#see-also"·class="hover-link">364 ··<a·href="#see-also"·class="hover-link">
365 ····<i·class="ri-link-m"·aria-hidden="true"></i>365 ····<i·class="ri-link-m"·aria-hidden="true"></i>
366 ··</a>366 ··</a>
367 ··<span·class="text">SEE·ALSO</span>367 ··<span·class="text">SEE·ALSO</span>
368 </h2>368 </h2>
369 <p><a·href="diameterc_cmd.html">diameterc(1)</a>,·<a·href="diameter.html"><code·class="inline">diameter</code></a>,·<a·href="diameter_app.html"><code·class="inline">diameter_app</code></a>,369 <p><a·href="diameterc_cmd.html">diameterc(1)</a>,·<a·href="diameter.html"><code·class="inline">diameter</code></a>,·<a·href="diameter_app.html"><code·class="inline">diameter_app</code></a>,
370 <a·href="diameter_codec.html"><code·class="inline">diameter_codec</code></a>,·<a·href="diameter_make.html"><code·class="inline">diameter_make</code></a></p>370 <a·href="diameter_codec.html"><code·class="inline">diameter_codec</code></a>,·<a·href="diameter_make.html"><code·class="inline">diameter_make</code></a></p>
1.61 KB
./usr/share/doc/erlang-doc/html/lib/diameter-2.4.1/doc/html/diameterc_cmd.html
    
Offset 127, 15 lines modifiedOffset 127, 15 lines modified
  
127 <p>Compile·a·diameter·dictionary·to·Erlang·source.</p><h2·id="synopsis"·class="section-heading">127 <p>Compile·a·diameter·dictionary·to·Erlang·source.</p><h2·id="synopsis"·class="section-heading">
128 ··<a·href="#synopsis"·class="hover-link">128 ··<a·href="#synopsis"·class="hover-link">
129 ····<i·class="ri-link-m"·aria-hidden="true"></i>129 ····<i·class="ri-link-m"·aria-hidden="true"></i>
130 ··</a>130 ··</a>
131 ··<span·class="text">Synopsis</span>131 ··<span·class="text">Synopsis</span>
132 </h2>132 </h2>
133 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">diameterc</span><span·class="w">·</span><span·class="p"·data-group-id="4952658846-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4952658846-1">]</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">file</span><span·class="o">&gt;</span></code></pre><h2·id="description"·class="section-heading">133 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">diameterc</span><span·class="w">·</span><span·class="p"·data-group-id="4876125904-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4876125904-1">]</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="ss">file</span><span·class="o">&gt;</span></code></pre><h2·id="description"·class="section-heading">
134 ··<a·href="#description"·class="hover-link">134 ··<a·href="#description"·class="hover-link">
135 ····<i·class="ri-link-m"·aria-hidden="true"></i>135 ····<i·class="ri-link-m"·aria-hidden="true"></i>
136 ··</a>136 ··</a>
137 ··<span·class="text">Description</span>137 ··<span·class="text">Description</span>
138 </h2>138 </h2>
139 <p>The·diameterc·utility·is·used·to·compile·a·diameter139 <p>The·diameterc·utility·is·used·to·compile·a·diameter
140 <a·href="diameter_dict.html">dictionary·file</a>·into·Erlang·source.·The·resulting·source140 <a·href="diameter_dict.html">dictionary·file</a>·into·Erlang·source.·The·resulting·source
4.54 KB
./usr/share/doc/erlang-doc/html/lib/edoc-1.3.2/doc/html/edoc_doclet_markdown.html
    
Offset 124, 16 lines modifiedOffset 124, 16 lines modified
124 ····<span·translate="no">edoc_doclet_markdown</span>·124 ····<span·translate="no">edoc_doclet_markdown</span>·
125 ····<small·class="app-vsn"·translate="no">(edoc·v1.3.2)</small>125 ····<small·class="app-vsn"·translate="no">(edoc·v1.3.2)</small>
  
126 ··</h1>126 ··</h1>
  
  
127 ····<section·id="moduledoc">127 ····<section·id="moduledoc">
128 <p>Doclet·converting·an·edoc·application·to·use·<a·href="https://www.erlang.org/eeps/eep-0059">EEP-59</a>·and·Markdown.</p><p>This·doclet·has·to·be·used·together·with·<a·href="edoc_layout_chunks.html"><code>edoc_layout_chunks</code></a>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">edoc</span><span·class="p">:</span><span·class="nf">application</span><span·class="p"·data-group-id="7944360485-1">(</span><span·class="ss">example</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7944360485-2">[</span><span·class="p"·data-group-id="7944360485-3">{</span><span·class="ss">preprocess</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="7944360485-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7944360485-4">{</span><span·class="ss">doclet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">edoc_doclet_markdown</span><span·class="p"·data-group-id="7944360485-4">}</span><span·class="p">,</span><span·class="w"> 
129 ·······</span><span·class="p"·data-group-id="7944360485-5">{</span><span·class="ss">layout</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">edoc_layout_chunks</span><span·class="p"·data-group-id="7944360485-5">}</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·603,·SHA:·242c6dbc67d66280efa3deaae98006ccc1ca8208b5ac1b6ec4d5da7f3e4b5b5c·...·]>128 <p>Doclet·converting·an·edoc·application·to·use·<a·href="https://www.erlang.org/eeps/eep-0059">EEP-59</a>·and·Markdown.</p><p>This·doclet·has·to·be·used·together·with·<a·href="edoc_layout_chunks.html"><code>edoc_layout_chunks</code></a>.</p><p>Example:</p>[·...·truncated·by·diffoscope;·len:·951,·SHA:·2bb3f5439742e9dbfab3c70c451fba950b7a5042c79584f2447f8943310cb2e4·...·]>
 129 ·······</span><span·class="p"·data-group-id="7273012361-5">{</span><span·class="ss">layout</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">edoc_layout_chunks</span><span·class="p"·data-group-id="7273012361-5">}</span><span·class="p"·data-group-id="7273012361-2">]</span><span·class="p"·data-group-id="7273012361-1">)</span><span·class="p">.</span></code></pre><p>It·will·convert·the·overview·to·Markdown·and·any·module·documentation·to·use·<code>-doc</code>·attributes·and·Markdown.·Any·XHTML·tags·in·the·edoc·documentation·that·are·not·part·of·the·tags·supported·by·<a·href="doc_storage.html#erlang-documentation-format">Erlang·Documentation·Format</a>·will·be·added·as·HTML·tags·in·the·Markdown.</p><p>It·does·not·delete·the·old·edoc·documentation.</p><p><em>See·also:·</em><a·href="edoc_layout_chunks.html">edoc_layout_chunks</a>.</p>
130 ····</section>130 ····</section>
  
131 </div>131 </div>
  
132 ··<section·id="summary"·class="details-list">132 ··<section·id="summary"·class="details-list">
133 ····<h1·class="section-heading">133 ····<h1·class="section-heading">
134 ······<a·class="hover-link"·href="#summary">134 ······<a·class="hover-link"·href="#summary">
92.6 KB
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/doc/html/eldap.epub
1.92 KB
zipinfo {}
    
Offset 1, 13 lines modifiedOffset 1, 13 lines modified
1 Zip·file·size:·33093·bytes,·number·of·entries:·111 Zip·file·size:·33099·bytes,·number·of·entries:·11
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:33·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Feb-13·09:33·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····19167·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····19167·bx·defN·25-Feb-13·09:33·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx······936·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx······936·bx·defN·25-Feb-13·09:33·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····88626·bx·defN·25-Feb-13·10:52·OEBPS/eldap.xhtml6 ?rw-r--r--··6.1·unx····88626·bx·defN·25-Feb-13·09:33·OEBPS/eldap.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:33·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:33·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx·····1323·bx·defN·25-Feb-13·10:52·OEBPS/content.opf9 ?rw-r--r--··6.1·unx·····1323·bx·defN·25-Feb-13·09:33·OEBPS/content.opf
10 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png10 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:33·OEBPS/assets/logo.png
11 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml11 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:33·META-INF/container.xml
12 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml12 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:33·META-INF/com.apple.ibooks.display-options.xml
13 11·files,·132100·bytes·uncompressed,·31181·bytes·compressed:··76.4%13 11·files,·132100·bytes·uncompressed,·31187·bytes·compressed:··76.4%
59.7 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:52,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:33:46,·uncompressed·size·20,·method=store
29.3 KB
OEBPS/eldap.xhtml
Max HTML report size reached
1.19 KB
OEBPS/content.opf
1.15 KB
OEBPS/content.opf
Max HTML report size reached
29.4 KB
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/doc/html/eldap.html
    
Offset 951, 21 lines modifiedOffset 951, 21 lines modified
951 ·················Dn·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),951 ·················Dn·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),
952 ·················Attributes·::·[<a·href="#t:attribute/0">attribute</a>()],952 ·················Attributes·::·[<a·href="#t:attribute/0">attribute</a>()],
953 ·················Refs·::·{referral,·<a·href="#t:referrals/0">referrals</a>()},953 ·················Refs·::·{referral,·<a·href="#t:referrals/0">referrals</a>()},
954 ·················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>954 ·················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
955 ······</div>955 ······</div>
  
956 <p>Add·an·entry.·The·entry·must·not·exist.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nf">add</span><span·class="p"·data-group-id="8974897728-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">956 <p>Add·an·entry.·The·entry·must·not·exist.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nf">add</span><span·class="p"·data-group-id="5329977022-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">
957 ······</span><span·class="s">&quot;cn=Bill·Valentine,·ou=people,·o=Example·Org,·dc=example,·dc=com&quot;</span><span·class="p">,</span><span·class="w">957 ······</span><span·class="s">&quot;cn=Bill·Valentine,·ou=people,·o=Example·Org,·dc=example,·dc=com&quot;</span><span·class="p">,</span><span·class="w">
958 ·······</span><span·class="p"·data-group-id="8974897728-2">[</span><span·class="p"·data-group-id="8974897728-3">{</span><span·class="s">&quot;objectclass&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8974897728-4">[</span><span·class="s">&quot;person&quot;[·...·truncated·by·diffoscope;·len:·101,·SHA:·ff67d90d8b85f4c14fe017a062edd3c3ea5bedb0a78a6c38b0fd46ebf9edb88a·...·]-3">}</span><span·class="p">,</span><span·class="w">958 ·······</span><span·class="p"·data-group-id="5329977022-2">[</span><span·class="p"·data-group-id="5329977022-3">{</span><span·class="s">&quot;objectclass&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5329977022-4">[</span><span·class="s">&quot;person&quot;[·...·truncated·by·diffoscope;·len:·101,·SHA:·fb7e46ef6e5d9887b888f1664d1b4978d4fe3582edb4ef16d18e185423c7ba84·...·]-3">}</span><span·class="p">,</span><span·class="w">
959 ········</span><span·class="p"·data-group-id="8974897728-5">{</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8974897728-6">[</span><span·class="s">&quot;Bill·Valentine&quot;</span><span·class="p"·data-group-id="8974897728-6">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·8a63df1b778eb0abf289bb695174d9cce3acf3e788a2df19ff7daed6c5f19fe5·...·]-5">}</span><span·class="p">,</span><span·class="w">959 ········</span><span·class="p"·data-group-id="5329977022-5">{</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5329977022-6">[</span><span·class="s">&quot;Bill·Valentine&quot;</span><span·class="p"·data-group-id="5329977022-6">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·4a031f5a4143dcfe637f247c5f7f3598e33ce3a156ca4fbb1b9687e2102cabbb·...·]-5">}</span><span·class="p">,</span><span·class="w">
960 ········</span><span·class="p"·data-group-id="8974897728-7">{</span><span·class="s">&quot;sn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8974897728-8">[</span><span·class="s">&quot;Valentine&quot;</span><span·class="p"·data-group-id="8974897728-8">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·66e34f0d8ad6852fef5f801a7994a7c4bcf74cbafe05337f4fcd659b12ada549·...·]-7">}</span><span·class="p">,</span><span·class="w">960 ········</span><span·class="p"·data-group-id="5329977022-7">{</span><span·class="s">&quot;sn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5329977022-8">[</span><span·class="s">&quot;Valentine&quot;</span><span·class="p"·data-group-id="5329977022-8">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·e00e4d6cf270bcdfdafb167d2cea1dd40f210f547d15672726c4b07bef3e261c·...·]-7">}</span><span·class="p">,</span><span·class="w">
961 ········</span><span·class="p"·data-group-id="8974897728-9">{</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8974897728-10">[</span><span·class="s">&quot;545·555·00&quot;</span><span·class="p"·data-group-id="897489[·...·truncated·by·diffoscope;·len:·111,·SHA:·526de0fee98fc67dd85d0dce22c7cb218df822e7a280ec7c3ed2424a04ddde8b·...·]-2">]</span><span·class="w">961 ········</span><span·class="p"·data-group-id="5329977022-9">{</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5329977022-10">[</span><span·class="s">&quot;545·555·00&quot;</span><span·class="p"·data-group-id="532997[·...·truncated·by·diffoscope;·len:·111,·SHA:·06cca1f355429864e864aa1a69c7a44611188c0a1c42d7e73e9cfdc8ba4358b7·...·]-2">]</span><span·class="w">
962 ·····</span><span·class="p"·data-group-id="8974897728-1">)</span></code></pre>962 ·····</span><span·class="p"·data-group-id="5329977022-1">)</span></code></pre>
963 ··</section>963 ··</section>
964 </section>964 </section>
965 <section·class="detail"·id="and/1">965 <section·class="detail"·id="and/1">
  
966 ··<div·class="detail-header">966 ··<div·class="detail-header">
967 ····<a·href="#and/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">967 ····<a·href="#and/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
968 ······<i·class="ri-link-m"·aria-hidden="true"></i>968 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1249, 15 lines modifiedOffset 1249, 15 lines modified
1249 ·····························OptionalAttrs·::1249 ·····························OptionalAttrs·::
1250 ·································[{matchingRule,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()}·|1250 ·································[{matchingRule,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()}·|
1251 ··································{type,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()}·|1251 ··································{type,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()}·|
1252 ··································{dnAttributes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()}].</pre>1252 ··································{dnAttributes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()}].</pre>
  
1253 ······</div>1253 ······</div>
  
1254 <p>Creates·an·extensible·match·filter.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">extensibleMatch</span><span·class="p"·data-group-id="4553471116-1">(</span><span·class="s">&quot;Bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4553471116-2">[</span><span·class="p"·data-group-id="4553471116-3">{</span><span·class="ss">type</span><span·class="p[·...·truncated·by·diffoscope;·len:·457,·SHA:·11a43af77d89ef7a9371070baf3608b66fcddc823f17d58c4cb96ae7c5314de2·...·]-1">)</span><span·class="p">)</span></code></pre><p>creates·a·filter·which·performs·a·<code·class="inline">caseExactMatch</code>·on·the·attribute·<code·class="inline">sn</code>·and1254 <p>Creates·an·extensible·match·filter.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">extensibleMatch</span><span·class="p"·data-group-id="9153894853-1">(</span><span·class="s">&quot;Bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9153894853-2">[</span><span·class="p"·data-group-id="9153894853-3">{</span><span·class="ss">type</span><span·class="p[·...·truncated·by·diffoscope;·len:·457,·SHA:·27ea92edd77a0e80eff5c87256aa5f7397b37ef345de6e7ec5037068257afc9a·...·]-1">)</span><span·class="p">)</span></code></pre><p>creates·a·filter·which·performs·a·<code·class="inline">caseExactMatch</code>·on·the·attribute·<code·class="inline">sn</code>·and
1255 matches·with·the·value·<code·class="inline">&quot;Bar&quot;</code>.·The·default·value·of·<code·class="inline">dnAttributes</code>·is·<code·class="inline">false</code>.</p>1255 matches·with·the·value·<code·class="inline">&quot;Bar&quot;</code>.·The·default·value·of·<code·class="inline">dnAttributes</code>·is·<code·class="inline">false</code>.</p>
1256 ··</section>1256 ··</section>
1257 </section>1257 </section>
1258 <section·class="detail"·id="greaterOrEqual/2">1258 <section·class="detail"·id="greaterOrEqual/2">
  
1259 ··<div·class="detail-header">1259 ··<div·class="detail-header">
1260 ····<a·href="#greaterOrEqual/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1260 ····<a·href="#greaterOrEqual/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1453, 17 lines modifiedOffset 1453, 17 lines modified
1453 ····················Dn·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),1453 ····················Dn·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),
1454 ····················ModifyOps·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],1454 ····················ModifyOps·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],
1455 ····················Refs·::·{referral,·<a·href="#t:referrals/0">referrals</a>()},1455 ····················Refs·::·{referral,·<a·href="#t:referrals/0">referrals</a>()},
1456 ····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1456 ····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1457 ······</div>1457 ······</div>
  
1458 <p>Modify·an·entry.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nf">modify</span><span·class="p"·data-group-id="9708083288-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cn=Bill·Valentine,·ou=people,·o=Example·Org,·dc=example,·dc=com&quot;</span><span·class="p">,</span><span·class="w">1458 <p>Modify·an·entry.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nf">modify</span><span·class="p"·data-group-id="6363856650-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cn=Bill·Valentine,·ou=people,·o=Example·Org,·dc=example,·dc=com&quot;</span><span·class="p">,</span><span·class="w">
1459 ·········</span><span·class="p"·data-group-id="9708083288-2">[</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_replace</span><span·class="p"·data-group-id="9708083288-3">(</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9708083288-4">[</span><span·class="s">&quot;555·555·00&quot;</span><span·class="p"·data-group-id="9708083288-4">]</span><span·class="p"·data-group-id="9708083288-3">)</span><span·class="p">,</span><span·class="w"> 
1460 »       ··</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_add</span><span·class="p"·data-group-id="9708083288-5">(</span><span·class="s">&quot;description&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·332,·SHA:·95a7425c4f0357f8f32ea31c89544d8a04fb7a67def08339384f4919e797ebe8·...·]>1459 ·········</span><span·class="p"·data-group-id="6363856650-2">[</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_replace</span><span·class="p"·data-group-id="6363856650-3">(</span><span·class="s">&quot;telephoneNumber&quot;</s[·...·truncated·by·diffoscope;·len:·295,·SHA:·885d63e1cfb8713d4df4791bf72d0ecf145c45211c4cb82039746af5f8eeb29c·...·]>
 1460 »       ··</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_add</span><span·class="p"·data-group-id="6363856650-5">(</span><span·class="s">&quot;description&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6363856650-6">[</span><span·class="s">&quot;LDAP·Hacker&quot;</span><span·class="p"·data-group-id="6363856650-6">]</span><span·class="p"·data-group-id="6363856650-5">)</span><span·class="w">·</span><span·class="p"·data-group-id="6363856650-2">]</span><span·class="p"·data-group-id="6363856650-1">)</span></code></pre>
1461 ··</section>1461 ··</section>
1462 </section>1462 </section>
1463 <section·class="detail"·id="modify_dn/5">1463 <section·class="detail"·id="modify_dn/5">
  
1464 ··<div·class="detail-header">1464 ··<div·class="detail-header">
1465 ····<a·href="#modify_dn/5"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1465 ····<a·href="#modify_dn/5"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1466 ······<i·class="ri-link-m"·aria-hidden="true"></i>1466 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1757, 16 lines modifiedOffset 1757, 16 lines modified
  
1757 ··········<pre·translate="no"><span·class="attribute">-spec</span>·paged_result_control(PageSize)·->·{control,·ControlOID,·true,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}1757 ··········<pre·translate="no"><span·class="attribute">-spec</span>·paged_result_control(PageSize)·->·{control,·ControlOID,·true,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}
1758 ······························when·PageSize·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>().</pre>1758 ······························when·PageSize·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>().</pre>
  
1759 ······</div>1759 ······</div>
  
1760 <p>Paged·results·is·an·extension·to·the·LDAP·protocol·specified·by·RFC2696</p><p>This·function·creates·a·control·with·the·specified·page·size·for·use·in1760 <p>Paged·results·is·an·extension·to·the·LDAP·protocol·specified·by·RFC2696</p><p>This·function·creates·a·control·with·the·specified·page·size·for·use·in
1761 <code·class="inline">search/3</code>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Control</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">paged_result_control</span><span·class="p"·data-group-id="5921622711-1">(</span><span·class="mi">50</span><span·class="p"·data-group-id="5921622711-1">)</span><span·class="p">,</span><span·class="w">1761 <code·class="inline">search/3</code>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Control</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">paged_result_control</span><span·class="p"·data-group-id="2099149549-1">(</span><span·class="mi">50</span><span·class="p"·data-group-id="2099149549-1">)</span><span·class="p">,</span><span·class="w">
1762 </span><span·class="p"·data-group-id="5921622711-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SearchResults</span><span·class="p"·data-group-id="5921622711-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·727,·SHA:·2c9b595b2f8cfcdfd7f89877b5495967daaacadabf070e39a767971a858577ac·...·]-3">)</span><span·class="p">,</span></code></pre>1762 </span><span·class="p"·data-group-id="2099149549-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SearchResults</span><span·class="p"·data-group-id="2099149549-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·727,·SHA:·1fa000702886f5b024c8e7d1b30b03bb85ea5394307c0422cff33c5273ef76f1·...·]-3">)</span><span·class="p">,</span></code></pre>
1763 ··</section>1763 ··</section>
1764 </section>1764 </section>
1765 <section·class="detail"·id="paged_result_control/2">1765 <section·class="detail"·id="paged_result_control/2">
  
1766 ··<div·class="detail-header">1766 ··<div·class="detail-header">
1767 ····<a·href="#paged_result_control/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1767 ····<a·href="#paged_result_control/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1768 ······<i·class="ri-link-m"·aria-hidden="true"></i>1768 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1789, 20 lines modifiedOffset 1789, 20 lines modified
1789 ··········<pre·translate="no"><span·class="attribute">-spec</span>·paged_result_control(PageSize,·Cookie)·->·{control,·ControlOID,·true,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}1789 ··········<pre·translate="no"><span·class="attribute">-spec</span>·paged_result_control(PageSize,·Cookie)·->·{control,·ControlOID,·true,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}
1790 ······························when·PageSize·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·Cookie·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>().</pre>1790 ······························when·PageSize·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·Cookie·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>().</pre>
  
1791 ······</div>1791 ······</div>
  
1792 <p>Paged·results·is·an·extension·to·the·LDAP·protocol·specified·by·RFC2696</p><p>This·function·creates·a·control·with·the·specified·page·size·and·cookie·for·use1792 <p>Paged·results·is·an·extension·to·the·LDAP·protocol·specified·by·RFC2696</p><p>This·function·creates·a·control·with·the·specified·page·size·and·cookie·for·use
1793 in·<code·class="inline">search/3</code>·to·retrieve·the·next·results·page.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">PageSize</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">50</span><span·class="p">,</span><span·class="w">1793 in·<code·class="inline">search/3</code>·to·retrieve·the·next·results·page.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">PageSize</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">50</span><span·class="p">,</span><span·class="w">
1794 </span><span·class="n">Control1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">paged_result_control</span><span·class="p"·data-group-id="0708373893-1">(</span><span·class="n">PageSize</span><span·class="p"·data-group-id="0708373893-1">)</span><span·class="p">,</span><span·class="w">1794 </span><span·class="n">Control1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">paged_result_control</span><span·class="p"·data-group-id="8077643786-1">(</span><span·class="n">PageSize</span><span·class="p"·data-group-id="8077643786-1">)</span><span·class="p">,</span><span·class="w">
1795 </span><span·class="p"·data-group-id="0708373893-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SearchResults1</span><span·class="p"·data-group-id="0708373893-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·729,·SHA:·22d72533ca530d30bafa2b89f1c4d1b6ff1c5cbf6de3b1c438ed490d9b4d8c11·...·]-3">)</span><span·class="p">,</span><span·class="w">1795 </span><span·class="p"·data-group-id="8077643786-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SearchResults1</span><span·class="p"·data-group-id="8077643786-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·729,·SHA:·89d800e33fbb66fd4bd3e60351776dcbc9e09f2d48774e69d32898f31c5c9572·...·]-3">)</span><span·class="p">,</span><span·class="w">
1796 </span><span·class="c1">%%·retrieve·the·returned·cookie·from·the·search·results</span><span·class="w">1796 </span><span·class="c1">%%·retrieve·the·returned·cookie·from·the·search·results</span><span·class="w">
1797 </span><span·class="p"·data-group-id="0708373893-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cookie1</span><span·class="p"·data-group-id="0708373893-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·4d2c85343d7386656eebb966a9383b2cbd167a4acbfe61f89b7dcda8c4b3f019·...·]-8">)</span><span·class="p">,</span><span·class="w">1797 </span><span·class="p"·data-group-id="8077643786-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cookie1</span><span·class="p"·data-group-id="8077643786-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·3b6d7bdc701c945f53a09291ae1d74668b38d5683aea0da5c919c8d6d64809d4·...·]-8">)</span><span·class="p">,</span><span·class="w">
1798 </span><span·class="n">Control2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">paged_result_control</span><span·class="p"·data-group-id="0708373893-9">(</span><span·class="n">PageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cookie1</span><span·class="p"·data-group-id="0708373893-9">)</span><span·class="p">,</span><span·class="w">1798 </span><span·class="n">Control2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">paged_result_control</span><span·class="p"·data-group-id="8077643786-9">(</span><span·class="n">PageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cookie1</span><span·class="p"·data-group-id="8077643786-9">)</span><span·class="p">,</span><span·class="w">
1799 </span><span·class="p"·data-group-id="0708373893-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SearchResults2</span><span·class="p"·data-group-id="0708373893-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·790,·SHA:·471bdbf047eaeee598a2d43954e3bc399ba550fcbd475417ddecef93d6b2ca40·...·]-11">)</span><span·class="p">,</span><span·class="w">1799 </span><span·class="p"·data-group-id="8077643786-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SearchResults2</span><span·class="p"·data-group-id="8077643786-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·790,·SHA:·93f8f98da9caafd374cd9252f642360348027271c1853b468a3bc23234d43f25·...·]-11">)</span><span·class="p">,</span><span·class="w">
1800 </span><span·class="c1">%%·etc</span></code></pre>1800 </span><span·class="c1">%%·etc</span></code></pre>
1801 ··</section>1801 ··</section>
1802 </section>1802 </section>
1803 <section·class="detail"·id="paged_result_cookie/1">1803 <section·class="detail"·id="paged_result_cookie/1">
  
1804 ··<div·class="detail-header">1804 ··<div·class="detail-header">
1805 ····<a·href="#paged_result_cookie/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1805 ····<a·href="#paged_result_cookie/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1908, 16 lines modifiedOffset 1908, 16 lines modified
1908 ····················Refs·::·{referral,·<a·href="#t:referrals/0">referrals</a>()},1908 ····················Refs·::·{referral,·<a·href="#t:referrals/0">referrals</a>()},
1909 ····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1909 ····················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1910 ······</div>1910 ······</div>
  
1911 <p>Search·the·directory·with·the·supplied·the·SearchOptions.</p><p>The·base·and·filter1911 <p>Search·the·directory·with·the·supplied·the·SearchOptions.</p><p>The·base·and·filter
1912 options·must·be·supplied.·Default·values:·scope·is·<a·href="#wholeSubtree/0"><code·class="inline">wholeSubtree/0</code></a>,·deref·is1912 options·must·be·supplied.·Default·values:·scope·is·<a·href="#wholeSubtree/0"><code·class="inline">wholeSubtree/0</code></a>,·deref·is
1913 <a·href="#derefAlways/0"><code·class="inline">derefAlways/0</code></a>,·types_only·is·<code·class="inline">false</code>·and·timeout·is·<code·class="inline">0</code>·(meaning·infinity).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="n">Filter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">substrings</span><span·class="p"·data-group-id="1246225106-1">(</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1246225106-2">[</span><span·class="p"·data-group-id="1246225106-3">{</span><span·class="ss">any</span><span·class="p">[·...·truncated·by·diffoscope;·len:·191,·SHA:·b90a58c7ff7c9a8da33722778a5182ea69285aee98126c5c4810fe59ed1a3e5b·...·]-1">)</span><span·class="p">,</span><span·class="w">1913 <a·href="#derefAlways/0"><code·class="inline">derefAlways/0</code></a>,·types_only·is·<code·class="inline">false</code>·and·timeout·is·<code·class="inline">0</code>·(meaning·infinity).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="n">Filter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">substrings</span><span·class="p"·data-group-id="2922880149-1">(</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2922880149-2">[</span><span·class="p"·data-group-id="2922880149-3">{</span><span·class="ss">any</span><span·class="p">[·...·truncated·by·diffoscope;·len:·191,·SHA:·7f86baf69b717b1ee357bbe125a4c31e690d673e97a87b5e3963a3c53d1487a6·...·]-1">)</span><span·class="p">,</span><span·class="w">
1914 ··</span><span·class="nf">search</span><span·class="p"·data-group-id="1246225106-4">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1246225106-5">[</span><span·class="p"·data-group-id="1246225106-6">{</span><span·class="ss">base</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·865,·SHA:·bee699025306d635eafd565d9a46aaec25376e369333d41882b67304870729ce·...·]-4">)</span><span·class="p">,</span></code></pre><p>The·<code·class="inline">timeout</code>·option·in·the·<code·class="inline">SearchOptions</code>·is·for·the·ldap·server,·while·the1914 ··</span><span·class="nf">search</span><span·class="p"·data-group-id="2922880149-4">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2922880149-5">[</span><span·class="p"·data-group-id="2922880149-6">{</span><span·class="ss">base</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·865,·SHA:·bc9a2954aec76575d6b61d922e81a91e37788f55c9335aaa62a62aa419dd46e9·...·]-4">)</span><span·class="p">,</span></code></pre><p>The·<code·class="inline">timeout</code>·option·in·the·<code·class="inline">SearchOptions</code>·is·for·the·ldap·server,·while·the
1915 timeout·in·<a·href="#open/2">eldap:open/2</a>·is·used·for·each·individual·request·in·the1915 timeout·in·<a·href="#open/2">eldap:open/2</a>·is·used·for·each·individual·request·in·the
1916 search·operation.</p>1916 search·operation.</p>
1917 ··</section>1917 ··</section>
1918 </section>1918 </section>
1919 <section·class="detail"·id="simple_bind/3">1919 <section·class="detail"·id="simple_bind/3">
  
1920 ··<div·class="detail-header">1920 ··<div·class="detail-header">
4.75 KB
./usr/share/doc/erlang-doc/html/lib/erl_interface-5.5.2/doc/html/erl_call_cmd.html
    
Offset 247, 16 lines modifiedOffset 247, 16 lines modified
247 ·{&lt;madonna@chivas.du.etx.ericsson.se,17,0&gt;,247 ·{&lt;madonna@chivas.du.etx.ericsson.se,17,0&gt;,
248 ··················{registered_name,code_server}},248 ··················{registered_name,code_server}},
249 ·{&lt;madonna@chivas.du.etx.ericsson.se,20,0&gt;,249 ·{&lt;madonna@chivas.du.etx.ericsson.se,20,0&gt;,
250 ··················{registered_name,user}},250 ··················{registered_name,user}},
251 ·{&lt;madonna@chivas.du.etx.ericsson.se,38,0&gt;,251 ·{&lt;madonna@chivas.du.etx.ericsson.se,38,0&gt;,
252 ··················[]}]</code></pre><p>To·forward·standard·output·without·printing·the·result·term·(<em>again,·the·input252 ··················[]}]</code></pre><p>To·forward·standard·output·without·printing·the·result·term·(<em>again,·the·input
253 ends·with·EOF·(Control-D)</em>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">erl_call</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">s</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">e</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">sname</span><span·class="w">·</span><span·class="ss">madonna</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">fetch_stdout</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">no_result_term</span><span·class="w">253 ends·with·EOF·(Control-D)</em>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">erl_call</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">s</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">e</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">sname</span><span·class="w">·</span><span·class="ss">madonna</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">fetch_stdout</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">no_result_term</span><span·class="w">
254 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6484166749-1">(</span><span·class="s">&quot;Number·of·schedulers:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6484166749-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·ce7b90da57672725c5edfd05c2b640f44623184093c0e54c32c427d6a47ebd4a·...·]-1">)</span><span·class="p">,</span><span·class="w">254 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1624856246-1">(</span><span·class="s">&quot;Number·of·schedulers:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1624856246-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·216f7c4e04fee1ffd8cf9fc2032135df4e5d5546877fdeebb73fb8bfccee36e5·...·]-1">)</span><span·class="p">,</span><span·class="w">
255 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6484166749-4">(</span><span·class="s">&quot;Number·of·logical·cores:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6484166749-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·9939d098dc7892908f726c5d6bd2b1ba67890b2e6c82d9335b7b533b9196e910·...·]-4">)</span><span·class="p">.</span><span·class="w">255 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1624856246-4">(</span><span·class="s">&quot;Number·of·logical·cores:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1624856246-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·58f7bc913cc53fa12d6d8c2c3970a0f4ee66a1109e9d073e5a4edfd083abb0b5·...·]-4">)</span><span·class="p">.</span><span·class="w">
256 </span><span·class="err">^</span><span·class="n">D</span><span·class="w">256 </span><span·class="err">^</span><span·class="n">D</span><span·class="w">
257 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="nc">schedulers</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span><span·class="w">257 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="nc">schedulers</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span><span·class="w">
258 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">logical</span><span·class="w">·</span><span·class="nc">cores</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span></code></pre>258 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">logical</span><span·class="w">·</span><span·class="nc">cores</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span></code></pre>
259 </div>259 </div>
  
260 <div·class="bottom-actions"·id="bottom-actions">260 <div·class="bottom-actions"·id="bottom-actions">
261 ··<div·class="bottom-actions-item">261 ··<div·class="bottom-actions-item">
91.3 KB
./usr/share/doc/erlang-doc/html/lib/erl_interface-5.5.2/doc/html/erl_interface.epub
2.53 KB
zipinfo {}
    
Offset 1, 17 lines modifiedOffset 1, 17 lines modified
1 Zip·file·size:·84947·bytes,·number·of·entries:·151 Zip·file·size:·84949·bytes,·number·of·entries:·15
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:49·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:11·mimetype
3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Feb-13·10:49·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Feb-13·09:11·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···105507·bx·defN·25-Feb-13·10:49·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···105507·bx·defN·25-Feb-13·09:11·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1261·bx·defN·25-Feb-13·10:49·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1261·bx·defN·25-Feb-13·09:11·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····16997·bx·defN·25-Feb-13·10:49·OEBPS/erl_call_cmd.xhtml6 ?rw-r--r--··6.1·unx····16997·bx·defN·25-Feb-13·09:11·OEBPS/erl_call_cmd.xhtml
7 ?rw-r--r--··6.1·unx····21296·bx·defN·25-Feb-13·10:49·OEBPS/ei_users_guide.xhtml7 ?rw-r--r--··6.1·unx····21296·bx·defN·25-Feb-13·09:11·OEBPS/ei_users_guide.xhtml
8 ?rw-r--r--··6.1·unx·····6279·bx·defN·25-Feb-13·10:49·OEBPS/ei_global.xhtml8 ?rw-r--r--··6.1·unx·····6279·bx·defN·25-Feb-13·09:11·OEBPS/ei_global.xhtml
9 ?rw-r--r--··6.1·unx····67143·bx·defN·25-Feb-13·10:49·OEBPS/ei_connect.xhtml9 ?rw-r--r--··6.1·unx····67143·bx·defN·25-Feb-13·09:11·OEBPS/ei_connect.xhtml
10 ?rw-r--r--··6.1·unx····68130·bx·defN·25-Feb-13·10:49·OEBPS/ei.xhtml10 ?rw-r--r--··6.1·unx····68130·bx·defN·25-Feb-13·09:11·OEBPS/ei.xhtml
11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:49·OEBPS/dist/epub-erlang-ESPT6BQV.css11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:11·OEBPS/dist/epub-erlang-ESPT6BQV.css
12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:49·OEBPS/dist/epub-LSJCIYTM.js12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:11·OEBPS/dist/epub-LSJCIYTM.js
13 ?rw-r--r--··6.1·unx·····1948·bx·defN·25-Feb-13·10:49·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····1948·bx·defN·25-Feb-13·09:11·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:49·OEBPS/assets/logo.png14 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:11·OEBPS/assets/logo.png
15 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:49·META-INF/container.xml15 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:11·META-INF/container.xml
16 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:49·META-INF/com.apple.ibooks.display-options.xml16 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:11·META-INF/com.apple.ibooks.display-options.xml
17 15·files,·310623·bytes·uncompressed,·82343·bytes·compressed:··73.5%17 15·files,·310623·bytes·uncompressed,·82345·bytes·compressed:··73.5%
82.5 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:49:14,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:11:30,·uncompressed·size·20,·method=store
4.57 KB
OEBPS/erl_call_cmd.xhtml
    
Offset 152, 15 lines modifiedOffset 152, 15 lines modified
152 ·{&lt;madonna@chivas.du.etx.ericsson.se,17,0&gt;,152 ·{&lt;madonna@chivas.du.etx.ericsson.se,17,0&gt;,
153 ··················{registered_name,code_server}},153 ··················{registered_name,code_server}},
154 ·{&lt;madonna@chivas.du.etx.ericsson.se,20,0&gt;,154 ·{&lt;madonna@chivas.du.etx.ericsson.se,20,0&gt;,
155 ··················{registered_name,user}},155 ··················{registered_name,user}},
156 ·{&lt;madonna@chivas.du.etx.ericsson.se,38,0&gt;,156 ·{&lt;madonna@chivas.du.etx.ericsson.se,38,0&gt;,
157 ··················[]}]</code></pre><p>To·forward·standard·output·without·printing·the·result·term·(<em>again,·the·input157 ··················[]}]</code></pre><p>To·forward·standard·output·without·printing·the·result·term·(<em>again,·the·input
158 ends·with·EOF·(Control-D)</em>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">erl_call</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">s</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">e</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">sname</span><span·class="w">·</span><span·class="ss">madonna</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">fetch_stdout</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">no_result_term</span><span·class="w">158 ends·with·EOF·(Control-D)</em>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">erl_call</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">s</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">e</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">sname</span><span·class="w">·</span><span·class="ss">madonna</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">fetch_stdout</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">no_result_term</span><span·class="w">
159 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9140796083-1">(</span><span·class="s">&quot;Number·of·schedulers:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9140796083-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·ae1fbf92c80f697b33c25f28d800bc4c42c912f99302e1379a200c180ae7735d·...·]-1">)</span><span·class="p">,</span><span·class="w">159 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4665558835-1">(</span><span·class="s">&quot;Number·of·schedulers:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4665558835-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·430d1f365f369373f48c3d6a5b0465eb405c0f534a9299440a9cc9cd97121c46·...·]-1">)</span><span·class="p">,</span><span·class="w">
160 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9140796083-4">(</span><span·class="s">&quot;Number·of·logical·cores:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9140796083-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·6fda4720eea8fd2e26b2de9c7f1ab4073220298b5ac78622fbe3d488624430a7·...·]-4">)</span><span·class="p">.</span><span·class="w">160 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4665558835-4">(</span><span·class="s">&quot;Number·of·logical·cores:·</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4665558835-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·18f74e98573b94205a091eac937b9d9d745caf7cbbd60b9a22b0fa27254eeda1·...·]-4">)</span><span·class="p">.</span><span·class="w">
161 </span><span·class="err">^</span><span·class="n">D</span><span·class="w">161 </span><span·class="err">^</span><span·class="n">D</span><span·class="w">
162 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="nc">schedulers</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span><span·class="w">162 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="nc">schedulers</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span><span·class="w">
163 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">logical</span><span·class="w">·</span><span·class="nc">cores</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span></code></pre>163 </span><span·class="n">Number</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">logical</span><span·class="w">·</span><span·class="nc">cores</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">8</span></code></pre>
  
164 ··</body>164 ··</body>
165 </html>165 </html>
1.25 KB
OEBPS/content.opf
1.22 KB
OEBPS/content.opf
Max HTML report size reached
451 KB
./usr/share/doc/erlang-doc/html/lib/et-1.7.1/doc/html/et.epub
4.92 KB
zipinfo {}
    
Offset 1, 31 lines modifiedOffset 1, 31 lines modified
1 Zip·file·size:·302547·bytes,·number·of·entries:·291 Zip·file·size:·302545·bytes,·number·of·entries:·29
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:32·mimetype
3 ?rw-r--r--··6.1·unx······708·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······708·bx·defN·25-Feb-13·09:32·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····20297·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····20297·bx·defN·25-Feb-13·09:32·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1427·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1427·bx·defN·25-Feb-13·09:32·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····15128·bx·defN·25-Feb-13·10:52·OEBPS/et_viewer.xhtml6 ?rw-r--r--··6.1·unx····15128·bx·defN·25-Feb-13·09:32·OEBPS/et_viewer.xhtml
7 ?rw-r--r--··6.1·unx····39785·bx·defN·25-Feb-13·10:52·OEBPS/et_tutorial.xhtml7 ?rw-r--r--··6.1·unx····39785·bx·defN·25-Feb-13·09:32·OEBPS/et_tutorial.xhtml
8 ?rw-r--r--··6.1·unx····14495·bx·defN·25-Feb-13·10:52·OEBPS/et_selector.xhtml8 ?rw-r--r--··6.1·unx····14495·bx·defN·25-Feb-13·09:32·OEBPS/et_selector.xhtml
9 ?rw-r--r--··6.1·unx·····3893·bx·defN·25-Feb-13·10:52·OEBPS/et_intro.xhtml9 ?rw-r--r--··6.1·unx·····3893·bx·defN·25-Feb-13·09:32·OEBPS/et_intro.xhtml
10 ?rw-r--r--··6.1·unx····94737·bx·defN·25-Feb-13·10:52·OEBPS/et_examples.xhtml10 ?rw-r--r--··6.1·unx····94737·bx·defN·25-Feb-13·09:32·OEBPS/et_examples.xhtml
11 ?rw-r--r--··6.1·unx····46399·bx·defN·25-Feb-13·10:52·OEBPS/et_desc.xhtml11 ?rw-r--r--··6.1·unx····46399·bx·defN·25-Feb-13·09:32·OEBPS/et_desc.xhtml
12 ?rw-r--r--··6.1·unx····51100·bx·defN·25-Feb-13·10:52·OEBPS/et_collector.xhtml12 ?rw-r--r--··6.1·unx····51100·bx·defN·25-Feb-13·09:32·OEBPS/et_collector.xhtml
13 ?rw-r--r--··6.1·unx····16970·bx·defN·25-Feb-13·10:52·OEBPS/et.xhtml13 ?rw-r--r--··6.1·unx····16970·bx·defN·25-Feb-13·09:32·OEBPS/et.xhtml
14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:32·OEBPS/dist/epub-erlang-ESPT6BQV.css
15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:32·OEBPS/dist/epub-LSJCIYTM.js
16 ?rw-r--r--··6.1·unx·····3489·bx·defN·25-Feb-13·10:52·OEBPS/content.opf16 ?rw-r--r--··6.1·unx·····3489·bx·defN·25-Feb-13·09:32·OEBPS/content.opf
17 ?rw-r--r--··6.1·unx····13425·bx·defN·25-Feb-13·10:52·OEBPS/assets/sim_trans_write_lock.png17 ?rw-r--r--··6.1·unx····13425·bx·defN·25-Feb-13·09:32·OEBPS/assets/sim_trans_write_lock.png
18 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Feb-13·10:52·OEBPS/assets/sim_trans_move_actor.png18 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Feb-13·09:32·OEBPS/assets/sim_trans_move_actor.png
19 ?rw-r--r--··6.1·unx····18936·bx·defN·25-Feb-13·10:52·OEBPS/assets/sim_trans_mgr_actors.png19 ?rw-r--r--··6.1·unx····18936·bx·defN·25-Feb-13·09:32·OEBPS/assets/sim_trans_mgr_actors.png
20 ?rw-r--r--··6.1·unx····15235·bx·defN·25-Feb-13·10:52·OEBPS/assets/sim_trans_contents_viewer_mgr_actors.png20 ?rw-r--r--··6.1·unx····15235·bx·defN·25-Feb-13·09:32·OEBPS/assets/sim_trans_contents_viewer_mgr_actors.png
21 ?rw-r--r--··6.1·unx····13361·bx·defN·25-Feb-13·10:52·OEBPS/assets/sim_trans_contents_viewer_collector.png21 ?rw-r--r--··6.1·unx····13361·bx·defN·25-Feb-13·09:32·OEBPS/assets/sim_trans_contents_viewer_collector.png
22 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Feb-13·10:52·OEBPS/assets/sim_trans.png22 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Feb-13·09:32·OEBPS/assets/sim_trans.png
23 ?rw-r--r--··6.1·unx····46696·bx·defN·25-Feb-13·10:52·OEBPS/assets/megaco_tracer.png23 ?rw-r--r--··6.1·unx····46696·bx·defN·25-Feb-13·09:32·OEBPS/assets/megaco_tracer.png
24 ?rw-r--r--··6.1·unx····19067·bx·defN·25-Feb-13·10:52·OEBPS/assets/megaco_filter.png24 ?rw-r--r--··6.1·unx····19067·bx·defN·25-Feb-13·09:32·OEBPS/assets/megaco_filter.png
25 ?rw-r--r--··6.1·unx····37915·bx·defN·25-Feb-13·10:52·OEBPS/assets/megaco_collector.png25 ?rw-r--r--··6.1·unx····37915·bx·defN·25-Feb-13·09:32·OEBPS/assets/megaco_collector.png
26 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png26 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:32·OEBPS/assets/logo.png
27 ?rw-r--r--··6.1·unx····19999·bx·defN·25-Feb-13·10:52·OEBPS/assets/live_trans.png27 ?rw-r--r--··6.1·unx····19999·bx·defN·25-Feb-13·09:32·OEBPS/assets/live_trans.png
28 ?rw-r--r--··6.1·unx····23692·bx·defN·25-Feb-13·10:52·OEBPS/assets/coffee_order.png28 ?rw-r--r--··6.1·unx····23692·bx·defN·25-Feb-13·09:32·OEBPS/assets/coffee_order.png
29 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml29 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:32·META-INF/container.xml
30 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml30 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:32·META-INF/com.apple.ibooks.display-options.xml
31 29·files,·576138·bytes·uncompressed,·297249·bytes·compressed:··48.4%31 29·files,·576138·bytes·uncompressed,·297247·bytes·compressed:··48.4%
168 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:30,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:32:06,·uncompressed·size·20,·method=store
57.7 KB
OEBPS/et_tutorial.xhtml
Max HTML report size reached
172 KB
OEBPS/et_examples.xhtml
Max HTML report size reached
44.0 KB
OEBPS/et_desc.xhtml
Max HTML report size reached
3.92 KB
OEBPS/content.opf
3.89 KB
OEBPS/content.opf
Max HTML report size reached
44.1 KB
./usr/share/doc/erlang-doc/html/lib/et-1.7.1/doc/html/et_desc.html
    
Offset 134, 41 lines modifiedOffset 134, 41 lines modified
134 <p>The·two·major·components·of·the·<code·class="inline">Event·Tracer·(ET)</code>·tool·is·a·graphical·sequence134 <p>The·two·major·components·of·the·<code·class="inline">Event·Tracer·(ET)</code>·tool·is·a·graphical·sequence
135 chart·viewer·(<code·class="inline">et_viewer</code>)·and·its·backing·storage·(<code·class="inline">et_collector</code>).·One135 chart·viewer·(<code·class="inline">et_viewer</code>)·and·its·backing·storage·(<code·class="inline">et_collector</code>).·One
136 <code·class="inline">Collector</code>·may·be·used·as·backing·storage·for·several·simultaneous·<code·class="inline">Viewers</code>136 <code·class="inline">Collector</code>·may·be·used·as·backing·storage·for·several·simultaneous·<code·class="inline">Viewers</code>
137 where·each·one·may·display·a·different·view·of·the·same·trace·data.</p><p>The·interface·between·the·<code·class="inline">Collector</code>·and·its·<code·class="inline">Viewers</code>·is·public·in·order·to137 where·each·one·may·display·a·different·view·of·the·same·trace·data.</p><p>The·interface·between·the·<code·class="inline">Collector</code>·and·its·<code·class="inline">Viewers</code>·is·public·in·order·to
138 enable·other·types·of·<code·class="inline">Viewers</code>.·However·in·the·following·text·we·will·focus·on138 enable·other·types·of·<code·class="inline">Viewers</code>.·However·in·the·following·text·we·will·focus·on
139 usage·of·the·<code·class="inline">et_viewer</code>.</p><p>The·main·start·function·is·<a·href="et_viewer.html#start/1"><code·class="inline">et_viewer:start/1</code></a>.·By·default·it·will·start·both·an139 usage·of·the·<code·class="inline">et_viewer</code>.</p><p>The·main·start·function·is·<a·href="et_viewer.html#start/1"><code·class="inline">et_viewer:start/1</code></a>.·By·default·it·will·start·both·an
140 <code·class="inline">et_collector</code>·and·an·<code·class="inline">et_viewer</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-pa·et/examples</span><span·class="w">140 <code·class="inline">et_collector</code>·and·an·<code·class="inline">et_viewer</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-pa·et/examples</span><span·class="w">
141 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R13B03</span><span·class="w">·</span><span·class="p"·data-group-id="4675764908-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.7</span><span·class="p">.</span><span·class="mi">4</span><span·class="p"·data-group-id="4675764908-1">)</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1129,·SHA:·9f97aaa3a0281150d3046f04cfd716d5d298f0b13e39046c5a62d04a3693392a·...·]-6">]</span><span·class="w">141 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R13B03</span><span·class="w">·</span><span·class="p"·data-group-id="4965645144-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.7</span><span·class="p">.</span><span·class="mi">4</span><span·class="p"·data-group-id="4965645144-1">)</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1129,·SHA:·be0dfde14fa22bdd021569ace6b44dbd2e8d378191f88c1a54796ec4909dbbdf·...·]-6">]</span><span·class="w">
  
142 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">7.4</span><span·class="w">··</span><span·class="p"·data-group-id="4675764908-7">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4675764908-7">)</span><span·class="gp·unselectable">142 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">7.4</span><span·class="w">··</span><span·class="p"·data-group-id="4965645144-7">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4965645144-7">)</span><span·class="gp·unselectable">
143 1&gt;·</span><span·class="p"·data-group-id="4675764908-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="4675764908-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·281,·SHA:·4127db6b545581063bfe8edc1f61e8094c66f65c0b3fc0b7a79e738c4419e6f0·...·]-9">)</span><span·class="p">.</span><span·class="w">143 1&gt;·</span><span·class="p"·data-group-id="4965645144-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="4965645144-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·281,·SHA:·2d3400641c6ef2d3285154c6b65e5c61e8e416f955d3853c3bf573e32dff9b53·...·]-9">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p"·data-group-id="4675764908-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4675764908-11">}</span></code></pre><p>A·<code·class="inline">Viewer</code>·gets·trace·<code·class="inline">Events</code>·from·its·<code·class="inline">Collector</code>·by·polling·it·regularly·for144 </span><span·class="p"·data-group-id="4965645144-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4965645144-11">}</span></code></pre><p>A·<code·class="inline">Viewer</code>·gets·trace·<code·class="inline">Events</code>·from·its·<code·class="inline">Collector</code>·by·polling·it·regularly·for
145 more·<code·class="inline">Events</code>·to·display.·<code·class="inline">Events</code>·are·for·example·reported·to·the·<code·class="inline">Collector</code>145 more·<code·class="inline">Events</code>·to·display.·<code·class="inline">Events</code>·are·for·example·reported·to·the·<code·class="inline">Collector</code>
146 with·<a·href="et_collector.html#report_event/6"><code·class="inline">et_collector:report_event/6</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Collector</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="0358141344-1">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="0358141344-1">)</span><span·class="p">.</span><span·class="w">146 with·<a·href="et_collector.html#report_event/6"><code·class="inline">et_collector:report_event/6</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Collector</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="8192454298-1">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="8192454298-1">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="o">&lt;</span><span·class="mf">0.39</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">147 </span><span·class="o">&lt;</span><span·class="mf">0.39</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
148 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-2">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_outer</span><span·class="p">,</span><span·class="gp·unselectable">148 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-2">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_outer</span><span·class="p">,</span><span·class="gp·unselectable">
149 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Start·outer·transaction&quot;</span><span·class="p"·data-group-id="0358141344-2">)</span><span·class="p">,</span><span·class="gp·unselectable">149 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Start·outer·transaction&quot;</span><span·class="p"·data-group-id="8192454298-2">)</span><span·class="p">,</span><span·class="gp·unselectable">
150 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new_tid</span><span·class="p">,</span><span·class="gp·unselectable">150 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new_tid</span><span·class="p">,</span><span·class="gp·unselectable">
151 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;New·transaction·id·is·4711&quot;</span><span·class="p"·data-group-id="0358141344-3">)</span><span·class="p">,</span><span·class="gp·unselectable">151 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;New·transaction·id·is·4711&quot;</span><span·class="p"·data-group-id="8192454298-3">)</span><span·class="p">,</span><span·class="gp·unselectable">
152 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-4">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">try_write_lock</span><span·class="p">,</span><span·class="gp·unselectable">152 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-4">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">try_write_lock</span><span·class="p">,</span><span·class="gp·unselectable">
153 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Acquire·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="0358141344-4">)</span><span·class="p">,</span><span·class="gp·unselectable">153 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Acquire·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="8192454298-4">)</span><span·class="p">,</span><span·class="gp·unselectable">
154 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-5">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">granted</span><span·class="p">,</span><span·class="gp·unselectable">154 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-5">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">granted</span><span·class="p">,</span><span·class="gp·unselectable">
155 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;You·got·the·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="0358141344-5">)</span><span·class="p">,</span><span·class="gp·unselectable">155 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;You·got·the·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="8192454298-5">)</span><span·class="p">,</span><span·class="gp·unselectable">
156 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-6">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">do_commit</span><span·class="p">,</span><span·class="gp·unselectable">156 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-6">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">do_commit</span><span·class="p">,</span><span·class="gp·unselectable">
157 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Perform··transaction·commit&quot;</span><span·class="p"·data-group-id="0358141344-6">)</span><span·class="p">,</span><span·class="gp·unselectable">157 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Perform··transaction·commit&quot;</span><span·class="p"·data-group-id="8192454298-6">)</span><span·class="p">,</span><span·class="gp·unselectable">
158 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-7">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">release_tid</span><span·class="p">,</span><span·class="gp·unselectable">158 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-7">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">release_tid</span><span·class="p">,</span><span·class="gp·unselectable">
159 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Release·all·locks·for·transaction·4711&quot;</span><span·class="p"·data-group-id="0358141344-7">)</span><span·class="p">,</span><span·class="gp·unselectable">159 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Release·all·locks·for·transaction·4711&quot;</span><span·class="p"·data-group-id="8192454298-7">)</span><span·class="p">,</span><span·class="gp·unselectable">
160 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-8">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete_transaction</span><span·class="p">,</span><span·class="gp·unselectable">160 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-8">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete_transaction</span><span·class="p">,</span><span·class="gp·unselectable">
161 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;End·of·outer·transaction&quot;</span><span·class="p"·data-group-id="0358141344-8">)</span><span·class="p">,</span><span·class="gp·unselectable">161 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;End·of·outer·transaction&quot;</span><span·class="p"·data-group-id="8192454298-8">)</span><span·class="p">,</span><span·class="gp·unselectable">
162 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0358141344-9">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_outer</span><span·class="p">,</span><span·class="gp·unselectable">162 3&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="8192454298-9">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_outer</span><span·class="p">,</span><span·class="gp·unselectable">
163 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Transaction·returned·{atomic,·ok}&quot;</span><span·class="p"·data-group-id="0358141344-9">)</span><span·class="p">.</span><span·class="w">163 3&gt;·</span><span·class="w">··························</span><span·class="s">&quot;Transaction·returned·{atomic,·ok}&quot;</span><span·class="p"·data-group-id="8192454298-9">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="0358141344-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0358141344-11">{</span><span·class="ss">table_handle</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.39</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="mi">16402</span><span·class="p">,</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="w">164 </span><span·class="p"·data-group-id="8192454298-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8192454298-11">{</span><span·class="ss">table_handle</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.39</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="mi">16402</span><span·class="p">,</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="w">
165 ·····</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">et_collector</span><span·class="p">.</span><span·class="mf">0.62831470</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0358141344-11">}</span><span·class="p"·data-group-id="0358141344-10">}</span></code></pre><p>This·actually·is·a·simulation·of·the·process·<code·class="inline">Events</code>·caused·by·a·<code·class="inline">Mnesia</code>165 ·····</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">et_collector</span><span·class="p">.</span><span·class="mf">0.62831470</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8192454298-11">}</span><span·class="p"·data-group-id="8192454298-10">}</span></code></pre><p>This·actually·is·a·simulation·of·the·process·<code·class="inline">Events</code>·caused·by·a·<code·class="inline">Mnesia</code>
166 transaction·that·writes·a·record·in·a·local·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="7953438096-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7953438096-2">(</span><span·class="p"·data-group-id="7953438096-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</[·...·truncated·by·diffoscope;·len:·541,·SHA:·bfaf86c82df20b1fb528486deeb8fe3af7b66d339719a6a8d621e8749e031a65·...·]-1">)</span><span·class="p">.</span></code></pre><p>At·this·stage·when·we·have·a·couple·of·<code·class="inline">Events</code>,·it·is·time·to·show·how·it·looks166 transaction·that·writes·a·record·in·a·local·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="5286186144-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5286186144-2">(</span><span·class="p"·data-group-id="5286186144-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</[·...·truncated·by·diffoscope;·len:·541,·SHA:·52c5942f337cc54b6167f376d0e033b91506d0573680780aabf6e2795363d0e8·...·]-1">)</span><span·class="p">.</span></code></pre><p>At·this·stage·when·we·have·a·couple·of·<code·class="inline">Events</code>,·it·is·time·to·show·how·it·looks
167 like·in·the·graphical·interface·of·<code·class="inline">et_viewer</code>:</p><p><img·src="assets/sim_trans.png"·alt="A·simulated·Mnesia·transaction·which·writes·one·record"·title="A·simulated·Mnesia·transaction·which·writes·one·record"/></p><p>In·the·sequence·chart,·the·actors·(which·symbolically·has·performed·the·<code·class="inline">Event</code>)167 like·in·the·graphical·interface·of·<code·class="inline">et_viewer</code>:</p><p><img·src="assets/sim_trans.png"·alt="A·simulated·Mnesia·transaction·which·writes·one·record"·title="A·simulated·Mnesia·transaction·which·writes·one·record"/></p><p>In·the·sequence·chart,·the·actors·(which·symbolically·has·performed·the·<code·class="inline">Event</code>)
168 are·shown·as·named·vertical·bars.·The·order·of·the·actors·may·be·altered·by168 are·shown·as·named·vertical·bars.·The·order·of·the·actors·may·be·altered·by
169 dragging·(hold·mouse·button·1·pressed·during·the·operation)·the·name·tag·of·an169 dragging·(hold·mouse·button·1·pressed·during·the·operation)·the·name·tag·of·an
170 actor·and·drop·it·elsewhere:</p><p><img·src="assets/sim_trans_move_actor.png"·alt="Two·actors·has·switched·places"·title="Two·actors·has·switched·places"/></p><p>An·<code·class="inline">Event</code>·may·be·an·action·performed·by·one·single·actor·(blue·text·label)·or170 actor·and·drop·it·elsewhere:</p><p><img·src="assets/sim_trans_move_actor.png"·alt="Two·actors·has·switched·places"·title="Two·actors·has·switched·places"/></p><p>An·<code·class="inline">Event</code>·may·be·an·action·performed·by·one·single·actor·(blue·text·label)·or
171 it·may·involve·two·actors·and·is·then·depicted·as·an·arrow·directed·from·one171 it·may·involve·two·actors·and·is·then·depicted·as·an·arrow·directed·from·one
172 actor·to·another·(red·text·label).·Details·of·an·<code·class="inline">Event</code>·can·be·shown·by172 actor·to·another·(red·text·label).·Details·of·an·<code·class="inline">Event</code>·can·be·shown·by
173 clicking·(press·and·release·the·mouse·button·1)·on·the·event·label·text·or·on173 clicking·(press·and·release·the·mouse·button·1)·on·the·event·label·text·or·on
Offset 177, 19 lines modifiedOffset 177, 19 lines modified
177 ··<a·href="#filters-and-dictionary"·class="hover-link">177 ··<a·href="#filters-and-dictionary"·class="hover-link">
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Filters·and·dictionary</span>180 ··<span·class="text">Filters·and·dictionary</span>
181 </h2>181 </h2>
182 <p>The·<code·class="inline">Event·Tracer·(ET)</code>·uses·named·filters·in·various·contexts.·An·Event·Trace182 <p>The·<code·class="inline">Event·Tracer·(ET)</code>·uses·named·filters·in·various·contexts.·An·Event·Trace
183 filter·is·an·<code·class="inline">Erlang·fun</code>·that·takes·some·trace·data·as·input·and·returns·a183 filter·is·an·<code·class="inline">Erlang·fun</code>·that·takes·some·trace·data·as·input·and·returns·a
184 possibly·modified·version·of·it:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">filter</span><span·class="p"·data-group-id="3298575341-1">(</span><span·class="n">TraceData</span><span·class="p"·data-group-id="3298575341-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">|</s[·...·truncated·by·diffoscope;·len:·329,·SHA:·6f8dedffff291465157c4a6d15f9f3527bb52395ae3f8e2b311db36f9312f161·...·]-2">}</span><span·class="w">184 possibly·modified·version·of·it:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">filter</span><span·class="p"·data-group-id="0184999824-1">(</span><span·class="n">TraceData</span><span·class="p"·data-group-id="0184999824-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">|</s[·...·truncated·by·diffoscope;·len:·329,·SHA:·3c1449435d04634f2a6d92ac71518d86b709ea0870db9cbefb39c7c23d694897·...·]-2">}</span><span·class="w">
  
185 </span><span·class="n">TraceData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Event</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">erlang_trace_data</span><span·class="p"·data-group-id="3298575341-3">(</span><span·class="p"·data-group-id="3298575341-3">)</span><span·class="w">185 </span><span·class="n">TraceData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Event</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">erlang_trace_data</span><span·class="p"·data-group-id="0184999824-3">(</span><span·class="p"·data-group-id="0184999824-3">)</span><span·class="w">
186 </span><span·class="n">Event</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="3298575341-4">{</span><span·class="p"·data-group-id="3298575341-4">}</span><span·class="w">186 </span><span·class="n">Event</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="0184999824-4">{</span><span·class="p"·data-group-id="0184999824-4">}</span><span·class="w">
187 </span><span·class="n">NewEvent</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="3298575341-5">{</span><span·class="p"·data-group-id="3298575341-5">}</span></code></pre><p>The·interface·of·the·filter·function·is·the·same·as·the·the·filter·functions·for187 </span><span·class="n">NewEvent</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="0184999824-5">{</span><span·class="p"·data-group-id="0184999824-5">}</span></code></pre><p>The·interface·of·the·filter·function·is·the·same·as·the·the·filter·functions·for
188 the·good·old·<a·href="../../../../lib/stdlib-6.2/doc/html/lists.html#filtermap/2"><code·class="inline">lists:filtermap/2</code></a>.·If·the·filter·returns·<code·class="inline">false</code>·it·means·that188 the·good·old·<a·href="../../../../lib/stdlib-6.2/doc/html/lists.html#filtermap/2"><code·class="inline">lists:filtermap/2</code></a>.·If·the·filter·returns·<code·class="inline">false</code>·it·means·that
189 the·trace·data·should·silently·be·dropped.·<code·class="inline">true</code>·means·that·the·trace·data·data189 the·trace·data·should·silently·be·dropped.·<code·class="inline">true</code>·means·that·the·trace·data·data
190 already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as·it·is.·<code·class="inline">true</code>·means190 already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as·it·is.·<code·class="inline">true</code>·means
191 that·the·<code·class="inline">TraceData</code>·already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as191 that·the·<code·class="inline">TraceData</code>·already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as
192 it·is.·<code·class="inline">{true,·NewEvent}</code>·means·that·the·original·trace·data·should·be·replaced192 it·is.·<code·class="inline">{true,·NewEvent}</code>·means·that·the·original·trace·data·should·be·replaced
193 with·<code·class="inline">Event</code>.·This·provides·means·to·get·rid·of·unwanted·<code·class="inline">Events</code>·as·well·as193 with·<code·class="inline">Event</code>.·This·provides·means·to·get·rid·of·unwanted·<code·class="inline">Events</code>·as·well·as
194 enabling·alternate·views·of·an·<code·class="inline">Event</code>.</p><p>The·first·filter·that·the·trace·data·is·exposed·for·is·the·<code·class="inline">Collector·Filter</code>.194 enabling·alternate·views·of·an·<code·class="inline">Event</code>.</p><p>The·first·filter·that·the·trace·data·is·exposed·for·is·the·<code·class="inline">Collector·Filter</code>.
Offset 208, 29 lines modifiedOffset 208, 29 lines modified
208 When·a·<code·class="inline">Viewer</code>·is·started·it·is·registered·as·a·subscriber·of·dictionary208 When·a·<code·class="inline">Viewer</code>·is·started·it·is·registered·as·a·subscriber·of·dictionary
209 updates.</p><p>In·each·<code·class="inline">Viewer</code>·there·is·only·one·filter·that·is·active·and·all·trace·<code·class="inline">Events</code>209 updates.</p><p>In·each·<code·class="inline">Viewer</code>·there·is·only·one·filter·that·is·active·and·all·trace·<code·class="inline">Events</code>
210 that·the·<code·class="inline">Viewer</code>·gets·from·the·<code·class="inline">Collector</code>·will·pass·thru·that·filter.·By210 that·the·<code·class="inline">Viewer</code>·gets·from·the·<code·class="inline">Collector</code>·will·pass·thru·that·filter.·By
211 writing·clever·filters·it·is·possible·to·customize·how·the·<code·class="inline">Events</code>·looks·like211 writing·clever·filters·it·is·possible·to·customize·how·the·<code·class="inline">Events</code>·looks·like
212 in·the·viewer.·The·following·filter·in·<code·class="inline">et/examples/et_demo.erl</code>·replaces·the212 in·the·viewer.·The·following·filter·in·<code·class="inline">et/examples/et_demo.erl</code>·replaces·the
213 actor·names·<code·class="inline">mnesia_tm</code>·and·<code·class="inline">mnesia_locker</code>·and·leaves·everything·else·in·the213 actor·names·<code·class="inline">mnesia_tm</code>·and·<code·class="inline">mnesia_locker</code>·and·leaves·everything·else·in·the
214 record·as·it·was:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">214 record·as·it·was:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
215 </span><span·class="nf">mgr_actors</span><span·class="p"·data-group-id="6849838150-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="6849838150-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="6849838150-2">(</s[·...·truncated·by·diffoscope;·len:·145,·SHA:·e750b463792954cd622250e906e6440a3037996bd377cfe4031cba007237cc02·...·]0-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 </span><span·class="nf">mgr_actors</span><span·class="p"·data-group-id="2161880390-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="2161880390-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="2161880390-2">(</s[·...·truncated·by·diffoscope;·len:·145,·SHA:·f0eff4d83cc9eb47807c8b94be1d344276c852f3d32baace579db93a9743ff2b·...·]0-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
216 ····</span><span·class="n">Actor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6849838150-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="6849838150-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 ····</span><span·class="n">Actor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2161880390-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="2161880390-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
217 ···············</span><span·class="k">case</span><span·class="w">·</span><span·class="n">A</span><span·class="w">·</span><span·class="k">of</span><span·class="w">217 ···············</span><span·class="k">case</span><span·class="w">·</span><span·class="n">A</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
218 ···················</span><span·class="ss">mnesia_tm</span><span·class="w">·····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">trans_mgr</span><span·class="p">;</span><span·class="w">218 ···················</span><span·class="ss">mnesia_tm</span><span·class="w">·····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">trans_mgr</span><span·class="p">;</span><span·class="w">
219 ···················</span><span·class="ss">mnesia_locker</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">lock_mgr</span><span·class="p">;</span><span·class="w">219 ···················</span><span·class="ss">mnesia_locker</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">lock_mgr</span><span·class="p">;</span><span·class="w">
220 ···················</span><span·class="p">_</span><span·class="w">·············</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">A</span><span·class="w">220 ···················</span><span·class="p">_</span><span·class="w">·············</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">A</span><span·class="w">
221 ···············</span><span·class="k">end</span><span·class="w">221 ···············</span><span·class="k">end</span><span·class="w">
222 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">222 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="6849838150-4">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="6849838150-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·322,·SHA:·bba42299d83dce908e4a9eca4339ccc001a48ea10444cff6ac4bb1e94db95918·...·]0-6">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="2161880390-4">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="2161880390-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·322,·SHA:·5da94e62a93fa04f834dabde66da9027820b7df3989f5d964e1aee4c99df22d9·...·]0-6">)</span><span·class="p">,</span><span·class="w">
224 ···················</span><span·class="ss">to</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Actor</span><span·class="p"·data-group-id="6849838150-7">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-group-id="6849838150-7">)</span><span·class="p">,</span><span·class="w">224 ···················</span><span·class="ss">to</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Actor</span><span·class="p"·data-group-id="2161880390-7">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-group-id="2161880390-7">)</span><span·class="p">,</span><span·class="w">
225 ···················</span><span·class="ss">contents</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6849838150-8">[</span><span·class="p"·data-group-id="6849838150-9">{</span><span·class="ss">orig_from</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·c2dd0497307ecc3b9b6fdf970edfc3e5d17cef9c7ad84b26b07fc17719a44750·...·]0-9">}</span><span·class="p">,</span><span·class="w">225 ···················</span><span·class="ss">contents</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2161880390-8">[</span><span·class="p"·data-group-id="2161880390-9">{</span><span·class="ss">orig_from</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·ad2ac9dfa215e9befd87427509d52d56bebb638dcd5b9a75549ba83f2949c5dc·...·]0-9">}</span><span·class="p">,</span><span·class="w">
226 ·······························</span><span·class="p"·data-group-id="6849838150-10">{</span><span·class="ss">orig_to</span><span·class="p">,</span><span·class="w">···</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·15,·SHA:·dcf2d13c84aecbe0a2d69631e837afa7ce741b019558fb7068c8fb553402c936·...·]0-10">}</span><span·class="p">,</span><span·class="w">226 ·······························</span><span·class="p"·data-group-id="2161880390-10">{</span><span·class="ss">orig_to</span><span·class="p">,</span><span·class="w">···</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·15,·SHA:·3fcf87db9bf814fadfe0a776ba08b059e866df97d4514b1688f3004266342de9·...·]0-10">}</span><span·class="p">,</span><span·class="w">
227 ·······························</span><span·class="p"·data-group-id="6849838150-11">{</span><span·class="ss">orig_contents</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">contents</span><span·class="p"[·...·truncated·by·diffoscope;·len:·949,·SHA:·e600152d590db994ec8d02e25c3ca22a83ede8738bc1970f14c3a784b139c552·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">227 ·······························</span><span·class="p"·data-group-id="2161880390-11">{</span><span·class="ss">orig_contents</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">contents</span><span·class="p"[·...·truncated·by·diffoscope;·len:·949,·SHA:·b37d1e552c89a3ed34d2e228bbe861bea4dc5e75d9c1f30a7d19d699f8173ec0·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
228 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">6.13229925</span><span·class="o">&gt;</span><span·class="gp·unselectable">228 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="p">.</span><span·class="mf">6.13229925</span><span·class="o">&gt;</span><span·class="gp·unselectable">
229 5&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">dict_insert</span><span·class="p"·data-group-id="6210914821-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6210914821-4">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mgr_ac[·...·truncated·by·diffoscope;·len:·179,·SHA:·71d1f88ce07d7099adca8109d1744bcdf75daf33b40bd15a5c9bc809e0dc35b7·...·]-3">)</span><span·class="p">.</span><span·class="w">229 5&gt;·</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">dict_insert</span><span·class="p"·data-group-id="1094894879-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1094894879-4">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mgr_ac[·...·truncated·by·diffoscope;·len:·179,·SHA:·dba711d9f4c8653d4220b6fd841edefb3d7130aca198f0fe22a630caba0ad2f2·...·]-3">)</span><span·class="p">.</span><span·class="w">
230 </span><span·class="ss">ok</span></code></pre><p>you·will·see·that·the·<code·class="inline">Filter</code>·menu·in·all·viewers·have·got·a·new·entry·called230 </span><span·class="ss">ok</span></code></pre><p>you·will·see·that·the·<code·class="inline">Filter</code>·menu·in·all·viewers·have·got·a·new·entry·called
231 <code·class="inline">mgr_actors</code>.·Select·it,·and·a·new·<code·class="inline">Viewer</code>·window·will·pop·up:</p><p><img·src="assets/sim_trans_mgr_actors.png"·alt="The·same·trace·data·in·a·different·view"·title="The·same·trace·data·in·a·different·view"/></p><p>In·order·to·see·the·nitty·gritty·details·of·an·<code·class="inline">Event</code>·you·may·click·on·the231 <code·class="inline">mgr_actors</code>.·Select·it,·and·a·new·<code·class="inline">Viewer</code>·window·will·pop·up:</p><p><img·src="assets/sim_trans_mgr_actors.png"·alt="The·same·trace·data·in·a·different·view"·title="The·same·trace·data·in·a·different·view"/></p><p>In·order·to·see·the·nitty·gritty·details·of·an·<code·class="inline">Event</code>·you·may·click·on·the
232 <code·class="inline">Event</code>·in·order·to·start·a·<code·class="inline">Contents·Viewer</code>·for·that·<code·class="inline">Event</code>.·In·the232 <code·class="inline">Event</code>·in·order·to·start·a·<code·class="inline">Contents·Viewer</code>·for·that·<code·class="inline">Event</code>.·In·the
233 <code·class="inline">Contents·Viewer</code>·there·also·is·a·filter·menu·that·enables·inspection·of·the233 <code·class="inline">Contents·Viewer</code>·there·also·is·a·filter·menu·that·enables·inspection·of·the
234 <code·class="inline">Event</code>·from·other·views·than·the·one·selected·in·the·viewer.·A·click·on·the234 <code·class="inline">Event</code>·from·other·views·than·the·one·selected·in·the·viewer.·A·click·on·the
235 <code·class="inline">new_tid</code>·<code·class="inline">Event</code>·will·cause·a·<code·class="inline">Contents·Viewer</code>·window·to·pop·up,·showing·the235 <code·class="inline">new_tid</code>·<code·class="inline">Event</code>·will·cause·a·<code·class="inline">Contents·Viewer</code>·window·to·pop·up,·showing·the
236 <code·class="inline">Event</code>·in·the·<code·class="inline">mgr_actors</code>·view:</p><p><img·src="assets/sim_trans_contents_viewer_mgr_actors.png"·alt="The·trace·Event·in·the·mgr_actors·view"·title="The·trace·Event·in·the·mgr_actors·view"/></p><p>Select·the·<code·class="inline">all</code>·entry·in·the·<code·class="inline">Filters</code>·menu·and·a·new·<code·class="inline">Contents·Viewer·window</code>236 <code·class="inline">Event</code>·in·the·<code·class="inline">mgr_actors</code>·view:</p><p><img·src="assets/sim_trans_contents_viewer_mgr_actors.png"·alt="The·trace·Event·in·the·mgr_actors·view"·title="The·trace·Event·in·the·mgr_actors·view"/></p><p>Select·the·<code·class="inline">all</code>·entry·in·the·<code·class="inline">Filters</code>·menu·and·a·new·<code·class="inline">Contents·Viewer·window</code>
172 KB
./usr/share/doc/erlang-doc/html/lib/et-1.7.1/doc/html/et_examples.html
    
Offset 129, 178 lines modifiedOffset 129, 178 lines modified
129 ··<a·href="#a-simulated-mnesia-transaction"·class="hover-link">129 ··<a·href="#a-simulated-mnesia-transaction"·class="hover-link">
130 ····<i·class="ri-link-m"·aria-hidden="true"></i>130 ····<i·class="ri-link-m"·aria-hidden="true"></i>
131 ··</a>131 ··</a>
132 ··<span·class="text">A·simulated·Mnesia·transaction</span>132 ··<span·class="text">A·simulated·Mnesia·transaction</span>
133 </h2>133 </h2>
134 <p>The·Erlang·code·for·running·the·simulated·<code·class="inline">Mnesia</code>·transaction·example·in·the134 <p>The·Erlang·code·for·running·the·simulated·<code·class="inline">Mnesia</code>·transaction·example·in·the
135 previous·chapter·is·included·in·the·<code·class="inline">et/examples/et_demo.erl</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">135 previous·chapter·is·included·in·the·<code·class="inline">et/examples/et_demo.erl</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
136 </span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="0513056894-1">(</span><span·class="p"·data-group-id="0513056894-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">136 </span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="4156849868-1">(</span><span·class="p"·data-group-id="4156849868-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="0513056894-2">(</span><span·class="p"·data-group-id="0513056894-3">[</span><span·class="p"·data-group-id="0513056894-3">]</span><span·class="p"·data-group-id="0513056894-2">)</span><span·class="p">.</span><span·class="w">137 ····</span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="4156849868-2">(</span><span·class="p"·data-group-id="4156849868-3">[</span><span·class="p"·data-group-id="4156849868-3">]</span><span·class="p"·data-group-id="4156849868-2">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="0513056894-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="0513056894-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 </span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="4156849868-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="4156849868-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="n">Options</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0513056894-5">[</span><span·class="p"·data-group-id="0513056894-6">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0513056894-7">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mgr_actors</span><span·class="p"·data-group-id="0513056894-7">}</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">mgr_actors</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0513056894-6">}</span><span·class="p"·data-group-id="0513056894-5">]</span><span·class="p">,</span><span·class="w"> 
140 ····</span><span·class="p"·data-group-id="0513056894-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="0513056894-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class=[·...·truncated·by·diffoscope;·len:·340,·SHA:·26341eac1e5fc93bf65676ac0d570630764f4c4f27d8d31746b5d013c11441bb·...·]</span><span·class="p">,</span><span·class="w">139 ····</span><span·class="n">Options</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4156849868-5">[</span><span·class="p"·data-group-id="4156849868-6">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·520,·SHA:·1a82fba5c5e4d3feba567202ae0ff01789dc826547f89d87ae95b636beb4863d·...·]</span><span·class="p">,</span><span·class="w">
 140 ····</span><span·class="p"·data-group-id="4156849868-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="4156849868-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4156849868-9">(</span><span·class="n">Options</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="4156849868-9">)</span><span·class="p">,</span><span·class="w">
141 ····</span><span·class="n">Collector</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="0513056894-10">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="0513056894-10">)</span><span·class="p">,</span><span·class="w">141 ····</span><span·class="n">Collector</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="4156849868-10">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="4156849868-10">)</span><span·class="p">,</span><span·class="w">
142 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-11">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_outer</span><span·class="p">,</span><span·class="w">142 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-11">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_outer</span><span·class="p">,</span><span·class="w">
143 ······························</span><span·class="s">&quot;Start·outer·transaction&quot;</span><span·class="p"·data-group-id="0513056894-11">)</span><span·class="p">,</span><span·class="w">143 ······························</span><span·class="s">&quot;Start·outer·transaction&quot;</span><span·class="p"·data-group-id="4156849868-11">)</span><span·class="p">,</span><span·class="w">
144 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-12">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new_tid</span><span·class="p">,</span><span·class="w">144 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-12">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new_tid</span><span·class="p">,</span><span·class="w">
145 ······························</span><span·class="s">&quot;New·transaction·id·is·4711&quot;</span><span·class="p"·data-group-id="0513056894-12">)</span><span·class="p">,</span><span·class="w">145 ······························</span><span·class="s">&quot;New·transaction·id·is·4711&quot;</span><span·class="p"·data-group-id="4156849868-12">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-13">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">try_write_lock</span><span·class="p">,</span><span·class="w">146 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-13">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">try_write_lock</span><span·class="p">,</span><span·class="w">
147 ······························</span><span·class="s">&quot;Acquire·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="0513056894-13">)</span><span·class="p">,</span><span·class="w">147 ······························</span><span·class="s">&quot;Acquire·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="4156849868-13">)</span><span·class="p">,</span><span·class="w">
148 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-14">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">granted</span><span·class="p">,</span><span·class="w">148 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-14">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">granted</span><span·class="p">,</span><span·class="w">
149 ······························</span><span·class="s">&quot;You·got·the·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="0513056894-14">)</span><span·class="p">,</span><span·class="w">149 ······························</span><span·class="s">&quot;You·got·the·write·lock·for·{my_tab,·key}&quot;</span><span·class="p"·data-group-id="4156849868-14">)</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-15">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">do_commit</span><span·class="p">,</span><span·class="w">150 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-15">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">do_commit</span><span·class="p">,</span><span·class="w">
151 ······························</span><span·class="s">&quot;Perform··transaction·commit&quot;</span><span·class="p"·data-group-id="0513056894-15">)</span><span·class="p">,</span><span·class="w">151 ······························</span><span·class="s">&quot;Perform··transaction·commit&quot;</span><span·class="p"·data-group-id="4156849868-15">)</span><span·class="p">,</span><span·class="w">
152 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-16">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">release_tid</span><span·class="p">,</span><span·class="w">152 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-16">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">40</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_locker</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">release_tid</span><span·class="p">,</span><span·class="w">
153 ······························</span><span·class="s">&quot;Release·all·locks·for·transaction·4711&quot;</span><span·class="p"·data-group-id="0513056894-16">)</span><span·class="p">,</span><span·class="w">153 ······························</span><span·class="s">&quot;Release·all·locks·for·transaction·4711&quot;</span><span·class="p"·data-group-id="4156849868-16">)</span><span·class="p">,</span><span·class="w">
154 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-17">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete_transaction</span><span·class="p">,</span><span·class="w">154 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-17">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">60</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_tm</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete_transaction</span><span·class="p">,</span><span·class="w">
155 ······························</span><span·class="s">&quot;End·of·outer·transaction&quot;</span><span·class="p"·data-group-id="0513056894-17">)</span><span·class="p">,</span><span·class="w">155 ······························</span><span·class="s">&quot;End·of·outer·transaction&quot;</span><span·class="p"·data-group-id="4156849868-17">)</span><span·class="p">,</span><span·class="w">
156 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0513056894-18">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_outer</span><span·class="p">,</span><span·class="w">156 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4156849868-18">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_shell</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">end_outer</span><span·class="p">,</span><span·class="w">
157 ······························</span><span·class="s">&quot;Transaction·returned·{atomic,·ok}&quot;</span><span·class="p"·data-group-id="0513056894-18">)</span><span·class="p">,</span><span·class="w">157 ······························</span><span·class="s">&quot;Transaction·returned·{atomic,·ok}&quot;</span><span·class="p"·data-group-id="4156849868-18">)</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="0513056894-19">{</span><span·class="ss">collector</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Collector</span><span·class="p"·data-group-id="0513056894-19">}</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">158 ····</span><span·class="p"·data-group-id="4156849868-19">{</span><span·class="ss">collector</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Collector</span><span·class="p"·data-group-id="4156849868-19">}</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
159 </span><span·class="nf">mgr_actors</span><span·class="p"·data-group-id="5031840192-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="5031840192-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="5031840192-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·c70ba2c90b6a2fc23d4f352bd662a9cbb47afbaf2e9b7d1be1d4891f60b2fdbf·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 </span><span·class="nf">mgr_actors</span><span·class="p"·data-group-id="2818494050-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="2818494050-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="2818494050-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·c6588011bd8f7801fe033206269c9a274eab461c22731d7a37fad141eba5e047·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</span><span·class="n">Actor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5031840192-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="5031840192-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">160 ····</span><span·class="n">Actor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2818494050-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="2818494050-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
161 ···············</span><span·class="k">case</span><span·class="w">·</span><span·class="n">A</span><span·class="w">·</span><span·class="k">of</span><span·class="w">161 ···············</span><span·class="k">case</span><span·class="w">·</span><span·class="n">A</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
162 ···················</span><span·class="ss">mnesia_tm</span><span·class="w">·····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">trans_mgr</span><span·class="p">;</span><span·class="w">162 ···················</span><span·class="ss">mnesia_tm</span><span·class="w">·····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">trans_mgr</span><span·class="p">;</span><span·class="w">
163 ···················</span><span·class="ss">mnesia_locker</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">lock_mgr</span><span·class="p">;</span><span·class="w">163 ···················</span><span·class="ss">mnesia_locker</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">lock_mgr</span><span·class="p">;</span><span·class="w">
164 ···················</span><span·class="p">_</span><span·class="w">·············</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">A</span><span·class="w">164 ···················</span><span·class="p">_</span><span·class="w">·············</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">A</span><span·class="w">
165 ···············</span><span·class="k">end</span><span·class="w">165 ···············</span><span·class="k">end</span><span·class="w">
166 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">166 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
167 ····</span><span·class="p"·data-group-id="5031840192-4">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="5031840192-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·b8b9378d33272ebe3f379165928370d2d060b1c4778741e4f63a1f41cc558923·...·]-6">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="p"·data-group-id="2818494050-4">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="2818494050-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·0fd87ae62d581dbdd1e53ff7e320cb5c9176b0b45ac1efa8ec8de88877ce76ab·...·]-6">)</span><span·class="p">,</span><span·class="w">
168 ···················</span><span·class="ss">to</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Actor</span><span·class="p"·data-group-id="5031840192-7">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-group-id="5031840192-7">)</span><span·class="p">,</span><span·class="w">168 ···················</span><span·class="ss">to</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Actor</span><span·class="p"·data-group-id="2818494050-7">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-group-id="2818494050-7">)</span><span·class="p">,</span><span·class="w">
169 ···················</span><span·class="ss">contents</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5031840192-8">[</span><span·class="p"·data-group-id="5031840192-9">{</span><span·class="ss">orig_from</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·70,·SHA:·a59bd9fe9105099da1c816a8a0fe7a3d8fe0271a07cc01ade69a07ddecb5190e·...·]-9">}</span><span·class="p">,</span><span·class="w">169 ···················</span><span·class="ss">contents</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2818494050-8">[</span><span·class="p"·data-group-id="2818494050-9">{</span><span·class="ss">orig_from</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·70,·SHA:·118b0b1412686cde054df6476f4e95c2d2675f17d631becabe44eef107589eea·...·]-9">}</span><span·class="p">,</span><span·class="w">
170 ·······························</span><span·class="p"·data-group-id="5031840192-10">{</span><span·class="ss">orig_to</span><span·class="p">,</span><span·class="w">···</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·7a29033f833f9b6040844be0600589ce72ef41ca06db2d51ac1d06fe26e9d474·...·]-10">}</span><span·class="p">,</span><span·class="w">170 ·······························</span><span·class="p"·data-group-id="2818494050-10">{</span><span·class="ss">orig_to</span><span·class="p">,</span><span·class="w">···</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">to</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·1083bb90476082e41ddc5ce2e4acd20f2b33d9fa9f730417b365cd4ee50972e1·...·]-10">}</span><span·class="p">,</span><span·class="w">
171 ·······························</span><span·class="p"·data-group-id="5031840192-11">{</span><span·class="ss">orig_contents</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">contents</span><span·class="p"[·...·truncated·by·diffoscope;·len:·186,·SHA:·8ffc74633ec941b0c0f7e897b6fd76b355e7a5707183f1cde654c4432b6a0be9·...·]-4">}</span><span·class="p">.</span></code></pre><p>If·you·invoke·the·<code·class="inline">et_demo:sim_trans()</code>·function,·a·<code·class="inline">Viewer</code>·window·will·pop·up171 ·······························</span><span·class="p"·data-group-id="2818494050-11">{</span><span·class="ss">orig_contents</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">contents</span><span·class="p"[·...·truncated·by·diffoscope;·len:·186,·SHA:·6c93d705e2543a4fb486bee83b7bb468a8043386311a32de69d93190b8081272·...·]-4">}</span><span·class="p">.</span></code></pre><p>If·you·invoke·the·<code·class="inline">et_demo:sim_trans()</code>·function,·a·<code·class="inline">Viewer</code>·window·will·pop·up
172 and·the·sequence·trace·will·be·almost·the·same·as·if·the·following·<code·class="inline">Mnesia</code>172 and·the·sequence·trace·will·be·almost·the·same·as·if·the·following·<code·class="inline">Mnesia</code>
173 transaction·would·have·been·run:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="6768500772-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6768500772-2">(</span><span·class="p"·data-group-id="6768500772-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</[·...·truncated·by·diffoscope;·len:·2205,·SHA:·1b2bd953bb6190f86e6598b1323c08bb7f23ea45f71b40da4aa4c6273a35a4b7·...·]-6">]</span><span·class="w">173 transaction·would·have·been·run:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="1497943887-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1497943887-2">(</span><span·class="p"·data-group-id="1497943887-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</[·...·truncated·by·diffoscope;·len:·2205,·SHA:·69857988f82eca3aa265bb75261753361782fef63a79bec18cc0062ef3fa75a7·...·]-6">]</span><span·class="w">
  
174 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">7.4</span><span·class="w">··</span><span·class="p"·data-group-id="9974765401-7">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="9974765401-7">)</span><span·class="gp·unselectable">174 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">7.4</span><span·class="w">··</span><span·class="p"·data-group-id="6231659230-7">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="6231659230-7">)</span><span·class="gp·unselectable">
175 1&gt;·</span><span·class="p"·data-group-id="9974765401-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="9974765401-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·fc4caff696858eb462c096c043737d79d379e749d62f3fd434ed7792cd2327ab·...·]-9">)</span><span·class="p">.</span><span·class="w">175 1&gt;·</span><span·class="p"·data-group-id="6231659230-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="6231659230-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·82012725bf340324fab47b192b03a148da800c15f558e20c3118fb497120ead3·...·]-9">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p"·data-group-id="9974765401-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">;</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·8105ef0d00c995389104396ca64ef0b5599e9388d138b54f19cf0cea51bf8171·...·]-11">}</span><span·class="gp·unselectable">176 </span><span·class="p"·data-group-id="6231659230-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.40</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">;</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·7760de7b0af5213d0d464596f379d6f1f0bebfb280e073f568ef12681b2ff459·...·]-11">}</span><span·class="gp·unselectable">
177 2&gt;·</span><span·class="nc">et_demo</span><span·class="p">:</span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="9974765401-12">(</span><span·class="p"·data-group-id="9974765401-12">)</span><span·class="p">.</span><span·class="w">177 2&gt;·</span><span·class="nc">et_demo</span><span·class="p">:</span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="6231659230-12">(</span><span·class="p"·data-group-id="6231659230-12">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="9974765401-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9974765401-14">{</span><span·class="ss">table_handle</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.45</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="mi">24596</span><span·class="p">,</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="w">178 </span><span·class="p"·data-group-id="6231659230-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6231659230-14">{</span><span·class="ss">table_handle</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.45</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="mi">24596</span><span·class="p">,</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="w">
179 ·····</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">et_collector</span><span·class="p">.</span><span·class="mf">0.62831470</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9974765401-14">}</span><span·class="p"·data-group-id="9974765401-13">}</span></code></pre><p><img·src="assets/sim_trans.png"·alt="A·simulated·Mnesia·transaction·which·writes·one·record"·title="A·simulated·Mnesia·transaction·which·writes·one·record"/></p><h2·id="some-convenient-functions-used-in-the-mnesia-transaction-example"·class="section-heading">179 ·····</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">et_collector</span><span·class="p">.</span><span·class="mf">0.62831470</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6231659230-14">}</span><span·class="p"·data-group-id="6231659230-13">}</span></code></pre><p><img·src="assets/sim_trans.png"·alt="A·simulated·Mnesia·transaction·which·writes·one·record"·title="A·simulated·Mnesia·transaction·which·writes·one·record"/></p><h2·id="some-convenient-functions-used-in-the-mnesia-transaction-example"·class="section-heading">
180 ··<a·href="#some-convenient-functions-used-in-the-mnesia-transaction-example"·class="hover-link">180 ··<a·href="#some-convenient-functions-used-in-the-mnesia-transaction-example"·class="hover-link">
181 ····<i·class="ri-link-m"·aria-hidden="true"></i>181 ····<i·class="ri-link-m"·aria-hidden="true"></i>
182 ··</a>182 ··</a>
183 ··<span·class="text">Some·convenient·functions·used·in·the·Mnesia·transaction·example</span>183 ··<span·class="text">Some·convenient·functions·used·in·the·Mnesia·transaction·example</span>
184 </h2>184 </h2>
185 <p>The·<code·class="inline">module_as_actor</code>·filter·converts·the·<code·class="inline">Event·Records</code>·so·the·module·names185 <p>The·<code·class="inline">module_as_actor</code>·filter·converts·the·<code·class="inline">Event·Records</code>·so·the·module·names
186 becomes·actors·and·the·invoked·functions·becomes·labels.·If·the·information186 becomes·actors·and·the·invoked·functions·becomes·labels.·If·the·information
187 about·who·the·caller·was·it·will·be·displayed·as·an·arrow·directed·from·the187 about·who·the·caller·was·it·will·be·displayed·as·an·arrow·directed·from·the
188 caller·to·the·callee.·The·<code·class="inline">[{message,·{caller}},·{return_trace}]</code>·options·to188 caller·to·the·callee.·The·<code·class="inline">[{message,·{caller}},·{return_trace}]</code>·options·to
189 <a·href="../../../../lib/runtime_tools-2.1.1/doc/html/dbg.html#tpl/2"><code·class="inline">dbg:tpl/2</code></a>·function·will·imply·the·necessary·information·in·the·Erlang·traces.189 <a·href="../../../../lib/runtime_tools-2.1.1/doc/html/dbg.html#tpl/2"><code·class="inline">dbg:tpl/2</code></a>·function·will·imply·the·necessary·information·in·the·Erlang·traces.
190 Here·follows·the·<code·class="inline">module_as_actor</code>·filter:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">190 Here·follows·the·<code·class="inline">module_as_actor</code>·filter:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
191 </span><span·class="nf">module_as_actor</span><span·class="p"·data-group-id="1638863238-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="1638863238-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="1638863238-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·d577243903656719cc11b2a78649b896d69372f6a9b358ce78952df68addd697·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 </span><span·class="nf">module_as_actor</span><span·class="p"·data-group-id="7185630071-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="7185630071-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="7185630071-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·804a7e5bd09859c99a1b96905fe3f2b9f12a2d4bdbb643f2e964d4ad86bbeb5d·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keysearch</span><span·class="p"·data-group-id="1638863238-3">(</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·cla[·...·truncated·by·diffoscope;·len:·88,·SHA:·81de15f7b346ea71ca02faeeaa8f83910dbc805c8dafd6fcf0c145ff44044703·...·]-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">192 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keysearch</span><span·class="p"·data-group-id="7185630071-3">(</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·cla[·...·truncated·by·diffoscope;·len:·88,·SHA:·b91ebe323a2364b6073bcbea08371fb463935504ef4c6aea7d68cdf3e3a21351·...·]-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="1638863238-4">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1638863238-5">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·363,·SHA:·51c576690de77a595ed037246a7104375df1ae8285b9a037b95631534bd1a1b8·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="7185630071-4">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7185630071-5">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·363,·SHA:·b1275557844778dcd64e1085083c0a101483285c069090f31c4fca89353fff3a·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keysearch</span><span·class="p"·data-group-id="1638863238-7">(</span><span·class="ss">pam_result</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><s[·...·truncated·by·diffoscope;·len:·95,·SHA:·43dfec9c4da37a2beb6a84f628fed2da65ac6b24a195c080bcf49d7ea673e7d3·...·]-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">194 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keysearch</span><span·class="p"·data-group-id="7185630071-7">(</span><span·class="ss">pam_result</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><s[·...·truncated·by·diffoscope;·len:·95,·SHA:·5bec7d199483a2daa767fbdf3b796138251efbf9927ec3c759a0a433e4d5faf9·...·]-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
195 ················</span><span·class="p"·data-group-id="1638863238-8">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1638863238-9">{</span><span·class="ss">pam_result</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·399,·SHA:·c39a5f0db61172d2e78b1db8fb9de5ee1e4f08d94f67e2ee739a2d31ed4aff93·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 ················</span><span·class="p"·data-group-id="7185630071-8">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7185630071-9">{</span><span·class="ss">pam_result</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·399,·SHA:·bbb6baddc661f2c1d1b18746b088aed6610539db3520fb295c7de2a082d6adb8·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····················</span><span·class="p"·data-group-id="1638863238-11">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="1638863238-12">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·537,·SHA:·19186f7c9080c1241ecfc00229da22044d51de925fad18bb81e08d2df63cab9e·...·]-11">}</span><span·class="p">;</span><span·class="w">196 ····················</span><span·class="p"·data-group-id="7185630071-11">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="7185630071-12">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·537,·SHA:·9ff2ea23ffc929c808d7543b9c13a65358699aff677e2b06843abbf41186e860·...·]-11">}</span><span·class="p">;</span><span·class="w">
197 ················</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">197 ················</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
198 ····················</span><span·class="p"·data-group-id="1638863238-13">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="1638863238-14">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·536,·SHA:·cc9500b99371f887ac8051d671708e2d24f75d76ced9bf8e9af7dc4c229c3c89·...·]-13">}</span><span·class="w">198 ····················</span><span·class="p"·data-group-id="7185630071-13">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p"·data-group-id="7185630071-14">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·536,·SHA:·e88766d8a08de78ee289801147e69063bb382a9ad89883b42f43fedd79e3e99a·...·]-13">}</span><span·class="w">
199 ············</span><span·class="k">end</span><span·class="p">;</span><span·class="w">199 ············</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
200 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ············</span><span·class="ss">false</span><span·class="w">201 ············</span><span·class="ss">false</span><span·class="w">
202 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">plain_process_info</code>·filter·does·not·alter·the·<code·class="inline">Event·Records</code>.·It·merely202 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">plain_process_info</code>·filter·does·not·alter·the·<code·class="inline">Event·Records</code>.·It·merely
203 ensures·that·the·event·not·related·to·processes·are·skipped:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">203 ensures·that·the·event·not·related·to·processes·are·skipped:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
204 </span><span·class="nf">plain_process_info</span><span·class="p"·data-group-id="2118809476-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="2118809476-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="2118809476-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·41da5d354a368227e66f87274e3ec48791b57f621ec39b9307249f07445ad2c4·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 </span><span·class="nf">plain_process_info</span><span·class="p"·data-group-id="9008264677-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="9008264677-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="9008264677-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·22538cefc6bd5a6cb94645481a4f07a8b8b685794936f402b013a0b3f9798bd4·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="k">of</span><span·class="w">205 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
206 ········</span><span·class="nb">send</span><span·class="w">··························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">206 ········</span><span·class="nb">send</span><span·class="w">··························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
207 ········</span><span·class="ss">send_to_non_existing_process</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">207 ········</span><span·class="ss">send_to_non_existing_process</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
208 ········</span><span·class="ss">&#39;receive&#39;</span><span·class="w">·····················</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">208 ········</span><span·class="ss">&#39;receive&#39;</span><span·class="w">·····················</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
209 ········</span><span·class="nb">spawn</span><span·class="w">·························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">209 ········</span><span·class="nb">spawn</span><span·class="w">·························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
210 ········</span><span·class="nb">exit</span><span·class="w">··························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">210 ········</span><span·class="nb">exit</span><span·class="w">··························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
211 ········</span><span·class="nb">link</span><span·class="w">··························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">211 ········</span><span·class="nb">link</span><span·class="w">··························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
212 ········</span><span·class="nb">unlink</span><span·class="w">························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">212 ········</span><span·class="nb">unlink</span><span·class="w">························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
213 ········</span><span·class="ss">getting_linked</span><span·class="w">················</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">213 ········</span><span·class="ss">getting_linked</span><span·class="w">················</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
214 ········</span><span·class="p"·data-group-id="2118809476-3">{</span><span·class="ss">seq_send</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Label</span><span·class="p"·data-group-id="2118809476-3">}</span><span·class="w">············</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">214 ········</span><span·class="p"·data-group-id="9008264677-3">{</span><span·class="ss">seq_send</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Label</span><span·class="p"·data-group-id="9008264677-3">}</span><span·class="w">············</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
215 ········</span><span·class="p"·data-group-id="2118809476-4">{</span><span·class="ss">seq_receive</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Label</span><span·class="p"·data-group-id="2118809476-4">}</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">215 ········</span><span·class="p"·data-group-id="9008264677-4">{</span><span·class="ss">seq_receive</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Label</span><span·class="p"·data-group-id="9008264677-4">}</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
216 ········</span><span·class="p"·data-group-id="2118809476-5">{</span><span·class="ss">seq_print</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Label</span><span·class="p"·data-group-id="2118809476-5">}</span><span·class="w">···········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">216 ········</span><span·class="p"·data-group-id="9008264677-5">{</span><span·class="ss">seq_print</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Label</span><span·class="p"·data-group-id="9008264677-5">}</span><span·class="w">···········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
217 ········</span><span·class="p"·data-group-id="2118809476-6">{</span><span·class="ss">drop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">N</span><span·class="p"·data-group-id="2118809476-6">}</span><span·class="w">····················</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">217 ········</span><span·class="p"·data-group-id="9008264677-6">{</span><span·class="ss">drop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">N</span><span·class="p"·data-group-id="9008264677-6">}</span><span·class="w">····················</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
218 ········</span><span·class="p">_</span><span·class="w">·····························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">218 ········</span><span·class="p">_</span><span·class="w">·····························</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">
219 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">plain_process_info_nolink</code>·filter·does·not·alter·the·<code·class="inline">Event·Records</code>.·It·do219 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">plain_process_info_nolink</code>·filter·does·not·alter·the·<code·class="inline">Event·Records</code>.·It·do
220 makes·use·of·the·<code·class="inline">plain_process_info</code>·,·but·do·also·ensure·that·the·process·info220 makes·use·of·the·<code·class="inline">plain_process_info</code>·,·but·do·also·ensure·that·the·process·info
221 related·to·linking·and·unlinking·is·skipped:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">221 related·to·linking·and·unlinking·is·skipped:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
222 </span><span·class="nf">plain_process_info_nolink</span><span·class="p"·data-group-id="3845083978-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="3845083978-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="3845083978-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·f756690bf9bc8914522caed527c92a8a3c931d27d634fcd20609058722c8550c·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 </span><span·class="nf">plain_process_info_nolink</span><span·class="p"·data-group-id="9256789921-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="9256789921-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_record</span><span·class="p"·data-group-id="9256789921-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·0f5be3e36f522db780e0a53a7a41e5f35382f6c42fbe38a5220517ed20d8ffcf·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="3845083978-3">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="o">/=</span><span·class="w">·</span><span·class="nb">link</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·cf96632f160128544d430de3fbbf558b7d76e922eb1c02bc66f66134c941d305·...·]-3">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">223 ····</span><span·class="p"·data-group-id="9256789921-3">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="o">/=</span><span·class="w">·</span><span·class="nb">link</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·206022181e5c5411a021bd1a40a76d6cbfd4b713547d3b063a5f3f9693947d73·...·]-3">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="3845083978-4">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="o">/=</span><span·class="w">·</span><span·class="nb">unlink</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·a4d3f37f00ba16eea19ad0f6eb6a36bd8e71fce45f537e97e9965d01bdaccda4·...·]-4">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">224 ····</span><span·class="p"·data-group-id="9256789921-4">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="o">/=</span><span·class="w">·</span><span·class="nb">unlink</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·62129061414cfe2f4a743ad4ba477721dd8a8cee2c5cd865b6e01c83126fcd67·...·]-4">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="3845083978-5">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="o">/=</span><span·class="w">·</span><span·class="ss">getting_linked[·...·truncated·by·diffoscope;·len:·48,·SHA:·ae3926b75972ea1a65e538782df3032d936f2feafd83171165bf55b7c6ce1648·...·]-5">)</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">225 ····</span><span·class="p"·data-group-id="9256789921-5">(</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">event</span><span·class="p">.</span><span·class="ss">label</span><span·class="w">·</span><span·class="o">/=</span><span·class="w">·</span><span·class="ss">getting_linked[·...·truncated·by·diffoscope;·len:·48,·SHA:·cb38f80fe4de45bf72bfe76d42307066cc787fb07f90c3e3228dbe8430177328·...·]-5">)</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">
226 ····</span><span·class="nf">plain_process_info</span><span·class="p"·data-group-id="3845083978-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="3845083978-6">)</span><span·class="p">.</span></code></pre><p>In·order·to·simplify·the·startup·of·an·<code·class="inline">et_viewer</code>·process·with·the·filters226 ····</span><span·class="nf">plain_process_info</span><span·class="p"·data-group-id="9256789921-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="9256789921-6">)</span><span·class="p">.</span></code></pre><p>In·order·to·simplify·the·startup·of·an·<code·class="inline">et_viewer</code>·process·with·the·filters
227 mentioned·above,·plus·some·others·(that·also·are·found·in227 mentioned·above,·plus·some·others·(that·also·are·found·in
228 <code·class="inline">et/examples/et_demo.erl</code>·src/et_collector.erl·the·<code·class="inline">et_demo:start/0,1</code>·functions228 <code·class="inline">et/examples/et_demo.erl</code>·src/et_collector.erl·the·<code·class="inline">et_demo:start/0,1</code>·functions
229 can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">229 can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
230 </span><span·class="nf">start</span><span·class="p"·data-group-id="2489489164-1">(</span><span·class="p"·data-group-id="2489489164-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">230 </span><span·class="nf">start</span><span·class="p"·data-group-id="9537151353-1">(</span><span·class="p"·data-group-id="9537151353-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
231 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="2489489164-2">(</span><span·class="p"·data-group-id="2489489164-3">[</span><span·class="p"·data-group-id="2489489164-3">]</span><span·class="p"·data-group-id="2489489164-2">)</span><span·class="p">.</span><span·class="w">231 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="9537151353-2">(</span><span·class="p"·data-group-id="9537151353-3">[</span><span·class="p"·data-group-id="9537151353-3">]</span><span·class="p"·data-group-id="9537151353-2">)</span><span·class="p">.</span><span·class="w">
  
232 </span><span·class="nf">start</span><span·class="p"·data-group-id="2489489164-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="2489489164-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">232 </span><span·class="nf">start</span><span·class="p"·data-group-id="9537151353-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="9537151353-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
233 ····</span><span·class="n">Options</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2489489164-5">[</span><span·class="p"·data-group-id="2489489164-6">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2489489164-6">}</span><span·class="p">,</span><span·class="w">233 ····</span><span·class="n">Options</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9537151353-5">[</span><span·class="p"·data-group-id="9537151353-6">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="9537151353-6">}</span><span·class="p">,</span><span·class="w">
234 ···············</span><span·class="p"·data-group-id="2489489164-7">{</span><span·class="ss">parent_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="2489489164-7">}</span><span·class="p">,</span><span·class="w">234 ···············</span><span·class="p"·data-group-id="9537151353-7">{</span><span·class="ss">parent_pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="9537151353-7">}</span><span·class="p">,</span><span·class="w">
235 ···············</span><span·class="p"·data-group-id="2489489164-8">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p"·data-group-id="2489489164-8">}</span><span·class="p">,</span><span·class="w">235 ···············</span><span·class="p"·data-group-id="9537151353-8">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p"·data-group-id="9537151353-8">}</span><span·class="p">,</span><span·class="w">
236 ···············</span><span·class="p"·data-group-id="2489489164-9">{</span><span·class="ss">max_events</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1000</span><span·class="p"·data-group-id="2489489164-9">}</span><span·class="p">,</span><span·class="w">236 ···············</span><span·class="p"·data-group-id="9537151353-9">{</span><span·class="ss">max_events</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1000</span><span·class="p"·data-group-id="9537151353-9">}</span><span·class="p">,</span><span·class="w">
237 ···············</span><span·class="p"·data-group-id="2489489164-10">{</span><span·class="ss">active_filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">module_as_actor</span><span·class="p"·data-group-id="2489489164-10">}</span><span·class="p"·data-group-id="2489489164-5">]</span><span·class="p">,</span><span·class="w">237 ···············</span><span·class="p"·data-group-id="9537151353-10">{</span><span·class="ss">active_filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">module_as_actor</span><span·class="p"·data-group-id="9537151353-10">}</span><span·class="p"·data-group-id="9537151353-5">]</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="2489489164-11">(</span><span·class="nf">filters</span><span·class="p"·data-group-id="2489489164-12">(</span><span·class="p"·data-group-id="2489489164-12">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Optio[·...·truncated·by·diffoscope;·len:·158,·SHA:·0d20885b3de6ef76f6b5b3f4a7fc3d69972e89b11340ebefe1d3b79e45ded09d·...·]-11">)</span><span·class="p">.</span></code></pre><p>A·simple·one-liner·starts·the·tool:</p><pre><code·class="text">··········erl·-pa·../examples·-s·et_demo</code></pre><p>The·filters·are·included·by·the·following·parameters:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">238 ····</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="9537151353-11">(</span><span·class="nf">filters</span><span·class="p"·data-group-id="9537151353-12">(</span><span·class="p"·data-group-id="9537151353-12">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Optio[·...·truncated·by·diffoscope;·len:·158,·SHA:·4d660c88285938766fc41aa668b046ccabea3890b23183cc743a05d07ea1c5ca·...·]-11">)</span><span·class="p">.</span></code></pre><p>A·simple·one-liner·starts·the·tool:</p><pre><code·class="text">··········erl·-pa·../examples·-s·et_demo</code></pre><p>The·filters·are·included·by·the·following·parameters:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
239 </span><span·class="nf">filters</span><span·class="p"·data-group-id="1596541977-1">(</span><span·class="p"·data-group-id="1596541977-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 </span><span·class="nf">filters</span><span·class="p"·data-group-id="5068202519-1">(</span><span·class="p"·data-group-id="5068202519-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="1596541977-2">[</span><span·class="p"·data-group-id="1596541977-3">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1596541977-4">{</span><span·class="ss">filter</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·5400ff248eb18a2b63190c2db1bc5ed65ce0c501b7700a564bdde1d64294964a·...·]-4">}</span><span·class="p">,</span><span·class="w">240 ····</span><span·class="p"·data-group-id="5068202519-2">[</span><span·class="p"·data-group-id="5068202519-3">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5068202519-4">{</span><span·class="ss">filter</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·6f30b2b3fd7e69b3848dbad7dabe6f9e594f3c38a76d0c40f44edb422d477a71·...·]-4">}</span><span·class="p">,</span><span·class="w">
241 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">module_as_actor</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1596541977-3">}</span><span·class="p">,</span><span·class="w">241 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">module_as_actor</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5068202519-3">}</span><span·class="p">,</span><span·class="w">
242 ·····</span><span·class="p"·data-group-id="1596541977-5">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1596541977-6">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pla[·...·truncated·by·diffoscope;·len:·63,·SHA:·3d0ec817e939aef105ff33172e83dd065262f05ff0eaa5476913a5da085069c0·...·]-6">}</span><span·class="p">,</span><span·class="w">242 ·····</span><span·class="p"·data-group-id="5068202519-5">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5068202519-6">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pla[·...·truncated·by·diffoscope;·len:·63,·SHA:·bfbd2797ad83b9c0c1f416959f8d638516dfbd129c0613f03a35c200df9c94bf·...·]-6">}</span><span·class="p">,</span><span·class="w">
243 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">plain_process_info</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1596541977-5">}</span><span·class="p">,</span><span·class="w">243 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">plain_process_info</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5068202519-5">}</span><span·class="p">,</span><span·class="w">
244 ·····</span><span·class="p"·data-group-id="1596541977-7">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1596541977-8">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pla[·...·truncated·by·diffoscope;·len:·70,·SHA:·e1fa17278e3cae18c980afd6188f7191e4bb9eb51058dca90e9bbf3b7a827f98·...·]-8">}</span><span·class="p">,</span><span·class="w">244 ·····</span><span·class="p"·data-group-id="5068202519-7">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5068202519-8">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pla[·...·truncated·by·diffoscope;·len:·70,·SHA:·c181dd36bdf6b1d50a914e2a2d60e369894fbd551708c16546812805a9e458e4·...·]-8">}</span><span·class="p">,</span><span·class="w">
245 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">plain_process_info_nolink</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1596541977-7">}</span><span·class="p">,</span><span·class="w">245 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">plain_process_info_nolink</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5068202519-7">}</span><span·class="p">,</span><span·class="w">
246 ·····</span><span·class="p"·data-group-id="1596541977-9">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1596541977-10">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·64,·SHA:·02729f896bb9520531c1f50fed20a70d1e91cd2d76fc870a6dafd9183539d66a·...·]-10">}</span><span·class="p">,</span><span·class="w">246 ·····</span><span·class="p"·data-group-id="5068202519-9">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5068202519-10">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·64,·SHA:·edd8a9a85af7c18158bdee57e408be98559bc5f238200a36ebee69447ac1a561·...·]-10">}</span><span·class="p">,</span><span·class="w">
247 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">named_process_info</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1596541977-9">}</span><span·class="p">,</span><span·class="w">247 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">named_process_info</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5068202519-9">}</span><span·class="p">,</span><span·class="w">
248 ·····</span><span·class="p"·data-group-id="1596541977-11">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1596541977-12">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">n[·...·truncated·by·diffoscope;·len:·72,·SHA:·573f37e9a9c63d626eab4c518eee513d904f0fdbb224bb6ecbe6c837d2141851·...·]-12">}</span><span·class="p">,</span><span·class="w">248 ·····</span><span·class="p"·data-group-id="5068202519-11">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5068202519-12">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">n[·...·truncated·by·diffoscope;·len:·72,·SHA:·58ae09dd0fb01300ae4ae36b71c0a8a5786921b2c621124e7620f097f8553075·...·]-12">}</span><span·class="p">,</span><span·class="w">
249 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">named_process_info_nolink</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1596541977-11">}</span><span·class="p">,</span><span·class="w">249 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">named_process_info_nolink</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5068202519-11">}</span><span·class="p">,</span><span·class="w">
250 ·····</span><span·class="p"·data-group-id="1596541977-13">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1596541977-14">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">n[·...·truncated·by·diffoscope;·len:·64,·SHA:·fb7027a71cf9d0f4dd43c1d0435b57c9e8b5ec30331a52d056a9c31a8096709e·...·]-14">}</span><span·class="p">,</span><span·class="w">250 ·····</span><span·class="p"·data-group-id="5068202519-13">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5068202519-14">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">n[·...·truncated·by·diffoscope;·len:·64,·SHA:·bf236bda62acdc481553ce76e107b1efca9a35240769e15edbc500d49d60ebe8·...·]-14">}</span><span·class="p">,</span><span·class="w">
251 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">node_process_info</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1596541977-13">}</span><span·class="p">,</span><span·class="w">251 ···················</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">node_process_info</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5068202519-13">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 96896/176209 bytes (54.99%) of diff not shown.
57.8 KB
./usr/share/doc/erlang-doc/html/lib/et-1.7.1/doc/html/et_tutorial.html
    
Offset 129, 49 lines modifiedOffset 129, 49 lines modified
129 ··<a·href="#visualizing-message-sequence-charts"·class="hover-link">129 ··<a·href="#visualizing-message-sequence-charts"·class="hover-link">
130 ····<i·class="ri-link-m"·aria-hidden="true"></i>130 ····<i·class="ri-link-m"·aria-hidden="true"></i>
131 ··</a>131 ··</a>
132 ··<span·class="text">Visualizing·Message·Sequence·Charts</span>132 ··<span·class="text">Visualizing·Message·Sequence·Charts</span>
133 </h2>133 </h2>
134 <p>The·easiest·way·of·using·<code·class="inline">ET</code>,·is·to·just·use·it·as·a·graphical·tool·for134 <p>The·easiest·way·of·using·<code·class="inline">ET</code>,·is·to·just·use·it·as·a·graphical·tool·for
135 displaying·message·sequence·charts.·In·order·to·do·that·you·need·to·first·start135 displaying·message·sequence·charts.·In·order·to·do·that·you·need·to·first·start
136 a·<code·class="inline">Viewer</code>·(which·by·default·starts·a·<code·class="inline">Collector</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="3241895368-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="3241895368-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·489,·SHA:·824fec8c6edf721f064fbd769b56b1fa26dfdb3f5790fc5f90642b1bb1bbb566·...·]-2">)</span><span·class="p">,</span><span·class="w">136 a·<code·class="inline">Viewer</code>·(which·by·default·starts·a·<code·class="inline">Collector</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="2475354267-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="2475354267-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·489,·SHA:·2642e36b2450829499f50ef264adfe51815d845f315b62ebf31d2067d662b32d·...·]-2">)</span><span·class="p">,</span><span·class="w">
137 ······</span><span·class="n">CollectorPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="3241895368-5">(</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="3241895368-5">)</span><span·class="p">.</span></code></pre><p><a·href=""·id="report_event"></a></p><p>Then·you·send·events·to·the·<code·class="inline">Collector</code>·with·the·function137 ······</span><span·class="n">CollectorPid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="2475354267-5">(</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="2475354267-5">)</span><span·class="p">.</span></code></pre><p><a·href=""·id="report_event"></a></p><p>Then·you·send·events·to·the·<code·class="inline">Collector</code>·with·the·function
138 <a·href="et_collector.html#report_event/6"><code·class="inline">et_collector:report_event/6</code></a>·like·this:</p><pre><code·class="text">······et_collector:report_event(CollectorPid,85,from,to,message,extra_stuff).</code></pre><p>The·<code·class="inline">Viewer</code>·will·automatically·pull·events·from·the·<code·class="inline">Collector</code>·and·display138 <a·href="et_collector.html#report_event/6"><code·class="inline">et_collector:report_event/6</code></a>·like·this:</p><pre><code·class="text">······et_collector:report_event(CollectorPid,85,from,to,message,extra_stuff).</code></pre><p>The·<code·class="inline">Viewer</code>·will·automatically·pull·events·from·the·<code·class="inline">Collector</code>·and·display
139 them·on·the·screen.</p><p>The·number·(in·this·case·85)·is·an·integer·from·1·to·100·that·specifies·the139 them·on·the·screen.</p><p>The·number·(in·this·case·85)·is·an·integer·from·1·to·100·that·specifies·the
140 &quot;detail·level&quot;·of·the·message.·The·higher·the·number,·the·more·important·it·is.140 &quot;detail·level&quot;·of·the·message.·The·higher·the·number,·the·more·important·it·is.
141 This·provides·a·crude·form·of·priority·filtering.</p><p>The·<code·class="inline">from</code>,·<code·class="inline">to</code>,·and·<code·class="inline">message</code>·parameters·are·exactly·what·they·sound·like.141 This·provides·a·crude·form·of·priority·filtering.</p><p>The·<code·class="inline">from</code>,·<code·class="inline">to</code>,·and·<code·class="inline">message</code>·parameters·are·exactly·what·they·sound·like.
142 <code·class="inline">from</code>·and·<code·class="inline">to</code>·are·visualized·in·the·<code·class="inline">Viewer</code>·as·&quot;lifelines&quot;,·with·the·message142 <code·class="inline">from</code>·and·<code·class="inline">to</code>·are·visualized·in·the·<code·class="inline">Viewer</code>·as·&quot;lifelines&quot;,·with·the·message
143 passing·from·one·to·the·other.·If·<code·class="inline">from</code>·and·<code·class="inline">to</code>·are·the·same·value,·then·it·is143 passing·from·one·to·the·other.·If·<code·class="inline">from</code>·and·<code·class="inline">to</code>·are·the·same·value,·then·it·is
144 displayed·next·to·the·lifeline·as·an·&quot;action&quot;.·The·<code·class="inline">extra_stuff</code>value·is·simply144 displayed·next·to·the·lifeline·as·an·&quot;action&quot;.·The·<code·class="inline">extra_stuff</code>value·is·simply
145 data·that·you·can·attach·that·will·be·displayed·when·someone·actually·clicks·on145 data·that·you·can·attach·that·will·be·displayed·when·someone·actually·clicks·on
146 the·action·or·message·in·the·<code·class="inline">Viewer</code>·window.</p><p>The·module·<code·class="inline">et/examples/et_display_demo.erl</code>·illustrates·how·it·can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">146 the·action·or·message·in·the·<code·class="inline">Viewer</code>·window.</p><p>The·module·<code·class="inline">et/examples/et_display_demo.erl</code>·illustrates·how·it·can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
147 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0475086100-1">(</span><span·class="ss">et_display_demo</span><span·class="p"·data-group-id="0475086100-1">)</span><span·class="p">.</span><span·class="w">147 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4157621600-1">(</span><span·class="ss">et_display_demo</span><span·class="p"·data-group-id="4157621600-1">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="w">148 </span><span·class="w">
149 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0475086100-2">(</span><span·class="p"·data-group-id="0475086100-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0475086100-3">]</span><span·class="p"·data-group-id="0475086100-2">)</span><span·class="p">.</span><span·class="w">149 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4157621600-2">(</span><span·class="p"·data-group-id="4157621600-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4157621600-3">]</span><span·class="p"·data-group-id="4157621600-2">)</span><span·class="p">.</span><span·class="w">
  
150 </span><span·class="nf">test</span><span·class="p"·data-group-id="0475086100-4">(</span><span·class="p"·data-group-id="0475086100-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">150 </span><span·class="nf">test</span><span·class="p"·data-group-id="4157621600-4">(</span><span·class="p"·data-group-id="4157621600-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ····</span><span·class="p"·data-group-id="0475086100-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="0475086100-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·722,·SHA:·6a5925944ca32cfeb9e8b52234fcf107d892cd9136b01535ba592ff0af49c44b·...·]00-6">)</span><span·class="p">,</span><span·class="w">151 ····</span><span·class="p"·data-group-id="4157621600-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Viewer</span><span·class="p"·data-group-id="4157621600-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·722,·SHA:·9fb6977b22b9c8c3eae11b5a3e4835d04120d1552f4f5f181b05e35b0f9aa33a·...·]00-6">)</span><span·class="p">,</span><span·class="w">
152 ····</span><span·class="n">Drink</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0475086100-10">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="0475086100-10">}</span><span·class="p">,</span><span·class="w">152 ····</span><span·class="n">Drink</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4157621600-10">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="4157621600-10">}</span><span·class="p">,</span><span·class="w">
153 ····</span><span·class="n">Size</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0475086100-11">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="0475086100-11">}</span><span·class="p">,</span><span·class="w">153 ····</span><span·class="n">Size</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4157621600-11">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="4157621600-11">}</span><span·class="p">,</span><span·class="w">
154 ····</span><span·class="n">Milk</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0475086100-12">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="0475086100-12">}</span><span·class="p">,</span><span·class="w">154 ····</span><span·class="n">Milk</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4157621600-12">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="4157621600-12">}</span><span·class="p">,</span><span·class="w">
155 ····</span><span·class="n">Flavor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0475086100-13">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="0475086100-13">}</span><span·class="p">,</span><span·class="w">155 ····</span><span·class="n">Flavor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4157621600-13">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="4157621600-13">}</span><span·class="p">,</span><span·class="w">
156 ····</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="0475086100-14">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="0475086100-14">)</span><span·class="p">,</span><span·class="w">156 ····</span><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">get_collector_pid</span><span·class="p"·data-group-id="4157621600-14">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="4157621600-14">)</span><span·class="p">,</span><span·class="w">
157 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-15">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">place[·...·truncated·by·diffoscope;·len:·367,·SHA:·82cdae3156a57c5867b1c3394022aa5e23e81653ef5e87fc4f1de11e563d04ca·...·]00-15">)</span><span·class="p">,</span><span·class="w">157 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-15">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">place[·...·truncated·by·diffoscope;·len:·367,·SHA:·5d665f1c1e7a63a5d235b76ef031514c0cfa50570c7b99bc7bfb5d5dae3bc9d7·...·]00-15">)</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-17">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">enter[·...·truncated·by·diffoscope;·len:·316,·SHA:·431a838cac8ba6475b50704f0c8c6852460cad67467f688b9f14a42cf56b7a2b·...·]00-17">)</span><span·class="p">,</span><span·class="w">158 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-17">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">enter[·...·truncated·by·diffoscope;·len:·316,·SHA:·2924a27f05f7802c8ae89baf63dea788317022c865d6dfaf60e71c9860d7bbd0·...·]00-17">)</span><span·class="p">,</span><span·class="w">
159 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-19">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">give_[·...·truncated·by·diffoscope;·len:·112,·SHA:·fff30fa00f9452c706180aa228ddd20427ceb658d763a3cd3657a29d37d7bfd4·...·]00-19">)</span><span·class="p">,</span><span·class="w">159 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-19">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">give_[·...·truncated·by·diffoscope;·len:·112,·SHA:·0c40bf59239b361b7139d049a6f08161c23e2cde418f675bb3ef41db5ba6e370·...·]00-19">)</span><span·class="p">,</span><span·class="w">
160 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-20">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">get_[·...·truncated·by·diffoscope;·len:·260,·SHA:·115fdaba7af14395ce2c832da4242146b76afe0139d1bfd46859fb974548e4be·...·]00-20">)</span><span·class="p">,</span><span·class="w">160 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-20">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">get_[·...·truncated·by·diffoscope;·len:·260,·SHA:·8950de60d9b56c489840105870b8d87a97bb8717dcb68b0a5511a34d6e4949fc·...·]00-20">)</span><span·class="p">,</span><span·class="w">
161 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-22">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">give[·...·truncated·by·diffoscope;·len:·182,·SHA:·970f5564959c32f6beb3b7714c338554f5ce75edc4a11548eca07c90f4467ee9·...·]00-22">)</span><span·class="p">,</span><span·class="w">161 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-22">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">give[·...·truncated·by·diffoscope;·len:·182,·SHA:·0499561c3d5503050052b342d5c1b5da7ae51a9b507f5c441417e1a38d205e54·...·]00-22">)</span><span·class="p">,</span><span·class="w">
162 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-24">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">reque[·...·truncated·by·diffoscope;·len:·115,·SHA:·f128c1ed50e2a374d8ea024b4059f51a94755a031c0c1d4a1badbcab41b2aad3·...·]00-24">)</span><span·class="p">,</span><span·class="w">162 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-24">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">reque[·...·truncated·by·diffoscope;·len:·115,·SHA:·ba14363cfe5df6359cfb73b047111363572a2ce142ab2b7f7c6051e81ce829e8·...·]00-24">)</span><span·class="p">,</span><span·class="w">
163 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-25">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">pay_m[·...·truncated·by·diffoscope;·len:·111,·SHA:·eafd18b0e1c74f92116f6868854dbc8b94074f4a465de46cd93e60c5e7e3aa80·...·]00-25">)</span><span·class="p">,</span><span·class="w">163 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-25">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">pay_m[·...·truncated·by·diffoscope;·len:·111,·SHA:·81a1d4eb05e0721534c07ef2ed834aa315ba7a98ac7a91fa377daff0b67a99a5·...·]00-25">)</span><span·class="p">,</span><span·class="w">
164 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-26">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">get_[·...·truncated·by·diffoscope;·len:·186,·SHA:·4b76f35496ae5f137e114b01caaac7de6f2d474b0db1a2293f5361a9308c1a6d·...·]00-26">)</span><span·class="p">,</span><span·class="w">164 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-26">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">get_[·...·truncated·by·diffoscope;·len:·186,·SHA:·c0882a9d9aca75081b06bebffc60b70683dd4e61a3fd60519e229a40c5793d33·...·]00-26">)</span><span·class="p">,</span><span·class="w">
165 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-28">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_[·...·truncated·by·diffoscope;·len:·213,·SHA:·ed99e709a958baa088907fa8d1558aed61644b344ef8544a2f2bb6c85dd56e8f·...·]00-28">)</span><span·class="p">,</span><span·class="w">165 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-28">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_[·...·truncated·by·diffoscope;·len:·213,·SHA:·794c0fa4cd9ff6f4b022180e0891658c7565fdc19892360adf8ce94df2424074·...·]00-28">)</span><span·class="p">,</span><span·class="w">
166 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-30">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_[·...·truncated·by·diffoscope;·len:·209,·SHA:·0d18c3910d0f37f21f70787daea7c6bc6566896d53e4424e59fccf10d8d8ff4a·...·]00-30">)</span><span·class="p">,</span><span·class="w">166 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-30">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_[·...·truncated·by·diffoscope;·len:·209,·SHA:·75f381205c625328e27e48cb4d3481aa7fe398ffff0f308336a08431c0c49b5b·...·]00-30">)</span><span·class="p">,</span><span·class="w">
167 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-32">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_[·...·truncated·by·diffoscope;·len:·181,·SHA:·5021720818b5e7103132fe037fa80bc4498bc3b6c439bb80dac58b561d4f14c8·...·]00-32">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-32">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_[·...·truncated·by·diffoscope;·len:·181,·SHA:·62e61b3013ced5352fe84536eb8685893d44addcd5aa0ba1b95f425c1b6dadd2·...·]00-32">)</span><span·class="p">,</span><span·class="w">
168 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-34">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">swir[·...·truncated·by·diffoscope;·len:·179,·SHA:·493e78555321a93cc9e908ee4c7dafbb614a6ea64de8932de915c487a4a082a7·...·]00-34">)</span><span·class="p">,</span><span·class="w">168 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-34">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">swir[·...·truncated·by·diffoscope;·len:·179,·SHA:·13408d2248082b1470379972820ac706836b50bdc1e1d4f5235278393eab77e4·...·]00-34">)</span><span·class="p">,</span><span·class="w">
169 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="0475086100-36">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">give_[·...·truncated·by·diffoscope;·len:·271,·SHA:·593587e2d8b2b7d21539806af3a06cc1c97f0f12f29825df7e61f784f689b948·...·]00-36">)</span><span·class="p">,</span><span·class="w">169 ····</span><span·class="nc">et_collector</span><span·class="p">:</span><span·class="nf">report_event</span><span·class="p"·data-group-id="4157621600-36">(</span><span·class="n">C</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">give_[·...·truncated·by·diffoscope;·len:·271,·SHA:·f589c3ff6bf1d12d0a0d2d03bb8153587c29aa829a4462cf70a207bba66c6ad1·...·]00-36">)</span><span·class="p">,</span><span·class="w">
170 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>When·you·run·the·<code·class="inline">et_display_demo:test().</code>·function·in·the·example·above,·the170 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>When·you·run·the·<code·class="inline">et_display_demo:test().</code>·function·in·the·example·above,·the
171 <code·class="inline">Viewer</code>·window·will·look·like·this:</p><p><img·src="assets/coffee_order.png"·alt="Screenshot·of·the·Viewer·window"·title="Screenshot·of·the·Viewer·window"/></p><h2·id="four-modules"·class="section-heading">171 <code·class="inline">Viewer</code>·window·will·look·like·this:</p><p><img·src="assets/coffee_order.png"·alt="Screenshot·of·the·Viewer·window"·title="Screenshot·of·the·Viewer·window"/></p><h2·id="four-modules"·class="section-heading">
172 ··<a·href="#four-modules"·class="hover-link">172 ··<a·href="#four-modules"·class="hover-link">
173 ····<i·class="ri-link-m"·aria-hidden="true"></i>173 ····<i·class="ri-link-m"·aria-hidden="true"></i>
174 ··</a>174 ··</a>
175 ··<span·class="text">Four·Modules</span>175 ··<span·class="text">Four·Modules</span>
176 </h2>176 </h2>
Offset 195, 15 lines modifiedOffset 195, 15 lines modified
195 <code·class="inline">Tracer</code>·of·the·<code·class="inline">Raw·Trace·Data</code>.</p><p>Erlang·tracing·is·a·seething·pile·of·pain·that·involves·reasonably·complex195 <code·class="inline">Tracer</code>·of·the·<code·class="inline">Raw·Trace·Data</code>.</p><p>Erlang·tracing·is·a·seething·pile·of·pain·that·involves·reasonably·complex
196 knowledge·of·clever·ports,·tracing·return·formats,·and·specialized·tracing196 knowledge·of·clever·ports,·tracing·return·formats,·and·specialized·tracing
197 <code·class="inline">MatchSpecs</code>·(which·are·really·their·own·special·kind·of·hell).·The·tracing197 <code·class="inline">MatchSpecs</code>·(which·are·really·their·own·special·kind·of·hell).·The·tracing
198 mechanism·is·very·powerful·indeed,·but·it·can·be·hard·to·grasp.</p><p>Luckily·there·is·a·simplified·way·to·start·tracing·of·<a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·function198 mechanism·is·very·powerful·indeed,·but·it·can·be·hard·to·grasp.</p><p>Luckily·there·is·a·simplified·way·to·start·tracing·of·<a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·function
199 calls.·The·idea·is·that·you·should·instrument·your·code·with·calls·to199 calls.·The·idea·is·that·you·should·instrument·your·code·with·calls·to
200 <a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·in·strategic·places·where·you·have·interesting·information200 <a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·in·strategic·places·where·you·have·interesting·information
201 available·in·your·program.·Then·you·just·start·the·<code·class="inline">Collector</code>·with·global201 available·in·your·program.·Then·you·just·start·the·<code·class="inline">Collector</code>·with·global
202 tracing·enabled:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="6014641480-1">(</span><span·class="p"·data-group-id="6014641480-2">[</span><span·class="p"·data-group-id="6014641480-3">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·553,·SHA:·0fbb1f546feb6135c94cf8fb7778495f66d8f30502483501aef787cce297031b·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·will·start·a·<code·class="inline">Collector</code>,·a·<code·class="inline">Viewer</code>·and·also·start·the·tracing·of202 tracing·enabled:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4189551506-1">(</span><span·class="p"·data-group-id="4189551506-2">[</span><span·class="p"·data-group-id="4189551506-3">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·553,·SHA:·80ed03fcf37288b6a9cb337ecad58f9c05d3d15e16dafcccfad713facd140225·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·will·start·a·<code·class="inline">Collector</code>,·a·<code·class="inline">Viewer</code>·and·also·start·the·tracing·of
203 <a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·function·calls.·The·<code·class="inline">Raw·Trace·Data</code>·is·collected·by·the203 <a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·function·calls.·The·<code·class="inline">Raw·Trace·Data</code>·is·collected·by·the
204 <code·class="inline">Collector</code>·and·a·view·of·it·is·displayed·on·the·screen·by·the·<code·class="inline">Viewer</code>.·You·can204 <code·class="inline">Collector</code>·and·a·view·of·it·is·displayed·on·the·screen·by·the·<code·class="inline">Viewer</code>.·You·can
205 define·your·own·&quot;views&quot;·of·the·data·by·implementing·your·own·<code·class="inline">Filter</code>·functions205 define·your·own·&quot;views&quot;·of·the·data·by·implementing·your·own·<code·class="inline">Filter</code>·functions
206 and·register·them·in·the·<code·class="inline">Viewer</code>.</p><h2·id="the-collector-and-viewer"·class="section-heading">206 and·register·them·in·the·<code·class="inline">Viewer</code>.</p><h2·id="the-collector-and-viewer"·class="section-heading">
207 ··<a·href="#the-collector-and-viewer"·class="hover-link">207 ··<a·href="#the-collector-and-viewer"·class="hover-link">
208 ····<i·class="ri-link-m"·aria-hidden="true"></i>208 ····<i·class="ri-link-m"·aria-hidden="true"></i>
209 ··</a>209 ··</a>
Offset 251, 44 lines modifiedOffset 251, 44 lines modified
251 ··</a>251 ··</a>
252 ··<span·class="text">How·To·Put·It·Together</span>252 ··<span·class="text">How·To·Put·It·Together</span>
253 </h2>253 </h2>
254 <p>The·<code·class="inline">Collector</code>·automatically·registers·itself·to·listen·for·trace·<code·class="inline">Events</code>,·so254 <p>The·<code·class="inline">Collector</code>·automatically·registers·itself·to·listen·for·trace·<code·class="inline">Events</code>,·so
255 all·you·have·to·do·is·enable·them.</p><p>For·those·people·who·want·to·do·general·tracing,·consult·the·<code·class="inline">dbg</code>·module·on·how255 all·you·have·to·do·is·enable·them.</p><p>For·those·people·who·want·to·do·general·tracing,·consult·the·<code·class="inline">dbg</code>·module·on·how
256 to·trace·whatever·you're·interested·in·and·let·it·work·its·magic.·If·you·just256 to·trace·whatever·you're·interested·in·and·let·it·work·its·magic.·If·you·just
257 want·<a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·to·work,·do·the·following:</p><ol><li>Create·a·<code·class="inline">Collector</code></li><li>Create·a·<code·class="inline">Viewer</code>·(this·can·do·step·#1·for·you)</li><li>Turn·on·and·pare·down·debugging</li></ol><p>The·module·<code·class="inline">et/examples/et_trace_demo.erl</code>·achieves·this.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">257 want·<a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·to·work,·do·the·following:</p><ol><li>Create·a·<code·class="inline">Collector</code></li><li>Create·a·<code·class="inline">Viewer</code>·(this·can·do·step·#1·for·you)</li><li>Turn·on·and·pare·down·debugging</li></ol><p>The·module·<code·class="inline">et/examples/et_trace_demo.erl</code>·achieves·this.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
258 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1024279743-1">(</span><span·class="ss">et_trace_demo</span><span·class="p"·data-group-id="1024279743-1">)</span><span·class="p">.</span><span·class="w">258 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4124919240-1">(</span><span·class="ss">et_trace_demo</span><span·class="p"·data-group-id="4124919240-1">)</span><span·class="p">.</span><span·class="w">
259 </span><span·class="w">259 </span><span·class="w">
260 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1024279743-2">(</span><span·class="p"·data-group-id="1024279743-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1024279743-3">]</span><span·class="p"·data-group-id="1024279743-2">)</span><span·class="p">.</span><span·class="w">260 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4124919240-2">(</span><span·class="p"·data-group-id="4124919240-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4124919240-3">]</span><span·class="p"·data-group-id="4124919240-2">)</span><span·class="p">.</span><span·class="w">
  
261 </span><span·class="nf">test</span><span·class="p"·data-group-id="1024279743-4">(</span><span·class="p"·data-group-id="1024279743-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">261 </span><span·class="nf">test</span><span·class="p"·data-group-id="4124919240-4">(</span><span·class="p"·data-group-id="4124919240-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ····</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1024279743-5">(</span><span·class="p"·data-group-id="1024279743-6">[</span><span·class="w">262 ····</span><span·class="nc">et_viewer</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4124919240-5">(</span><span·class="p"·data-group-id="4124919240-6">[</span><span·class="w">
263 ········</span><span·class="p"·data-group-id="1024279743-7">{</span><span·class="ss">title</span><span·class="p">,</span><span·class="s">&quot;Coffee·Order&quot;</span><span·class="p"·data-group-id="1024279743-7">}</span><span·class="p">,</span><span·class="w">263 ········</span><span·class="p"·data-group-id="4124919240-7">{</span><span·class="ss">title</span><span·class="p">,</span><span·class="s">&quot;Coffee·Order&quot;</span><span·class="p"·data-group-id="4124919240-7">}</span><span·class="p">,</span><span·class="w">
264 ········</span><span·class="p"·data-group-id="1024279743-8">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="1024279743-8">}</span><span·class="p">,</span><span·class="w">264 ········</span><span·class="p"·data-group-id="4124919240-8">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="4124919240-8">}</span><span·class="p">,</span><span·class="w">
265 ········</span><span·class="p"·data-group-id="1024279743-9">{</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="p"·data-group-id="1024279743-10">{</span><span·class="ss">et</span><span·class="p">,</span><span·class="ss">max</span><span·class="p"·data-group-id="1024279743-[·...·truncated·by·diffoscope;·len:·53,·SHA:·94755b4e72de4ea56f3b4afee1fd7cf7e9f182def48a83fe79307f4dd403e9f2·...·]-9">}</span><span·class="p">,</span><span·class="w">265 ········</span><span·class="p"·data-group-id="4124919240-9">{</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="p"·data-group-id="4124919240-10">{</span><span·class="ss">et</span><span·class="p">,</span><span·class="ss">max</span><span·class="p"·data-group-id="4124919240-[·...·truncated·by·diffoscope;·len:·53,·SHA:·777a33058344b63fb41447435a583e5f74c3b228ac11deab6818b96acb60a22c·...·]-9">}</span><span·class="p">,</span><span·class="w">
266 ········</span><span·class="p"·data-group-id="1024279743-11">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="1024279743-11">}</span><span·class="w">266 ········</span><span·class="p"·data-group-id="4124919240-11">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="4124919240-11">}</span><span·class="w">
267 ······</span><span·class="p"·data-group-id="1024279743-6">]</span><span·class="p"·data-group-id="1024279743-5">)</span><span·class="p">,</span><span·class="w">267 ······</span><span·class="p"·data-group-id="4124919240-6">]</span><span·class="p"·data-group-id="4124919240-5">)</span><span·class="p">,</span><span·class="w">
268 ······</span><span·class="c1">%%·dbg:p(all,call),</span><span·class="w">268 ······</span><span·class="c1">%%·dbg:p(all,call),</span><span·class="w">
269 ······</span><span·class="c1">%%·dbg:tpl(et,·trace_me,·5,·[]),</span><span·class="w">269 ······</span><span·class="c1">%%·dbg:tpl(et,·trace_me,·5,·[]),</span><span·class="w">
270 ······</span><span·class="n">Drink</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1024279743-12">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="1024279743-12">}</span><span·class="p">,</span><span·class="w">270 ······</span><span·class="n">Drink</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4124919240-12">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="4124919240-12">}</span><span·class="p">,</span><span·class="w">
271 ······</span><span·class="n">Size</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1024279743-13">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="1024279743-13">}</span><span·class="p">,</span><span·class="w">271 ······</span><span·class="n">Size</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4124919240-13">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="4124919240-13">}</span><span·class="p">,</span><span·class="w">
272 ······</span><span·class="n">Milk</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1024279743-14">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="1024279743-14">}</span><span·class="p">,</span><span·class="w">272 ······</span><span·class="n">Milk</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4124919240-14">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="4124919240-14">}</span><span·class="p">,</span><span·class="w">
273 ······</span><span·class="n">Flavor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1024279743-15">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="1024279743-15">}</span><span·class="p">,</span><span·class="w">273 ······</span><span·class="n">Flavor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4124919240-15">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="4124919240-15">}</span><span·class="p">,</span><span·class="w">
274 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-16">(</span><span·class="mi">99</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">place_order</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·321,·SHA:·556847833244bed0534a133e9480a61be40705c791f05c92a89aa630798a3041·...·]-16">)</span><span·class="p">,</span><span·class="w">274 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-16">(</span><span·class="mi">99</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">place_order</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·321,·SHA:·4c05b19273598dded90e8c14a8f4864986cff2a100b4dc28070d61745c2d6c55·...·]-16">)</span><span·class="p">,</span><span·class="w">
275 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-18">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">enter_order</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·270,·SHA:·2faa69203421a1771b054c7e48a2091b6363fe05fa81f21ccac575b4146d3e2a·...·]-18">)</span><span·class="p">,</span><span·class="w">275 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-18">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">enter_order</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·270,·SHA:·aeeec179b6e3afac691d32e40c8eb39661eae7f7eb5f659bec59a75d3c3424a3·...·]-18">)</span><span·class="p">,</span><span·class="w">
276 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-20">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">give_total</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·66,·SHA:·887280c6832da5cc027078f2dc5a3516041af5e49ce854c4ac8c774229df8121·...·]-20">)</span><span·class="p">,</span><span·class="w">276 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-20">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="nb">register</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">give_total</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·66,·SHA:·b24a19cc8e2c15ff084f89ae606171018997776d9c1030b3f32d99e45c6fb20f·...·]-20">)</span><span·class="p">,</span><span·class="w">
277 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-21">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">get_cup</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·214,·SHA:·da6565cd8b3cf7c265b62a014b55cb70623059a3acbc355ff2a172eeb85a38d1·...·]-21">)</span><span·class="p">,</span><span·class="w">277 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-21">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">get_cup</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·214,·SHA:·f7c1575d7790e682f1dcec9f3076c8a2eb2ec34e26004db0eb90824dc37c7cfc·...·]-21">)</span><span·class="p">,</span><span·class="w">
278 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-23">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">give_cup</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·136,·SHA:·e9f2492fc64829bf5c46ecbc7aee2ea6fbeefd41df4dbb180916ec3c9fae5402·...·]-23">)</span><span·class="p">,</span><span·class="w">278 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-23">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">give_cup</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·136,·SHA:·e4c00739ce999e75d258a96f353a7ca091bc7254532dcaa4fd160c89f6ab571e·...·]-23">)</span><span·class="p">,</span><span·class="w">
279 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-25">(</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">request_money</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·69,·SHA:·69d7acbcaea4245304f757a25ac2a873bd59eb5e52860b099b5da29a7955fffd·...·]-25">)</span><span·class="p">,</span><span·class="w">279 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-25">(</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">request_money</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·69,·SHA:·e0a2b5c2212f8b01de495cecc309333ac9241ceb1028982a7c619e23d24ff121·...·]-25">)</span><span·class="p">,</span><span·class="w">
280 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-26">(</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">pay_money</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·65,·SHA:·ccc6e13a2c89c65da505cfa1a5853606e72facf2d45657571008e59fc5a9bbe3·...·]-26">)</span><span·class="p">,</span><span·class="w">280 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-26">(</span><span·class="mi">90</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">barrista1</span><span·class="p">,</span><span·class="ss">pay_money</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·65,·SHA:·de53342f02d727b1f1d1587438fa5cd6e019ef89ea8483034a39a057ce397e33·...·]-26">)</span><span·class="p">,</span><span·class="w">
281 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-27">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">get_chai_mix</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·140,·SHA:·5826b6e5ea15e3de38a25532ab83ca8f877ee1d4b93d60a3f21dccc543537db5·...·]-27">)</span><span·class="p">,</span><span·class="w">281 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-27">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">get_chai_mix</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·140,·SHA:·866a22664ac126a0a1d836e0d2cf22e8faafc284737f860f384452222cf893b2·...·]-27">)</span><span·class="p">,</span><span·class="w">
282 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-29">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_flavor</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·167,·SHA:·225d9ce8489219ec1c58fe73c52393bbd8596ada5aa2878d33eeb2fdf007ff63·...·]-29">)</span><span·class="p">,</span><span·class="w">282 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-29">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_flavor</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·167,·SHA:·2ef0bffa619ac1c826b73822288f9a838cd552dedf890b9c11811ae931d09811·...·]-29">)</span><span·class="p">,</span><span·class="w">
283 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-31">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_milk</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·163,·SHA:·8512f302664dae0925fd813831eb782517e2ce011e13f5c607e6618855b1d436·...·]-31">)</span><span·class="p">,</span><span·class="w">283 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-31">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_milk</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·163,·SHA:·1c99fa54a796cb16298a8c17f2179b5bdb8a6040c2e654f4e4b58774ce9136f6·...·]-31">)</span><span·class="p">,</span><span·class="w">
284 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-33">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_ice</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·cc5a7b6f065b479d0bc6ba5f0ad14bd71dd3154a5c5dc048a291252cc6e46d2b·...·]-33">)</span><span·class="p">,</span><span·class="w">284 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-33">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">add_ice</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·de04f35c8474804779ed0cbe326643f604a916d11ecb6f5868087c547a839075·...·]-33">)</span><span·class="p">,</span><span·class="w">
285 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-35">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">swirl</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·133,·SHA:·aa3a666fca93fbc44acbe0478992ea82ee8e65ec8efec3010694db7a856a9e7f·...·]-35">)</span><span·class="p">,</span><span·class="w">285 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-35">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">swirl</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·133,·SHA:·613b352b44e7fa22c189df58147837fc347dfe6571941be5210e6c66cc2beed5·...·]-35">)</span><span·class="p">,</span><span·class="w">
286 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="1024279743-37">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">give_tasty_beverage</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·225,·SHA:·ca93c8bf17181ab345bf3b5adc9a211858161f93874cfc116ef6f2e2e05012ce·...·]-37">)</span><span·class="p">,</span><span·class="w">286 ······</span><span·class="nc">et</span><span·class="p">:</span><span·class="nf">trace_me</span><span·class="p"·data-group-id="4124919240-37">(</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">barrista2</span><span·class="p">,</span><span·class="ss">customer</span><span·class="p">,</span><span·class="ss">give_tasty_beverage</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·225,·SHA:·93a41bd20946d77b796c1412786e85017af8bf51cbbc77cd8341d66202271686·...·]-37">)</span><span·class="p">,</span><span·class="w">
287 ······</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>Running·through·the·above,·the·most·important·points·are:</p><ul><li>Turn·on·global·tracing</li><li>Set·a·<code·class="inline">Trace·Pattern</code></li><li>Tell·<code·class="inline">dbg</code>·to·trace·function·Calls</li><li>Tell·it·specifically·to·trace·the·<a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·function</li></ul><p>When·you·run·the·<code·class="inline">et_trace_demo:test()</code>·function·above,·the·<code·class="inline">Viewer</code>·window·will287 ······</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>Running·through·the·above,·the·most·important·points·are:</p><ul><li>Turn·on·global·tracing</li><li>Set·a·<code·class="inline">Trace·Pattern</code></li><li>Tell·<code·class="inline">dbg</code>·to·trace·function·Calls</li><li>Tell·it·specifically·to·trace·the·<a·href="et.html#trace_me/5"><code·class="inline">et:trace_me/5</code></a>·function</li></ul><p>When·you·run·the·<code·class="inline">et_trace_demo:test()</code>·function·above,·the·<code·class="inline">Viewer</code>·window·will
288 look·like·this·screenshot:</p><p><img·src="assets/coffee_order.png"·alt="Screenshot·of·the·Viewer·window"·title="Screenshot·of·the·Viewer·window"/></p>288 look·like·this·screenshot:</p><p><img·src="assets/coffee_order.png"·alt="Screenshot·of·the·Viewer·window"·title="Screenshot·of·the·Viewer·window"/></p>
289 </div>289 </div>
  
290 <div·class="bottom-actions"·id="bottom-actions">290 <div·class="bottom-actions"·id="bottom-actions">
291 ··<div·class="bottom-actions-item">291 ··<div·class="bottom-actions-item">
  
609 B
./usr/share/doc/erlang-doc/html/lib/eunit-2.9.1/doc/html/.build
    
Offset 15, 14 lines modifiedOffset 15, 14 lines modified
15 dist/lato-latin-300-normal-YUMVEFOL.woff215 dist/lato-latin-300-normal-YUMVEFOL.woff2
16 dist/lato-latin-400-normal-W7754I4D.woff216 dist/lato-latin-400-normal-W7754I4D.woff2
17 dist/lato-latin-700-normal-2XVSBPG4.woff217 dist/lato-latin-700-normal-2XVSBPG4.woff2
18 dist/lato-latin-ext-300-normal-VPGGJKJL.woff218 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
19 dist/lato-latin-ext-400-normal-N27NCBWW.woff219 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
20 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff220 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
21 dist/remixicon-NKANDIL5.woff221 dist/remixicon-NKANDIL5.woff2
22 dist/search_data-8A6DA255.js22 dist/search_data-9EC16955.js
23 dist/sidebar_items-3A2D003A.js23 dist/sidebar_items-3A2D003A.js
24 eunit.html24 eunit.html
25 eunit_surefire.html25 eunit_surefire.html
26 index.html26 index.html
27 notes.html27 notes.html
28 search.html28 search.html
42.8 KB
./usr/share/doc/erlang-doc/html/lib/eunit-2.9.1/doc/html/eunit.epub
2.11 KB
zipinfo {}
    
Offset 1, 15 lines modifiedOffset 1, 15 lines modified
1 Zip·file·size:·45179·bytes,·number·of·entries:·131 Zip·file·size:·45179·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:32·mimetype
3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Feb-13·09:32·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····32747·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····32747·bx·defN·25-Feb-13·09:32·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1175·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1175·bx·defN·25-Feb-13·09:32·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1136·bx·defN·25-Feb-13·10:52·OEBPS/eunit_surefire.xhtml6 ?rw-r--r--··6.1·unx·····1136·bx·defN·25-Feb-13·09:32·OEBPS/eunit_surefire.xhtml
7 ?rw-r--r--··6.1·unx·····7821·bx·defN·25-Feb-13·10:52·OEBPS/eunit.xhtml7 ?rw-r--r--··6.1·unx·····7821·bx·defN·25-Feb-13·09:32·OEBPS/eunit.xhtml
8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:32·OEBPS/dist/epub-erlang-ESPT6BQV.css
9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:32·OEBPS/dist/epub-LSJCIYTM.js
10 ?rw-r--r--··6.1·unx·····1623·bx·defN·25-Feb-13·10:52·OEBPS/content.opf10 ?rw-r--r--··6.1·unx·····1623·bx·defN·25-Feb-13·09:32·OEBPS/content.opf
11 ?rw-r--r--··6.1·unx····65980·bx·defN·25-Feb-13·10:52·OEBPS/chapter.xhtml11 ?rw-r--r--··6.1·unx····65980·bx·defN·25-Feb-13·09:32·OEBPS/chapter.xhtml
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:32·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:32·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:32·META-INF/com.apple.ibooks.display-options.xml
15 13·files,·132528·bytes·uncompressed,·42921·bytes·compressed:··67.6%15 13·files,·132528·bytes·uncompressed,·42921·bytes·compressed:··67.6%
39.0 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:38,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:32:56,·uncompressed·size·20,·method=store
1.2 KB
OEBPS/content.opf
1.16 KB
OEBPS/content.opf
Max HTML report size reached
628 B
./usr/share/doc/erlang-doc/html/lib/eunit-2.9.1/doc/html/search.html
    
Offset 118, 15 lines modifiedOffset 118, 15 lines modified
118 <div·id="search">118 <div·id="search">
119 ··<h1>119 ··<h1>
120 ····<span></span>120 ····<span></span>
121 ··</h1>121 ··</h1>
  
122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>122 ··<div·class="loading"><div></div><div></div><div></div><div></div></div>
123 </div>123 </div>
124 <script·src="dist/search_data-8A6DA255.js"></script>124 <script·src="dist/search_data-9EC16955.js"></script>
125 ····<footer·class="footer">125 ····<footer·class="footer">
126 ······<p>126 ······<p>
  
127 ········<span·class="line">127 ········<span·class="line">
128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">128 ··········<button·class="a-main·footer-button·display-quick-switch"·title="Search·HexDocs·packages">
129 ············Search·HexDocs129 ············Search·HexDocs
130 ··········</button>130 ··········</button>
81.7 KB
./usr/share/doc/erlang-doc/html/lib/ftp-1.2.3/doc/html/ftp.epub
2.22 KB
zipinfo {}
    
Offset 1, 15 lines modifiedOffset 1, 15 lines modified
1 Zip·file·size:·33165·bytes,·number·of·entries:·131 Zip·file·size:·33166·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:34·mimetype
3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Feb-13·09:34·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····16468·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····16468·bx·defN·25-Feb-13·09:34·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1130·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1130·bx·defN·25-Feb-13·09:34·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1148·bx·defN·25-Feb-13·10:52·OEBPS/introduction.xhtml6 ?rw-r--r--··6.1·unx·····1148·bx·defN·25-Feb-13·09:34·OEBPS/introduction.xhtml
7 ?rw-r--r--··6.1·unx·····7044·bx·defN·25-Feb-13·10:52·OEBPS/ftp_client.xhtml7 ?rw-r--r--··6.1·unx·····7044·bx·defN·25-Feb-13·09:34·OEBPS/ftp_client.xhtml
8 ?rw-r--r--··6.1·unx····75259·bx·defN·25-Feb-13·10:52·OEBPS/ftp.xhtml8 ?rw-r--r--··6.1·unx····75259·bx·defN·25-Feb-13·09:34·OEBPS/ftp.xhtml
9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:34·OEBPS/dist/epub-erlang-ESPT6BQV.css
10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:34·OEBPS/dist/epub-LSJCIYTM.js
11 ?rw-r--r--··6.1·unx·····1614·bx·defN·25-Feb-13·10:52·OEBPS/content.opf11 ?rw-r--r--··6.1·unx·····1614·bx·defN·25-Feb-13·09:34·OEBPS/content.opf
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:34·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:34·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:34·META-INF/com.apple.ibooks.display-options.xml
15 13·files,·124705·bytes·uncompressed,·30909·bytes·compressed:··75.2%15 13·files,·124705·bytes·uncompressed,·30910·bytes·compressed:··75.2%
66.0 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:58,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:34:14,·uncompressed·size·20,·method=store
11.8 KB
OEBPS/ftp_client.xhtml
Max HTML report size reached
1.21 KB
OEBPS/content.opf
1.17 KB
OEBPS/content.opf
Max HTML report size reached
11.9 KB
./usr/share/doc/erlang-doc/html/lib/ftp-1.2.3/doc/html/ftp_client.html
    
Offset 122, 33 lines modifiedOffset 122, 33 lines modified
122 ······</a>122 ······</a>
  
  
123 ····<span>Examples</span>123 ····<span>Examples</span>
124 ··</h1>124 ··</h1>
  
125 <p>The·following·is·a·simple·example·of·an·FTP·session,·where·the·user·<code·class="inline">guest</code>·with125 <p>The·following·is·a·simple·example·of·an·FTP·session,·where·the·user·<code·class="inline">guest</code>·with
126 password·<code·class="inline">password</code>·logs·on·to·the·remote·host·<code·class="inline">erlang.org</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2323539198-1">(</span><span·class="p"·data-group-id="2323539198-1">)</span><span·class="p">.</span><span·class="w">126 password·<code·class="inline">password</code>·logs·on·to·the·remote·host·<code·class="inline">erlang.org</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2011179100-1">(</span><span·class="p"·data-group-id="2011179100-1">)</span><span·class="p">.</span><span·class="w">
127 ······</span><span·class="ss">ok</span><span·class="w">127 ······</span><span·class="ss">ok</span><span·class="w">
128 ······</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2323539198-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="2323539198-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·496,·SHA:·5a4ad7fe95d5bee608df5474f4c0b613469a416285c5411e7d2b9860749d2fd5·...·]-3">)</span><span·class="p">.</span><span·class="w">128 ······</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2011179100-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="2011179100-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·496,·SHA:·4a4b289ff08a365b9dd54d165629c84d701449c03ac6b052ffd51a87dc674d69·...·]-3">)</span><span·class="p">.</span><span·class="w">
129 ······</span><span·class="p"·data-group-id="2323539198-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.22</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2323539198-6">}</span><span·class="w">129 ······</span><span·class="p"·data-group-id="2011179100-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.22</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2011179100-6">}</span><span·class="w">
130 ······</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">user</span><span·class="p"·data-group-id="2323539198-7">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;guest&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;password&quot;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·ba476a7f45461620d1100694ba0cfece75b32101b946acc0c63e5563ff715ae5·...·]-7">)</span><span·class="p">.</span><span·class="w">130 ······</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">user</span><span·class="p"·data-group-id="2011179100-7">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;guest&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;password&quot;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·3997ef8a371ed84a755e076c2a2b906ffadd065f04eab6196af85f0ce1477123·...·]-7">)</span><span·class="p">.</span><span·class="w">
131 ······</span><span·class="ss">ok</span><span·class="w">131 ······</span><span·class="ss">ok</span><span·class="w">
132 ······</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">pwd</span><span·class="p"·data-group-id="2323539198-8">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2323539198-8">)</span><span·class="p">.</span><span·class="w">132 ······</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">pwd</span><span·class="p"·data-group-id="2011179100-8">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2011179100-8">)</span><span·class="p">.</span><span·class="w">
133 ······</span><span·class="p"·data-group-id="2323539198-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/guest&quot;</span><span·class="p"·data-group-id="2323539198-9">}</span><span·class="w">133 ······</span><span·class="p"·data-group-id="2011179100-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/guest&quot;</span><span·class="p"·data-group-id="2011179100-9">}</span><span·class="w">
134 ······</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">cd</span><span·class="p"·data-group-id="2323539198-10">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;appl/examples&quot;</span><span·class="p"·data-group-id="2323539198-10">)</span><span·class="p">.</span><span·class="w">134 ······</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">cd</span><span·class="p"·data-group-id="2011179100-10">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;appl/examples&quot;</span><span·class="p"·data-group-id="2011179100-10">)</span><span·class="p">.</span><span·class="w">
135 ······</span><span·class="ss">ok</span><span·class="w">135 ······</span><span·class="ss">ok</span><span·class="w">
136 ······</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">lpwd</span><span·class="p"·data-group-id="2323539198-11">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2323539198-11">)</span><span·class="p">.</span><span·class="w">136 ······</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">lpwd</span><span·class="p"·data-group-id="2011179100-11">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2011179100-11">)</span><span·class="p">.</span><span·class="w">
137 ······</span><span·class="p"·data-group-id="2323539198-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/fred&quot;</span><span·class="p"·data-group-id="2323539198-12">}</span><span·class="p">.</span><span·class="w">137 ······</span><span·class="p"·data-group-id="2011179100-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/fred&quot;</span><span·class="p"·data-group-id="2011179100-12">}</span><span·class="p">.</span><span·class="w">
138 ······</span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">lcd</span><span·class="p"·data-group-id="2323539198-13">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/eproj/examples&quot;</span><span·class="p"·data-group-id="2323539198-13">)</span><span·class="p">.</span><span·class="w">138 ······</span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">lcd</span><span·class="p"·data-group-id="2011179100-13">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/eproj/examples&quot;</span><span·class="p"·data-group-id="2011179100-13">)</span><span·class="p">.</span><span·class="w">
139 ······</span><span·class="ss">ok</span><span·class="w">139 ······</span><span·class="ss">ok</span><span·class="w">
140 ······</span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="2323539198-14">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;appl.erl&quot;</span><span·class="p"·data-group-id="2323539198-14">)</span><span·class="p">.</span><span·class="w">140 ······</span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="2011179100-14">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;appl.erl&quot;</span><span·class="p"·data-group-id="2011179100-14">)</span><span·class="p">.</span><span·class="w">
141 ······</span><span·class="ss">ok</span><span·class="w">141 ······</span><span·class="ss">ok</span><span·class="w">
142 ······</span><span·class="mi">9</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="2323539198-15">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2323539198-15">)</span><span·class="p">.</span><span·class="w">142 ······</span><span·class="mi">9</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="2011179100-15">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2011179100-15">)</span><span·class="p">.</span><span·class="w">
143 ······</span><span·class="ss">ok</span><span·class="w">143 ······</span><span·class="ss">ok</span><span·class="w">
144 ······</span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2323539198-16">(</span><span·class="p"·data-group-id="2323539198-16">)</span><span·class="p">.</span><span·class="w">144 ······</span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ftp</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2011179100-16">(</span><span·class="p"·data-group-id="2011179100-16">)</span><span·class="p">.</span><span·class="w">
145 ······</span><span·class="ss">ok</span></code></pre><p>The·file·<code·class="inline">appl.erl</code>·is·transferred·from·the·remote·to·the·local·host.·When·the145 ······</span><span·class="ss">ok</span></code></pre><p>The·file·<code·class="inline">appl.erl</code>·is·transferred·from·the·remote·to·the·local·host.·When·the
146 session·is·opened,·the·current·directory·at·the·remote·host·is·<code·class="inline">/home/guest</code>,146 session·is·opened,·the·current·directory·at·the·remote·host·is·<code·class="inline">/home/guest</code>,
147 and·<code·class="inline">/home/fred</code>·at·the·local·host.·Before·transferring·the·file,·the·current147 and·<code·class="inline">/home/fred</code>·at·the·local·host.·Before·transferring·the·file,·the·current
148 local·directory·is·changed·to·<code·class="inline">/home/eproj/examples</code>,·and·the·remote·directory148 local·directory·is·changed·to·<code·class="inline">/home/eproj/examples</code>,·and·the·remote·directory
149 is·set·to·<code·class="inline">/home/guest/appl/examples</code>.</p>149 is·set·to·<code·class="inline">/home/guest/appl/examples</code>.</p>
150 </div>150 </div>
  
40.2 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.1/doc/html/http_client.html
    
Offset 134, 40 lines modifiedOffset 134, 40 lines modified
134 <p>The·HTTP·client·default·profile·is·started·when·the·<code·class="inline">Inets</code>·application·is134 <p>The·HTTP·client·default·profile·is·started·when·the·<code·class="inline">Inets</code>·application·is
135 started·and·is·then·available·to·all·processes·on·that·Erlang·node.·Other135 started·and·is·then·available·to·all·processes·on·that·Erlang·node.·Other
136 profiles·can·also·be·started·at·application·startup,·or·profiles·can·be·started136 profiles·can·also·be·started·at·application·startup,·or·profiles·can·be·started
137 and·stopped·dynamically·in·runtime.·Each·client·profile·spawns·a·new·process·to137 and·stopped·dynamically·in·runtime.·Each·client·profile·spawns·a·new·process·to
138 handle·each·request,·unless·a·persistent·connection·can·be·used·with·or·without138 handle·each·request,·unless·a·persistent·connection·can·be·used·with·or·without
139 pipelining.·The·client·adds·a·<code·class="inline">host</code>·header·and·an·empty·<code·class="inline">te</code>·header·if·there139 pipelining.·The·client·adds·a·<code·class="inline">host</code>·header·and·an·empty·<code·class="inline">te</code>·header·if·there
140 are·no·such·headers·present·in·the·request.</p><p>The·client·supports·IPv6·as·long·as·the·underlying·mechanisms·also·do·so.</p><p>The·following·is·to·be·put·in·the·Erlang·node·application·configuration·file·to140 are·no·such·headers·present·in·the·request.</p><p>The·client·supports·IPv6·as·long·as·the·underlying·mechanisms·also·do·so.</p><p>The·following·is·to·be·put·in·the·Erlang·node·application·configuration·file·to
141 start·a·profile·at·application·startup:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5795486301-1">[</span><span·class="p"·data-group-id="5795486301-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5795486301-3">[</span><span·class="p"·data-group-id="5795486301-4">{</spa[·...·truncated·by·diffoscope;·len:·606,·SHA:·28044dcde751fabd61cb7b939d952849d5c4d499f22d7bfd077911ed8aaefc29·...·]-1">]</span></code></pre><p>For·valid·properties,·see·<a·href="httpc.html"><code·class="inline">httpc</code></a>.</p><h2·id="getting-started"·class="section-heading">141 start·a·profile·at·application·startup:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7517560682-1">[</span><span·class="p"·data-group-id="7517560682-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7517560682-3">[</span><span·class="p"·data-group-id="7517560682-4">{</spa[·...·truncated·by·diffoscope;·len:·606,·SHA:·35021c63b176a2325c009e58dea9b49a6349fa8567391c4c5dbb2782a6a7195b·...·]-1">]</span></code></pre><p>For·valid·properties,·see·<a·href="httpc.html"><code·class="inline">httpc</code></a>.</p><h2·id="getting-started"·class="section-heading">
142 ··<a·href="#getting-started"·class="hover-link">142 ··<a·href="#getting-started"·class="hover-link">
143 ····<i·class="ri-link-m"·aria-hidden="true"></i>143 ····<i·class="ri-link-m"·aria-hidden="true"></i>
144 ··</a>144 ··</a>
145 ··<span·class="text">Getting·Started</span>145 ··<span·class="text">Getting·Started</span>
146 </h2>146 </h2>
147 <p>Start·<code·class="inline">Inets</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3346068237-1">(</span><span·class="p"·data-group-id="3346068237-1">)</span><span·class="p">.</span><span·class="w">147 <p>Start·<code·class="inline">Inets</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1211441086-1">(</span><span·class="p"·data-group-id="1211441086-1">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="ss">ok</span></code></pre><p>The·following·calls·use·the·default·client·profile.·Use·the·proxy148 </span><span·class="ss">ok</span></code></pre><p>The·following·calls·use·the·default·client·profile.·Use·the·proxy
149 <code·class="inline">&quot;www-proxy.mycompany.com:8000&quot;</code>,·except·from·requests·to·localhost.·This149 <code·class="inline">&quot;www-proxy.mycompany.com:8000&quot;</code>,·except·from·requests·to·localhost.·This
150 applies·to·all·the·following·requests.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">set_options</span><span·class="p"·data-group-id="1129716994-1">(</span><span·class="p"·data-group-id="1129716994-2">[</span><span·class="p"·data-group-id="1129716994-3">{</span><span·class="ss">proxy</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1129716994-4">{</spa[·...·truncated·by·diffoscope;·len:·230,·SHA:·4eda77f0da52c6065301ad2ca54c91e0731840506afd024d86105b59bd2a41c9·...·]-5">}</span><span·class="p">,</span><span·class="w">150 applies·to·all·the·following·requests.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">set_options</span><span·class="p"·data-group-id="9630866176-1">(</span><span·class="p"·data-group-id="9630866176-2">[</span><span·class="p"·data-group-id="9630866176-3">{</span><span·class="ss">proxy</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9630866176-4">{</spa[·...·truncated·by·diffoscope;·len:·230,·SHA:·188d44b770db8eeb718225b19202560d8eb187c0631321d9ca99d7d6742d12d2·...·]-5">}</span><span·class="p">,</span><span·class="w">
151 </span><span·class="p"·data-group-id="1129716994-6">[</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="1129716994-6">]</span><span·class="p"·data-group-id="1129716994-4">}</span><span·class="p"·data-group-id="1129716994-3">}</span><span·class="p"·data-group-id="1129716994-2">]</span><span·class="p"·data-group-id="1129716994-1">)</span><span·class="p">.</span><span·class="w"> 
152 </span><span·class="ss">ok</span></code></pre><p>The·following·is·an·ordinary·synchronous·request:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="p"·data-group-id="1381919738-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1381919738-2">{</span><span·class="p"·data-group-id="1381919738-3">{</span><span·class="n">Version</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReasonPhrase</span><span·class="p"·data-group-id="1381919738-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Body</span><span·class="p"·data-group-id="1381919738-2">}</span><span·class="p"·data-group-id="1381919738-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w"> 
153 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="1381919738-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1381919738-5">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1381919738-6">[</span><span·class="p"·data-group-id="1381919738-6">]</span><span·class="p"·data-group-id="1381919738-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1381919738-7">[</span><span·class="p"·data-group-id="1381919738-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1381919738-8">[</span><span·class="p"·data-group-id="1381919738-8">]</span><span·class="p"·data-group-id="1381919738-4">)</span><span·class="p">.</span></code></pre><p>With·all·the·default·values·presented,·a·get·request·can·also·be·written·as 
154 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="p"·data-group-id="3551435736-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3551435736-2">{</span><span·class="p"·data-group-id="3551435736-3">{</span><span·class="n">Version</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReasonPhrase</span><span·class="p"·data-group-id="3551435736-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Body</span><span·class="p"·data-group-id="3551435736-2">}</span><span·class="p"·data-group-id="3551435736-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w"> 
155 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="3551435736-4">(</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·[·...·truncated·by·diffoscope;·len:·1023,·SHA:·fb4e39edcc4cb70262ce5b164ce946cea28077b6953d5b18b83c2eb70d447b37·...·]</span><span·class="w">151 </span><span·class="p"·data-group-id="9630866176-6">[</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="9630866176-6">]</span><span·class="p"·data-group-id="9630866176-4">}</span><span·class="p"·data-group-id="9630866176-3">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·108,·SHA:·552369130d5cb605dcf2595c7889ce8f04b1ff52e177ffe7f3132f4ccd76f101·...·]</span><span·class="w">
 152 </span><span·class="ss">ok</span></code></pre><p>The·following·is·an·ordinary·synchronous·request:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="p"·data-group-id="0880198710-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0880198710-2">{</span><span·class="p"·data-group-id="0880198710-3">{</span><span·class="n">Version</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReasonPhrase</span><span·class="p"·data-group-id="0880198710-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Body</span><span·class="p"·data-group-id="0880198710-2">}</span><span·class="p"·data-group-id="0880198710-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
 153 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="0880198710-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0880198710-5">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0880198710-6">[</span><span·class="p"·data-group-id="0880198710-6">]</span><span·class="p"·data-group-id="0880198710-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0880198710-7">[</span><span·class="p"·data-group-id="0880198710-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0880198710-8">[</span><span·class="p"·data-group-id="0880198710-8">]</span><span·class="p"·data-group-id="0880198710-4">)</span><span·class="p">.</span></code></pre><p>With·all·the·default·values·presented,·a·get·request·can·also·be·written·as
 154 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="p"·data-group-id="0189541844-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0189541844-2">{</span><span·class="p"·data-group-id="0189541844-3">{</span><span·class="n">Version</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReasonPhrase</span><span·class="p"·data-group-id="0189541844-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Body</span><span·class="p"·data-group-id="0189541844-2">}</span><span·class="p"·data-group-id="0189541844-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
 155 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="0189541844-4">(</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p"·data-group-id="0189541844-4">)</span><span·class="p">.</span></code></pre><p>The·following·is·a·https·request·and·with·verification·of·the·host:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="p"·data-group-id="3559972055-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3559972055-2">{</span><span·class="p"·data-group-id="3559972055-3">{</span><span·class="n">Version</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReasonPhrase</span><span·class="p"·data-group-id="3559972055-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Body</span><span·class="p"·data-group-id="3559972055-2">}</span><span·class="p"·data-group-id="3559972055-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
156 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="7135576544-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7135576544-5">{</span><span·class="s">&quot;https://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·1321,·SHA:·d9a9a987d59ffc02bf9a5a299c5f0034bb777854db947d0b442a01c25628baca·...·]-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">156 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="3559972055-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3559972055-5">{</span><span·class="s">&quot;https://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·1321,·SHA:·7a878f60e469f766d9cd83bd77fd2fee0af5dde1d920e23e00ceabadcff923b0·...·]-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
157 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="4752412012-2">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4752412012-3">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·717,·SHA:·141f352bcec94393ef39890ccf74b55c0ffd569ae383c86db8ef918957447ed5·...·]-2">)</span><span·class="p">.</span></code></pre><p>The·result·is·sent·to·the·calling·process·as·<code·class="inline">{http,·{ReqestId,·Result}}</code>.</p><p>In·this·case,·the·calling·process·is·the·shell,·so·the·following·result·is157 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="2975978994-2">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2975978994-3">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·717,·SHA:·23f015b975096ba76d77f3418e1e0ad50bbfb3eaba6bfc9df3e85a4c45edfdf9·...·]-2">)</span><span·class="p">.</span></code></pre><p>The·result·is·sent·to·the·calling·process·as·<code·class="inline">{http,·{ReqestId,·Result}}</code>.</p><p>In·this·case,·the·calling·process·is·the·shell,·so·the·following·result·is
158 received:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="2447168123-1">{</span><span·class="ss">http</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2447168123-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·066db020839bc62e8f475a9cb3a5cd31adc65275c332527bc9ca10f67f758df7·...·]-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">500</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">158 received:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="9373483358-1">{</span><span·class="ss">http</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9373483358-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·86a3084d7797175230667acec81159e63ed5e6b1b68fdaed81ad7aa357aed7f7·...·]-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">500</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
159 </span><span·class="ss">ok</span></code></pre><p>This·sends·a·request·with·a·specified·connection·header:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="p"·data-group-id="6765240114-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6765240114-2">{</span><span·class="p"·data-group-id="6765240114-3">{</span><span·class="n">NewVersion</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewReasonPhrase</span><span·class="p"·data-group-id="6765240114-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewHeaders</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewBody</span><span·class="p"·data-group-id="6765240114-2">}</span><span·class="p"·data-group-id="6765240114-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w"> 
160 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="6765240114-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6765240114-5">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6765240114-6">[</span><span·class="p"·data-group-id="6765240114-7">{</span><span·class="s">&quot;connection&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;close&quot;</span><span·class="p"·data-group-id="6765240114-7">}</span><span·class="p"·data-group-id="6765240114-6">]</span><span·class="p"·data-group-id="6765240114-5">}</span><span·class="p">,</span><span·class="w"> 
161 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="6765240114-8">[</span><span·class="p"·data-group-id="6765240114-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6765240114-9[·...·truncated·by·diffoscope;·len:·1167,·SHA:·f28450104aa091885abb67b0802dc5954b32dc630af5f5b4bf98fe38df60468b·...·]">159 </span><span·class="ss">ok</span></code></pre><p>This·sends·a·request·with·a·specified·connection·header:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="p"·data-group-id="8800234552-1">{</span><span·class="ss">ok</sp[·...·truncated·by·diffoscope;·len:·731,·SHA:·89f6b56da9a27ce9382df1c4af0c674a4946a1fb9edb574c623e7e5fc770d4ba·...·]">
 160 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="8800234552-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8800234552-5">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8800234552-6">[</span><span·class="p"·data-group-id="8800234552-7">{</span><span·class="s">&quot;connection&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;close&quot;</span><span·class="p"·data-group-id="8800234552-7">}</span><span·class="p"·data-group-id="8800234552-6">]</span><span·class="p"·data-group-id="8800234552-5">}</span><span·class="p">,</span><span·class="w">
 161 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="8800234552-8">[</span><span·class="p"·data-group-id="8800234552-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8800234552-9">[</span><span·class="p"·data-group-id="8800234552-9">]</span><span·class="p"·data-group-id="8800234552-4">)</span><span·class="p">.</span></code></pre><p>This·sends·an·HTTP·request·over·a·unix·domain·socket·(experimental):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">set_options</span><span·class="p"·data-group-id="7564074266-1">(</span><span·class="p"·data-group-id="7564074266-2">[</span><span·class="p"·data-group-id="7564074266-3">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">local</span><span·class="p"·data-group-id="7564074266-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7564074266-4">{</span><span·class="ss">unix_socket</span><span·class="p">,</span><span·class="s">&quot;/tmp/unix_socket/consul_http.sock&quot;</span><span·class="p"·data-group-id="7564074266-4">}</span><span·class="p"·data-group-id="7564074266-2">]</span><span·class="p"·data-group-id="7564074266-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
162 10&gt;·</span><span·class="p"·data-group-id="8992243477-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8992243477-6">{</span><span·class="p"·data-group-id="8992243477-7">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·29d70d4b9136b4323cef1a8c736abff14d181b267970f6547abee9a18188b04f·...·]-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">162 10&gt;·</span><span·class="p"·data-group-id="7564074266-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7564074266-6">{</span><span·class="p"·data-group-id="7564074266-7">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·b1b9900f95a48bba4dd838f1eb124252f1e8443988b38c42215112341366707a·...·]-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
163 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="8992243477-8">(</span><span·class="nb">put</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8992243477-9">{</span><span·class="s">&quot;http:///v1/kv/foo&quot;</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·1778,·SHA:·0471b44996b0f87c564e3541a0a7db7cadfefb3f6d0ef65665c92022b7e29fc4·...·]-2">)</span><span·class="p">.</span><span·class="w">163 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="7564074266-8">(</span><span·class="nb">put</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7564074266-9">{</span><span·class="s">&quot;http:///v1/kv/foo&quot;</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·1778,·SHA:·6591b73dc4391a496c460ae4b26c813dd3f3ffd3e10fd0ae1c87c1d159c40629·...·]-2">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="9995234989-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.45</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·513,·SHA:·25dab845e35041512f572c5a73681c4d626497de351cdae43db14d5568645afb·...·]-1">)</span><span·class="p">.</span><span·class="w">164 </span><span·class="p"·data-group-id="7547199793-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.45</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·513,·SHA:·db307488445e1a58c45ff489a53ae33226b18b00e997ba94c8b170b3e0b6a03a·...·]-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="2431689985-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">econnrefused</span><span·class="p"·data-group-id="2431689985-2">}</span></code></pre><p>Stop·the·HTTP·client·profile:</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·352,·SHA:·4193aa6b76972c5e5442d0e902df22ab72e2a7aa5716c998c63f0d9fdbac7c30·...·]-1">)</span><span·class="p">.</span><span·class="w">165 </span><span·class="p"·data-group-id="0164618537-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">econnrefused</span><span·class="p"·data-group-id="0164618537-2">}</span></code></pre><p>Stop·the·HTTP·client·profile:</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·352,·SHA:·c583aa2f05d2d8d71378b6076882309a3f13f7fd0f4ca35ba7beefa1991187ed·...·]-1">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="ss">ok</span></code></pre><p>Alternative·way·to·stop·the·HTTP·client·profile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">13&gt;·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="3988176413-1">(</span><span·class="ss">httpc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="3988176413-1">)</span><span·class="p">.</span><span·class="w">166 </span><span·class="ss">ok</span></code></pre><p>Alternative·way·to·stop·the·HTTP·client·profile:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">13&gt;·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="5307985820-1">(</span><span·class="ss">httpc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="5307985820-1">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="ss">ok</span></code></pre>167 </span><span·class="ss">ok</span></code></pre>
168 </div>168 </div>
  
169 <div·class="bottom-actions"·id="bottom-actions">169 <div·class="bottom-actions"·id="bottom-actions">
170 ··<div·class="bottom-actions-item">170 ··<div·class="bottom-actions-item">
  
171 ······<a·href="inets_services.html"·class="bottom-actions-button"·rel="prev">171 ······<a·href="inets_services.html"·class="bottom-actions-button"·rel="prev">
53.3 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.1/doc/html/http_server.html
    
Offset 137, 54 lines modifiedOffset 137, 54 lines modified
137 underlying·mechanisms·also·do·so.</p><p>The·server·implements·numerous·features,·such·as:</p><ul><li>Secure·Sockets·Layer·(SSL)</li><li>Erlang·Scripting·Interface·(ESI)</li><li>Common·Gateway·Interface·(CGI)</li><li>User·Authentication·(using·Mnesia,·Dets·or·plain·text·database)</li><li>Common·Logfile·Format·(with·or·without·disk_log(3)·support)</li><li>URL·Aliasing</li><li>Action·Mappings</li><li>Directory·Listings</li></ul><p>The·configuration·of·the·server·is·provided·as·an·Erlang·property·list.</p><p>As·of·<code·class="inline">Inets</code>·5.0·the·HTTP·server·is·an·easy·to·start/stop·and·customize·web137 underlying·mechanisms·also·do·so.</p><p>The·server·implements·numerous·features,·such·as:</p><ul><li>Secure·Sockets·Layer·(SSL)</li><li>Erlang·Scripting·Interface·(ESI)</li><li>Common·Gateway·Interface·(CGI)</li><li>User·Authentication·(using·Mnesia,·Dets·or·plain·text·database)</li><li>Common·Logfile·Format·(with·or·without·disk_log(3)·support)</li><li>URL·Aliasing</li><li>Action·Mappings</li><li>Directory·Listings</li></ul><p>The·configuration·of·the·server·is·provided·as·an·Erlang·property·list.</p><p>As·of·<code·class="inline">Inets</code>·5.0·the·HTTP·server·is·an·easy·to·start/stop·and·customize·web
138 server·providing·the·most·basic·web·server·functionality.·Inets·is·designed·for138 server·providing·the·most·basic·web·server·functionality.·Inets·is·designed·for
139 embedded·systems·and·if·you·want·a·full-fledged·web·server·there·are·other139 embedded·systems·and·if·you·want·a·full-fledged·web·server·there·are·other
140 erlang·open·source·alternatives.</p><p>Almost·all·server·functionality·has·been·implemented·using·an·especially·crafted140 erlang·open·source·alternatives.</p><p>Almost·all·server·functionality·has·been·implemented·using·an·especially·crafted
141 server·API,·which·is·described·in·the·Erlang·Web·Server·API.·This·API·can·be141 server·API,·which·is·described·in·the·Erlang·Web·Server·API.·This·API·can·be
142 used·to·enhance·the·core·server·functionality,·for·example·with·custom·logging142 used·to·enhance·the·core·server·functionality,·for·example·with·custom·logging
143 and·authentication.</p><p>The·following·is·to·be·put·in·the·Erlang·node·application·configuration·file·to143 and·authentication.</p><p>The·following·is·to·be·put·in·the·Erlang·node·application·configuration·file·to
144 start·an·HTTP·server·at·application·startup:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7004738792-1">[</span><span·class="p"·data-group-id="7004738792-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7004738792-3">[</span><span·class="p"·data-group-id="7004738792-4">{</spa[·...·truncated·by·diffoscope;·len:·359,·SHA:·43619d0318423ab32bae0e0f85920f699dc0b9d05991d2436dc1ce01284cbe46·...·]-8">{</span><span·class="ss">proplist_file</span><span·class="p">,</span><span·class="w">144 start·an·HTTP·server·at·application·startup:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5696779814-1">[</span><span·class="p"·data-group-id="5696779814-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5696779814-3">[</span><span·class="p"·data-group-id="5696779814-4">{</spa[·...·truncated·by·diffoscope;·len:·359,·SHA:·0f28e0ffa51e4170476d234fc0a8a744b2b145816cb019ff1b063cb274afd816·...·]-8">{</span><span·class="ss">proplist_file</span><span·class="p">,</span><span·class="w">
145 ···········</span><span·class="s">&quot;/var/tmp/server_root/conf/8888_props.conf&quot;</span><span·class="p"·data-group-id="7004738792-8">}</span><span·class="p"·data-group-id="7004738792-7">]</span><span·class="p"·data-group-id="7004738792-6">}</span><span·class="p">,</span><span·class="w">145 ···········</span><span·class="s">&quot;/var/tmp/server_root/conf/8888_props.conf&quot;</span><span·class="p"·data-group-id="5696779814-8">}</span><span·class="p"·data-group-id="5696779814-7">]</span><span·class="p"·data-group-id="5696779814-6">}</span><span·class="p">,</span><span·class="w">
146 ··········</span><span·class="p"·data-group-id="7004738792-9">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7004738792-10">[</span><span·class="p"·data-group-id="7004738792-11">{</span><span·class="ss">proplist_file</span><span·class="p">,</span><span·class="w">146 ··········</span><span·class="p"·data-group-id="5696779814-9">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5696779814-10">[</span><span·class="p"·data-group-id="5696779814-11">{</span><span·class="ss">proplist_file</span><span·class="p">,</span><span·class="w">
147 ···········</span><span·class="s">&quot;/var/tmp/server_root/conf/8080_props.conf&quot;</span><span·class="p"·data-group-id="7004738792-11">}</span><span·class="p"·data-group-id="7004738792-10">]</span><span·class="p"·data-group-id="7004738792-9">}</span><span·class="p"·data-group-id="7004738792-5">]</span><span·class="p"·data-group-id="7004738792-4">}</span><span·class="p"·data-group-id="7004738792-3">]</span><span·class="p"·data-group-id="7004738792-2">}</span><span·class="p"·data-group-id="7004738792-1">]</span><span·class="p">.</span></code></pre><p>The·server·is·configured·using·an·Erlang·property·list.·For·the·available 
148 properties,·see·<a·href="httpd.html"><code·class="inline">httpd</code></a>.</p><p>The·available·configuration·properties·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">httpd_service</span><span·class="p"·data-group-id="7432051615-1">(</span><span·class="p"·data-group-id="7432051615-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7432051615-2">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">httpd</span><span·class="p"·data-group-id="7432051615-3">(</span><span·class="p"·data-group-id="7432051615-3">)</span><span·class="p"·data-group-id="7432051615-2">}</span><span·class="w"> 
149 </span><span·class="nf">httpd</span><span·class="p"·data-group-id="7432051615-4">(</span><span·class="p"·data-group-id="7432051615-4">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7432051615-5">[</span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="7432051615-6">(</span><span·class="p"·data-group-id="7432051615-6">)</span><span·class="p"·data-group-id="7432051615-5">]</span><span·class="w"> 
150 </span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="7432051615-7">(</span><span·class="p"·data-group-id="7432051615-7">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·311,·SHA:·0521f9872687d9512181017fedfa5ae3c0425b13b45de509cba61916ddc067bd·...·]147 ···········</span><span·class="s">&quot;/var/tmp/server_root/conf/8080_props.conf&quot;</span><span·class="p"·data-group-id="5696779814-11">}</span><span·class="p"·data-group-id="5696779814-10">]</span><span·class="p"·data-group-id="5696779814-9">}</span><[·...·truncated·by·diffoscope;·len:·377,·SHA:·64838b6e224cc4bbc14686f9070ae75ca62e9c7af2ca67898558d46cc2c6f96d·...·]
 148 properties,·see·<a·href="httpd.html"><code·class="inline">httpd</code></a>.</p><p>The·available·configuration·properties·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">httpd_service</span><span·class="p"·data-group-id="7034294271-1">(</span><span·class="p"·data-group-id="7034294271-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7034294271-2">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">httpd</span><span·class="p"·data-group-id="7034294271-3">(</span><span·class="p"·data-group-id="7034294271-3">)</span><span·class="p"·data-group-id="7034294271-2">}</span><span·class="w">
 149 </span><span·class="nf">httpd</span><span·class="p"·data-group-id="7034294271-4">(</span><span·class="p"·data-group-id="7034294271-4">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7034294271-5">[</span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="7034294271-6">(</span><span·class="p"·data-group-id="7034294271-6">)</span><span·class="p"·data-group-id="7034294271-5">]</span><span·class="w">
 150 </span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="7034294271-7">(</span><span·class="p"·data-group-id="7034294271-7">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7034294271-8">{</span><span·class="ss">proplist_file</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">file</span><span·class="p"·data-group-id="7034294271-9">(</span><span·class="p"·data-group-id="7034294271-9">)</span><span·class="p"·data-group-id="7034294271-8">}</span><span·class="w">
151 ···················</span><span·class="p"·data-group-id="7432051615-10">{</span><span·class="ss">debug</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">debug</span><span·class="p"·data-group-id="7432051615-11">(</span><span·class="p"·data-group-id="7432051615-11">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·cbda8ce58d6efa7a3472aa8ccbc10a330416da767b07afa1bafaf9ac9666f379·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">151 ···················</span><span·class="p"·data-group-id="7034294271-10">{</span><span·class="ss">debug</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">debug</span><span·class="p"·data-group-id="7034294271-11">(</span><span·class="p"·data-group-id="7034294271-11">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·ca38b8cf828df525b18c4c9647ae071a51d515dfb32f5ba7f94bdf0795107b74·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
152 ···················</span><span·class="p"·data-group-id="7432051615-12">{</span><span·class="ss">accept_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="7432051615-13">(</span><span·class="p"·data-group-id="7432051615-13">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·b9b4b5c3ad2aeface8327bcb1c3ed372659357b5f7c29ac72bca4db0efa29e51·...·]-12">}</span><span·class="w">152 ···················</span><span·class="p"·data-group-id="7034294271-12">{</span><span·class="ss">accept_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="7034294271-13">(</span><span·class="p"·data-group-id="7034294271-13">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·103fb4805b7d7b00ce877b0e13569408178b08bb9cb1d93f576f9b6e3dd6261f·...·]-12">}</span><span·class="w">
153 </span><span·class="nf">debug</span><span·class="p"·data-group-id="7432051615-14">(</span><span·class="p"·data-group-id="7432051615-14">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">disable</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="7432051615-15">[</span><span·class="nf">debug_options</span><span·class="p"·data-group-id="7432051615-16">(</span><span·class="p"·data-group-id="7432051615-16">)</span><span·class="p"·data-group-id="7432051615-15">]</span><span·class="w"> 
154 </span><span·class="nf">debug_options</span><span·class="p"·data-group-id="7432051615-17">(</span><span·class="p"·data-group-id="7432051615-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7432051615-18">{</span><sp[·...·truncated·by·diffoscope;·len:·316,·SHA:·06197c7d94e960869e90949dfc7118f99d92aabe8871fdeb4686ca30523e4fa9·...·]</span><span·class="w">153 </span><span·class="nf">debug</span><span·class="p"·data-group-id="7034294271-14">(</span><span·class="p"·data-group-id="7034294271-14">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">disable</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·292,·SHA:·8beb53c95b3f47d403c797d36dcdfb55b4f4786778c5f5080cc13734af09bdc4·...·]</span><span·class="w">
 154 </span><span·class="nf">debug_options</span><span·class="p"·data-group-id="7034294271-17">(</span><span·class="p"·data-group-id="7034294271-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7034294271-18">{</span><span·class="ss">all_functions</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="7034294271-19">(</span><span·class="p"·data-group-id="7034294271-19">)</span><span·class="p"·data-group-id="7034294271-18">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
155 ···················</span><span·class="p"·data-group-id="7432051615-20">{</span><span·class="ss">exported_functions</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="7432051615-21">(</span><span·class="p"·data-group-id="7432051615-21">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·d2a5cb942444b5a2458963e80748b40ea016d5e8841cc5fa756226a57e2e8366·...·]-20">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">155 ···················</span><span·class="p"·data-group-id="7034294271-20">{</span><span·class="ss">exported_functions</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="7034294271-21">(</span><span·class="p"·data-group-id="7034294271-21">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·343aeca4abadf9392d72a880440d304ea80ca09499ed9ef8cf3d32e1174df8de·...·]-20">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
156 ···················</span><span·class="p"·data-group-id="7432051615-22">{</span><span·class="ss">disable</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="7432051615-23">(</span><span·class="p"·data-group-id="7432051615-23">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·ee0ab05498ed49756eea4822b50c7d840d16707eb3da6f537cdb865874fdeb3b·...·]-22">}</span><span·class="w">156 ···················</span><span·class="p"·data-group-id="7034294271-22">{</span><span·class="ss">disable</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="7034294271-23">(</span><span·class="p"·data-group-id="7034294271-23">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·ddf7277da20e96db1318012d4fa0e7ea019d1127ed6d5219a7642310b3eb4860·...·]-22">}</span><span·class="w">
157 </span><span·class="nf">modules</span><span·class="p"·data-group-id="7432051615-24">(</span><span·class="p"·data-group-id="7432051615-24">)</span><span·class="w">·······</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7432051615-25">[</span><span·class="nf">atom</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·133,·SHA:·8ce6fe9fd32bd7d116fac2ad83672d5e9ce29e0ce492594ce2a89d540c385fd2·...·]-25">]</span></code></pre><p>Here:</p><ul><li><p><strong><code·class="inline">{proplist_file,·file()}</code></strong>·-·File·containing·an·Erlang·property·list,157 </span><span·class="nf">modules</span><span·class="p"·data-group-id="7034294271-24">(</span><span·class="p"·data-group-id="7034294271-24">)</span><span·class="w">·······</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7034294271-25">[</span><span·class="nf">atom</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·133,·SHA:·a5edb45739175b569b57a0b553ec4c9bc04a715aee2a78350bf8587295c2ae66·...·]-25">]</span></code></pre><p>Here:</p><ul><li><p><strong><code·class="inline">{proplist_file,·file()}</code></strong>·-·File·containing·an·Erlang·property·list,
158 followed·by·a·full·stop,·describing·the·HTTP·server·configuration.</p></li><li><p><strong><code·class="inline">{debug,·debug()}</code></strong>·-·Can·enable·trace·on·all·functions·or·only·exported158 followed·by·a·full·stop,·describing·the·HTTP·server·configuration.</p></li><li><p><strong><code·class="inline">{debug,·debug()}</code></strong>·-·Can·enable·trace·on·all·functions·or·only·exported
159 functions·on·chosen·modules.</p></li><li><p><strong><code·class="inline">{accept_timeout,·integer()}</code></strong>·-·Sets·the·wanted·time-out·value·for·the159 functions·on·chosen·modules.</p></li><li><p><strong><code·class="inline">{accept_timeout,·integer()}</code></strong>·-·Sets·the·wanted·time-out·value·for·the
160 server·to·set·up·a·request·connection.</p></li></ul><h2·id="getting-started"·class="section-heading">160 server·to·set·up·a·request·connection.</p></li></ul><h2·id="getting-started"·class="section-heading">
161 ··<a·href="#getting-started"·class="hover-link">161 ··<a·href="#getting-started"·class="hover-link">
162 ····<i·class="ri-link-m"·aria-hidden="true"></i>162 ····<i·class="ri-link-m"·aria-hidden="true"></i>
163 ··</a>163 ··</a>
164 ··<span·class="text">Getting·Started</span>164 ··<span·class="text">Getting·Started</span>
165 </h2>165 </h2>
166 <p><a·href=""·id="using_http_server_api"></a></p><p>Start·<code·class="inline">Inets</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3293986023-1">(</span><span·class="p"·data-group-id="3293986023-1">)</span><span·class="p">.</span><span·class="w">166 <p><a·href=""·id="using_http_server_api"></a></p><p>Start·<code·class="inline">Inets</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2298079681-1">(</span><span·class="p"·data-group-id="2298079681-1">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="ss">ok</span></code></pre><p>Start·an·HTTP·server·with·minimal·required·configuration.·If·you·specify·port167 </span><span·class="ss">ok</span></code></pre><p>Start·an·HTTP·server·with·minimal·required·configuration.·If·you·specify·port
168 <code·class="inline">0</code>,·an·arbitrary·available·port·is·used,·and·you·can·use·function·<code·class="inline">info</code>·to168 <code·class="inline">0</code>,·an·arbitrary·available·port·is·used,·and·you·can·use·function·<code·class="inline">info</code>·to
169 find·which·port·number·that·was·picked:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="p"·data-group-id="5615933174-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="5615933174-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·703,·SHA:·8f3e898a337e27ac2f243a33609c3e7108c7afce8a5f75c16978a4c58428e467·...·]-5">}</span><span·class="p">,</span><span·class="w">169 find·which·port·number·that·was·picked:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="p"·data-group-id="9216007502-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="9216007502-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·703,·SHA:·36763b25000f6fa8ecdfe1e8c33cfacbbcdf3da1c40c0f8e5073589fbe2dd89a·...·]-5">}</span><span·class="p">,</span><span·class="w">
170 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="5615933174-6">{</span><span·class="ss">document_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/htdocs&quot;</span><span·class="p"·data-group-id="5615933174-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·302,·SHA:·369caad4c788405f65bd06bdfc482ce73799ea0272557add53ed5ca9e62d0afa·...·]-2">)</span><span·class="p">.</span><span·class="w">170 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="9216007502-6">{</span><span·class="ss">document_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/htdocs&quot;</span><span·class="p"·data-group-id="9216007502-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·302,·SHA:·d0f0a54dea52cd7208d61d9051d3f912f7e04c1e9425218cc6829fe4993ab44d·...·]-2">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="5615933174-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="mf">0.79</span><span·class="p">.</span><span·class="mi">0</span><span·class="p"·data-group-id="5615933174-8">}</span></code></pre><p>Call·<code·cla[·...·truncated·by·diffoscope;·len:·320,·SHA:·fc344b4db3d6028d1fa1169e0fc84e3f138453464a30fe9cdff844b8e256347c·...·]-1">)</span><span·class="p">.</span><span·class="w">171 </span><span·class="p"·data-group-id="9216007502-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="mf">0.79</span><span·class="p">.</span><span·class="mi">0</span><span·class="p"·data-group-id="9216007502-8">}</span></code></pre><p>Call·<code·cla[·...·truncated·by·diffoscope;·len:·320,·SHA:·43750021b007c84cca66b4d59ac7764b17d2a689986d3e4dd3ce7ab145195d03·...·]-1">)</span><span·class="p">.</span><span·class="w">
172 </span><span·class="p"·data-group-id="2066337767-2">[</span><span·class="p"·data-group-id="2066337767-3">{</span><span·class="ss">mime_types</span><span·class="p">,</span><span·class="p"·data-group-id="2066337767-4">[</span><span·class="p"·data-group-id="2066337767-5">{</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·473,·SHA:·1cf8c251f93f3ec04544566dcd9b4daf2c90500811b7fe2f23b22c0e4d724a7d·...·]-3">}</span><span·class="p">,</span><span·class="w">172 </span><span·class="p"·data-group-id="8520214149-2">[</span><span·class="p"·data-group-id="8520214149-3">{</span><span·class="ss">mime_types</span><span·class="p">,</span><span·class="p"·data-group-id="8520214149-4">[</span><span·class="p"·data-group-id="8520214149-5">{</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·473,·SHA:·c646b4070a76cefa4957a56f2ff75fccd704a07c610afa49e1bcc417136bf508·...·]-3">}</span><span·class="p">,</span><span·class="w">
173 ·</span><span·class="p"·data-group-id="2066337767-7">{</span><span·class="ss">server_name</span><span·class="p">,</span><span·class="s">&quot;machine.local&quot;</span><span·class="p"·data-group-id="2066337767-7">}</span><span·class="p">,</span><span·class="w">173 ·</span><span·class="p"·data-group-id="8520214149-7">{</span><span·class="ss">server_name</span><span·class="p">,</span><span·class="s">&quot;machine.local&quot;</span><span·class="p"·data-group-id="8520214149-7">}</span><span·class="p">,</span><span·class="w">
174 ·</span><span·class="p"·data-group-id="2066337767-8">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2066337767-9">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·171,·SHA:·3f60afffe654fece775f72fa99dad19365702b96aeff0d0b618059fd7c7d45a1·...·]-8">}</span><span·class="p">,</span><span·class="w">174 ·</span><span·class="p"·data-group-id="8520214149-8">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8520214149-9">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·171,·SHA:·966b7eae625f70f07ad13ac5d4cf47ddfa4c12c3c6432f57c2e96083cc286a0a·...·]-8">}</span><span·class="p">,</span><span·class="w">
175 ·</span><span·class="p"·data-group-id="2066337767-10">{</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="s">&quot;/tmp&quot;</span><span·class="p"·data-group-id="2066337767-10">}</span><span·class="p">,</span><span·class="w">175 ·</span><span·class="p"·data-group-id="8520214149-10">{</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="s">&quot;/tmp&quot;</span><span·class="p"·data-group-id="8520214149-10">}</span><span·class="p">,</span><span·class="w">
176 ·</span><span·class="p"·data-group-id="2066337767-11">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="mi">59408</span><span·class="p"·data-group-id="2066337767-11">}</span><span·class="p">,</span><span·class="w">176 ·</span><span·class="p"·data-group-id="8520214149-11">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="mi">59408</span><span·class="p"·data-group-id="8520214149-11">}</span><span·class="p">,</span><span·class="w">
177 ·</span><span·class="p"·data-group-id="2066337767-12">{</span><span·class="ss">document_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/htdocs&quot;</span><span·class="p"·data-group-id="2066337767-12">}</span><span·class="p">,</span><span·class="w">177 ·</span><span·class="p"·data-group-id="8520214149-12">{</span><span·class="ss">document_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/htdocs&quot;</span><span·class="p"·data-group-id="8520214149-12">}</span><span·class="p">,</span><span·class="w">
178 ·</span><span·class="p"·data-group-id="2066337767-13">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="ss">inet</span><span·class="p"·data-group-id="2066337767-13">}</span><span·class="p"·data-group-id="2066337767-2">]</span></code></pre><p>Reload·the·configuration·w[·...·truncated·by·diffoscope;·len:·519,·SHA:·69a745e0bae70938fe23768cc3377e11d800a8554079173b6b8c610d10697e23·...·]-3">}</span><span·class="p">,</span><span·class="w">178 ·</span><span·class="p"·data-group-id="8520214149-13">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="ss">inet</span><span·class="p"·data-group-id="8520214149-13">}</span><span·class="p"·data-group-id="8520214149-2">]</span></code></pre><p>Reload·the·configuration·w[·...·truncated·by·diffoscope;·len:·519,·SHA:·b3a559127f9ec26562fb7c5cbd73e3fdc6adf6a2775f1750d7a4099e54cf68cd·...·]-3">}</span><span·class="p">,</span><span·class="w">
179 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="1397382448-4">{</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/www_test&quot;</span><span·class="p"·data-group-id="1397382448-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·184,·SHA:·4b737672e84d9c10a2776eabab9b89cf10fcac303af7d75dcf7ccce85077c002·...·]-5">}</span><span·class="p">,</span><span·class="w">179 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="3745373757-4">{</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/www_test&quot;</span><span·class="p"·data-group-id="3745373757-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·184,·SHA:·8f58a9e2293a4bab52eb92400438cc47531a1c90444c1954f765d82988a6b912·...·]-5">}</span><span·class="p">,</span><span·class="w">
180 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="1397382448-6">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="1397382448-6">}</span><span·class="p"·data-group-id="1397382448-2">]</span>[·...·truncated·by·diffoscope;·len:·127,·SHA:·9f0df12d39f827b7f03f9ffe77db9a30f90a61d932db4fdb87ef2212bb76a619·...·]-1">)</span><span·class="p">.</span><span·class="w">180 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="3745373757-6">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="3745373757-6">}</span><span·class="p"·data-group-id="3745373757-2">]</span>[·...·truncated·by·diffoscope;·len:·127,·SHA:·931474c5a25e413dafbe79b0ce7ceec19da698c19572ae01597ed5105585436e·...·]-1">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="ss">ok</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p><code·class="inline">port</code>·and·<code·class="inline">bind_address</code>·cannot·be·changed.·Clients·trying·to·access·the181 </span><span·class="ss">ok</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p><code·class="inline">port</code>·and·<code·class="inline">bind_address</code>·cannot·be·changed.·Clients·trying·to·access·the
182 server·during·the·reload·get·a·service·temporary·unavailable·answer.</p></section><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">httpd</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="0669133306-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0669133306-2">[</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">document_root</span><span·class="p"·data-group-id="0669133306-2">]</span><span·class="p"·data-group-id="0669133306-1">)</span><span·class="p">.</span><span·class="w"> 
183 </span><span·class="p"·data-group-id="0669133306-3">[</span><span·class="p"·data-group-id="0669133306-4">{</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/www_test&quot;</span><span·class="p"·data-group-id="06691[·...·truncated·by·diffoscope;·len:·1948,·SHA:·cba2df26a30c564b5d24c077c198a2d57ffa8d7a29e117776a5668d72b883378·...·]>182 server·during·the·reload·get·a·service·temporary·unavailable·answer.</p></section><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">httpd</span><span·class="p">:</span><span·class="nf">info</span><s[·...·truncated·by·diffoscope;·len:·443,·SHA:·e53c60fa34c760ea7a4d7e2b2493d82a4385434aa992c5d59a2b7467fae67af7·...·]>
 183 </span><span·class="p"·data-group-id="1758976068-3">[</span><span·class="p"·data-group-id="1758976068-4">{</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/www_test&quot;</span><span·class="p"·data-group-id="1758976068-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="1758976068-5">{</span><span·class="ss">document_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/www_test/htdocs&quot;</span><span·class="p"·data-group-id="1758976068-5">}</span><span·class="p"·data-group-id="1758976068-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6719982344-1">(</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="6719982344-1">)</span><span·class="p">.</span></code></pre><p>Alternative:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6846307458-1">(</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6846307458-2">{</span><span·class="p"·data-group-id="6846307458-3">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6846307458-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">59408</span><span·class="p"·data-group-id="6846307458-2">}</span><span·class="p"·data-group-id="6846307458-1">)</span><span·class="p">.</span></code></pre><p>Notice·that·<code·class="inline">bind_address</code>·must·be·the·IP·address·reported·by·function·<code·class="inline">info</code>
184 and·cannot·be·the·hostname·that·is·allowed·when·putting·in·<code·class="inline">bind_address</code>.</p><h2·id="dynamic-web-pages"·class="section-heading">184 and·cannot·be·the·hostname·that·is·allowed·when·putting·in·<code·class="inline">bind_address</code>.</p><h2·id="dynamic-web-pages"·class="section-heading">
185 ··<a·href="#dynamic-web-pages"·class="hover-link">185 ··<a·href="#dynamic-web-pages"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">Dynamic·Web·Pages</span>188 ··<span·class="text">Dynamic·Web·Pages</span>
189 </h2>189 </h2>
190 <p><a·href=""·id="dynamic_we_pages"></a></p><p><code·class="inline">Inets</code>·HTTP·server·provides·two·ways·of·creating·dynamic·web·pages,·each·with190 <p><a·href=""·id="dynamic_we_pages"></a></p><p><code·class="inline">Inets</code>·HTTP·server·provides·two·ways·of·creating·dynamic·web·pages,·each·with
Offset 301, 36 lines modifiedOffset 301, 36 lines modified
301 files,·Dets·databases·as·well·as·Mnesia·databases.</p><p>Uses·the·following·Erlang·Web·Server·API·interaction·data:</p><ul><li><code·class="inline">real_name</code>·-·from·<a·href="mod_alias.html"><code·class="inline">mod_alias</code></a></li></ul><p>Exports·the·following·Erlang·Web·Server·API·interaction·data:</p><ul><li><strong><code·class="inline">{remote_user,·User}</code></strong>·-·The·username·used·for·authentication.</li></ul><h4>Mnesia·As·Authentication·Database</h4><p>If·Mnesia·is·used·as·storage·method,·Mnesia·must·be·started·before·the·HTTP301 files,·Dets·databases·as·well·as·Mnesia·databases.</p><p>Uses·the·following·Erlang·Web·Server·API·interaction·data:</p><ul><li><code·class="inline">real_name</code>·-·from·<a·href="mod_alias.html"><code·class="inline">mod_alias</code></a></li></ul><p>Exports·the·following·Erlang·Web·Server·API·interaction·data:</p><ul><li><strong><code·class="inline">{remote_user,·User}</code></strong>·-·The·username·used·for·authentication.</li></ul><h4>Mnesia·As·Authentication·Database</h4><p>If·Mnesia·is·used·as·storage·method,·Mnesia·must·be·started·before·the·HTTP
302 server.·The·first·time·Mnesia·is·started,·the·schema·and·the·tables·must·be302 server.·The·first·time·Mnesia·is·started,·the·schema·and·the·tables·must·be
303 created·before·Mnesia·is·started.·A·simple·example·of·a·module·with·two303 created·before·Mnesia·is·started.·A·simple·example·of·a·module·with·two
304 functions·that·creates·and·start·Mnesia·is·provided·here.·Function304 functions·that·creates·and·start·Mnesia·is·provided·here.·Function
305 <code·class="inline">first_start/0</code>·is·to·be·used·the·first·time.·It·creates·the·schema·and·the305 <code·class="inline">first_start/0</code>·is·to·be·used·the·first·time.·It·creates·the·schema·and·the
306 tables.·<code·class="inline">start/0</code>·is·to·be·used·in·consecutive·startups.·<code·class="inline">start/0</code>·starts·Mnesia306 tables.·<code·class="inline">start/0</code>·is·to·be·used·in·consecutive·startups.·<code·class="inline">start/0</code>·starts·Mnesia
307 and·waits·for·the·tables·to·be·initiated.·This·function·must·only·be·used·when307 and·waits·for·the·tables·to·be·initiated.·This·function·must·only·be·used·when
308 the·schema·and·the·tables·are·already·created.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4474117258-1">(</span><span·class="ss">mnesia_test</span><span·class="p"·data-group-id="4474117258-1">)</span><span·class="p">.</span><span·class="w"> 
309 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4474117258-2">(</span><span·class="p"·data-group-id="4474117258-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class[·...·truncated·by·diffoscope;·len:·191,·SHA:·970730714170a0807036d42d2d074a10aed47fd082867370437775ae4f60c56a·...·]">)</span><span·class="p">.</span><span·class="w">308 the·schema·and·the·tables·are·already·created.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2752885509-1">(</span><span·class="ss">mnesia_test</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·27,·SHA:·2b2a435426496255f7d8d2f443bc2a6c89e0065dd9e8e33a10429aa27082fca5·...·]">)</span><span·class="p">.</span><span·class="w">
 309 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2752885509-2">(</span><span·class="p"·data-group-id="2752885509-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">load_data</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2752885509-3">]</span><span·class="p"·data-group-id="2752885509-2">)</span><span·class="p">.</span><span·class="w">
310 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4474117258-4">(</span><span·class="s">&quot;mod_auth.hrl&quot;</span><span·class="p"·data-group-id="4474117258-4">)</span><span·class="p">.</span><span·class="w">310 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="2752885509-4">(</span><span·class="s">&quot;mod_auth.hrl&quot;</span><span·class="p"·data-group-id="2752885509-4">)</span><span·class="p">.</span><span·class="w">
  
311 </span><span·class="nf">first_start</span><span·class="p"·data-group-id="4474117258-5">(</span><span·class="p"·data-group-id="4474117258-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">311 </span><span·class="nf">first_start</span><span·class="p"·data-group-id="2752885509-5">(</span><span·class="p"·data-group-id="2752885509-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
312 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="4474117258-6">(</span><span·class="p"·data-group-id="4474117258-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="4474117258-8">(</span><span·class="p"·data-group-id="4474117258-8">)</span><span·class="p"·data-group-id="4474117258-7">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·b8daff227fb5b44a4bf603b8ed4880be7cc859372d65136ef57703d44eac4886·...·]-6">)</span><span·class="p">,</span><span·class="w">312 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="2752885509-6">(</span><span·class="p"·data-group-id="2752885509-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="2752885509-8">(</span><span·class="p"·data-group-id="2752885509-8">)</span><span·class="p"·data-group-id="2752885509-7">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·3a08c796ea49d5e7609df343a8947a1bd4c2398b1969141c7f1bab5394da3a70·...·]-6">)</span><span·class="p">,</span><span·class="w">
313 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4474117258-9">(</span><span·class="p"·data-group-id="4474117258-9">)</span><span·class="p">,</span><span·class="w">313 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2752885509-9">(</span><span·class="p"·data-group-id="2752885509-9">)</span><span·class="p">,</span><span·class="w">
314 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4474117258-10">(</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">314 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2752885509-10">(</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">
315 ························</span><span·class="p"·data-group-id="4474117258-11">[</span><span·class="p"·data-group-id="4474117258-12">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bag</span><span·class="p"·data-group-id="4474117258-12">}</span><span·class="p">,</span><span·class="w">315 ························</span><span·class="p"·data-group-id="2752885509-11">[</span><span·class="p"·data-group-id="2752885509-12">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bag</span><span·class="p"·data-group-id="2752885509-12">}</span><span·class="p">,</span><span·class="w">
316 ·························</span><span·class="p"·data-group-id="4474117258-13">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4474117258-14">[</span><span·class="nf">node</span><span·class="p"·data-group-id="4474117258-15">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·eba54f3d9750bee7a278c4cc05f6b29f4146a76f84a67ead3fad471369a417dd·...·]-13">}</span><span·class="p">,</span><span·class="w">316 ·························</span><span·class="p"·data-group-id="2752885509-13">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2752885509-14">[</span><span·class="nf">node</span><span·class="p"·data-group-id="2752885509-15">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·a35743de08198dd8a0dff239c32b386abd52ea003b5c468a7874069f59032418·...·]-13">}</span><span·class="p">,</span><span·class="w">
317 ·························</span><span·class="p"·data-group-id="4474117258-16">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4474117258-17">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">317 ·························</span><span·class="p"·data-group-id="2752885509-16">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2752885509-17">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">
318 ··················································</span><span·class="ss">httpd_user</span><span·class="p"·data-group-id="4474117258-17">)</span><span·class="p"·data-group-id="4474117258-16">}</span><span·class="p"·data-group-id="4474117258-11">]</span><span·class="p"·data-group-id="4474117258-10">)</span><span·class="p">,</span><span·class="w">318 ··················································</span><span·class="ss">httpd_user</span><span·class="p"·data-group-id="2752885509-17">)</span><span·class="p"·data-group-id="2752885509-16">}</span><span·class="p"·data-group-id="2752885509-11">]</span><span·class="p"·data-group-id="2752885509-10">)</span><span·class="p">,</span><span·class="w">
319 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4474117258-18">(</span><span·class="ss">httpd_group</span><span·class="p">,</span><span·class="w">319 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2752885509-18">(</span><span·class="ss">httpd_group</span><span·class="p">,</span><span·class="w">
320 ························</span><span·class="p"·data-group-id="4474117258-19">[</span><span·class="p"·data-group-id="4474117258-20">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bag</span><span·class="p"·data-group-id="4474117258-20">}</span><span·class="p">,</span><span·class="w">320 ························</span><span·class="p"·data-group-id="2752885509-19">[</span><span·class="p"·data-group-id="2752885509-20">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bag</span><span·class="p"·data-group-id="2752885509-20">}</span><span·class="p">,</span><span·class="w">
321 ·························</span><span·class="p"·data-group-id="4474117258-21">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4474117258-22">[</span><span·class="nf">node</span><span·class="p"·data-group-id="4474117258-23">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·1db31b94d7e9dc4200ec8f167d65d465c3254f22ce57bc979a9fe8ffce74b219·...·]-21">}</span><span·class="p">,</span><span·class="w">321 ·························</span><span·class="p"·data-group-id="2752885509-21">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2752885509-22">[</span><span·class="nf">node</span><span·class="p"·data-group-id="2752885509-23">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·4644e9657dc67769907fec9b0114c38771d37ad17043f1de8e454a1cffba3b82·...·]-21">}</span><span·class="p">,</span><span·class="w">
322 ·························</span><span·class="p"·data-group-id="4474117258-24">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4474117258-25">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">322 ·························</span><span·class="p"·data-group-id="2752885509-24">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2752885509-25">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">
323 ··················································</span><span·class="ss">httpd_group</span><span·class="p"·data-group-id="4474117258-25">)</span><span·class="p"·data-group-id="4474117258-24">}</span><span·class="p"·data-group-id="4474117258-19">]</span><span·class="p"·data-group-id="4474117258-18">)</span><span·class="p">,</span><span·class="w">323 ··················································</span><span·class="ss">httpd_group</span><span·class="p"·data-group-id="2752885509-25">)</span><span·class="p"·data-group-id="2752885509-24">}</span><span·class="p"·data-group-id="2752885509-19">]</span><span·class="p"·data-group-id="2752885509-18">)</span><span·class="p">,</span><span·class="w">
324 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">wait_for_tables</span><span·class="p"·data-group-id="4474117258-26">(</span><span·class="p"·data-group-id="4474117258-27">[</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd_group</span><span·class="p"·data-group-id="4474117258-27">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·af9a88578b52a3dc07decdc9347961da981d8e26deba92f9ce0bb34f345c5c01·...·]-26">)</span><span·class="p">.</span><span·class="w">324 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">wait_for_tables</span><span·class="p"·data-group-id="2752885509-26">(</span><span·class="p"·data-group-id="2752885509-27">[</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd_group</span><span·class="p"·data-group-id="2752885509-27">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·0d06c607ba054ffa1c9528d5c02535f2aee68961381924f8689e881ba3155cd6·...·]-26">)</span><span·class="p">.</span><span·class="w">
  
325 </span><span·class="nf">start</span><span·class="p"·data-group-id="4474117258-28">(</span><span·class="p"·data-group-id="4474117258-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">325 </span><span·class="nf">start</span><span·class="p"·data-group-id="2752885509-28">(</span><span·class="p"·data-group-id="2752885509-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
326 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4474117258-29">(</span><span·class="p"·data-group-id="4474117258-29">)</span><span·class="p">,</span><span·class="w">326 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2752885509-29">(</span><span·class="p"·data-group-id="2752885509-29">)</span><span·class="p">,</span><span·class="w">
327 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">wait_for_tables</span><span·class="p"·data-group-id="4474117258-30">(</span><span·class="p"·data-group-id="4474117258-31">[</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd_group</span><span·class="p"·data-group-id="4474117258-31">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·af9a88578b52a3dc07decdc9347961da981d8e26deba92f9ce0bb34f345c5c01·...·]-30">)</span><span·class="p">.</span></code></pre><p>To·create·the·Mnesia·tables,·we·use·two·records·defined·in·<code·class="inline">mod_auth.hrl</code>,·so327 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">wait_for_tables</span><span·class="p"·data-group-id="2752885509-30">(</span><span·class="p"·data-group-id="2752885509-31">[</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd_group</span><span·class="p"·data-group-id="2752885509-31">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·0d06c607ba054ffa1c9528d5c02535f2aee68961381924f8689e881ba3155cd6·...·]-30">)</span><span·class="p">.</span></code></pre><p>To·create·the·Mnesia·tables,·we·use·two·records·defined·in·<code·class="inline">mod_auth.hrl</code>,·so
328 that·file·must·be·included.·<code·class="inline">first_start/0</code>·creates·a·schema·that·specifies·on328 that·file·must·be·included.·<code·class="inline">first_start/0</code>·creates·a·schema·that·specifies·on
329 which·nodes·the·database·is·to·reside.·Then·it·starts·Mnesia·and·creates·the329 which·nodes·the·database·is·to·reside.·Then·it·starts·Mnesia·and·creates·the
330 tables.·The·first·argument·is·the·name·of·the·tables,·the·second·argument·is·a330 tables.·The·first·argument·is·the·name·of·the·tables,·the·second·argument·is·a
331 list·of·options·of·how·to·create·the·table,·see·<a·href="../../../../lib/mnesia-4.23.3/doc/html/mnesia.html"><code·class="inline">mnesia</code></a>,·documentation·for331 list·of·options·of·how·to·create·the·table,·see·<a·href="../../../../lib/mnesia-4.23.3/doc/html/mnesia.html"><code·class="inline">mnesia</code></a>,·documentation·for
332 more·information.·As·the·implementation·of·the·<code·class="inline">mod_auth_mnesia</code>·saves·one·row332 more·information.·As·the·implementation·of·the·<code·class="inline">mod_auth_mnesia</code>·saves·one·row
333 for·each·user,·the·type·must·be·<code·class="inline">bag</code>.·When·the·schema·and·the·tables·are333 for·each·user,·the·type·must·be·<code·class="inline">bag</code>.·When·the·schema·and·the·tables·are
334 created,·function·<a·href="../../../../lib/mnesia-4.23.3/doc/html/mnesia.html#start/0"><code·class="inline">mnesia:start/0</code></a>·is·used·to·start·Mnesia·and·waits·for·the334 created,·function·<a·href="../../../../lib/mnesia-4.23.3/doc/html/mnesia.html#start/0"><code·class="inline">mnesia:start/0</code></a>·is·used·to·start·Mnesia·and·waits·for·the
7.51 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.1/doc/html/httpc.html
    
Offset 1037, 21 lines modifiedOffset 1037, 21 lines modified
1037 options.</p></section><p>By·default·the·socket·options·set·by·function1037 options.</p></section><p>By·default·the·socket·options·set·by·function
1038 <a·href="#set_options/1">set_options/1,2</a>·are·used·when·establishing·a·connection.</p></li><li><p><strong><code·class="inline">receiver</code></strong>·-·Defines·how·the·client·delivers·the·result·of·an·asynchronous1038 <a·href="#set_options/1">set_options/1,2</a>·are·used·when·establishing·a·connection.</p></li><li><p><strong><code·class="inline">receiver</code></strong>·-·Defines·how·the·client·delivers·the·result·of·an·asynchronous
1039 request·(<code·class="inline">sync</code>·has·the·value·<code·class="inline">false</code>).</p><ul><li><p><strong><a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a></strong>·-·Messages·are·sent·to·this·process·in·the·format1039 request·(<code·class="inline">sync</code>·has·the·value·<code·class="inline">false</code>).</p><ul><li><p><strong><a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a></strong>·-·Messages·are·sent·to·this·process·in·the·format
1040 <code·class="inline">{http,·ReplyInfo}</code>.</p></li><li><p><strong><a·href="../../../../erts-15.2.2/doc/html/erlang.html#alias/0"><code·class="inline">alias/0</code></a></strong>·-·Messages·are·sent·to·this·special·reference·in·the·format1040 <code·class="inline">{http,·ReplyInfo}</code>.</p></li><li><p><strong><a·href="../../../../erts-15.2.2/doc/html/erlang.html#alias/0"><code·class="inline">alias/0</code></a></strong>·-·Messages·are·sent·to·this·special·reference·in·the·format
1041 <code·class="inline">{http,·ReplyInfo}</code>.</p></li><li><p><strong><code·class="inline">function/1</code></strong>·-·Information·is·delivered·to·the·receiver·through·calls·to1041 <code·class="inline">{http,·ReplyInfo}</code>.</p></li><li><p><strong><code·class="inline">function/1</code></strong>·-·Information·is·delivered·to·the·receiver·through·calls·to
1042 the·provided·fun·<code·class="inline">Receiver(ReplyInfo)</code>.</p></li><li><p><strong><code·class="inline">{Module,·Function,·Args}</code></strong>·-·Information·is·delivered·to·the·receiver1042 the·provided·fun·<code·class="inline">Receiver(ReplyInfo)</code>.</p></li><li><p><strong><code·class="inline">{Module,·Function,·Args}</code></strong>·-·Information·is·delivered·to·the·receiver
1043 through·calls·to·the·callback·function1043 through·calls·to·the·callback·function
1044 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·[ReplyInfo·|·Args])</code></a>.</p></li></ul><p>In·all·of·these·cases,·<code·class="inline">ReplyInfo</code>·has·the·following·structure:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p"·data-group-id="7245158399-1">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">saved_to_file</span><span·class="p"·data-group-id="7245158399-1">}</span><span·class="w">1044 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·[ReplyInfo·|·Args])</code></a>.</p></li></ul><p>In·all·of·these·cases,·<code·class="inline">ReplyInfo</code>·has·the·following·structure:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p"·data-group-id="6796768440-1">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">saved_to_file</span><span·class="p"·data-group-id="6796768440-1">}</span><span·class="w">
1045 ·</span><span·class="p"·data-group-id="7245158399-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7245158399-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</[·...·truncated·by·diffoscope;·len:·99,·SHA:·c4a2fc9ccc82b1d2ce410e715de001c3edbcaad71245b1717dafd8a7ec1f454f·...·]-2">}</span><span·class="w">1045 ·</span><span·class="p"·data-group-id="6796768440-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6796768440-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</[·...·truncated·by·diffoscope;·len:·99,·SHA:·8fbeb8226125eebba7f63aedcfbee79f6f3082aa8afbdd100344f862eaea5840·...·]-2">}</span><span·class="w">
1046 ·</span><span·class="p"·data-group-id="7245158399-4">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="7245158399-4">}</span><span·class="w">1046 ·</span><span·class="p"·data-group-id="6796768440-4">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="6796768440-4">}</span><span·class="w">
1047 ·</span><span·class="p"·data-group-id="7245158399-5">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream_start</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p"·data-group-id="724515839[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]-5">}</span><span·class="w">1047 ·</span><span·class="p"·data-group-id="6796768440-5">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream_start</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p"·data-group-id="679676844[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-5">}</span><span·class="w">
1048 ·</span><span·class="p"·data-group-id="7245158399-6">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream_start</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·82,·SHA:·a5e54909bbdf11744e92397e4f6fd16b577fe4ef6ec8740f8eb2a7e34b983aad·...·]-6">}</span><span·class="w">1048 ·</span><span·class="p"·data-group-id="6796768440-6">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream_start</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·82,·SHA:·461e78d711f4b6da215b6fd9720e6e4c086efc2d3e6829246820571a61f4ce0e·...·]-6">}</span><span·class="w">
1049 ·</span><span·class="p"·data-group-id="7245158399-7">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BinBodyPart</span><span·class="p"·data-group-id="7245158399-7">}</span><span·class="w">1049 ·</span><span·class="p"·data-group-id="6796768440-7">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BinBodyPart</span><span·class="p"·data-group-id="6796768440-7">}</span><span·class="w">
1050 ·</span><span·class="p"·data-group-id="7245158399-8">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream_end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p"·data-group-id="7245158399-8">}</span></code></pre><p>Default·is·the·<code·class="inline">pid</code>·of·the·process·calling·the·request·function·(<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>).</p><p><a·href=""·id="ipv6_host_with_brackets"></a></p></li><li><p><strong><code·class="inline">ipv6_host_with_brackets</code></strong>·-·Defines·when·parsing·the·Host-Port·part·of·an1050 ·</span><span·class="p"·data-group-id="6796768440-8">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stream_end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Headers</span><span·class="p"·data-group-id="6796768440-8">}</span></code></pre><p>Default·is·the·<code·class="inline">pid</code>·of·the·process·calling·the·request·function·(<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>).</p><p><a·href=""·id="ipv6_host_with_brackets"></a></p></li><li><p><strong><code·class="inline">ipv6_host_with_brackets</code></strong>·-·Defines·when·parsing·the·Host-Port·part·of·an
1051 URI·with·an·IPv6·address·with·brackets,·if·those·brackets·are·to·be·retained1051 URI·with·an·IPv6·address·with·brackets,·if·those·brackets·are·to·be·retained
1052 (<code·class="inline">true</code>)·or·stripped·(<code·class="inline">false</code>).</p><p>Default·is·<code·class="inline">false</code>.</p></li></ul>1052 (<code·class="inline">true</code>)·or·stripped·(<code·class="inline">false</code>).</p><p>Default·is·<code·class="inline">false</code>.</p></li></ul>
1053 ··</section>1053 ··</section>
1054 </section>1054 </section>
1055 <section·class="detail"·id="reset_cookies/0">1055 <section·class="detail"·id="reset_cookies/0">
  
1056 ··<div·class="detail-header">1056 ··<div·class="detail-header">
48.5 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.1/doc/html/httpd.html
    
Offset 246, 57 lines modifiedOffset 246, 57 lines modified
246 }</code></pre><p>An·example·of·a·log·entry·with·only·default·settings·of·logger</p><pre><code·class="text">=ERROR·REPORT====·9-Oct-2019::09:33:27.350235·===246 }</code></pre><p>An·example·of·a·log·entry·with·only·default·settings·of·logger</p><pre><code·class="text">=ERROR·REPORT====·9-Oct-2019::09:33:27.350235·===
247 ···Server:·My·Server247 ···Server:·My·Server
248 ·Protocol:·HTTP248 ·Protocol:·HTTP
249 Transport:·TLS249 Transport:·TLS
250 ······URI:·/not_there250 ······URI:·/not_there
251 ·····Host:·127.0.1.1:80251 ·····Host:·127.0.1.1:80
252 ·····Peer:·127.0.0.1:45253252 ·····Peer:·127.0.0.1:45253
253 ···Reason:·[{statuscode,404},{description,&quot;Object·Not·Found&quot;}]</code></pre><p>Using·this·option·makes·mod_log·and·mod_disk_log·error·logs·redundant.</p><p>Add·the·filter</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8928363324-1">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">253 ···Reason:·[{statuscode,404},{description,&quot;Object·Not·Found&quot;}]</code></pre><p>Using·this·option·makes·mod_log·and·mod_disk_log·error·logs·redundant.</p><p>Add·the·filter</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3145351783-1">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
254 ····</span><span·class="p"·data-group-id="8928363324-2">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="ss">equal</span><span·class="p">,</span><span·class="p"·data-group-id="8928363324-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">inets</sp[·...·truncated·by·diffoscope;·len:·330,·SHA:·ad2e98db835ef7898dfd7edd9d08ad95b8ad0594bcf5182035c561eea9d14def·...·]-2">}</span></code></pre><p>to·appropriate·logger·handler·to·handle·the·events.·For·example·to·write·the254 ····</span><span·class="p"·data-group-id="3145351783-2">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="ss">equal</span><span·class="p">,</span><span·class="p"·data-group-id="3145351783-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">inets</sp[·...·truncated·by·diffoscope;·len:·330,·SHA:·dea48a777c559dd7ba81ee47ebf63a390bfd5a6ec31818893129ae901b677aea·...·]-2">}</span></code></pre><p>to·appropriate·logger·handler·to·handle·the·events.·For·example·to·write·the
255 error·log·from·an·httpd·server·with·a·<code·class="inline">ServerID</code>·of·<code·class="inline">my_server</code>·to·a·file255 error·log·from·an·httpd·server·with·a·<code·class="inline">ServerID</code>·of·<code·class="inline">my_server</code>·to·a·file
256 you·can·use·the·following·sys.config:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4499265231-1">[</span><span·class="p"·data-group-id="4499265231-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">256 you·can·use·the·following·sys.config:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4709815668-1">[</span><span·class="p"·data-group-id="4709815668-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
257 ·</span><span·class="p"·data-group-id="4499265231-3">[</span><span·class="p"·data-group-id="4499265231-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">257 ·</span><span·class="p"·data-group-id="4709815668-3">[</span><span·class="p"·data-group-id="4709815668-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
258 ··</span><span·class="p"·data-group-id="4499265231-5">[</span><span·class="p"·data-group-id="4499265231-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">http_error_test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">258 ··</span><span·class="p"·data-group-id="4709815668-5">[</span><span·class="p"·data-group-id="4709815668-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">http_error_test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
259 ····</span><span·class="p"·data-group-id="4499265231-7">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4499265231-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·172,·SHA:·7601a496713e8e953ea4db3d36ec570f8bde726d5ee72cd59bffe1049cfe4da5·...·]-8">}</span><span·class="p">,</span><span·class="w">259 ····</span><span·class="p"·data-group-id="4709815668-7">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4709815668-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·172,·SHA:·5e6fcbb89feb1dfff0a2497b8be5baddfeceda1a39f4f86347b46c71691464a7·...·]-8">}</span><span·class="p">,</span><span·class="w">
260 ······</span><span·class="ss">filters</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4499265231-9">[</span><span·class="p"·data-group-id="4499265231-10">{</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4499265231-11">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">260 ······</span><span·class="ss">filters</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4709815668-9">[</span><span·class="p"·data-group-id="4709815668-10">{</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4709815668-11">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
261 ·································</span><span·class="p"·data-group-id="4499265231-12">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">equal</span><span·class="p">,</span><span·class="w">261 ·································</span><span·class="p"·data-group-id="4709815668-12">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">equal</span><span·class="p">,</span><span·class="w">
262 ··································</span><span·class="p"·data-group-id="4499265231-13">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·146,·SHA:·f548820f2398d23fa2a24a6ee81d59d3bc65eb4fed2b90e4f6caa0e501bacee3·...·]-13">]</span><span·class="w">262 ··································</span><span·class="p"·data-group-id="4709815668-13">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·146,·SHA:·6cd050527e7daba5c150fd4ff1d4104b7474e92b44346800743e4cd26460857b·...·]-13">]</span><span·class="w">
263 ·································</span><span·class="p"·data-group-id="4499265231-12">}</span><span·class="p"·data-group-id="4499265231-11">}</span><span·class="p"·data-group-id="4499265231-10">}</span><span·class="p"·data-group-id="4499265231-9">]</span><span·class="p">,</span><span·class="w">263 ·································</span><span·class="p"·data-group-id="4709815668-12">}</span><span·class="p"·data-group-id="4709815668-11">}</span><span·class="p"·data-group-id="4709815668-10">}</span><span·class="p"·data-group-id="4709815668-9">]</span><span·class="p">,</span><span·class="w">
264 ······</span><span·class="ss">filter_default</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">stop</span><span·class="w">·</span><span·class="p"·data-group-id="4499265231-7">}</span><span·class="p"·data-group-id="4499265231-6">}</span><span·class="p"·data-group-id="4499265231-5">]</span><span·class="p"·data-group-id="4499265231-4">}</span><span·class="p"·data-group-id="4499265231-3">]</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·370,·SHA:·0c5d45485f77f1ffab235b0f1fc0ab216d174ea7072d7a356d2b6027354828f2·...·]-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">264 ······</span><span·class="ss">filter_default</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">stop</span><span·class="w">·</span><span·class="p"·data-group-id="4709815668-7">}</span><span·class="p"·data-group-id="4709815668-6">}</span><span·class="p"·data-group-id="4709815668-5">]</span><span·class="p"·data-group-id="4709815668-4">}</span><span·class="p"·data-group-id="4709815668-3">]</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·370,·SHA:·f2cc832e265f418addfdae4bef070150dd2ac8e0b46812933bb61b3e9a5ae633·...·]-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">
265 ··························</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">265 ··························</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">
266 ··························</span><span·class="p"·data-group-id="4761213811-2">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">266 ··························</span><span·class="p"·data-group-id="4072715086-2">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
267 ···························</span><span·class="p"·data-group-id="4761213811-3">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">equal</span><span·class="p">,</span><span·class="w">267 ···························</span><span·class="p"·data-group-id="4072715086-3">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">equal</span><span·class="p">,</span><span·class="w">
268 ····························</span><span·class="p"·data-group-id="4761213811-4">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·304,·SHA:·63de24b836e47ae0d5ed0e15457cd0179767c52393b6b28181a1da2f7daf2d44·...·]-1">)</span><span·class="p">.</span></code></pre></li></ul></li><li><p><a·href=""·id="prop_log_format"></a>·<strong><code·class="inline">{log_format,·common·|·combined}</code></strong><br/>Defines·if·access·logs·are·to·be·written·according·to·the·<code·class="inline">common</code>·log·format268 ····························</span><span·class="p"·data-group-id="4072715086-4">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·304,·SHA:·548c510518cf5c6722878bda06bf68754a4808ffd056809870e08e772e89db26·...·]-1">)</span><span·class="p">.</span></code></pre></li></ul></li><li><p><a·href=""·id="prop_log_format"></a>·<strong><code·class="inline">{log_format,·common·|·combined}</code></strong><br/>Defines·if·access·logs·are·to·be·written·according·to·the·<code·class="inline">common</code>·log·format
269 or·the·extended·common·log·format.·The·<code·class="inline">common</code>·format·is·one·line·looking269 or·the·extended·common·log·format.·The·<code·class="inline">common</code>·format·is·one·line·looking
270 like·this:·<code·class="inline">remotehost·rfc931·authuser·[date]·&quot;request&quot;·status·bytes</code>.</p><p>Here:</p><ul><li><p><strong><code·class="inline">remotehost</code></strong>·-·Remote.</p></li><li><p><strong><code·class="inline">rfc931</code></strong>·-·The·remote·username·of·the·client270 like·this:·<code·class="inline">remotehost·rfc931·authuser·[date]·&quot;request&quot;·status·bytes</code>.</p><p>Here:</p><ul><li><p><strong><code·class="inline">remotehost</code></strong>·-·Remote.</p></li><li><p><strong><code·class="inline">rfc931</code></strong>·-·The·remote·username·of·the·client
271 (<a·href="http://www.ietf.org/rfc/rfc931.txt">RFC·931</a>).</p></li><li><p><strong><code·class="inline">authuser</code></strong>·-·The·username·used·for·authentication.</p></li><li><p><strong><code·class="inline">[date]</code></strong>·-·Date·and·time·of·the·request271 (<a·href="http://www.ietf.org/rfc/rfc931.txt">RFC·931</a>).</p></li><li><p><strong><code·class="inline">authuser</code></strong>·-·The·username·used·for·authentication.</p></li><li><p><strong><code·class="inline">[date]</code></strong>·-·Date·and·time·of·the·request
272 (<a·href="http://www.ietf.org/rfc/rfc1123.txt">RFC·1123</a>).</p></li><li><p><strong><code·class="inline">&quot;request&quot;</code></strong>·-·The·request·line·as·it·came·from·the·client272 (<a·href="http://www.ietf.org/rfc/rfc1123.txt">RFC·1123</a>).</p></li><li><p><strong><code·class="inline">&quot;request&quot;</code></strong>·-·The·request·line·as·it·came·from·the·client
273 (<a·href="http://www.ietf.org/rfc/rfc1945.txt">RFC·1945</a>).</p></li><li><p><strong><code·class="inline">status</code></strong>·-·The·HTTP·status·code·returned·to·the·client273 (<a·href="http://www.ietf.org/rfc/rfc1945.txt">RFC·1945</a>).</p></li><li><p><strong><code·class="inline">status</code></strong>·-·The·HTTP·status·code·returned·to·the·client
274 (<a·href="http://www.ietf.org/rfc/rfc1945.txt">RFC·1945</a>).</p></li><li><p><strong><code·class="inline">bytes</code></strong>·-·The·content-length·of·the·document·transferred.</p></li></ul><p>The·<code·class="inline">combined</code>·format·is·one·line·looking·like·this:274 (<a·href="http://www.ietf.org/rfc/rfc1945.txt">RFC·1945</a>).</p></li><li><p><strong><code·class="inline">bytes</code></strong>·-·The·content-length·of·the·document·transferred.</p></li></ul><p>The·<code·class="inline">combined</code>·format·is·one·line·looking·like·this:
275 <code·class="inline">remotehost·rfc931·authuser·[date]·&quot;request&quot;·status·bytes·&quot;referer&quot;·&quot;user_agent&quot;</code></p><p>In·addition·to·the·earlier:</p><ul><li><p><strong><code·class="inline">&quot;referer&quot;</code></strong>·-·The·URL·the·client·was·on·before·requesting·the·URL·(if·it275 <code·class="inline">remotehost·rfc931·authuser·[date]·&quot;request&quot;·status·bytes·&quot;referer&quot;·&quot;user_agent&quot;</code></p><p>In·addition·to·the·earlier:</p><ul><li><p><strong><code·class="inline">&quot;referer&quot;</code></strong>·-·The·URL·the·client·was·on·before·requesting·the·URL·(if·it
276 could·not·be·determined,·a·minus·sign·is·placed·in·this·field).</p></li><li><p><strong><code·class="inline">&quot;user_agent&quot;</code></strong>·-·The·software·the·client·claims·to·be·using·(if·it·could276 could·not·be·determined,·a·minus·sign·is·placed·in·this·field).</p></li><li><p><strong><code·class="inline">&quot;user_agent&quot;</code></strong>·-·The·software·the·client·claims·to·be·using·(if·it·could
277 not·be·determined,·a·minus·sign·is·placed·in·this·field).</p></li></ul><p>This·affects·the·access·logs·written·by·<code·class="inline">mod_log</code>·and·<code·class="inline">mod_disk_log</code>.</p></li><li><p><a·href=""·id="prop_elog_format"></a>·<strong><code·class="inline">{error_log_format,·pretty·|·compact}</code></strong><br/>Default·is·<code·class="inline">pretty</code>.·If·the·error·log·is·meant·to·be·read·directly·by·a·human,277 not·be·determined,·a·minus·sign·is·placed·in·this·field).</p></li></ul><p>This·affects·the·access·logs·written·by·<code·class="inline">mod_log</code>·and·<code·class="inline">mod_disk_log</code>.</p></li><li><p><a·href=""·id="prop_elog_format"></a>·<strong><code·class="inline">{error_log_format,·pretty·|·compact}</code></strong><br/>Default·is·<code·class="inline">pretty</code>.·If·the·error·log·is·meant·to·be·read·directly·by·a·human,
278 <code·class="inline">pretty</code>·is·the·best·option.</p><p><code·class="inline">pretty</code>·has·a·format·corresponding·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4430212203-1">(</span><span·class="s">&quot;[</span><span·class="si">~s</span><span·class="s">]·</span><span·class="si">~s</span><span·class="s">,·reason:·</span><span·class="si">~n</span><span·class="s">·</span><span·class="si">~p</span><span·class="s">·<[·...·truncated·by·diffoscope;·len:·1381,·SHA:·4065210b29bda330713bb4efa167769075b5aa00a0aabc702cad81ad179aed6d·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·affects·the·error·logs·written·by·<code·class="inline">mod_log</code>·and·<code·class="inline">mod_disk_log</code>.</p></li></ul><p><a·href=""·id="props_alias"></a></p><h3·id="module-url-aliasing-properties-requires-mod_alias"·class="section-heading">278 <code·class="inline">pretty</code>·is·the·best·option.</p><p><code·class="inline">pretty</code>·has·a·format·corresponding·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5677367894-1">(</span><span·class="s">&quot;[</span><span·class="si">~s</span><span·class="s">]·</span><span·class="si">~s</span><span·class="s">,·reason:·</span><span·class="si">~n</span><span·class="s">·</span><span·class="si">~p</span><span·class="s">·<[·...·truncated·by·diffoscope;·len:·1381,·SHA:·38daafe947e990cd8fa7b9bd9e527048b1106fd750087e4c7b70b6a13de2147a·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·affects·the·error·logs·written·by·<code·class="inline">mod_log</code>·and·<code·class="inline">mod_disk_log</code>.</p></li></ul><p><a·href=""·id="props_alias"></a></p><h3·id="module-url-aliasing-properties-requires-mod_alias"·class="section-heading">
279 ··<a·href="#module-url-aliasing-properties-requires-mod_alias"·class="hover-link">279 ··<a·href="#module-url-aliasing-properties-requires-mod_alias"·class="hover-link">
280 ····<i·class="ri-link-m"·aria-hidden="true"></i>280 ····<i·class="ri-link-m"·aria-hidden="true"></i>
281 ··</a>281 ··</a>
282 ··<span·class="text">URL·Aliasing·Properties·-·Requires·mod_alias</span>282 ··<span·class="text">URL·Aliasing·Properties·-·Requires·mod_alias</span>
283 </h3>283 </h3>
284 <ul><li><p><a·href=""·id="prop_alias"></a>·<strong><code·class="inline">{alias,·{Alias,·RealName}}</code></strong><br/><code·class="inline">Alias·=·string()</code>·and·<code·class="inline">RealName·=·string()</code>.·<code·class="inline">alias</code>·allows·documents·to·be284 <ul><li><p><a·href=""·id="prop_alias"></a>·<strong><code·class="inline">{alias,·{Alias,·RealName}}</code></strong><br/><code·class="inline">Alias·=·string()</code>·and·<code·class="inline">RealName·=·string()</code>.·<code·class="inline">alias</code>·allows·documents·to·be
285 stored·in·the·local·file·system·instead·of·the·<code·class="inline">document_root</code>·location.·URLs285 stored·in·the·local·file·system·instead·of·the·<code·class="inline">document_root</code>·location.·URLs
286 with·a·path·beginning·with·url-path·is·mapped·to·local·files·beginning·with286 with·a·path·beginning·with·url-path·is·mapped·to·local·files·beginning·with
287 directory-filename,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3655584322-1">{</span><span·class="ss">alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3655584322-2">{</span><span·class="s">&quot;/image&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·126,·SHA:·ec4b546f3d7a30c248b1f0fceb4351c1eb5be9548d4c0972c0ccf69ed7069cad·...·]-1">}</span></code></pre><p>Access·to·<a·href="http://your.server.org/image/foo.gif">http://your.server.org/image/foo.gif</a>·would·refer·to·the·file287 directory-filename,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3674560923-1">{</span><span·class="ss">alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3674560923-2">{</span><span·class="s">&quot;/image&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·126,·SHA:·99ed9c791b2bd0fcc48867196fe2db2513e553c79efbfcd7225d9e4686feb6a8·...·]-1">}</span></code></pre><p>Access·to·<a·href="http://your.server.org/image/foo.gif">http://your.server.org/image/foo.gif</a>·would·refer·to·the·file
288 /ftp/pub/image/foo.gif.</p></li><li><p><a·href=""·id="prop_re_write"></a>·<strong><code·class="inline">{re_write,·{Re,·Replacement}}</code></strong><br/><code·class="inline">Re·=·string()</code>·and·<code·class="inline">Replacement·=·string()</code>.·<code·class="inline">re_write</code>·allows·documents·to288 /ftp/pub/image/foo.gif.</p></li><li><p><a·href=""·id="prop_re_write"></a>·<strong><code·class="inline">{re_write,·{Re,·Replacement}}</code></strong><br/><code·class="inline">Re·=·string()</code>·and·<code·class="inline">Replacement·=·string()</code>.·<code·class="inline">re_write</code>·allows·documents·to
289 be·stored·in·the·local·file·system·instead·of·the·<code·class="inline">document_root</code>·location.289 be·stored·in·the·local·file·system·instead·of·the·<code·class="inline">document_root</code>·location.
290 URLs·are·rewritten·by·<a·href="../../../../lib/stdlib-6.2/doc/html/re.html#replace/3"><code·class="inline">re:replace/3</code></a>·to·produce·a·path·in·the·local290 URLs·are·rewritten·by·<a·href="../../../../lib/stdlib-6.2/doc/html/re.html#replace/3"><code·class="inline">re:replace/3</code></a>·to·produce·a·path·in·the·local
291 file-system,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3100579513-1">{</span><span·class="ss">re_write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3100579513-2">{</span><span·class="s">&quot;^/[~]([^/]+)(.*)$&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·146,·SHA:·0ef4ea1b73b6a86a8cc8f2e8a4e38cc2a1684eee574903b9c2e4e28f09b43195·...·]-1">}</span></code></pre><p>Access·to·<a·href="http://your.server.org/~bob/foo.gif">http://your.server.org/~bob/foo.gif</a>·would·refer·to·the·file291 file-system,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3495725062-1">{</span><span·class="ss">re_write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3495725062-2">{</span><span·class="s">&quot;^/[~]([^/]+)(.*)$&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·146,·SHA:·bf6021396f0a629a9b468d8dd165d418c56527493a7d432a684036d63993c96b·...·]-1">}</span></code></pre><p>Access·to·<a·href="http://your.server.org/~bob/foo.gif">http://your.server.org/~bob/foo.gif</a>·would·refer·to·the·file
292 /home/bob/public/foo.gif.</p></li><li><p><a·href=""·id="prop_dir_idx"></a>·<strong><code·class="inline">{directory_index,·[string()]}</code></strong><br/><code·class="inline">directory_index</code>·specifies·a·list·of·resources·to·look·for·if·a·client292 /home/bob/public/foo.gif.</p></li><li><p><a·href=""·id="prop_dir_idx"></a>·<strong><code·class="inline">{directory_index,·[string()]}</code></strong><br/><code·class="inline">directory_index</code>·specifies·a·list·of·resources·to·look·for·if·a·client
293 requests·a·directory·using·a·<code·class="inline">/</code>·at·the·end·of·the·directory·name.·<code·class="inline">file</code>293 requests·a·directory·using·a·<code·class="inline">/</code>·at·the·end·of·the·directory·name.·<code·class="inline">file</code>
294 depicts·the·name·of·a·file·in·the·directory.·Several·files·can·be·given,·in294 depicts·the·name·of·a·file·in·the·directory.·Several·files·can·be·given,·in
295 which·case·the·server·returns·the·first·it·finds,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8183966918-1">{</span><span·class="ss">directory_index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8183966918-2">[</span><span·class="s">&quot;index.html&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·140,·SHA:·b67520ab32539701082df3499e7fbff98aa62ffebb520e07ced18fc0739f491d·...·]-1">}</span></code></pre><p>Access·to·<a·href="http://your.server.org/docs/">http://your.server.org/docs/</a>·would·return295 which·case·the·server·returns·the·first·it·finds,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7578026315-1">{</span><span·class="ss">directory_index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7578026315-2">[</span><span·class="s">&quot;index.html&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·140,·SHA:·1112a4314f7ca0d251a9f43db120f820d4381ab8351699f5c5673f8bc9f74c6a·...·]-1">}</span></code></pre><p>Access·to·<a·href="http://your.server.org/docs/">http://your.server.org/docs/</a>·would·return
296 <a·href="http://your.server.org/docs/index.html">http://your.server.org/docs/index.html</a>·or296 <a·href="http://your.server.org/docs/index.html">http://your.server.org/docs/index.html</a>·or
297 <a·href="http://your.server.org/docs/welcome.html">http://your.server.org/docs/welcome.html</a>·if·index.html·does·not·exist.</p></li></ul><p><a·href=""·id="props_cgi"></a></p><h3·id="module-cgi-properties-requires-mod_cgi"·class="section-heading">297 <a·href="http://your.server.org/docs/welcome.html">http://your.server.org/docs/welcome.html</a>·if·index.html·does·not·exist.</p></li></ul><p><a·href=""·id="props_cgi"></a></p><h3·id="module-cgi-properties-requires-mod_cgi"·class="section-heading">
298 ··<a·href="#module-cgi-properties-requires-mod_cgi"·class="hover-link">298 ··<a·href="#module-cgi-properties-requires-mod_cgi"·class="hover-link">
299 ····<i·class="ri-link-m"·aria-hidden="true"></i>299 ····<i·class="ri-link-m"·aria-hidden="true"></i>
300 ··</a>300 ··</a>
301 ··<span·class="text">CGI·Properties·-·Requires·mod_cgi</span>301 ··<span·class="text">CGI·Properties·-·Requires·mod_cgi</span>
302 </h3>302 </h3>
Offset 316, 23 lines modifiedOffset 316, 23 lines modified
316 activating·a·CGI·script·whenever·a·file·of·a·certain·MIME·type·is·requested.316 activating·a·CGI·script·whenever·a·file·of·a·certain·MIME·type·is·requested.
317 It·propagates·the·URL·and·file·path·of·the·requested·document·using·the317 It·propagates·the·URL·and·file·path·of·the·requested·document·using·the
318 standard·CGI·PATH_INFO·and·PATH_TRANSLATED·environment·variables.</p><p>Example:</p><pre><code·class="text">{action,·{&quot;text/plain&quot;,·&quot;/cgi-bin/log_and_deliver_text&quot;}}</code></pre></li><li><p><a·href=""·id="prop_script"></a>·<strong><code·class="inline">{script,·{Method,·CgiScript}}</code></strong>·-·requires·<code·class="inline">mod_actions</code><br/><code·class="inline">Method·=·string()</code>·and·<code·class="inline">CgiScript·=·string()</code>.·<code·class="inline">script</code>·adds·an·action318 standard·CGI·PATH_INFO·and·PATH_TRANSLATED·environment·variables.</p><p>Example:</p><pre><code·class="text">{action,·{&quot;text/plain&quot;,·&quot;/cgi-bin/log_and_deliver_text&quot;}}</code></pre></li><li><p><a·href=""·id="prop_script"></a>·<strong><code·class="inline">{script,·{Method,·CgiScript}}</code></strong>·-·requires·<code·class="inline">mod_actions</code><br/><code·class="inline">Method·=·string()</code>·and·<code·class="inline">CgiScript·=·string()</code>.·<code·class="inline">script</code>·adds·an·action
319 activating·a·CGI·script·whenever·a·file·is·requested·using·a·certain·HTTP319 activating·a·CGI·script·whenever·a·file·is·requested·using·a·certain·HTTP
320 method.·The·method·is·either·GET·or·POST,·as·defined·in320 method.·The·method·is·either·GET·or·POST,·as·defined·in
321 <a·href="http://www.ietf.org/rfc/rfc1945.txt">RFC·1945</a>.·It·propagates·the·URL·and321 <a·href="http://www.ietf.org/rfc/rfc1945.txt">RFC·1945</a>.·It·propagates·the·URL·and
322 file·path·of·the·requested·document·using·the·standard·CGI·PATH_INFO·and322 file·path·of·the·requested·document·using·the·standard·CGI·PATH_INFO·and
323 PATH_TRANSLATED·environment·variables.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3059681836-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3059681836-2">{</span><span·class="s">&quot;PUT&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·124,·SHA:·6ce0027925c3721db7958d67f11d2042364dedfaa063306e98b1a8767064f3a1·...·]-1">}</span></code></pre></li></ul><p><a·href=""·id="props_esi"></a></p><h3·id="module-esi-properties-requires-mod_esi"·class="section-heading">323 PATH_TRANSLATED·environment·variables.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1678648647-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1678648647-2">{</span><span·class="s">&quot;PUT&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·124,·SHA:·bc10e9439142e5aecd81a9f49f8a8a3cebf724e3814ee66f425efac0b4c3c36d·...·]-1">}</span></code></pre></li></ul><p><a·href=""·id="props_esi"></a></p><h3·id="module-esi-properties-requires-mod_esi"·class="section-heading">
324 ··<a·href="#module-esi-properties-requires-mod_esi"·class="hover-link">324 ··<a·href="#module-esi-properties-requires-mod_esi"·class="hover-link">
325 ····<i·class="ri-link-m"·aria-hidden="true"></i>325 ····<i·class="ri-link-m"·aria-hidden="true"></i>
326 ··</a>326 ··</a>
327 ··<span·class="text">ESI·Properties·-·Requires·mod_esi</span>327 ··<span·class="text">ESI·Properties·-·Requires·mod_esi</span>
328 </h3>328 </h3>
329 <ul><li><p><a·href=""·id="prop_esi_alias"></a>·<strong><code·class="inline">{erl_script_alias,·{URLPath,·[AllowedModule]}}</code></strong><br/><code·class="inline">URLPath·=·string()</code>·and·<code·class="inline">AllowedModule·=·atom()</code>.·<code·class="inline">erl_script_alias</code>·marks329 <ul><li><p><a·href=""·id="prop_esi_alias"></a>·<strong><code·class="inline">{erl_script_alias,·{URLPath,·[AllowedModule]}}</code></strong><br/><code·class="inline">URLPath·=·string()</code>·and·<code·class="inline">AllowedModule·=·atom()</code>.·<code·class="inline">erl_script_alias</code>·marks
330 all·URLs·matching·url-path·as·erl·scheme·scripts.·A·matching·URL·is·mapped330 all·URLs·matching·url-path·as·erl·scheme·scripts.·A·matching·URL·is·mapped
331 into·a·specific·module·and·function,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2802259472-1">{</span><span·class="ss">erl_script_alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2802259472-2">{</span><span·class="s">&quot;/cgi-bin/example&quot;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·243,·SHA:·25b0a63ee68ec0df818dae5a50c0d293d90923227f048ec317ca211dae37d6bb·...·]-1">}</span></code></pre><p>A·request·to·<a·href="http://your.server.org/cgi-bin/example/httpd_example:yahoo">http://your.server.org/cgi-bin/example/httpd_example:yahoo</a>·would331 into·a·specific·module·and·function,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0831142954-1">{</span><span·class="ss">erl_script_alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0831142954-2">{</span><span·class="s">&quot;/cgi-bin/example&quot;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·243,·SHA:·758bbe24034f9486392d13154bf824a047a89428d57f4d0140a8a0865abc08ab·...·]-1">}</span></code></pre><p>A·request·to·<a·href="http://your.server.org/cgi-bin/example/httpd_example:yahoo">http://your.server.org/cgi-bin/example/httpd_example:yahoo</a>·would
332 refer·to·httpd_example:yahoo/3·or,·if·that·does·not·exist,332 refer·to·httpd_example:yahoo/3·or,·if·that·does·not·exist,
333 httpd_example:yahoo/2·and·<a·href="http://your.server.org/cgi-bin/example/other:yahoo">http://your.server.org/cgi-bin/example/other:yahoo</a>333 httpd_example:yahoo/2·and·<a·href="http://your.server.org/cgi-bin/example/other:yahoo">http://your.server.org/cgi-bin/example/other:yahoo</a>
334 would·not·be·allowed·to·execute.</p></li><li><p><a·href=""·id="prop_esi_nocache"></a>·<strong><code·class="inline">{erl_script_nocache,·boolean()}</code></strong><br/>If·<code·class="inline">erl_script_nocache</code>·is·set·to·<code·class="inline">true</code>,·the·server·adds·HTTP·header·fields334 would·not·be·allowed·to·execute.</p></li><li><p><a·href=""·id="prop_esi_nocache"></a>·<strong><code·class="inline">{erl_script_nocache,·boolean()}</code></strong><br/>If·<code·class="inline">erl_script_nocache</code>·is·set·to·<code·class="inline">true</code>,·the·server·adds·HTTP·header·fields
335 preventing·proxies·from·caching·the·page.·This·is·generally·a·good·idea·for335 preventing·proxies·from·caching·the·page.·This·is·generally·a·good·idea·for
336 dynamic·content,·as·the·content·often·varies·between·each·request.·Default·is336 dynamic·content,·as·the·content·often·varies·between·each·request.·Default·is
337 <code·class="inline">false</code>.</p></li><li><p><a·href=""·id="prop_esi_timeout"></a>·<strong><code·class="inline">{erl_script_timeout,·integer()}</code></strong><br/>If·<code·class="inline">erl_script_timeout</code>·sets·the·time·in·seconds·the·server·waits·between·each337 <code·class="inline">false</code>.</p></li><li><p><a·href=""·id="prop_esi_timeout"></a>·<strong><code·class="inline">{erl_script_timeout,·integer()}</code></strong><br/>If·<code·class="inline">erl_script_timeout</code>·sets·the·time·in·seconds·the·server·waits·between·each
338 chunk·of·data·to·be·delivered·through·<a·href="mod_esi.html#deliver/2"><code·class="inline">mod_esi:deliver/2</code></a>.·Default·is·<code·class="inline">15</code>.338 chunk·of·data·to·be·delivered·through·<a·href="mod_esi.html#deliver/2"><code·class="inline">mod_esi:deliver/2</code></a>.·Default·is·<code·class="inline">15</code>.
Offset 374, 15 lines modifiedOffset 374, 15 lines modified
374 is·written·to·each·file·and·max·files·is·used·before·the·first·file·is374 is·written·to·each·file·and·max·files·is·used·before·the·first·file·is
375 truncated·and·reused.</p></li></ul><p><a·href=""·id="props_auth"></a></p><h3·id="module-authentication-properties-requires-mod_auth"·class="section-heading">375 truncated·and·reused.</p></li></ul><p><a·href=""·id="props_auth"></a></p><h3·id="module-authentication-properties-requires-mod_auth"·class="section-heading">
376 ··<a·href="#module-authentication-properties-requires-mod_auth"·class="hover-link">376 ··<a·href="#module-authentication-properties-requires-mod_auth"·class="hover-link">
377 ····<i·class="ri-link-m"·aria-hidden="true"></i>377 ····<i·class="ri-link-m"·aria-hidden="true"></i>
378 ··</a>378 ··</a>
379 ··<span·class="text">Authentication·Properties·-·Requires·mod_auth</span>379 ··<span·class="text">Authentication·Properties·-·Requires·mod_auth</span>
380 </h3>380 </h3>
381 <p><a·href=""·id="prop_dri"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3244642154-1">{</span><span·class="ss">directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3244642154-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="3244642154-3">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·1510,·SHA:·10297200aeb48f2fe59a0b5ca4df6fb5e8cb0445e009d22f82a08181a73c03b8·...·]-1">}</span></code></pre><p>The·host·<code·class="inline">123.34.56.11</code>·and·all·machines·on·the·<code·class="inline">150.100.23</code>·subnet·are381 <p><a·href=""·id="prop_dri"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4559737325-1">{</span><span·class="ss">directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4559737325-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="4559737325-3">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·1510,·SHA:·51c8bc29bdbc9c493072bf3c5e344b683683922b3102400f648bf6047c414143·...·]-1">}</span></code></pre><p>The·host·<code·class="inline">123.34.56.11</code>·and·all·machines·on·the·<code·class="inline">150.100.23</code>·subnet·are
382 allowed·access.</p></li><li><p><a·href=""·id="prop_deny_from"></a>·<strong><code·class="inline">{deny_from,·all·|·[RegxpHostString]}</code></strong><br/>Defines·a·set·of·hosts·to·be·denied·access·to·a·given·directory,·for·example:</p><pre><code·class="text">{deny_from,·[&quot;123.34.56.11&quot;,·&quot;150.100.23&quot;]}</code></pre><p>The·host·<code·class="inline">123.34.56.11</code>·and·all·machines·on·the·<code·class="inline">150.100.23</code>·subnet·are·not382 allowed·access.</p></li><li><p><a·href=""·id="prop_deny_from"></a>·<strong><code·class="inline">{deny_from,·all·|·[RegxpHostString]}</code></strong><br/>Defines·a·set·of·hosts·to·be·denied·access·to·a·given·directory,·for·example:</p><pre><code·class="text">{deny_from,·[&quot;123.34.56.11&quot;,·&quot;150.100.23&quot;]}</code></pre><p>The·host·<code·class="inline">123.34.56.11</code>·and·all·machines·on·the·<code·class="inline">150.100.23</code>·subnet·are·not
383 allowed·access.</p></li><li><p><a·href=""·id="prop_auth_type"></a>·<strong><code·class="inline">{auth_type,·plain·|·dets·|·mnesia}</code></strong><br/>Sets·the·type·of·authentication·database·that·is·used·for·the·directory.·The383 allowed·access.</p></li><li><p><a·href=""·id="prop_auth_type"></a>·<strong><code·class="inline">{auth_type,·plain·|·dets·|·mnesia}</code></strong><br/>Sets·the·type·of·authentication·database·that·is·used·for·the·directory.·The
384 key·difference·between·the·different·methods·is·that·dynamic·data·can·be·saved384 key·difference·between·the·different·methods·is·that·dynamic·data·can·be·saved
385 when·Mnesia·and·Dets·are·used.</p></li><li><p><a·href=""·id="prop_auth_user_file"></a>·<strong><code·class="inline">{auth_user_file,·path()}</code></strong><br/>Sets·the·name·of·a·file·containing·the·list·of·users·and·passwords·for·user385 when·Mnesia·and·Dets·are·used.</p></li><li><p><a·href=""·id="prop_auth_user_file"></a>·<strong><code·class="inline">{auth_user_file,·path()}</code></strong><br/>Sets·the·name·of·a·file·containing·the·list·of·users·and·passwords·for·user
386 authentication.·The·filename·can·be·either·absolute·or·relative·to·the386 authentication.·The·filename·can·be·either·absolute·or·relative·to·the
387 <code·class="inline">server_root</code>.·If·using·the·plain·storage·method,·this·file·is·a·plain·text387 <code·class="inline">server_root</code>.·If·using·the·plain·storage·method,·this·file·is·a·plain·text
388 file·where·each·line·contains·a·username·followed·by·a·colon,·followed·by·the388 file·where·each·line·contains·a·username·followed·by·a·colon,·followed·by·the
Offset 409, 15 lines modifiedOffset 409, 15 lines modified
409 changed·after·the·web·server·is·started.·Otherwise·it·is·written·in·clear·text409 changed·after·the·web·server·is·started.·Otherwise·it·is·written·in·clear·text
410 in·the·configuration·file.</p></li><li><p><a·href=""·id="prop_req_user"></a>·<strong><code·class="inline">{require_user,·[string()]}</code></strong><br/>Defines·users·to·grant·access·to·a·given·directory·using·a·secret·password.</p></li><li><p><a·href=""·id="prop_req_grp"></a>·<strong><code·class="inline">{require_group,·[string()]}</code></strong><br/>Defines·users·to·grant·access·to·a·given·directory·using·a·secret·password.</p></li></ul><p><a·href=""·id="props_sec"></a></p><h3·id="module-security-properties-requires-mod_security"·class="section-heading">410 in·the·configuration·file.</p></li><li><p><a·href=""·id="prop_req_user"></a>·<strong><code·class="inline">{require_user,·[string()]}</code></strong><br/>Defines·users·to·grant·access·to·a·given·directory·using·a·secret·password.</p></li><li><p><a·href=""·id="prop_req_grp"></a>·<strong><code·class="inline">{require_group,·[string()]}</code></strong><br/>Defines·users·to·grant·access·to·a·given·directory·using·a·secret·password.</p></li></ul><p><a·href=""·id="props_sec"></a></p><h3·id="module-security-properties-requires-mod_security"·class="section-heading">
411 ··<a·href="#module-security-properties-requires-mod_security"·class="hover-link">411 ··<a·href="#module-security-properties-requires-mod_security"·class="hover-link">
412 ····<i·class="ri-link-m"·aria-hidden="true"></i>412 ····<i·class="ri-link-m"·aria-hidden="true"></i>
413 ··</a>413 ··</a>
414 ··<span·class="text">Security·Properties·-·Requires·mod_security</span>414 ··<span·class="text">Security·Properties·-·Requires·mod_security</span>
415 </h3>415 </h3>
416 <p><a·href=""·id="prop_sec_dir"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4657279193-1">{</span><span·class="ss">security_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4657279193-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="4657279193-3">(</span><span·clas[·...·truncated·by·diffoscope;·len:·716,·SHA:·877bed9995fdaeefee3f600869f6ab6699c9d3cd715522f6c6bbf130f2ba2b3b·...·]3-1">}</span></code></pre><p><a·href=""·id="props_sdir"></a></p><p>The·properties·for·the·security·directories·are·as·follows:</p><ul><li><p><a·href=""·id="prop_data_file"></a>·<strong><code·class="inline">{data_file,·path()}</code></strong><br/>Name·of·the·security·data·file.·The·filename·can·either·be·absolute·or416 <p><a·href=""·id="prop_sec_dir"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2915797163-1">{</span><span·class="ss">security_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2915797163-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="2915797163-3">(</span><span·clas[·...·truncated·by·diffoscope;·len:·716,·SHA:·73782da09025267d16f06417386f1f2ac57a327cf08fcb8554a8e162fc485e91·...·]3-1">}</span></code></pre><p><a·href=""·id="props_sdir"></a></p><p>The·properties·for·the·security·directories·are·as·follows:</p><ul><li><p><a·href=""·id="prop_data_file"></a>·<strong><code·class="inline">{data_file,·path()}</code></strong><br/>Name·of·the·security·data·file.·The·filename·can·either·be·absolute·or
417 relative·to·the·<code·class="inline">server_root</code>.·This·file·is·used·to·store·persistent·data·for417 relative·to·the·<code·class="inline">server_root</code>.·This·file·is·used·to·store·persistent·data·for
418 module·<code·class="inline">mod_security</code>.</p></li><li><p><a·href=""·id="prop_max_retries"></a>·<strong><code·class="inline">{max_retries,·integer()}</code></strong><br/>Specifies·the·maximum·number·of·attempts·to·authenticate·a·user·before·the418 module·<code·class="inline">mod_security</code>.</p></li><li><p><a·href=""·id="prop_max_retries"></a>·<strong><code·class="inline">{max_retries,·integer()}</code></strong><br/>Specifies·the·maximum·number·of·attempts·to·authenticate·a·user·before·the
419 user·is·blocked·out.·If·a·user·successfully·authenticates·while·blocked,·the419 user·is·blocked·out.·If·a·user·successfully·authenticates·while·blocked,·the
420 user·receives·a·403·(Forbidden)·response·from·the·server.·If·the·user·makes·a420 user·receives·a·403·(Forbidden)·response·from·the·server.·If·the·user·makes·a
421 failed·attempt·while·blocked,·the·server·returns·401·(Unauthorized),·for421 failed·attempt·while·blocked,·the·server·returns·401·(Unauthorized),·for
422 security·reasons.·Default·is·<code·class="inline">3</code>.·Can·be·set·to·infinity.</p></li><li><p><a·href=""·id="prop_block_time"></a>·<strong><code·class="inline">{block_time,·integer()}</code></strong><br/>Specifies·the·number·of·minutes·a·user·is·blocked.·After·this·time·has·passed,422 security·reasons.·Default·is·<code·class="inline">3</code>.·Can·be·set·to·infinity.</p></li><li><p><a·href=""·id="prop_block_time"></a>·<strong><code·class="inline">{block_time,·integer()}</code></strong><br/>Specifies·the·number·of·minutes·a·user·is·blocked.·After·this·time·has·passed,
423 the·user·automatically·regains·access.·Default·is·<code·class="inline">60</code>.</p></li><li><p><a·href=""·id="prop_fail_exp_time"></a>·<strong><code·class="inline">{fail_expire_time,·integer()}</code></strong><br/>Specifies·the·number·of·minutes·a·failed·user·authentication·is·remembered.·If423 the·user·automatically·regains·access.·Default·is·<code·class="inline">60</code>.</p></li><li><p><a·href=""·id="prop_fail_exp_time"></a>·<strong><code·class="inline">{fail_expire_time,·integer()}</code></strong><br/>Specifies·the·number·of·minutes·a·failed·user·authentication·is·remembered.·If
Offset 426, 30 lines modifiedOffset 426, 30 lines modified
426 remembered.·After·this·time·has·passed,·the·authentication·is·no·longer426 remembered.·After·this·time·has·passed,·the·authentication·is·no·longer
427 reported.·Default·is·<code·class="inline">30</code>.</p></li></ul><h2·id="module-web-server-api-data-types"·class="section-heading">427 reported.·Default·is·<code·class="inline">30</code>.</p></li></ul><h2·id="module-web-server-api-data-types"·class="section-heading">
428 ··<a·href="#module-web-server-api-data-types"·class="hover-link">428 ··<a·href="#module-web-server-api-data-types"·class="hover-link">
429 ····<i·class="ri-link-m"·aria-hidden="true"></i>429 ····<i·class="ri-link-m"·aria-hidden="true"></i>
430 ··</a>430 ··</a>
431 ··<span·class="text">Web·server·API·data·types</span>431 ··<span·class="text">Web·server·API·data·types</span>
432 </h2>432 </h2>
433 <p>The·Erlang·web·server·API·data·types·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ModData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">mod</span><span·class="p"·data-group-id="8606410451-1">{</span><span·class="p"·data-group-id="8606410451-1">}</span><span·class="w">433 <p>The·Erlang·web·server·API·data·types·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ModData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">mod</span><span·class="p"·data-group-id="5532449552-1">{</span><span·class="p"·data-group-id="5532449552-1">}</span><span·class="w">
434 </span><span·class="w">434 </span><span·class="w">
435 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8606410451-2">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8606410451-3">{</span><span·class="w">435 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5532449552-2">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5532449552-3">{</span><span·class="w">
436 ····</span><span·class="ss">data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8606410451-4">[</span><span·class="p"·data-group-id="8606410451-4">]</span><span·class="p">,</span><span·class="w">436 ····</span><span·class="ss">data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5532449552-4">[</span><span·class="p"·data-group-id="5532449552-4">]</span><span·class="p">,</span><span·class="w">
437 ····</span><span·class="ss">socket_type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">ip_comm</span><span·class="p">,</span><span·class="w">437 ····</span><span·class="ss">socket_type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">ip_comm</span><span·class="p">,</span><span·class="w">
438 ····</span><span·class="ss">socket</span><span·class="p">,</span><span·class="w">438 ····</span><span·class="ss">socket</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 3829/49483 bytes (7.74%) of diff not shown.
294 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.1/doc/html/inets.epub
4.03 KB
zipinfo {}
    
Offset 1, 27 lines modifiedOffset 1, 27 lines modified
1 Zip·file·size:·152528·bytes,·number·of·entries:·251 Zip·file·size:·152531·bytes,·number·of·entries:·25
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:48·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:07·mimetype
3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Feb-13·10:48·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Feb-13·09:07·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···149236·bx·defN·25-Feb-13·10:48·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···149236·bx·defN·25-Feb-13·09:07·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2125·bx·defN·25-Feb-13·10:48·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2125·bx·defN·25-Feb-13·09:07·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····31039·bx·defN·25-Feb-13·10:48·OEBPS/mod_security.xhtml6 ?rw-r--r--··6.1·unx····31039·bx·defN·25-Feb-13·09:07·OEBPS/mod_security.xhtml
7 ?rw-r--r--··6.1·unx····13707·bx·defN·25-Feb-13·10:48·OEBPS/mod_esi.xhtml7 ?rw-r--r--··6.1·unx····13707·bx·defN·25-Feb-13·09:07·OEBPS/mod_esi.xhtml
8 ?rw-r--r--··6.1·unx····76409·bx·defN·25-Feb-13·10:48·OEBPS/mod_auth.xhtml8 ?rw-r--r--··6.1·unx····76409·bx·defN·25-Feb-13·09:07·OEBPS/mod_auth.xhtml
9 ?rw-r--r--··6.1·unx····15432·bx·defN·25-Feb-13·10:48·OEBPS/mod_alias.xhtml9 ?rw-r--r--··6.1·unx····15432·bx·defN·25-Feb-13·09:07·OEBPS/mod_alias.xhtml
10 ?rw-r--r--··6.1·unx·····1431·bx·defN·25-Feb-13·10:48·OEBPS/introduction.xhtml10 ?rw-r--r--··6.1·unx·····1431·bx·defN·25-Feb-13·09:07·OEBPS/introduction.xhtml
11 ?rw-r--r--··6.1·unx·····2619·bx·defN·25-Feb-13·10:48·OEBPS/inets_services.xhtml11 ?rw-r--r--··6.1·unx·····2619·bx·defN·25-Feb-13·09:07·OEBPS/inets_services.xhtml
12 ?rw-r--r--··6.1·unx····19741·bx·defN·25-Feb-13·10:48·OEBPS/inets.xhtml12 ?rw-r--r--··6.1·unx····19741·bx·defN·25-Feb-13·09:07·OEBPS/inets.xhtml
13 ?rw-r--r--··6.1·unx····39157·bx·defN·25-Feb-13·10:48·OEBPS/httpd_util.xhtml13 ?rw-r--r--··6.1·unx····39157·bx·defN·25-Feb-13·09:07·OEBPS/httpd_util.xhtml
14 ?rw-r--r--··6.1·unx·····7600·bx·defN·25-Feb-13·10:48·OEBPS/httpd_socket.xhtml14 ?rw-r--r--··6.1·unx·····7600·bx·defN·25-Feb-13·09:07·OEBPS/httpd_socket.xhtml
15 ?rw-r--r--··6.1·unx·····6327·bx·defN·25-Feb-13·10:48·OEBPS/httpd_custom_api.xhtml15 ?rw-r--r--··6.1·unx·····6327·bx·defN·25-Feb-13·09:07·OEBPS/httpd_custom_api.xhtml
16 ?rw-r--r--··6.1·unx···110849·bx·defN·25-Feb-13·10:48·OEBPS/httpd.xhtml16 ?rw-r--r--··6.1·unx···110849·bx·defN·25-Feb-13·09:07·OEBPS/httpd.xhtml
17 ?rw-r--r--··6.1·unx····85351·bx·defN·25-Feb-13·10:48·OEBPS/httpc.xhtml17 ?rw-r--r--··6.1·unx····85351·bx·defN·25-Feb-13·09:07·OEBPS/httpc.xhtml
18 ?rw-r--r--··6.1·unx·····5591·bx·defN·25-Feb-13·10:48·OEBPS/http_uri.xhtml18 ?rw-r--r--··6.1·unx·····5591·bx·defN·25-Feb-13·09:07·OEBPS/http_uri.xhtml
19 ?rw-r--r--··6.1·unx····50557·bx·defN·25-Feb-13·10:48·OEBPS/http_server.xhtml19 ?rw-r--r--··6.1·unx····50557·bx·defN·25-Feb-13·09:07·OEBPS/http_server.xhtml
20 ?rw-r--r--··6.1·unx····21764·bx·defN·25-Feb-13·10:48·OEBPS/http_client.xhtml20 ?rw-r--r--··6.1·unx····21764·bx·defN·25-Feb-13·09:07·OEBPS/http_client.xhtml
21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:48·OEBPS/dist/epub-erlang-ESPT6BQV.css21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:07·OEBPS/dist/epub-erlang-ESPT6BQV.css
22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:48·OEBPS/dist/epub-LSJCIYTM.js22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:07·OEBPS/dist/epub-LSJCIYTM.js
23 ?rw-r--r--··6.1·unx·····3408·bx·defN·25-Feb-13·10:48·OEBPS/content.opf23 ?rw-r--r--··6.1·unx·····3408·bx·defN·25-Feb-13·09:07·OEBPS/content.opf
24 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:48·OEBPS/assets/logo.png24 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:07·OEBPS/assets/logo.png
25 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:48·META-INF/container.xml25 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:07·META-INF/container.xml
26 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:48·META-INF/com.apple.ibooks.display-options.xml26 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:07·META-INF/com.apple.ibooks.display-options.xml
27 25·files,·664389·bytes·uncompressed,·148208·bytes·compressed:··77.7%27 25·files,·664389·bytes·uncompressed,·148211·bytes·compressed:··77.7%
137 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:48:02,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:07:18,·uncompressed·size·20,·method=store
2.43 KB
OEBPS/inets_services.xhtml
    
Offset 32, 12 lines modifiedOffset 32, 12 lines modified
32 takeover,·configure·the·services·to·be·started·at·application·startup.·When32 takeover,·configure·the·services·to·be·started·at·application·startup.·When
33 starting·the·<code·class="inline">Inets</code>·application,·the·<code·class="inline">Inets</code>·top·supervisor·starts·a·number·of33 starting·the·<code·class="inline">Inets</code>·application,·the·<code·class="inline">Inets</code>·top·supervisor·starts·a·number·of
34 subsupervisors·and·worker·processes·for·handling·the·provided·services.·When34 subsupervisors·and·worker·processes·for·handling·the·provided·services.·When
35 starting·services·dynamically,·new·children·are·added·to·the·supervision·tree,35 starting·services·dynamically,·new·children·are·added·to·the·supervision·tree,
36 unless·the·service·is·started·with·the·standalone·option.·In·this·case·the36 unless·the·service·is·started·with·the·standalone·option.·In·this·case·the
37 service·is·linked·to·the·calling·process·and·all·OTP·application·features,·such37 service·is·linked·to·the·calling·process·and·all·OTP·application·features,·such
38 as·soft·upgrade,·are·lost.</p><p>Services·to·be·configured·for·startup·at·application·startup·are·to·be·put·into38 as·soft·upgrade,·are·lost.</p><p>Services·to·be·configured·for·startup·at·application·startup·are·to·be·put·into
39 the·Erlang·node·configuration·file·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9118901412-1">[</span><span·class="p"·data-group-id="9118901412-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9118901412-3">[</span><span·class="p"·data-group-id="9118901412-4">{</spa[·...·truncated·by·diffoscope;·len:·329,·SHA:·81cf664f4631b9778562677fa4fd873e816d97172388383adcc432ab74f5185a·...·]-1">]</span><span·class="p">.</span></code></pre><p>For·details·of·what·to·put·in·the·list·of·configured·services,·see·the39 the·Erlang·node·configuration·file·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0521735466-1">[</span><span·class="p"·data-group-id="0521735466-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0521735466-3">[</span><span·class="p"·data-group-id="0521735466-4">{</spa[·...·truncated·by·diffoscope;·len:·329,·SHA:·0ad95f12f27fdcd54257ade0b6e4bf3df6c3958c1e01103d4f0410048ac01dd7·...·]-1">]</span><span·class="p">.</span></code></pre><p>For·details·of·what·to·put·in·the·list·of·configured·services,·see·the
40 documentation·for·the·services·to·be·configured.</p>40 documentation·for·the·services·to·be·configured.</p>
  
41 ··</body>41 ··</body>
42 </html>42 </html>
48.4 KB
OEBPS/httpd.xhtml
Max HTML report size reached
7.41 KB
OEBPS/httpc.xhtml
Max HTML report size reached
53.2 KB
OEBPS/http_server.xhtml
Max HTML report size reached
39.9 KB
OEBPS/http_client.xhtml
Max HTML report size reached
1.22 KB
OEBPS/content.opf
1.19 KB
OEBPS/content.opf
Max HTML report size reached
2.68 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.1/doc/html/inets_services.html
    
Offset 137, 15 lines modifiedOffset 137, 15 lines modified
137 takeover,·configure·the·services·to·be·started·at·application·startup.·When137 takeover,·configure·the·services·to·be·started·at·application·startup.·When
138 starting·the·<code·class="inline">Inets</code>·application,·the·<code·class="inline">Inets</code>·top·supervisor·starts·a·number·of138 starting·the·<code·class="inline">Inets</code>·application,·the·<code·class="inline">Inets</code>·top·supervisor·starts·a·number·of
139 subsupervisors·and·worker·processes·for·handling·the·provided·services.·When139 subsupervisors·and·worker·processes·for·handling·the·provided·services.·When
140 starting·services·dynamically,·new·children·are·added·to·the·supervision·tree,140 starting·services·dynamically,·new·children·are·added·to·the·supervision·tree,
141 unless·the·service·is·started·with·the·standalone·option.·In·this·case·the141 unless·the·service·is·started·with·the·standalone·option.·In·this·case·the
142 service·is·linked·to·the·calling·process·and·all·OTP·application·features,·such142 service·is·linked·to·the·calling·process·and·all·OTP·application·features,·such
143 as·soft·upgrade,·are·lost.</p><p>Services·to·be·configured·for·startup·at·application·startup·are·to·be·put·into143 as·soft·upgrade,·are·lost.</p><p>Services·to·be·configured·for·startup·at·application·startup·are·to·be·put·into
144 the·Erlang·node·configuration·file·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7210192996-1">[</span><span·class="p"·data-group-id="7210192996-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7210192996-3">[</span><span·class="p"·data-group-id="7210192996-4">{</span[·...·truncated·by·diffoscope;·len:·328,·SHA:·eb699af270ff22aaadaaea948fd433bdb6d6e0de4c0e4f99183bda18de9096e2·...·]-1">]</span><span·class="p">.</span></code></pre><p>For·details·of·what·to·put·in·the·list·of·configured·services,·see·the144 the·Erlang·node·configuration·file·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7155762854-1">[</span><span·class="p"·data-group-id="7155762854-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7155762854-3">[</span><span·class="p"·data-group-id="7155762854-4">{</span[·...·truncated·by·diffoscope;·len:·328,·SHA:·a599b0a84a63716ae0d7ea1db12a4636e1acea0e0e79cced304071a93b137bdf·...·]-1">]</span><span·class="p">.</span></code></pre><p>For·details·of·what·to·put·in·the·list·of·configured·services,·see·the
145 documentation·for·the·services·to·be·configured.</p>145 documentation·for·the·services·to·be·configured.</p>
146 </div>146 </div>
  
147 <div·class="bottom-actions"·id="bottom-actions">147 <div·class="bottom-actions"·id="bottom-actions">
148 ··<div·class="bottom-actions-item">148 ··<div·class="bottom-actions-item">
  
149 ······<a·href="introduction.html"·class="bottom-actions-button"·rel="prev">149 ······<a·href="introduction.html"·class="bottom-actions-button"·rel="prev">
841 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/allclasses-index.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>All·Classes·and·Interfaces·(Java-Erlang·Interface·Library)</title>5 <title>All·Classes·and·Interfaces·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="class·index">9 <meta·name="description"·content="class·index">
10 <meta·name="generator"·content="javadoc/AllClassesIndexWriter">10 <meta·name="generator"·content="javadoc/AllClassesIndexWriter">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
832 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/allpackages-index.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>All·Packages·(Java-Erlang·Interface·Library)</title>5 <title>All·Packages·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="package·index">9 <meta·name="description"·content="package·index">
10 <meta·name="generator"·content="javadoc/AllPackagesIndexWriter">10 <meta·name="generator"·content="javadoc/AllPackagesIndexWriter">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
952 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractConnection.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>AbstractConnection·(Java-Erlang·Interface·Library)</title>5 <title>AbstractConnection·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·AbstractConnection">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·AbstractConnection">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/AbstractNode.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>AbstractNode·(Java-Erlang·Interface·Library)</title>5 <title>AbstractNode·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·AbstractNode">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·AbstractNode">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/GenericQueue.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>GenericQueue·(Java-Erlang·Interface·Library)</title>5 <title>GenericQueue·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·GenericQueue">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·GenericQueue">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
944 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpAuthException.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpAuthException·(Java-Erlang·Interface·Library)</title>5 <title>OtpAuthException·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpAuthException">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpAuthException">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpConnection.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpConnection·(Java-Erlang·Interface·Library)</title>5 <title>OtpConnection·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpConnection">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpConnection">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
956 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpCookedConnection.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpCookedConnection·(Java-Erlang·Interface·Library)</title>5 <title>OtpCookedConnection·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpCookedConnection">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpCookedConnection">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
908 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpEpmd.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpEpmd·(Java-Erlang·Interface·Library)</title>5 <title>OtpEpmd·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpEpmd">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpEpmd">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangAtom.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangAtom·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangAtom·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangAtom">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangAtom">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
940 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBinary.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangBinary·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangBinary·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangBinary">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangBinary">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
940 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBitstr.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangBitstr·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangBitstr·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangBitstr">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangBitstr">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
944 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangBoolean.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangBoolean·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangBoolean·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangBoolean">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangBoolean">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangByte.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangByte·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangByte·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangByte">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangByte">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangChar.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangChar·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangChar·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangChar">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangChar">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
976 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDecodeException.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangDecodeException·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangDecodeException·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangDecodeException">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangDecodeException">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
940 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangDouble.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangDouble·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangDouble·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangDouble">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangDouble">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
952 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangException.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangException·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangException·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangException">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangException">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExit.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangExit·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangExit·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangExit">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangExit">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
960 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangExternalFun.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangExternalFun·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangExternalFun·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangExternalFun">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangExternalFun">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
936 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFloat.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangFloat·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangFloat·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangFloat">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangFloat">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangFun.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangFun·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangFun·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangFun">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangFun">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangInt.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangInt·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangInt·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangInt">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangInt">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
972 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.SubList.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangList.SubList·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangList.SubList·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangList,·class:·SubList">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangList,·class:·SubList">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangList.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangList·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangList·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangList">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangList">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangLong.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangLong·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangLong·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangLong">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangLong">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangMap.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangMap·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangMap·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangMap">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangMap">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
968 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.Hash.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangObject.Hash·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangObject.Hash·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangObject,·class:·Hash">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangObject,·class:·Hash">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
940 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangObject.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangObject·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangObject·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangObject">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangObject">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPid.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangPid·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangPid·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangPid">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangPid">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangPort.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangPort·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangPort·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangPort">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangPort">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
972 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRangeException.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangRangeException·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangRangeException·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangRangeException">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangRangeException">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangRef.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangRef·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangRef·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangRef">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangRef">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
936 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangShort.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangShort·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangShort·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangShort">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangShort">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
940 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangString.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangString·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangString·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangString">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangString">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
936 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangTuple.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangTuple·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangTuple·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangTuple">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangTuple">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUInt.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangUInt·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangUInt·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangUInt">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangUInt">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
940 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpErlangUShort.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpErlangUShort·(Java-Erlang·Interface·Library)</title>5 <title>OtpErlangUShort·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangUShort">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpErlangUShort">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpException.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpException·(Java-Erlang·Interface·Library)</title>5 <title>OtpException·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpException">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpException">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
924 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpExternal.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpExternal·(Java-Erlang·Interface·Library)</title>5 <title>OtpExternal·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpExternal">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpExternal">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
984 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpGenericTransportFactory.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpGenericTransportFactory·(Java-Erlang·Interface·Library)</title>5 <title>OtpGenericTransportFactory·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpGenericTransportFactory">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpGenericTransportFactory">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
936 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpInputStream.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpInputStream·(Java-Erlang·Interface·Library)</title>5 <title>OtpInputStream·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpInputStream">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpInputStream">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
928 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpLocalNode.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpLocalNode·(Java-Erlang·Interface·Library)</title>5 <title>OtpLocalNode·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpLocalNode">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpLocalNode">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
908 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMbox.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpMbox·(Java-Erlang·Interface·Library)</title>5 <title>OtpMbox·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpMbox">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpMbox">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
904 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpMsg.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpMsg·(Java-Erlang·Interface·Library)</title>5 <title>OtpMsg·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpMsg">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpMsg">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
952 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Acceptor.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpNode.Acceptor·(Java-Erlang·Interface·Library)</title>5 <title>OtpNode.Acceptor·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNode,·class:·Acceptor">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNode,·class:·Acceptor">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
956 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.Mailboxes.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpNode.Mailboxes·(Java-Erlang·Interface·Library)</title>5 <title>OtpNode.Mailboxes·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNode,·class:·Mailboxes">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNode,·class:·Mailboxes">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
908 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNode.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpNode·(Java-Erlang·Interface·Library)</title>5 <title>OtpNode·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNode">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNode">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpNodeStatus.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpNodeStatus·(Java-Erlang·Interface·Library)</title>5 <title>OtpNodeStatus·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNodeStatus">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpNodeStatus">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
940 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpOutputStream.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpOutputStream·(Java-Erlang·Interface·Library)</title>5 <title>OtpOutputStream·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpOutputStream">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpOutputStream">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
908 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpPeer.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpPeer·(Java-Erlang·Interface·Library)</title>5 <title>OtpPeer·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpPeer">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpPeer">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
908 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSelf.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpSelf·(Java-Erlang·Interface·Library)</title>5 <title>OtpSelf·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpSelf">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpSelf">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
916 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServer.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpServer·(Java-Erlang·Interface·Library)</title>5 <title>OtpServer·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpServer">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpServer">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
976 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerSocketTransport.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpServerSocketTransport·(Java-Erlang·Interface·Library)</title>5 <title>OtpServerSocketTransport·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpServerSocketTransport">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpServerSocketTransport">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
956 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpServerTransport.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpServerTransport·(Java-Erlang·Interface·Library)</title>5 <title>OtpServerTransport·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·interface:·OtpServerTransport">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·interface:·OtpServerTransport">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
952 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransport.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpSocketTransport·(Java-Erlang·Interface·Library)</title>5 <title>OtpSocketTransport·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpSocketTransport">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpSocketTransport">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
980 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpSocketTransportFactory.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpSocketTransportFactory·(Java-Erlang·Interface·Library)</title>5 <title>OtpSocketTransportFactory·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpSocketTransportFactory">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·class:·OtpSocketTransportFactory">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
932 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransport.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpTransport·(Java-Erlang·Interface·Library)</title>5 <title>OtpTransport·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·interface:·OtpTransport">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·interface:·OtpTransport">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
960 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/OtpTransportFactory.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>OtpTransportFactory·(Java-Erlang·Interface·Library)</title>5 <title>OtpTransportFactory·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·interface:·OtpTransportFactory">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang,·interface:·OtpTransportFactory">
10 <meta·name="generator"·content="javadoc/ClassWriterImpl">10 <meta·name="generator"·content="javadoc/ClassWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
926 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-summary.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>com.ericsson.otp.erlang·(Java-Erlang·Interface·Library)</title>5 <title>com.ericsson.otp.erlang·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang">9 <meta·name="description"·content="declaration:·package:·com.ericsson.otp.erlang">
10 <meta·name="generator"·content="javadoc/PackageWriterImpl">10 <meta·name="generator"·content="javadoc/PackageWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
929 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/com/ericsson/otp/erlang/package-tree.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>com.ericsson.otp.erlang·Class·Hierarchy·(Java-Erlang·Interface·Library)</title>5 <title>com.ericsson.otp.erlang·Class·Hierarchy·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="tree:·package:·com.ericsson.otp.erlang">9 <meta·name="description"·content="tree:·package:·com.ericsson.otp.erlang">
10 <meta·name="generator"·content="javadoc/PackageTreeWriter">10 <meta·name="generator"·content="javadoc/PackageTreeWriter">
11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="../../../../stylesheet.css"·title="Style">
848 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/constant-values.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>Constant·Field·Values·(Java-Erlang·Interface·Library)</title>5 <title>Constant·Field·Values·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="summary·of·constants">9 <meta·name="description"·content="summary·of·constants">
10 <meta·name="generator"·content="javadoc/ConstantsSummaryWriterImpl">10 <meta·name="generator"·content="javadoc/ConstantsSummaryWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
835 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/deprecated-list.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>Deprecated·List·(Java-Erlang·Interface·Library)</title>5 <title>Deprecated·List·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="deprecated·elements">9 <meta·name="description"·content="deprecated·elements">
10 <meta·name="generator"·content="javadoc/DeprecatedListWriter">10 <meta·name="generator"·content="javadoc/DeprecatedListWriter">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
789 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/help-doc.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>API·Help·(Java-Erlang·Interface·Library)</title>5 <title>API·Help·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="help">9 <meta·name="description"·content="help">
10 <meta·name="generator"·content="javadoc/HelpWriter">10 <meta·name="generator"·content="javadoc/HelpWriter">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
790 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/index-all.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>Index·(Java-Erlang·Interface·Library)</title>5 <title>Index·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="index">9 <meta·name="description"·content="index">
10 <meta·name="generator"·content="javadoc/IndexWriter">10 <meta·name="generator"·content="javadoc/IndexWriter">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
790 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/index.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>Java-Erlang·Interface·Library</title>5 <title>Java-Erlang·Interface·Library</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="index·redirect">9 <meta·name="description"·content="index·redirect">
10 <meta·name="generator"·content="javadoc/IndexRedirectWriter">10 <meta·name="generator"·content="javadoc/IndexRedirectWriter">
11 <link·rel="canonical"·href="com/ericsson/otp/erlang/package-summary.html">11 <link·rel="canonical"·href="com/ericsson/otp/erlang/package-summary.html">
812 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/overview-tree.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>Class·Hierarchy·(Java-Erlang·Interface·Library)</title>5 <title>Class·Hierarchy·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="class·tree">9 <meta·name="description"·content="class·tree">
10 <meta·name="generator"·content="javadoc/TreeWriter">10 <meta·name="generator"·content="javadoc/TreeWriter">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
787 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/search.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>Search·(Java-Erlang·Interface·Library)</title>5 <title>Search·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="search">9 <meta·name="description"·content="search">
10 <meta·name="generator"·content="javadoc/SearchWriter">10 <meta·name="generator"·content="javadoc/SearchWriter">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
836 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/assets/java/serialized-form.html
    
Offset 1, 11 lines modifiedOffset 1, 11 lines modified
1 <!DOCTYPE·HTML>1 <!DOCTYPE·HTML>
2 <html·lang="en">2 <html·lang="en">
3 <head>3 <head>
4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·10:49:30·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Thu·Feb·13·09:12:54·GMT·2025·-->
5 <title>Serialized·Form·(Java-Erlang·Interface·Library)</title>5 <title>Serialized·Form·(Java-Erlang·Interface·Library)</title>
6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">6 <meta·name="viewport"·content="width=device-width,·initial-scale=1">
7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">7 <meta·http-equiv="Content-Type"·content="text/html;·charset=UTF-8">
8 <meta·name="dc.created"·content="2025-02-13">8 <meta·name="dc.created"·content="2025-02-13">
9 <meta·name="description"·content="serialized·forms">9 <meta·name="description"·content="serialized·forms">
10 <meta·name="generator"·content="javadoc/SerializedFormWriterImpl">10 <meta·name="generator"·content="javadoc/SerializedFormWriterImpl">
11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">11 <link·rel="stylesheet"·type="text/css"·href="stylesheet.css"·title="Style">
26.2 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/app.html
    
Offset 140, 49 lines modifiedOffset 140, 49 lines modified
140 ····<i·class="ri-link-m"·aria-hidden="true"></i>140 ····<i·class="ri-link-m"·aria-hidden="true"></i>
141 ··</a>141 ··</a>
142 ··<span·class="text">File·Syntax</span>142 ··<span·class="text">File·Syntax</span>
143 </h2>143 </h2>
144 <p>The·application·resource·file·is·to·be·called·<code·class="inline">Application.app</code>,·where144 <p>The·application·resource·file·is·to·be·called·<code·class="inline">Application.app</code>,·where
145 <code·class="inline">Application</code>·is·the·application·name.·The·file·is·to·be·located·in·directory145 <code·class="inline">Application</code>·is·the·application·name.·The·file·is·to·be·located·in·directory
146 <code·class="inline">ebin</code>·for·the·application.</p><p>The·file·must·contain·a·single·Erlang·term,·which·is·called·an·<em>application146 <code·class="inline">ebin</code>·for·the·application.</p><p>The·file·must·contain·a·single·Erlang·term,·which·is·called·an·<em>application
147 specification</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1945118763-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">147 specification</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9898455408-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="1945118763-2">[</span><span·class="p"·data-group-id="1945118763-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">··</span><span·class="n">Description</span><span·class="p"·data-group-id="1945118763-3">}</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="9898455408-2">[</span><span·class="p"·data-group-id="9898455408-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">··</span><span·class="n">Description</span><span·class="p"·data-group-id="9898455408-3">}</span><span·class="p">,</span><span·class="w">
149 ···</span><span·class="p"·data-group-id="1945118763-4">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="w">···········</span><span·class="n">Id</span><span·class="p"·data-group-id="1945118763-4">}</span><span·class="p">,</span><span·class="w">149 ···</span><span·class="p"·data-group-id="9898455408-4">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="w">···········</span><span·class="n">Id</span><span·class="p"·data-group-id="9898455408-4">}</span><span·class="p">,</span><span·class="w">
150 ···</span><span·class="p"·data-group-id="1945118763-5">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">··········</span><span·class="n">Vsn</span><span·class="p"·data-group-id="1945118763-5">}</span><span·class="p">,</span><span·class="w">150 ···</span><span·class="p"·data-group-id="9898455408-5">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">··········</span><span·class="n">Vsn</span><span·class="p"·data-group-id="9898455408-5">}</span><span·class="p">,</span><span·class="w">
151 ···</span><span·class="p"·data-group-id="1945118763-6">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">······</span><span·class="n">Modules</span><span·class="p"·data-group-id="1945118763-6">}</span><span·class="p">,</span><span·class="w">151 ···</span><span·class="p"·data-group-id="9898455408-6">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">······</span><span·class="n">Modules</span><span·class="p"·data-group-id="9898455408-6">}</span><span·class="p">,</span><span·class="w">
152 ···</span><span·class="p"·data-group-id="1945118763-7">{</span><span·class="ss">maxP</span><span·class="p">,</span><span·class="w">·········</span><span·class="n">MaxP</span><span·class="p"·data-group-id="1945118763-7">}</span><span·class="p">,</span><span·class="w">152 ···</span><span·class="p"·data-group-id="9898455408-7">{</span><span·class="ss">maxP</span><span·class="p">,</span><span·class="w">·········</span><span·class="n">MaxP</span><span·class="p"·data-group-id="9898455408-7">}</span><span·class="p">,</span><span·class="w">
153 ···</span><span·class="p"·data-group-id="1945118763-8">{</span><span·class="ss">maxT</span><span·class="p">,</span><span·class="w">·········</span><span·class="n">MaxT</span><span·class="p"·data-group-id="1945118763-8">}</span><span·class="p">,</span><span·class="w">153 ···</span><span·class="p"·data-group-id="9898455408-8">{</span><span·class="ss">maxT</span><span·class="p">,</span><span·class="w">·········</span><span·class="n">MaxT</span><span·class="p"·data-group-id="9898455408-8">}</span><span·class="p">,</span><span·class="w">
154 ···</span><span·class="p"·data-group-id="1945118763-9">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">···</span><span·class="n">Names</span><span·class="p"·data-group-id="1945118763-9">}</span><span·class="p">,</span><span·class="w">154 ···</span><span·class="p"·data-group-id="9898455408-9">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">···</span><span·class="n">Names</span><span·class="p"·data-group-id="9898455408-9">}</span><span·class="p">,</span><span·class="w">
155 ···</span><span·class="p"·data-group-id="1945118763-10">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Apps</span><span·class="p"·data-group-id="1945118763-10">}</span><span·class="p">,</span><span·class="w">155 ···</span><span·class="p"·data-group-id="9898455408-10">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Apps</span><span·class="p"·data-group-id="9898455408-10">}</span><span·class="p">,</span><span·class="w">
156 ···</span><span·class="p"·data-group-id="1945118763-11">{</span><span·class="ss">optional_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Apps</span><span·class="p"·data-group-id="1945118763-11">}</span><span·class="p">,</span><span·class="w">156 ···</span><span·class="p"·data-group-id="9898455408-11">{</span><span·class="ss">optional_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Apps</span><span·class="p"·data-group-id="9898455408-11">}</span><span·class="p">,</span><span·class="w">
157 ···</span><span·class="p"·data-group-id="1945118763-12">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Apps</span><span·class="p"·data-group-id="1945118763-12">}</span><span·class="p">,</span><span·class="w">157 ···</span><span·class="p"·data-group-id="9898455408-12">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Apps</span><span·class="p"·data-group-id="9898455408-12">}</span><span·class="p">,</span><span·class="w">
158 ···</span><span·class="p"·data-group-id="1945118763-13">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">··········</span><span·class="n">Env</span><span·class="p"·data-group-id="1945118763-13">}</span><span·class="p">,</span><span·class="w">158 ···</span><span·class="p"·data-group-id="9898455408-13">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">··········</span><span·class="n">Env</span><span·class="p"·data-group-id="9898455408-13">}</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="1945118763-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">··········</span><span·class="n">Start</span><span·class="p"·data-group-id="1945118763-14">}</span><span·class="p">,</span><span·class="w">159 ···</span><span·class="p"·data-group-id="9898455408-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">··········</span><span·class="n">Start</span><span·class="p"·data-group-id="9898455408-14">}</span><span·class="p">,</span><span·class="w">
160 ···</span><span·class="p"·data-group-id="1945118763-15">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Phases</span><span·class="p"·data-group-id="1945118763-15">}</span><span·class="p">,</span><span·class="w">160 ···</span><span·class="p"·data-group-id="9898455408-15">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Phases</span><span·class="p"·data-group-id="9898455408-15">}</span><span·class="p">,</span><span·class="w">
161 ···</span><span·class="p"·data-group-id="1945118763-16">{</span><span·class="ss">runtime_dependencies</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RTDeps</span><span·class="p"·data-group-id="1945118763-16">}</span><span·class="p"·data-group-id="1945118763-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·a809c51881bcc59e152b5146b9da5e48c21520ac63ceefe1b86ff033d89098c3·...·]-1">}</span><span·class="p">.</span><span·class="w">161 ···</span><span·class="p"·data-group-id="9898455408-16">{</span><span·class="ss">runtime_dependencies</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RTDeps</span><span·class="p"·data-group-id="9898455408-16">}</span><span·class="p"·data-group-id="9898455408-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·f1c4fb9f679a75e15382ec6341eb861ae18a00c23add78877cdfb366252a9ee2·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
162 ·············</span><span·class="n">Value</span><span·class="w">················</span><span·class="n">Default</span><span·class="w">162 ·············</span><span·class="n">Value</span><span·class="w">················</span><span·class="n">Default</span><span·class="w">
163 ·············</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">················</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">163 ·············</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">················</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">
164 </span><span·class="n">Application</span><span·class="w">··</span><span·class="nf">atom</span><span·class="p"·data-group-id="1945118763-17">(</span><span·class="p"·data-group-id="1945118763-17">)</span><span·class="w">···············</span><span·class="o">-</span><span·class="w">164 </span><span·class="n">Application</span><span·class="w">··</span><span·class="nf">atom</span><span·class="p"·data-group-id="9898455408-17">(</span><span·class="p"·data-group-id="9898455408-17">)</span><span·class="w">···············</span><span·class="o">-</span><span·class="w">
165 </span><span·class="n">Description</span><span·class="w">··</span><span·class="nf">string</span><span·class="p"·data-group-id="1945118763-18">(</span><span·class="p"·data-group-id="1945118763-18">)</span><span·class="w">·············</span><span·class="s">&quot;&quot;</span><span·class="w">165 </span><span·class="n">Description</span><span·class="w">··</span><span·class="nf">string</span><span·class="p"·data-group-id="9898455408-18">(</span><span·class="p"·data-group-id="9898455408-18">)</span><span·class="w">·············</span><span·class="s">&quot;&quot;</span><span·class="w">
166 </span><span·class="n">Id</span><span·class="w">···········</span><span·class="nf">string</span><span·class="p"·data-group-id="1945118763-19">(</span><span·class="p"·data-group-id="1945118763-19">)</span><span·class="w">·············</span><span·class="s">&quot;&quot;</span><span·class="w">166 </span><span·class="n">Id</span><span·class="w">···········</span><span·class="nf">string</span><span·class="p"·data-group-id="9898455408-19">(</span><span·class="p"·data-group-id="9898455408-19">)</span><span·class="w">·············</span><span·class="s">&quot;&quot;</span><span·class="w">
167 </span><span·class="n">Vsn</span><span·class="w">··········</span><span·class="nf">string</span><span·class="p"·data-group-id="1945118763-20">(</span><span·class="p"·data-group-id="1945118763-20">)</span><span·class="w">·············</span><span·class="s">&quot;&quot;</span><span·class="w">167 </span><span·class="n">Vsn</span><span·class="w">··········</span><span·class="nf">string</span><span·class="p"·data-group-id="9898455408-20">(</span><span·class="p"·data-group-id="9898455408-20">)</span><span·class="w">·············</span><span·class="s">&quot;&quot;</span><span·class="w">
168 </span><span·class="n">Modules</span><span·class="w">······</span><span·class="p"·data-group-id="1945118763-21">[</span><span·class="n">Module</span><span·class="p"·data-group-id="1945118763-21">]</span><span·class="w">·············</span><span·class="p"·data-group-id="1945118763-22">[</span><span·class="p"·data-group-id="1945118763-22">]</span><span·class="w">168 </span><span·class="n">Modules</span><span·class="w">······</span><span·class="p"·data-group-id="9898455408-21">[</span><span·class="n">Module</span><span·class="p"·data-group-id="9898455408-21">]</span><span·class="w">·············</span><span·class="p"·data-group-id="9898455408-22">[</span><span·class="p"·data-group-id="9898455408-22">]</span><span·class="w">
169 </span><span·class="n">MaxP</span><span·class="w">·········</span><span·class="nf">int</span><span·class="p"·data-group-id="1945118763-23">(</span><span·class="p"·data-group-id="1945118763-23">)</span><span·class="w">················</span><span·class="ss">infinity</span><span·class="w">169 </span><span·class="n">MaxP</span><span·class="w">·········</span><span·class="nf">int</span><span·class="p"·data-group-id="9898455408-23">(</span><span·class="p"·data-group-id="9898455408-23">)</span><span·class="w">················</span><span·class="ss">infinity</span><span·class="w">
170 </span><span·class="n">MaxT</span><span·class="w">·········</span><span·class="nf">int</span><span·class="p"·data-group-id="1945118763-24">(</span><span·class="p"·data-group-id="1945118763-24">)</span><span·class="w">················</span><span·class="ss">infinity</span><span·class="w">170 </span><span·class="n">MaxT</span><span·class="w">·········</span><span·class="nf">int</span><span·class="p"·data-group-id="9898455408-24">(</span><span·class="p"·data-group-id="9898455408-24">)</span><span·class="w">················</span><span·class="ss">infinity</span><span·class="w">
171 </span><span·class="n">Names</span><span·class="w">········</span><span·class="p"·data-group-id="1945118763-25">[</span><span·class="n">Name</span><span·class="p"·data-group-id="1945118763-25">]</span><span·class="w">···············</span><span·class="p"·data-group-id="1945118763-26">[</span><span·class="p"·data-group-id="1945118763-26">]</span><span·class="w">171 </span><span·class="n">Names</span><span·class="w">········</span><span·class="p"·data-group-id="9898455408-25">[</span><span·class="n">Name</span><span·class="p"·data-group-id="9898455408-25">]</span><span·class="w">···············</span><span·class="p"·data-group-id="9898455408-26">[</span><span·class="p"·data-group-id="9898455408-26">]</span><span·class="w">
172 </span><span·class="n">Apps</span><span·class="w">·········</span><span·class="p"·data-group-id="1945118763-27">[</span><span·class="n">App</span><span·class="p"·data-group-id="1945118763-27">]</span><span·class="w">················</span><span·class="p"·data-group-id="1945118763-28">[</span><span·class="p"·data-group-id="1945118763-28">]</span><span·class="w">172 </span><span·class="n">Apps</span><span·class="w">·········</span><span·class="p"·data-group-id="9898455408-27">[</span><span·class="n">App</span><span·class="p"·data-group-id="9898455408-27">]</span><span·class="w">················</span><span·class="p"·data-group-id="9898455408-28">[</span><span·class="p"·data-group-id="9898455408-28">]</span><span·class="w">
173 </span><span·class="n">Env</span><span·class="w">··········</span><span·class="p"·data-group-id="1945118763-29">[</span><span·class="p"·data-group-id="1945118763-30">{</span><span·class="n">Par</span><span·class="p">,</span><span·class="n">Val</span><span·class="p"·data-group-id="1945118763-30">}</span><span·class="p"·data-group-id="1945118763-29">]</[·...·truncated·by·diffoscope;·len:·133,·SHA:·c0c65dfb3a725fa84b9918a8b8ed2a8cb80dff7a89f8d0509fd20cb641826f9c·...·]-31">]</span><span·class="w">173 </span><span·class="n">Env</span><span·class="w">··········</span><span·class="p"·data-group-id="9898455408-29">[</span><span·class="p"·data-group-id="9898455408-30">{</span><span·class="n">Par</span><span·class="p">,</span><span·class="n">Val</span><span·class="p"·data-group-id="9898455408-30">}</span><span·class="p"·data-group-id="9898455408-29">]</[·...·truncated·by·diffoscope;·len:·133,·SHA:·216dfa8a5034efcb2c6f5672698b912c07b7d1b9e69dde2f13a170a002c6fc0a·...·]-31">]</span><span·class="w">
174 </span><span·class="n">Start</span><span·class="w">········</span><span·class="p"·data-group-id="1945118763-32">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="1945118763-32">}</span><span·class="w">···</span><span·class="p"·data-group-id="1945118763-33">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·c19435a4a48df5b3503a59c9a0fa13471afbd052d7e866a4dba9a96f73750dee·...·]-33">]</span><span·class="w">174 </span><span·class="n">Start</span><span·class="w">········</span><span·class="p"·data-group-id="9898455408-32">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="9898455408-32">}</span><span·class="w">···</span><span·class="p"·data-group-id="9898455408-33">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4b36cfecfe49f5fd9fe40416b1d2ee090d667e7c0d22fdd7ee8a64f263b7bb25·...·]-33">]</span><span·class="w">
175 </span><span·class="n">Phases</span><span·class="w">·······</span><span·class="p"·data-group-id="1945118763-34">[</span><span·class="p"·data-group-id="1945118763-35">{</span><span·class="n">Phase</span><span·class="p">,</span><span·class="n">PhaseArgs</span><span·class="p"·data-group-id="1945118763-35">}</span><span·class="p"·data-group-id="1945118763-34">]</span><span·class="w">··</span><span·class="ss">undefined</span><span·class="w">175 </span><span·class="n">Phases</span><span·class="w">·······</span><span·class="p"·data-group-id="9898455408-34">[</span><span·class="p"·data-group-id="9898455408-35">{</span><span·class="n">Phase</span><span·class="p">,</span><span·class="n">PhaseArgs</span><span·class="p"·data-group-id="9898455408-35">}</span><span·class="p"·data-group-id="9898455408-34">]</span><span·class="w">··</span><span·class="ss">undefined</span><span·class="w">
176 </span><span·class="n">RTDeps</span><span·class="w">·······</span><span·class="p"·data-group-id="1945118763-36">[</span><span·class="n">ApplicationVersion</span><span·class="p"·data-group-id="1945118763-36">]</span><span·class="w">·</span><span·class="p"·data-group-id="1945118763-37">[</span><span·class="p"·data-group-id="1945118763-37">]</span><span·class="w">176 </span><span·class="n">RTDeps</span><span·class="w">·······</span><span·class="p"·data-group-id="9898455408-36">[</span><span·class="n">ApplicationVersion</span><span·class="p"·data-group-id="9898455408-36">]</span><span·class="w">·</span><span·class="p"·data-group-id="9898455408-37">[</span><span·class="p"·data-group-id="9898455408-37">]</span><span·class="w">
  
177 </span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">App</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Par</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Phase</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="1945118763-38">(</span><span·class="p"·data-group-id="1945118763-38">)</span><span·class="w">177 </span><span·class="n">Module</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">App</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Par</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Phase</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9898455408-38">(</span><span·class="p"·data-group-id="9898455408-38">)</span><span·class="w">
178 </span><span·class="n">Val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">StartArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PhaseArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="1945118763-39">(</span><span·class="p"·data-group-id="1945118763-39">)</span><span·class="w">178 </span><span·class="n">Val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">StartArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PhaseArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="9898455408-39">(</span><span·class="p"·data-group-id="9898455408-39">)</span><span·class="w">
179 </span><span·class="n">ApplicationVersion</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="1945118763-40">(</span><span·class="p"·data-group-id="1945118763-40">)</span></code></pre><ul><li><strong><code·class="inline">Application</code></strong>·-·Application·name.</li></ul><p>For·the·application·controller,·all·keys·are·optional.·The·respective·default179 </span><span·class="n">ApplicationVersion</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="9898455408-40">(</span><span·class="p"·data-group-id="9898455408-40">)</span></code></pre><ul><li><strong><code·class="inline">Application</code></strong>·-·Application·name.</li></ul><p>For·the·application·controller,·all·keys·are·optional.·The·respective·default
180 values·are·used·for·any·omitted·keys.</p><p>The·functions·in·<code·class="inline">systools</code>·require·more·information.·If·they·are·used,·the180 values·are·used·for·any·omitted·keys.</p><p>The·functions·in·<code·class="inline">systools</code>·require·more·information.·If·they·are·used,·the
181 following·keys·are·mandatory:</p><ul><li><code·class="inline">description</code></li><li><code·class="inline">vsn</code></li><li><code·class="inline">modules</code></li><li><code·class="inline">registered</code></li><li><code·class="inline">applications</code></li></ul><p>The·other·keys·are·ignored·by·<code·class="inline">systools</code>.</p><ul><li><p><strong><code·class="inline">description</code></strong>·-·A·one-line·description·of·the·application.</p></li><li><p><strong><code·class="inline">id</code></strong>·-·Product·identification,·or·similar.</p></li><li><p><strong><code·class="inline">vsn</code></strong>·-·Version·of·the·application.</p></li><li><p><strong><code·class="inline">modules</code></strong>·-·All·modules·introduced·by·this·application.·<code·class="inline">systools</code>·uses181 following·keys·are·mandatory:</p><ul><li><code·class="inline">description</code></li><li><code·class="inline">vsn</code></li><li><code·class="inline">modules</code></li><li><code·class="inline">registered</code></li><li><code·class="inline">applications</code></li></ul><p>The·other·keys·are·ignored·by·<code·class="inline">systools</code>.</p><ul><li><p><strong><code·class="inline">description</code></strong>·-·A·one-line·description·of·the·application.</p></li><li><p><strong><code·class="inline">id</code></strong>·-·Product·identification,·or·similar.</p></li><li><p><strong><code·class="inline">vsn</code></strong>·-·Version·of·the·application.</p></li><li><p><strong><code·class="inline">modules</code></strong>·-·All·modules·introduced·by·this·application.·<code·class="inline">systools</code>·uses
182 this·list·when·generating·start·scripts·and·tar·files.·A·module·can·only·be182 this·list·when·generating·start·scripts·and·tar·files.·A·module·can·only·be
183 defined·in·one·application.</p></li><li><p><strong><code·class="inline">maxP</code></strong>·-·<em>Deprecated·-·is·ignored</em></p><p>Maximum·number·of·processes·allowed·in·the·application.</p></li><li><p><strong><code·class="inline">maxT</code></strong>·-·Maximum·time,·in·milliseconds,·that·the·application·is·allowed·to183 defined·in·one·application.</p></li><li><p><strong><code·class="inline">maxP</code></strong>·-·<em>Deprecated·-·is·ignored</em></p><p>Maximum·number·of·processes·allowed·in·the·application.</p></li><li><p><strong><code·class="inline">maxT</code></strong>·-·Maximum·time,·in·milliseconds,·that·the·application·is·allowed·to
184 run.·After·the·specified·time,·the·application·terminates·automatically.</p></li><li><p><strong><code·class="inline">registered</code></strong>·-·All·names·of·registered·processes·started·in·this184 run.·After·the·specified·time,·the·application·terminates·automatically.</p></li><li><p><strong><code·class="inline">registered</code></strong>·-·All·names·of·registered·processes·started·in·this
185 application.·<code·class="inline">systools</code>·uses·this·list·to·detect·name·clashes·between185 application.·<code·class="inline">systools</code>·uses·this·list·to·detect·name·clashes·between
186 different·applications.</p></li><li><p><strong><code·class="inline">included_applications</code></strong>·-·All·applications·included·by·this·application.186 different·applications.</p></li><li><p><strong><code·class="inline">included_applications</code></strong>·-·All·applications·included·by·this·application.
Offset 207, 15 lines modifiedOffset 207, 15 lines modified
207 be·omitted·for·applications·without·processes,·typically·code·libraries,·for207 be·omitted·for·applications·without·processes,·typically·code·libraries,·for
208 example,·STDLIB.</p></li><li><p><strong><code·class="inline">start_phases</code></strong>·-·A·list·of·start·phases·and·corresponding·start·arguments208 example,·STDLIB.</p></li><li><p><strong><code·class="inline">start_phases</code></strong>·-·A·list·of·start·phases·and·corresponding·start·arguments
209 for·the·application.·If·this·key·is·present,·the·application·master,·in209 for·the·application.·If·this·key·is·present,·the·application·master,·in
210 addition·to·the·usual·call·to·<code·class="inline">Module:start/2</code>,·also·calls210 addition·to·the·usual·call·to·<code·class="inline">Module:start/2</code>,·also·calls
211 <code·class="inline">Module:start_phase(Phase,Type,PhaseArgs)</code>·for·each·start·phase·defined·by·key211 <code·class="inline">Module:start_phase(Phase,Type,PhaseArgs)</code>·for·each·start·phase·defined·by·key
212 <code·class="inline">start_phases</code>.·Only·after·this·extended·start·procedure,212 <code·class="inline">start_phases</code>.·Only·after·this·extended·start·procedure,
213 <code·class="inline">application:start(Application)</code>·returns.</p><p>Start·phases·can·be·used·to·synchronize·startup·of·an·application·and·its213 <code·class="inline">application:start(Application)</code>·returns.</p><p>Start·phases·can·be·used·to·synchronize·startup·of·an·application·and·its
214 included·applications.·In·this·case,·key·<code·class="inline">mod</code>·must·be·specified·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4056886205-1">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4056886205-2">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="40568862[·...·truncated·by·diffoscope;·len:·246,·SHA:·9a5f305cada5691a66b954c6e228d28a9f9169b9eaa0bfe0870cb915da006d29·...·]-1">}</span></code></pre><p>The·application·master·then·calls·<code·class="inline">Module:start/2</code>·for·the·primary214 included·applications.·In·this·case,·key·<code·class="inline">mod</code>·must·be·specified·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0175704374-1">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0175704374-2">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="01757043[·...·truncated·by·diffoscope;·len:·246,·SHA:·8a0fee40d1894776c35b393134087fa80704de1c9cefa3bfbec2bb62234798ac·...·]-1">}</span></code></pre><p>The·application·master·then·calls·<code·class="inline">Module:start/2</code>·for·the·primary
215 application,·followed·by·calls·to·<code·class="inline">Module:start_phase/3</code>·for·each·start·phase215 application,·followed·by·calls·to·<code·class="inline">Module:start_phase/3</code>·for·each·start·phase
216 (as·defined·for·the·primary·application),·both·for·the·primary·application·and216 (as·defined·for·the·primary·application),·both·for·the·primary·application·and
217 for·each·of·its·included·applications,·for·which·the·start·phase·is·defined.</p><p>This·implies·that·for·an·included·application,·the·set·of·start·phases·must·be217 for·each·of·its·included·applications,·for·which·the·start·phase·is·defined.</p><p>This·implies·that·for·an·included·application,·the·set·of·start·phases·must·be
218 a·subset·of·the·set·of·phases·defined·for·the·primary·application.·For·more218 a·subset·of·the·set·of·phases·defined·for·the·primary·application.·For·more
219 information,·see·<a·href="../../../../doc/system/applications.html">OTP·Design·Principles</a>.</p></li><li><p><strong><code·class="inline"·id="runtime_dependencies">runtime_dependencies</code></strong>·-·A·list·of·application219 information,·see·<a·href="../../../../doc/system/applications.html">OTP·Design·Principles</a>.</p></li><li><p><strong><code·class="inline"·id="runtime_dependencies">runtime_dependencies</code></strong>·-·A·list·of·application
220 versions·that·the·application·depends·on.·An·example·of·such·an·application220 versions·that·the·application·depends·on.·An·example·of·such·an·application
221 version·is·<code·class="inline">&quot;kernel-3.0&quot;</code>.·Application·versions·specified·as·runtime221 version·is·<code·class="inline">&quot;kernel-3.0&quot;</code>.·Application·versions·specified·as·runtime
2.78 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/application.html
    
Offset 1591, 15 lines modifiedOffset 1591, 15 lines modified
1591 distributed.·The·argument·overrides·the·value·for·the·application·in·the·Kernel1591 distributed.·The·argument·overrides·the·value·for·the·application·in·the·Kernel
1592 configuration·parameter·<code·class="inline">distributed</code>.·<code·class="inline">Application</code>·must·be·the·application1592 configuration·parameter·<code·class="inline">distributed</code>.·<code·class="inline">Application</code>·must·be·the·application
1593 name·(same·as·in·the·first·argument).·If·a·node·crashes·and·<code·class="inline">Time</code>·is·specified,1593 name·(same·as·in·the·first·argument).·If·a·node·crashes·and·<code·class="inline">Time</code>·is·specified,
1594 the·application·controller·waits·for·<code·class="inline">Time</code>·milliseconds·before·attempting·to1594 the·application·controller·waits·for·<code·class="inline">Time</code>·milliseconds·before·attempting·to
1595 restart·the·application·on·another·node.·If·<code·class="inline">Time</code>·is·not·specified,·it·defaults1595 restart·the·application·on·another·node.·If·<code·class="inline">Time</code>·is·not·specified,·it·defaults
1596 to·<code·class="inline">0</code>·and·the·application·is·restarted·immediately.</p><p><code·class="inline">Nodes</code>·is·a·list·of·node·names·where·the·application·can·run,·in·priority·from1596 to·<code·class="inline">0</code>·and·the·application·is·restarted·immediately.</p><p><code·class="inline">Nodes</code>·is·a·list·of·node·names·where·the·application·can·run,·in·priority·from
1597 left·to·right.·Node·names·can·be·grouped·using·tuples·to·indicate·that·they·have1597 left·to·right.·Node·names·can·be·grouped·using·tuples·to·indicate·that·they·have
1598 the·same·priority.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6742685707-1">[</span><span·class="ss">cp1@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6742685707-2">{</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cp3@[·...·truncated·by·diffoscope;·len:·105,·SHA:·8c6f76d311f24e3847e36eb486ca504096a2d2b2638ee9fbad5bd3aeb70cbf60·...·]-1">]</span></code></pre><p>This·means·that·the·application·is·preferably·to·be·started·at·<code·class="inline">cp1@cave</code>.·If1598 the·same·priority.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8562024485-1">[</span><span·class="ss">cp1@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8562024485-2">{</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cp3@[·...·truncated·by·diffoscope;·len:·105,·SHA:·b186ab6b1c379e926f87a21ec8d332d8324e14ad3d26e7fd44be4450ccb20239·...·]-1">]</span></code></pre><p>This·means·that·the·application·is·preferably·to·be·started·at·<code·class="inline">cp1@cave</code>.·If
1599 <code·class="inline">cp1@cave</code>·is·down,·the·application·is·to·be·started·at·<code·class="inline">cp2@cave</code>·or1599 <code·class="inline">cp1@cave</code>·is·down,·the·application·is·to·be·started·at·<code·class="inline">cp2@cave</code>·or
1600 <code·class="inline">cp3@cave</code>.</p><p>If·<code·class="inline">Distributed·==·default</code>,·the·value·for·the·application·in·the·Kernel1600 <code·class="inline">cp3@cave</code>.</p><p>If·<code·class="inline">Distributed·==·default</code>,·the·value·for·the·application·in·the·Kernel
1601 configuration·parameter·<code·class="inline">distributed</code>·is·used.</p>1601 configuration·parameter·<code·class="inline">distributed</code>·is·used.</p>
1602 ··</section>1602 ··</section>
1603 </section>1603 </section>
1604 <section·class="detail"·id="loaded_applications/0">1604 <section·class="detail"·id="loaded_applications/0">
  
21.2 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/code.html
    
Offset 189, 19 lines modifiedOffset 189, 19 lines modified
189 <a·href="#lib_dir/2"><code·class="inline">code:lib_dir/2</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erl_prim_loader.html"><code·class="inline">erl_prim_loader</code></a>.</p></section><p>The·Erlang·archives·are·<code·class="inline">ZIP</code>·files·with·extension·<code·class="inline">.ez</code>.·Erlang·archives·can189 <a·href="#lib_dir/2"><code·class="inline">code:lib_dir/2</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erl_prim_loader.html"><code·class="inline">erl_prim_loader</code></a>.</p></section><p>The·Erlang·archives·are·<code·class="inline">ZIP</code>·files·with·extension·<code·class="inline">.ez</code>.·Erlang·archives·can
190 also·be·<a·href="../../../../lib/stdlib-6.2/doc/html/escript.html">enclosed·in·<code·class="inline">escript</code></a>·files·whose·file·extension·is·arbitrary.</p><p>Erlang·archive·files·can·contain·entire·Erlang·applications·or·parts·of190 also·be·<a·href="../../../../lib/stdlib-6.2/doc/html/escript.html">enclosed·in·<code·class="inline">escript</code></a>·files·whose·file·extension·is·arbitrary.</p><p>Erlang·archive·files·can·contain·entire·Erlang·applications·or·parts·of
191 applications.·The·structure·in·an·archive·file·is·the·same·as·the·directory191 applications.·The·structure·in·an·archive·file·is·the·same·as·the·directory
192 structure·for·an·application.·If·you,·for·example,·create·an·archive·of192 structure·for·an·application.·If·you,·for·example,·create·an·archive·of
193 <code·class="inline">mnesia-4.4.7</code>,·the·archive·file·must·be·named·<code·class="inline">mnesia-4.4.7.ez</code>·and·it·must193 <code·class="inline">mnesia-4.4.7</code>,·the·archive·file·must·be·named·<code·class="inline">mnesia-4.4.7.ez</code>·and·it·must
194 contain·a·top·directory·named·<code·class="inline">mnesia-4.4.7</code>.·If·the·version·part·of·the·name·is194 contain·a·top·directory·named·<code·class="inline">mnesia-4.4.7</code>.·If·the·version·part·of·the·name·is
195 omitted,·it·must·also·be·omitted·in·the·archive.·That·is,·a·<code·class="inline">mnesia.ez</code>·archive195 omitted,·it·must·also·be·omitted·in·the·archive.·That·is,·a·<code·class="inline">mnesia.ez</code>·archive
196 must·contain·a·<code·class="inline">mnesia</code>·top·directory.</p><p>An·archive·file·for·an·application·can,·for·example,·be·created·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">zip</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="7004809275-1">(</span><span·class="s">&quot;mnesia-4.4.7.ez&quot;</span><span·class="p">,</span><span·class="w">196 must·contain·a·<code·class="inline">mnesia</code>·top·directory.</p><p>An·archive·file·for·an·application·can,·for·example,·be·created·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">zip</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="3884795157-1">(</span><span·class="s">&quot;mnesia-4.4.7.ez&quot;</span><span·class="p">,</span><span·class="w">
197 »       </span><span·class="p"·data-group-id="7004809275-2">[</span><span·class="s">&quot;mnesia-4.4.7&quot;</span><span·class="p"·data-group-id="7004809275-2">]</span><span·class="p">,</span><span·class="w">197 »       </span><span·class="p"·data-group-id="3884795157-2">[</span><span·class="s">&quot;mnesia-4.4.7&quot;</span><span·class="p"·data-group-id="3884795157-2">]</span><span·class="p">,</span><span·class="w">
198 »       </span><span·class="p"·data-group-id="7004809275-3">[</span><span·class="p"·data-group-id="7004809275-4">{</span><span·class="ss">cwd</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·124,·SHA:·4bd4d6cf54170e1c82b0fbc221855db7c8b9b8394800d93483f396005e78d5cd·...·]-4">}</span><span·class="p">,</span><span·class="w">198 »       </span><span·class="p"·data-group-id="3884795157-3">[</span><span·class="p"·data-group-id="3884795157-4">{</span><span·class="ss">cwd</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·124,·SHA:·14e3d68e8d2f441d995682f4bd54729c183bb89594d8b51ef68fae6ab314ea02·...·]-4">}</span><span·class="p">,</span><span·class="w">
199 »       ·</span><span·class="p"·data-group-id="7004809275-6">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all</span><span·class="p"·data-group-id="7004809275-6">}</span><span·class="p">,</span><span·class="w">199 »       ·</span><span·class="p"·data-group-id="3884795157-6">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all</span><span·class="p"·data-group-id="3884795157-6">}</span><span·class="p">,</span><span·class="w">
200 »       ·</span><span·class="p"·data-group-id="7004809275-7">{</span><span·class="ss">uncompress</span><span·class="p">,</span><span·class="p"·data-group-id="7004809275-8">[</span><span·class="s">&quot;.beam&quot;</span><span·class="p">,</span><span·class="s">&quot;.app&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·180,·SHA:·cb77f0828ff7ce0ae9275c0d13cbea3ec748ab41357813c145c017e5ede9a4e3·...·]-1">)</span><span·class="p">.</span></code></pre><p>Any·file·in·the·archive·can·be·compressed,·but·to·speed·up·the·access·of200 »       ·</span><span·class="p"·data-group-id="3884795157-7">{</span><span·class="ss">uncompress</span><span·class="p">,</span><span·class="p"·data-group-id="3884795157-8">[</span><span·class="s">&quot;.beam&quot;</span><span·class="p">,</span><span·class="s">&quot;.app&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·180,·SHA:·0beba03fad17ea8a71e9b87fb5120d8a071dd73a4de0287e5f16acb731678c9c·...·]-1">)</span><span·class="p">.</span></code></pre><p>Any·file·in·the·archive·can·be·compressed,·but·to·speed·up·the·access·of
201 frequently·read·files,·it·can·be·a·good·idea·to·store·<code·class="inline">beam</code>·and·<code·class="inline">app</code>·files201 frequently·read·files,·it·can·be·a·good·idea·to·store·<code·class="inline">beam</code>·and·<code·class="inline">app</code>·files
202 uncompressed·in·the·archive.</p><p>Normally·the·top·directory·of·an·application·is·located·in·library·directory202 uncompressed·in·the·archive.</p><p>Normally·the·top·directory·of·an·application·is·located·in·library·directory
203 <code·class="inline">$OTPROOT/lib</code>·or·in·a·directory·referred·to·by·environment·variable·<code·class="inline">ERL_LIBS</code>.203 <code·class="inline">$OTPROOT/lib</code>·or·in·a·directory·referred·to·by·environment·variable·<code·class="inline">ERL_LIBS</code>.
204 At·startup,·when·the·initial·code·path·is·computed,·the·code·server·also·looks204 At·startup,·when·the·initial·code·path·is·computed,·the·code·server·also·looks
205 for·archive·files·in·these·directories·and·possibly·adds·<code·class="inline">ebin</code>·directories·in205 for·archive·files·in·these·directories·and·possibly·adds·<code·class="inline">ebin</code>·directories·in
206 archives·to·the·code·path.·The·code·path·then·contains·paths·to·directories·that206 archives·to·the·code·path.·The·code·path·then·contains·paths·to·directories·that
207 look·like·<code·class="inline">$OTPROOT/lib/mnesia.ez/mnesia/ebin</code>·or207 look·like·<code·class="inline">$OTPROOT/lib/mnesia.ez/mnesia/ebin</code>·or
Offset 1819, 18 lines modifiedOffset 1819, 18 lines modified
1819 none·of·the·modules·are·loaded·if·there·is·a·problem·with·any·of·the1819 none·of·the·modules·are·loaded·if·there·is·a·problem·with·any·of·the
1820 modules.</p><p>Loading·can·fail·for·one·the·following·reasons:</p><ul><li><p><strong><code·class="inline">badfile</code></strong>·-·The·object·code·has·an·incorrect·format·or·the·module·name·in1820 modules.</p><p>Loading·can·fail·for·one·the·following·reasons:</p><ul><li><p><strong><code·class="inline">badfile</code></strong>·-·The·object·code·has·an·incorrect·format·or·the·module·name·in
1821 the·object·code·is·not·the·expected·module·name.</p></li><li><p><strong><code·class="inline">nofile</code></strong>·-·No·file·with·object·code·exists.</p></li><li><p><strong><code·class="inline">on_load_not_allowed</code></strong>·-·A·module·contains·an1821 the·object·code·is·not·the·expected·module·name.</p></li><li><p><strong><code·class="inline">nofile</code></strong>·-·No·file·with·object·code·exists.</p></li><li><p><strong><code·class="inline">on_load_not_allowed</code></strong>·-·A·module·contains·an
1822 <a·href="../../../../doc/system/code_loading.html#on_load">-on_load·function</a>.</p></li><li><p><strong><code·class="inline">duplicated</code></strong>·-·A·module·is·included·more·than·once·in·<code·class="inline">Modules</code>.</p></li><li><p><strong><code·class="inline">not_purged</code></strong>·-·The·object·code·cannot·be·loaded·because·an·old·version·of1822 <a·href="../../../../doc/system/code_loading.html#on_load">-on_load·function</a>.</p></li><li><p><strong><code·class="inline">duplicated</code></strong>·-·A·module·is·included·more·than·once·in·<code·class="inline">Modules</code>.</p></li><li><p><strong><code·class="inline">not_purged</code></strong>·-·The·object·code·cannot·be·loaded·because·an·old·version·of
1823 the·code·already·exists.</p></li><li><p><strong><code·class="inline">sticky_directory</code></strong>·-·The·object·code·resides·in·a·sticky·directory.</p></li><li><p><strong><code·class="inline">pending_on_load</code></strong>·-·A·previously·loaded·module·contains·an·<code·class="inline">-on_load</code>1823 the·code·already·exists.</p></li><li><p><strong><code·class="inline">sticky_directory</code></strong>·-·The·object·code·resides·in·a·sticky·directory.</p></li><li><p><strong><code·class="inline">pending_on_load</code></strong>·-·A·previously·loaded·module·contains·an·<code·class="inline">-on_load</code>
1824 function·that·never·finished.</p></li></ul><p>If·it·is·important·to·minimize·the·time·that·an·application·is·inactive·while1824 function·that·never·finished.</p></li></ul><p>If·it·is·important·to·minimize·the·time·that·an·application·is·inactive·while
1825 changing·code,·use·<a·href="#prepare_loading/1"><code·class="inline">prepare_loading/1</code></a>·and·<a·href="#finish_loading/1"><code·class="inline">finish_loading/1</code></a>·instead·of1825 changing·code,·use·<a·href="#prepare_loading/1"><code·class="inline">prepare_loading/1</code></a>·and·<a·href="#finish_loading/1"><code·class="inline">finish_loading/1</code></a>·instead·of
1826 <a·href="#atomic_load/1"><code·class="inline">atomic_load/1</code></a>.·Here·is·an·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9300909390-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Prepared</span><span·class="p"·data-group-id="9300909390-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span>[·...·truncated·by·diffoscope;·len:·187,·SHA:·cefa3f8d9b7c9171d1597122b42dfaf75f718604f2cbbac60cfb8bcbe561bdb1·...·]-2">)</span><span·class="p">,</span><span·class="w">1826 <a·href="#atomic_load/1"><code·class="inline">atomic_load/1</code></a>.·Here·is·an·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0471064816-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Prepared</span><span·class="p"·data-group-id="0471064816-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span>[·...·truncated·by·diffoscope;·len:·187,·SHA:·05a70a8279886f7613a9afcd250ca47b4e5101e59704a70e22b826a2d7b23488·...·]-2">)</span><span·class="p">,</span><span·class="w">
1827 </span><span·class="c1">%%·Put·the·application·into·an·inactive·state·or·do·any</span><span·class="w">1827 </span><span·class="c1">%%·Put·the·application·into·an·inactive·state·or·do·any</span><span·class="w">
1828 </span><span·class="c1">%%·other·preparation·needed·before·changing·the·code.</span><span·class="w">1828 </span><span·class="c1">%%·other·preparation·needed·before·changing·the·code.</span><span·class="w">
1829 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">finish_loading</span><span·class="p"·data-group-id="9300909390-3">(</span><span·class="n">Prepared</span><span·class="p"·data-group-id="9300909390-3">)</span><span·class="p">,</span><span·class="w">1829 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">finish_loading</span><span·class="p"·data-group-id="0471064816-3">(</span><span·class="n">Prepared</span><span·class="p"·data-group-id="0471064816-3">)</span><span·class="p">,</span><span·class="w">
1830 </span><span·class="c1">%%·Resume·the·application.</span></code></pre>1830 </span><span·class="c1">%%·Resume·the·application.</span></code></pre>
1831 ··</section>1831 ··</section>
1832 </section>1832 </section>
1833 <section·class="detail"·id="clash/0">1833 <section·class="detail"·id="clash/0">
  
1834 ··<div·class="detail-header">1834 ··<div·class="detail-header">
1835 ····<a·href="#clash/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1835 ····<a·href="#clash/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 2343, 16 lines modifiedOffset 2343, 16 lines modified
2343 ······</div>2343 ······</div>
  
2344 <p>Returns·the·object·code·for·module·<code·class="inline">Module</code>·if·found·in·the·code·path.</p><p>Returns·<code·class="inline">{Module,·Binary,·Filename}</code>·if·successful,·otherwise2344 <p>Returns·the·object·code·for·module·<code·class="inline">Module</code>·if·found·in·the·code·path.</p><p>Returns·<code·class="inline">{Module,·Binary,·Filename}</code>·if·successful,·otherwise
2345 <code·class="inline">error</code>.·<code·class="inline">Binary</code>·is·a·binary·data·object,·which·contains·the·object2345 <code·class="inline">error</code>.·<code·class="inline">Binary</code>·is·a·binary·data·object,·which·contains·the·object
2346 code·for·the·module.·This·is·useful·if·code·is·to·be·loaded·on·a2346 code·for·the·module.·This·is·useful·if·code·is·to·be·loaded·on·a
2347 remote·node·in·a·distributed·system.·For·example,·loading·module2347 remote·node·in·a·distributed·system.·For·example,·loading·module
2348 <code·class="inline">Module</code>·on·a·node·<code·class="inline">Node</code>·is·done·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">2348 <code·class="inline">Module</code>·on·a·node·<code·class="inline">Node</code>·is·done·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
2349 </span><span·class="p"·data-group-id="6273819240-1">{</span><span·class="p">_</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Binary</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filename</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·314,·SHA:·b6cc5e55d422581995e794bbe10bd18bab0c181935f85881eb398579281ab54d·...·]-2">)</span><span·class="p">,</span><span·class="w">2349 </span><span·class="p"·data-group-id="7089027209-1">{</span><span·class="p">_</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Binary</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filename</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·314,·SHA:·a97a96e98a4329fcf09949c68ca2ddc6dac4ff7003a8f976cf9d4722c2b3f504·...·]-2">)</span><span·class="p">,</span><span·class="w">
2350 </span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="6273819240-3">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">load_binary</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·332,·SHA:·b1c95dcc44b07d73f5416e99a23f44929fea798722331c8550fbcf2b78ea43b4·...·]-3">)</span><span·class="p">,</span><span·class="w">2350 </span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="7089027209-3">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">load_binary</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·332,·SHA:·10f2dc46956dca957e74bd7eb3138980e14c8e586fba7dc1556188c6ac2faf5f·...·]-3">)</span><span·class="p">,</span><span·class="w">
2351 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>2351 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>
2352 ··</section>2352 ··</section>
2353 </section>2353 </section>
2354 <section·class="detail"·id="get_path/0">2354 <section·class="detail"·id="get_path/0">
  
2355 ··<div·class="detail-header">2355 ··<div·class="detail-header">
2356 ····<a·href="#get_path/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2356 ····<a·href="#get_path/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 2455, 15 lines modifiedOffset 2455, 15 lines modified
2455 ······<div·class="specs">2455 ······<div·class="specs">
  
2456 ··········<pre·translate="no"><span·class="attribute">-spec</span>·lib_dir()·->·<a·href="file.html#t:filename/0">file:filename</a>().</pre>2456 ··········<pre·translate="no"><span·class="attribute">-spec</span>·lib_dir()·->·<a·href="file.html#t:filename/0">file:filename</a>().</pre>
  
2457 ······</div>2457 ······</div>
  
2458 <p>Returns·the·library·directory,·<code·class="inline">$OTPROOT/lib</code>,·where·<code·class="inline">$OTPROOT</code>·is·the·root2458 <p>Returns·the·library·directory,·<code·class="inline">$OTPROOT/lib</code>,·where·<code·class="inline">$OTPROOT</code>·is·the·root
2459 directory·of·Erlang/OTP.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="1094515625-1">(</span><span·class="p"·data-group-id="1094515625-1">)</span><span·class="p">.</span><span·class="w">2459 directory·of·Erlang/OTP.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="2647430899-1">(</span><span·class="p"·data-group-id="2647430899-1">)</span><span·class="p">.</span><span·class="w">
2460 </span><span·class="s">&quot;/usr/local/otp/lib&quot;</span></code></pre>2460 </span><span·class="s">&quot;/usr/local/otp/lib&quot;</span></code></pre>
2461 ··</section>2461 ··</section>
2462 </section>2462 </section>
2463 <section·class="detail"·id="lib_dir/1">2463 <section·class="detail"·id="lib_dir/1">
  
2464 ··<div·class="detail-header">2464 ··<div·class="detail-header">
2465 ····<a·href="#lib_dir/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2465 ····<a·href="#lib_dir/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 2492, 15 lines modifiedOffset 2492, 15 lines modified
2492 an·<code·class="inline">ebin</code>·subdirectory,·the·path·to·this·directory·is·returned·(not·the·<code·class="inline">ebin</code>2492 an·<code·class="inline">ebin</code>·subdirectory,·the·path·to·this·directory·is·returned·(not·the·<code·class="inline">ebin</code>
2493 directory).</p><p>If·the·directory·refers·to·a·directory·in·an·archive,·the·archive·name·is2493 directory).</p><p>If·the·directory·refers·to·a·directory·in·an·archive,·the·archive·name·is
2494 stripped·away·before·the·path·is·returned.·For·example,·if·directory2494 stripped·away·before·the·path·is·returned.·For·example,·if·directory
2495 <code·class="inline">/usr/local/otp/lib/mnesia-4.2.2.ez/mnesia-4.2.2/ebin</code>·is·in·the·path,2495 <code·class="inline">/usr/local/otp/lib/mnesia-4.2.2.ez/mnesia-4.2.2/ebin</code>·is·in·the·path,
2496 <code·class="inline">/usr/local/otp/lib/mnesia-4.2.2/ebin</code>·is·returned.·This·means·that·the·library2496 <code·class="inline">/usr/local/otp/lib/mnesia-4.2.2/ebin</code>·is·returned.·This·means·that·the·library
2497 directory·for·an·application·is·the·same,·regardless·if·the·application·resides2497 directory·for·an·application·is·the·same,·regardless·if·the·application·resides
2498 in·an·archive·or·not.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Warning</h4><p>Archives·are·experimental.·In·a·future·release,·they·can·be·removed·or2498 in·an·archive·or·not.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Warning</h4><p>Archives·are·experimental.·In·a·future·release,·they·can·be·removed·or
2499 their·behavior·can·change.</p></section><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="6400504342-1">(</span><span·class="ss">mnesia</span><span·class="p"·data-group-id="6400504342-1">)</span><span·class="p">.</span><span·class="w">2499 their·behavior·can·change.</p></section><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="3435133076-1">(</span><span·class="ss">mnesia</span><span·class="p"·data-group-id="3435133076-1">)</span><span·class="p">.</span><span·class="w">
2500 </span><span·class="s">&quot;/usr/local/otp/lib/mnesia-4.23&quot;</span></code></pre><p>Returns·<code·class="inline">{error,·bad_name}</code>·if·<code·class="inline">Name</code>·is·not·the·name·of·an·application·under2500 </span><span·class="s">&quot;/usr/local/otp/lib/mnesia-4.23&quot;</span></code></pre><p>Returns·<code·class="inline">{error,·bad_name}</code>·if·<code·class="inline">Name</code>·is·not·the·name·of·an·application·under
2501 <code·class="inline">$OTPROOT/lib</code>·or·on·a·directory·referred·to·through·environment·variable2501 <code·class="inline">$OTPROOT/lib</code>·or·on·a·directory·referred·to·through·environment·variable
2502 <code·class="inline">ERL_LIBS</code>.·Fails·with·an·exception·if·<code·class="inline">Name</code>·has·the·wrong·type.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>For·backward·compatibility,·<code·class="inline">Name</code>·is·also·allowed·to·be·a·string.·That·will2502 <code·class="inline">ERL_LIBS</code>.·Fails·with·an·exception·if·<code·class="inline">Name</code>·has·the·wrong·type.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>For·backward·compatibility,·<code·class="inline">Name</code>·is·also·allowed·to·be·a·string.·That·will
2503 probably·change·in·a·future·release.</p></section>2503 probably·change·in·a·future·release.</p></section>
2504 ··</section>2504 ··</section>
2505 </section>2505 </section>
2506 <section·class="detail"·id="lib_dir/2">2506 <section·class="detail"·id="lib_dir/2">
Offset 2533, 15 lines modifiedOffset 2533, 15 lines modified
2533 <p>Returns·the·path·to·a·subdirectory·directly·under·the·top·directory·of·an2533 <p>Returns·the·path·to·a·subdirectory·directly·under·the·top·directory·of·an
2534 application.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>This·function·is·part·of·the·archive·support,·which·is·an·experimental2534 application.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>This·function·is·part·of·the·archive·support,·which·is·an·experimental
2535 feature·that·will·be·changed·or·removed·in·a·future·release.</p></section><p>Normally·the·subdirectories·reside·under·the·top·directory·for·the2535 feature·that·will·be·changed·or·removed·in·a·future·release.</p></section><p>Normally·the·subdirectories·reside·under·the·top·directory·for·the
2536 application,·but·when·applications·at·least·partly·reside·in·an·archive,·the2536 application,·but·when·applications·at·least·partly·reside·in·an·archive,·the
2537 situation·is·different.·Some·of·the·subdirectories·can·reside·as·regular2537 situation·is·different.·Some·of·the·subdirectories·can·reside·as·regular
2538 directories·while·others·reside·in·an·archive·file.·It·is·not·checked·whether2538 directories·while·others·reside·in·an·archive·file.·It·is·not·checked·whether
2539 this·directory·exists.</p><p>Instead·of·using·this·function,·use·<a·href="#lib_dir/1"><code·class="inline">code:lib_dir/1</code></a>2539 this·directory·exists.</p><p>Instead·of·using·this·function,·use·<a·href="#lib_dir/1"><code·class="inline">code:lib_dir/1</code></a>
2540 and·<a·href="../../../../lib/stdlib-6.2/doc/html/filename.html#join/2"><code·class="inline">filename:join/2</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="8462219444-1">(</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="8462219444-2">(</span><span·class="ss">megaco</span><span·class="p"·data-group-id="8462219444-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·9c8bbfbfa1361a194eb6292b8c7fb050c53f7fde38238d0ac738b8d98f0efedc·...·]-1">)</span><span·class="p">.</span><span·class="w">2540 and·<a·href="../../../../lib/stdlib-6.2/doc/html/filename.html#join/2"><code·class="inline">filename:join/2</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="7060473592-1">(</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="7060473592-2">(</span><span·class="ss">megaco</span><span·class="p"·data-group-id="7060473592-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·6e09fd57897ddf86725d17af8c95c77e084f26079a9d765a74c6ee9b3967dec1·...·]-1">)</span><span·class="p">.</span><span·class="w">
2541 </span><span·class="s">&quot;/usr/local/otp/lib/megaco-3.9.1.1/priv&quot;</span></code></pre><p>Fails·with·an·exception·if·<code·class="inline">Name</code>·or·<code·class="inline">SubDir</code>·has·the·wrong·type.</p>2541 </span><span·class="s">&quot;/usr/local/otp/lib/megaco-3.9.1.1/priv&quot;</span></code></pre><p>Fails·with·an·exception·if·<code·class="inline">Name</code>·or·<code·class="inline">SubDir</code>·has·the·wrong·type.</p>
2542 ··</section>2542 ··</section>
2543 </section>2543 </section>
2544 <section·class="detail"·id="load_abs/1">2544 <section·class="detail"·id="load_abs/1">
  
2545 ··<div·class="detail-header">2545 ··<div·class="detail-header">
2546 ····<a·href="#load_abs/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2546 ····<a·href="#load_abs/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 2964, 15 lines modifiedOffset 2964, 15 lines modified
2964 ······<div·class="specs">2964 ······<div·class="specs">
  
2965 ··········<pre·translate="no"><span·class="attribute">-spec</span>·root_dir()·->·<a·href="file.html#t:filename/0">file:filename</a>().</pre>2965 ··········<pre·translate="no"><span·class="attribute">-spec</span>·root_dir()·->·<a·href="file.html#t:filename/0">file:filename</a>().</pre>
  
2966 ······</div>2966 ······</div>
  
2967 <p>Returns·the·root·directory·of·Erlang/OTP,·which·is·the·directory·where·it·is2967 <p>Returns·the·root·directory·of·Erlang/OTP,·which·is·the·directory·where·it·is
2968 installed.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">root_dir</span><span·class="p"·data-group-id="7997978608-1">(</span><span·class="p"·data-group-id="7997978608-1">)</span><span·class="p">.</span><span·class="w">2968 installed.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">root_dir</span><span·class="p"·data-group-id="2230841373-1">(</span><span·class="p"·data-group-id="2230841373-1">)</span><span·class="p">.</span><span·class="w">
2969 </span><span·class="s">&quot;/usr/local/otp&quot;</span></code></pre>2969 </span><span·class="s">&quot;/usr/local/otp&quot;</span></code></pre>
2970 ··</section>2970 ··</section>
2971 </section>2971 </section>
2972 <section·class="detail"·id="set_coverage_mode/1">2972 <section·class="detail"·id="set_coverage_mode/1">
  
2973 ··<div·class="detail-header">2973 ··<div·class="detail-header">
2974 ····<a·href="#set_coverage_mode/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2974 ····<a·href="#set_coverage_mode/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
5.13 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/config.html
    
Offset 148, 17 lines modifiedOffset 148, 17 lines modified
148 (see·<a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html"><code·class="inline">erts:erl(1)</code></a>).</p><p>The·value·of·a·configuration·parameter·is·retrieved·by·calling148 (see·<a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html"><code·class="inline">erts:erl(1)</code></a>).</p><p>The·value·of·a·configuration·parameter·is·retrieved·by·calling
149 <code·class="inline">application:get_env/1,2</code>.</p><h2·id="file-syntax"·class="section-heading">149 <code·class="inline">application:get_env/1,2</code>.</p><h2·id="file-syntax"·class="section-heading">
150 ··<a·href="#file-syntax"·class="hover-link">150 ··<a·href="#file-syntax"·class="hover-link">
151 ····<i·class="ri-link-m"·aria-hidden="true"></i>151 ····<i·class="ri-link-m"·aria-hidden="true"></i>
152 ··</a>152 ··</a>
153 ··<span·class="text">File·Syntax</span>153 ··<span·class="text">File·Syntax</span>
154 </h2>154 </h2>
155 <p>The·configuration·file·is·to·be·called·<code·class="inline">Name.config</code>,·where·<code·class="inline">Name</code>·is·any·name.</p><p>File·<code·class="inline">.config</code>·contains·a·single·Erlang·term·and·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2792726048-1">[</span><span·class="p"·data-group-id="2792726048-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2792726048-3">[</span><span·class="p"·data-group-id="2792726048-4">{[·...·truncated·by·diffoscope;·len:·378,·SHA:·cb77ca3860aea80544cd0702b1283f92ca340edfdb33a816c3d899979dbf06f2·...·]-2">}</span><span·class="p">,</span><span·class="w">155 <p>The·configuration·file·is·to·be·called·<code·class="inline">Name.config</code>,·where·<code·class="inline">Name</code>·is·any·name.</p><p>File·<code·class="inline">.config</code>·contains·a·single·Erlang·term·and·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2869838067-1">[</span><span·class="p"·data-group-id="2869838067-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2869838067-3">[</span><span·class="p"·data-group-id="2869838067-4">{[·...·truncated·by·diffoscope;·len:·378,·SHA:·f68fdbf6fe9334653cb2c477fa11b7f2f5683c92efb64f53ec2ae4b153ae07ed·...·]-2">}</span><span·class="p">,</span><span·class="w">
156 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">156 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
157 ·</span><span·class="p"·data-group-id="2792726048-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2792726048-6">[</span><span·class="p"·data-group-id="2792726048-7">{</span><span·class="n">ParN1</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·378,·SHA:·7fc4349b240df1bb9e96e35265c059b5387f54d1252c5c3858352309850d34f8·...·]-1">]</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">Application·=·atom()</code></strong>·-·Application·name.</p></li><li><p><strong><code·class="inline">Par·=·atom()</code></strong>·-·Name·of·a·configuration·parameter.</p></li><li><p><strong><code·class="inline">Val·=·term()</code></strong>·-·Value·of·a·configuration·parameter.</p></li></ul><h2·id="sys-config"·class="section-heading">157 ·</span><span·class="p"·data-group-id="2869838067-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2869838067-6">[</span><span·class="p"·data-group-id="2869838067-7">{</span><span·class="n">ParN1</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·378,·SHA:·8293e71871b726f4a97e243422d6e21a988f0ccdc0f26aa774b240b532ea0c8a·...·]-1">]</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">Application·=·atom()</code></strong>·-·Application·name.</p></li><li><p><strong><code·class="inline">Par·=·atom()</code></strong>·-·Name·of·a·configuration·parameter.</p></li><li><p><strong><code·class="inline">Val·=·term()</code></strong>·-·Value·of·a·configuration·parameter.</p></li></ul><h2·id="sys-config"·class="section-heading">
158 ··<a·href="#sys-config"·class="hover-link">158 ··<a·href="#sys-config"·class="hover-link">
159 ····<i·class="ri-link-m"·aria-hidden="true"></i>159 ····<i·class="ri-link-m"·aria-hidden="true"></i>
160 ··</a>160 ··</a>
161 ··<span·class="text">sys.config</span>161 ··<span·class="text">sys.config</span>
162 </h2>162 </h2>
163 <p>When·starting·Erlang·in·embedded·mode,·it·is·assumed·that·exactly·one·system163 <p>When·starting·Erlang·in·embedded·mode,·it·is·assumed·that·exactly·one·system
164 configuration·file·is·used,·named·<code·class="inline">sys.config</code>.·This·file·is·to·be·located·in164 configuration·file·is·used,·named·<code·class="inline">sys.config</code>.·This·file·is·to·be·located·in
12.7 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/eep48_chapter.html
    
Offset 150, 28 lines modifiedOffset 150, 28 lines modified
150 ····<i·class="ri-link-m"·aria-hidden="true"></i>150 ····<i·class="ri-link-m"·aria-hidden="true"></i>
151 ··</a>151 ··</a>
152 ··<span·class="text">The·&quot;Docs&quot;·format</span>152 ··<span·class="text">The·&quot;Docs&quot;·format</span>
153 </h2>153 </h2>
154 <p>In·both·storages,·the·documentation·is·written·in·the·exactly·same·format:·an154 <p>In·both·storages,·the·documentation·is·written·in·the·exactly·same·format:·an
155 Erlang·term·serialized·to·binary·via155 Erlang·term·serialized·to·binary·via
156 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>.·The·term·can·be·optionally156 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>.·The·term·can·be·optionally
157 compressed·when·serialized.·It·must·follow·the·type·specification·below:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9489512890-1">{</span><span·class="ss">docs_v1</span><span·class="p">,</span><span·class="w">157 compressed·when·serialized.·It·must·follow·the·type·specification·below:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2424495138-1">{</span><span·class="ss">docs_v1</span><span·class="p">,</span><span·class="w">
158 ·</span><span·class="n">Anno</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nc">erl_anno</span><span·class="p">:</span><span·class="nf">anno</span><span·class="p"·data-group-id="9489512890-2">(</span><span·class="p"·data-group-id="9489512890-2">)</span><span·class="p">,</span><span·class="w">158 ·</span><span·class="n">Anno</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nc">erl_anno</span><span·class="p">:</span><span·class="nf">anno</span><span·class="p"·data-group-id="2424495138-2">(</span><span·class="p"·data-group-id="2424495138-2">)</span><span·class="p">,</span><span·class="w">
159 ·</span><span·class="n">BeamLanguage</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9489512890-3">(</span><span·class="p"·data-group-id="9489512890-3">)</span><span·class="p">,</span><span·class="w">159 ·</span><span·class="n">BeamLanguage</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="2424495138-3">(</span><span·class="p"·data-group-id="2424495138-3">)</span><span·class="p">,</span><span·class="w">
160 ·</span><span·class="n">Format</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="9489512890-4">(</span><span·class="p"·data-group-id="9489512890-4">)</span><span·class="p">,</span><span·class="w">160 ·</span><span·class="n">Format</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="2424495138-4">(</span><span·class="p"·data-group-id="2424495138-4">)</span><span·class="p">,</span><span·class="w">
161 ·</span><span·class="n">ModuleDoc</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9489512890-5">#{</span><span·class="n">DocLanguage</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">DocValue</span><span·class="p"·data-group-id="9489512890-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">hidden</span><span·class="p">,</span><span·class="w">161 ·</span><span·class="n">ModuleDoc</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2424495138-5">#{</span><span·class="n">DocLanguage</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">DocValue</span><span·class="p"·data-group-id="2424495138-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">hidden</span><span·class="p">,</span><span·class="w">
162 ·</span><span·class="n">Metadata</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="9489512890-6">(</span><span·class="p"·data-group-id="9489512890-6">)</span><span·class="p">,</span><span·class="w">162 ·</span><span·class="n">Metadata</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="2424495138-6">(</span><span·class="p"·data-group-id="2424495138-6">)</span><span·class="p">,</span><span·class="w">
163 ·</span><span·class="n">Docs</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">163 ·</span><span·class="n">Docs</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">
164 ···</span><span·class="p"·data-group-id="9489512890-7">[</span><span·class="p"·data-group-id="9489512890-8">{</span><span·class="p"·data-group-id="9489512890-9">{</span><span·class="n">Kind</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·8f6c36643b24dac433b42f8860b9429247eccdc307483e0b8e3a7bacf1f01450·...·]-9">}</span><span·class="p">,</span><span·class="w">164 ···</span><span·class="p"·data-group-id="2424495138-7">[</span><span·class="p"·data-group-id="2424495138-8">{</span><span·class="p"·data-group-id="2424495138-9">{</span><span·class="n">Kind</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·39ede49b5be527331a9c307273227e6da7e77f9cdca4fbd307a53bd73e9a49f8·...·]-9">}</span><span·class="p">,</span><span·class="w">
165 ·····</span><span·class="n">Anno</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nc">erl_anno</span><span·class="p">:</span><span·class="nf">anno</span><span·class="p"·data-group-id="9489512890-10">(</span><span·class="p"·data-group-id="9489512890-10">)</span><span·class="p">,</span><span·class="w">165 ·····</span><span·class="n">Anno</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nc">erl_anno</span><span·class="p">:</span><span·class="nf">anno</span><span·class="p"·data-group-id="2424495138-10">(</span><span·class="p"·data-group-id="2424495138-10">)</span><span·class="p">,</span><span·class="w">
166 ·····</span><span·class="n">Signature</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9489512890-11">[</span><span·class="nf">binary</span><span·class="p"·data-group-id="9489512890-12">(</span><span·class="p"·data-group-id="9489512890-12">)</span><span·class="p"·data-group-id="9489512890-11">]</span><span·class="p">,</span><span·class="w">166 ·····</span><span·class="n">Signature</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2424495138-11">[</span><span·class="nf">binary</span><span·class="p"·data-group-id="2424495138-12">(</span><span·class="p"·data-group-id="2424495138-12">)</span><span·class="p"·data-group-id="2424495138-11">]</span><span·class="p">,</span><span·class="w">
167 ·····</span><span·class="n">Doc</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9489512890-13">#{</span><span·class="n">DocLanguage</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">DocValue</span><span·class="p"·data-group-id="9489512890-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">hidden</span><span·class="p">,</span><span·class="w">167 ·····</span><span·class="n">Doc</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2424495138-13">#{</span><span·class="n">DocLanguage</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">DocValue</span><span·class="p"·data-group-id="2424495138-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">hidden</span><span·class="p">,</span><span·class="w">
168 ·····</span><span·class="n">Metadata</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="9489512890-14">(</span><span·class="p"·data-group-id="9489512890-14">)</span><span·class="w">168 ·····</span><span·class="n">Metadata</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">map</span><span·class="p"·data-group-id="2424495138-14">(</span><span·class="p"·data-group-id="2424495138-14">)</span><span·class="w">
169 ····</span><span·class="p"·data-group-id="9489512890-8">}</span><span·class="p"·data-group-id="9489512890-7">]</span><span·class="p"·data-group-id="9489512890-1">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">DocLanguage</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·202,·SHA:·7df303c1089e28bfea931f1b36ec71df62bda8902f8801ad96d9b9ad109ca2d5·...·]-15">)</span><span·class="p">,</span><span·class="w">169 ····</span><span·class="p"·data-group-id="2424495138-8">}</span><span·class="p"·data-group-id="2424495138-7">]</span><span·class="p"·data-group-id="2424495138-1">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">DocLanguage</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·202,·SHA:·3b8b0a2e75128bedfe70dd44a3df21123209b18b44d80eed9a40211c961a010f·...·]-15">)</span><span·class="p">,</span><span·class="w">
170 ·············</span><span·class="n">DocValue</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="9489512890-16">(</span><span·class="p"·data-group-id="9489512890-16">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="9489512890-17">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·c3b1ea86922f0bd227b88832460a6cf66439950867a0610696aff8947f205078·...·]-17">)</span></code></pre><p>where·in·the·root·tuple·we·have:</p><ul><li><p><strong><code·class="inline">Anno</code></strong>·-·annotation·(line,·column,·file)·of·the·definition·itself·(see170 ·············</span><span·class="n">DocValue</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="2424495138-16">(</span><span·class="p"·data-group-id="2424495138-16">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="2424495138-17">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·76489aca0798cff62baf3ae8be6b5c96a62810153f11f264741124f5e20c94a7·...·]-17">)</span></code></pre><p>where·in·the·root·tuple·we·have:</p><ul><li><p><strong><code·class="inline">Anno</code></strong>·-·annotation·(line,·column,·file)·of·the·definition·itself·(see
171 <a·href="../../../../lib/stdlib-6.2/doc/html/erl_anno.html"><code·class="inline">erl_anno</code></a>)</p></li><li><p><strong><code·class="inline">BeamLanguage</code></strong>·-·an·atom·representing·the·language,·for·example:·<code·class="inline">erlang</code>,171 <a·href="../../../../lib/stdlib-6.2/doc/html/erl_anno.html"><code·class="inline">erl_anno</code></a>)</p></li><li><p><strong><code·class="inline">BeamLanguage</code></strong>·-·an·atom·representing·the·language,·for·example:·<code·class="inline">erlang</code>,
172 <code·class="inline">elixir</code>,·<code·class="inline">lfe</code>,·<code·class="inline">alpaca</code>,·and·so·on</p></li><li><p><strong><code·class="inline">Format</code></strong>·-·the·mime·type·of·the·documentation,·such·as·<code·class="inline">&lt;&lt;&quot;text/markdown&quot;&gt;&gt;</code>172 <code·class="inline">elixir</code>,·<code·class="inline">lfe</code>,·<code·class="inline">alpaca</code>,·and·so·on</p></li><li><p><strong><code·class="inline">Format</code></strong>·-·the·mime·type·of·the·documentation,·such·as·<code·class="inline">&lt;&lt;&quot;text/markdown&quot;&gt;&gt;</code>
173 or·<code·class="inline">&lt;&lt;&quot;application/erlang+html&quot;&gt;&gt;</code>.·For·details·of·the·format·used·by·Erlang173 or·<code·class="inline">&lt;&lt;&quot;application/erlang+html&quot;&gt;&gt;</code>.·For·details·of·the·format·used·by·Erlang
174 see·the·<a·href="../../../../lib/edoc-1.3.2/doc/html/doc_storage.html"><code·class="inline">EEP-48·Chapter</code></a>·in·EDoc's·User's174 see·the·<a·href="../../../../lib/edoc-1.3.2/doc/html/doc_storage.html"><code·class="inline">EEP-48·Chapter</code></a>·in·EDoc's·User's
175 Guide.</p></li><li><p><strong><code·class="inline">ModuleDoc</code></strong>·-·a·map·with·the·documentation·language·as·key,·such·as175 Guide.</p></li><li><p><strong><code·class="inline">ModuleDoc</code></strong>·-·a·map·with·the·documentation·language·as·key,·such·as
176 <code·class="inline">&lt;&lt;&quot;en&quot;&gt;&gt;</code>·or·<code·class="inline">&lt;&lt;&quot;pt_BR&quot;&gt;&gt;</code>,·and·the·documentation·as·a·binary·value.·It·can176 <code·class="inline">&lt;&lt;&quot;en&quot;&gt;&gt;</code>·or·<code·class="inline">&lt;&lt;&quot;pt_BR&quot;&gt;&gt;</code>,·and·the·documentation·as·a·binary·value.·It·can
177 be·atom·<code·class="inline">none</code>·if·no·documentation·exists·or·the·atom·<code·class="inline">hidden</code>·if177 be·atom·<code·class="inline">none</code>·if·no·documentation·exists·or·the·atom·<code·class="inline">hidden</code>·if
2.63 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/erl_epmd.html
    
Offset 351, 16 lines modifiedOffset 351, 16 lines modified
351 ···················Reason·::·address·|·<a·href="file.html#t:posix/0">file:posix</a>().</pre>351 ···················Reason·::·address·|·<a·href="file.html#t:posix/0">file:posix</a>().</pre>
  
352 ······</div>352 ······</div>
  
353 <p>Called·by·<a·href="net_adm.html"><code·class="inline">net_adm:names/0</code></a>.·<code·class="inline">Host</code>·defaults·to·the·localhost.353 <p>Called·by·<a·href="net_adm.html"><code·class="inline">net_adm:names/0</code></a>.·<code·class="inline">Host</code>·defaults·to·the·localhost.
354 Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>354 Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>
355 registered·at·the·specified·host.·Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not355 registered·at·the·specified·host.·Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not
356 operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(arne@dunn)1&gt;·</span><span·class="nc">erl_epmd</span><span·class="p">:</span><span·class="nf">names</span><span·class="p"·data-group-id="2269123541-1">(</span><span·class="ss">localhost</span><span·class="p"·data-group-id="2269123541-1">)</span><span·class="p">.</span><span·class="w">356 operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(arne@dunn)1&gt;·</span><span·class="nc">erl_epmd</span><span·class="p">:</span><span·class="nf">names</span><span·class="p"·data-group-id="0145249819-1">(</span><span·class="ss">localhost</span><span·class="p"·data-group-id="0145249819-1">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="p"·data-group-id="2269123541-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2269123541-3">[</span><span·class="p"·data-group-id="2269123541-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·457fa6286fb9ea315d793b831a6e557f7380fc1e9e54d81bef51f1391185509b·...·]-2">}</span></code></pre>357 </span><span·class="p"·data-group-id="0145249819-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0145249819-3">[</span><span·class="p"·data-group-id="0145249819-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·a8cf954f14985b5c21ec86d545a30c70a5c67d4e2bc318cfdfd67cacb2c20456·...·]-2">}</span></code></pre>
358 ··</section>358 ··</section>
359 </section>359 </section>
360 <section·class="detail"·id="port_please/2">360 <section·class="detail"·id="port_please/2">
  
361 ··<div·class="detail-header">361 ··<div·class="detail-header">
362 ····<a·href="#port_please/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">362 ····<a·href="#port_please/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
363 ······<i·class="ri-link-m"·aria-hidden="true"></i>363 ······<i·class="ri-link-m"·aria-hidden="true"></i>
18.2 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/erpc.html
    
Offset 1183, 28 lines modifiedOffset 1183, 28 lines modified
1183 at·the·client·side.</li></ul><p>The·call·<code·class="inline">erpc:multicall(Nodes,·Module,·Function,·Args)</code>·is·equivalent·to·the1183 at·the·client·side.</li></ul><p>The·call·<code·class="inline">erpc:multicall(Nodes,·Module,·Function,·Args)</code>·is·equivalent·to·the
1184 call·<code·class="inline">erpc:multicall(Nodes,·Module,·Function,·Args,·infinity)</code>.·These·calls·are1184 call·<code·class="inline">erpc:multicall(Nodes,·Module,·Function,·Args,·infinity)</code>.·These·calls·are
1185 also·equivalent·to·calling·<code·class="inline">my_multicall(Nodes,·Module,·Function,·Args)</code>·below1185 also·equivalent·to·calling·<code·class="inline">my_multicall(Nodes,·Module,·Function,·Args)</code>·below
1186 if·one·disregard·performance·and·failure·behavior.·<code·class="inline">multicall()</code>·can·utilize·a1186 if·one·disregard·performance·and·failure·behavior.·<code·class="inline">multicall()</code>·can·utilize·a
1187 selective·receive·optimization·which·removes·the·need·to·scan·the·message·queue1187 selective·receive·optimization·which·removes·the·need·to·scan·the·message·queue
1188 from·the·beginning·in·order·to·find·a·matching·message.·The1188 from·the·beginning·in·order·to·find·a·matching·message.·The
1189 <code·class="inline">send_request()/receive_response()</code>·combination·can,·however,·not·utilize·this1189 <code·class="inline">send_request()/receive_response()</code>·combination·can,·however,·not·utilize·this
1190 optimization.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_multicall</span><span·class="p"·data-group-id="5710813578-1">(</span><span·class="n">Nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·13d27fe83f6692f154847b0f551e82b1efad32a67c2ca0bf24ee82867ba5c89a·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1190 optimization.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_multicall</span><span·class="p"·data-group-id="4811779523-1">(</span><span·class="n">Nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·40d8fb2b1a07766d17a0269febb1318a5d89b811103373ba2e9d20b9ee6aaef5·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1191 ··</span><span·class="n">ReqIds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="5710813578-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5710813578-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="5710813578-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1191 ··</span><span·class="n">ReqIds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="4811779523-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4811779523-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="4811779523-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1192 ·······················</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">send_request</span><span·class="p"·data-group-id="5710813578-4">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·65,·SHA:·c21cf662ab0a4f0c704ae9531edc9318784b693a12d3408f1990c72971d326f5·...·]-4">)</span><span·class="w">1192 ·······················</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">send_request</span><span·class="p"·data-group-id="4811779523-4">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·65,·SHA:·1414584410cf3f7a05aa501dee92b32b2986625e218cedd825557a1fef7c8bb9·...·]-4">)</span><span·class="w">
1193 ·····················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">1193 ·····················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
1194 ·····················</span><span·class="n">Nodes</span><span·class="p"·data-group-id="5710813578-2">)</span><span·class="p">,</span><span·class="w">1194 ·····················</span><span·class="n">Nodes</span><span·class="p"·data-group-id="4811779523-2">)</span><span·class="p">,</span><span·class="w">
1195 ··</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="5710813578-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5710813578-6">(</span><span·class="n">ReqId</span><span·class="p"·data-group-id="5710813578-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1195 ··</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="4811779523-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4811779523-6">(</span><span·class="n">ReqId</span><span·class="p"·data-group-id="4811779523-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1196 ··············</span><span·class="k">try</span><span·class="w">1196 ··············</span><span·class="k">try</span><span·class="w">
1197 ················</span><span·class="p"·data-group-id="5710813578-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">receive_response</span><span·class="p"·data-group-id="5710813578-8">(</span><span·class="n"[·...·truncated·by·diffoscope;·len:·187,·SHA:·3256df8066f30953444ff134b9a84bde7d25609280d46c2b87424489a56ead54·...·]-7">}</span><span·class="w">1197 ················</span><span·class="p"·data-group-id="4811779523-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">receive_response</span><span·class="p"·data-group-id="4811779523-8">(</span><span·class="n"[·...·truncated·by·diffoscope;·len:·187,·SHA:·a8adc7ef0f5d827aac69576361121687a008c726abb7212ef5af6df7926918f9·...·]-7">}</span><span·class="w">
1198 ··············</span><span·class="k">catch</span><span·class="w">1198 ··············</span><span·class="k">catch</span><span·class="w">
1199 ················</span><span·class="n">Class</span><span·class="p">:</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1199 ················</span><span·class="n">Class</span><span·class="p">:</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1200 ··················</span><span·class="p"·data-group-id="5710813578-9">{</span><span·class="n">Class</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5710813578-9">}</span><span·class="w">1200 ··················</span><span·class="p"·data-group-id="4811779523-9">{</span><span·class="n">Class</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="4811779523-9">}</span><span·class="w">
1201 ··············</span><span·class="k">end</span><span·class="w">1201 ··············</span><span·class="k">end</span><span·class="w">
1202 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">1202 ············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
1203 ············</span><span·class="n">ReqIds</span><span·class="p"·data-group-id="5710813578-5">)</span><span·class="p">.</span></code></pre><p>If·an·<code·class="inline">erpc</code>·operation·fails,·but·it·is·unknown·if·the·function·is/will·be1203 ············</span><span·class="n">ReqIds</span><span·class="p"·data-group-id="4811779523-5">)</span><span·class="p">.</span></code></pre><p>If·an·<code·class="inline">erpc</code>·operation·fails,·but·it·is·unknown·if·the·function·is/will·be
1204 applied·(that·is,·a·timeout,·connection·loss,·or·an·improper·<code·class="inline">Nodes</code>·list),·the1204 applied·(that·is,·a·timeout,·connection·loss,·or·an·improper·<code·class="inline">Nodes</code>·list),·the
1205 caller·will·not·receive·any·further·information·about·the·result·if/when·the1205 caller·will·not·receive·any·further·information·about·the·result·if/when·the
1206 applied·function·completes.·If·the·applied·function·communicates·with·the1206 applied·function·completes.·If·the·applied·function·communicates·with·the
1207 calling·process,·such·communication·may,·of·course,·reach·the·calling·process.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the1207 calling·process,·such·communication·may,·of·course,·reach·the·calling·process.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the
1208 <code·class="inline">apply()</code>.·It·may·be·the·calling·process·itself,·a·server,·or·a·freshly1208 <code·class="inline">apply()</code>.·It·may·be·the·calling·process·itself,·a·server,·or·a·freshly
1209 spawned·process.</p></section>1209 spawned·process.</p></section>
1210 ··</section>1210 ··</section>
Offset 1346, 17 lines modifiedOffset 1346, 17 lines modified
1346 exception·if/when·an·invalid·<code·class="inline">RequestId</code>·is·detected·or·if·an·invalid·<code·class="inline">Timeout</code>1346 exception·if/when·an·invalid·<code·class="inline">RequestId</code>·is·detected·or·if·an·invalid·<code·class="inline">Timeout</code>
1347 is·passed.</p><p>A·call·to·the·function·<code·class="inline">my_call(Node,·Module,·Function,·Args,·Timeout)</code>·below·is1347 is·passed.</p><p>A·call·to·the·function·<code·class="inline">my_call(Node,·Module,·Function,·Args,·Timeout)</code>·below·is
1348 equivalent·to·the·call1348 equivalent·to·the·call
1349 <a·href="#call/5"><code·class="inline">erpc:call(Node,·Module,·Function,·Args,·Timeout)</code></a>·if·one·disregards1349 <a·href="#call/5"><code·class="inline">erpc:call(Node,·Module,·Function,·Args,·Timeout)</code></a>·if·one·disregards
1350 performance.·<code·class="inline">call()</code>·can·utilize·a·selective·receive·optimization·which·removes1350 performance.·<code·class="inline">call()</code>·can·utilize·a·selective·receive·optimization·which·removes
1351 the·need·to·scan·the·message·queue·from·the·beginning·in·order·to·find·a1351 the·need·to·scan·the·message·queue·from·the·beginning·in·order·to·find·a
1352 matching·message.·The·<code·class="inline">send_request()/receive_response()</code>·combination·can,1352 matching·message.·The·<code·class="inline">send_request()/receive_response()</code>·combination·can,
1353 however,·not·utilize·this·optimization.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_call</span><span·class="p"·data-group-id="6323865257-1">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·143,·SHA:·e179f976bbbd4592ef6385fb9925cc64730733f12e91f49e293293f709362462·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1353 however,·not·utilize·this·optimization.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_call</span><span·class="p"·data-group-id="1361498356-1">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·143,·SHA:·df9952183ae91345ef8ea3fdc05770485f583ac6f7c1af14d76f241bdf897885·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1354 ··</span><span·class="n">RequestId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">send_request</span><span·class="p"·data-group-id="6323865257-2">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·65,·SHA:·67139a5707a6d1ebdd27093f8b441f7c3e923c083e53178eea36348830452e39·...·]-2">)</span><span·class="p">,</span><span·class="w">1354 ··</span><span·class="n">RequestId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">send_request</span><span·class="p"·data-group-id="1361498356-2">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·65,·SHA:·922d9f4eeffd68c0efb1f24008c2091b99b29156ef90e89e9a2baeb0921964a6·...·]-2">)</span><span·class="p">,</span><span·class="w">
1355 ··</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">receive_response</span><span·class="p"·data-group-id="6323865257-3">(</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="p"·data-group-id="6323865257-3">)</span><span·class="p">.</span></code></pre><p>If·the·<code·class="inline">erpc</code>·operation·fails,·but·it·is·unknown·if·the·function·is/will·be1355 ··</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">receive_response</span><span·class="p"·data-group-id="1361498356-3">(</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="p"·data-group-id="1361498356-3">)</span><span·class="p">.</span></code></pre><p>If·the·<code·class="inline">erpc</code>·operation·fails,·but·it·is·unknown·if·the·function·is/will·be
1356 applied·(that·is,·a·timeout,·or·a·connection·loss),·the·caller·will·not·receive1356 applied·(that·is,·a·timeout,·or·a·connection·loss),·the·caller·will·not·receive
1357 any·further·information·about·the·result·if/when·the·applied·function·completes.1357 any·further·information·about·the·result·if/when·the·applied·function·completes.
1358 If·the·applied·function·explicitly·communicates·with·the·calling·process,·such1358 If·the·applied·function·explicitly·communicates·with·the·calling·process,·such
1359 communication·may,·of·course,·reach·the·calling·process.</p>1359 communication·may,·of·course,·reach·the·calling·process.</p>
1360 ··</section>1360 ··</section>
1361 </section>1361 </section>
1362 <section·class="detail"·id="receive_response/3">1362 <section·class="detail"·id="receive_response/3">
Offset 1637, 17 lines modifiedOffset 1637, 17 lines modified
1637 about·to·save·the·request·identifier·in·a·request·identifier·collection,·you·may1637 about·to·save·the·request·identifier·in·a·request·identifier·collection,·you·may
1638 want·to·consider·using·<a·href="#send_request/6"><code·class="inline">send_request/6</code></a>·instead.</p><p>A·call·to·the·function·<code·class="inline">my_call(Node,·Module,·Function,·Args,·Timeout)</code>·below·is1638 want·to·consider·using·<a·href="#send_request/6"><code·class="inline">send_request/6</code></a>·instead.</p><p>A·call·to·the·function·<code·class="inline">my_call(Node,·Module,·Function,·Args,·Timeout)</code>·below·is
1639 equivalent·to·the·call1639 equivalent·to·the·call
1640 <a·href="#call/5"><code·class="inline">erpc:call(Node,·Module,·Function,·Args,·Timeout)</code></a>·if·one·disregards1640 <a·href="#call/5"><code·class="inline">erpc:call(Node,·Module,·Function,·Args,·Timeout)</code></a>·if·one·disregards
1641 performance.·<code·class="inline">call()</code>·can·utilize·a·selective·receive·optimization·which·removes1641 performance.·<code·class="inline">call()</code>·can·utilize·a·selective·receive·optimization·which·removes
1642 the·need·to·scan·the·message·queue·from·the·beginning·in·order·to·find·a1642 the·need·to·scan·the·message·queue·from·the·beginning·in·order·to·find·a
1643 matching·message.·The·<code·class="inline">send_request()/receive_response()</code>·combination·can,1643 matching·message.·The·<code·class="inline">send_request()/receive_response()</code>·combination·can,
1644 however,·not·utilize·this·optimization.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_call</span><span·class="p"·data-group-id="2286631709-1">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·142,·SHA:·7c4c6c5cec4e0f8c68d26e34b1b0e7ca65e2237f5442cd364f5eb19cefdab303·...·]9-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1644 however,·not·utilize·this·optimization.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_call</span><span·class="p"·data-group-id="8749084849-1">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·142,·SHA:·f83e51b1f4e4b2dd006814e16aa4e9a16d2f20d2feb6f6db0a17e51631dafb15·...·]9-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1645 ··</span><span·class="n">RequestId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">send_request</span><span·class="p"·data-group-id="2286631709-2">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·64,·SHA:·cff408ca9d7905b776434fafb7567185611a0060cee00397b1226ab65ca61ab3·...·]9-2">)</span><span·class="p">,</span><span·class="w">1645 ··</span><span·class="n">RequestId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">send_request</span><span·class="p"·data-group-id="8749084849-2">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·64,·SHA:·d34a638146886865612e452e39f55a57b8a083882c7d71f0aa9df5631cc4ed2c·...·]9-2">)</span><span·class="p">,</span><span·class="w">
1646 ··</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">receive_response</span><span·class="p"·data-group-id="2286631709-3">(</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="p"·data-group-id="2286631709-3">)</span><span·class="p">.</span></code></pre><p>Fails·with·an·<code·class="inline">{erpc,·badarg}</code>·<code·class="inline">error</code>·exception·if:</p><ul><li><code·class="inline">Node</code>·is·not·an·atom.</li><li><code·class="inline">Module</code>·is·not·an·atom.</li><li><code·class="inline">Function</code>·is·not·an·atom.</li><li><code·class="inline">Args</code>·is·not·a·list.·Note·that·the·list·is·not·verified·to·be·a·proper·list1646 ··</span><span·class="nc">erpc</span><span·class="p">:</span><span·class="nf">receive_response</span><span·class="p"·data-group-id="8749084849-3">(</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="p"·data-group-id="8749084849-3">)</span><span·class="p">.</span></code></pre><p>Fails·with·an·<code·class="inline">{erpc,·badarg}</code>·<code·class="inline">error</code>·exception·if:</p><ul><li><code·class="inline">Node</code>·is·not·an·atom.</li><li><code·class="inline">Module</code>·is·not·an·atom.</li><li><code·class="inline">Function</code>·is·not·an·atom.</li><li><code·class="inline">Args</code>·is·not·a·list.·Note·that·the·list·is·not·verified·to·be·a·proper·list
1647 at·the·client·side.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the1647 at·the·client·side.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the
1648 <code·class="inline">apply()</code>.·It·may·be·a·server,·or·a·freshly·spawned·process.</p></section><p>Equivalent·to1648 <code·class="inline">apply()</code>.·It·may·be·a·server,·or·a·freshly·spawned·process.</p></section><p>Equivalent·to
1649 <a·href="#send_request/6"><code·class="inline">erpc:send_request(Node,·erlang,·apply,·[Fun,[]]),·Label,·RequestIdCollection)</code></a>.</p><p>Fails·with·an·<code·class="inline">{erpc,·badarg}</code>·<code·class="inline">error</code>·exception·if:</p><ul><li><code·class="inline">Node</code>·is·not·an·atom.</li><li><code·class="inline">Fun</code>·is·not·a·fun·of·zero·arity.</li><li><code·class="inline">RequestIdCollection</code>·is·detected·not·to·be·request·identifier·collection.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the1649 <a·href="#send_request/6"><code·class="inline">erpc:send_request(Node,·erlang,·apply,·[Fun,[]]),·Label,·RequestIdCollection)</code></a>.</p><p>Fails·with·an·<code·class="inline">{erpc,·badarg}</code>·<code·class="inline">error</code>·exception·if:</p><ul><li><code·class="inline">Node</code>·is·not·an·atom.</li><li><code·class="inline">Fun</code>·is·not·a·fun·of·zero·arity.</li><li><code·class="inline">RequestIdCollection</code>·is·detected·not·to·be·request·identifier·collection.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the
1650 <code·class="inline">apply()</code>.·It·may·be·a·server,·or·a·freshly·spawned·process.</p></section>1650 <code·class="inline">apply()</code>.·It·may·be·a·server,·or·a·freshly·spawned·process.</p></section>
1651 ··</section>1651 ··</section>
1652 </section>1652 </section>
1653 <section·class="detail"·id="send_request/6">1653 <section·class="detail"·id="send_request/6">
30.3 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/file.html
    
Offset 176, 39 lines modifiedOffset 176, 39 lines modified
176 running·its·file·server·as·slave·to·the·file·server·of·another·node,·and·the176 running·its·file·server·as·slave·to·the·file·server·of·another·node,·and·the
177 other·node·runs·on·some·other·host·machine,·they·can·have·different·file177 other·node·runs·on·some·other·host·machine,·they·can·have·different·file
178 systems.·However,·this·is·seldom·a·problem.</p></section><p><a·href="#open/2"><code·class="inline">open/2</code></a>·can·be·given·the·options·<code·class="inline">delayed_write</code>·and·<code·class="inline">read_ahead</code>·to·turn·on178 systems.·However,·this·is·seldom·a·problem.</p></section><p><a·href="#open/2"><code·class="inline">open/2</code></a>·can·be·given·the·options·<code·class="inline">delayed_write</code>·and·<code·class="inline">read_ahead</code>·to·turn·on
179 caching,·which·will·reduce·the·number·of·operating·system·calls·and·greatly179 caching,·which·will·reduce·the·number·of·operating·system·calls·and·greatly
180 improve·performance·for·small·reads·and·writes.·However,·the·overhead·won't180 improve·performance·for·small·reads·and·writes.·However,·the·overhead·won't
181 disappear·completely·and·it's·best·to·keep·the·number·of·file·operations·to·a181 disappear·completely·and·it's·best·to·keep·the·number·of·file·operations·to·a
182 minimum.·As·a·contrived·example,·the·following·function·writes·4MB·in·2.5182 minimum.·As·a·contrived·example,·the·following·function·writes·4MB·in·2.5
183 seconds·when·tested:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="2559497979-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="2559497979-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">183 seconds·when·tested:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="7224920248-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="7224920248-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="p"·data-group-id="2559497979-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="2559497979-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·a0fb55fd39ced520251787186f3013aea5adca9b7f95ea321598696c076a4f1c·...·]-3">)</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="p"·data-group-id="7224920248-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="7224920248-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·c21b8a7cd62dcd4b6211a695951eeb00e656f96107b70e6ab727ff869adf51f8·...·]-3">)</span><span·class="p">,</span><span·class="w">
185 ····</span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="2559497979-5">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">·</span><span·class="ow">bsl</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="2559[·...·truncated·by·diffoscope;·len:·6,·SHA:·d60ea8cf079a79722d1c4424015beddcc87676e5e206d5b64a0f5816ef94e62a·...·]-5">)</span><span·class="p">,</span><span·class="w">185 ····</span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="7224920248-5">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">·</span><span·class="ow">bsl</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="7224[·...·truncated·by·diffoscope;·len:·6,·SHA:·960fe5e03b73e9842b16070e4f9d833d077805cd869b681ea92a4e0b3e5ecd8c·...·]-5">)</span><span·class="p">,</span><span·class="w">
186 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="2559497979-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="2559497979-6">)</span><span·class="p">.</span><span·class="w">186 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7224920248-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="7224920248-6">)</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="2559497979-7">(</span><span·class="p">_</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="2559497979-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">187 </span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="7224920248-7">(</span><span·class="p">_</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="7224920248-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
188 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">188 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
189 </span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="2559497979-8">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="2559497979-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 </span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="7224920248-8">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="7224920248-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="2559497979-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2559497979-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="2559497979-10">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·38b32cf65f0969206714b38864baf101934ae7a3c7b43af6ef2f0b0b8295eaf9·...·]-9">)</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7224920248-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7224920248-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="7224920248-10">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d250f0256c14cc08c69c6d7951dc0e9f886034546fe9d786cd35097f79a94c2c·...·]-9">)</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="2559497979-11">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="25594979[·...·truncated·by·diffoscope;·len:·2,·SHA:·98a3ab7c340e8a033e7b37b6ef9428751581760af67bbab2b9e05d4964a8874a·...·]-11">)</span><span·class="p">.</span></code></pre><p>The·following·functionally·equivalent·code·writes·128·bytes·per·call·to191 ····</span><span·class="nf">create_file_slow_1</span><span·class="p"·data-group-id="7224920248-11">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="72249202[·...·truncated·by·diffoscope;·len:·2,·SHA:·98010bd9270f9b100b6214a21754fd33bdc8d41b2bc9f9dd16ff54d3c34ffd71·...·]-11">)</span><span·class="p">.</span></code></pre><p>The·following·functionally·equivalent·code·writes·128·bytes·per·call·to
192 <a·href="#write/2"><code·class="inline">write/2</code></a>·and·so·does·the·same·work·in·0.08·seconds,·which·is·roughly·30·times192 <a·href="#write/2"><code·class="inline">write/2</code></a>·and·so·does·the·same·work·in·0.08·seconds,·which·is·roughly·30·times
193 faster:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">create_file</span><span·class="p"·data-group-id="3408669905-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="3408669905-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 faster:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">create_file</span><span·class="p"·data-group-id="4257482623-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="4257482623-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ····</span><span·class="p"·data-group-id="3408669905-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="3408669905-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·dfcd39a04edab5db8c9f7b54095d74d37d66db78839a9160773a6577a01f5efc·...·]-3">)</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="p"·data-group-id="4257482623-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="4257482623-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·62c69acf7b064b6c73f129ee16fc524f1f10f7a9679816418f25682f02d1ce7b·...·]-3">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="3408669905-5">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">·</span><span·class="ow">bsl</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="3408[·...·truncated·by·diffoscope;·len:·6,·SHA:·1b32084b4ff8c89b3a3310d9ff07ef4171c354a9c52f8d85ed5bca2fd9f94478·...·]-5">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="4257482623-5">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">·</span><span·class="ow">bsl</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="4257[·...·truncated·by·diffoscope;·len:·6,·SHA:·6aa3667a4805877b8c1c42430e1f8bf5f31f6cf84e8a8aeec56c579a46d51200·...·]-5">)</span><span·class="p">,</span><span·class="w">
196 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="3408669905-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="3408669905-6">)</span><span·class="p">,</span><span·class="w">196 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="4257482623-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="4257482623-6">)</span><span·class="p">,</span><span·class="w">
197 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">197 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
198 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="3408669905-7">(</span><span·class="p">_</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="3408669905-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="4257482623-7">(</span><span·class="p">_</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="4257482623-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">199 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
200 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="3408669905-8">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="3408669905-8">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">128</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="4257482623-8">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="4257482623-8">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">128</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="3408669905-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3408669905-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="3408669905-11">(</sp[·...·truncated·by·diffoscope;·len:·287,·SHA:·e8e1e07e94b4ab71214f54cf2a69c12f13d0d83e666b096d354dcb0409939a8b·...·]-9">)</span><span·class="p">,</span><span·class="w">201 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4257482623-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4257482623-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="4257482623-11">(</sp[·...·truncated·by·diffoscope;·len:·287,·SHA:·5cc6971e35258e12c65a1b6d726b8574716c15078eb6cd9a4541847a827b50f6·...·]-9">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="3408669905-12">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">128</span><span·class="p"·data-group-id="340866[·...·truncated·by·diffoscope;·len:·4,·SHA:·f34faff80b330ad8e52cb94a75498e84bf408f25fe3e763a758b5bce4649c4d5·...·]-12">)</span><span·class="p">;</span><span·class="w">202 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="4257482623-12">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">128</span><span·class="p"·data-group-id="425748[·...·truncated·by·diffoscope;·len:·4,·SHA:·9a2d94742295a879f4da56d22e59f2b5edd3efad1ddb6ba3ae603eb8bd4d40df·...·]-12">)</span><span·class="p">;</span><span·class="w">
203 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="3408669905-13">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="3408669905-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">203 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="4257482623-13">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="4257482623-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="3408669905-14">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3408669905-15">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="3408669905-16">(</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·c7cac06d980c6af0ae107cfc7d12502825b079c78edef61330a3be5719a1f757·...·]-14">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4257482623-14">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4257482623-15">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="4257482623-16">(</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·b2094e63cd3298c75ba4ee50a8d7581a0ab2334be386f8570cb84bf45c14280b·...·]-14">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="3408669905-17">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="34086699[·...·truncated·by·diffoscope;·len:·2,·SHA:·c97550ce8213ef5cf6ed4ba48790c137df3ef6a5da20b48961001a634b6cead2·...·]-17">)</span><span·class="p">.</span></code></pre><p>When·writing·data·it's·generally·more·efficient·to·write·a·list·of·binaries205 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="4257482623-17">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="42574826[·...·truncated·by·diffoscope;·len:·2,·SHA:·535fa30d7e25dd8a49f1536779734ec8286108d115da5045d77f3b4185d8f790·...·]-17">)</span><span·class="p">.</span></code></pre><p>When·writing·data·it's·generally·more·efficient·to·write·a·list·of·binaries
206 rather·than·a·list·of·integers.·It·is·not·needed·to·flatten·a·deep·list·before206 rather·than·a·list·of·integers.·It·is·not·needed·to·flatten·a·deep·list·before
207 writing.·On·Unix·hosts,·scatter·output,·which·writes·a·set·of·buffers·in·one207 writing.·On·Unix·hosts,·scatter·output,·which·writes·a·set·of·buffers·in·one
208 operation,·is·used·when·possible.·In·this·way208 operation,·is·used·when·possible.·In·this·way
209 <a·href="#write/2"><code·class="inline">write(FD,·[Bin1,·Bin2·|·Bin3])</code></a>·writes·the·contents·of·the209 <a·href="#write/2"><code·class="inline">write(FD,·[Bin1,·Bin2·|·Bin3])</code></a>·writes·the·contents·of·the
210 binaries·without·copying·the·data·at·all,·except·for·perhaps·deep·down·in·the210 binaries·without·copying·the·data·at·all,·except·for·perhaps·deep·down·in·the
211 operating·system·kernel.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>If·an·error·occurs·when·accessing·an·open·file·with·module·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html"><code·class="inline">io</code></a>,·the·process211 operating·system·kernel.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>If·an·error·occurs·when·accessing·an·open·file·with·module·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html"><code·class="inline">io</code></a>,·the·process
212 handling·the·file·exits.·The·dead·file·process·can·hang·if·a·process·tries·to212 handling·the·file·exits.·The·dead·file·process·can·hang·if·a·process·tries·to
Offset 1956, 16 lines modifiedOffset 1956, 16 lines modified
1956 ······</div>1956 ······</div>
  
1957 <p>Reads·Erlang·terms,·separated·by·<code·class="inline">.</code>,·from·<code·class="inline">Filename</code>.·Returns·one·of·the1957 <p>Reads·Erlang·terms,·separated·by·<code·class="inline">.</code>,·from·<code·class="inline">Filename</code>.·Returns·one·of·the
1958 following:</p><ul><li><p><strong><code·class="inline">{ok,·Terms}</code></strong>·-·The·file·was·successfully·read.</p></li><li><p><strong><code·class="inline">{error,·atom()}</code></strong>·-·An·error·occurred·when·opening·the·file·or·reading·it.1958 following:</p><ul><li><p><strong><code·class="inline">{ok,·Terms}</code></strong>·-·The·file·was·successfully·read.</p></li><li><p><strong><code·class="inline">{error,·atom()}</code></strong>·-·An·error·occurred·when·opening·the·file·or·reading·it.
1959 For·a·list·of·typical·error·codes,·see·<a·href="#open/2"><code·class="inline">open/2</code></a>.</p></li><li><p><strong><code·class="inline">{error,·{Line,·Mod,·Term}}</code></strong>·-·An·error·occurred·when·interpreting·the1959 For·a·list·of·typical·error·codes,·see·<a·href="#open/2"><code·class="inline">open/2</code></a>.</p></li><li><p><strong><code·class="inline">{error,·{Line,·Mod,·Term}}</code></strong>·-·An·error·occurred·when·interpreting·the
1960 Erlang·terms·in·the·file.·To·convert·the·three-element·tuple·to·an·English1960 Erlang·terms·in·the·file.·To·convert·the·three-element·tuple·to·an·English
1961 description·of·the·error,·use·<a·href="#format_error/1"><code·class="inline">format_error/1</code></a>.</p></li></ul><p><em>Example:</em></p><pre><code·class="text">f.txt:··{person,·&quot;kalle&quot;,·25}.1961 description·of·the·error,·use·<a·href="#format_error/1"><code·class="inline">format_error/1</code></a>.</p></li></ul><p><em>Example:</em></p><pre><code·class="text">f.txt:··{person,·&quot;kalle&quot;,·25}.
1962 ········{person,·&quot;pelle&quot;,·30}.</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">consult</span><span·class="p"·data-group-id="6617516509-1">(</span><span·class="s">&quot;f.txt&quot;</span><span·class="p"·data-group-id="6617516509-1">)</span><span·class="p">.</span><span·class="w">1962 ········{person,·&quot;pelle&quot;,·30}.</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">consult</span><span·class="p"·data-group-id="7844881061-1">(</span><span·class="s">&quot;f.txt&quot;</span><span·class="p"·data-group-id="7844881061-1">)</span><span·class="p">.</span><span·class="w">
1963 </span><span·class="p"·data-group-id="6617516509-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6617516509-3">[</span><span·class="p"·data-group-id="6617516509-4">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="s">&quot;ka[·...·truncated·by·diffoscope;·len:·487,·SHA:·7cf6ecd44df1c610ae8433d513cbe0ebdf0596bfd5d5c21b3d4dbe29829d1789·...·]-2">}</span></code></pre><p>The·encoding·of·<code·class="inline">Filename</code>·can·be·set·by·a·comment,·as·described·in1963 </span><span·class="p"·data-group-id="7844881061-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7844881061-3">[</span><span·class="p"·data-group-id="7844881061-4">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="s">&quot;ka[·...·truncated·by·diffoscope;·len:·487,·SHA:·918cb67fb2e80ffaf5c3a7bc329d119a15135587d9f072c22625daced756dbaa·...·]-2">}</span></code></pre><p>The·encoding·of·<code·class="inline">Filename</code>·can·be·set·by·a·comment,·as·described·in
1964 <a·href="../../../../lib/stdlib-6.2/doc/html/epp.html#encoding"><code·class="inline">epp</code></a>.</p>1964 <a·href="../../../../lib/stdlib-6.2/doc/html/epp.html#encoding"><code·class="inline">epp</code></a>.</p>
1965 ··</section>1965 ··</section>
1966 </section>1966 </section>
1967 <section·class="detail"·id="copy/2">1967 <section·class="detail"·id="copy/2">
  
1968 ··<div·class="detail-header">1968 ··<div·class="detail-header">
1969 ····<a·href="#copy/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1969 ····<a·href="#copy/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 3246, 15 lines modifiedOffset 3246, 15 lines modified
3246 ····························FileInfo·::·<a·href="#t:file_info/0">file_info</a>(),3246 ····························FileInfo·::·<a·href="#t:file_info/0">file_info</a>(),
3247 ····························Reason·::·<a·href="#t:posix/0">posix</a>()·|·badarg.</pre>3247 ····························Reason·::·<a·href="#t:posix/0">posix</a>()·|·badarg.</pre>
  
3248 ······</div>3248 ······</div>
  
3249 <p>Retrieves·information·about·a·file.·Returns·<code·class="inline">{ok,·FileInfo}</code>·if·successful,3249 <p>Retrieves·information·about·a·file.·Returns·<code·class="inline">{ok,·FileInfo}</code>·if·successful,
3250 otherwise·<code·class="inline">{error,·Reason}</code>.</p><p><code·class="inline">FileInfo</code>·is·a·record·<code·class="inline">file_info</code>,·defined·in·the·Kernel·include·file·<code·class="inline">file.hrl</code>.3250 otherwise·<code·class="inline">{error,·Reason}</code>.</p><p><code·class="inline">FileInfo</code>·is·a·record·<code·class="inline">file_info</code>,·defined·in·the·Kernel·include·file·<code·class="inline">file.hrl</code>.
3251 Include·the·following·directive·in·the·module·from·which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6591162844-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="6591162844-1">)</span><span·class="p">.</span></code></pre><p>The·time·type·returned·in·<code·class="inline">atime</code>,·<code·class="inline">mtime</code>,·and·<code·class="inline">ctime</code>·is·dependent·on·the·time3251 Include·the·following·directive·in·the·module·from·which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3153753845-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="3153753845-1">)</span><span·class="p">.</span></code></pre><p>The·time·type·returned·in·<code·class="inline">atime</code>,·<code·class="inline">mtime</code>,·and·<code·class="inline">ctime</code>·is·dependent·on·the·time
3252 type·set·in·<code·class="inline">Opts·::·{time,·Type}</code>·as·follows:</p><ul><li><p><strong><code·class="inline">local</code></strong>·-·Returns·local·time.</p></li><li><p><strong><code·class="inline">universal</code></strong>·-·Returns·universal·time.</p></li><li><p><strong><code·class="inline">posix</code></strong>·-·Returns·seconds·since·or·before·Unix·time·epoch,·which·is3252 type·set·in·<code·class="inline">Opts·::·{time,·Type}</code>·as·follows:</p><ul><li><p><strong><code·class="inline">local</code></strong>·-·Returns·local·time.</p></li><li><p><strong><code·class="inline">universal</code></strong>·-·Returns·universal·time.</p></li><li><p><strong><code·class="inline">posix</code></strong>·-·Returns·seconds·since·or·before·Unix·time·epoch,·which·is
3253 1970-01-01·00:00·UTC.</p></li></ul><p>Default·is·<code·class="inline">{time,·local}</code>.</p><p>If·the·option·<code·class="inline">raw</code>·is·set,·the·file·server·is·not·called·and·only·information3253 1970-01-01·00:00·UTC.</p></li></ul><p>Default·is·<code·class="inline">{time,·local}</code>.</p><p>If·the·option·<code·class="inline">raw</code>·is·set,·the·file·server·is·not·called·and·only·information
3254 about·local·files·is·returned.·Note·that·this·will·break·this·module's·atomicity3254 about·local·files·is·returned.·Note·that·this·will·break·this·module's·atomicity
3255 guarantees·as·it·can·race·with·a·concurrent·call·to3255 guarantees·as·it·can·race·with·a·concurrent·call·to
3256 <a·href="#write_file_info/2"><code·class="inline">write_file_info/1,2</code>·</a>.</p><p>This·option·has·no·effect·when·the·function·is·given·an·I/O·device·instead·of·a3256 <a·href="#write_file_info/2"><code·class="inline">write_file_info/1,2</code>·</a>.</p><p>This·option·has·no·effect·when·the·function·is·given·an·I/O·device·instead·of·a
3257 file·name.·Use·<a·href="#open/2"><code·class="inline">open/2</code></a>·with·the·<code·class="inline">raw</code>·mode·to·obtain·a·file·descriptor·first.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>As·file·times·are·stored·in·POSIX·time·on·most·OS,·it·is·faster·to·query·file3257 file·name.·Use·<a·href="#open/2"><code·class="inline">open/2</code></a>·with·the·<code·class="inline">raw</code>·mode·to·obtain·a·file·descriptor·first.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>As·file·times·are·stored·in·POSIX·time·on·most·OS,·it·is·faster·to·query·file
3258 information·with·option·<code·class="inline">posix</code>.</p></section><p>The·record·<code·class="inline">file_info</code>·contains·the·following·fields:</p><ul><li><p><strong><code·class="inline">size·=</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·Size·of·file·in·bytes.</p></li><li><p><strong><code·class="inline">type·=·device·|·directory·|·other·|·regular</code></strong>·-·The·type·of·the·file.·Can3258 information·with·option·<code·class="inline">posix</code>.</p></section><p>The·record·<code·class="inline">file_info</code>·contains·the·following·fields:</p><ul><li><p><strong><code·class="inline">size·=</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·Size·of·file·in·bytes.</p></li><li><p><strong><code·class="inline">type·=·device·|·directory·|·other·|·regular</code></strong>·-·The·type·of·the·file.·Can
Offset 3900, 15 lines modifiedOffset 3900, 15 lines modified
3900 ·····························Reason·::·<a·href="#t:posix/0">posix</a>()·|·badarg.</pre>3900 ·····························Reason·::·<a·href="#t:posix/0">posix</a>()·|·badarg.</pre>
  
3901 ······</div>3901 ······</div>
  
3902 <p>Changes·file·information.·Returns·<code·class="inline">ok</code>·if·successful,·otherwise3902 <p>Changes·file·information.·Returns·<code·class="inline">ok</code>·if·successful,·otherwise
3903 <code·class="inline">{error,·Reason}</code>.</p><p><code·class="inline">FileInfo</code>·is·a·record·<code·class="inline">file_info</code>,·defined·in·the·Kernel3903 <code·class="inline">{error,·Reason}</code>.</p><p><code·class="inline">FileInfo</code>·is·a·record·<code·class="inline">file_info</code>,·defined·in·the·Kernel
3904 include·file·<code·class="inline">file.hrl</code>.·Include·the·following·directive·in·the·module·from3904 include·file·<code·class="inline">file.hrl</code>.·Include·the·following·directive·in·the·module·from
3905 which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8180634418-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="8180634418-1">)</span><span·class="p">.</span></code></pre><p>The·time·type·set·in·<code·class="inline">atime</code>,·<code·class="inline">mtime</code>,·and·<code·class="inline">ctime</code>·depends·on·the·time·type·set3905 which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3729729264-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="3729729264-1">)</span><span·class="p">.</span></code></pre><p>The·time·type·set·in·<code·class="inline">atime</code>,·<code·class="inline">mtime</code>,·and·<code·class="inline">ctime</code>·depends·on·the·time·type·set
3906 in·<code·class="inline">Opts·::·{time,·Type}</code>·as·follows:</p><ul><li><p><strong><code·class="inline">local</code></strong>·-·Interprets·the·time·set·as·local.</p></li><li><p><strong><code·class="inline">universal</code></strong>·-·Interprets·it·as·universal·time.</p></li><li><p><strong><code·class="inline">posix</code></strong>·-·Must·be·seconds·since·or·before·Unix·time·epoch,·which·is3906 in·<code·class="inline">Opts·::·{time,·Type}</code>·as·follows:</p><ul><li><p><strong><code·class="inline">local</code></strong>·-·Interprets·the·time·set·as·local.</p></li><li><p><strong><code·class="inline">universal</code></strong>·-·Interprets·it·as·universal·time.</p></li><li><p><strong><code·class="inline">posix</code></strong>·-·Must·be·seconds·since·or·before·Unix·time·epoch,·which·is
3907 1970-01-01·00:00·UTC.</p></li></ul><p>Default·is·<code·class="inline">{time,·local}</code>.</p><p>If·the·option·<code·class="inline">raw</code>·is·set,·the·file·server·is·not·called·and·only·information3907 1970-01-01·00:00·UTC.</p></li></ul><p>Default·is·<code·class="inline">{time,·local}</code>.</p><p>If·the·option·<code·class="inline">raw</code>·is·set,·the·file·server·is·not·called·and·only·information
3908 about·local·files·is·returned.</p><p>The·following·fields·are·used·from·the·record,·if·they·are·specified:</p><ul><li><p><strong><code·class="inline">atime·=</code>·<a·href="#t:date_time/0"><code·class="inline">date_time/0</code></a>·<code·class="inline">|</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·The·last·time·the·file·was3908 about·local·files·is·returned.</p><p>The·following·fields·are·used·from·the·record,·if·they·are·specified:</p><ul><li><p><strong><code·class="inline">atime·=</code>·<a·href="#t:date_time/0"><code·class="inline">date_time/0</code></a>·<code·class="inline">|</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·The·last·time·the·file·was
3909 read.</p></li><li><p><strong><code·class="inline">mtime·=</code>·<a·href="#t:date_time/0"><code·class="inline">date_time/0</code></a>·<code·class="inline">|</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·The·last·time·the·file·was3909 read.</p></li><li><p><strong><code·class="inline">mtime·=</code>·<a·href="#t:date_time/0"><code·class="inline">date_time/0</code></a>·<code·class="inline">|</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·The·last·time·the·file·was
3910 written.</p></li><li><p><strong><code·class="inline">ctime·=</code>·<a·href="#t:date_time/0"><code·class="inline">date_time/0</code></a>·<code·class="inline">|</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·On·Unix,·any·value3910 written.</p></li><li><p><strong><code·class="inline">ctime·=</code>·<a·href="#t:date_time/0"><code·class="inline">date_time/0</code></a>·<code·class="inline">|</code>·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0"><code·class="inline">non_neg_integer/0</code></a></strong>·-·On·Unix,·any·value
3911 specified·for·this·field·is·ignored·(the·&quot;ctime&quot;·for·the·file·is·set·to·the3911 specified·for·this·field·is·ignored·(the·&quot;ctime&quot;·for·the·file·is·set·to·the
3912 current·time).·On·Windows,·this·field·is·the·new·creation·time·to·set·for·the3912 current·time).·On·Windows,·this·field·is·the·new·creation·time·to·set·for·the
169 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/gen_sctp.html
    
Offset 132, 15 lines modifiedOffset 132, 15 lines modified
132 The·implementation·assumes·that·the·OS·kernel·supports·SCTP132 The·implementation·assumes·that·the·OS·kernel·supports·SCTP
133 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">(RFC·2960)</a>133 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">(RFC·2960)</a>
134 through·the·user-level134 through·the·user-level
135 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions</a>.</p><p>During·development,·this·implementation·was·tested·on:</p><ul><li>Linux·Fedora·Core·5.0·(kernel·2.6.15-2054·or·later·is·needed)</li><li>Solaris·10,·11</li></ul><p>During·OTP·adaptation·it·was·tested·on:</p><ul><li>SUSE·Linux·Enterprise·Server·10·(x86_64)·kernel·2.6.16.27-0.6-smp,·with135 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions</a>.</p><p>During·development,·this·implementation·was·tested·on:</p><ul><li>Linux·Fedora·Core·5.0·(kernel·2.6.15-2054·or·later·is·needed)</li><li>Solaris·10,·11</li></ul><p>During·OTP·adaptation·it·was·tested·on:</p><ul><li>SUSE·Linux·Enterprise·Server·10·(x86_64)·kernel·2.6.16.27-0.6-smp,·with
136 lksctp-tools-1.0.6</li><li>Briefly·on·Solaris·10</li><li>SUSE·Linux·Enterprise·Server·10·Service·Pack·1·(x86_64)·kernel136 lksctp-tools-1.0.6</li><li>Briefly·on·Solaris·10</li><li>SUSE·Linux·Enterprise·Server·10·Service·Pack·1·(x86_64)·kernel
137 2.6.16.54-0.2.3-smp·with·lksctp-tools-1.0.7</li><li>FreeBSD·8.2</li></ul><p>This·module·was·written·for·one-to-many·style·sockets·(type·<code·class="inline">seqpacket</code>).137 2.6.16.54-0.2.3-smp·with·lksctp-tools-1.0.7</li><li>FreeBSD·8.2</li></ul><p>This·module·was·written·for·one-to-many·style·sockets·(type·<code·class="inline">seqpacket</code>).
138 With·the·addition·of·<a·href="#peeloff/2"><code·class="inline">peeloff/2</code></a>,·one-to-one·style·sockets·(type·<code·class="inline">stream</code>)138 With·the·addition·of·<a·href="#peeloff/2"><code·class="inline">peeloff/2</code></a>,·one-to-one·style·sockets·(type·<code·class="inline">stream</code>)
139 were·introduced.</p><p>Record·definitions·for·this·module·can·be·found·using:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3759758354-1">(</span><span·class="s">&quot;kernel/include/inet_sctp.hrl&quot;</span><span·class="p"·data-group-id="3759758354-1">)</span><span·class="p">.</span></code></pre><p>These·record·definitions·use·the·&quot;new&quot;·spelling·'adaptation',139 were·introduced.</p><p>Record·definitions·for·this·module·can·be·found·using:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="7986891467-1">(</span><span·class="s">&quot;kernel/include/inet_sctp.hrl&quot;</span><span·class="p"·data-group-id="7986891467-1">)</span><span·class="p">.</span></code></pre><p>These·record·definitions·use·the·&quot;new&quot;·spelling·'adaptation',
140 not·the·deprecated·'adaption',·regardless·of·which·spelling140 not·the·deprecated·'adaption',·regardless·of·which·spelling
141 the·underlying·C·API·uses.</p><h2·id="module-sctp-socket-options"·class="section-heading">141 the·underlying·C·API·uses.</p><h2·id="module-sctp-socket-options"·class="section-heading">
142 ··<a·href="#module-sctp-socket-options"·class="hover-link">142 ··<a·href="#module-sctp-socket-options"·class="hover-link">
143 ····<i·class="ri-link-m"·aria-hidden="true"></i>143 ····<i·class="ri-link-m"·aria-hidden="true"></i>
144 ··</a>144 ··</a>
145 ··<span·class="text"><a·href=""·id="options"></a>·SCTP·Socket·Options</span>145 ··<span·class="text"><a·href=""·id="options"></a>·SCTP·Socket·Options</span>
146 </h2>146 </h2>
Offset 180, 39 lines modifiedOffset 180, 39 lines modified
180 the·driver·buffer·(see·<code·class="inline">buffer</code>·above).</p></li><li><p><strong><code·class="inline">{recbuf, integer()}</code></strong>·-·The·size,·in·bytes,·of·the·OS·kernel·receive180 the·driver·buffer·(see·<code·class="inline">buffer</code>·above).</p></li><li><p><strong><code·class="inline">{recbuf, integer()}</code></strong>·-·The·size,·in·bytes,·of·the·OS·kernel·receive
181 buffer·for·this·socket.·Sending·errors·would·occur·for·datagrams181 buffer·for·this·socket.·Sending·errors·would·occur·for·datagrams
182 larger·than·<code·class="inline">val(recbuf)</code>.·Setting·this·option·also·adjusts·the·size182 larger·than·<code·class="inline">val(recbuf)</code>.·Setting·this·option·also·adjusts·the·size
183 of·the·driver·buffer·(see·<code·class="inline">buffer</code>·above).</p></li></ul><h3·id="option_non_block_send"><a·href=""></a></h3><ul><li><p><strong><code·class="inline">{non_block_send, boolean()}</code></strong>·-·A·send·call·that·would·otherwise·block·(hang),183 of·the·driver·buffer·(see·<code·class="inline">buffer</code>·above).</p></li></ul><h3·id="option_non_block_send"><a·href=""></a></h3><ul><li><p><strong><code·class="inline">{non_block_send, boolean()}</code></strong>·-·A·send·call·that·would·otherwise·block·(hang),
184 will·instead·immediately·return·with·e.g.·<code·class="inline">{error,·eagain}</code>184 will·instead·immediately·return·with·e.g.·<code·class="inline">{error,·eagain}</code>
185 <em>if</em>·this·option·has·been·set·to·<code·class="inline">true</code>.185 <em>if</em>·this·option·has·been·set·to·<code·class="inline">true</code>.
186 Defaults·to·<code·class="inline">false</code>.</p></li><li><p><strong><code·class="inline">{sctp_module, module()}</code></strong>·-·Overrides·which·callback·module·is·used.186 Defaults·to·<code·class="inline">false</code>.</p></li><li><p><strong><code·class="inline">{sctp_module, module()}</code></strong>·-·Overrides·which·callback·module·is·used.
187 Defaults·to·<code·class="inline">inet_sctp</code>·for·IPv4·and·<code·class="inline">inet6_sctp</code>·for·IPv6.</p></li><li><p><strong><code·class="inline">{sctp_rtoinfo, #sctp_rtoinfo{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_rtoinfo</span><span·class="p"·data-group-id="6955044839-1">{</span><span·class="w">187 Defaults·to·<code·class="inline">inet_sctp</code>·for·IPv4·and·<code·class="inline">inet6_sctp</code>·for·IPv6.</p></li><li><p><strong><code·class="inline">{sctp_rtoinfo, #sctp_rtoinfo{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_rtoinfo</span><span·class="p"·data-group-id="8741550951-1">{</span><span·class="w">
188 ······</span><span·class="ss">assoc_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="6955044839-2">(</span><span·class="p"·data-group-id="6955044839-2">)</span><span·class="p">,</span><span·class="w">188 ······</span><span·class="ss">assoc_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="8741550951-2">(</span><span·class="p"·data-group-id="8741550951-2">)</span><span·class="p">,</span><span·class="w">
189 ······</span><span·class="ss">initial</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="6955044839-3">(</span><span·class="p"·data-group-id="6955044839-3">)</span><span·class="p">,</span><span·class="w">189 ······</span><span·class="ss">initial</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8741550951-3">(</span><span·class="p"·data-group-id="8741550951-3">)</span><span·class="p">,</span><span·class="w">
190 ······</span><span·class="ss">max</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="6955044839-4">(</span><span·class="p"·data-group-id="6955044839-4">)</span><span·class="p">,</span><span·class="w">190 ······</span><span·class="ss">max</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8741550951-4">(</span><span·class="p"·data-group-id="8741550951-4">)</span><span·class="p">,</span><span·class="w">
191 ······</span><span·class="ss">min</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="6955044839-5">(</span><span·class="p"·data-group-id="6955044839-5">)</span><span·class="w">191 ······</span><span·class="ss">min</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8741550951-5">(</span><span·class="p"·data-group-id="8741550951-5">)</span><span·class="w">
192 </span><span·class="p"·data-group-id="6955044839-1">}</span></code></pre><p>Determines·retransmission·time-out·parameters,·in·milliseconds,·for·the192 </span><span·class="p"·data-group-id="8741550951-1">}</span></code></pre><p>Determines·retransmission·time-out·parameters,·in·milliseconds,·for·the
193 association(s)·specified·by·<code·class="inline">assoc_id</code>.</p><p><code·class="inline">assoc_id = 0</code>·(default)·indicates·the·whole·endpoint.·See193 association(s)·specified·by·<code·class="inline">assoc_id</code>.</p><p><code·class="inline">assoc_id = 0</code>·(default)·indicates·the·whole·endpoint.·See
194 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC·2960</a>·and194 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC·2960</a>·and
195 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>195 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>
196 for·the·exact·semantics·of·the·field·values.</p></li><li><p><strong><code·class="inline">{sctp_associnfo, #sctp_assocparams{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_assocparams</span><span·class="p"·data-group-id="5208092843-1">{</span><span·class="w">196 for·the·exact·semantics·of·the·field·values.</p></li><li><p><strong><code·class="inline">{sctp_associnfo, #sctp_assocparams{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_assocparams</span><span·class="p"·data-group-id="5859965957-1">{</span><span·class="w">
197 ······</span><span·class="ss">assoc_id</span><span·class="w">·················</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="5208092843-2">(</span><span·class="p"·data-group-id="5208092843-2">)</span><span·class="p">,</span><span·class="w">197 ······</span><span·class="ss">assoc_id</span><span·class="w">·················</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="5859965957-2">(</span><span·class="p"·data-group-id="5859965957-2">)</span><span·class="p">,</span><span·class="w">
198 ······</span><span·class="ss">asocmaxrxt</span><span·class="w">···············</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5208092843-3">(</span><span·class="p"·data-group-id="5208092843-3">)</span><span·class="p">,</span><span·class="w">198 ······</span><span·class="ss">asocmaxrxt</span><span·class="w">···············</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5859965957-3">(</span><span·class="p"·data-group-id="5859965957-3">)</span><span·class="p">,</span><span·class="w">
199 ······</span><span·class="ss">number_peer_destinations</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5208092843-4">(</span><span·class="p"·data-group-id="5208092843-4">)</span><span·class="p">,</span><span·class="w">199 ······</span><span·class="ss">number_peer_destinations</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5859965957-4">(</span><span·class="p"·data-group-id="5859965957-4">)</span><span·class="p">,</span><span·class="w">
200 ······</span><span·class="ss">peer_rwnd</span><span·class="w">················</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5208092843-5">(</span><span·class="p"·data-group-id="5208092843-5">)</span><span·class="p">,</span><span·class="w">200 ······</span><span·class="ss">peer_rwnd</span><span·class="w">················</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5859965957-5">(</span><span·class="p"·data-group-id="5859965957-5">)</span><span·class="p">,</span><span·class="w">
201 ······</span><span·class="ss">local_rwnd</span><span·class="w">···············</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5208092843-6">(</span><span·class="p"·data-group-id="5208092843-6">)</span><span·class="p">,</span><span·class="w">201 ······</span><span·class="ss">local_rwnd</span><span·class="w">···············</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5859965957-6">(</span><span·class="p"·data-group-id="5859965957-6">)</span><span·class="p">,</span><span·class="w">
202 ······</span><span·class="ss">cookie_life</span><span·class="w">··············</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5208092843-7">(</span><span·class="p"·data-group-id="5208092843-7">)</span><span·class="w">202 ······</span><span·class="ss">cookie_life</span><span·class="w">··············</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5859965957-7">(</span><span·class="p"·data-group-id="5859965957-7">)</span><span·class="w">
203 </span><span·class="p"·data-group-id="5208092843-1">}</span></code></pre><p>Determines·association·parameters·for·the·association(s)·specified·by203 </span><span·class="p"·data-group-id="5859965957-1">}</span></code></pre><p>Determines·association·parameters·for·the·association(s)·specified·by
204 <code·class="inline">assoc_id</code>.</p><p><code·class="inline">assoc_id = 0</code>·(default)·indicates·the·whole·endpoint.·See204 <code·class="inline">assoc_id</code>.</p><p><code·class="inline">assoc_id = 0</code>·(default)·indicates·the·whole·endpoint.·See
205 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>205 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>
206 for·the·discussion·of·their·semantics.·Rarely·used.</p></li><li><p><strong><code·class="inline">{sctp_initmsg, #sctp_initmsg{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_initmsg</span><span·class="p"·data-group-id="8291869977-1">{</span><span·class="w">206 for·the·discussion·of·their·semantics.·Rarely·used.</p></li><li><p><strong><code·class="inline">{sctp_initmsg, #sctp_initmsg{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_initmsg</span><span·class="p"·data-group-id="2612860584-1">{</span><span·class="w">
207 ·····</span><span·class="ss">num_ostreams</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8291869977-2">(</span><span·class="p"·data-group-id="8291869977-2">)</span><span·class="p">,</span><span·class="w">207 ·····</span><span·class="ss">num_ostreams</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="2612860584-2">(</span><span·class="p"·data-group-id="2612860584-2">)</span><span·class="p">,</span><span·class="w">
208 ·····</span><span·class="ss">max_instreams</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8291869977-3">(</span><span·class="p"·data-group-id="8291869977-3">)</span><span·class="p">,</span><span·class="w">208 ·····</span><span·class="ss">max_instreams</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="2612860584-3">(</span><span·class="p"·data-group-id="2612860584-3">)</span><span·class="p">,</span><span·class="w">
209 ·····</span><span·class="ss">max_attempts</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8291869977-4">(</span><span·class="p"·data-group-id="8291869977-4">)</span><span·class="p">,</span><span·class="w">209 ·····</span><span·class="ss">max_attempts</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="2612860584-4">(</span><span·class="p"·data-group-id="2612860584-4">)</span><span·class="p">,</span><span·class="w">
210 ·····</span><span·class="ss">max_init_timeo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8291869977-5">(</span><span·class="p"·data-group-id="8291869977-5">)</span><span·class="w">210 ·····</span><span·class="ss">max_init_timeo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="2612860584-5">(</span><span·class="p"·data-group-id="2612860584-5">)</span><span·class="w">
211 </span><span·class="p"·data-group-id="8291869977-1">}</span></code></pre><p>Determines·the·default·parameters·that·this·socket·tries·to·negotiate211 </span><span·class="p"·data-group-id="2612860584-1">}</span></code></pre><p>Determines·the·default·parameters·that·this·socket·tries·to·negotiate
212 with·its·peer·while·establishing·an·association·with·it.·Is·to·be·set·after212 with·its·peer·while·establishing·an·association·with·it.·Is·to·be·set·after
213 <a·href="#open/1"><code·class="inline">open/*</code></a>·but·before·the·first·<a·href="#connect/4"><code·class="inline">connect/*</code></a>.213 <a·href="#open/1"><code·class="inline">open/*</code></a>·but·before·the·first·<a·href="#connect/4"><code·class="inline">connect/*</code></a>.
214 <code·class="inline">#sctp_initmsg{}</code>·can·also·be·used·as·ancillary·data·with·the·first·call·of214 <code·class="inline">#sctp_initmsg{}</code>·can·also·be·used·as·ancillary·data·with·the·first·call·of
215 <a·href="#send/3"><code·class="inline">send/*</code></a>·to·a·new·peer·(when·a·new·association·is·created).</p><ul><li><p><strong><code·class="inline">num_ostreams</code></strong>·-·Number·of·outbound·streams</p></li><li><p><strong><code·class="inline">max_instreams</code></strong>·-·Maximum·number·of·inbound·streams</p></li><li><p><strong><code·class="inline">max_attempts</code></strong>·-·Maximum·retransmissions·while·establishing·an215 <a·href="#send/3"><code·class="inline">send/*</code></a>·to·a·new·peer·(when·a·new·association·is·created).</p><ul><li><p><strong><code·class="inline">num_ostreams</code></strong>·-·Number·of·outbound·streams</p></li><li><p><strong><code·class="inline">max_instreams</code></strong>·-·Maximum·number·of·inbound·streams</p></li><li><p><strong><code·class="inline">max_attempts</code></strong>·-·Maximum·retransmissions·while·establishing·an
216 association</p></li><li><p><strong><code·class="inline">max_init_timeo</code></strong>·-·Time-out,·in·milliseconds,·for·establishing·an216 association</p></li><li><p><strong><code·class="inline">max_init_timeo</code></strong>·-·Time-out,·in·milliseconds,·for·establishing·an
217 association</p></li></ul></li><li><p><strong><code·class="inline">{sctp_autoclose, integer()·&gt;=·0}</code></strong>·-·Determines·the·time,·in·seconds,217 association</p></li></ul></li><li><p><strong><code·class="inline">{sctp_autoclose, integer()·&gt;=·0}</code></strong>·-·Determines·the·time,·in·seconds,
218 after·which·an·idle·association·is·automatically·closed.·<code·class="inline">0</code>·means·that·the218 after·which·an·idle·association·is·automatically·closed.·<code·class="inline">0</code>·means·that·the
Offset 221, 239 lines modifiedOffset 221, 239 lines modified
221 expense·of·latency.</p></li><li><p><strong><code·class="inline">{sctp_disable_fragments,·true|false}</code></strong>·-·If·<code·class="inline">true</code>,·induces·an·error·on·an221 expense·of·latency.</p></li><li><p><strong><code·class="inline">{sctp_disable_fragments,·true|false}</code></strong>·-·If·<code·class="inline">true</code>,·induces·an·error·on·an
222 attempt·to·send·a·message·larger·than·the·current·PMTU·size·(which·would222 attempt·to·send·a·message·larger·than·the·current·PMTU·size·(which·would
223 require·fragmentation/reassembling).·Notice·that·message·fragmentation·does223 require·fragmentation/reassembling).·Notice·that·message·fragmentation·does
224 not·affect·the·logical·atomicity·of·its·delivery;·this·option·is·provided·for224 not·affect·the·logical·atomicity·of·its·delivery;·this·option·is·provided·for
225 performance·reasons·only.</p></li><li><p><strong><code·class="inline">{sctp_i_want_mapped_v4_addr, true|false}</code></strong>·-·Turns·on|off·automatic225 performance·reasons·only.</p></li><li><p><strong><code·class="inline">{sctp_i_want_mapped_v4_addr, true|false}</code></strong>·-·Turns·on|off·automatic
226 mapping·of·IPv4·addresses·into·IPv6·ones·(if·the·socket·address·family·is226 mapping·of·IPv4·addresses·into·IPv6·ones·(if·the·socket·address·family·is
227 <code·class="inline">AF_INET6</code>).</p></li><li><p><strong><code·class="inline">{sctp_maxseg, integer()}</code></strong>·-·Determines·the·maximum·chunk·size·if·message227 <code·class="inline">AF_INET6</code>).</p></li><li><p><strong><code·class="inline">{sctp_maxseg, integer()}</code></strong>·-·Determines·the·maximum·chunk·size·if·message
228 fragmentation·is·used.·If·<code·class="inline">0</code>,·the·chunk·size·is·limited·by·the·Path·MTU·only.</p></li><li><p><strong><code·class="inline">{sctp_primary_addr, #sctp_prim{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_prim</span><span·class="p"·data-group-id="3337784702-1">{</span><span·class="w">228 fragmentation·is·used.·If·<code·class="inline">0</code>,·the·chunk·size·is·limited·by·the·Path·MTU·only.</p></li><li><p><strong><code·class="inline">{sctp_primary_addr, #sctp_prim{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_prim</span><span·class="p"·data-group-id="4322368219-1">{</span><span·class="w">
229 ······</span><span·class="ss">assoc_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="3337784702-2">(</span><span·class="p"·data-group-id="3337784702-2">)</span><span·class="p">,</span><span·class="w">229 ······</span><span·class="ss">assoc_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="4322368219-2">(</span><span·class="p"·data-group-id="4322368219-2">)</span><span·class="p">,</span><span·class="w">
230 ······</span><span·class="ss">addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3337784702-3">{</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="3337784702-3">}</span><span·class="w">230 ······</span><span·class="ss">addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4322368219-3">{</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="4322368219-3">}</span><span·class="w">
231 </span><span·class="p"·data-group-id="3337784702-1">}</span><span·class="w">231 </span><span·class="p"·data-group-id="4322368219-1">}</span><span·class="w">
232 ·</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="3337784702-4">(</span><span·class="p"·data-group-id="3337784702-4">)</span><span·class="w">232 ·</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="4322368219-4">(</span><span·class="p"·data-group-id="4322368219-4">)</span><span·class="w">
233 ·</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">port_number</span><span·class="p"·data-group-id="3337784702-5">(</span><span·class="p"·data-group-id="3337784702-5">)</span></code></pre><p>For·the·association·specified·by·<code·class="inline">assoc_id</code>,·<code·class="inline">{IP,Port}</code>·must·be·one·of·the233 ·</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">port_number</span><span·class="p"·data-group-id="4322368219-5">(</span><span·class="p"·data-group-id="4322368219-5">)</span></code></pre><p>For·the·association·specified·by·<code·class="inline">assoc_id</code>,·<code·class="inline">{IP,Port}</code>·must·be·one·of·the
234 peer·addresses.·This·option·determines·that·the·specified·address·is·treated234 peer·addresses.·This·option·determines·that·the·specified·address·is·treated
235 by·the·local·SCTP·stack·as·the·primary·address·of·the·peer.</p></li><li><p><strong><code·class="inline">{sctp_set_peer_primary_addr, #sctp_setpeerprim{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_setpeerprim</span><span·class="p"·data-group-id="8617548621-1">{</span><span·class="w">235 by·the·local·SCTP·stack·as·the·primary·address·of·the·peer.</p></li><li><p><strong><code·class="inline">{sctp_set_peer_primary_addr, #sctp_setpeerprim{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_setpeerprim</span><span·class="p"·data-group-id="0189495349-1">{</span><span·class="w">
236 ······</span><span·class="ss">assoc_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="8617548621-2">(</span><span·class="p"·data-group-id="8617548621-2">)</span><span·class="p">,</span><span·class="w">236 ······</span><span·class="ss">assoc_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="0189495349-2">(</span><span·class="p"·data-group-id="0189495349-2">)</span><span·class="p">,</span><span·class="w">
237 ······</span><span·class="ss">addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8617548621-3">{</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="8617548621-3">}</span><span·class="w">237 ······</span><span·class="ss">addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0189495349-3">{</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="0189495349-3">}</span><span·class="w">
238 </span><span·class="p"·data-group-id="8617548621-1">}</span><span·class="w">238 </span><span·class="p"·data-group-id="0189495349-1">}</span><span·class="w">
239 ·</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="8617548621-4">(</span><span·class="p"·data-group-id="8617548621-4">)</span><span·class="w">239 ·</span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="0189495349-4">(</span><span·class="p"·data-group-id="0189495349-4">)</span><span·class="w">
240 ·</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">port_number</span><span·class="p"·data-group-id="8617548621-5">(</span><span·class="p"·data-group-id="8617548621-5">)</span></code></pre><p>When·set,·informs·the·peer·to·use·<code·class="inline">{IP, Port}</code>·as·the·primary·address·of·the240 ·</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">port_number</span><span·class="p"·data-group-id="0189495349-5">(</span><span·class="p"·data-group-id="0189495349-5">)</span></code></pre><p>When·set,·informs·the·peer·to·use·<code·class="inline">{IP, Port}</code>·as·the·primary·address·of·the
241 local·endpoint·for·the·association·specified·by·<code·class="inline">assoc_id</code>.</p></li><li><p><strong><code·class="inline">{sctp_adaptation_layer, #sctp_setadaptation{}}</code></strong>·<a·href=""·id="option-sctp_adaptation_layer"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_setadaptation</span><span·class="p"·data-group-id="2184218249-1">{</span><span·class="w">241 local·endpoint·for·the·association·specified·by·<code·class="inline">assoc_id</code>.</p></li><li><p><strong><code·class="inline">{sctp_adaptation_layer, #sctp_setadaptation{}}</code></strong>·<a·href=""·id="option-sctp_adaptation_layer"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_setadaptation</span><span·class="p"·data-group-id="7611754974-1">{</span><span·class="w">
242 ······</span><span·class="ss">adaptation_ind</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="2184218249-2">(</span><span·class="p"·data-group-id="2184218249-2">)</span><span·class="w">242 ······</span><span·class="ss">adaptation_ind</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="7611754974-2">(</span><span·class="p"·data-group-id="7611754974-2">)</span><span·class="w">
243 </span><span·class="p"·data-group-id="2184218249-1">}</span></code></pre><p>When·set,·requests·that·the·local·endpoint·uses·the·value·specified·by243 </span><span·class="p"·data-group-id="7611754974-1">}</span></code></pre><p>When·set,·requests·that·the·local·endpoint·uses·the·value·specified·by
244 <code·class="inline">adaptation_ind</code>·as·the·Adaptation·Indication·parameter·for·establishing244 <code·class="inline">adaptation_ind</code>·as·the·Adaptation·Indication·parameter·for·establishing
245 new·associations.·For·details,·see245 new·associations.·For·details,·see
246 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC·2960</a>·and246 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC·2960</a>·and
247 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>.</p></li><li><p><strong><code·class="inline">{sctp_peer_addr_params, #sctp_paddrparams{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_paddrparams</span><span·class="p"·data-group-id="9393390145-1">{</span><span·class="w">247 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>.</p></li><li><p><strong><code·class="inline">{sctp_peer_addr_params, #sctp_paddrparams{}}</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_paddrparams</span><span·class="p"·data-group-id="1056977700-1">{</span><span·class="w">
248 ······</span><span·class="ss">assoc_id</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="9393390145-2">(</span><span·class="p"·data-group-id="9393390145-2">)</span><span·class="p">,</span><span·class="w">248 ······</span><span·class="ss">assoc_id</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="1056977700-2">(</span><span·class="p"·data-group-id="1056977700-2">)</span><span·class="p">,</span><span·class="w">
249 ······</span><span·class="ss">address</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9393390145-3">{</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="9393390145-3">}</span><span·class="p">,</span><span·class="w">249 ······</span><span·class="ss">address</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1056977700-3">{</span><span·class="n">IP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="1056977700-3">}</span><span·class="p">,</span><span·class="w">
250 ······</span><span·class="ss">hbinterval</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9393390145-4">(</span><span·class="p"·data-group-id="9393390145-4">)</span><span·class="p">,</span><span·class="w">250 ······</span><span·class="ss">hbinterval</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1056977700-4">(</span><span·class="p"·data-group-id="1056977700-4">)</span><span·class="p">,</span><span·class="w">
251 ······</span><span·class="ss">pathmaxrxt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9393390145-5">(</span><span·class="p"·data-group-id="9393390145-5">)</span><span·class="p">,</span><span·class="w">251 ······</span><span·class="ss">pathmaxrxt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1056977700-5">(</span><span·class="p"·data-group-id="1056977700-5">)</span><span·class="p">,</span><span·class="w">
252 ······</span><span·class="ss">pathmtu</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9393390145-6">(</span><span·class="p"·data-group-id="9393390145-6">)</span><span·class="p">,</span><span·class="w">252 ······</span><span·class="ss">pathmtu</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1056977700-6">(</span><span·class="p"·data-group-id="1056977700-6">)</span><span·class="p">,</span><span·class="w">
253 ······</span><span·class="ss">sackdelay</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9393390145-7">(</span><span·class="p"·data-group-id="9393390145-7">)</span><span·class="p">,</span><span·class="w">253 ······</span><span·class="ss">sackdelay</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1056977700-7">(</span><span·class="p"·data-group-id="1056977700-7">)</span><span·class="p">,</span><span·class="w">
254 ······</span><span·class="ss">flags</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="9393390145-8">(</span><span·class="p"·data-group-id="9393390145-8">)</span><span·class="w">254 ······</span><span·class="ss">flags</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="1056977700-8">(</span><span·class="p"·data-group-id="1056977700-8">)</span><span·class="w">
255 </span><span·class="p"·data-group-id="9393390145-1">}</span><span·class="w">255 </span><span·class="p"·data-group-id="1056977700-1">}</span><span·class="w">
256 </span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="9393390145-9">(</span><span·class="p"·data-group-id="9393390145-9">)</span><span·class="w">256 </span><span·class="n">IP</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="1056977700-9">(</span><span·class="p"·data-group-id="1056977700-9">)</span><span·class="w">
257 </span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">port_number</span><span·class="p"·data-group-id="9393390145-10">(</span><span·class="p"·data-group-id="9393390145-10">)</span></code></pre><p>Determines·various·per-address·parameters·for·the·association·specified·by257 </span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">port_number</span><span·class="p"·data-group-id="1056977700-10">(</span><span·class="p"·data-group-id="1056977700-10">)</span></code></pre><p>Determines·various·per-address·parameters·for·the·association·specified·by
258 <code·class="inline">assoc_id</code>·and·the·peer·address·<code·class="inline">address</code>·(the·SCTP·protocol·supports258 <code·class="inline">assoc_id</code>·and·the·peer·address·<code·class="inline">address</code>·(the·SCTP·protocol·supports
259 multi-homing,·so·more·than·one·address·can·correspond·to·a·specified259 multi-homing,·so·more·than·one·address·can·correspond·to·a·specified
260 association).</p><ul><li><p><strong><code·class="inline">hbinterval</code></strong>·-·Heartbeat·interval,·in·milliseconds</p></li><li><p><strong><code·class="inline">pathmaxrxt</code></strong>·-·Maximum·number·of·retransmissions·before·this·address·is260 association).</p><ul><li><p><strong><code·class="inline">hbinterval</code></strong>·-·Heartbeat·interval,·in·milliseconds</p></li><li><p><strong><code·class="inline">pathmaxrxt</code></strong>·-·Maximum·number·of·retransmissions·before·this·address·is
261 considered·unreachable·(and·an·alternative·address·is·selected)</p></li><li><p><strong><code·class="inline">pathmtu</code></strong>·-·Fixed·Path·MTU,·if·automatic·discovery·is·disabled·(see261 considered·unreachable·(and·an·alternative·address·is·selected)</p></li><li><p><strong><code·class="inline">pathmtu</code></strong>·-·Fixed·Path·MTU,·if·automatic·discovery·is·disabled·(see
262 <code·class="inline">flags</code>·below)</p></li><li><p><strong><code·class="inline">sackdelay</code></strong>·-·Delay,·in·milliseconds,·for·SAC·messages·(if·the·delay·is262 <code·class="inline">flags</code>·below)</p></li><li><p><strong><code·class="inline">sackdelay</code></strong>·-·Delay,·in·milliseconds,·for·SAC·messages·(if·the·delay·is
263 enabled,·see·<code·class="inline">flags</code>·below)</p></li><li><p><strong><code·class="inline">flags</code></strong>·-·The·following·flags·are·available:</p><ul><li><p><strong><code·class="inline">hb_enable</code></strong>·-·Enables·heartbeat</p></li><li><p><strong><code·class="inline">hb_disable</code></strong>·-·Disables·heartbeat</p></li><li><p><strong><code·class="inline">hb_demand</code></strong>·-·Initiates·heartbeat·immediately</p></li><li><p><strong><code·class="inline">pmtud_enable</code></strong>·-·Enables·automatic·Path·MTU·discovery</p></li><li><p><strong><code·class="inline">pmtud_disable</code></strong>·-·Disables·automatic·Path·MTU·discovery</p></li><li><p><strong><code·class="inline">sackdelay_enable</code></strong>·-·Enables·SAC·delay</p></li><li><p><strong><code·class="inline">sackdelay_disable</code></strong>·-·Disables·SAC·delay</p></li></ul></li></ul></li><li><p><strong><code·class="inline">{sctp_default_send_param, #sctp_sndrcvinfo{}}</code></strong></p><p><a·href=""·id="record-sctp_sndrcvinfo"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_sndrcvinfo</span><span·class="p"·data-group-id="3700379032-1">{</span><span·class="w">263 enabled,·see·<code·class="inline">flags</code>·below)</p></li><li><p><strong><code·class="inline">flags</code></strong>·-·The·following·flags·are·available:</p><ul><li><p><strong><code·class="inline">hb_enable</code></strong>·-·Enables·heartbeat</p></li><li><p><strong><code·class="inline">hb_disable</code></strong>·-·Disables·heartbeat</p></li><li><p><strong><code·class="inline">hb_demand</code></strong>·-·Initiates·heartbeat·immediately</p></li><li><p><strong><code·class="inline">pmtud_enable</code></strong>·-·Enables·automatic·Path·MTU·discovery</p></li><li><p><strong><code·class="inline">pmtud_disable</code></strong>·-·Disables·automatic·Path·MTU·discovery</p></li><li><p><strong><code·class="inline">sackdelay_enable</code></strong>·-·Enables·SAC·delay</p></li><li><p><strong><code·class="inline">sackdelay_disable</code></strong>·-·Disables·SAC·delay</p></li></ul></li></ul></li><li><p><strong><code·class="inline">{sctp_default_send_param, #sctp_sndrcvinfo{}}</code></strong></p><p><a·href=""·id="record-sctp_sndrcvinfo"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_sndrcvinfo</span><span·class="p"·data-group-id="8977011069-1">{</span><span·class="w">
264 ······</span><span·class="ss">stream</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3700379032-2">(</span><span·class="p"·data-group-id="3700379032-2">)</span><span·class="p">,</span><span·class="w">264 ······</span><span·class="ss">stream</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8977011069-2">(</span><span·class="p"·data-group-id="8977011069-2">)</span><span·class="p">,</span><span·class="w">
265 ······</span><span·class="ss">ssn</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3700379032-3">(</span><span·class="p"·data-group-id="3700379032-3">)</span><span·class="p">,</span><span·class="w">265 ······</span><span·class="ss">ssn</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8977011069-3">(</span><span·class="p"·data-group-id="8977011069-3">)</span><span·class="p">,</span><span·class="w">
266 ······</span><span·class="ss">flags</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="3700379032-4">(</span><span·class="p"·data-group-id="3700379032-4">)</span><span·class="p">,</span><span·class="w">266 ······</span><span·class="ss">flags</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"·data-group-id="8977011069-4">(</span><span·class="p"·data-group-id="8977011069-4">)</span><span·class="p">,</span><span·class="w">
267 ······</span><span·class="ss">ppid</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3700379032-5">(</span><span·class="p"·data-group-id="3700379032-5">)</span><span·class="p">,</span><span·class="w">267 ······</span><span·class="ss">ppid</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8977011069-5">(</span><span·class="p"·data-group-id="8977011069-5">)</span><span·class="p">,</span><span·class="w">
268 ······</span><span·class="ss">context</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3700379032-6">(</span><span·class="p"·data-group-id="3700379032-6">)</span><span·class="p">,</span><span·class="w">268 ······</span><span·class="ss">context</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8977011069-6">(</span><span·class="p"·data-group-id="8977011069-6">)</span><span·class="p">,</span><span·class="w">
269 ······</span><span·class="ss">timetolive</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3700379032-7">(</span><span·class="p"·data-group-id="3700379032-7">)</span><span·class="p">,</span><span·class="w">269 ······</span><span·class="ss">timetolive</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8977011069-7">(</span><span·class="p"·data-group-id="8977011069-7">)</span><span·class="p">,</span><span·class="w">
270 ······</span><span·class="ss">tsn</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3700379032-8">(</span><span·class="p"·data-group-id="3700379032-8">)</span><span·class="p">,</span><span·class="w">270 ······</span><span·class="ss">tsn</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8977011069-8">(</span><span·class="p"·data-group-id="8977011069-8">)</span><span·class="p">,</span><span·class="w">
271 ······</span><span·class="ss">cumtsn</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3700379032-9">(</span><span·class="p"·data-group-id="3700379032-9">)</span><span·class="p">,</span><span·class="w">271 ······</span><span·class="ss">cumtsn</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="8977011069-9">(</span><span·class="p"·data-group-id="8977011069-9">)</span><span·class="p">,</span><span·class="w">
272 ······</span><span·class="ss">assoc_id</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="3700379032-10">(</span><span·class="p"·data-group-id="3700379032-10">)</span><span·class="w">272 ······</span><span·class="ss">assoc_id</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">assoc_id</span><span·class="p"·data-group-id="8977011069-10">(</span><span·class="p"·data-group-id="8977011069-10">)</span><span·class="w">
273 </span><span·class="p"·data-group-id="3700379032-1">}</span></code></pre><p><code·class="inline">#sctp_sndrcvinfo{}</code>·is·used·both·in·this·socket·option,·and·as273 </span><span·class="p"·data-group-id="8977011069-1">}</span></code></pre><p><code·class="inline">#sctp_sndrcvinfo{}</code>·is·used·both·in·this·socket·option,·and·as
274 ancillary·data·while·sending·or·receiving·SCTP·messages.·When·set274 ancillary·data·while·sending·or·receiving·SCTP·messages.·When·set
275 as·an·option,·it·provides·default·values·for·subsequent275 as·an·option,·it·provides·default·values·for·subsequent
276 <a·href="#send/3"><code·class="inline">send</code></a>·calls·on·the·association·specified·by·<code·class="inline">assoc_id</code>.</p><p><code·class="inline">assoc_id = 0</code>·(default)·indicates·the·whole·endpoint.</p><p>The·following·fields·typically·must·be·specified·by·the·sender:</p><ul><li><p><strong><code·class="inline">sinfo_stream</code></strong>·-·Stream·number·(0-base)·within·the·association·to·send276 <a·href="#send/3"><code·class="inline">send</code></a>·calls·on·the·association·specified·by·<code·class="inline">assoc_id</code>.</p><p><code·class="inline">assoc_id = 0</code>·(default)·indicates·the·whole·endpoint.</p><p>The·following·fields·typically·must·be·specified·by·the·sender:</p><ul><li><p><strong><code·class="inline">sinfo_stream</code></strong>·-·Stream·number·(0-base)·within·the·association·to·send
277 the·messages·through;</p></li><li><p><strong><code·class="inline">sinfo_flags</code></strong>·-·The·following·flags·are·recognised:</p><ul><li><p><strong><code·class="inline">unordered</code></strong>·-·The·message·is·to·be·sent·unordered</p></li><li><p><strong><code·class="inline">addr_over</code></strong>·-·The·address·specified·in·<a·href="#send/3"><code·class="inline">send</code></a>·overwrites277 the·messages·through;</p></li><li><p><strong><code·class="inline">sinfo_flags</code></strong>·-·The·following·flags·are·recognised:</p><ul><li><p><strong><code·class="inline">unordered</code></strong>·-·The·message·is·to·be·sent·unordered</p></li><li><p><strong><code·class="inline">addr_over</code></strong>·-·The·address·specified·in·<a·href="#send/3"><code·class="inline">send</code></a>·overwrites
278 the·primary·peer·address</p></li><li><p><strong><code·class="inline">abort</code></strong>·-·Aborts·the·current·association·without·flushing·any·unsent278 the·primary·peer·address</p></li><li><p><strong><code·class="inline">abort</code></strong>·-·Aborts·the·current·association·without·flushing·any·unsent
279 data</p></li><li><p><strong><code·class="inline">eof</code></strong>·-·Gracefully·shuts·down·the·current·association,·with·flushing279 data</p></li><li><p><strong><code·class="inline">eof</code></strong>·-·Gracefully·shuts·down·the·current·association,·with·flushing
280 of·unsent·data</p></li></ul><p>Other·fields·are·rarely·used.·For·complete·information,·see280 of·unsent·data</p></li></ul><p>Other·fields·are·rarely·used.·For·complete·information,·see
281 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC·2960</a>·and281 <a·href="http://www.rfc-archive.org/getrfc.php?rfc=2960">RFC·2960</a>·and
282 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>.</p></li></ul></li><li><p><strong><code·class="inline">{sctp_events, #sctp_event_subscribe{}}</code></strong>·<a·href=""·id="option-sctp_events"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_event_subscribe</span><span·class="p"·data-group-id="1005928947-1">{</span><span·class="w">282 <a·href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">Sockets·API·Extensions·for·SCTP</a>.</p></li></ul></li><li><p><strong><code·class="inline">{sctp_events, #sctp_event_subscribe{}}</code></strong>·<a·href=""·id="option-sctp_events"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">sctp_event_subscribe</span><span·class="p"·data-group-id="0206881676-1">{</span><span·class="w">
283 ········</span><span·class="ss">data_io_event</span><span·class="w">··········</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">283 ········</span><span·class="ss">data_io_event</span><span·class="w">··········</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
284 ········</span><span·class="ss">association_event</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">284 ········</span><span·class="ss">association_event</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
285 ········</span><span·class="ss">address_event</span><span·class="w">··········</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">285 ········</span><span·class="ss">address_event</span><span·class="w">··········</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
286 ········</span><span·class="ss">send_failure_event</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">286 ········</span><span·class="ss">send_failure_event</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
287 ········</span><span·class="ss">peer_error_event</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">287 ········</span><span·class="ss">peer_error_event</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
288 ········</span><span·class="ss">shutdown_event</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">288 ········</span><span·class="ss">shutdown_event</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
289 ········</span><span·class="ss">partial_delivery_event</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">289 ········</span><span·class="ss">partial_delivery_event</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
290 ········</span><span·class="ss">adaptation_layer_event</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">290 ········</span><span·class="ss">adaptation_layer_event</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">
291 </span><span·class="p"·data-group-id="1005928947-1">}</span></code></pre><p>This·option·determines·which·<a·href="#sctp-events">SCTP Events</a>·that·are·to·be291 </span><span·class="p"·data-group-id="0206881676-1">}</span></code></pre><p>This·option·determines·which·<a·href="#sctp-events">SCTP Events</a>·that·are·to·be
Max diff block lines reached; 126214/172776 bytes (73.05%) of diff not shown.
59.6 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/gen_tcp.html
    
Offset 126, 35 lines modifiedOffset 126, 35 lines modified
  
126 ··</h1>126 ··</h1>
  
  
127 ····<section·id="moduledoc">127 ····<section·id="moduledoc">
128 <p>Interface·to·TCP/IP·sockets.</p><p>This·module·provides·functions·for·communicating·over·TCP/IP128 <p>Interface·to·TCP/IP·sockets.</p><p>This·module·provides·functions·for·communicating·over·TCP/IP
129 protocol·sockets.</p><p>The·following·code·fragment·is·a·simple·example·of·a·client·connecting·to·a129 protocol·sockets.</p><p>The·following·code·fragment·is·a·simple·example·of·a·client·connecting·to·a
130 server·at·port·5678,·transferring·a·binary,·and·closing·the·connection:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">client</span><span·class="p"·data-group-id="0191083086-1">(</span><span·class="p"·data-group-id="0191083086-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">130 server·at·port·5678,·transferring·a·binary,·and·closing·the·connection:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">client</span><span·class="p"·data-group-id="8203744581-1">(</span><span·class="p"·data-group-id="8203744581-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
131 ····</span><span·class="n">SomeHostInNet</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;localhost&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·to·make·it·runnable·on·one·machine</span><span·class="w">131 ····</span><span·class="n">SomeHostInNet</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;localhost&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·to·make·it·runnable·on·one·machine</span><span·class="w">
132 ····</span><span·class="p"·data-group-id="0191083086-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="0191083086-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·fc6707116c3b1906081cf14163db71bd9a075db9961e716c7a2a904afe7fd574·...·]-3">(</span><span·class="n">SomeHostInNet</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5678</span><span·class="p">,</span><span·class="w">132 ····</span><span·class="p"·data-group-id="8203744581-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="8203744581-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·e12dc041dd2c973c07c4fcd088005a2b859b244ac75e01960f844ed1e38a27a4·...·]-3">(</span><span·class="n">SomeHostInNet</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5678</span><span·class="p">,</span><span·class="w">
133 ·································</span><span·class="p"·data-group-id="0191083086-4">[</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0191083086-5">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·f015a7926d4b0310293fbc29af322593828e36c7150335d012b4d835df7e6fca·...·]-3">)</span><span·class="p">,</span><span·class="w">133 ·································</span><span·class="p"·data-group-id="8203744581-4">[</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8203744581-5">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·5e1ca61f8e825696c2d12ef95fd994978a6122f5b0d0ce14241dca2a4f5f068e·...·]-3">)</span><span·class="p">,</span><span·class="w">
134 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="0191083086-6">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Some·Data&quot;</span><span·class="p"·data-group-id="0191083086-6">)</span><span·class="p">,</span><span·class="w">134 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="8203744581-6">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Some·Data&quot;</span><span·class="p"·data-group-id="8203744581-6">)</span><span·class="p">,</span><span·class="w">
135 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="0191083086-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="0191083086-7">)</span><span·class="p">.</span></code></pre><p>At·the·other·end,·a·server·is·listening·on·port·5678,·accepts·the·connection,135 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="8203744581-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8203744581-7">)</span><span·class="p">.</span></code></pre><p>At·the·other·end,·a·server·is·listening·on·port·5678,·accepts·the·connection,
136 and·receives·the·binary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">server</span><span·class="p"·data-group-id="8357374248-1">(</span><span·class="p"·data-group-id="8357374248-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">136 and·receives·the·binary:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">server</span><span·class="p"·data-group-id="8218906818-1">(</span><span·class="p"·data-group-id="8218906818-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="p"·data-group-id="8357374248-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LSock</span><span·class="p"·data-group-id="8357374248-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·533,·SHA:·53f88ce6b24a76132dab00015c02403e933ed5430d919499e3f973b5d5c10a06·...·]8-5">}</span><span·class="p">,</span><span·class="w">137 ····</span><span·class="p"·data-group-id="8218906818-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LSock</span><span·class="p"·data-group-id="8218906818-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·533,·SHA:·22ac96c146a57b47b68993aed5f0eaebaa7ef8800558e70b031f1396a9107219·...·]8-5">}</span><span·class="p">,</span><span·class="w">
138 ········································</span><span·class="p"·data-group-id="8357374248-6">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="8357374248-6">}</span><span·class="p"·data-group-id="8357374248-4">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·18,·SHA:·872981dbf75a2398bef02ee3738cd1c3fe6887b8aebc8f87ab3e7216aca8c98a·...·]8-3">)</span><span·class="p">,</span><span·class="w">138 ········································</span><span·class="p"·data-group-id="8218906818-6">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="8218906818-6">}</span><span·class="p"·data-group-id="8218906818-4">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·18,·SHA:·d4b306d97f01fa89eb0935968e679c144049f47cf7fcafa53ff92bacff930f46·...·]8-3">)</span><span·class="p">,</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="8357374248-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="8357374248-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·197,·SHA:·453ef59525dc741b70708eb17428e7ef2a4686c93945a411249504cb42f76345·...·]8-8">)</span><span·class="p">,</span><span·class="w">139 ····</span><span·class="p"·data-group-id="8218906818-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="8218906818-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·197,·SHA:·a93ed68f0ee5bcf381a4f002b2a75551662a35f0cf89e7328ed440398b24d84c·...·]8-8">)</span><span·class="p">,</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="8357374248-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="8357374248-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·298,·SHA:·84d7ffc120acad143d9861b5675981066c17f74fee3b9eb0483cb520c3ddd94c·...·]8-10">)</span><span·class="p">,</span><span·class="w">140 ····</span><span·class="p"·data-group-id="8218906818-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="8218906818-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·298,·SHA:·f671dcca0c7562b6435b7ff3edb209548f8eca5c0ab4d576249ea82412fcbe99·...·]8-10">)</span><span·class="p">,</span><span·class="w">
141 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="8357374248-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8357374248-12">)</span><span·class="p">,</span><span·class="w">141 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="8218906818-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8218906818-12">)</span><span·class="p">,</span><span·class="w">
142 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="8357374248-13">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="8357374248-13">)</span><span·class="p">,</span><span·class="w">142 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="8218906818-13">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="8218906818-13">)</span><span·class="p">,</span><span·class="w">
143 ····</span><span·class="n">Bin</span><span·class="p">.</span><span·class="w">143 ····</span><span·class="n">Bin</span><span·class="p">.</span><span·class="w">
  
144 </span><span·class="nf">do_recv</span><span·class="p"·data-group-id="8357374248-14">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bs</span><span·class="p"·data-group-id="8357374248-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">144 </span><span·class="nf">do_recv</span><span·class="p"·data-group-id="8218906818-14">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bs</span><span·class="p"·data-group-id="8218906818-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
145 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="8357374248-15">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="8357374248-15">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">145 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="8218906818-15">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="8218906818-15">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
146 ········</span><span·class="p"·data-group-id="8357374248-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="8357374248-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">146 ········</span><span·class="p"·data-group-id="8218906818-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="8218906818-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
147 ············</span><span·class="nf">do_recv</span><span·class="p"·data-group-id="8357374248-17">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8357374248-18">[</span><span·class="n">Bs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·839def6ae695467b1a1439c50f2294cf6a536d6b5d3058597eda241eb1ac8fb6·...·]8-17">)</span><span·class="p">;</span><span·class="w">147 ············</span><span·class="nf">do_recv</span><span·class="p"·data-group-id="8218906818-17">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8218906818-18">[</span><span·class="n">Bs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·3c9873d260018e1b5a24c02697b3406f44377b71d71181c854289b449b4216e1·...·]8-17">)</span><span·class="p">;</span><span·class="w">
148 ········</span><span·class="p"·data-group-id="8357374248-19">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="8357374248-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 ········</span><span·class="p"·data-group-id="8218906818-19">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">closed</span><span·class="p"·data-group-id="8218906818-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ············</span><span·class="p"·data-group-id="8357374248-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="8357374248-21">(</span><span·class="n">Bs</span><span·class="p"·data-group-id="8357374248-2[·...·truncated·by·diffoscope;·len:·51,·SHA:·563207ff9e68f42a187296aebba35b33b37a59c642d0e1a52a553da78a2f75c1·...·]8-20">}</span><span·class="w">149 ············</span><span·class="p"·data-group-id="8218906818-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="8218906818-21">(</span><span·class="n">Bs</span><span·class="p"·data-group-id="8218906818-2[·...·truncated·by·diffoscope;·len:·51,·SHA:·c9912ec87b3acb8ec7464de02d0204e0cc8a507d80f684a2bd4da6262ef0e59f·...·]8-20">}</span><span·class="w">
150 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>For·more·examples,·see·section·<a·href="#module-examples">Examples</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Functions·that·create·sockets·can·take·an·optional·option;150 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>For·more·examples,·see·section·<a·href="#module-examples">Examples</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Functions·that·create·sockets·can·take·an·optional·option;
151 <code·class="inline">{inet_backend, Backend}</code>·that,·if·specified,·has·to·be·the·first·option.·This151 <code·class="inline">{inet_backend, Backend}</code>·that,·if·specified,·has·to·be·the·first·option.·This
152 selects·the·implementation·backend·towards·the·platform's·socket·API.</p><p>This·is·a·<em>temporary</em>·option·that·will·be·ignored·in·a·future·release.</p><p>The·default·is·<code·class="inline">Backend = inet</code>·that·selects·the·traditional·<code·class="inline">inet_drv.c</code>152 selects·the·implementation·backend·towards·the·platform's·socket·API.</p><p>This·is·a·<em>temporary</em>·option·that·will·be·ignored·in·a·future·release.</p><p>The·default·is·<code·class="inline">Backend = inet</code>·that·selects·the·traditional·<code·class="inline">inet_drv.c</code>
153 driver.·The·other·choice·is·<code·class="inline">Backend = socket</code>·that·selects·the·new·<a·href="socket.html"><code·class="inline">socket</code></a>153 driver.·The·other·choice·is·<code·class="inline">Backend = socket</code>·that·selects·the·new·<a·href="socket.html"><code·class="inline">socket</code></a>
154 module·and·its·NIF·implementation.</p><p>The·system·default·can·be·changed·when·the·node·is·started·with·the154 module·and·its·NIF·implementation.</p><p>The·system·default·can·be·changed·when·the·node·is·started·with·the
155 application·<code·class="inline">kernel</code>'s·configuration·variable·<code·class="inline">inet_backend</code>.</p><p>For·<code·class="inline">gen_tcp</code>·with·<code·class="inline">inet_backend·=·socket</code>·we·have·tried·to·be·as·&quot;compatible&quot;155 application·<code·class="inline">kernel</code>'s·configuration·variable·<code·class="inline">inet_backend</code>.</p><p>For·<code·class="inline">gen_tcp</code>·with·<code·class="inline">inet_backend·=·socket</code>·we·have·tried·to·be·as·&quot;compatible&quot;
156 as·possible·which·has·sometimes·been·impossible.·Here·is·a·list·of·cases·when156 as·possible·which·has·sometimes·been·impossible.·Here·is·a·list·of·cases·when
Offset 185, 91 lines modifiedOffset 185, 91 lines modified
185 ··<span·class="text">Examples</span>185 ··<span·class="text">Examples</span>
186 </h2>186 </h2>
187 <p>The·following·example·illustrates·use·of·option·<code·class="inline">{active,once}</code>·and·multiple187 <p>The·following·example·illustrates·use·of·option·<code·class="inline">{active,once}</code>·and·multiple
188 accepts·by·implementing·a·server·as·a·number·of·worker·processes·doing·accept·on188 accepts·by·implementing·a·server·as·a·number·of·worker·processes·doing·accept·on
189 a·single·listening·socket.·Function·<code·class="inline">start/2</code>·takes·the·number·of·worker189 a·single·listening·socket.·Function·<code·class="inline">start/2</code>·takes·the·number·of·worker
190 processes·and·the·port·number·on·which·to·listen·for·incoming·connections.·If190 processes·and·the·port·number·on·which·to·listen·for·incoming·connections.·If
191 <code·class="inline">LPort</code>·is·specified·as·<code·class="inline">0</code>,·an·ephemeral·port·number·is·used,·which·is·why·the191 <code·class="inline">LPort</code>·is·specified·as·<code·class="inline">0</code>,·an·ephemeral·port·number·is·used,·which·is·why·the
192 start·function·returns·the·actual·port·number·allocated:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start</span><span·class="p"·data-group-id="5943656384-1">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LPort</span><span·class="p"·data-group-id="5943656384-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 start·function·returns·the·actual·port·number·allocated:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start</span><span·class="p"·data-group-id="5764857854-1">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LPort</span><span·class="p"·data-group-id="5764857854-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="5943656384-2">(</span><span·class="n">LPort</span><span·class="p">,</span><span·class="p"·data-group-id="5943656384-3">[</span><span·class="p"·data-group-id="5943656384-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·385,·SHA:·b96813113ce8a4aafb5c36ce19d1bb4db029af6268440205e0c3e66e7bc35f06·...·]4-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">193 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="5764857854-2">(</span><span·class="n">LPort</span><span·class="p">,</span><span·class="p"·data-group-id="5764857854-3">[</span><span·class="p"·data-group-id="5764857854-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·385,·SHA:·d5e770acee500db7b73c06ea2e1d795e0712e0f0591f8373a34e108a42a041c3·...·]4-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
194 ········</span><span·class="p"·data-group-id="5943656384-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="5943656384-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 ········</span><span·class="p"·data-group-id="5764857854-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="5764857854-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ············</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5943656384-7">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="5943656384-7">)</span><span·class="p">,</span><span·class="w">195 ············</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5764857854-7">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="5764857854-7">)</span><span·class="p">,</span><span·class="w">
196 ············</span><span·class="p"·data-group-id="5943656384-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="5943656384-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·197,·SHA:·6d61533fd71d1fe09bfc7e8de9379cee413a82d68681f0f7abc8777f28cd6b1e·...·]4-9">)</span><span·class="p">,</span><span·class="w">196 ············</span><span·class="p"·data-group-id="5764857854-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="5764857854-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·197,·SHA:·06df46c0077c8cfdf7269f4cde17d83e175ea0ac9bd7bf0437f22305bcd7c7c4·...·]4-9">)</span><span·class="p">,</span><span·class="w">
197 ············</span><span·class="n">Port</span><span·class="p">;</span><span·class="w">197 ············</span><span·class="n">Port</span><span·class="p">;</span><span·class="w">
198 ········</span><span·class="p"·data-group-id="5943656384-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5943656384-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 ········</span><span·class="p"·data-group-id="5764857854-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5764857854-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ············</span><span·class="p"·data-group-id="5943656384-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5943656384-11">}</span><span·class="w">199 ············</span><span·class="p"·data-group-id="5764857854-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5764857854-11">}</span><span·class="w">
200 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">200 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
201 </span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5943656384-12">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="5943656384-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">201 </span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5764857854-12">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="5764857854-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">202 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
203 </span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5943656384-13">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="5943656384-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">203 </span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5764857854-13">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="5764857854-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5943656384-14">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="ss">server</span><span·class="p">,</span><span·class="p"·data-group-id="5943656384-15">[</span><span·class="n">LS</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·81d3ff1654a38a84900821ab440eeb45d5c7c026601fd0efd77580bc37a7e19a·...·]4-14">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5764857854-14">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="ss">server</span><span·class="p">,</span><span·class="p"·data-group-id="5764857854-15">[</span><span·class="n">LS</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·7411826d88fbe502bd96f5c295cd3db5c5d42c632f42dffd36d70c13a9ae4bd7·...·]4-14">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5943656384-16">(</span><span·class="n">Num</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="5943656384-16">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5764857854-16">(</span><span·class="n">Num</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="5764857854-16">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">server</span><span·class="p"·data-group-id="5943656384-17">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5943656384-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 </span><span·class="nf">server</span><span·class="p"·data-group-id="5764857854-17">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5764857854-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">accept</span><span·class="p"·data-group-id="5943656384-18">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5943656384-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">207 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">accept</span><span·class="p"·data-group-id="5764857854-18">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5764857854-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
208 ········</span><span·class="p"·data-group-id="5943656384-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="5943656384-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ········</span><span·class="p"·data-group-id="5764857854-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="5764857854-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5943656384-20">(</span><span·class="n">S</span><span·class="p"·data-group-id="5943656384-20">)</span><span·class="p">,</span><span·class="w">209 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5764857854-20">(</span><span·class="n">S</span><span·class="p"·data-group-id="5764857854-20">)</span><span·class="p">,</span><span·class="w">
210 ············</span><span·class="nf">server</span><span·class="p"·data-group-id="5943656384-21">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5943656384-21">)</span><span·class="p">;</span><span·class="w">210 ············</span><span·class="nf">server</span><span·class="p"·data-group-id="5764857854-21">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5764857854-21">)</span><span·class="p">;</span><span·class="w">
211 ········</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">211 ········</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
212 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5943656384-22">(</span><span·class="s">&quot;accept·returned·</span><span·class="si">~w</span><span·class="s">·-·goodbye!</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5943656384-23">[</s[·...·truncated·by·diffoscope;·len:·126,·SHA:·8382f302f56ce11b9bdfcc2a4834cd83567cce7c71f80e75e93c3954e5656fd6·...·]4-22">)</span><span·class="p">,</span><span·class="w">212 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5764857854-22">(</span><span·class="s">&quot;accept·returned·</span><span·class="si">~w</span><span·class="s">·-·goodbye!</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5764857854-23">[</s[·...·truncated·by·diffoscope;·len:·126,·SHA:·ce3f8d0c65c07e62c23fda5f4ffb34b1ebde521e7f72a46709f1e3f6f866c200·...·]4-22">)</span><span·class="p">,</span><span·class="w">
213 ············</span><span·class="ss">ok</span><span·class="w">213 ············</span><span·class="ss">ok</span><span·class="w">
214 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">214 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
215 </span><span·class="nf">loop</span><span·class="p"·data-group-id="5943656384-24">(</span><span·class="n">S</span><span·class="p"·data-group-id="5943656384-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 </span><span·class="nf">loop</span><span·class="p"·data-group-id="5764857854-24">(</span><span·class="n">S</span><span·class="p"·data-group-id="5764857854-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
216 ····</span><span·class="nc">inet</span><span·class="p">:</span><span·class="nf">setopts</span><span·class="p"·data-group-id="5943656384-25">(</span><span·class="n">S</span><span·class="p">,</span><span·class="p"·data-group-id="5943656384-26">[</span><span·class="p"·data-group-id="5943656384-27">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">once</s[·...·truncated·by·diffoscope;·len:·152,·SHA:·2be31ed0b3b07ff83d47ce172015a504b6bef50509223d44146ec8b5f249b04d·...·]4-25">)</span><span·class="p">,</span><span·class="w">216 ····</span><span·class="nc">inet</span><span·class="p">:</span><span·class="nf">setopts</span><span·class="p"·data-group-id="5764857854-25">(</span><span·class="n">S</span><span·class="p">,</span><span·class="p"·data-group-id="5764857854-26">[</span><span·class="p"·data-group-id="5764857854-27">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">once</s[·...·truncated·by·diffoscope;·len:·152,·SHA:·a37582392b49e0f86715fcbe10c7e96d89c8d87e38da19cef9559b3a2c00df2b·...·]4-25">)</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="k">receive</span><span·class="w">217 ····</span><span·class="k">receive</span><span·class="w">
218 ········</span><span·class="p"·data-group-id="5943656384-28">{</span><span·class="ss">tcp</span><span·class="p">,</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="5943656384-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 ········</span><span·class="p"·data-group-id="5764857854-28">{</span><span·class="ss">tcp</span><span·class="p">,</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="5764857854-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 ············</span><span·class="n">Answer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">process</span><span·class="p"·data-group-id="5943656384-29">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5943656384-29">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Not·implemented·in·this·example</span><span·class="w">219 ············</span><span·class="n">Answer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">process</span><span·class="p"·data-group-id="5764857854-29">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5764857854-29">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Not·implemented·in·this·example</span><span·class="w">
220 ············</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="5943656384-30">(</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="5943656384-30">)</span><span·class="p">,</span><span·class="w">220 ············</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="5764857854-30">(</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="5764857854-30">)</span><span·class="p">,</span><span·class="w">
221 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5943656384-31">(</span><span·class="n">S</span><span·class="p"·data-group-id="5943656384-31">)</span><span·class="p">;</span><span·class="w">221 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5764857854-31">(</span><span·class="n">S</span><span·class="p"·data-group-id="5764857854-31">)</span><span·class="p">;</span><span·class="w">
222 ········</span><span·class="p"·data-group-id="5943656384-32">{</span><span·class="ss">tcp_closed</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="5943656384-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ········</span><span·class="p"·data-group-id="5764857854-32">{</span><span·class="ss">tcp_closed</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="5764857854-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5943656384-33">(</span><span·class="s">&quot;Socket·</span><span·class="si">~w</span><span·class="s">·closed·[</span><span·class="si">~w</span><span·class="s">]</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·321,·SHA:·cc3954dfb9be1cbc69af37858a91079102ed8e3bf813de41704251e36edad657·...·]4-33">)</span><span·class="p">,</span><span·class="w">223 ············</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5764857854-33">(</span><span·class="s">&quot;Socket·</span><span·class="si">~w</span><span·class="s">·closed·[</span><span·class="si">~w</span><span·class="s">]</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·321,·SHA:·486a948886ca27a1873bde2120a4621d1af67efe9bcc47ec34d8d1c676d4be6b·...·]4-33">)</span><span·class="p">,</span><span·class="w">
224 ············</span><span·class="ss">ok</span><span·class="w">224 ············</span><span·class="ss">ok</span><span·class="w">
225 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Example·of·a·simple·client:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">client</span><span·class="p"·data-group-id="3817874509-1">(</span><span·class="n">PortNo</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="3817874509-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Example·of·a·simple·client:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">client</span><span·class="p"·data-group-id="9087547651-1">(</span><span·class="n">PortNo</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="9087547651-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 ····</span><span·class="p"·data-group-id="3817874509-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="3817874509-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><[·...·truncated·by·diffoscope;·len:·458,·SHA:·cc3019c80ee842668c94d8400dbf8c1be9ff9cc8549f8abfd7c260e802787ec5·...·]-5">}</span><span·class="p">,</span><span·class="w">226 ····</span><span·class="p"·data-group-id="9087547651-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="9087547651-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><[·...·truncated·by·diffoscope;·len:·458,·SHA:·0549c7b6af9f7d0ffd1245ff02be7c3f55052eb9bc55983c7aacff3cad3817aa·...·]-5">}</span><span·class="p">,</span><span·class="w">
227 ····················································</span><span·class="p"·data-group-id="3817874509-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3817874509-6">}</span><span·class="p"·data-group-id="3817874509-4">]</span><span·class="p"·data-group-id="3817874509-3">)</span><span·class="p">,</span><span·class="w">227 ····················································</span><span·class="p"·data-group-id="9087547651-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9087547651-6">}</span><span·class="p"·data-group-id="9087547651-4">]</span><span·class="p"·data-group-id="9087547651-3">)</span><span·class="p">,</span><span·class="w">
228 ····</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="3817874509-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="3817874509-7">)</span><span·class="p">,</span><span·class="w">228 ····</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="9087547651-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="9087547651-7">)</span><span·class="p">,</span><span·class="w">
229 ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="3817874509-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3817874509-8">)</span><span·class="p">,</span><span·class="w">229 ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="9087547651-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="9087547651-8">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="3817874509-9">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="3817874509-9">)</span><span·class="p">,</span><span·class="w">230 ····</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="9087547651-9">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9087547651-9">)</span><span·class="p">,</span><span·class="w">
231 ····</span><span·class="n">A</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">send</code>·call·does·not·accept·a·time-out·option·because·time-outs·on·send·is231 ····</span><span·class="n">A</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">send</code>·call·does·not·accept·a·time-out·option·because·time-outs·on·send·is
232 handled·through·socket·option·<code·class="inline">send_timeout</code>.·The·behavior·of·a·send·operation232 handled·through·socket·option·<code·class="inline">send_timeout</code>.·The·behavior·of·a·send·operation
233 with·no·receiver·is·mainly·defined·by·the·underlying·TCP·stack·and·the·network233 with·no·receiver·is·mainly·defined·by·the·underlying·TCP·stack·and·the·network
234 infrastructure.·To·write·code·that·handles·a·hanging·receiver·that·can234 infrastructure.·To·write·code·that·handles·a·hanging·receiver·that·can
235 eventually·cause·the·sender·to·hang·on·a·<code·class="inline">send</code>·do·like·the·following.</p><p>Consider·a·process·that·receives·data·from·a·client·process·to·be·forwarded·to·a235 eventually·cause·the·sender·to·hang·on·a·<code·class="inline">send</code>·do·like·the·following.</p><p>Consider·a·process·that·receives·data·from·a·client·process·to·be·forwarded·to·a
236 server·on·the·network.·The·process·is·connected·to·the·server·through·TCP/IP·and236 server·on·the·network.·The·process·is·connected·to·the·server·through·TCP/IP·and
237 does·not·get·any·acknowledge·for·each·message·it·sends,·but·has·to·rely·on·the237 does·not·get·any·acknowledge·for·each·message·it·sends,·but·has·to·rely·on·the
238 send·time-out·option·to·detect·that·the·other·end·is·unresponsive.·Option238 send·time-out·option·to·detect·that·the·other·end·is·unresponsive.·Option
239 <code·class="inline">send_timeout</code>·can·be·used·when·connecting:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">239 <code·class="inline">send_timeout</code>·can·be·used·when·connecting:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
240 </span><span·class="p"·data-group-id="1789645093-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="1789645093-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><[·...·truncated·by·diffoscope;·len:·95,·SHA:·db63da813ab1c687b94f2649bee1cd80ad03259ca524ba529e0352ad41886644·...·]-2">(</span><span·class="n">HostAddress</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">240 </span><span·class="p"·data-group-id="5451206208-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="5451206208-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">gen_tcp</span><[·...·truncated·by·diffoscope;·len:·95,·SHA:·f79311d5fe2aa7b0a0c8e88a3ed660702881227aa13ec7c7350eb983a386e0ea·...·]-2">(</span><span·class="n">HostAddress</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">
241 ····························</span><span·class="p"·data-group-id="1789645093-3">[</span><span·class="p"·data-group-id="1789645093-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="1789645093-4">}</span><span·class="p">,</span><span·class="w">241 ····························</span><span·class="p"·data-group-id="5451206208-3">[</span><span·class="p"·data-group-id="5451206208-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="5451206208-4">}</span><span·class="p">,</span><span·class="w">
242 ·····························</span><span·class="p"·data-group-id="1789645093-5">{</span><span·class="ss">send_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="1789645093-5">}</span><span·class="p">,</span><span·class="w">242 ·····························</span><span·class="p"·data-group-id="5451206208-5">{</span><span·class="ss">send_timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="5451206208-5">}</span><span·class="p">,</span><span·class="w">
243 ·····························</span><span·class="p"·data-group-id="1789645093-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1789645093-6">}</span><span·class="p"·data-group-id="1789645093-3">]</span><span·class="p"·data-group-id="1789645093-2">)</span><span·class="p">,</span><span·class="w">243 ·····························</span><span·class="p"·data-group-id="5451206208-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5451206208-6">}</span><span·class="p"·data-group-id="5451206208-3">]</span><span·class="p"·data-group-id="5451206208-2">)</span><span·class="p">,</span><span·class="w">
244 ················</span><span·class="nf">loop</span><span·class="p"·data-group-id="1789645093-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="1789645093-7">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·See·below</span><span·class="w">244 ················</span><span·class="nf">loop</span><span·class="p"·data-group-id="5451206208-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="5451206208-7">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·See·below</span><span·class="w">
245 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>In·the·loop·where·requests·are·handled,·send·time-outs·can·now·be·detected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="8093822922-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8093822922-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">245 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>In·the·loop·where·requests·are·handled,·send·time-outs·can·now·be·detected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="7927880033-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7927880033-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
246 ····</span><span·class="k">receive</span><span·class="w">246 ····</span><span·class="k">receive</span><span·class="w">
247 ········</span><span·class="p"·data-group-id="8093822922-2">{</span><span·class="n">Client</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">send_data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Binary</span><span·class="p"·data-group-id="8093822922-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">247 ········</span><span·class="p"·data-group-id="7927880033-2">{</span><span·class="n">Client</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">send_data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Binary</span><span·class="p"·data-group-id="7927880033-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
248 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="8093822922-3">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="8093822922-4">[</span><span·class="n">Binary</span><span·class="p"·data-group-id="8093822922-4">]</span><span·class="p"·data-group-id="8093822922-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">248 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="7927880033-3">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="7927880033-4">[</span><span·class="n">Binary</span><span·class="p"·data-group-id="7927880033-4">]</span><span·class="p"·data-group-id="7927880033-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
249 ················</span><span·class="p"·data-group-id="8093822922-5">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="p"·data-group-id="8093822922-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">249 ················</span><span·class="p"·data-group-id="7927880033-5">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="p"·data-group-id="7927880033-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
250 ····················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8093822922-6">(</span><span·class="s">&quot;Send·timeout,·closing!</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">250 ····················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7927880033-6">(</span><span·class="s">&quot;Send·timeout,·closing!</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
251 ······························</span><span·class="p"·data-group-id="8093822922-7">[</span><span·class="p"·data-group-id="8093822922-7">]</span><span·class="p"·data-group-id="8093822922-6">)</span><span·class="p">,</span><span·class="w">251 ······························</span><span·class="p"·data-group-id="7927880033-7">[</span><span·class="p"·data-group-id="7927880033-7">]</span><span·class="p"·data-group-id="7927880033-6">)</span><span·class="p">,</span><span·class="w">
252 ····················</span><span·class="nf">handle_send_timeout</span><span·class="p"·data-group-id="8093822922-8">(</span><span·class="p"·data-group-id="8093822922-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Not·implemented·here</span><span·class="w">252 ····················</span><span·class="nf">handle_send_timeout</span><span·class="p"·data-group-id="7927880033-8">(</span><span·class="p"·data-group-id="7927880033-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Not·implemented·here</span><span·class="w">
253 ····················</span><span·class="n">Client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8093822922-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8093822922-10">(</span><span·class="p"·data-group-id="8093822922-10">)</span><span·class="p">,</span><span·class="p"·data-group-id="8093822922-11">{</span><span·class="ss">err[·...·truncated·by·diffoscope;·len:·191,·SHA:·edbc120f8b0f0290193aa564feda72694d475ca87519a7e66c75d17f04dd473f·...·]-9">}</span><span·class="p">,</span><span·class="w">253 ····················</span><span·class="n">Client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7927880033-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7927880033-10">(</span><span·class="p"·data-group-id="7927880033-10">)</span><span·class="p">,</span><span·class="p"·data-group-id="7927880033-11">{</span><span·class="ss">err[·...·truncated·by·diffoscope;·len:·191,·SHA:·f25b30aaee476d90486734719d564d5f60af9b8bd96a6fd20e88d701250dfbef·...·]-9">}</span><span·class="p">,</span><span·class="w">
254 ····················</span><span·class="c1">%%·Usually,·it&#39;s·a·good·idea·to·give·up·in·case·of·a</span><span·class="w">254 ····················</span><span·class="c1">%%·Usually,·it&#39;s·a·good·idea·to·give·up·in·case·of·a</span><span·class="w">
255 ····················</span><span·class="c1">%%·send·timeout,·as·you·never·know·how·much·actually</span><span·class="w">255 ····················</span><span·class="c1">%%·send·timeout,·as·you·never·know·how·much·actually</span><span·class="w">
256 ····················</span><span·class="c1">%%·reached·the·server,·maybe·only·a·packet·header?!</span><span·class="w">256 ····················</span><span·class="c1">%%·reached·the·server,·maybe·only·a·packet·header?!</span><span·class="w">
257 ····················</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="8093822922-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8093822922-12">)</span><span·class="p">;</span><span·class="w">257 ····················</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7927880033-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7927880033-12">)</span><span·class="p">;</span><span·class="w">
258 ················</span><span·class="p"·data-group-id="8093822922-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="8093822922-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 ················</span><span·class="p"·data-group-id="7927880033-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="7927880033-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ····················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8093822922-14">(</span><span·class="s">&quot;Some·other·error·on·socket·(</span><span·class="si">~p</span><span·class="s">),·closing&quot;</span><span·class="p">,</span><span·class="w">259 ····················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7927880033-14">(</span><span·class="s">&quot;Some·other·error·on·socket·(</span><span·class="si">~p</span><span·class="s">),·closing&quot;</span><span·class="p">,</span><span·class="w">
260 ······························</span><span·class="p"·data-group-id="8093822922-15">[</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="8093822922-15">]</span><span·class="p"·data-group-id="8093822922-14">)</span><span·class="p">,</span><span·class="w">260 ······························</span><span·class="p"·data-group-id="7927880033-15">[</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="7927880033-15">]</span><span·class="p"·data-group-id="7927880033-14">)</span><span·class="p">,</span><span·class="w">
261 ····················</span><span·class="n">Client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8093822922-16">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8093822922-17">(</span><span·class="p"·data-group-id="8093822922-17">)</span><span·class="p">,</span><span·class="p"·data-group-id="8093822922-18">{</span><span·class="ss">er[·...·truncated·by·diffoscope;·len:·198,·SHA:·98cd0b8938627dd2308747b617a57e894c7a66bedd0cf6915d76ff97ba4eaa24·...·]-16">}</span><span·class="p">,</span><span·class="w">261 ····················</span><span·class="n">Client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7927880033-16">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7927880033-17">(</span><span·class="p"·data-group-id="7927880033-17">)</span><span·class="p">,</span><span·class="p"·data-group-id="7927880033-18">{</span><span·class="ss">er[·...·truncated·by·diffoscope;·len:·198,·SHA:·f5809be86605775b4ee888747f398be34469778b5f835b0a82a67739cf0f05eb·...·]-16">}</span><span·class="p">,</span><span·class="w">
262 ····················</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="8093822922-19">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8093822922-19">)</span><span·class="p">;</span><span·class="w">262 ····················</span><span·class="nc">gen_tcp</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7927880033-19">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7927880033-19">)</span><span·class="p">;</span><span·class="w">
263 ················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">263 ················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
264 ····················</span><span·class="n">Client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8093822922-20">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8093822922-21">(</span><span·class="p"·data-group-id="8093822922-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">data_sent</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·e0c1a5d582cb208d5239bef7d5d9ee365ae336c2bbccec16afd5c52c7244db39·...·]-20">}</span><span·class="p">,</span><span·class="w">264 ····················</span><span·class="n">Client</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7927880033-20">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7927880033-21">(</span><span·class="p"·data-group-id="7927880033-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">data_sent</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·7a425319dd7ce5bbcf16968403c6330509366794abd8040fed5760e3af899124·...·]-20">}</span><span·class="p">,</span><span·class="w">
265 ····················</span><span·class="nf">loop</span><span·class="p"·data-group-id="8093822922-22">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8093822922-22">)</span><span·class="w">265 ····················</span><span·class="nf">loop</span><span·class="p"·data-group-id="7927880033-22">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7927880033-22">)</span><span·class="w">
266 ············</span><span·class="k">end</span><span·class="w">266 ············</span><span·class="k">end</span><span·class="w">
267 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Usually·it·suffices·to·detect·time-outs·on·receive,·as·most·protocols·include267 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Usually·it·suffices·to·detect·time-outs·on·receive,·as·most·protocols·include
268 some·sort·of·acknowledgment·from·the·server,·but·if·the·protocol·is·strictly·one268 some·sort·of·acknowledgment·from·the·server,·but·if·the·protocol·is·strictly·one
269 way,·option·<code·class="inline">send_timeout</code>·comes·in·handy.</p>269 way,·option·<code·class="inline">send_timeout</code>·comes·in·handy.</p>
270 ····</section>270 ····</section>
  
271 </div>271 </div>
Max diff block lines reached; -1/60885 bytes (-0.00%) of diff not shown.
7.42 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/gen_udp.html
    
Offset 924, 25 lines modifiedOffset 924, 25 lines modified
924 time-to-live·(TTL)·for·outgoing·multicast·datagrams·to·control·the·scope·of924 time-to-live·(TTL)·for·outgoing·multicast·datagrams·to·control·the·scope·of
925 the·multicasts.</p><p>Datagrams·with·a·TTL·of·1·are·not·forwarded·beyond·the·local·network.925 the·multicasts.</p><p>Datagrams·with·a·TTL·of·1·are·not·forwarded·beyond·the·local·network.
926 Defaults·to·<code·class="inline">1</code>.</p></li><li><p><strong><code·class="inline">{add_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-926 Defaults·to·<code·class="inline">1</code>.</p></li><li><p><strong><code·class="inline">{add_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-
927 Joins·a·multicast·group.</p></li><li><p><strong><code·class="inline">{drop_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-927 Joins·a·multicast·group.</p></li><li><p><strong><code·class="inline">{drop_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-
928 Leaves·a·multicast·group.</p></li><li><p><strong><a·href="#t:option/0"><code·class="inline">option/0</code></a></strong>·-·See·<a·href="inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>.</p></li></ul><p>UDP·packets·are·sent·with·this·socket·using·<a·href="#send/3"><code·class="inline">send(Socket, ...)</code></a>.928 Leaves·a·multicast·group.</p></li><li><p><strong><a·href="#t:option/0"><code·class="inline">option/0</code></a></strong>·-·See·<a·href="inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>.</p></li></ul><p>UDP·packets·are·sent·with·this·socket·using·<a·href="#send/3"><code·class="inline">send(Socket, ...)</code></a>.
929 When·UDP·packets·arrive·to·the·<code·class="inline">Socket</code>'s·UDP·port,·and·the·socket·is·in929 When·UDP·packets·arrive·to·the·<code·class="inline">Socket</code>'s·UDP·port,·and·the·socket·is·in
930 an·<em>active·mode</em>,·the·packets·are·delivered·as·messages·to·the930 an·<em>active·mode</em>,·the·packets·are·delivered·as·messages·to·the
931 controlling·process·(socket·owner):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2843245360-1">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·152,·SHA:·22e643ac9de3a61c6c71855d80285bbe9dd6ae1e61e444816b853a904a363883·...·]-1">}</span><span·class="w">·</span><span·class="c1">%·Without·ancillary·data</span><span·class="w">931 controlling·process·(socket·owner):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0690517416-1">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·152,·SHA:·381c982ac77cc5f0c505a928f66269e5bf331026c6f94aae164e41cf81bbba56·...·]-1">}</span><span·class="w">·</span><span·class="c1">%·Without·ancillary·data</span><span·class="w">
932 </span><span·class="p"·data-group-id="2843245360-2">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·232,·SHA:·a96324f4ffadcf386d71ec15c6d769a0212f1a7a4dc9e3153088ff5d8461f103·...·]-2">}</span><span·class="w">·</span><span·class="c1">%·With·ancillary·data</span></code></pre><p><code·class="inline">PeerIP</code>·and·<code·class="inline">PeerPort</code>·are·the·address·from·which·<code·class="inline">Packet</code>·was·sent.932 </span><span·class="p"·data-group-id="0690517416-2">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·232,·SHA:·31c89816499fc519cd3644b80c86e7b97d34b12f6b16dd882aafedf67d0d30de·...·]-2">}</span><span·class="w">·</span><span·class="c1">%·With·ancillary·data</span></code></pre><p><code·class="inline">PeerIP</code>·and·<code·class="inline">PeerPort</code>·are·the·address·from·which·<code·class="inline">Packet</code>·was·sent.
933 <code·class="inline">Packet</code>·is·a·list·of·bytes·(<code·class="inline">[</code><a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a><code·class="inline">]</code>·if·option·<code·class="inline">list</code>933 <code·class="inline">Packet</code>·is·a·list·of·bytes·(<code·class="inline">[</code><a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a><code·class="inline">]</code>·if·option·<code·class="inline">list</code>
934 is·active·and·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a>·if·option·<code·class="inline">binary</code>is·active934 is·active·and·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a>·if·option·<code·class="inline">binary</code>is·active
935 (they·are·mutually·exclusive).</p><p>The·message·contains·an·<code·class="inline">AncData</code>·field·only·if·any·of·the·socket935 (they·are·mutually·exclusive).</p><p>The·message·contains·an·<code·class="inline">AncData</code>·field·only·if·any·of·the·socket
936 <a·href="#t:option/0">options</a>·<a·href="inet.html#option-recvtos"><code·class="inline">recvtos</code></a>,936 <a·href="#t:option/0">options</a>·<a·href="inet.html#option-recvtos"><code·class="inline">recvtos</code></a>,
937 <a·href="inet.html#option-recvtclass"><code·class="inline">recvtclass</code></a>·or937 <a·href="inet.html#option-recvtclass"><code·class="inline">recvtclass</code></a>·or
938 <a·href="inet.html#option-recvttl"><code·class="inline">recvttl</code></a>·are·active.</p><p>When·a·socket·in·<code·class="inline">{active, N}</code>·mode·(see·<a·href="inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·for·details),938 <a·href="inet.html#option-recvttl"><code·class="inline">recvttl</code></a>·are·active.</p><p>When·a·socket·in·<code·class="inline">{active, N}</code>·mode·(see·<a·href="inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·for·details),
939 transitions·to·passive·(<code·class="inline">{active, false}</code>)·mode·(<code·class="inline">N</code>·counts·down·to·<code·class="inline">0</code>),939 transitions·to·passive·(<code·class="inline">{active, false}</code>)·mode·(<code·class="inline">N</code>·counts·down·to·<code·class="inline">0</code>),
940 the·controlling·process·is·notified·by·a·message·on·this·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6700114892-1">{</span><span·class="ss">udp_passive</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p"·data-group-id="6700114892-1">}</span></code></pre><p>If·the·OS·protocol·stack·reports·an·error·for·the·socket,·the·following940 the·controlling·process·is·notified·by·a·message·on·this·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5924064415-1">{</span><span·class="ss">udp_passive</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p"·data-group-id="5924064415-1">}</span></code></pre><p>If·the·OS·protocol·stack·reports·an·error·for·the·socket,·the·following
941 message·is·sent·to·the·controlling·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6511398601-1">{</span><span·class="ss">udp_error</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Reason</span><span·class="p"·data-group-id="6511398601-1">}</span></code></pre><p><code·class="inline">Reason</code>·is·mostly·a·<a·href="inet.html#posix-error-codes">POSIX·Error·Code</a>.</p><p>If·the·socket·is·in·<em>passive·mode</em>·(not·in·an·<em>active·mode</em>),·received·data941 message·is·sent·to·the·controlling·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1378421448-1">{</span><span·class="ss">udp_error</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Reason</span><span·class="p"·data-group-id="1378421448-1">}</span></code></pre><p><code·class="inline">Reason</code>·is·mostly·a·<a·href="inet.html#posix-error-codes">POSIX·Error·Code</a>.</p><p>If·the·socket·is·in·<em>passive·mode</em>·(not·in·an·<em>active·mode</em>),·received·data
942 can·be·retrieved·with·the<code·class="inline">recv/2,3</code>](<a·href="#recv/2"><code·class="inline">recv/2</code></a>)·calls.·Note·that·incoming942 can·be·retrieved·with·the<code·class="inline">recv/2,3</code>](<a·href="#recv/2"><code·class="inline">recv/2</code></a>)·calls.·Note·that·incoming
943 UDP·packets·that·are·longer·than·the·receive·buffer·option·specifies943 UDP·packets·that·are·longer·than·the·receive·buffer·option·specifies
944 can·be·truncated·without·warning.</p><p>The·default·value·for·the·receive·buffer·option·is·<code·class="inline">{recbuf, 8192}</code>.</p>944 can·be·truncated·without·warning.</p><p>The·default·value·for·the·receive·buffer·option·is·<code·class="inline">{recbuf, 8192}</code>.</p>
945 ··</section>945 ··</section>
946 </section>946 </section>
947 <section·class="detail"·id="recv/2">947 <section·class="detail"·id="recv/2">
  
2.93 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/global_group.html
    
Offset 128, 15 lines modifiedOffset 128, 15 lines modified
  
  
128 ····<section·id="moduledoc">128 ····<section·id="moduledoc">
129 <p>Grouping·nodes·to·global·name·registration·groups.</p><p>This·module·makes·it·possible·to·partition·the·nodes·of·a·system·into·<em>global129 <p>Grouping·nodes·to·global·name·registration·groups.</p><p>This·module·makes·it·possible·to·partition·the·nodes·of·a·system·into·<em>global
130 groups</em>.·Each·global·group·has·its·own·global·namespace,·see·<a·href="global.html"><code·class="inline">global</code></a>.</p><p>The·main·advantage·of·dividing·systems·into·global·groups·is·that·the·background130 groups</em>.·Each·global·group·has·its·own·global·namespace,·see·<a·href="global.html"><code·class="inline">global</code></a>.</p><p>The·main·advantage·of·dividing·systems·into·global·groups·is·that·the·background
131 load·decreases·while·the·number·of·nodes·to·be·updated·is·reduced·when131 load·decreases·while·the·number·of·nodes·to·be·updated·is·reduced·when
132 manipulating·globally·registered·names.</p><p>The·Kernel·configuration·parameter·<a·href="kernel_app.html#global_groups"><code·class="inline">global_groups</code></a>132 manipulating·globally·registered·names.</p><p>The·Kernel·configuration·parameter·<a·href="kernel_app.html#global_groups"><code·class="inline">global_groups</code></a>
133 defines·the·global·groups:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6125429791-1">{</span><span·class="ss">global_groups</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6125429791-2">[</span><span·class="n">GroupTuple</span><span·class="w">·</span><span·class="p">:</span><span·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·1bb5e1c19be1ef510203ae59df18d633c6f79e1c9f1b5d76d20c9f4bf2876832·...·]-1">}</span></code></pre><p>For·the·processes·and·nodes·to·run·smoothly·using·the·global·group133 defines·the·global·groups:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5624506397-1">{</span><span·class="ss">global_groups</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5624506397-2">[</span><span·class="n">GroupTuple</span><span·class="w">·</span><span·class="p">:</span><span·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·571fa84469b06d71db6a268788306a729256c951f3abfafcdcea926f1d2f8ce5·...·]-1">}</span></code></pre><p>For·the·processes·and·nodes·to·run·smoothly·using·the·global·group
134 functionality,·the·following·criteria·must·be·met:</p><ul><li>An·instance·of·the·global·group·server,·<code·class="inline">global_group</code>,·must·be·running·on134 functionality,·the·following·criteria·must·be·met:</p><ul><li>An·instance·of·the·global·group·server,·<code·class="inline">global_group</code>,·must·be·running·on
135 each·node.·The·processes·are·automatically·started·and·synchronized·when·a135 each·node.·The·processes·are·automatically·started·and·synchronized·when·a
136 node·is·started.</li><li>All·involved·nodes·must·agree·on·the·global·group·definition,·otherwise·the136 node·is·started.</li><li>All·involved·nodes·must·agree·on·the·global·group·definition,·otherwise·the
137 behavior·of·the·system·is·undefined.</li><li><em>All</em>·nodes·in·the·system·must·belong·to·exactly·one·global·group.</li></ul><p>In·the·following·descriptions,·a·<em>group·node</em>·is·a·node·belonging·to·the·same137 behavior·of·the·system·is·undefined.</li><li><em>All</em>·nodes·in·the·system·must·belong·to·exactly·one·global·group.</li></ul><p>In·the·following·descriptions,·a·<em>group·node</em>·is·a·node·belonging·to·the·same
138 global·group·as·the·local·node.</p><h2·id="module-notes"·class="section-heading">138 global·group·as·the·local·node.</p><h2·id="module-notes"·class="section-heading">
139 ··<a·href="#module-notes"·class="hover-link">139 ··<a·href="#module-notes"·class="hover-link">
140 ····<i·class="ri-link-m"·aria-hidden="true"></i>140 ····<i·class="ri-link-m"·aria-hidden="true"></i>
35.0 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/inet.html
    
Offset 147, 27 lines modifiedOffset 147, 27 lines modified
147 inet_default_listen_options·'[{delay_send,true}]'</code></pre><p><strong>Please·note</strong>·that·the·default·option·<code·class="inline">{active,·true}</code>·cannot·be·changed,147 inet_default_listen_options·'[{delay_send,true}]'</code></pre><p><strong>Please·note</strong>·that·the·default·option·<code·class="inline">{active,·true}</code>·cannot·be·changed,
148 for·internal·implementation·reasons.</p><p>Addresses·as·inputs·to·functions·can·be·either·a·string·or·a·tuple.148 for·internal·implementation·reasons.</p><p>Addresses·as·inputs·to·functions·can·be·either·a·string·or·a·tuple.
149 For·example,·the·IP·address·150.236.20.73·can·be·passed·to149 For·example,·the·IP·address·150.236.20.73·can·be·passed·to
150 <a·href="#gethostbyaddr/1"><code·class="inline">gethostbyaddr/1</code></a>,·either·as·a·string·<code·class="inline">&quot;150.236.20.73&quot;</code>150 <a·href="#gethostbyaddr/1"><code·class="inline">gethostbyaddr/1</code></a>,·either·as·a·string·<code·class="inline">&quot;150.236.20.73&quot;</code>
151 or·as·a·tuple·<code·class="inline">{150, 236, 20, 73}</code>.</p><p><em>IPv4·address·examples:</em></p><pre><code·class="text">Address··········ip_address()151 or·as·a·tuple·<code·class="inline">{150, 236, 20, 73}</code>.</p><p><em>IPv4·address·examples:</em></p><pre><code·class="text">Address··········ip_address()
152 -------··········------------152 -------··········------------
153 127.0.0.1········{127,0,0,1}153 127.0.0.1········{127,0,0,1}
154 192.168.42.2·····{192,168,42,2}</code></pre><p><em>IPv6·address·examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Address</span><span·class="w">··········</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="9557773426-1">(</span><span·class="p"·data-group-id="9557773426-1">)</span><span·class="w">154 192.168.42.2·····{192,168,42,2}</code></pre><p><em>IPv6·address·examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Address</span><span·class="w">··········</span><span·class="nf">ip_address</span><span·class="p"·data-group-id="3589428216-1">(</span><span·class="p"·data-group-id="3589428216-1">)</span><span·class="w">
155 </span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">··········</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="w">155 </span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">-</span><span·class="w">··········</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="o">--</span><span·class="w">
156 </span><span·class="p">:</span><span·class="p">:</span><span·class="mi">1</span><span·class="w">·············</span><span·class="p"·data-group-id="9557773426-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·174,·SHA:·8819f866e5a5dd0095d03c9f834358fda75832f2133cdd100e09902d2eec190b·...·]6-2">}</span><span·class="w">156 </span><span·class="p">:</span><span·class="p">:</span><span·class="mi">1</span><span·class="w">·············</span><span·class="p"·data-group-id="3589428216-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·174,·SHA:·5163d784fee40aad6e9654016425febebc088d1cab62d463d7b4859986482ff3·...·]6-2">}</span><span·class="w">
157 </span><span·class="p">:</span><span·class="p">:</span><span·class="mf">192.168</span><span·class="p">.</span><span·class="mf">42.2</span><span·class="w">··</span><span·class="p"·data-group-id="9557773426-3">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·791,·SHA:·b2fe3442a448be6bb00ee539167a5079a2387d9bd5a466e50ac6d0f6e9616f01·...·]6-3">}</span><span·class="w">157 </span><span·class="p">:</span><span·class="p">:</span><span·class="mf">192.168</span><span·class="p">.</span><span·class="mf">42.2</span><span·class="w">··</span><span·class="p"·data-group-id="3589428216-3">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·791,·SHA:·76f8827a2e81a856607191076443877f56046100c911ce9ba1d50251a7ac4599·...·]6-3">}</span><span·class="w">
158 </span><span·class="p">:</span><span·class="p">:</span><span·class="n">FFFF</span><span·class="p">:</span><span·class="mf">192.168</span><span·class="p">.</span><span·class="mf">42.2</span><span·class="w">158 </span><span·class="p">:</span><span·class="p">:</span><span·class="n">FFFF</span><span·class="p">:</span><span·class="mf">192.168</span><span·class="p">.</span><span·class="mf">42.2</span><span·class="w">
159 ················</span><span·class="p"·data-group-id="9557773426-6">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·797,·SHA:·bc6cbaebf5fad6aa5346ea441d93712c5b7ba803129b03e852de0333b78510b7·...·]6-6">}</span><span·class="w">159 ················</span><span·class="p"·data-group-id="3589428216-6">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·797,·SHA:·dc869ff167ff5d7fa7337984c3243f67d6c078351949e5b9888182d5a483c3e0·...·]6-6">}</span><span·class="w">
160 </span><span·class="mi">3</span><span·class="nc">ffe</span><span·class="p">:</span><span·class="nc">b80</span><span·class="p">:</span><span·class="mi">1</span><span·class="nc">f8d</span><span·class="p">:</span><span·class="mi">2</span><span·class="p">:</span><span·class="mi">204</span><span·class="p">:</span><span·class="nc">acff</span><span·class="p">:</span><span·class="nc">fe17</span><span·class="p">:</span><span·class="ss">bf38</span><span·class="w">160 </span><span·class="mi">3</span><span·class="nc">ffe</span><span·class="p">:</span><span·class="nc">b80</span><span·class="p">:</span><span·class="mi">1</span><span·class="nc">f8d</span><span·class="p">:</span><span·class="mi">2</span><span·class="p">:</span><span·class="mi">204</span><span·class="p">:</span><span·class="nc">acff</span><span·class="p">:</span><span·class="nc">fe17</span><span·class="p">:</span><span·class="ss">bf38</span><span·class="w">
161 ················</span><span·class="p"·data-group-id="9557773426-9">{</span><span·class="mi">16#3ffe</span><span·class="p">,</span><span·class="mi">16#b80</span><span·class="p">,</span><span·class="mi">16#1f8d</span><span·class="p">,</span><span·class="mi">16#2</span><span·class="p">,</span><span·class="mi">1[·...·truncated·by·diffoscope;·len:·217,·SHA:·d6132ad9d988803e72cbb763a9bb64c247f973807e45c894e1e7b0a008e97e4c·...·]6-9">}</span><span·class="w">161 ················</span><span·class="p"·data-group-id="3589428216-9">{</span><span·class="mi">16#3ffe</span><span·class="p">,</span><span·class="mi">16#b80</span><span·class="p">,</span><span·class="mi">16#1f8d</span><span·class="p">,</span><span·class="mi">16#2</span><span·class="p">,</span><span·class="mi">1[·...·truncated·by·diffoscope;·len:·217,·SHA:·1cba09e3430aa8b821200cf8bab248c28eaaf2524f3ed4e17e39c0a40df3c994·...·]6-9">}</span><span·class="w">
162 </span><span·class="nc">fe80</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">204</span><span·class="p">:</span><span·class="nc">acff</span><span·class="p">:</span><span·class="nc">fe17</span><span·class="p">:</span><span·class="ss">bf38</span><span·class="w">162 </span><span·class="nc">fe80</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">204</span><span·class="p">:</span><span·class="nc">acff</span><span·class="p">:</span><span·class="nc">fe17</span><span·class="p">:</span><span·class="ss">bf38</span><span·class="w">
163 ················</span><span·class="p"·data-group-id="9557773426-10">{</span><span·class="mi">16#fe80</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">16#204</span><[·...·truncated·by·diffoscope;·len:·657,·SHA:·17dd4fda3cce249698955dfd0925be80dace5bd0d3669c3aeb12e27c5355b693·...·]-1">)</span><span·class="p">.</span><span·class="w">163 ················</span><span·class="p"·data-group-id="3589428216-10">{</span><span·class="mi">16#fe80</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">16#204</span><[·...·truncated·by·diffoscope;·len:·657,·SHA:·a99a8de1e6c9686fab4aac017a1b6e801651238fd0efdd470230368c382bb5a5·...·]-1">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="9134601217-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9134601217-3">{</span><span·class="mi">192</span><span·class="p">,</span><span·class="mi">168</span><span·class="p">,</span><span·class="mi">42</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·d2576ad77b940edf794c6a839ef2b3fbfd3a36a9f18fe355f09569701609ace9·...·]-2">}</span><span·class="gp·unselectable">164 </span><span·class="p"·data-group-id="6579162919-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6579162919-3">{</span><span·class="mi">192</span><span·class="p">,</span><span·class="mi">168</span><span·class="p">,</span><span·class="mi">42</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·b0742d7ac69a6c70db34b5ac8478aea5aba0db95d77fe6bacfe15be31911f856·...·]-2">}</span><span·class="gp·unselectable">
165 2&gt;·</span><span·class="nc">inet</span><span·class="p">:</span><span·class="nf">parse_address</span><span·class="p"·data-group-id="9134601217-4">(</span><span·class="s">&quot;::FFFF:192.168.42.2&quot;</span><span·class="p"·data-group-id="9134601217-4">)</span><span·class="p">.</span><span·class="w">165 2&gt;·</span><span·class="nc">inet</span><span·class="p">:</span><span·class="nf">parse_address</span><span·class="p"·data-group-id="6579162919-4">(</span><span·class="s">&quot;::FFFF:192.168.42.2&quot;</span><span·class="p"·data-group-id="6579162919-4">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="p"·data-group-id="9134601217-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9134601217-6">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·cl[·...·truncated·by·diffoscope;·len:·343,·SHA:·aba982877608de868d5ed22fd3692332412046390bec32d8023ca9c4a8f8814f·...·]-5">}</span></code></pre><h2·id="module-posix-error-codes"·class="section-heading">166 </span><span·class="p"·data-group-id="6579162919-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6579162919-6">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·cl[·...·truncated·by·diffoscope;·len:·343,·SHA:·ae315d54d1ed5137baa186e0c636841d9c40a6d0ff7ab31e4b9d34f2065ec901·...·]-5">}</span></code></pre><h2·id="module-posix-error-codes"·class="section-heading">
167 ··<a·href="#module-posix-error-codes"·class="hover-link">167 ··<a·href="#module-posix-error-codes"·class="hover-link">
168 ····<i·class="ri-link-m"·aria-hidden="true"></i>168 ····<i·class="ri-link-m"·aria-hidden="true"></i>
169 ··</a>169 ··</a>
170 ··<span·class="text"><a·href=""·id="posix-error-codes"></a>·POSIX·Error·Codes</span>170 ··<span·class="text"><a·href=""·id="posix-error-codes"></a>·POSIX·Error·Codes</span>
171 </h2>171 </h2>
172 <ul><li><code·class="inline">e2big</code>·-·Too·long·argument·list</li><li><code·class="inline">eacces</code>·-·Permission·denied</li><li><code·class="inline">eaddrinuse</code>·-·Address·already·in·use</li><li><code·class="inline">eaddrnotavail</code>·-·Cannot·assign·requested·address</li><li><code·class="inline">eadv</code>·-·Advertise·error</li><li><code·class="inline">eafnosupport</code>·-·Address·family·not·supported·by·protocol·family</li><li><code·class="inline">eagain</code>·-·Resource·temporarily·unavailable</li><li><code·class="inline">ealign</code>·-·EALIGN</li><li><code·class="inline">ealready</code>·-·Operation·already·in·progress</li><li><code·class="inline">ebade</code>·-·Bad·exchange·descriptor</li><li><code·class="inline">ebadf</code>·-·Bad·file·number</li><li><code·class="inline">ebadfd</code>·-·File·descriptor·in·bad·state</li><li><code·class="inline">ebadmsg</code>·-·Not·a·data·message</li><li><code·class="inline">ebadr</code>·-·Bad·request·descriptor</li><li><code·class="inline">ebadrpc</code>·-·Bad·RPC·structure</li><li><code·class="inline">ebadrqc</code>·-·Bad·request·code</li><li><code·class="inline">ebadslt</code>·-·Invalid·slot</li><li><code·class="inline">ebfont</code>·-·Bad·font·file·format</li><li><code·class="inline">ebusy</code>·-·File·busy</li><li><code·class="inline">echild</code>·-·No·children</li><li><code·class="inline">echrng</code>·-·Channel·number·out·of·range</li><li><code·class="inline">ecomm</code>·-·Communication·error·on·send</li><li><code·class="inline">econnaborted</code>·-·Software·caused·connection·abort</li><li><code·class="inline">econnrefused</code>·-·Connection·refused</li><li><code·class="inline">econnreset</code>·-·Connection·reset·by·peer</li><li><code·class="inline">edeadlk</code>·-·Resource·deadlock·avoided</li><li><code·class="inline">edeadlock</code>·-·Resource·deadlock·avoided</li><li><code·class="inline">edestaddrreq</code>·-·Destination·address·required</li><li><code·class="inline">edirty</code>·-·Mounting·a·dirty·fs·without·force</li><li><code·class="inline">edom</code>·-·Math·argument·out·of·range</li><li><code·class="inline">edotdot</code>·-·Cross·mount·point</li><li><code·class="inline">edquot</code>·-·Disk·quota·exceeded</li><li><code·class="inline">eduppkg</code>·-·Duplicate·package·name</li><li><code·class="inline">eexist</code>·-·File·already·exists</li><li><code·class="inline">efault</code>·-·Bad·address·in·system·call·argument</li><li><code·class="inline">efbig</code>·-·File·too·large</li><li><code·class="inline">ehostdown</code>·-·Host·is·down</li><li><code·class="inline">ehostunreach</code>·-·Host·is·unreachable</li><li><code·class="inline">eidrm</code>·-·Identifier·removed</li><li><code·class="inline">einit</code>·-·Initialization·error</li><li><code·class="inline">einprogress</code>·-·Operation·now·in·progress</li><li><code·class="inline">eintr</code>·-·Interrupted·system·call</li><li><code·class="inline">einval</code>·-·Invalid·argument</li><li><code·class="inline">eio</code>·-·I/O·error</li><li><code·class="inline">eisconn</code>·-·Socket·is·already·connected</li><li><code·class="inline">eisdir</code>·-·Illegal·operation·on·a·directory</li><li><code·class="inline">eisnam</code>·-·Is·a·named·file</li><li><code·class="inline">el2hlt</code>·-·Level·2·halted</li><li><code·class="inline">el2nsync</code>·-·Level·2·not·synchronized</li><li><code·class="inline">el3hlt</code>·-·Level·3·halted</li><li><code·class="inline">el3rst</code>·-·Level·3·reset</li><li><code·class="inline">elbin</code>·-·ELBIN</li><li><code·class="inline">elibacc</code>·-·Cannot·access·a·needed·shared·library</li><li><code·class="inline">elibbad</code>·-·Accessing·a·corrupted·shared·library</li><li><code·class="inline">elibexec</code>·-·Cannot·exec·a·shared·library·directly</li><li><code·class="inline">elibmax</code>·-·Attempting·to·link·in·more·shared·libraries·than·system·limit</li><li><code·class="inline">elibscn</code>·-·<code·class="inline">.lib</code>·section·in·<code·class="inline">a.out</code>·corrupted</li><li><code·class="inline">elnrng</code>·-·Link·number·out·of·range</li><li><code·class="inline">eloop</code>·-·Too·many·levels·of·symbolic·links</li><li><code·class="inline">emfile</code>·-·Too·many·open·files</li><li><code·class="inline">emlink</code>·-·Too·many·links</li><li><code·class="inline">emsgsize</code>·-·Message·too·long</li><li><code·class="inline">emultihop</code>·-·Multihop·attempted</li><li><code·class="inline">enametoolong</code>·-·Filename·too·long</li><li><code·class="inline">enavail</code>·-·Unavailable</li><li><code·class="inline">enet</code>·-·ENET</li><li><code·class="inline">enetdown</code>·-·Network·is·down</li><li><code·class="inline">enetreset</code>·-·Network·dropped·connection·on·reset</li><li><code·class="inline">enetunreach</code>·-·Network·is·unreachable</li><li><code·class="inline">enfile</code>·-·File·table·overflow</li><li><code·class="inline">enoano</code>·-·Anode·table·overflow</li><li><code·class="inline">enobufs</code>·-·No·buffer·space·available</li><li><code·class="inline">enocsi</code>·-·No·CSI·structure·available</li><li><code·class="inline">enodata</code>·-·No·data·available</li><li><code·class="inline">enodev</code>·-·No·such·device</li><li><code·class="inline">enoent</code>·-·No·such·file·or·directory</li><li><code·class="inline">enoexec</code>·-·Exec·format·error</li><li><code·class="inline">enolck</code>·-·No·locks·available</li><li><code·class="inline">enolink</code>·-·Link·has·been·severed</li><li><code·class="inline">enomem</code>·-·Not·enough·memory</li><li><code·class="inline">enomsg</code>·-·No·message·of·desired·type</li><li><code·class="inline">enonet</code>·-·Machine·is·not·on·the·network</li><li><code·class="inline">enopkg</code>·-·Package·not·installed</li><li><code·class="inline">enoprotoopt</code>·-·Bad·protocol·option</li><li><code·class="inline">enospc</code>·-·No·space·left·on·device</li><li><code·class="inline">enosr</code>·-·Out·of·stream·resources·or·not·a·stream·device</li><li><code·class="inline">enosym</code>·-·Unresolved·symbol·name</li><li><code·class="inline">enosys</code>·-·Function·not·implemented</li><li><code·class="inline">enotblk</code>·-·Block·device·required</li><li><code·class="inline">enotconn</code>·-·Socket·is·not·connected</li><li><code·class="inline">enotdir</code>·-·Not·a·directory</li><li><code·class="inline">enotempty</code>·-·Directory·not·empty</li><li><code·class="inline">enotnam</code>·-·Not·a·named·file</li><li><code·class="inline">enotsock</code>·-·Socket·operation·on·non-socket</li><li><code·class="inline">enotsup</code>·-·Operation·not·supported</li><li><code·class="inline">enotty</code>·-·Inappropriate·device·for·<code·class="inline">ioctl</code></li><li><code·class="inline">enotuniq</code>·-·Name·not·unique·on·network</li><li><code·class="inline">enxio</code>·-·No·such·device·or·address</li><li><code·class="inline">eopnotsupp</code>·-·Operation·not·supported·on·socket</li><li><code·class="inline">eperm</code>·-·Not·owner</li><li><code·class="inline">epfnosupport</code>·-·Protocol·family·not·supported</li><li><code·class="inline">epipe</code>·-·Broken·pipe</li><li><code·class="inline">eproclim</code>·-·Too·many·processes</li><li><code·class="inline">eprocunavail</code>·-·Bad·procedure·for·program</li><li><code·class="inline">eprogmismatch</code>·-·Wrong·program·version</li><li><code·class="inline">eprogunavail</code>·-·RPC·program·unavailable</li><li><code·class="inline">eproto</code>·-·Protocol·error</li><li><code·class="inline">eprotonosupport</code>·-·Protocol·not·supported</li><li><code·class="inline">eprototype</code>·-·Wrong·protocol·type·for·socket</li><li><code·class="inline">erange</code>·-·Math·result·unrepresentable</li><li><code·class="inline">erefused</code>·-·EREFUSED</li><li><code·class="inline">eremchg</code>·-·Remote·address·changed</li><li><code·class="inline">eremdev</code>·-·Remote·device</li><li><code·class="inline">eremote</code>·-·Pathname·hit·remote·filesystem</li><li><code·class="inline">eremoteio</code>·-·Remote·I/O·error</li><li><code·class="inline">eremoterelease</code>·-·EREMOTERELEASE</li><li><code·class="inline">erofs</code>·-·Read-only·filesystem</li><li><code·class="inline">erpcmismatch</code>·-·Wrong·RPC·version</li><li><code·class="inline">erremote</code>·-·Object·is·remote</li><li><code·class="inline">eshutdown</code>·-·Cannot·send·after·socket·shutdown</li><li><code·class="inline">esocktnosupport</code>·-·Socket·type·not·supported</li><li><code·class="inline">espipe</code>·-·Invalid·seek</li><li><code·class="inline">esrch</code>·-·No·such·process</li><li><code·class="inline">esrmnt</code>·-·Srmount·error</li><li><code·class="inline">estale</code>·-·Stale·remote·file·handle</li><li><code·class="inline">esuccess</code>·-·Error·0</li><li><code·class="inline">etime</code>·-·Timer·expired</li><li><code·class="inline">etimedout</code>·-·Connection·timed·out</li><li><code·class="inline">etoomanyrefs</code>·-·Too·many·references</li><li><code·class="inline">etxtbsy</code>·-·Text·file·or·pseudo-device·busy</li><li><code·class="inline">euclean</code>·-·Structure·needs·cleaning</li><li><code·class="inline">eunatch</code>·-·Protocol·driver·not·attached</li><li><code·class="inline">eusers</code>·-·Too·many·users</li><li><code·class="inline">eversion</code>·-·Version·mismatch</li><li><code·class="inline">ewouldblock</code>·-·Operation·would·block</li><li><code·class="inline">exdev</code>·-·Cross-device·link</li><li><code·class="inline">exfull</code>·-·Message·tables·full</li><li><code·class="inline">nxdomain</code>·-·Hostname·or·domain·name·cannot·be·found</li></ul>172 <ul><li><code·class="inline">e2big</code>·-·Too·long·argument·list</li><li><code·class="inline">eacces</code>·-·Permission·denied</li><li><code·class="inline">eaddrinuse</code>·-·Address·already·in·use</li><li><code·class="inline">eaddrnotavail</code>·-·Cannot·assign·requested·address</li><li><code·class="inline">eadv</code>·-·Advertise·error</li><li><code·class="inline">eafnosupport</code>·-·Address·family·not·supported·by·protocol·family</li><li><code·class="inline">eagain</code>·-·Resource·temporarily·unavailable</li><li><code·class="inline">ealign</code>·-·EALIGN</li><li><code·class="inline">ealready</code>·-·Operation·already·in·progress</li><li><code·class="inline">ebade</code>·-·Bad·exchange·descriptor</li><li><code·class="inline">ebadf</code>·-·Bad·file·number</li><li><code·class="inline">ebadfd</code>·-·File·descriptor·in·bad·state</li><li><code·class="inline">ebadmsg</code>·-·Not·a·data·message</li><li><code·class="inline">ebadr</code>·-·Bad·request·descriptor</li><li><code·class="inline">ebadrpc</code>·-·Bad·RPC·structure</li><li><code·class="inline">ebadrqc</code>·-·Bad·request·code</li><li><code·class="inline">ebadslt</code>·-·Invalid·slot</li><li><code·class="inline">ebfont</code>·-·Bad·font·file·format</li><li><code·class="inline">ebusy</code>·-·File·busy</li><li><code·class="inline">echild</code>·-·No·children</li><li><code·class="inline">echrng</code>·-·Channel·number·out·of·range</li><li><code·class="inline">ecomm</code>·-·Communication·error·on·send</li><li><code·class="inline">econnaborted</code>·-·Software·caused·connection·abort</li><li><code·class="inline">econnrefused</code>·-·Connection·refused</li><li><code·class="inline">econnreset</code>·-·Connection·reset·by·peer</li><li><code·class="inline">edeadlk</code>·-·Resource·deadlock·avoided</li><li><code·class="inline">edeadlock</code>·-·Resource·deadlock·avoided</li><li><code·class="inline">edestaddrreq</code>·-·Destination·address·required</li><li><code·class="inline">edirty</code>·-·Mounting·a·dirty·fs·without·force</li><li><code·class="inline">edom</code>·-·Math·argument·out·of·range</li><li><code·class="inline">edotdot</code>·-·Cross·mount·point</li><li><code·class="inline">edquot</code>·-·Disk·quota·exceeded</li><li><code·class="inline">eduppkg</code>·-·Duplicate·package·name</li><li><code·class="inline">eexist</code>·-·File·already·exists</li><li><code·class="inline">efault</code>·-·Bad·address·in·system·call·argument</li><li><code·class="inline">efbig</code>·-·File·too·large</li><li><code·class="inline">ehostdown</code>·-·Host·is·down</li><li><code·class="inline">ehostunreach</code>·-·Host·is·unreachable</li><li><code·class="inline">eidrm</code>·-·Identifier·removed</li><li><code·class="inline">einit</code>·-·Initialization·error</li><li><code·class="inline">einprogress</code>·-·Operation·now·in·progress</li><li><code·class="inline">eintr</code>·-·Interrupted·system·call</li><li><code·class="inline">einval</code>·-·Invalid·argument</li><li><code·class="inline">eio</code>·-·I/O·error</li><li><code·class="inline">eisconn</code>·-·Socket·is·already·connected</li><li><code·class="inline">eisdir</code>·-·Illegal·operation·on·a·directory</li><li><code·class="inline">eisnam</code>·-·Is·a·named·file</li><li><code·class="inline">el2hlt</code>·-·Level·2·halted</li><li><code·class="inline">el2nsync</code>·-·Level·2·not·synchronized</li><li><code·class="inline">el3hlt</code>·-·Level·3·halted</li><li><code·class="inline">el3rst</code>·-·Level·3·reset</li><li><code·class="inline">elbin</code>·-·ELBIN</li><li><code·class="inline">elibacc</code>·-·Cannot·access·a·needed·shared·library</li><li><code·class="inline">elibbad</code>·-·Accessing·a·corrupted·shared·library</li><li><code·class="inline">elibexec</code>·-·Cannot·exec·a·shared·library·directly</li><li><code·class="inline">elibmax</code>·-·Attempting·to·link·in·more·shared·libraries·than·system·limit</li><li><code·class="inline">elibscn</code>·-·<code·class="inline">.lib</code>·section·in·<code·class="inline">a.out</code>·corrupted</li><li><code·class="inline">elnrng</code>·-·Link·number·out·of·range</li><li><code·class="inline">eloop</code>·-·Too·many·levels·of·symbolic·links</li><li><code·class="inline">emfile</code>·-·Too·many·open·files</li><li><code·class="inline">emlink</code>·-·Too·many·links</li><li><code·class="inline">emsgsize</code>·-·Message·too·long</li><li><code·class="inline">emultihop</code>·-·Multihop·attempted</li><li><code·class="inline">enametoolong</code>·-·Filename·too·long</li><li><code·class="inline">enavail</code>·-·Unavailable</li><li><code·class="inline">enet</code>·-·ENET</li><li><code·class="inline">enetdown</code>·-·Network·is·down</li><li><code·class="inline">enetreset</code>·-·Network·dropped·connection·on·reset</li><li><code·class="inline">enetunreach</code>·-·Network·is·unreachable</li><li><code·class="inline">enfile</code>·-·File·table·overflow</li><li><code·class="inline">enoano</code>·-·Anode·table·overflow</li><li><code·class="inline">enobufs</code>·-·No·buffer·space·available</li><li><code·class="inline">enocsi</code>·-·No·CSI·structure·available</li><li><code·class="inline">enodata</code>·-·No·data·available</li><li><code·class="inline">enodev</code>·-·No·such·device</li><li><code·class="inline">enoent</code>·-·No·such·file·or·directory</li><li><code·class="inline">enoexec</code>·-·Exec·format·error</li><li><code·class="inline">enolck</code>·-·No·locks·available</li><li><code·class="inline">enolink</code>·-·Link·has·been·severed</li><li><code·class="inline">enomem</code>·-·Not·enough·memory</li><li><code·class="inline">enomsg</code>·-·No·message·of·desired·type</li><li><code·class="inline">enonet</code>·-·Machine·is·not·on·the·network</li><li><code·class="inline">enopkg</code>·-·Package·not·installed</li><li><code·class="inline">enoprotoopt</code>·-·Bad·protocol·option</li><li><code·class="inline">enospc</code>·-·No·space·left·on·device</li><li><code·class="inline">enosr</code>·-·Out·of·stream·resources·or·not·a·stream·device</li><li><code·class="inline">enosym</code>·-·Unresolved·symbol·name</li><li><code·class="inline">enosys</code>·-·Function·not·implemented</li><li><code·class="inline">enotblk</code>·-·Block·device·required</li><li><code·class="inline">enotconn</code>·-·Socket·is·not·connected</li><li><code·class="inline">enotdir</code>·-·Not·a·directory</li><li><code·class="inline">enotempty</code>·-·Directory·not·empty</li><li><code·class="inline">enotnam</code>·-·Not·a·named·file</li><li><code·class="inline">enotsock</code>·-·Socket·operation·on·non-socket</li><li><code·class="inline">enotsup</code>·-·Operation·not·supported</li><li><code·class="inline">enotty</code>·-·Inappropriate·device·for·<code·class="inline">ioctl</code></li><li><code·class="inline">enotuniq</code>·-·Name·not·unique·on·network</li><li><code·class="inline">enxio</code>·-·No·such·device·or·address</li><li><code·class="inline">eopnotsupp</code>·-·Operation·not·supported·on·socket</li><li><code·class="inline">eperm</code>·-·Not·owner</li><li><code·class="inline">epfnosupport</code>·-·Protocol·family·not·supported</li><li><code·class="inline">epipe</code>·-·Broken·pipe</li><li><code·class="inline">eproclim</code>·-·Too·many·processes</li><li><code·class="inline">eprocunavail</code>·-·Bad·procedure·for·program</li><li><code·class="inline">eprogmismatch</code>·-·Wrong·program·version</li><li><code·class="inline">eprogunavail</code>·-·RPC·program·unavailable</li><li><code·class="inline">eproto</code>·-·Protocol·error</li><li><code·class="inline">eprotonosupport</code>·-·Protocol·not·supported</li><li><code·class="inline">eprototype</code>·-·Wrong·protocol·type·for·socket</li><li><code·class="inline">erange</code>·-·Math·result·unrepresentable</li><li><code·class="inline">erefused</code>·-·EREFUSED</li><li><code·class="inline">eremchg</code>·-·Remote·address·changed</li><li><code·class="inline">eremdev</code>·-·Remote·device</li><li><code·class="inline">eremote</code>·-·Pathname·hit·remote·filesystem</li><li><code·class="inline">eremoteio</code>·-·Remote·I/O·error</li><li><code·class="inline">eremoterelease</code>·-·EREMOTERELEASE</li><li><code·class="inline">erofs</code>·-·Read-only·filesystem</li><li><code·class="inline">erpcmismatch</code>·-·Wrong·RPC·version</li><li><code·class="inline">erremote</code>·-·Object·is·remote</li><li><code·class="inline">eshutdown</code>·-·Cannot·send·after·socket·shutdown</li><li><code·class="inline">esocktnosupport</code>·-·Socket·type·not·supported</li><li><code·class="inline">espipe</code>·-·Invalid·seek</li><li><code·class="inline">esrch</code>·-·No·such·process</li><li><code·class="inline">esrmnt</code>·-·Srmount·error</li><li><code·class="inline">estale</code>·-·Stale·remote·file·handle</li><li><code·class="inline">esuccess</code>·-·Error·0</li><li><code·class="inline">etime</code>·-·Timer·expired</li><li><code·class="inline">etimedout</code>·-·Connection·timed·out</li><li><code·class="inline">etoomanyrefs</code>·-·Too·many·references</li><li><code·class="inline">etxtbsy</code>·-·Text·file·or·pseudo-device·busy</li><li><code·class="inline">euclean</code>·-·Structure·needs·cleaning</li><li><code·class="inline">eunatch</code>·-·Protocol·driver·not·attached</li><li><code·class="inline">eusers</code>·-·Too·many·users</li><li><code·class="inline">eversion</code>·-·Version·mismatch</li><li><code·class="inline">ewouldblock</code>·-·Operation·would·block</li><li><code·class="inline">exdev</code>·-·Cross-device·link</li><li><code·class="inline">exfull</code>·-·Message·tables·full</li><li><code·class="inline">nxdomain</code>·-·Hostname·or·domain·name·cannot·be·found</li></ul>
173 ····</section>173 ····</section>
Offset 953, 15 lines modifiedOffset 953, 15 lines modified
953 ···················h_addrtype·::·inet·|·inet6,953 ···················h_addrtype·::·inet·|·inet6,
954 ···················h_length·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),954 ···················h_length·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),
955 ···················h_addr_list·::·[<a·href="inet.html#t:ip_address/0">inet:ip_address</a>()]}.</pre>955 ···················h_addr_list·::·[<a·href="inet.html#t:ip_address/0">inet:ip_address</a>()]}.</pre>
  
956 ······</div>956 ······</div>
  
957 <p>A·record·describing·a·host;·name·and·address.</p><p>Corresponds·to·the·<code·class="inline">C</code>:·<code·class="inline">struct hostent</code>·as·returned·by·for·example957 <p>A·record·describing·a·host;·name·and·address.</p><p>Corresponds·to·the·<code·class="inline">C</code>:·<code·class="inline">struct hostent</code>·as·returned·by·for·example
958 <code·class="inline">gethostbyname(3)</code>.</p><p>The·record·is·defined·in·the·Kernel·include·file·<code·class="inline">&quot;inet.hrl&quot;</code>.</p><p>Add·the·following·directive·to·the·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6252979707-1">(</span><span·class="s">&quot;kernel/include/inet.hrl&quot;</span><span·class="p"·data-group-id="6252979707-1">)</span><span·class="p">.</span></code></pre>958 <code·class="inline">gethostbyname(3)</code>.</p><p>The·record·is·defined·in·the·Kernel·include·file·<code·class="inline">&quot;inet.hrl&quot;</code>.</p><p>Add·the·following·directive·to·the·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0118089009-1">(</span><span·class="s">&quot;kernel/include/inet.hrl&quot;</span><span·class="p"·data-group-id="0118089009-1">)</span><span·class="p">.</span></code></pre>
959 ··</section>959 ··</section>
960 </section>960 </section>
961 <section·class="detail"·id="t:hostname/0">961 <section·class="detail"·id="t:hostname/0">
  
962 ··<div·class="detail-header">962 ··<div·class="detail-header">
963 ····<a·href="#t:hostname/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">963 ····<a·href="#t:hostname/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
964 ······<i·class="ri-link-m"·aria-hidden="true"></i>964 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 2050, 17 lines modifiedOffset 2050, 17 lines modified
2050 coded·in·native·endianness.</p><p>Asking·for·and·inspecting·raw·socket·options·require·low-level·information·about2050 coded·in·native·endianness.</p><p>Asking·for·and·inspecting·raw·socket·options·require·low-level·information·about
2051 the·current·operating·system·and·TCP·stack.</p><p><em>Example:</em></p><p>Consider·a·Linux·machine·where·option·<code·class="inline">TCP_INFO</code>·can·be·used·to·collect·TCP2051 the·current·operating·system·and·TCP·stack.</p><p><em>Example:</em></p><p>Consider·a·Linux·machine·where·option·<code·class="inline">TCP_INFO</code>·can·be·used·to·collect·TCP
2052 statistics·for·a·socket.·Assume·you·are·interested·in·field·<code·class="inline">tcpi_sacked</code>·of2052 statistics·for·a·socket.·Assume·you·are·interested·in·field·<code·class="inline">tcpi_sacked</code>·of
2053 <code·class="inline">struct·tcp_info</code>·filled·in·when·asking·for·<code·class="inline">TCP_INFO</code>.·To·be·able·to·access2053 <code·class="inline">struct·tcp_info</code>·filled·in·when·asking·for·<code·class="inline">TCP_INFO</code>.·To·be·able·to·access
2054 this·information,·you·need·to·know·the·following:</p><ul><li>The·numeric·value·of·protocol·level·<code·class="inline">IPPROTO_TCP</code></li><li>The·numeric·value·of·option·<code·class="inline">TCP_INFO</code></li><li>The·size·of·<code·class="inline">struct·tcp_info</code></li><li>The·size·and·offset·of·the·specific·field</li></ul><p>By·inspecting·the·headers·or·writing·a·small·C·program,·it·is·found·that2054 this·information,·you·need·to·know·the·following:</p><ul><li>The·numeric·value·of·protocol·level·<code·class="inline">IPPROTO_TCP</code></li><li>The·numeric·value·of·option·<code·class="inline">TCP_INFO</code></li><li>The·size·of·<code·class="inline">struct·tcp_info</code></li><li>The·size·and·offset·of·the·specific·field</li></ul><p>By·inspecting·the·headers·or·writing·a·small·C·program,·it·is·found·that
2055 <code·class="inline">IPPROTO_TCP</code>·is·6,·<code·class="inline">TCP_INFO</code>·is·11,·the·structure·size·is·92·(bytes),·the2055 <code·class="inline">IPPROTO_TCP</code>·is·6,·<code·class="inline">TCP_INFO</code>·is·11,·the·structure·size·is·92·(bytes),·the
2056 offset·of·<code·class="inline">tcpi_sacked</code>·is·28·bytes,·and·the·value·is·a·32-bit·integer.·The2056 offset·of·<code·class="inline">tcpi_sacked</code>·is·28·bytes,·and·the·value·is·a·32-bit·integer.·The
2057 following·code·can·be·used·to·retrieve·the·value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">get_tcpi_sacked</span><span·class="p"·data-group-id="5580376401-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="5580376401-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
2058 ····</span><span·class="p"·data-group-id="5580376401-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5580376401-3">[</span><span·class="p"·data-group-id="5580376401-4">{</span><span·class="ss">raw</span><span·cla[·...·truncated·by·diffoscope;·len:·1014,·SHA:·27e0e64dec8cf468322873ce5a67cdcff7820c8d0ddced898be602f35a4d1244·...·]</span><span·class="w">2057 following·code·can·be·used·to·retrieve·the·value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">get_tcpi_sacked</span><span·class="p"·data-group-id="0926825668-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="09268[·...·truncated·by·diffoscope;·len:·62,·SHA:·d7c8b992c637b8e852062ad9381e7e3d38460f404bab8d8a86e2f7e40b6227bb·...·]</span><span·class="w">
 2058 ····</span><span·class="p"·data-group-id="0926825668-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0926825668-3">[</span><span·class="p"·data-group-id="0926825668-4">{</span><span·class="ss">raw</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Info</span><span·class="p"·data-group-id="0926825668-4">}</span><span·class="p"·data-group-id="0926825668-3">]</span><span·class="p"·data-group-id="0926825668-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">inet</span><span·class="p">:</span><span·class="nf">getopts</span><span·class="p"·data-group-id="0926825668-5">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="0926825668-6">[</span><span·class="p"·data-group-id="0926825668-7">{</span><span·class="ss">raw</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">92</span><span·class="p"·data-group-id="0926825668-7">}</span><span·class="p"·data-group-id="0926825668-6">]</span><span·class="p"·data-group-id="0926825668-5">)</span><span·class="p">,</span><span·class="w">
2059 ····</span><span·class="p"·data-group-id="5580376401-8">&lt;&lt;</span><span·class="p">_</span><span·class="p">:</span><span·class="mi">28</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">TcpiSacked</span><span·class="p">:</span><span·class="mi">3[·...·truncated·by·diffoscope;·len:·205,·SHA:·8f3dd6ab9bc1bf2cce8654441eef3f406fbcb7eb3e47178cc1201069f9fd20a3·...·]-8">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">2059 ····</span><span·class="p"·data-group-id="0926825668-8">&lt;&lt;</span><span·class="p">_</span><span·class="p">:</span><span·class="mi">28</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="n">TcpiSacked</span><span·class="p">:</span><span·class="mi">3[·...·truncated·by·diffoscope;·len:·205,·SHA:·7d07f931592230543d825ce7da69a0d41c348e40279020b999c694c9aeb4ab9c·...·]-8">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">
2060 ····</span><span·class="n">TcpiSacked</span><span·class="p">.</span></code></pre><p>Preferably,·you·would·check·the·machine·type,·the·operating·system,·and·the2060 ····</span><span·class="n">TcpiSacked</span><span·class="p">.</span></code></pre><p>Preferably,·you·would·check·the·machine·type,·the·operating·system,·and·the
2061 Kernel·version·before·executing·anything·similar·to·this·code.</p>2061 Kernel·version·before·executing·anything·similar·to·this·code.</p>
2062 ··</section>2062 ··</section>
2063 </section>2063 </section>
2064 <section·class="detail"·id="getstat/1">2064 <section·class="detail"·id="getstat/1">
  
2065 ··<div·class="detail-header">2065 ··<div·class="detail-header">
Offset 2381, 15 lines modifiedOffset 2381, 15 lines modified
2381 ······<div·class="specs">2381 ······<div·class="specs">
  
2382 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor(Socket)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0">reference</a>()·when·Socket·::·<a·href="#t:socket/0">socket</a>().</pre>2382 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor(Socket)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0">reference</a>()·when·Socket·::·<a·href="#t:socket/0">socket</a>().</pre>
  
2383 ······</div>2383 ······</div>
  
2384 <p>Start·a·socket·monitor.</p><p>If·the·<code·class="inline">Socket</code>·to·monitor·doesn't·exist·or·when·the·monitor·is·triggered,2384 <p>Start·a·socket·monitor.</p><p>If·the·<code·class="inline">Socket</code>·to·monitor·doesn't·exist·or·when·the·monitor·is·triggered,
2385 a·<code·class="inline">'DOWN'</code>·message·is·sent·that·has·the·following·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»     ····</span><span·class="p"·data-group-id="6386574841-1">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MonitorRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·153,·SHA:·4e9176c5f60137bf93f2c05acea023f0ad0b7503ee5206d23625ad6ce7a65670·...·]-1">}</span></code></pre><ul><li><p><strong><code·class="inline">MonitorRef</code></strong>·-·The·return·value·from·this·function.</p></li><li><p><strong><code·class="inline">Type</code></strong>·-·The·type·of·socket,·can·be·one·of·the·following2385 a·<code·class="inline">'DOWN'</code>·message·is·sent·that·has·the·following·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»     ····</span><span·class="p"·data-group-id="3597374979-1">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MonitorRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·153,·SHA:·680097b2b8c01d9b6c869f90b349eb9e1ed2072a07d96f68db52d0de8c513c29·...·]-1">}</span></code></pre><ul><li><p><strong><code·class="inline">MonitorRef</code></strong>·-·The·return·value·from·this·function.</p></li><li><p><strong><code·class="inline">Type</code></strong>·-·The·type·of·socket,·can·be·one·of·the·following
2386 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0"><code·class="inline">atom/0</code></a>s:·<code·class="inline">port</code>·or·<code·class="inline">socket</code>.</p></li><li><p><strong><code·class="inline">Object</code></strong>·-·The·monitored·entity,·the·socket,·which·triggered·the·event.</p></li><li><p><strong><code·class="inline">Info</code></strong>·-·Either·the·termination·reason·of·the·socket·or·<code·class="inline">nosock</code>2386 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0"><code·class="inline">atom/0</code></a>s:·<code·class="inline">port</code>·or·<code·class="inline">socket</code>.</p></li><li><p><strong><code·class="inline">Object</code></strong>·-·The·monitored·entity,·the·socket,·which·triggered·the·event.</p></li><li><p><strong><code·class="inline">Info</code></strong>·-·Either·the·termination·reason·of·the·socket·or·<code·class="inline">nosock</code>
2387 (the·<code·class="inline">Socket</code>·did·not·exist·when·this·function·was·called).</p></li></ul><p>Making·several·calls·to·<a·href="#monitor/1"><code·class="inline">inet:monitor/1</code></a>·for·the·same·<code·class="inline">Socket</code>2387 (the·<code·class="inline">Socket</code>·did·not·exist·when·this·function·was·called).</p></li></ul><p>Making·several·calls·to·<a·href="#monitor/1"><code·class="inline">inet:monitor/1</code></a>·for·the·same·<code·class="inline">Socket</code>
2388 is·not·an·error;·one·monitor·is·created·per·call.</p><p>The·monitor·is·triggered·when·the·socket·is·closed·in·any·way·such·as2388 is·not·an·error;·one·monitor·is·created·per·call.</p><p>The·monitor·is·triggered·when·the·socket·is·closed·in·any·way·such·as
2389 an·API·call,·remote·end·close,·closed·by·signal·when·owner·exits,·...</p>2389 an·API·call,·remote·end·close,·closed·by·signal·when·owner·exits,·...</p>
2390 ··</section>2390 ··</section>
2391 </section>2391 </section>
2392 <section·class="detail"·id="ntoa/1">2392 <section·class="detail"·id="ntoa/1">
49.6 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/inet_res.html
    
Offset 175, 23 lines modifiedOffset 175, 23 lines modified
175 <p>The·following·data·types·concern·the·DNS·client:</p><h2·id="module-example"·class="section-heading">175 <p>The·following·data·types·concern·the·DNS·client:</p><h2·id="module-example"·class="section-heading">
176 ··<a·href="#module-example"·class="hover-link">176 ··<a·href="#module-example"·class="hover-link">
177 ····<i·class="ri-link-m"·aria-hidden="true"></i>177 ····<i·class="ri-link-m"·aria-hidden="true"></i>
178 ··</a>178 ··</a>
179 ··<span·class="text">Example</span>179 ··<span·class="text">Example</span>
180 </h2>180 </h2>
181 <p>This·access·functions·example·shows·how·<a·href="#lookup/3"><code·class="inline">lookup/3</code></a>·can·be·implemented·using181 <p>This·access·functions·example·shows·how·<a·href="#lookup/3"><code·class="inline">lookup/3</code></a>·can·be·implemented·using
182 <a·href="#resolve/3"><code·class="inline">resolve/3</code></a>·from·outside·the·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">example_lookup</span><span·class="p"·data-group-id="7507443480-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Class</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="7507443480-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 <a·href="#resolve/3"><code·class="inline">resolve/3</code></a>·from·outside·the·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">example_lookup</span><span·class="p"·data-group-id="0010138357-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Class</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="0010138357-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">inet_res</span><span·class="p">:</span><span·class="nf">resolve</span><span·class="p"·data-group-id="7507443480-2">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Class</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="7507443480-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">183 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">inet_res</span><span·class="p">:</span><span·class="nf">resolve</span><span·class="p"·data-group-id="0010138357-2">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Class</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="0010138357-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
184 ········</span><span·class="p"·data-group-id="7507443480-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Msg</span><span·class="p"·data-group-id="7507443480-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 ········</span><span·class="p"·data-group-id="0010138357-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Msg</span><span·class="p"·data-group-id="0010138357-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ············</span><span·class="p"·data-group-id="7507443480-4">[</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="7507443480-5">(</span><span·class="n">RR</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">data</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·d7f3a8e211a41ad6afec443380fffb3f631476c36c72cdcba29f9514a0b5b2ea·...·]-5">)</span><span·class="w">185 ············</span><span·class="p"·data-group-id="0010138357-4">[</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="0010138357-5">(</span><span·class="n">RR</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">data</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·240313c9a9b739a651c2b145d0c7312e88d4da34807eb6f9cc5fa75e281d16bf·...·]-5">)</span><span·class="w">
186 ·············</span><span·class="p">||</span><span·class="w">·</span><span·class="n">RR</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="7507443480-6">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">anlist</span><span·class="p"·data-group-id="7507443480-6">)</span><span·class="p">,</span><span·class="w">186 ·············</span><span·class="p">||</span><span·class="w">·</span><span·class="n">RR</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="0010138357-6">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">anlist</span><span·class="p"·data-group-id="0010138357-6">)</span><span·class="p">,</span><span·class="w">
187 ·················</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="7507443480-7">(</span><span·class="n">RR</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">type</span><span·class="p"·data-group-id="7507443480-7">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">187 ·················</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="0010138357-7">(</span><span·class="n">RR</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">type</span><span·class="p"·data-group-id="0010138357-7">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">
188 ·················</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="7507443480-8">(</span><span·class="n">RR</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">class</span><span·class="p"·data-group-id="7507443480-8">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·4f4b4ba57fb9fc75f36ff2ecf79fa05782a62c8e4b1c3a9e5cc0fd73f065af44·...·]-4">]</span><span·class="p">;</span><span·class="w">188 ·················</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="0010138357-8">(</span><span·class="n">RR</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">class</span><span·class="p"·data-group-id="0010138357-8">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·55608fee459290b7758e60b780d35a0d6d52bd18fdc087b631b831297c354004·...·]-4">]</span><span·class="p">;</span><span·class="w">
189 ········</span><span·class="p"·data-group-id="7507443480-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7507443480-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 ········</span><span·class="p"·data-group-id="0010138357-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="0010138357-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ············</span><span·class="p"·data-group-id="7507443480-10">[</span><span·class="p"·data-group-id="7507443480-10">]</span><span·class="w">190 ············</span><span·class="p"·data-group-id="0010138357-10">[</span><span·class="p"·data-group-id="0010138357-10">]</span><span·class="w">
191 ·····</span><span·class="k">end</span><span·class="p">.</span></code></pre>191 ·····</span><span·class="k">end</span><span·class="p">.</span></code></pre>
192 ····</section>192 ····</section>
  
193 </div>193 </div>
  
194 ··<section·id="summary"·class="details-list">194 ··<section·id="summary"·class="details-list">
195 ····<h1·class="section-heading">195 ····<h1·class="section-heading">
Offset 584, 65 lines modifiedOffset 584, 65 lines modified
584 ··········<pre·translate="no"><span·class="attribute">-type</span>·dns_msg()·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>584 ··········<pre·translate="no"><span·class="attribute">-type</span>·dns_msg()·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
585 ······</div>585 ······</div>
  
586 <p>A·DNS·message.</p><p>This·is·the·start·of·a·hierarchy·of·opaque·data·structures·that·can·be586 <p>A·DNS·message.</p><p>This·is·the·start·of·a·hierarchy·of·opaque·data·structures·that·can·be
587 examined·with·access·functions·in·<code·class="inline">inet_dns</code>,·which·return·lists·of587 examined·with·access·functions·in·<code·class="inline">inet_dns</code>,·which·return·lists·of
588 <code·class="inline">{Field,Value}</code>·tuples.·The·arity·2·functions·return·the·value588 <code·class="inline">{Field,Value}</code>·tuples.·The·arity·2·functions·return·the·value
589 for·a·specified·field.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">dns_msg</span><span·class="p"·data-group-id="1932063101-1">(</span><span·class="p"·data-group-id="1932063101-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsMsg</span><span·class="w">589 for·a·specified·field.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">dns_msg</span><span·class="p"·data-group-id="5668563700-1">(</span><span·class="p"·data-group-id="5668563700-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsMsg</span><span·class="w">
590 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="1932063101-2">(</span><span·class="n">DnsMsg</span><span·class="p"·data-group-id="1932063101-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">590 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="5668563700-2">(</span><span·class="n">DnsMsg</span><span·class="p"·data-group-id="5668563700-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
591 ········</span><span·class="p"·data-group-id="1932063101-3">[</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-4">{</span><span·class="ss">header</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="1932063101-5">[·...·truncated·by·diffoscope;·len:·102,·SHA:·2777aa5a8215f299411b8b1588de70d125ee40bd974c02e8e41ca7d4341e9fbc·...·]-4">}</span><span·class="w">591 ········</span><span·class="p"·data-group-id="5668563700-3">[</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-4">{</span><span·class="ss">header</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="5668563700-5">[·...·truncated·by·diffoscope;·len:·102,·SHA:·0c51489a87f9a444e0ea55aa408357f5ddea6f68fcd49cefe3a731bd768fc82c·...·]-4">}</span><span·class="w">
592 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-6">{</span><span·class="ss">qdlist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="1932063101-7">(</span><span·class="p"·data-group-id="1932063101-7">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·fb3a154e9ef7bf6d514ee2c64d357c861a7c0d1ecea289d303d36770a100083f·...·]-6">}</span><span·class="w">592 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-6">{</span><span·class="ss">qdlist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="5668563700-7">(</span><span·class="p"·data-group-id="5668563700-7">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·f014de6be1cf4d1c217f4b5a361de6204c6279eaf5409ea740afdaa461c9b832·...·]-6">}</span><span·class="w">
593 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-8">{</span><span·class="ss">anlist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="1932063101-9">(</span><span·class="p"·data-group-id="1932063101-9">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·86c8127c8a6e0c21f2b48245d7fe64d1a5c74db026eac5fcb1bd013fcf93968b·...·]-8">}</span><span·class="w">593 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-8">{</span><span·class="ss">anlist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="5668563700-9">(</span><span·class="p"·data-group-id="5668563700-9">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c9fdce11e7baf49a85b5dc520654ce462b4322a7c53c8cf77bd657af97bb02fe·...·]-8">}</span><span·class="w">
594 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-10">{</span><span·class="ss">nslist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="1932063101-11">(</span><span·class="p"·data-group-id="1932063101-11">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·fb3a154e9ef7bf6d514ee2c64d357c861a7c0d1ecea289d303d36770a100083f·...·]-10">}</span><span·class="w">594 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-10">{</span><span·class="ss">nslist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="5668563700-11">(</span><span·class="p"·data-group-id="5668563700-11">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·f014de6be1cf4d1c217f4b5a361de6204c6279eaf5409ea740afdaa461c9b832·...·]-10">}</span><span·class="w">
595 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-12">{</span><span·class="ss">arlist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="1932063101-13">(</span><span·class="p"·data-group-id="1932063101-13">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·9ba69d8c885c6a11e85bcf61809e68f522528dfc648e1a3ecf23a9b6660406e7·...·]-3">]</span><span·class="w">595 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-12">{</span><span·class="ss">arlist</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="5668563700-13">(</span><span·class="p"·data-group-id="5668563700-13">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·aee4dbd98311be24b52c0092040cd5f1f82d812b8f50fd5c7a34f6930602cbb5·...·]-3">]</span><span·class="w">
596 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="1932063101-14">(</span><span·class="n">DnsMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">header</span><span·class="p"·data-group-id="1932063101-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·133,·SHA:·3d02db88fa55ceafcecacbf7ad74eae4ac61a5df5ba8814d2ca9538271adfb70·...·]-15">)</span><span·class="w">·</span><span·class="c1">%·for·example</span><span·class="w">596 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="5668563700-14">(</span><span·class="n">DnsMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">header</span><span·class="p"·data-group-id="5668563700-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·133,·SHA:·62f18693f1e8542f4c6936783ce7b28121bf001b1f63ddde04f22d17bd47d402·...·]-15">)</span><span·class="w">·</span><span·class="c1">%·for·example</span><span·class="w">
597 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="1932063101-16">(</span><span·class="n">DnsMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="1932063101-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">597 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">msg</span><span·class="p"·data-group-id="5668563700-16">(</span><span·class="n">DnsMsg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="5668563700-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">
  
598 </span><span·class="nf">dns_header</span><span·class="p"·data-group-id="1932063101-17">(</span><span·class="p"·data-group-id="1932063101-17">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsHeader</span><span·class="w">598 </span><span·class="nf">dns_header</span><span·class="p"·data-group-id="5668563700-17">(</span><span·class="p"·data-group-id="5668563700-17">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsHeader</span><span·class="w">
599 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">header</span><span·class="p"·data-group-id="1932063101-18">(</span><span·class="n">DnsHeader</span><span·class="p"·data-group-id="1932063101-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">599 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">header</span><span·class="p"·data-group-id="5668563700-18">(</span><span·class="n">DnsHeader</span><span·class="p"·data-group-id="5668563700-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
600 ········</span><span·class="p"·data-group-id="1932063101-19">[</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-20">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1932063101-21">(</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·53b3a72f299d6e458dcc59f1217bd176223c836f744463df314de1ad61c36e93·...·]-20">}</span><span·class="w">600 ········</span><span·class="p"·data-group-id="5668563700-19">[</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-20">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5668563700-21">(</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·5aa72f9a73dbe282730ff4c343d9569cf3fe7c0fb55601121b2d9e002213f5b6·...·]-20">}</span><span·class="w">
601 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-22">{</span><span·class="ss">qr</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1932063101-23">(</span><span·class="p"·data-group-id="1932063101-23">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·86c8127c8a6e0c21f2b48245d7fe64d1a5c74db026eac5fcb1bd013fcf93968b·...·]-22">}</span><span·class="w">601 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-22">{</span><span·class="ss">qr</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5668563700-23">(</span><span·class="p"·data-group-id="5668563700-23">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c9fdce11e7baf49a85b5dc520654ce462b4322a7c53c8cf77bd657af97bb02fe·...·]-22">}</span><span·class="w">
602 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-24">{</span><span·class="ss">opcode</span><span·class="p">,</span><span·class="w">·</span><span·class="k">query</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">iquery</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·329,·SHA:·d677bf6d585ed4b5429d29fee36b1d7736945adab73a2001a4f8b354a76c950f·...·]-24">}</span><span·class="w">602 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-24">{</span><span·class="ss">opcode</span><span·class="p">,</span><span·class="w">·</span><span·class="k">query</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">iquery</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·329,·SHA:·30e0d8ca468652eb9adb25b57d21b2a695286f9cbf18d8688116c34a90f4dd01·...·]-24">}</span><span·class="w">
603 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-26">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1932063101-27">(</span><span·class="p"·data-group-id="1932063101-27">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·86c8127c8a6e0c21f2b48245d7fe64d1a5c74db026eac5fcb1bd013fcf93968b·...·]-26">}</span><span·class="w">603 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-26">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5668563700-27">(</span><span·class="p"·data-group-id="5668563700-27">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c9fdce11e7baf49a85b5dc520654ce462b4322a7c53c8cf77bd657af97bb02fe·...·]-26">}</span><span·class="w">
604 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-28">{</span><span·class="ss">tc</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1932063101-29">(</span><span·class="p"·data-group-id="1932063101-29">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·86c8127c8a6e0c21f2b48245d7fe64d1a5c74db026eac5fcb1bd013fcf93968b·...·]-28">}</span><span·class="w">604 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-28">{</span><span·class="ss">tc</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5668563700-29">(</span><span·class="p"·data-group-id="5668563700-29">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c9fdce11e7baf49a85b5dc520654ce462b4322a7c53c8cf77bd657af97bb02fe·...·]-28">}</span><span·class="w">
605 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-30">{</span><span·class="ss">rd</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1932063101-31">(</span><span·class="p"·data-group-id="1932063101-31">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·86c8127c8a6e0c21f2b48245d7fe64d1a5c74db026eac5fcb1bd013fcf93968b·...·]-30">}</span><span·class="w">605 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-30">{</span><span·class="ss">rd</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5668563700-31">(</span><span·class="p"·data-group-id="5668563700-31">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c9fdce11e7baf49a85b5dc520654ce462b4322a7c53c8cf77bd657af97bb02fe·...·]-30">}</span><span·class="w">
606 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-32">{</span><span·class="ss">ra</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1932063101-33">(</span><span·class="p"·data-group-id="1932063101-33">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·86c8127c8a6e0c21f2b48245d7fe64d1a5c74db026eac5fcb1bd013fcf93968b·...·]-32">}</span><span·class="w">606 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-32">{</span><span·class="ss">ra</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5668563700-33">(</span><span·class="p"·data-group-id="5668563700-33">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c9fdce11e7baf49a85b5dc520654ce462b4322a7c53c8cf77bd657af97bb02fe·...·]-32">}</span><span·class="w">
607 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-34">{</span><span·class="ss">pr</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1932063101-35">(</span><span·class="p"·data-group-id="1932063101-35">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·86c8127c8a6e0c21f2b48245d7fe64d1a5c74db026eac5fcb1bd013fcf93968b·...·]-34">}</span><span·class="w">607 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-34">{</span><span·class="ss">pr</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5668563700-35">(</span><span·class="p"·data-group-id="5668563700-35">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c9fdce11e7baf49a85b5dc520654ce462b4322a7c53c8cf77bd657af97bb02fe·...·]-34">}</span><span·class="w">
608 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-36">{</span><span·class="ss">rcode</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1932063101-37">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·201,·SHA:·b394657bd81b0ec1031f500fee8abc75081db959042e95597317c36b490ffef3·...·]-19">]</span><span·class="w">608 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-36">{</span><span·class="ss">rcode</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5668563700-37">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·201,·SHA:·29bcfbcf8a4c8501817bfe4f3f6978c31c8350b9297b32ecb2a9cbd148537be2·...·]-19">]</span><span·class="w">
609 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">header</span><span·class="p"·data-group-id="1932063101-38">(</span><span·class="n">DnsHeader</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="1932063101-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">609 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">header</span><span·class="p"·data-group-id="5668563700-38">(</span><span·class="n">DnsHeader</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="5668563700-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">
  
610 </span><span·class="nf">query_type</span><span·class="p"·data-group-id="1932063101-39">(</span><span·class="p"·data-group-id="1932063101-39">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">axfr</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·424,·SHA:·d3f2901840f41a9067c98e46573b2107d479cf1846db4c2339ea6b163d7845b9·...·]-40">)</span><span·class="w">610 </span><span·class="nf">query_type</span><span·class="p"·data-group-id="5668563700-39">(</span><span·class="p"·data-group-id="5668563700-39">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">axfr</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·424,·SHA:·faf67ccba525251ba3f028ea81907fe9d7b52ed3cff8db943fb5511d314831ae·...·]-40">)</span><span·class="w">
  
611 </span><span·class="nf">dns_query</span><span·class="p"·data-group-id="1932063101-41">(</span><span·class="p"·data-group-id="1932063101-41">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsQuery</span><span·class="w">611 </span><span·class="nf">dns_query</span><span·class="p"·data-group-id="5668563700-41">(</span><span·class="p"·data-group-id="5668563700-41">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsQuery</span><span·class="w">
612 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="1932063101-42">(</span><span·class="n">DnsQuery</span><span·class="p"·data-group-id="1932063101-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">612 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="5668563700-42">(</span><span·class="n">DnsQuery</span><span·class="p"·data-group-id="5668563700-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
613 ········</span><span·class="p"·data-group-id="1932063101-43">[</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-44">{</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_name</span><span·class="p"·data-group-id="1932063101-45"[·...·truncated·by·diffoscope;·len:·104,·SHA:·d25a206e738aaad51f47ee17523605e864db5d436c6d13812c9aa52789a1f044·...·]-44">}</span><span·class="w">613 ········</span><span·class="p"·data-group-id="5668563700-43">[</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-44">{</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_name</span><span·class="p"·data-group-id="5668563700-45"[·...·truncated·by·diffoscope;·len:·104,·SHA:·0b963bb91c085d4f3159b85b2e1f4f91993588e4e0748a4efd613143a33699e8·...·]-44">}</span><span·class="w">
614 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-46">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">query_type</span><span·class="p"·data-group-id="1932063101-47">(</span><span·class="p"·data-group-id="1932063101-47">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·192d3537e5b3a23489c09e56f6f50de4370095f0c075b89e4feb67a29cd4c4c3·...·]-46">}</span><span·class="w">614 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-46">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">query_type</span><span·class="p"·data-group-id="5668563700-47">(</span><span·class="p"·data-group-id="5668563700-47">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·80578dc497e8859d7019aea6d7111e47483edfe9b53ccbfcceef1dc8e1385ee9·...·]-46">}</span><span·class="w">
615 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-48">{</span><span·class="ss">class</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_class</span><span·class="p"·data-group-id="1932063101-49">(</span><span·class="p"·data-group-id="1932063101-49">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·104,·SHA:·f20a2bb8617b65baf8b4784d28f97f11bbb0ff6062b4957e7825d1e8f977d280·...·]-43">]</span><span·class="w">615 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-48">{</span><span·class="ss">class</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_class</span><span·class="p"·data-group-id="5668563700-49">(</span><span·class="p"·data-group-id="5668563700-49">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·104,·SHA:·a0ece5d8163794360440b85a0c189ebdaf56b9677ba8a57e70dd2090c57c182a·...·]-43">]</span><span·class="w">
616 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="1932063101-50">(</span><span·class="n">DnsQuery</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="1932063101-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">616 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="5668563700-50">(</span><span·class="n">DnsQuery</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="5668563700-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Value</span><span·class="w">
  
617 </span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="1932063101-51">(</span><span·class="p"·data-group-id="1932063101-51">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsRr</span><span·class="w">617 </span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="5668563700-51">(</span><span·class="p"·data-group-id="5668563700-51">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">DnsRr</span><span·class="w">
618 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="1932063101-52">(</span><span·class="n">DnsRr</span><span·class="p"·data-group-id="1932063101-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">DnsRrFields</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">DnsRrOptFields</span><span·class="w">618 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="5668563700-52">(</span><span·class="n">DnsRr</span><span·class="p"·data-group-id="5668563700-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">DnsRrFields</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">DnsRrOptFields</span><span·class="w">
619 ····</span><span·class="n">DnsRrFields</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-53">[</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-54">{</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_name</span><span·class="p"·data-group-id="1932063101-55"[·...·truncated·by·diffoscope;·len:·104,·SHA:·141451ecdf0196f066e9615cb8efa842ca5266feca675a92e7bcdb3fd6c70748·...·]-54">}</span><span·class="w">619 ····</span><span·class="n">DnsRrFields</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-53">[</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-54">{</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_name</span><span·class="p"·data-group-id="5668563700-55"[·...·truncated·by·diffoscope;·len:·104,·SHA:·68d487ae7957cf3364d0d0f36aba061ba5290df5105b26941b31937c7bb0e70f·...·]-54">}</span><span·class="w">
620 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-56">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr_type</span><span·class="p"·data-group-id="1932063101-57">(</span><span·class="p"·data-group-id="1932063101-57">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·8f35070d10becf6a0700094198f6da980b80f9c12463072fded8baa3a8fa6b03·...·]-56">}</span><span·class="w">620 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-56">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_rr_type</span><span·class="p"·data-group-id="5668563700-57">(</span><span·class="p"·data-group-id="5668563700-57">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·59ae13f4ecfeccc18f7382f1fa35d3313d86cf472d598061a57da8a04a5a205d·...·]-56">}</span><span·class="w">
621 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-58">{</span><span·class="ss">class</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_class</span><span·class="p"·data-group-id="1932063101-59">(</span><span·class="p"·data-group-id="1932063101-59">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·192d3537e5b3a23489c09e56f6f50de4370095f0c075b89e4feb67a29cd4c4c3·...·]-58">}</span><span·class="w">621 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-58">{</span><span·class="ss">class</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_class</span><span·class="p"·data-group-id="5668563700-59">(</span><span·class="p"·data-group-id="5668563700-59">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·80578dc497e8859d7019aea6d7111e47483edfe9b53ccbfcceef1dc8e1385ee9·...·]-58">}</span><span·class="w">
622 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-60">{</span><span·class="ss">ttl</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1932063101-61">(</span><span·class="p"·data-group-id="1932063101-61">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1db3a08b825955a514cce97d4da07b828bf1e203e9bc5becd972ca47720af8de·...·]-60">}</span><span·class="w">622 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-60">{</span><span·class="ss">ttl</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5668563700-61">(</span><span·class="p"·data-group-id="5668563700-61">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·497bc63c0353fca2afc40acee97cde3da6b9224a49e43023a0a3576f9acbf752·...·]-60">}</span><span·class="w">
623 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-62">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_data</span><span·class="p"·data-group-id="1932063101-63">(</span><span·class="p"·data-group-id="1932063101-63">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·0ffb3e0ec886da8f22f4c606ce2f9a63738707ccb0f77f9dadc1ad0f0056dad0·...·]-53">]</span><span·class="w">623 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-62">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_data</span><span·class="p"·data-group-id="5668563700-63">(</span><span·class="p"·data-group-id="5668563700-63">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·da2c871c60ddd95ce58831fd0d2044f8f589084f0a330df1a3dc2d8c4d332a1c·...·]-53">]</span><span·class="w">
624 ····</span><span·class="n">DnsRrOptFields</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-64">[</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-65">{</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_name</span><span·class="p"·data-group-id="1932063101-66"[·...·truncated·by·diffoscope;·len:·104,·SHA:·bb9ca67ea0042c132198c38d4a99267f582cf0c28da164bd20b9ffb7870ff20f·...·]-65">}</span><span·class="w">624 ····</span><span·class="n">DnsRrOptFields</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-64">[</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-65">{</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_name</span><span·class="p"·data-group-id="5668563700-66"[·...·truncated·by·diffoscope;·len:·104,·SHA:·539d9e1d42398abd9c9ef669d3611515cb55f4c2c4060e5286daf8aa8f0aa1e3·...·]-65">}</span><span·class="w">
625 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-67">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">opt</span><span·class="p"·data-group-id="1932063101-67">}</span><span·class="w">625 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-67">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">opt</span><span·class="p"·data-group-id="5668563700-67">}</span><span·class="w">
626 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-68">{</span><span·class="ss">udp_payload_size</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1932063101-69">(</span><span·class="p"·data-group-id="1932063101-69">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·378d0787d8b92d6c7f0a973a64b0fc6f3c25ad97a9b38de92d0c37b03280a628·...·]-68">}</span><span·class="w">626 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-68">{</span><span·class="ss">udp_payload_size</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5668563700-69">(</span><span·class="p"·data-group-id="5668563700-69">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·a1985a9b518b2cd31cdbe1cca5167a422acd1d446513e0ec8419e9fed4f67738·...·]-68">}</span><span·class="w">
627 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-70">{</span><span·class="ss">ext_rcode</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1932063101-71">(</span><span·class="p"·data-group-id="1932063101-71">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·4b5da8d777e611c9576702a7cfeb89853d9a0047c801f135e566a6e86ff782c0·...·]-70">}</span><span·class="w">627 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-70">{</span><span·class="ss">ext_rcode</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5668563700-71">(</span><span·class="p"·data-group-id="5668563700-71">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·7753ad4c7f2a54368d5ff541babcb5932bb1b5872b782aa25686ba9ce0c9a47a·...·]-70">}</span><span·class="w">
628 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-72">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1932063101-73">(</span><span·class="p"·data-group-id="1932063101-73">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·192d3537e5b3a23489c09e56f6f50de4370095f0c075b89e4feb67a29cd4c4c3·...·]-72">}</span><span·class="w">628 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-72">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5668563700-73">(</span><span·class="p"·data-group-id="5668563700-73">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·80578dc497e8859d7019aea6d7111e47483edfe9b53ccbfcceef1dc8e1385ee9·...·]-72">}</span><span·class="w">
629 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-74">{</span><span·class="ss">z</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="1932063101-75">(</span><span·class="p"·data-group-id="1932063101-75">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·745a09c19eca6468d0e3cc63067cb26155a6a12c61e286348b68847fb6a0e942·...·]-74">}</span><span·class="w">629 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-74">{</span><span·class="ss">z</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="5668563700-75">(</span><span·class="p"·data-group-id="5668563700-75">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·996f51bd670f71652bf8618456176ae54fd5a7e529987a87967f6466147cdf7c·...·]-74">}</span><span·class="w">
630 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1932063101-76">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_data</span><span·class="p"·data-group-id="1932063101-77">(</span><span·class="p"·data-group-id="1932063101-77">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·b0eb22c54befcb9b09102b98f702e35c057bb1e732957497f267b620480b8f9b·...·]-64">]</span><span·class="w">630 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5668563700-76">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">dns_data</span><span·class="p"·data-group-id="5668563700-77">(</span><span·class="p"·data-group-id="5668563700-77">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·e86a4c62a0d60b0eebe5f8bd6e10e9fdbaf5c807fa8bfce6b650a0ae505b51c6·...·]-64">]</span><span·class="w">
631 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="1932063101-78">(</span><span·class="n">DnsRr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="1932063101-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·472,·SHA:·c21dc64583a92c14175f496998a6050aec949f3e1b7da7e5da029fcf2e56d76d·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">msg</span><span·class="p">;</span><span·class="w">631 ····</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="5668563700-78">(</span><span·class="n">DnsRr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Field</span><span·class="p"·data-group-id="5668563700-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·472,·SHA:·9e213dc5121086529e948d1f5eb4ea25cf0875cfd11053189b9e8ceed14770dd·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">msg</span><span·class="p">;</span><span·class="w">
632 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="7745231471-3">(</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="7745231471-4">(</span><span·class="p"·data-group-id="7745231471-4">)</span><span·class="p"·data-group-id="7745231471-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">header</span><span·class="p">;</span><span·class="w">632 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="9096438045-3">(</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="9096438045-4">(</span><span·class="p"·data-group-id="9096438045-4">)</span><span·class="p"·data-group-id="9096438045-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">header</span><span·class="p">;</span><span·class="w">
633 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="7745231471-5">(</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="7745231471-6">(</span><span·class="p"·data-group-id="7745231471-6">)</span><span·class="p"·data-group-id="7745231471-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">dns_query</span><span·class="p">;</span><span·class="w">633 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="9096438045-5">(</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="9096438045-6">(</span><span·class="p"·data-group-id="9096438045-6">)</span><span·class="p"·data-group-id="9096438045-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">dns_query</span><span·class="p">;</span><span·class="w">
634 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="7745231471-7">(</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="7745231471-8">(</span><span·class="p"·data-group-id="7745231471-8">)</span><span·class="p"·data-group-id="7745231471-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">rr</span><span·class="p">;</span><span·class="w">634 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="9096438045-7">(</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="9096438045-8">(</span><span·class="p"·data-group-id="9096438045-8">)</span><span·class="p"·data-group-id="9096438045-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">rr</span><span·class="p">;</span><span·class="w">
635 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="7745231471-9">(</span><span·class="p">_</span><span·class="p"·data-group-id="7745231471-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">.</span></code></pre><p>So,·<code·class="inline">inet_dns:(inet_dns:record_type(X))(X)</code>·converts·any·of·these·data635 </span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">record_type</span><span·class="p"·data-group-id="9096438045-9">(</span><span·class="p">_</span><span·class="p"·data-group-id="9096438045-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">.</span></code></pre><p>So,·<code·class="inline">inet_dns:(inet_dns:record_type(X))(X)</code>·converts·any·of·these·data
636 structures·into·a·<code·class="inline">{Field,Value}</code>·list.</p>636 structures·into·a·<code·class="inline">{Field,Value}</code>·list.</p>
637 ··</section>637 ··</section>
638 </section>638 </section>
639 <section·class="detail"·id="t:dns_name/0">639 <section·class="detail"·id="t:dns_name/0">
  
640 ··<div·class="detail-header">640 ··<div·class="detail-header">
641 ····<a·href="#t:dns_name/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">641 ····<a·href="#t:dns_name/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
1.34 MB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/kernel.epub
8.16 KB
zipinfo {}
Max HTML report size reached
312 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:46:52,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:03:28,·uncompressed·size·20,·method=store
40.8 KB
OEBPS/trace.xhtml
Max HTML report size reached
141 KB
OEBPS/socket_usage.xhtml
Max HTML report size reached
32.2 KB
OEBPS/socket.xhtml
Max HTML report size reached
50.0 KB
OEBPS/seq_trace.xhtml
Max HTML report size reached
5.01 KB
OEBPS/rpc.xhtml
    
Offset 922, 18 lines modifiedOffset 922, 18 lines modified
922 all·the·nodes,·but·the·multicall·is·faster,·as·all·the·requests·are·sent·at·the922 all·the·nodes,·but·the·multicall·is·faster,·as·all·the·requests·are·sent·at·the
923 same·time·and·are·collected·one·by·one·as·they·come·back.</p><p>The·function·evaluates·<a·href="../../../../lib/../erts/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·Args)</code></a>·on·the923 same·time·and·are·collected·one·by·one·as·they·come·back.</p><p>The·function·evaluates·<a·href="../../../../lib/../erts/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·Args)</code></a>·on·the
924 specified·nodes·and·collects·the·answers.·It·returns·<code·class="inline">{ResL,·BadNodes}</code>,·where924 specified·nodes·and·collects·the·answers.·It·returns·<code·class="inline">{ResL,·BadNodes}</code>,·where
925 <code·class="inline">BadNodes</code>·is·a·list·of·the·nodes·that·do·not·exist,·and·<code·class="inline">ResL</code>·is·a·list·of·the925 <code·class="inline">BadNodes</code>·is·a·list·of·the·nodes·that·do·not·exist,·and·<code·class="inline">ResL</code>·is·a·list·of·the
926 return·values,·or·<code·class="inline">{badrpc,·Reason}</code>·for·failing·calls.·<code·class="inline">Timeout</code>·is·a·time926 return·values,·or·<code·class="inline">{badrpc,·Reason}</code>·for·failing·calls.·<code·class="inline">Timeout</code>·is·a·time
927 (integer)·in·milliseconds,·or·<code·class="inline">infinity</code>.</p><p>The·following·example·is·useful·when·new·object·code·is·to·be·loaded·on·all927 (integer)·in·milliseconds,·or·<code·class="inline">infinity</code>.</p><p>The·following·example·is·useful·when·new·object·code·is·to·be·loaded·on·all
928 nodes·in·the·network,·and·indicates·some·side·effects·that·RPCs·can·produce:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·Find·object·code·for·module·Mod</samp><samp·class="w">928 nodes·in·the·network,·and·indicates·some·side·effects·that·RPCs·can·produce:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·Find·object·code·for·module·Mod</samp><samp·class="w">
929 </samp><samp·class="p"·data-group-id="7201003061-1">{</samp><samp·class="n">Mod</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Bin</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">File</samp><samp·class="p"·data-group-id="7201003061-1">}</samp><samp·[·...·truncated·by·diffoscope;·len:·277,·SHA:·1ed72cbd668df49ba2e4d274fde16ba06390237ed0cee9eb9eef89e45ef621ea·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">929 </samp><samp·class="p"·data-group-id="4504003749-1">{</samp><samp·class="n">Mod</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Bin</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">File</samp><samp·class="p"·data-group-id="4504003749-1">}</samp><samp·[·...·truncated·by·diffoscope;·len:·277,·SHA:·298a0284fdcb5647db65b95162a09c488ca461bc8ff72a9a8ef611695b0b4a31·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">
  
930 </samp><samp·class="c1">%%·and·load·it·on·all·nodes·including·this·one</samp><samp·class="w">930 </samp><samp·class="c1">%%·and·load·it·on·all·nodes·including·this·one</samp><samp·class="w">
931 </samp><samp·class="p"·data-group-id="7201003061-3">{</samp><samp·class="n">ResL</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="7201003061-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·e57490922af63099d20ea97fa12305b19fb45cc51dcea3d93c9ad2bf6282c08c·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">931 </samp><samp·class="p"·data-group-id="4504003749-3">{</samp><samp·class="n">ResL</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="4504003749-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·89989c8f31420e45ad84bbb68fbd263a5336cad22b716e3bef47af0476dda8cf·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">
  
932 </samp><samp·class="c1">%%·and·then·maybe·check·the·ResL·list.</samp></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·want·the·ability·to·distinguish·between·results,·you·may·want·to932 </samp><samp·class="c1">%%·and·then·maybe·check·the·ResL·list.</samp></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·want·the·ability·to·distinguish·between·results,·you·may·want·to
933 consider·using·the·<a·href="erpc.xhtml#multicall/4"><code·class="inline">erpc:multicall()</code></a>·function·from·the933 consider·using·the·<a·href="erpc.xhtml#multicall/4"><code·class="inline">erpc:multicall()</code></a>·function·from·the
934 <code·class="inline">erpc</code>·module·instead.</p></section><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the934 <code·class="inline">erpc</code>·module·instead.</p></section><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the
935 <code·class="inline">apply()</code>.·It·may·be·the·calling·process·itself,·an·<code·class="inline">rpc</code>·server,·another935 <code·class="inline">apply()</code>.·It·may·be·the·calling·process·itself,·an·<code·class="inline">rpc</code>·server,·another
936 server,·or·a·freshly·spawned·process.</p></section>936 server,·or·a·freshly·spawned·process.</p></section>
937 ··</section>937 ··</section>
3.17 KB
OEBPS/pg.xhtml
    
Offset 715, 15 lines modifiedOffset 715, 15 lines modified
  
715 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor_scope(Scope·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../lib/../erts/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../lib/../erts/doc/html/erlang.html#t:pid/0">pid</a>()]}}.</pre>715 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor_scope(Scope·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../lib/../erts/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../lib/../erts/doc/html/erlang.html#t:pid/0">pid</a>()]}}.</pre>
  
716 ······</div>716 ······</div>
  
717 <p>Subscribes·the·caller·to·updates·from·the·specified·scope.</p><p>Returns·content·of·the·entire·scope·and·a·reference·to·match·the·upcoming717 <p>Subscribes·the·caller·to·updates·from·the·specified·scope.</p><p>Returns·content·of·the·entire·scope·and·a·reference·to·match·the·upcoming
718 notifications.</p><p>Whenever·any·group·membership·changes,·an·update·message·is·sent·to·the718 notifications.</p><p>Whenever·any·group·membership·changes,·an·update·message·is·sent·to·the
719 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="1879681323-1">{</samp><samp·class="n">Ref</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">join</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Group</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·cl[·...·truncated·by·diffoscope;·len:·781,·SHA:·6963eef472636e99414a7550c80bdf588418062c3f41492a3287e01886e09811·...·]-1">}</samp></code></pre>719 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="0346527234-1">{</samp><samp·class="n">Ref</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">join</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Group</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·cl[·...·truncated·by·diffoscope;·len:·781,·SHA:·22565d4f6bc34e80aadbe13b311398757b0bbb26bedc59ba509a591832c03a38·...·]-1">}</samp></code></pre>
720 ··</section>720 ··</section>
721 </section>721 </section>
722 <section·class="detail"·id="start/1">722 <section·class="detail"·id="start/1">
  
723 ··<div·class="detail-header">723 ··<div·class="detail-header">
724 ····<a·href="#start/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">724 ····<a·href="#start/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
725 ······<i·class="ri-link-m"·aria-hidden="true"></i>725 ······<i·class="ri-link-m"·aria-hidden="true"></i>
22.9 KB
OEBPS/os.xhtml
Max HTML report size reached
7.16 KB
OEBPS/notes.xhtml
Max HTML report size reached
26.0 KB
OEBPS/net_kernel.xhtml
Max HTML report size reached
3.0 KB
OEBPS/net_adm.xhtml
    
Offset 354, 16 lines modifiedOffset 354, 16 lines modified
354 ···················Name·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:string/0">string</a>(),354 ···················Name·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:string/0">string</a>(),
355 ···················Port·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),355 ···················Port·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),
356 ···················Reason·::·address·|·<a·href="file.xhtml#t:posix/0">file:posix</a>().</pre>356 ···················Reason·::·address·|·<a·href="file.xhtml#t:posix/0">file:posix</a>().</pre>
  
357 ······</div>357 ······</div>
  
358 <p>Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>358 <p>Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>
359 registered·at·the·specified·host.</p><p>Similar·to·<code·class="inline">epmd·-names</code>,·see·<a·href="../../../../lib/../erts/doc/html/epmd_cmd.xhtml"><code·class="inline">erts:epmd</code></a>.</p><p>Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not·operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">(arne@dunn)1&gt;·</samp><samp·class="nc">net_adm</samp><samp·class="p">:</samp><samp·class="nf">names</samp><samp·class="p"·data-group-id="9439276708-1">(</samp><samp·class="p"·data-group-id="9439276708-1">)</samp><samp·class="p">.</samp><samp·class="w">359 registered·at·the·specified·host.</p><p>Similar·to·<code·class="inline">epmd·-names</code>,·see·<a·href="../../../../lib/../erts/doc/html/epmd_cmd.xhtml"><code·class="inline">erts:epmd</code></a>.</p><p>Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not·operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">(arne@dunn)1&gt;·</samp><samp·class="nc">net_adm</samp><samp·class="p">:</samp><samp·class="nf">names</samp><samp·class="p"·data-group-id="7374379031-1">(</samp><samp·class="p"·data-group-id="7374379031-1">)</samp><samp·class="p">.</samp><samp·class="w">
360 </samp><samp·class="p"·data-group-id="9439276708-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9439276708-3">[</samp><samp·class="p"·data-group-id="9439276708-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·077233b39271c465c1c138e17c7256703c965bbf7f7417524e6cd7a1e04703c1·...·]-2">}</samp></code></pre>360 </samp><samp·class="p"·data-group-id="7374379031-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7374379031-3">[</samp><samp·class="p"·data-group-id="7374379031-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·1c430b59c3ef59d0274a15ec7536d864d1bc87d8ec2dd0a9ff25f3f5ea7a3bd2·...·]-2">}</samp></code></pre>
361 ··</section>361 ··</section>
362 </section>362 </section>
363 <section·class="detail"·id="ping/1">363 <section·class="detail"·id="ping/1">
  
364 ··<div·class="detail-header">364 ··<div·class="detail-header">
365 ····<a·href="#ping/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">365 ····<a·href="#ping/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
366 ······<i·class="ri-link-m"·aria-hidden="true"></i>366 ······<i·class="ri-link-m"·aria-hidden="true"></i>
4.81 KB
OEBPS/net.xhtml
    
Offset 437, 21 lines modifiedOffset 437, 21 lines modified
  
437 ··········<pre·translate="no"><span·class="attribute">-type</span>·ifaddrs_filter_fun()·::·fun((<a·href="#t:ifaddrs/0">ifaddrs</a>())·->·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>437 ··········<pre·translate="no"><span·class="attribute">-type</span>·ifaddrs_filter_fun()·::·fun((<a·href="#t:ifaddrs/0">ifaddrs</a>())·->·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>
  
438 ······</div>438 ······</div>
  
439 <p>Interface·address·filtering·selector·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:function/0"><code·class="inline">function/0</code></a>.</p><p>For·each·<code·class="inline">ifaddrs</code>·entry,·return·either·<code·class="inline">true</code>·to·keep·the·entry439 <p>Interface·address·filtering·selector·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:function/0"><code·class="inline">function/0</code></a>.</p><p>For·each·<code·class="inline">ifaddrs</code>·entry,·return·either·<code·class="inline">true</code>·to·keep·the·entry
440 or·<code·class="inline">false</code>·to·discard·the·entry.</p><p>For·example,·to·get·an·interface·list·which·only·contains440 or·<code·class="inline">false</code>·to·discard·the·entry.</p><p>For·example,·to·get·an·interface·list·which·only·contains
441 non-<code·class="inline">loopback</code>·<code·class="inline">inet</code>·interfaces:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">net</samp><samp·class="p">:</samp><samp·class="nf">getifaddrs</samp><samp·class="p"·data-group-id="6582252340-1">(</samp><samp·class="w">441 non-<code·class="inline">loopback</code>·<code·class="inline">inet</code>·interfaces:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">net</samp><samp·class="p">:</samp><samp·class="nf">getifaddrs</samp><samp·class="p"·data-group-id="7520792792-1">(</samp><samp·class="w">
442 ····</samp><samp·class="nf">fun</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6582252340-2">(</samp><samp·class="p"·data-group-id="6582252340-3">#{</samp><samp·class="w">·</samp><samp·class="ss">addr</samp><samp·class="w">··</samp><samp·class="p">:=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6582252340-4">#{</samp>[·...·truncated·by·diffoscope;·len:·172,·SHA:·b33b073c5dab49c921d6e678a2974fbf272fd3408611dcfe2cb26db259cc95b6·...·]-4">}</samp><samp·class="p">,</samp><samp·class="w">442 ····</samp><samp·class="nf">fun</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7520792792-2">(</samp><samp·class="p"·data-group-id="7520792792-3">#{</samp><samp·class="w">·</samp><samp·class="ss">addr</samp><samp·class="w">··</samp><samp·class="p">:=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7520792792-4">#{</samp>[·...·truncated·by·diffoscope;·len:·172,·SHA:·b88549401921074303ee9ac5c5d953ac2973485865feef4c6a8d44204cae02ba·...·]-4">}</samp><samp·class="p">,</samp><samp·class="w">
443 ············</samp><samp·class="ss">flags</samp><samp·class="w">·</samp><samp·class="p">:=</samp><samp·class="w">·</samp><samp·class="n">Flags</samp><samp·class="p"·data-group-id="6582252340-3">}</samp><samp·class="p"·data-group-id="6582252340-2">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">443 ············</samp><samp·class="ss">flags</samp><samp·class="w">·</samp><samp·class="p">:=</samp><samp·class="w">·</samp><samp·class="n">Flags</samp><samp·class="p"·data-group-id="7520792792-3">}</samp><samp·class="p"·data-group-id="7520792792-2">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
444 ··········</samp><samp·class="ow">not</samp><samp·class="w">·</samp><samp·class="nc">lists</samp><samp·class="p">:</samp><samp·class="nf">member</samp><samp·class="p"·data-group-id="6582252340-5">(</samp><samp·class="ss">loopback</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Flags</samp><samp·class="p"·data-group-id="6582252340-5">)</samp><samp·class="p">;</samp><samp·class="w">444 ··········</samp><samp·class="ow">not</samp><samp·class="w">·</samp><samp·class="nc">lists</samp><samp·class="p">:</samp><samp·class="nf">member</samp><samp·class="p"·data-group-id="7520792792-5">(</samp><samp·class="ss">loopback</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Flags</samp><samp·class="p"·data-group-id="7520792792-5">)</samp><samp·class="p">;</samp><samp·class="w">
445 ········</samp><samp·class="p"·data-group-id="6582252340-6">(</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="6582252340-6">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">445 ········</samp><samp·class="p"·data-group-id="7520792792-6">(</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="7520792792-6">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
446 ··········</samp><samp·class="ss">false</samp><samp·class="w">446 ··········</samp><samp·class="ss">false</samp><samp·class="w">
447 ····</samp><samp·class="k">end</samp><samp·class="p"·data-group-id="6582252340-1">)</samp><samp·class="p">.</samp></code></pre>447 ····</samp><samp·class="k">end</samp><samp·class="p"·data-group-id="7520792792-1">)</samp><samp·class="p">.</samp></code></pre>
448 ··</section>448 ··</section>
449 </section>449 </section>
450 <section·class="detail"·id="t:ifaddrs_filter_map/0">450 <section·class="detail"·id="t:ifaddrs_filter_map/0">
  
451 ··<div·class="detail-header">451 ··<div·class="detail-header">
452 ····<a·href="#t:ifaddrs_filter_map/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">452 ····<a·href="#t:ifaddrs_filter_map/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
453 ······<i·class="ri-link-m"·aria-hidden="true"></i>453 ······<i·class="ri-link-m"·aria-hidden="true"></i>
4.42 KB
OEBPS/logger_std_h.xhtml
    
Offset 76, 17 lines modifiedOffset 76, 17 lines modified
76 but·only·performs·a·new·sync·if·something·has·actually·been·logged.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·file·sync·operation·is·disabled,76 but·only·performs·a·new·sync·if·something·has·actually·been·logged.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·file·sync·operation·is·disabled,
77 and·it·is·the·operating·system·settings·that·determine·how·quickly·or·slowly77 and·it·is·the·operating·system·settings·that·determine·how·quickly·or·slowly
78 data·is·written·to·disk.·The·user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to78 data·is·written·to·disk.·The·user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to
79 perform·a·file·sync.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload79 perform·a·file·sync.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload
80 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler80 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler
81 and·the·disk_log·handler,·and·are·documented·in·the81 and·the·disk_log·handler,·and·are·documented·in·the
82 <a·href="logger_chapter.xhtml#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·if·changing·the·configuration·of·the·handler·in·runtime,·the·<code·class="inline">type</code>,82 <a·href="logger_chapter.xhtml#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·if·changing·the·configuration·of·the·handler·in·runtime,·the·<code·class="inline">type</code>,
83 <code·class="inline">file</code>,·or·<code·class="inline">modes</code>·parameters·must·not·be·modified.</p><p>Example·of·adding·a·standard·handler:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">logger</samp><samp·class="p">:</samp><samp·class="nf">add_handler</samp><samp·class="p"·data-group-id="9200685327-1">(</samp><samp·class="ss">my_standard_h</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">logger_std_h</samp><samp·class="p">,</samp><samp·class="w">83 <code·class="inline">file</code>,·or·<code·class="inline">modes</code>·parameters·must·not·be·modified.</p><p>Example·of·adding·a·standard·handler:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">logger</samp><samp·class="p">:</samp><samp·class="nf">add_handler</samp><samp·class="p"·data-group-id="3137614766-1">(</samp><samp·class="ss">my_standard_h</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">logger_std_h</samp><samp·class="p">,</samp><samp·class="w">
84 ···················</samp><samp·class="p"·data-group-id="9200685327-2">#{</samp><samp·class="ss">config</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9200685327-3">#{</samp><samp·class="ss">file</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="s">&quot;./system_info.log&quot;</samp><samp·class="p">,</samp><samp·class="w">84 ···················</samp><samp·class="p"·data-group-id="3137614766-2">#{</samp><samp·class="ss">config</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3137614766-3">#{</samp><samp·class="ss">file</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="s">&quot;./system_info.log&quot;</samp><samp·class="p">,</samp><samp·class="w">
85 ·································</samp><samp·class="ss">filesync_repeat_interval</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">1000</samp><samp·class="p"·data-group-id="9200685327-3">}</samp><samp·class="p"·data-group-id="9200685327-2">}</samp><samp·class="p"·data-group-id="9200685327-1">)</samp><samp·class="p">.</samp></code></pre><p>To·set·the·default·handler,·that·starts·initially·with·the·Kernel·application,85 ·································</samp><samp·class="ss">filesync_repeat_interval</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">1000</samp><samp·class="p"·data-group-id="3137614766-3">}</samp><samp·class="p"·data-group-id="3137614766-2">}</samp><samp·class="p"·data-group-id="3137614766-1">)</samp><samp·class="p">.</samp></code></pre><p>To·set·the·default·handler,·that·starts·initially·with·the·Kernel·application,
86 to·log·to·file·instead·of·<a·href="../../../../lib/stdlib/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>,·change·the86 to·log·to·file·instead·of·<a·href="../../../../lib/stdlib/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>,·change·the
87 Kernel·default·logger·configuration.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_std_h,87 Kernel·default·logger·configuration.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_std_h,
88 ······················#{config·=&gt;·#{file·=&gt;·&quot;./log.log&quot;}}}]'</code></pre><p>An·example·of·how·to·replace·the·standard·handler·with·a·disk_log·handler·at88 ······················#{config·=&gt;·#{file·=&gt;·&quot;./log.log&quot;}}}]'</code></pre><p>An·example·of·how·to·replace·the·standard·handler·with·a·disk_log·handler·at
89 startup·is·found·in·the·<a·href="logger_disk_log_h.xhtml"><code·class="inline">logger_disk_log_h</code></a>·manual.</p><h2·id="module-see-also"·class="section-heading">89 startup·is·found·in·the·<a·href="logger_disk_log_h.xhtml"><code·class="inline">logger_disk_log_h</code></a>·manual.</p><h2·id="module-see-also"·class="section-heading">
90 ··<a·href="#module-see-also"·class="hover-link">90 ··<a·href="#module-see-also"·class="hover-link">
91 ····<i·class="ri-link-m"·aria-hidden="true"></i>91 ····<i·class="ri-link-m"·aria-hidden="true"></i>
92 ··</a>92 ··</a>
15.5 KB
OEBPS/logger_filters.xhtml
Max HTML report size reached
4.69 KB
OEBPS/logger_disk_log_h.xhtml
    
Offset 55, 20 lines modifiedOffset 55, 20 lines modified
55 sync·if·something·has·actually·been·logged.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·sync·operation·is·disabled.·The55 sync·if·something·has·actually·been·logged.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·sync·operation·is·disabled.·The
56 user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to·perform·a56 user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to·perform·a
57 disk_log·sync.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload57 disk_log·sync.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload
58 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler58 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler
59 and·the·disk_log·handler,·and·are·documented·in·the59 and·the·disk_log·handler,·and·are·documented·in·the
60 <a·href="logger_chapter.xhtml#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·when·changing·the·configuration·of·the·handler·in·runtime,·the60 <a·href="logger_chapter.xhtml#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·when·changing·the·configuration·of·the·handler·in·runtime,·the
61 disk_log·options·(<code·class="inline">file</code>,·<code·class="inline">type</code>,·<code·class="inline">max_no_files</code>,·<code·class="inline">max_no_bytes</code>)·must·not·be61 disk_log·options·(<code·class="inline">file</code>,·<code·class="inline">type</code>,·<code·class="inline">max_no_files</code>,·<code·class="inline">max_no_bytes</code>)·must·not·be
62 modified.</p><p>Example·of·adding·a·disk_log·handler:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">logger</samp><samp·class="p">:</samp><samp·class="nf">add_handler</samp><samp·class="p"·data-group-id="3419429294-1">(</samp><samp·class="ss">my_disk_log_h</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">logger_disk_log_h</samp><samp·class="p">,</samp><samp·class="w">62 modified.</p><p>Example·of·adding·a·disk_log·handler:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">logger</samp><samp·class="p">:</samp><samp·class="nf">add_handler</samp><samp·class="p"·data-group-id="7369664428-1">(</samp><samp·class="ss">my_disk_log_h</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">logger_disk_log_h</samp><samp·class="p">,</samp><samp·class="w">
63 ···················</samp><samp·class="p"·data-group-id="3419429294-2">#{</samp><samp·class="ss">config</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3419429294-3">#{</samp><samp·class="ss">file</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="s">&quot;./my_disk_log&quot;</samp><samp·class="p">,</samp><samp·class="w">63 ···················</samp><samp·class="p"·data-group-id="7369664428-2">#{</samp><samp·class="ss">config</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7369664428-3">#{</samp><samp·class="ss">file</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="s">&quot;./my_disk_log&quot;</samp><samp·class="p">,</samp><samp·class="w">
64 ·································</samp><samp·class="ss">type</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="ss">wrap</samp><samp·class="p">,</samp><samp·class="w">64 ·································</samp><samp·class="ss">type</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="ss">wrap</samp><samp·class="p">,</samp><samp·class="w">
65 ·································</samp><samp·class="ss">max_no_files</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">4</samp><samp·class="p">,</samp><samp·class="w">65 ·································</samp><samp·class="ss">max_no_files</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">4</samp><samp·class="p">,</samp><samp·class="w">
66 ·································</samp><samp·class="ss">max_no_bytes</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">10000</samp><samp·class="p">,</samp><samp·class="w">66 ·································</samp><samp·class="ss">max_no_bytes</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">10000</samp><samp·class="p">,</samp><samp·class="w">
67 ·································</samp><samp·class="ss">filesync_repeat_interval</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">1000</samp><samp·class="p"·data-group-id="3419429294-3">}</samp><samp·class="p"·data-group-id="3419429294-2">}</samp><samp·class="p"·data-group-id="3419429294-1">)</samp><samp·class="p">.</samp></code></pre><p>To·use·the·disk_log·handler·instead·of·the·default·standard·handler·when67 ·································</samp><samp·class="ss">filesync_repeat_interval</samp><samp·class="w">·</samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="mi">1000</samp><samp·class="p"·data-group-id="7369664428-3">}</samp><samp·class="p"·data-group-id="7369664428-2">}</samp><samp·class="p"·data-group-id="7369664428-1">)</samp><samp·class="p">.</samp></code></pre><p>To·use·the·disk_log·handler·instead·of·the·default·standard·handler·when
68 starting·an·Erlang·node,·change·the·Kernel·default·logger·to·use68 starting·an·Erlang·node,·change·the·Kernel·default·logger·to·use
69 <code·class="inline">logger_disk_log_h</code>.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_disk_log_h,69 <code·class="inline">logger_disk_log_h</code>.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_disk_log_h,
70 ······················#{config·=&gt;·#{file·=&gt;·&quot;./system_disk_log&quot;}}}]'</code></pre><h2·id="module-see-also"·class="section-heading">70 ······················#{config·=&gt;·#{file·=&gt;·&quot;./system_disk_log&quot;}}}]'</code></pre><h2·id="module-see-also"·class="section-heading">
71 ··<a·href="#module-see-also"·class="hover-link">71 ··<a·href="#module-see-also"·class="hover-link">
72 ····<i·class="ri-link-m"·aria-hidden="true"></i>72 ····<i·class="ri-link-m"·aria-hidden="true"></i>
73 ··</a>73 ··</a>
74 ··<span·class="text">See·Also</span>74 ··<span·class="text">See·Also</span>
93.9 KB
OEBPS/logger_cookbook.xhtml
Max HTML report size reached
101 KB
OEBPS/logger_chapter.xhtml
Max HTML report size reached
52.9 KB
OEBPS/logger.xhtml
Max HTML report size reached
49.5 KB
OEBPS/inet_res.xhtml
Max HTML report size reached
34.9 KB
OEBPS/inet.xhtml
Max HTML report size reached
2.85 KB
OEBPS/global_group.xhtml
    
Offset 23, 15 lines modifiedOffset 23, 15 lines modified
  
  
23 ······<section·id="moduledoc"·class="docstring">23 ······<section·id="moduledoc"·class="docstring">
24 <p>Grouping·nodes·to·global·name·registration·groups.</p><p>This·module·makes·it·possible·to·partition·the·nodes·of·a·system·into·<em>global24 <p>Grouping·nodes·to·global·name·registration·groups.</p><p>This·module·makes·it·possible·to·partition·the·nodes·of·a·system·into·<em>global
25 groups</em>.·Each·global·group·has·its·own·global·namespace,·see·<a·href="global.xhtml"><code·class="inline">global</code></a>.</p><p>The·main·advantage·of·dividing·systems·into·global·groups·is·that·the·background25 groups</em>.·Each·global·group·has·its·own·global·namespace,·see·<a·href="global.xhtml"><code·class="inline">global</code></a>.</p><p>The·main·advantage·of·dividing·systems·into·global·groups·is·that·the·background
26 load·decreases·while·the·number·of·nodes·to·be·updated·is·reduced·when26 load·decreases·while·the·number·of·nodes·to·be·updated·is·reduced·when
27 manipulating·globally·registered·names.</p><p>The·Kernel·configuration·parameter·<a·href="kernel_app.xhtml#global_groups"><code·class="inline">global_groups</code></a>27 manipulating·globally·registered·names.</p><p>The·Kernel·configuration·parameter·<a·href="kernel_app.xhtml#global_groups"><code·class="inline">global_groups</code></a>
28 defines·the·global·groups:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="6607836383-1">{</samp><samp·class="ss">global_groups</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6607836383-2">[</samp><samp·class="n">GroupTuple</samp><samp·class="w">·</samp><samp·class="p">:</samp><samp·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·9d3fd29f928b6c6a035523451b44e1647a4200445556949a99a59b84116f8cb4·...·]-1">}</samp></code></pre><p>For·the·processes·and·nodes·to·run·smoothly·using·the·global·group28 defines·the·global·groups:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="4405641972-1">{</samp><samp·class="ss">global_groups</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4405641972-2">[</samp><samp·class="n">GroupTuple</samp><samp·class="w">·</samp><samp·class="p">:</samp><samp·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·b3ef09854c4eca3b16107f1dba63fa343b47b2e6772d8c5c4b118d18f6241d01·...·]-1">}</samp></code></pre><p>For·the·processes·and·nodes·to·run·smoothly·using·the·global·group
29 functionality,·the·following·criteria·must·be·met:</p><ul><li>An·instance·of·the·global·group·server,·<code·class="inline">global_group</code>,·must·be·running·on29 functionality,·the·following·criteria·must·be·met:</p><ul><li>An·instance·of·the·global·group·server,·<code·class="inline">global_group</code>,·must·be·running·on
30 each·node.·The·processes·are·automatically·started·and·synchronized·when·a30 each·node.·The·processes·are·automatically·started·and·synchronized·when·a
31 node·is·started.</li><li>All·involved·nodes·must·agree·on·the·global·group·definition,·otherwise·the31 node·is·started.</li><li>All·involved·nodes·must·agree·on·the·global·group·definition,·otherwise·the
32 behavior·of·the·system·is·undefined.</li><li><em>All</em>·nodes·in·the·system·must·belong·to·exactly·one·global·group.</li></ul><p>In·the·following·descriptions,·a·<em>group·node</em>·is·a·node·belonging·to·the·same32 behavior·of·the·system·is·undefined.</li><li><em>All</em>·nodes·in·the·system·must·belong·to·exactly·one·global·group.</li></ul><p>In·the·following·descriptions,·a·<em>group·node</em>·is·a·node·belonging·to·the·same
33 global·group·as·the·local·node.</p><h2·id="module-notes"·class="section-heading">33 global·group·as·the·local·node.</p><h2·id="module-notes"·class="section-heading">
34 ··<a·href="#module-notes"·class="hover-link">34 ··<a·href="#module-notes"·class="hover-link">
35 ····<i·class="ri-link-m"·aria-hidden="true"></i>35 ····<i·class="ri-link-m"·aria-hidden="true"></i>
7.33 KB
OEBPS/gen_udp.xhtml
Max HTML report size reached
59.5 KB
OEBPS/gen_tcp.xhtml
Max HTML report size reached
169 KB
OEBPS/gen_sctp.xhtml
Max HTML report size reached
30.2 KB
OEBPS/file.xhtml
Max HTML report size reached
18.1 KB
OEBPS/erpc.xhtml
Max HTML report size reached
2.54 KB
OEBPS/erl_epmd.xhtml
    
Offset 235, 16 lines modifiedOffset 235, 16 lines modified
235 ···················Reason·::·address·|·<a·href="file.xhtml#t:posix/0">file:posix</a>().</pre>235 ···················Reason·::·address·|·<a·href="file.xhtml#t:posix/0">file:posix</a>().</pre>
  
236 ······</div>236 ······</div>
  
237 <p>Called·by·<a·href="net_adm.xhtml"><code·class="inline">net_adm:names/0</code></a>.·<code·class="inline">Host</code>·defaults·to·the·localhost.237 <p>Called·by·<a·href="net_adm.xhtml"><code·class="inline">net_adm:names/0</code></a>.·<code·class="inline">Host</code>·defaults·to·the·localhost.
238 Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>238 Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>
239 registered·at·the·specified·host.·Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not239 registered·at·the·specified·host.·Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not
240 operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">(arne@dunn)1&gt;·</samp><samp·class="nc">erl_epmd</samp><samp·class="p">:</samp><samp·class="nf">names</samp><samp·class="p"·data-group-id="1677081209-1">(</samp><samp·class="ss">localhost</samp><samp·class="p"·data-group-id="1677081209-1">)</samp><samp·class="p">.</samp><samp·class="w">240 operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">(arne@dunn)1&gt;·</samp><samp·class="nc">erl_epmd</samp><samp·class="p">:</samp><samp·class="nf">names</samp><samp·class="p"·data-group-id="7302938512-1">(</samp><samp·class="ss">localhost</samp><samp·class="p"·data-group-id="7302938512-1">)</samp><samp·class="p">.</samp><samp·class="w">
241 </samp><samp·class="p"·data-group-id="1677081209-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="1677081209-3">[</samp><samp·class="p"·data-group-id="1677081209-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·eefcfe75b2fbbfe2c9d91a9e45af8a6449b0e815c13d1bc6adf43c1c9a57d7ca·...·]-2">}</samp></code></pre>241 </samp><samp·class="p"·data-group-id="7302938512-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7302938512-3">[</samp><samp·class="p"·data-group-id="7302938512-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·a3b405825e2665527324ab5495caebb455c31e72ed900e6cfc2469ad32109129·...·]-2">}</samp></code></pre>
242 ··</section>242 ··</section>
243 </section>243 </section>
244 <section·class="detail"·id="port_please/2">244 <section·class="detail"·id="port_please/2">
  
245 ··<div·class="detail-header">245 ··<div·class="detail-header">
246 ····<a·href="#port_please/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">246 ····<a·href="#port_please/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
247 ······<i·class="ri-link-m"·aria-hidden="true"></i>247 ······<i·class="ri-link-m"·aria-hidden="true"></i>
12.6 KB
OEBPS/eep48_chapter.xhtml
Max HTML report size reached
1.24 KB
OEBPS/content.opf
1.2 KB
OEBPS/content.opf
Max HTML report size reached
5.03 KB
OEBPS/config.xhtml
    
Offset 43, 17 lines modifiedOffset 43, 17 lines modified
43 (see·<a·href="../../../../lib/../erts/doc/html/erl_cmd.xhtml"><code·class="inline">erts:erl(1)</code></a>).</p><p>The·value·of·a·configuration·parameter·is·retrieved·by·calling43 (see·<a·href="../../../../lib/../erts/doc/html/erl_cmd.xhtml"><code·class="inline">erts:erl(1)</code></a>).</p><p>The·value·of·a·configuration·parameter·is·retrieved·by·calling
44 <code·class="inline">application:get_env/1,2</code>.</p><h2·id="file-syntax"·class="section-heading">44 <code·class="inline">application:get_env/1,2</code>.</p><h2·id="file-syntax"·class="section-heading">
45 ··<a·href="#file-syntax"·class="hover-link">45 ··<a·href="#file-syntax"·class="hover-link">
46 ····<i·class="ri-link-m"·aria-hidden="true"></i>46 ····<i·class="ri-link-m"·aria-hidden="true"></i>
47 ··</a>47 ··</a>
48 ··<span·class="text">File·Syntax</span>48 ··<span·class="text">File·Syntax</span>
49 </h2>49 </h2>
50 <p>The·configuration·file·is·to·be·called·<code·class="inline">Name.config</code>,·where·<code·class="inline">Name</code>·is·any·name.</p><p>File·<code·class="inline">.config</code>·contains·a·single·Erlang·term·and·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8570546754-1">[</span><span·class="p"·data-group-id="8570546754-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8570546754-3">[</span><span·class="p"·data-group-id="8570546754-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·17ac9792f1984a0a6a0745d22cf340a19c67d03441c87e6fc23f8a117d13f86e·...·]-2">}</span><span·class="p">,</span><span·class="w">50 <p>The·configuration·file·is·to·be·called·<code·class="inline">Name.config</code>,·where·<code·class="inline">Name</code>·is·any·name.</p><p>File·<code·class="inline">.config</code>·contains·a·single·Erlang·term·and·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9886751543-1">[</span><span·class="p"·data-group-id="9886751543-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9886751543-3">[</span><span·class="p"·data-group-id="9886751543-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·01112b8756209fffb6dd4268a9ac2b66fd41e157905dd1c85fce9b1e31fe6b71·...·]-2">}</span><span·class="p">,</span><span·class="w">
51 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">51 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
52 ·</span><span·class="p"·data-group-id="8570546754-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8570546754-6">[</span><span·class="p"·data-group-id="8570546754-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·6541d86311103cb6d178754a9d9ce0112063905cc7a6a10c99a0a954ecb486e0·...·]-1">]</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">Application·=·atom()</code></strong>·-·Application·name.</p></li><li><p><strong><code·class="inline">Par·=·atom()</code></strong>·-·Name·of·a·configuration·parameter.</p></li><li><p><strong><code·class="inline">Val·=·term()</code></strong>·-·Value·of·a·configuration·parameter.</p></li></ul><h2·id="sys-config"·class="section-heading">52 ·</span><span·class="p"·data-group-id="9886751543-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9886751543-6">[</span><span·class="p"·data-group-id="9886751543-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·96a6bd9e03f9b36db65747b9182366647aba3594cb33b6c30b0221600eb5d1d2·...·]-1">]</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">Application·=·atom()</code></strong>·-·Application·name.</p></li><li><p><strong><code·class="inline">Par·=·atom()</code></strong>·-·Name·of·a·configuration·parameter.</p></li><li><p><strong><code·class="inline">Val·=·term()</code></strong>·-·Value·of·a·configuration·parameter.</p></li></ul><h2·id="sys-config"·class="section-heading">
53 ··<a·href="#sys-config"·class="hover-link">53 ··<a·href="#sys-config"·class="hover-link">
54 ····<i·class="ri-link-m"·aria-hidden="true"></i>54 ····<i·class="ri-link-m"·aria-hidden="true"></i>
55 ··</a>55 ··</a>
56 ··<span·class="text">sys.config</span>56 ··<span·class="text">sys.config</span>
57 </h2>57 </h2>
58 <p>When·starting·Erlang·in·embedded·mode,·it·is·assumed·that·exactly·one·system58 <p>When·starting·Erlang·in·embedded·mode,·it·is·assumed·that·exactly·one·system
59 configuration·file·is·used,·named·<code·class="inline">sys.config</code>.·This·file·is·to·be·located·in59 configuration·file·is·used,·named·<code·class="inline">sys.config</code>.·This·file·is·to·be·located·in
21.0 KB
OEBPS/code.xhtml
Max HTML report size reached
2.68 KB
OEBPS/application.xhtml
    
Offset 1465, 15 lines modifiedOffset 1465, 15 lines modified
1465 distributed.·The·argument·overrides·the·value·for·the·application·in·the·Kernel1465 distributed.·The·argument·overrides·the·value·for·the·application·in·the·Kernel
1466 configuration·parameter·<code·class="inline">distributed</code>.·<code·class="inline">Application</code>·must·be·the·application1466 configuration·parameter·<code·class="inline">distributed</code>.·<code·class="inline">Application</code>·must·be·the·application
1467 name·(same·as·in·the·first·argument).·If·a·node·crashes·and·<code·class="inline">Time</code>·is·specified,1467 name·(same·as·in·the·first·argument).·If·a·node·crashes·and·<code·class="inline">Time</code>·is·specified,
1468 the·application·controller·waits·for·<code·class="inline">Time</code>·milliseconds·before·attempting·to1468 the·application·controller·waits·for·<code·class="inline">Time</code>·milliseconds·before·attempting·to
1469 restart·the·application·on·another·node.·If·<code·class="inline">Time</code>·is·not·specified,·it·defaults1469 restart·the·application·on·another·node.·If·<code·class="inline">Time</code>·is·not·specified,·it·defaults
1470 to·<code·class="inline">0</code>·and·the·application·is·restarted·immediately.</p><p><code·class="inline">Nodes</code>·is·a·list·of·node·names·where·the·application·can·run,·in·priority·from1470 to·<code·class="inline">0</code>·and·the·application·is·restarted·immediately.</p><p><code·class="inline">Nodes</code>·is·a·list·of·node·names·where·the·application·can·run,·in·priority·from
1471 left·to·right.·Node·names·can·be·grouped·using·tuples·to·indicate·that·they·have1471 left·to·right.·Node·names·can·be·grouped·using·tuples·to·indicate·that·they·have
1472 the·same·priority.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Nodes</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2703885962-1">[</samp><samp·class="ss">cp1@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2703885962-2">{</samp><samp·class="ss">cp2@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">cp3@[·...·truncated·by·diffoscope;·len:·105,·SHA:·6fe3526bab7ae14a796f2405ab792aaa3765f2a03e9bc440d440d375e950e0a2·...·]-1">]</samp></code></pre><p>This·means·that·the·application·is·preferably·to·be·started·at·<code·class="inline">cp1@cave</code>.·If1472 the·same·priority.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Nodes</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="5235511890-1">[</samp><samp·class="ss">cp1@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="5235511890-2">{</samp><samp·class="ss">cp2@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">cp3@[·...·truncated·by·diffoscope;·len:·105,·SHA:·7e46cf9781ab38dc60538b5914399401ab8f321d20bc7e1e38b1e547fcef56e7·...·]-1">]</samp></code></pre><p>This·means·that·the·application·is·preferably·to·be·started·at·<code·class="inline">cp1@cave</code>.·If
1473 <code·class="inline">cp1@cave</code>·is·down,·the·application·is·to·be·started·at·<code·class="inline">cp2@cave</code>·or1473 <code·class="inline">cp1@cave</code>·is·down,·the·application·is·to·be·started·at·<code·class="inline">cp2@cave</code>·or
1474 <code·class="inline">cp3@cave</code>.</p><p>If·<code·class="inline">Distributed·==·default</code>,·the·value·for·the·application·in·the·Kernel1474 <code·class="inline">cp3@cave</code>.</p><p>If·<code·class="inline">Distributed·==·default</code>,·the·value·for·the·application·in·the·Kernel
1475 configuration·parameter·<code·class="inline">distributed</code>·is·used.</p>1475 configuration·parameter·<code·class="inline">distributed</code>·is·used.</p>
1476 ··</section>1476 ··</section>
1477 </section>1477 </section>
1478 <section·class="detail"·id="loaded_applications/0">1478 <section·class="detail"·id="loaded_applications/0">
  
26.1 KB
OEBPS/app.xhtml
Max HTML report size reached
52.9 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/logger.html
    
Offset 126, 34 lines modifiedOffset 126, 34 lines modified
  
126 ··</h1>126 ··</h1>
  
  
127 ····<section·id="moduledoc">127 ····<section·id="moduledoc">
128 <p>API·module·for·Logger,·the·standard·logging·facility·in·Erlang/OTP.</p><p>This·module·implements·the·main·API·for·logging·in·Erlang/OTP.·To·create·a·log128 <p>API·module·for·Logger,·the·standard·logging·facility·in·Erlang/OTP.</p><p>This·module·implements·the·main·API·for·logging·in·Erlang/OTP.·To·create·a·log
129 event,·use·the·<a·href="#logging-api-functions">API·functions</a>·or·the·log129 event,·use·the·<a·href="#logging-api-functions">API·functions</a>·or·the·log
130 <a·href="#module-macros">macros</a>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">LOG_ERROR</span><span·class="p"·data-group-id="5115410360-1">(</span><span·class="s">&quot;error·happened·because:·</span><span·class="si">~p</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5115410360-2">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·61dba5743480ebc077532e84334e13e76e37d1cff4f5bceb7f265d8598582cba·...·]-1">)</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·With·macro</span><span·class="w">130 <a·href="#module-macros">macros</a>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">LOG_ERROR</span><span·class="p"·data-group-id="9342140462-1">(</span><span·class="s">&quot;error·happened·because:·</span><span·class="si">~p</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9342140462-2">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·21ecd23ea4d0ee81ff661c902c7a283e28d4ca6d5d397174c2de053c3c08d411·...·]-1">)</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·With·macro</span><span·class="w">
131 </span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="5115410360-3">(</span><span·class="s">&quot;error·happened·because:·</span><span·class="si">~p</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5115410360-4">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·14f685889a2281d39ac0496a4d32d84bbe9775546b456c2940606f3cadb96551·...·]-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Without·macro</span></code></pre><p>To·configure·the·Logger·backend,·use131 </span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="9342140462-3">(</span><span·class="s">&quot;error·happened·because:·</span><span·class="si">~p</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9342140462-4">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·d5192c9ca0694a14d3426679f154dac5cce28b43c1f7886dfaa72be166843c35·...·]-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Without·macro</span></code></pre><p>To·configure·the·Logger·backend,·use
132 <a·href="kernel_app.html#logger">Kernel·configuration·parameters</a>·or132 <a·href="kernel_app.html#logger">Kernel·configuration·parameters</a>·or
133 <a·href="#configuration-api-functions">configuration·functions</a>·in·the·Logger·API.</p><p>By·default,·the·Kernel·application·installs·one·log·handler·at·system·start.133 <a·href="#configuration-api-functions">configuration·functions</a>·in·the·Logger·API.</p><p>By·default,·the·Kernel·application·installs·one·log·handler·at·system·start.
134 This·handler·is·named·<code·class="inline">default</code>.·It·receives·and·processes·standard·log·events134 This·handler·is·named·<code·class="inline">default</code>.·It·receives·and·processes·standard·log·events
135 produced·by·the·Erlang·runtime·system,·standard·behaviours·and·different135 produced·by·the·Erlang·runtime·system,·standard·behaviours·and·different
136 Erlang/OTP·applications.·The·log·events·are·by·default·printed·to·the·terminal.</p><p>If·you·want·your·systems·logs·to·be·printed·to·a·file·instead,·you·must136 Erlang/OTP·applications.·The·log·events·are·by·default·printed·to·the·terminal.</p><p>If·you·want·your·systems·logs·to·be·printed·to·a·file·instead,·you·must
137 configure·the·default·handler·to·do·so.·The·simplest·way·is·to·include·the137 configure·the·default·handler·to·do·so.·The·simplest·way·is·to·include·the
138 following·in·your·<a·href="config.html"><code·class="inline">sys.config</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3233369043-1">[</span><span·class="p"·data-group-id="3233369043-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">138 following·in·your·<a·href="config.html"><code·class="inline">sys.config</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8775080720-1">[</span><span·class="p"·data-group-id="8775080720-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
139 ··</span><span·class="p"·data-group-id="3233369043-3">[</span><span·class="p"·data-group-id="3233369043-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">139 ··</span><span·class="p"·data-group-id="8775080720-3">[</span><span·class="p"·data-group-id="8775080720-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="3233369043-5">[</span><span·class="p"·data-group-id="3233369043-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">140 ····</span><span·class="p"·data-group-id="8775080720-5">[</span><span·class="p"·data-group-id="8775080720-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
141 ······</span><span·class="p"·data-group-id="3233369043-7">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3233369043-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·494,·SHA:·5136fcb2d78d6d0ecdbbaf18ed1aefeee04a34eb1074386d9900322a78f1d45f·...·]-1">]</span><span·class="p">.</span></code></pre><p>For·more·information·about:</p><ul><li>the·Logger·facility·in·general,·see·the·<a·href="logger_chapter.html">User's·Guide</a>.</li><li>how·to·configure·Logger,·see·the141 ······</span><span·class="p"·data-group-id="8775080720-7">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8775080720-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·494,·SHA:·892f3ca7983ee9b56d32507bb389136e27067882e861a41d3021da634593e946·...·]-1">]</span><span·class="p">.</span></code></pre><p>For·more·information·about:</p><ul><li>the·Logger·facility·in·general,·see·the·<a·href="logger_chapter.html">User's·Guide</a>.</li><li>how·to·configure·Logger,·see·the
142 <a·href="logger_chapter.html#configuration">Configuration</a>·section·in·the·User's·Guide.</li><li>the·built-in·handlers,·see·<a·href="logger_std_h.html"><code·class="inline">logger_std_h</code></a>·and·<a·href="logger_disk_log_h.html"><code·class="inline">logger_disk_log_h</code></a>.</li><li>the·built-in·formatter,·see·<a·href="logger_formatter.html"><code·class="inline">logger_formatter</code></a>.</li><li>built-in·filters,·see·<a·href="logger_filters.html"><code·class="inline">logger_filters</code></a>.</li></ul><h2·id="module-macros"·class="section-heading">142 <a·href="logger_chapter.html#configuration">Configuration</a>·section·in·the·User's·Guide.</li><li>the·built-in·handlers,·see·<a·href="logger_std_h.html"><code·class="inline">logger_std_h</code></a>·and·<a·href="logger_disk_log_h.html"><code·class="inline">logger_disk_log_h</code></a>.</li><li>the·built-in·formatter,·see·<a·href="logger_formatter.html"><code·class="inline">logger_formatter</code></a>.</li><li>built-in·filters,·see·<a·href="logger_filters.html"><code·class="inline">logger_filters</code></a>.</li></ul><h2·id="module-macros"·class="section-heading">
143 ··<a·href="#module-macros"·class="hover-link">143 ··<a·href="#module-macros"·class="hover-link">
144 ····<i·class="ri-link-m"·aria-hidden="true"></i>144 ····<i·class="ri-link-m"·aria-hidden="true"></i>
145 ··</a>145 ··</a>
146 ··<span·class="text">Macros</span>146 ··<span·class="text">Macros</span>
147 </h2>147 </h2>
148 <p>The·following·macros·are·defined·in·<code·class="inline">logger.hrl</code>,·which·is·included·in·a·module148 <p>The·following·macros·are·defined·in·<code·class="inline">logger.hrl</code>,·which·is·included·in·a·module
149 with·the·directive</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="9543648737-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="9543648737-1">)</span><span·class="p">.</span></code></pre><ul><li><code·class="inline">?LOG_EMERGENCY(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_EMERGENCY(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_ALERT(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_ALERT(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_CRITICAL(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_CRITICAL(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_ERROR(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_ERROR(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_WARNING(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_WARNING(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_NOTICE(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_NOTICE(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_INFO(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_INFO(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_DEBUG(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_DEBUG(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG(Level,StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG(Level,FunOrFormat,Args[,Metadata])</code></li></ul><p>All·macros·expand·to·a·call·to·Logger,·where·<code·class="inline">Level</code>·is·taken·from·the·macro149 with·the·directive</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0393021893-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="0393021893-1">)</span><span·class="p">.</span></code></pre><ul><li><code·class="inline">?LOG_EMERGENCY(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_EMERGENCY(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_ALERT(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_ALERT(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_CRITICAL(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_CRITICAL(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_ERROR(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_ERROR(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_WARNING(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_WARNING(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_NOTICE(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_NOTICE(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_INFO(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_INFO(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG_DEBUG(StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG_DEBUG(FunOrFormat,Args[,Metadata])</code></li><li><code·class="inline">?LOG(Level,StringOrReport[,Metadata])</code></li><li><code·class="inline">?LOG(Level,FunOrFormat,Args[,Metadata])</code></li></ul><p>All·macros·expand·to·a·call·to·Logger,·where·<code·class="inline">Level</code>·is·taken·from·the·macro
150 name,·or·from·the·first·argument·in·the·case·of·the·<code·class="inline">?LOG</code>·macro.·Location·data150 name,·or·from·the·first·argument·in·the·case·of·the·<code·class="inline">?LOG</code>·macro.·Location·data
151 is·added·to·the·metadata·as·described·under·the·<a·href="#t:metadata/0"><code·class="inline">metadata/0</code></a>·type·definition.</p><p>The·call·is·wrapped·in·a·case·statement·and·will·be·evaluated·only·if·<code·class="inline">Level</code>·is151 is·added·to·the·metadata·as·described·under·the·<a·href="#t:metadata/0"><code·class="inline">metadata/0</code></a>·type·definition.</p><p>The·call·is·wrapped·in·a·case·statement·and·will·be·evaluated·only·if·<code·class="inline">Level</code>·is
152 equal·to·or·below·the·configured·log·level.</p><h2·id="module-see-also"·class="section-heading">152 equal·to·or·below·the·configured·log·level.</p><h2·id="module-see-also"·class="section-heading">
153 ··<a·href="#module-see-also"·class="hover-link">153 ··<a·href="#module-see-also"·class="hover-link">
154 ····<i·class="ri-link-m"·aria-hidden="true"></i>154 ····<i·class="ri-link-m"·aria-hidden="true"></i>
155 ··</a>155 ··</a>
156 ··<span·class="text">See·Also</span>156 ··<span·class="text">See·Also</span>
Offset 2304, 21 lines modifiedOffset 2304, 21 lines modified
2304 ·········(Level·::·<a·href="#t:level/0">level</a>(),·Fun·::·<a·href="#t:msg_fun/0">msg_fun</a>(),·FunArgs·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·ok.</pre>2304 ·········(Level·::·<a·href="#t:level/0">level</a>(),·Fun·::·<a·href="#t:msg_fun/0">msg_fun</a>(),·FunArgs·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·ok.</pre>
  
2305 ······</div>2305 ······</div>
  
2306 <p>Create·a·log·event·at·the·given·<a·href="logger_chapter.html#log-level">log·level</a>,·with2306 <p>Create·a·log·event·at·the·given·<a·href="logger_chapter.html#log-level">log·level</a>,·with
2307 the·given·<a·href="logger_chapter.html#log-message">message</a>·to·be·logged·and2307 the·given·<a·href="logger_chapter.html#log-message">message</a>·to·be·logged·and
2308 <a·href="logger_chapter.html#metadata"><em>metadata</em></a>.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·A·plain·string</span><span·class="gp·unselectable">2308 <a·href="logger_chapter.html#metadata"><em>metadata</em></a>.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·A·plain·string</span><span·class="gp·unselectable">
2309 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="7811664889-1">(</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Hello·World&quot;</span><span·class="p"·data-group-id="7811664889-1">)</span><span·class="p">.</span><span·class="w">2309 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="8268287879-1">(</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Hello·World&quot;</span><span·class="p"·data-group-id="8268287879-1">)</span><span·class="p">.</span><span·class="w">
2310 </span><span·class="c1">%%·A·plain·string·with·metadata</span><span·class="gp·unselectable">2310 </span><span·class="c1">%%·A·plain·string·with·metadata</span><span·class="gp·unselectable">
2311 2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="7811664889-2">(</span><span·class="ss">debug</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Hello·World&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7811664889-3">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·264,·SHA:·ddc32f6bf5ab12856da9bddfeb2b94cd781f8863159d9ca18bb9329dcebedaeb·...·]9-2">)</span><span·class="p">.</span><span·class="w">2311 2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="8268287879-2">(</span><span·class="ss">debug</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Hello·World&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8268287879-3">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·264,·SHA:·74aaaf6f2f851f526ae07077cdedf574fabd22d755b8c55d05961289e06b7639·...·]9-2">)</span><span·class="p">.</span><span·class="w">
2312 </span><span·class="c1">%%·A·format·string·with·arguments</span><span·class="gp·unselectable">2312 </span><span·class="c1">%%·A·format·string·with·arguments</span><span·class="gp·unselectable">
2313 3&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="7811664889-4">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;The·roof·is·on·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7811664889-5">[</span><span·class="n">Cause</sp[·...·truncated·by·diffoscope;·len:·96,·SHA:·2fa5f554413720988320393c52ff373038727922febc2268a7938c551de5c351·...·]9-4">)</span><span·class="p">.</span><span·class="w">2313 3&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="8268287879-4">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;The·roof·is·on·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8268287879-5">[</span><span·class="n">Cause</sp[·...·truncated·by·diffoscope;·len:·96,·SHA:·1d5bc8d5f8a280c523eea72840f7c1545545dc6902a8ea94378941f80d46d2ed·...·]9-4">)</span><span·class="p">.</span><span·class="w">
2314 </span><span·class="c1">%%·A·report</span><span·class="gp·unselectable">2314 </span><span·class="c1">%%·A·report</span><span·class="gp·unselectable">
2315 4&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="7811664889-6">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7811664889-7">#{</span><span·class="w">·</span><span·class="ss">what</span><span·class="w">·</span><span·class="p">=&gt;</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·365eda1d4f182a24dae3fffd08cdcc530dde47336eeae8a6fce90c168d79a30a·...·]9-6">)</span><span·class="p">.</span></code></pre><p>Equivalent·to·<a·href="#log/4"><code·class="inline">log(Level,·FormatOrFun,·Args,·#{})</code></a>·if·called·as2315 4&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="8268287879-6">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8268287879-7">#{</span><span·class="w">·</span><span·class="ss">what</span><span·class="w">·</span><span·class="p">=&gt;</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·0af494a8d60b1d45a8b3432f01be84d067f69548f0c1f454ac39b7007ca6ee54·...·]9-6">)</span><span·class="p">.</span></code></pre><p>Equivalent·to·<a·href="#log/4"><code·class="inline">log(Level,·FormatOrFun,·Args,·#{})</code></a>·if·called·as
2316 <code·class="inline">log(Level,·FormatOrFun,·Args)</code>.</p>2316 <code·class="inline">log(Level,·FormatOrFun,·Args)</code>.</p>
2317 ··</section>2317 ··</section>
2318 </section>2318 </section>
2319 <section·class="detail"·id="log/4">2319 <section·class="detail"·id="log/4">
  
2320 ··<div·class="detail-header">2320 ··<div·class="detail-header">
2321 ····<a·href="#log/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2321 ····<a·href="#log/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 2347, 20 lines modifiedOffset 2347, 20 lines modified
2347 <p>Create·a·log·event·at·the·given·<a·href="logger_chapter.html#log-level">log·level</a>,·with2347 <p>Create·a·log·event·at·the·given·<a·href="logger_chapter.html#log-level">log·level</a>,·with
2348 the·given·<a·href="logger_chapter.html#log-message">message</a>·to·be·logged·and2348 the·given·<a·href="logger_chapter.html#log-message">message</a>·to·be·logged·and
2349 <a·href="logger_chapter.html#metadata"><em>metadata</em></a>.</p><p>The·message·and·metadata·can·either·be·given·directly·in·the·arguments,·or2349 <a·href="logger_chapter.html#metadata"><em>metadata</em></a>.</p><p>The·message·and·metadata·can·either·be·given·directly·in·the·arguments,·or
2350 returned·from·a·fun.·Passing·a·fun·instead·of·the·message/metadata·directly·is2350 returned·from·a·fun.·Passing·a·fun·instead·of·the·message/metadata·directly·is
2351 useful·in·scenarios·when·the·message/metadata·is·very·expensive·to·compute.·This2351 useful·in·scenarios·when·the·message/metadata·is·very·expensive·to·compute.·This
2352 is·because·the·fun·is·only·evaluated·when·the·message/metadata·is·actually2352 is·because·the·fun·is·only·evaluated·when·the·message/metadata·is·actually
2353 needed,·which·may·be·not·at·all·if·the·log·event·is·not·to·be·logged.·Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·A·plain·string·with·expensive·metadata</span><span·class="gp·unselectable">2353 needed,·which·may·be·not·at·all·if·the·log·event·is·not·to·be·logged.·Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·A·plain·string·with·expensive·metadata</span><span·class="gp·unselectable">
2354 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="6279908529-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6279908529-2">(</span><span·class="p"·data-group-id="6279908529-3">[</span><span·class="p"·data-group-id="6279908529-3">]</span><span·class="p"·data-group-id="6279908529-2">)</[·...·truncated·by·diffoscope;·len:·900,·SHA:·2b72894dce23a91c35b56c43c29db6fd666778fbecc7d6a1fba183c01c669b06·...·]-1">)</span><span·class="p">.</span><span·class="w">2354 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="2705661361-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2705661361-2">(</span><span·class="p"·data-group-id="2705661361-3">[</span><span·class="p"·data-group-id="2705661361-3">]</span><span·class="p"·data-group-id="2705661361-2">)</[·...·truncated·by·diffoscope;·len:·900,·SHA:·16350c356c030f1adf15ff9e624c06bc86abd7d6d54c7a9f55478393f07781ad·...·]-1">)</span><span·class="p">.</span><span·class="w">
2355 </span><span·class="c1">%%·An·expensive·report</span><span·class="gp·unselectable">2355 </span><span·class="c1">%%·An·expensive·report</span><span·class="gp·unselectable">
2356 2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">debug</span><span·class="p"·data-group-id="6279908529-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6279908529-9">(</span><span·class="n">What</span><span·class="p"·data-group-id="6279908529-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·727,·SHA:·5b937646088a1a8839c61fa423fde278cf59eb36283f24f292b85062deb10f98·...·]-8">)</span><span·class="p">.</span><span·class="w">2356 2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">debug</span><span·class="p"·data-group-id="2705661361-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2705661361-9">(</span><span·class="n">What</span><span·class="p"·data-group-id="2705661361-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·727,·SHA:·152fd8ce3b0182dadaaefa50b6914cda80c9cb97073751199ae512ad7c81a4a4·...·]-8">)</span><span·class="p">.</span><span·class="w">
2357 </span><span·class="c1">%%·A·plain·string·with·expensive·metadata·and·normal·metadata</span><span·class="gp·unselectable">2357 </span><span·class="c1">%%·A·plain·string·with·expensive·metadata·and·normal·metadata</span><span·class="gp·unselectable">
2358 3&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">debug</span><span·class="p"·data-group-id="6279908529-12">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6279908529-13">(</span><span·class="p"·data-group-id="6279908529-14">[</span><span·class="p"·data-group-id="6279908529-14">]</span><span·class="p"·data-group-id="6279908529-13[·...·truncated·by·diffoscope;·len:·859,·SHA:·4b48bb7815be8b9765d17c4387bd172ffcabc62eb100f0e19fab7fd81e62ec94·...·]-18">]</span><span·class="p">,</span><span·class="w">2358 3&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">debug</span><span·class="p"·data-group-id="2705661361-12">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2705661361-13">(</span><span·class="p"·data-group-id="2705661361-14">[</span><span·class="p"·data-group-id="2705661361-14">]</span><span·class="p"·data-group-id="2705661361-13[·...·truncated·by·diffoscope;·len:·859,·SHA:·08fa3a6afcf0e067d06e600e269e5939aa4fbb161f8d0ba188052f50e80f44bf·...·]-18">]</span><span·class="p">,</span><span·class="w">
2359 ···············</span><span·class="p"·data-group-id="6279908529-19">#{</span><span·class="w">·</span><span·class="ss">meta</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">data</span><span·class="w">·</span><span·class="p"·data-group-id="6279908529-19">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·f62e339dabeba7d3385c1e22d0dc69ba19410944cfd8a1c323421c3015f215de·...·]-12">)</span><span·class="p">.</span></code></pre><p>When·metadata·is·given·both·as·an·argument·and·returned·from·the·fun·they·are2359 ···············</span><span·class="p"·data-group-id="2705661361-19">#{</span><span·class="w">·</span><span·class="ss">meta</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">data</span><span·class="w">·</span><span·class="p"·data-group-id="2705661361-19">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·184caa66710dd0b890e79e6efaba09da3aa9f10a7946137edf28494ddc2608ad·...·]-12">)</span><span·class="p">.</span></code></pre><p>When·metadata·is·given·both·as·an·argument·and·returned·from·the·fun·they·are
2360 merged.·If·equal·keys·exists·the·values·are·taken·from·the·metadata·returned·by2360 merged.·If·equal·keys·exists·the·values·are·taken·from·the·metadata·returned·by
2361 the·fun.</p>2361 the·fun.</p>
2362 ··</section>2362 ··</section>
2363 </section>2363 </section>
2364 <section·class="detail"·id="notice/1">2364 <section·class="detail"·id="notice/1">
  
2365 ··<div·class="detail-header">2365 ··<div·class="detail-header">
Offset 2657, 34 lines modifiedOffset 2657, 34 lines modified
2657 ······</div>2657 ······</div>
  
2658 <p>Reads·the·application·configuration·parameter·<code·class="inline">logger</code>·and·calls2658 <p>Reads·the·application·configuration·parameter·<code·class="inline">logger</code>·and·calls
2659 <a·href="#add_handlers/1"><code·class="inline">add_handlers/1</code></a>·with·its·contents.</p><p>This·function·should·be·used·by·custom·Logger·handlers·to·make·configuration2659 <a·href="#add_handlers/1"><code·class="inline">add_handlers/1</code></a>·with·its·contents.</p><p>This·function·should·be·used·by·custom·Logger·handlers·to·make·configuration
2660 consistent·no·matter·which·handler·the·system·uses.·Normal·usage·is·to·add·a2660 consistent·no·matter·which·handler·the·system·uses.·Normal·usage·is·to·add·a
2661 call·to·<a·href="#add_handlers/1"><code·class="inline">logger:add_handlers/1</code></a>·just·after·the·processes·that·the·handler·needs2661 call·to·<a·href="#add_handlers/1"><code·class="inline">logger:add_handlers/1</code></a>·just·after·the·processes·that·the·handler·needs
2662 are·started,·and·pass·the·application's·<code·class="inline">logger</code>·configuration·as·the·argument.2662 are·started,·and·pass·the·application's·<code·class="inline">logger</code>·configuration·as·the·argument.
2663 For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="4453406264-1">(</span><span·class="ss">application</span><span·class="p"·data-group-id="4453406264-1">)</span><span·class="p">.</span><span·class="w">2663 For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="9170320216-1">(</span><span·class="ss">application</span><span·class="p"·data-group-id="9170320216-1">)</span><span·class="p">.</span><span·class="w">
2664 </span><span·class="nf">start</span><span·class="p"·data-group-id="4453406264-2">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4453406264-3">[</span><span·class="p"·data-group-id="4453406264-3">]</span><span·class="p"·data-group-id="4453406264-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">2664 </span><span·class="nf">start</span><span·class="p"·data-group-id="9170320216-2">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9170320216-3">[</span><span·class="p"·data-group-id="9170320216-3">]</span><span·class="p"·data-group-id="9170320216-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2665 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4453406264-4">(</span><span·class="p"·data-group-id="4453406264-5">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_sup</span><span·class="p"·data-group-id="4453406264-5">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·252,·SHA:·4903a1949d33c652f8d13d1267a6b9733e7c1ce3b87902988df69f80e3d52a61·...·]-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">2665 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="9170320216-4">(</span><span·class="p"·data-group-id="9170320216-5">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_sup</span><span·class="p"·data-group-id="9170320216-5">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·252,·SHA:·f4a35670eec1b5ccdb2dfd14aa1532f26e888be24e4d6eba07aee6d47117043e·...·]-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
2666 ········</span><span·class="p"·data-group-id="4453406264-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="4453406264-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">2666 ········</span><span·class="p"·data-group-id="9170320216-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="9170320216-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2667 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handlers</span><span·class="p"·data-group-id="4453406264-8">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="4453406264-8">)</span><span·class="p">,</span><span·class="w">2667 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handlers</span><span·class="p"·data-group-id="9170320216-8">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="9170320216-8">)</span><span·class="p">,</span><span·class="w">
2668 ············</span><span·class="p"·data-group-id="4453406264-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4453406264-10">[</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·63,·SHA:·12c3f6257ed55ad85af37a651bc61d400d5581ec0e39062e502ab10b8d06f056·...·]-9">}</span><span·class="p">;</span><span·class="w">2668 ············</span><span·class="p"·data-group-id="9170320216-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9170320216-10">[</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·63,·SHA:·d823849625a29b0a5977116990d93f81363eed295994dffaf7b29a4b5fc34e68·...·]-9">}</span><span·class="p">;</span><span·class="w">
2669 ········</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Error</span><span·class="w">2669 ········</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Error</span><span·class="w">
2670 ·····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>This·reads·the·<code·class="inline">logger</code>·configuration·parameter·from·the·<code·class="inline">my_app</code>·application2670 ·····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>This·reads·the·<code·class="inline">logger</code>·configuration·parameter·from·the·<code·class="inline">my_app</code>·application
2671 and·starts·the·configured·handlers.·The·contents·of·the·configuration·use·the2671 and·starts·the·configured·handlers.·The·contents·of·the·configuration·use·the
2672 same·rules·as·the2672 same·rules·as·the
2673 <a·href="logger_chapter.html#handler-configuration">logger·handler·configuration</a>.</p><p>If·the·handler·is·meant·to·replace·the·default·handler,·the·Kernel's·default2673 <a·href="logger_chapter.html#handler-configuration">logger·handler·configuration</a>.</p><p>If·the·handler·is·meant·to·replace·the·default·handler,·the·Kernel's·default
2674 handler·have·to·be·disabled·before·the·new·handler·is·added.·A·<code·class="inline">sys.config</code>·file2674 handler·have·to·be·disabled·before·the·new·handler·is·added.·A·<code·class="inline">sys.config</code>·file
2675 that·disables·the·Kernel·handler·and·adds·a·custom·handler·could·look·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2603984749-1">[</span><span·class="p"·data-group-id="2603984749-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">2675 that·disables·the·Kernel·handler·and·adds·a·custom·handler·could·look·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1306342681-1">[</span><span·class="p"·data-group-id="1306342681-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
2676 ··</span><span·class="p"·data-group-id="2603984749-3">[</span><span·class="p"·data-group-id="2603984749-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">2676 ··</span><span·class="p"·data-group-id="1306342681-3">[</span><span·class="p"·data-group-id="1306342681-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
2677 ····</span><span·class="c1">%%·Disable·the·default·Kernel·handler</span><span·class="w">2677 ····</span><span·class="c1">%%·Disable·the·default·Kernel·handler</span><span·class="w">
2678 ····</span><span·class="p"·data-group-id="2603984749-5">[</span><span·class="p"·data-group-id="2603984749-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefi[·...·truncated·by·diffoscope;·len:·263,·SHA:·954e1947961eb1b3a002af620e6259dde973f41207b1f6a9c651998683838b7f·...·]-2">}</span><span·class="p">,</span><span·class="w">2678 ····</span><span·class="p"·data-group-id="1306342681-5">[</span><span·class="p"·data-group-id="1306342681-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefi[·...·truncated·by·diffoscope;·len:·263,·SHA:·ba05cc322d320bb334cad4d66a2c1ef4d99aa071cd9aa669f4d26b7c40f98e80·...·]-2">}</span><span·class="p">,</span><span·class="w">
2679 ·</span><span·class="p"·data-group-id="2603984749-7">{</span><span·class="ss">my_app</span><span·class="p">,</span><span·class="w">2679 ·</span><span·class="p"·data-group-id="1306342681-7">{</span><span·class="ss">my_app</span><span·class="p">,</span><span·class="w">
2680 ··</span><span·class="p"·data-group-id="2603984749-8">[</span><span·class="p"·data-group-id="2603984749-9">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">2680 ··</span><span·class="p"·data-group-id="1306342681-8">[</span><span·class="p"·data-group-id="1306342681-9">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
2681 ····</span><span·class="c1">%%·Enable·this·handler·as·the·default</span><span·class="w">2681 ····</span><span·class="c1">%%·Enable·this·handler·as·the·default</span><span·class="w">
2682 ····</span><span·class="p"·data-group-id="2603984749-10">[</span><span·class="p"·data-group-id="2603984749-11">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_h[·...·truncated·by·diffoscope;·len:·478,·SHA:·d09db9109650152cc59ffa6b5608333486d4c98a92e850216a7c581048e2257c·...·]-1">]</span><span·class="p">.</span></code></pre>2682 ····</span><span·class="p"·data-group-id="1306342681-10">[</span><span·class="p"·data-group-id="1306342681-11">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_h[·...·truncated·by·diffoscope;·len:·478,·SHA:·463602756ac774c05dffb4a720baed7ea97daf0ff9896da5a37a41eff6fc40fb·...·]-1">]</span><span·class="p">.</span></code></pre>
2683 ··</section>2683 ··</section>
2684 </section>2684 </section>
2685 <section·class="detail"·id="add_primary_filter/2">2685 <section·class="detail"·id="add_primary_filter/2">
  
2686 ··<div·class="detail-header">2686 ··<div·class="detail-header">
2687 ····<a·href="#add_primary_filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2687 ····<a·href="#add_primary_filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
2688 ······<i·class="ri-link-m"·aria-hidden="true"></i>2688 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3575, 16 lines modifiedOffset 3575, 16 lines modified
3575 ··········<pre·translate="no"><span·class="attribute">-spec</span>·update_formatter_config(HandlerId,·FormatterConfig)·->·ok·|·{error,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()}3575 ··········<pre·translate="no"><span·class="attribute">-spec</span>·update_formatter_config(HandlerId,·FormatterConfig)·->·ok·|·{error,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()}
3576 ·································when3576 ·································when
3577 ·····································HandlerId·::·<a·href="logger_handler.html#t:id/0">logger_handler:id</a>(),3577 ·····································HandlerId·::·<a·href="logger_handler.html#t:id/0">logger_handler:id</a>(),
3578 ·····································FormatterConfig·::·<a·href="#t:formatter_config/0">formatter_config</a>().</pre>3578 ·····································FormatterConfig·::·<a·href="#t:formatter_config/0">formatter_config</a>().</pre>
  
3579 ······</div>3579 ······</div>
  
3580 <p>Update·the·formatter·configuration·for·the·specified·handler.</p><p>The·new·configuration·is·merged·with·the·existing·formatter·configuration.</p><p>To·overwrite·the·existing·configuration·without·any·merge,·use</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="0478057322-1">(</span><span·class="n">HandlerId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="p">,</span><span·class="w">3580 <p>Update·the·formatter·configuration·for·the·specified·handler.</p><p>The·new·configuration·is·merged·with·the·existing·formatter·configuration.</p><p>To·overwrite·the·existing·configuration·without·any·merge,·use</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="5445163844-1">(</span><span·class="n">HandlerId</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="p">,</span><span·class="w">
3581 »       ······</span><span·class="p"·data-group-id="0478057322-2">{</span><span·class="n">FormatterModule</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FormatterConfig</span><span·class="p"·data-group-id="0478057322-2">}</span><span·class="p"·data-group-id="0478057322-1">)</span><span·class="p">.</span></code></pre>3581 »       ······</span><span·class="p"·data-group-id="5445163844-2">{</span><span·class="n">FormatterModule</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FormatterConfig</span><span·class="p"·data-group-id="5445163844-2">}</span><span·class="p"·data-group-id="5445163844-1">)</span><span·class="p">.</span></code></pre>
3582 ··</section>3582 ··</section>
3583 </section>3583 </section>
3584 <section·class="detail"·id="update_formatter_config/3">3584 <section·class="detail"·id="update_formatter_config/3">
  
3585 ··<div·class="detail-header">3585 ··<div·class="detail-header">
Max diff block lines reached; 11809/54046 bytes (21.85%) of diff not shown.
101 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/logger_chapter.html
    
Offset 186, 15 lines modifiedOffset 186, 15 lines modified
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">Logger·API</span>188 ··<span·class="text">Logger·API</span>
189 </h2>189 </h2>
190 <p>The·API·for·logging·consists·of·a·set·of·<a·href="logger.html#module-macros">macros</a>,·and·a·set190 <p>The·API·for·logging·consists·of·a·set·of·<a·href="logger.html#module-macros">macros</a>,·and·a·set
191 of·functions·on·the·form·<code·class="inline">logger:Level/1,2,3</code>,·which·are·all·shortcuts·for191 of·functions·on·the·form·<code·class="inline">logger:Level/1,2,3</code>,·which·are·all·shortcuts·for
192 <a·href="logger.html#log/2"><code·class="inline">logger:log(Level,Arg1[,Arg2[,Arg3]])</code></a>.</p><p>The·macros·are·defined·in·<code·class="inline">logger.hrl</code>,·which·is·included·in·a·module·with·the192 <a·href="logger.html#log/2"><code·class="inline">logger:log(Level,Arg1[,Arg2[,Arg3]])</code></a>.</p><p>The·macros·are·defined·in·<code·class="inline">logger.hrl</code>,·which·is·included·in·a·module·with·the
193 directive</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3043688542-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="3043688542-1">)</span><span·class="p">.</span></code></pre><p>The·difference·between·using·the·macros·and·the·exported·functions·is·that193 directive</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0568761080-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="0568761080-1">)</span><span·class="p">.</span></code></pre><p>The·difference·between·using·the·macros·and·the·exported·functions·is·that
194 macros·add·location·(originator)·information·to·the·metadata,·and·performs·lazy194 macros·add·location·(originator)·information·to·the·metadata,·and·performs·lazy
195 evaluation·by·wrapping·the·logger·call·in·a·case·statement,·so·it·is·only195 evaluation·by·wrapping·the·logger·call·in·a·case·statement,·so·it·is·only
196 evaluated·if·the·log·level·of·the·event·passes·the·primary·log·level·check.</p><h3·id="log-level"·class="section-heading">196 evaluated·if·the·log·level·of·the·event·passes·the·primary·log·level·check.</p><h3·id="log-level"·class="section-heading">
197 ··<a·href="#log-level"·class="hover-link">197 ··<a·href="#log-level"·class="hover-link">
198 ····<i·class="ri-link-m"·aria-hidden="true"></i>198 ····<i·class="ri-link-m"·aria-hidden="true"></i>
199 ··</a>199 ··</a>
200 ··<span·class="text">Log·Level</span>200 ··<span·class="text">Log·Level</span>
Offset 208, 31 lines modifiedOffset 208, 31 lines modified
208 ··<a·href="#log-message"·class="hover-link">208 ··<a·href="#log-message"·class="hover-link">
209 ····<i·class="ri-link-m"·aria-hidden="true"></i>209 ····<i·class="ri-link-m"·aria-hidden="true"></i>
210 ··</a>210 ··</a>
211 ··<span·class="text">Log·Message</span>211 ··<span·class="text">Log·Message</span>
212 </h3>212 </h3>
213 <p>The·log·message·contains·the·information·to·be·logged.·The·message·can·consist213 <p>The·log·message·contains·the·information·to·be·logged.·The·message·can·consist
214 of·a·format·string·and·arguments·(given·as·two·separate·parameters·in·the·Logger214 of·a·format·string·and·arguments·(given·as·two·separate·parameters·in·the·Logger
215 API),·a·string·or·a·report.</p><p>Example,·format·string·and·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="3817599643-1">(</span><span·class="s">&quot;The·file·does·not·exist:·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3817599643-2">[</span><span·class="n">Filename</span><span·class="p"·data-group-id="3817599643-2">]</span><span·clas[·...·truncated·by·diffoscope;·len:·367,·SHA:·3187b78c649ba356a150336ebf6af042b1df73ae821a360da09cfecac842d560·...·]-1">)</span></code></pre><p>A·report,·which·is·either·a·map·or·a·key-value·list,·is·the·preferred·way·to·log215 API),·a·string·or·a·report.</p><p>Example,·format·string·and·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="1989340723-1">(</span><span·class="s">&quot;The·file·does·not·exist:·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1989340723-2">[</span><span·class="n">Filename</span><span·class="p"·data-group-id="1989340723-2">]</span><span·clas[·...·truncated·by·diffoscope;·len:·367,·SHA:·f85cc2a5cfbfa6ceebe3372135c512707c0265c703a7aa361b3ba06b6894cc83·...·]-1">)</span></code></pre><p>A·report,·which·is·either·a·map·or·a·key-value·list,·is·the·preferred·way·to·log
216 using·Logger·as·it·makes·it·possible·for·different·backends·to·filter·and·format216 using·Logger·as·it·makes·it·possible·for·different·backends·to·filter·and·format
217 the·log·event·as·it·needs·to.</p><p>Example,·report:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">LOG_ERROR</span><span·class="p"·data-group-id="7689352374-1">(</span><span·class="p"·data-group-id="7689352374-2">#{</span><span·class="w">·</span><span·class="ss">user</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">joe</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·464,·SHA:·3563ec01071bcbb29beb84942ce6c26b66e4f526b095a218ac5a798170ebc470·...·]-1">)</span></code></pre><p>Reports·can·be·accompanied·by·a·<em>report·callback</em>·specified·in·the·log·event's217 the·log·event·as·it·needs·to.</p><p>Example,·report:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">LOG_ERROR</span><span·class="p"·data-group-id="8226768671-1">(</span><span·class="p"·data-group-id="8226768671-2">#{</span><span·class="w">·</span><span·class="ss">user</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">joe</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·464,·SHA:·969733b70ff8036486dba6f99dfee2d854b834e7963695b26ab307f0f93d4b6a·...·]-1">)</span></code></pre><p>Reports·can·be·accompanied·by·a·<em>report·callback</em>·specified·in·the·log·event's
218 <a·href="#metadata">metadata</a>.·The·report·callback·is·a·convenience218 <a·href="#metadata">metadata</a>.·The·report·callback·is·a·convenience
219 function·that·the·<a·href="#formatters">formatter</a>·can·use·to·convert219 function·that·the·<a·href="#formatters">formatter</a>·can·use·to·convert
220 the·report·to·a·format·string·and·arguments,·or·directly·to·a·string.·The220 the·report·to·a·format·string·and·arguments,·or·directly·to·a·string.·The
221 formatter·can·also·use·its·own·conversion·function,·if·no·callback·is·provided,221 formatter·can·also·use·its·own·conversion·function,·if·no·callback·is·provided,
222 or·if·a·customized·formatting·is·desired.</p><p>The·report·callback·must·be·a·fun·with·one·or·two·arguments.·If·it·takes·one222 or·if·a·customized·formatting·is·desired.</p><p>The·report·callback·must·be·a·fun·with·one·or·two·arguments.·If·it·takes·one
223 argument,·this·is·the·report·itself,·and·the·fun·returns·a·format·string·and223 argument,·this·is·the·report·itself,·and·the·fun·returns·a·format·string·and
224 arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="6734384102-1">(</span><span·class="p"·data-group-id="6734384102-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="6734384102-3">(</span><span·class="p"·data-group-id="6734384102-3">)</span><span·class="p"·data-group-id="6734384102-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6734384102-4">{</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6734384102-5">(</span><span·class="p"·data-group-id="6734384102-5">)</span><span·class="p">,</span><span·class="p"·data-group-id="6734384102-6">[</span><span·class="nf">term</span><span·class="p"·data-group-id="6734384102-7">(</span><span·class="p"·data-group-id="6734384102-7">)</span><span·class="p"·data-group-id="6734384102-6">]</span><span·class="p"·data-group-id="6734384102-4">}</span><span·class="p"·data-group-id="6734384102-1">)</span></code></pre><p>If·it·takes·two·arguments,·the·first·is·the·report,·and·the·second·is·a·map 
225 containing·extra·data·that·allows·direct·conversion·to·a·string:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="4575007341-1">(</span><span·class="p"·data-group-id="4575007341-2">(</span><span·c[·...·truncated·by·diffoscope;·len:·924,·SHA:·67ef3f99aab91b2d89453ddcc1599ec42e9e45e638a82e8cc67b4a768150fbd1·...·]224 arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="1933092111-1">(</span><span·class="p"·data-group-id="1933092111-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·c[·...·truncated·by·diffoscope;·len:·958,·SHA:·9534669c7d20422bfae0e4ed59173602929958792f1fdf8c7726ad8a5e1627be·...·]
 225 containing·extra·data·that·allows·direct·conversion·to·a·string:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="1158861921-1">(</span><span·class="p"·data-group-id="1158861921-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="1158861921-3">(</span><span·class="p"·data-group-id="1158861921-3">)</span><span·class="p">,</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report_cb_config</span><span·class="p"·data-group-id="1158861921-4">(</span><span·class="p"·data-group-id="1158861921-4">)</span><span·class="p"·data-group-id="1158861921-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">chardata</span><span·class="p"·data-group-id="1158861921-5">(</span><span·class="p"·data-group-id="1158861921-5">)</span><span·class="p"·data-group-id="1158861921-1">)</span></code></pre><p>The·fun·must·obey·the·<code·class="inline">depth</code>·and·<code·class="inline">chars_limit</code>·parameters·provided·in·the
226 second·argument,·as·the·formatter·cannot·do·anything·useful·of·these·parameters226 second·argument,·as·the·formatter·cannot·do·anything·useful·of·these·parameters
227 with·the·returned·string.·The·extra·data·also·contains·a·field·named227 with·the·returned·string.·The·extra·data·also·contains·a·field·named
228 <code·class="inline">single_line</code>,·indicating·if·the·printed·log·message·may·contain·line·breaks·or228 <code·class="inline">single_line</code>,·indicating·if·the·printed·log·message·may·contain·line·breaks·or
229 not.·This·variant·is·used·when·the·formatting·of·the·report·depends·on·the·size229 not.·This·variant·is·used·when·the·formatting·of·the·report·depends·on·the·size
230 or·single·line·parameters.</p><p>Example,·report,·and·metadata·with·report·callback:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">debug</span><span·class="p"·data-group-id="5078402976-1">(</span><span·class="p"·data-group-id="5078402976-2">#{</span><span·class="ss">got</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">connection_request</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·362,·SHA:·038728b0e2d2a68b694da2e5b922e1698346f8b59573534e962bdf6cbbc014e7·...·]-2">}</span><span·class="p">,</span><span·class="w">230 or·single·line·parameters.</p><p>Example,·report,·and·metadata·with·report·callback:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">debug</span><span·class="p"·data-group-id="3010289309-1">(</span><span·class="p"·data-group-id="3010289309-2">#{</span><span·class="ss">got</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">connection_request</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·362,·SHA:·90f2e16ad1fd4fda1ec435c7b2258a4cb65a24003072e615053270bf990a660d·...·]-2">}</span><span·class="p">,</span><span·class="w">
231 ·············</span><span·class="p"·data-group-id="5078402976-3">#{</span><span·class="ss">report_cb</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5078402976-4">(</span><span·class="n">R</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·597,·SHA:·c9764e0331f40b257e0b5a83ad77b9a1495f9161653b07f1fa2601364c4ab036·...·]-1">)</span></code></pre><p>The·log·message·can·also·be·provided·through·a·fun·for·lazy·evaluation.·The·fun231 ·············</span><span·class="p"·data-group-id="3010289309-3">#{</span><span·class="ss">report_cb</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3010289309-4">(</span><span·class="n">R</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·597,·SHA:·c5e853373c00d0a61fbcd676a752a1d4a8e29d16756164dca8fa4da5f0490432·...·]-1">)</span></code></pre><p>The·log·message·can·also·be·provided·through·a·fun·for·lazy·evaluation.·The·fun
232 is·only·evaluated·if·the·primary·log·level·check·passes,·and·is·therefore232 is·only·evaluated·if·the·primary·log·level·check·passes,·and·is·therefore
233 recommended·if·it·is·expensive·to·generate·the·message.·The·lazy·fun·must·return233 recommended·if·it·is·expensive·to·generate·the·message.·The·lazy·fun·must·return
234 a·string,·a·report,·or·a·tuple·with·format·string·and·arguments.</p><h3·id="metadata"·class="section-heading">234 a·string,·a·report,·or·a·tuple·with·format·string·and·arguments.</p><h3·id="metadata"·class="section-heading">
235 ··<a·href="#metadata"·class="hover-link">235 ··<a·href="#metadata"·class="hover-link">
236 ····<i·class="ri-link-m"·aria-hidden="true"></i>236 ····<i·class="ri-link-m"·aria-hidden="true"></i>
237 ··</a>237 ··</a>
238 ··<span·class="text">Metadata</span>238 ··<span·class="text">Metadata</span>
Offset 412, 22 lines modifiedOffset 412, 22 lines modified
412 with·<a·href="../../../../lib/sasl-4.2.2/doc/html/error_logging.html">SASL·Error·Logging</a>,·which·is·specified·with412 with·<a·href="../../../../lib/sasl-4.2.2/doc/html/error_logging.html">SASL·Error·Logging</a>,·which·is·specified·with
413 <a·href="#logger_sasl_compatible"><code·class="inline">logger_sasl_compatible</code></a>.</p><p>With·this·parameter,·you·can·modify·or·disable·the·default·handler,·add·custom413 <a·href="#logger_sasl_compatible"><code·class="inline">logger_sasl_compatible</code></a>.</p><p>With·this·parameter,·you·can·modify·or·disable·the·default·handler,·add·custom
414 handlers·and·primary·logger·filters,·set·log·levels·per·module,·and·modify·the414 handlers·and·primary·logger·filters,·set·log·levels·per·module,·and·modify·the
415 <a·href="#logger-proxy">proxy</a>·configuration.</p><p><code·class="inline">Config</code>·is·any·(zero·or·more)·of·the·following:</p><ul><li><p><strong><code·class="inline">{handler,·default,·undefined}</code></strong>·-·Disables·the·default·handler.·This415 <a·href="#logger-proxy">proxy</a>·configuration.</p><p><code·class="inline">Config</code>·is·any·(zero·or·more)·of·the·following:</p><ul><li><p><strong><code·class="inline">{handler,·default,·undefined}</code></strong>·-·Disables·the·default·handler.·This
416 allows·another·application·to·add·its·own·default·handler.</p><p>Only·one·entry·of·this·type·is·allowed.</p></li><li><p><strong><code·class="inline">{handler,·HandlerId,·Module,·HandlerConfig}</code></strong>·-·If·<code·class="inline">HandlerId</code>·is416 allows·another·application·to·add·its·own·default·handler.</p><p>Only·one·entry·of·this·type·is·allowed.</p></li><li><p><strong><code·class="inline">{handler,·HandlerId,·Module,·HandlerConfig}</code></strong>·-·If·<code·class="inline">HandlerId</code>·is
417 <code·class="inline">default</code>,·then·this·entry·modifies·the·default·handler,·equivalent·to417 <code·class="inline">default</code>,·then·this·entry·modifies·the·default·handler,·equivalent·to
418 calling</p><pre><code·class="text">········logger:remove_handler(default)418 calling</p><pre><code·class="text">········logger:remove_handler(default)
419 </code></pre><p>followed·by</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="5053121380-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HandlerConfig</span><span·class="p"·data-group-id="5053121380-1">)</span><span·class="w">419 </code></pre><p>followed·by</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="5043036939-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HandlerConfig</span><span·class="p"·data-group-id="5043036939-1">)</span><span·class="w">
420 </span></code></pre><p>For·all·other·values·of·<code·class="inline">HandlerId</code>,·this·entry·adds·a·new·handler,420 </span></code></pre><p>For·all·other·values·of·<code·class="inline">HandlerId</code>,·this·entry·adds·a·new·handler,
421 equivalent·to·calling</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="3786774374-1">(</span><span·class="n">HandlerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HandlerConfig</span><span·class="p"·data-group-id="3786774374-1">)</span><span·class="w">421 equivalent·to·calling</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="5906615380-1">(</span><span·class="n">HandlerId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HandlerConfig</span><span·class="p"·data-group-id="5906615380-1">)</span><span·class="w">
422 </span></code></pre><p>Multiple·entries·of·this·type·are·allowed.</p></li><li><p><strong><code·class="inline">{filters,·FilterDefault,·[Filter]}</code></strong>·-·Adds·the·specified·primary422 </span></code></pre><p>Multiple·entries·of·this·type·are·allowed.</p></li><li><p><strong><code·class="inline">{filters,·FilterDefault,·[Filter]}</code></strong>·-·Adds·the·specified·primary
423 filters.</p><ul><li><p><code·class="inline">FilterDefault·=·log·|·stop</code></p></li><li><code·class="inline">Filter·=·{FilterId,·{FilterFun,·FilterConfig}}</code></li></ul><p>Equivalent·to·calling</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_primary_filter</span><span·class="p"·data-group-id="4361029254-1">(</span><span·class="n">FilterId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4361029254-2">{</span><span·class="n">FilterFun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filter[·...·truncated·by·diffoscope;·len:·107,·SHA:·36259b5df638a38911a6e23b9c0e0fda546d2b6e76d374644ce82afcfdb90cbd·...·]-1">)</span><span·class="w">423 filters.</p><ul><li><p><code·class="inline">FilterDefault·=·log·|·stop</code></p></li><li><code·class="inline">Filter·=·{FilterId,·{FilterFun,·FilterConfig}}</code></li></ul><p>Equivalent·to·calling</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_primary_filter</span><span·class="p"·data-group-id="0149019101-1">(</span><span·class="n">FilterId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0149019101-2">{</span><span·class="n">FilterFun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filter[·...·truncated·by·diffoscope;·len:·107,·SHA:·91346f7040dc65bb092b62e3e889055b971007cef4dda751d5fca7701335b906·...·]-1">)</span><span·class="w">
424 </span></code></pre><p>for·each·<code·class="inline">Filter</code>.</p><p><code·class="inline">FilterDefault</code>·specifies·the·behaviour·if·all·primary·filters·return424 </span></code></pre><p>for·each·<code·class="inline">Filter</code>.</p><p><code·class="inline">FilterDefault</code>·specifies·the·behaviour·if·all·primary·filters·return
425 <code·class="inline">ignore</code>,·see·section·<a·href="#filters">Filters</a>.</p><p>Only·one·entry·of·this·type·is·allowed.</p></li><li><p><strong><code·class="inline">{module_level,·Level,·[Module]}</code></strong>·-·Sets·module·log·level·for·the·given425 <code·class="inline">ignore</code>,·see·section·<a·href="#filters">Filters</a>.</p><p>Only·one·entry·of·this·type·is·allowed.</p></li><li><p><strong><code·class="inline">{module_level,·Level,·[Module]}</code></strong>·-·Sets·module·log·level·for·the·given
426 modules.·Equivalent·to·calling</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_module_level</span><span·class="p"·data-group-id="6625175531-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Level</span><span·class="p"·data-group-id="6625175531-1">)</span></code></pre><p>for·each·<code·class="inline">Module</code>.</p><p>Multiple·entries·of·this·type·are·allowed.</p></li><li><p><strong><code·class="inline">{proxy,·ProxyConfig}</code></strong>·-·Sets·the·proxy·configuration,·equivalent·to426 modules.·Equivalent·to·calling</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_module_level</span><span·class="p"·data-group-id="8478387689-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Level</span><span·class="p"·data-group-id="8478387689-1">)</span></code></pre><p>for·each·<code·class="inline">Module</code>.</p><p>Multiple·entries·of·this·type·are·allowed.</p></li><li><p><strong><code·class="inline">{proxy,·ProxyConfig}</code></strong>·-·Sets·the·proxy·configuration,·equivalent·to
427 calling</p><pre><code·class="text">········logger:set_proxy_config(ProxyConfig)427 calling</p><pre><code·class="text">········logger:set_proxy_config(ProxyConfig)
428 </code></pre><p>Only·one·entry·of·this·type·is·allowed.</p></li></ul><p>See·section·<a·href="#configuration-examples">Configuration·Examples</a>·for428 </code></pre><p>Only·one·entry·of·this·type·is·allowed.</p></li></ul><p>See·section·<a·href="#configuration-examples">Configuration·Examples</a>·for
429 examples·using·the·<code·class="inline">logger</code>·parameter·for·system·configuration.</p></li><li><p><strong><code·class="inline"·id="logger_metadata">logger_metadata·=·map()</code></strong>·-·Specifies·the·primary429 examples·using·the·<code·class="inline">logger</code>·parameter·for·system·configuration.</p></li><li><p><strong><code·class="inline"·id="logger_metadata">logger_metadata·=·map()</code></strong>·-·Specifies·the·primary
430 metadata.·See·the·<a·href="kernel_app.html#logger_metadata"><code·class="inline">kernel(6)</code></a>·manual·page·for430 metadata.·See·the·<a·href="kernel_app.html#logger_metadata"><code·class="inline">kernel(6)</code></a>·manual·page·for
431 more·information·about·this·parameter.</p></li><li><p><strong><code·class="inline"·id="logger_level">logger_level·=·Level</code></strong>·-·Specifies·the·primary·log431 more·information·about·this·parameter.</p></li><li><p><strong><code·class="inline"·id="logger_level">logger_level·=·Level</code></strong>·-·Specifies·the·primary·log
432 level.·See·the·<a·href="kernel_app.html#logger_level"><code·class="inline">kernel(6)</code></a>·manual·page·for·more432 level.·See·the·<a·href="kernel_app.html#logger_level"><code·class="inline">kernel(6)</code></a>·manual·page·for·more
433 information·about·this·parameter.</p></li><li><p><strong><code·class="inline"·id="logger_sasl_compatible">logger_sasl_compatible·=·true·|·false</code></strong>·-433 information·about·this·parameter.</p></li><li><p><strong><code·class="inline"·id="logger_sasl_compatible">logger_sasl_compatible·=·true·|·false</code></strong>·-
Offset 442, 39 lines modifiedOffset 442, 39 lines modified
442 </h3>442 </h3>
443 <p>The·value·of·the·Kernel·configuration·parameter·<code·class="inline">logger</code>·is·a·list·of·tuples.·It443 <p>The·value·of·the·Kernel·configuration·parameter·<code·class="inline">logger</code>·is·a·list·of·tuples.·It
444 is·possible·to·write·the·term·on·the·command·line·when·starting·an·erlang·node,444 is·possible·to·write·the·term·on·the·command·line·when·starting·an·erlang·node,
445 but·as·the·term·grows,·a·better·approach·is·to·use·the·system·configuration445 but·as·the·term·grows,·a·better·approach·is·to·use·the·system·configuration
446 file.·See·the·<a·href="config.html"><code·class="inline">config(4)</code></a>·manual·page·for·more·information·about446 file.·See·the·<a·href="config.html"><code·class="inline">config(4)</code></a>·manual·page·for·more·information·about
447 this·file.</p><p>Each·of·the·following·examples·shows·a·simple·system·configuration·file·that447 this·file.</p><p>Each·of·the·following·examples·shows·a·simple·system·configuration·file·that
448 configures·Logger·according·to·the·description.</p><p>Modify·the·default·handler·to·print·to·a·file·instead·of448 configures·Logger·according·to·the·description.</p><p>Modify·the·default·handler·to·print·to·a·file·instead·of
449 <a·href="../../../../lib/stdlib-6.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7633100025-1">[</span><span·class="p"·data-group-id="7633100025-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">449 <a·href="../../../../lib/stdlib-6.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4945385231-1">[</span><span·class="p"·data-group-id="4945385231-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
450 ··</span><span·class="p"·data-group-id="7633100025-3">[</span><span·class="p"·data-group-id="7633100025-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">450 ··</span><span·class="p"·data-group-id="4945385231-3">[</span><span·class="p"·data-group-id="4945385231-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
451 ····</span><span·class="p"·data-group-id="7633100025-5">[</span><span·class="p"·data-group-id="7633100025-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·{handler,·HandlerId,·Module,</span><span·class="w">451 ····</span><span·class="p"·data-group-id="4945385231-5">[</span><span·class="p"·data-group-id="4945385231-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·{handler,·HandlerId,·Module,</span><span·class="w">
452 ······</span><span·class="p"·data-group-id="7633100025-7">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7633100025-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·227,·SHA:·a64bcaeda48d34d90c83c169ef2f80a37fabcffd3d0a7aea702ae9e8063e9a03·...·]-6">}</span><span·class="w">··</span><span·class="c1">%·Config}</span><span·class="w">452 ······</span><span·class="p"·data-group-id="4945385231-7">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4945385231-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·227,·SHA:·37e8db4e8df1638dc99800785c4b92db74e5aa1ec1a9f49b3518638160980d0e·...·]-6">}</span><span·class="w">··</span><span·class="c1">%·Config}</span><span·class="w">
453 ····</span><span·class="p"·data-group-id="7633100025-5">]</span><span·class="p"·data-group-id="7633100025-4">}</span><span·class="p"·data-group-id="7633100025-3">]</span><span·class="p"·data-group-id="7633100025-2">}</span><span·class="p"·data-group-id="7633100025-1">]</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·231,·SHA:·a4665a506be2a696ff1d49cacf8ad4f70943f241cbad55da07a043ad93dcb9c1·...·]6-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">453 ····</span><span·class="p"·data-group-id="4945385231-5">]</span><span·class="p"·data-group-id="4945385231-4">}</span><span·class="p"·data-group-id="4945385231-3">]</span><span·class="p"·data-group-id="4945385231-2">}</span><span·class="p"·data-group-id="4945385231-1">]</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·231,·SHA:·6359370659dfd4a9dcf7844016b4c46bc13cfd7818191cc5d57c8a2e10eae56b·...·]6-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
454 ··</span><span·class="p"·data-group-id="4594951176-3">[</span><span·class="p"·data-group-id="4594951176-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">454 ··</span><span·class="p"·data-group-id="8321618726-3">[</span><span·class="p"·data-group-id="8321618726-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
455 ····</span><span·class="p"·data-group-id="4594951176-5">[</span><span·class="p"·data-group-id="4594951176-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">455 ····</span><span·class="p"·data-group-id="8321618726-5">[</span><span·class="p"·data-group-id="8321618726-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
456 ······</span><span·class="p"·data-group-id="4594951176-7">#{</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4594951176-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·409,·SHA:·19a9ba9ef08322573ec6b02795bccf282a0f561ee9b60d377ac70c12f80c83a8·...·]6-6">}</span><span·class="w">456 ······</span><span·class="p"·data-group-id="8321618726-7">#{</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8321618726-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·409,·SHA:·77226bfd595ae6cd06dfd36a7e73c081319224d3bbdef800bfb1013b67d5ba7f·...·]6-6">}</span><span·class="w">
457 ····</span><span·class="p"·data-group-id="4594951176-5">]</span><span·class="p"·data-group-id="4594951176-4">}</span><span·class="p"·data-group-id="4594951176-3">]</span><span·class="p"·data-group-id="4594951176-2">}</span><span·class="p"·data-group-id="4594951176-1">]</span><span·class="p">.</span></code></pre><p>Modify·the·default·handler·to·print·the·pid·of·the·logging·process·for·each·log 
458 event:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5905472137-1">[</span><span·class="p"·data-group-id="5905472137-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">457 ····</span><span·class="p"·data-group-id="8321618726-5">]</span><span·class="p"·data-group-id="8321618726-4">}</span><span·class="p"·data-group-id="8321618726-3">]</span><span·class="p"·data-group-id="8321618726-2">}</span><span·class="p"·data-group-id="83[·...·truncated·by·diffoscope;·len:·139,·SHA:·16ba9b7de7fd99ba8ac7f243c7a057229b23df82b9a4af09fee3a394a0f3383c·...·]
 458 event:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4182793137-1">[</span><span·class="p"·data-group-id="4182793137-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
459 ··</span><span·class="p"·data-group-id="5905472137-3">[</span><span·class="p"·data-group-id="5905472137-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">459 ··</span><span·class="p"·data-group-id="4182793137-3">[</span><span·class="p"·data-group-id="4182793137-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
460 ····</span><span·class="p"·data-group-id="5905472137-5">[</span><span·class="p"·data-group-id="5905472137-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">460 ····</span><span·class="p"·data-group-id="4182793137-5">[</span><span·class="p"·data-group-id="4182793137-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
461 ······</span><span·class="p"·data-group-id="5905472137-7">#{</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5905472137-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">461 ······</span><span·class="p"·data-group-id="4182793137-7">#{</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4182793137-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">
462 ························</span><span·class="p"·data-group-id="5905472137-9">#{</span><span·class="ss">template</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5905472137-10">[</span><span·class="ss">time</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·491,·SHA:·ca89d02442c7c47bbf9baa5d006d156616087f8b2f541b615cfb9f71e3bc0d81·...·]137-6">}</span><span·class="w">462 ························</span><span·class="p"·data-group-id="4182793137-9">#{</span><span·class="ss">template</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4182793137-10">[</span><span·class="ss">time</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·491,·SHA:·dc49fb4a83b6f9780c039a66a7fcd60f843723b8b2de8e419139c924daceaf9c·...·]137-6">}</span><span·class="w">
463 ····</span><span·class="p"·data-group-id="5905472137-5">]</span><span·class="p"·data-group-id="5905472137-4">}</span><span·class="p"·data-group-id="5905472137-3">]</span><span·class="p"·data-group-id="5905472137-2">}</span><span·class="p"·data-group-id="5905472137-1">]</span><span·class="p">.</span></code></pre><p>Modify·the·default·handler·to·only·print·errors·and·more·severe·log·events·to463 ····</span><span·class="p"·data-group-id="4182793137-5">]</span><span·class="p"·data-group-id="4182793137-4">}</span><span·class="p"·data-group-id="4182793137-3">]</span><span·class="p"·data-group-id="4182793137-2">}</span><span·class="p"·data-group-id="4182793137-1">]</span><span·class="p">.</span></code></pre><p>Modify·the·default·handler·to·only·print·errors·and·more·severe·log·events·to
464 &quot;log/erlang.log&quot;,·and·add·another·handler·to·print·all·log·events·to464 &quot;log/erlang.log&quot;,·and·add·another·handler·to·print·all·log·events·to
465 &quot;log/debug.log&quot;.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7466979275-1">[</span><span·class="p"·data-group-id="7466979275-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">465 &quot;log/debug.log&quot;.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4538640225-1">[</span><span·class="p"·data-group-id="4538640225-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
466 ··</span><span·class="p"·data-group-id="7466979275-3">[</span><span·class="p"·data-group-id="7466979275-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">466 ··</span><span·class="p"·data-group-id="4538640225-3">[</span><span·class="p"·data-group-id="4538640225-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
467 ····</span><span·class="p"·data-group-id="7466979275-5">[</span><span·class="p"·data-group-id="7466979275-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">467 ····</span><span·class="p"·data-group-id="4538640225-5">[</span><span·class="p"·data-group-id="4538640225-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
468 ······</span><span·class="p"·data-group-id="7466979275-7">#{</span><span·class="ss">level</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">468 ······</span><span·class="p"·data-group-id="4538640225-7">#{</span><span·class="ss">level</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">
469 ········</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7466979275-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;log/erlang.log&quot;</span><span·class="p"·data-group-id="7466979275-8">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·66,·SHA:·540fb4f94b8a67025b12267c11f6d81a77f2062acf9fdbcdefb35f4ff446afdc·...·]5-6">}</span><span·class="p">,</span><span·class="w">469 ········</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4538640225-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;log/erlang.log&quot;</span><span·class="p"·data-group-id="4538640225-8">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·66,·SHA:·b161f7be7f9b6d01988d1e724598e5c56647145cafb5c4751f6920a22e598686·...·]5-6">}</span><span·class="p">,</span><span·class="w">
470 ·····</span><span·class="p"·data-group-id="7466979275-9">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">470 ·····</span><span·class="p"·data-group-id="4538640225-9">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
471 ······</span><span·class="p"·data-group-id="7466979275-10">#{</span><span·class="ss">level</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">debug</span><span·class="p">,</span><span·class="w">471 ······</span><span·class="p"·data-group-id="4538640225-10">#{</span><span·class="ss">level</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">debug</span><span·class="p">,</span><span·class="w">
472 ········</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7466979275-11">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;log/debug.log&quot;</span><span·class="p"·data-group-id="7466979275-11">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·f3d151c1c3cbda11616cbe7d929346da3bd4ef5aa5ddc1297d5ed02b90656881·...·]5-9">}</span><span·class="w">472 ········</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4538640225-11">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;log/debug.log&quot;</span><span·class="p"·data-group-id="4538640225-11">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·561fc9f2fcde92f184fdcfdc4769b3ad3a522d4d12a3d3acacefde0300567662·...·]5-9">}</span><span·class="w">
473 ····</span><span·class="p"·data-group-id="7466979275-5">]</span><span·class="p"·data-group-id="7466979275-4">}</span><span·class="p"·data-group-id="7466979275-3">]</span><span·class="p"·data-group-id="7466979275-2">}</span><span·class="p"·data-group-id="7466979275-1">]</span><span·class="p">.</span></code></pre><h2·id="backwards-compatibility-with-error_logger"·class="section-heading">473 ····</span><span·class="p"·data-group-id="4538640225-5">]</span><span·class="p"·data-group-id="4538640225-4">}</span><span·class="p"·data-group-id="4538640225-3">]</span><span·class="p"·data-group-id="4538640225-2">}</span><span·class="p"·data-group-id="4538640225-1">]</span><span·class="p">.</span></code></pre><h2·id="backwards-compatibility-with-error_logger"·class="section-heading">
474 ··<a·href="#backwards-compatibility-with-error_logger"·class="hover-link">474 ··<a·href="#backwards-compatibility-with-error_logger"·class="hover-link">
475 ····<i·class="ri-link-m"·aria-hidden="true"></i>475 ····<i·class="ri-link-m"·aria-hidden="true"></i>
476 ··</a>476 ··</a>
477 ··<span·class="text">Backwards·Compatibility·with·error_logger</span>477 ··<span·class="text">Backwards·Compatibility·with·error_logger</span>
478 </h2>478 </h2>
479 <p>Logger·provides·backwards·compatibility·with·<code·class="inline">error_logger</code>·in·the·following479 <p>Logger·provides·backwards·compatibility·with·<code·class="inline">error_logger</code>·in·the·following
480 ways:</p><ul><li><p><strong>API·for·Logging</strong>·-·The·<code·class="inline">error_logger</code>·API·still·exists,·but·should·only·be480 ways:</p><ul><li><p><strong>API·for·Logging</strong>·-·The·<code·class="inline">error_logger</code>·API·still·exists,·but·should·only·be
Offset 507, 17 lines modifiedOffset 507, 17 lines modified
507 <code·class="inline">true</code>.·The507 <code·class="inline">true</code>.·The
508 <a·href="../../../../lib/sasl-4.2.2/doc/html/sasl_app.html#deprecated_error_logger_config">SASL·configuration·parameters</a>508 <a·href="../../../../lib/sasl-4.2.2/doc/html/sasl_app.html#deprecated_error_logger_config">SASL·configuration·parameters</a>
509 can·then·be·used·as·before,·and·the·SASL·reports·will·only·be·printed·if·the509 can·then·be·used·as·before,·and·the·SASL·reports·will·only·be·printed·if·the
510 SASL·application·is·running,·through·a·second·log·handler·named·<code·class="inline">sasl</code>.</p><p>All·SASL·reports·have·a·metadata·field·<code·class="inline">domain</code>·which·is·set·to·<code·class="inline">[otp,sasl]</code>.510 SASL·application·is·running,·through·a·second·log·handler·named·<code·class="inline">sasl</code>.</p><p>All·SASL·reports·have·a·metadata·field·<code·class="inline">domain</code>·which·is·set·to·<code·class="inline">[otp,sasl]</code>.
511 This·field·can·be·used·by·filters·to·stop·or·allow·the·log·events.</p><p>See·section·<a·href="../../../../lib/sasl-4.2.2/doc/html/error_logging.html">SASL·User's·Guide</a>·for·more511 This·field·can·be·used·by·filters·to·stop·or·allow·the·log·events.</p><p>See·section·<a·href="../../../../lib/sasl-4.2.2/doc/html/error_logging.html">SASL·User's·Guide</a>·for·more
512 information·about·the·old·SASL·error·logging·functionality.</p></li><li><p><strong><a·href=""·id="legacy_event_handlers"></a>·Legacy·Event·Handlers</strong><br/>To·use·event·handlers·written·for·<code·class="inline">error_logger</code>,·just·add·your·event·handler512 information·about·the·old·SASL·error·logging·functionality.</p></li><li><p><strong><a·href=""·id="legacy_event_handlers"></a>·Legacy·Event·Handlers</strong><br/>To·use·event·handlers·written·for·<code·class="inline">error_logger</code>,·just·add·your·event·handler
513 with</p><pre><code·class="text">error_logger:add_report_handler/1,2.</code></pre><p>This·automatically·starts·the·error·logger·event·manager,·and·adds513 with</p><pre><code·class="text">error_logger:add_report_handler/1,2.</code></pre><p>This·automatically·starts·the·error·logger·event·manager,·and·adds
514 <code·class="inline">error_logger</code>·as·a·handler·to·Logger,·with·the·following·configuration:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2680122856-1">#{</span><span·class="ss">level</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">514 <code·class="inline">error_logger</code>·as·a·handler·to·Logger,·with·the·following·configuration:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9379585474-1">#{</span><span·class="ss">level</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">
515 ··</span><span·class="ss">filter_default</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">515 ··</span><span·class="ss">filter_default</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">
516 ··</span><span·class="ss">filters</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2680122856-2">[</span><span·class="p"·data-group-id="2680122856-2">]</span><span·class="p"·data-group-id="2680122856-1">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·handler·ignores·events·that·do·not·originate·from·the·<code·class="inline">error_logger</code>516 ··</span><span·class="ss">filters</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9379585474-2">[</span><span·class="p"·data-group-id="9379585474-2">]</span><span·class="p"·data-group-id="9379585474-1">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·handler·ignores·events·that·do·not·originate·from·the·<code·class="inline">error_logger</code>
517 API,·or·from·within·OTP.·This·means·that·if·your·code·uses·the·Logger·API517 API,·or·from·within·OTP.·This·means·that·if·your·code·uses·the·Logger·API
518 for·logging,·then·your·log·events·will·be·discarded·by·this·handler.</p><p>The·handler·is·not·overload·protected.</p></section></li></ul><h2·id="error-handling"·class="section-heading">518 for·logging,·then·your·log·events·will·be·discarded·by·this·handler.</p><p>The·handler·is·not·overload·protected.</p></section></li></ul><h2·id="error-handling"·class="section-heading">
519 ··<a·href="#error-handling"·class="hover-link">519 ··<a·href="#error-handling"·class="hover-link">
520 ····<i·class="ri-link-m"·aria-hidden="true"></i>520 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Max diff block lines reached; 56599/103487 bytes (54.69%) of diff not shown.
94.2 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/logger_cookbook.html
    
Offset 140, 27 lines modifiedOffset 140, 27 lines modified
140 </h2>140 </h2>
141 <h3·id="print-the-primary-logger-configurations"·class="section-heading">141 <h3·id="print-the-primary-logger-configurations"·class="section-heading">
142 ··<a·href="#print-the-primary-logger-configurations"·class="hover-link">142 ··<a·href="#print-the-primary-logger-configurations"·class="hover-link">
143 ····<i·class="ri-link-m"·aria-hidden="true"></i>143 ····<i·class="ri-link-m"·aria-hidden="true"></i>
144 ··</a>144 ··</a>
145 ··<span·class="text">Print·the·primary·Logger·configurations.</span>145 ··<span·class="text">Print·the·primary·Logger·configurations.</span>
146 </h3>146 </h3>
147 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">i</span><span·class="p"·data-group-id="1992550404-1">(</span><span·class="ss">primary</span><span·class="p"·data-group-id="1992550404-1">)</span><span·class="p">.</span><span·class="w">147 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">i</span><span·class="p"·data-group-id="3652814310-1">(</span><span·class="ss">primary</span><span·class="p"·data-group-id="3652814310-1">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="n">Primary</span><span·class="w">·</span><span·class="nc">configuration</span><span·class="p">:</span><span·class="w">148 </span><span·class="n">Primary</span><span·class="w">·</span><span·class="nc">configuration</span><span·class="p">:</span><span·class="w">
149 ····</span><span·class="n">Level</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">notice</span><span·class="w">149 ····</span><span·class="n">Level</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">notice</span><span·class="w">
150 ····</span><span·class="n">Filter</span><span·class="w">·</span><span·class="n">Default</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">log</span><span·class="w">150 ····</span><span·class="n">Filter</span><span·class="w">·</span><span·class="n">Default</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">log</span><span·class="w">
151 ····</span><span·class="n">Filters</span><span·class="p">:</span><span·class="w">151 ····</span><span·class="n">Filters</span><span·class="p">:</span><span·class="w">
152 ········</span><span·class="p"·data-group-id="1992550404-2">(</span><span·class="ss">none</span><span·class="p"·data-group-id="1992550404-2">)</span></code></pre><p>It·is·also·possible·to·fetch·the·configuration·using152 ········</span><span·class="p"·data-group-id="3652814310-2">(</span><span·class="ss">none</span><span·class="p"·data-group-id="3652814310-2">)</span></code></pre><p>It·is·also·possible·to·fetch·the·configuration·using
153 <a·href="logger.html#get_primary_config/0"><code·class="inline">logger:get_primary_config()</code></a>.</p><h4>See·also</h4><ul><li><a·href="logger.html#i/0">logger:i()</a></li><li><a·href="logger_chapter.html#configuration">Configuration</a>·in·the·Logging·User's·Guide</li></ul><h3·id="print-the-configuration-of-all-handlers"·class="section-heading">153 <a·href="logger.html#get_primary_config/0"><code·class="inline">logger:get_primary_config()</code></a>.</p><h4>See·also</h4><ul><li><a·href="logger.html#i/0">logger:i()</a></li><li><a·href="logger_chapter.html#configuration">Configuration</a>·in·the·Logging·User's·Guide</li></ul><h3·id="print-the-configuration-of-all-handlers"·class="section-heading">
154 ··<a·href="#print-the-configuration-of-all-handlers"·class="hover-link">154 ··<a·href="#print-the-configuration-of-all-handlers"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">Print·the·configuration·of·all·handlers.</span>157 ··<span·class="text">Print·the·configuration·of·all·handlers.</span>
158 </h3>158 </h3>
159 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">i</span><span·class="p"·data-group-id="7791915056-1">(</span><span·class="ss">handlers</span><span·class="p"·data-group-id="7791915056-1">)</span><span·class="p">.</span><span·class="w">159 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">i</span><span·class="p"·data-group-id="7259398769-1">(</span><span·class="ss">handlers</span><span·class="p"·data-group-id="7259398769-1">)</span><span·class="p">.</span><span·class="w">
160 </span><span·class="n">Handler</span><span·class="w">·</span><span·class="nc">configuration</span><span·class="p">:</span><span·class="w">160 </span><span·class="n">Handler</span><span·class="w">·</span><span·class="nc">configuration</span><span·class="p">:</span><span·class="w">
161 ····</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">default</span><span·class="w">161 ····</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">default</span><span·class="w">
162 ········</span><span·class="n">Module</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="w">162 ········</span><span·class="n">Module</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="w">
163 ········</span><span·class="n">Level</span><span·class="p">:</span><span·class="w">··</span><span·class="ss">all</span><span·class="w">163 ········</span><span·class="n">Level</span><span·class="p">:</span><span·class="w">··</span><span·class="ss">all</span><span·class="w">
164 ········</span><span·class="n">Formatter</span><span·class="p">:</span><span·class="w">164 ········</span><span·class="n">Formatter</span><span·class="p">:</span><span·class="w">
165 ············</span><span·class="n">Module</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">logger_formatter</span><span·class="w">165 ············</span><span·class="n">Module</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">logger_formatter</span><span·class="w">
166 ············</span><span·class="n">Config</span><span·class="p">:</span><span·class="w">166 ············</span><span·class="n">Config</span><span·class="p">:</span><span·class="w">
Offset 169, 18 lines modifiedOffset 169, 18 lines modified
169 ········</span><span·class="n">Filter</span><span·class="w">·</span><span·class="n">Default</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stop</span><span·class="w">169 ········</span><span·class="n">Filter</span><span·class="w">·</span><span·class="n">Default</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stop</span><span·class="w">
170 ········</span><span·class="n">Filters</span><span·class="p">:</span><span·class="w">170 ········</span><span·class="n">Filters</span><span·class="p">:</span><span·class="w">
171 ············</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">remote_gl</span><span·class="w">171 ············</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">remote_gl</span><span·class="w">
172 ················</span><span·class="n">Fun</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">remote_gl</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">172 ················</span><span·class="n">Fun</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">remote_gl</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">
173 ················</span><span·class="n">Arg</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stop</span><span·class="w">173 ················</span><span·class="n">Arg</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stop</span><span·class="w">
174 ············</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">domain</span><span·class="w">174 ············</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">domain</span><span·class="w">
175 ················</span><span·class="n">Fun</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">175 ················</span><span·class="n">Fun</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">
176 ················</span><span·class="n">Arg</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7791915056-2">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="ss">super</span><span·class="p">,</span><span·class="p"·data-group-id="7791915056-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">sasl</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·cd0201f510c61a60867231048a6a5a44b2c69fc87258ae0cd896b07d38f0080d·...·]-2">}</span><span·class="w">176 ················</span><span·class="n">Arg</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7259398769-2">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="ss">super</span><span·class="p">,</span><span·class="p"·data-group-id="7259398769-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">sasl</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·040294a75362c9eba2f22f58b1c0854d15acb8c8c4f0153d537a10981b24b736·...·]-2">}</span><span·class="w">
177 ············</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">no_domain</span><span·class="w">177 ············</span><span·class="n">Id</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">no_domain</span><span·class="w">
178 ················</span><span·class="n">Fun</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">178 ················</span><span·class="n">Fun</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">
179 ················</span><span·class="n">Arg</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7791915056-4">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="7791915056-5">[</span><span·class="p"·data-group-id="7791915056-5">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·5542b9dbf3ae8a14e0ae24f6767c1e3422da91716fe9932df9cdcba32f883f1a·...·]-4">}</span><span·class="w">179 ················</span><span·class="n">Arg</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7259398769-4">{</span><span·class="ss">log</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="7259398769-5">[</span><span·class="p"·data-group-id="7259398769-5">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·529b15ceee3420bc4ac1c8809f79da65784c069980864681e2b952acffc756b9·...·]-4">}</span><span·class="w">
180 ········</span><span·class="n">Handler</span><span·class="w">·</span><span·class="n">Config</span><span·class="p">:</span><span·class="w">180 ········</span><span·class="n">Handler</span><span·class="w">·</span><span·class="n">Config</span><span·class="p">:</span><span·class="w">
181 ············</span><span·class="nc">burst_limit_enable</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">181 ············</span><span·class="nc">burst_limit_enable</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">
182 ············</span><span·class="nc">burst_limit_max_count</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">500</span><span·class="w">182 ············</span><span·class="nc">burst_limit_max_count</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">500</span><span·class="w">
183 ············</span><span·class="nc">burst_limit_window_time</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">1000</span><span·class="w">183 ············</span><span·class="nc">burst_limit_window_time</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">1000</span><span·class="w">
184 ············</span><span·class="nc">drop_mode_qlen</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">200</span><span·class="w">184 ············</span><span·class="nc">drop_mode_qlen</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">200</span><span·class="w">
185 ············</span><span·class="nc">filesync_repeat_interval</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">no_repeat</span><span·class="w">185 ············</span><span·class="nc">filesync_repeat_interval</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">no_repeat</span><span·class="w">
186 ············</span><span·class="nc">flush_qlen</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">1000</span><span·class="w">186 ············</span><span·class="nc">flush_qlen</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">1000</span><span·class="w">
Offset 211, 15 lines modifiedOffset 211, 15 lines modified
211 level·to·<code·class="inline">info</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">kernel</span><span·class="w">·</span><span·class="ss">logger_level</span><span·class="w">·</span><span·class="ss">info</span><span·class="w">211 level·to·<code·class="inline">info</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">kernel</span><span·class="w">·</span><span·class="ss">logger_level</span><span·class="w">·</span><span·class="ss">info</span><span·class="w">
212 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">-</span><span·class="n">Nov</span><span·class="o">-</span><span·class="mi">2019</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">33</span><span·class="p">:</span><span·class="mf">11.742069</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">212 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">-</span><span·class="n">Nov</span><span·class="o">-</span><span·class="mi">2019</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">33</span><span·class="p">:</span><span·class="mf">11.742069</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
213 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">kernel</span><span·class="w">213 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">kernel</span><span·class="w">
214 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">214 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">
215 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">-</span><span·class="n">Nov</span><span·class="o">-</span><span·class="mi">2019</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">33</span><span·class="p">:</span><span·class="mf">11.746546</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">215 </span><span·class="o">=</span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="o">==</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">4</span><span·class="o">-</span><span·class="n">Nov</span><span·class="o">-</span><span·class="mi">2019</span><span·class="p">:</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">33</span><span·class="p">:</span><span·class="mf">11.746546</span><span·class="w">·</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
216 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stdlib</span><span·class="w">216 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">stdlib</span><span·class="w">
217 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">217 ····</span><span·class="nc">started_at</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">nonode@nohost</span><span·class="w">
218 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.3</span><span·class="w">··</span><span·class="p"·data-group-id="7183840505-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="7183840505-1">)</span><span·class="w">218 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.3</span><span·class="w">··</span><span·class="p"·data-group-id="6500340882-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="6500340882-1">)</span><span·class="w">
219 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre><h2·id="configure-logger-formatter"·class="section-heading">219 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre><h2·id="configure-logger-formatter"·class="section-heading">
220 ··<a·href="#configure-logger-formatter"·class="hover-link">220 ··<a·href="#configure-logger-formatter"·class="hover-link">
221 ····<i·class="ri-link-m"·aria-hidden="true"></i>221 ····<i·class="ri-link-m"·aria-hidden="true"></i>
222 ··</a>222 ··</a>
223 ··<span·class="text">Configure·Logger·formatter</span>223 ··<span·class="text">Configure·Logger·formatter</span>
224 </h2>224 </h2>
225 <p>In·order·to·fit·better·into·your·existing·logging·infrastructure·Logger·can225 <p>In·order·to·fit·better·into·your·existing·logging·infrastructure·Logger·can
Offset 229, 40 lines modifiedOffset 229, 40 lines modified
229 ····<i·class="ri-link-m"·aria-hidden="true"></i>229 ····<i·class="ri-link-m"·aria-hidden="true"></i>
230 ··</a>230 ··</a>
231 ··<span·class="text">Single·line·configuration</span>231 ··<span·class="text">Single·line·configuration</span>
232 </h3>232 </h3>
233 <p>Since·single·line·logging·is·the·default·of·the·built-in·formatter·you·only·have233 <p>Since·single·line·logging·is·the·default·of·the·built-in·formatter·you·only·have
234 to·provide·the·empty·map·as·the·configuration.·The·example·below·uses·the234 to·provide·the·empty·map·as·the·configuration.·The·example·below·uses·the
235 <code·class="inline">sys.config</code>·to·change·the·formatter·configuration.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">sys</span><span·class="p">.</span><span·class="ss">config</span><span·class="w">235 <code·class="inline">sys.config</code>·to·change·the·formatter·configuration.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">sys</span><span·class="p">.</span><span·class="ss">config</span><span·class="w">
236 </span><span·class="p"·data-group-id="1321876037-1">[</span><span·class="p"·data-group-id="1321876037-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">236 </span><span·class="p"·data-group-id="8102276283-1">[</span><span·class="p"·data-group-id="8102276283-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
237 ··</span><span·class="p"·data-group-id="1321876037-3">[</span><span·class="p"·data-group-id="1321876037-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">237 ··</span><span·class="p"·data-group-id="8102276283-3">[</span><span·class="p"·data-group-id="8102276283-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="1321876037-5">[</span><span·class="p"·data-group-id="1321876037-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">238 ····</span><span·class="p"·data-group-id="8102276283-5">[</span><span·class="p"·data-group-id="8102276283-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
239 ······</span><span·class="p"·data-group-id="1321876037-7">#{</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1321876037-8">{</span><span·class="ss">logger_formatter</span><span·c[·...·truncated·by·diffoscope;·len:·584,·SHA:·bc37e412bfbd730c7b05ec762b8397fc7e52228aa7a93ef17b241296d17c5521·...·]-1">]</span><span·class="p">.</span><span·class="w">239 ······</span><span·class="p"·data-group-id="8102276283-7">#{</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8102276283-8">{</span><span·class="ss">logger_formatter</span><span·c[·...·truncated·by·diffoscope;·len:·584,·SHA:·27b68966d3bd88f8dac944eea5cde48ec4bef814c788816713143bd10c56d036·...·]-1">]</span><span·class="p">.</span><span·class="w">
240 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="ss">sys</span><span·class="w">240 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="ss">sys</span><span·class="w">
241 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.1</span><span·class="w">··</span><span·class="p"·data-group-id="1321876037-10">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="1321876037-10">)</span><span·class="gp·unselectable">241 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.1</span><span·class="w">··</span><span·class="p"·data-group-id="8102276283-10">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="8102276283-10">)</span><span·class="gp·unselectable">
242 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="1321876037-11">(</span><span·class="s">&quot;Oh·noes,·an·error&quot;</span><span·class="p"·data-group-id="1321876037-11">)</span><span·class="p">.</span><span·class="w">242 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="8102276283-11">(</span><span·class="s">&quot;Oh·noes,·an·error&quot;</span><span·class="p"·data-group-id="8102276283-11">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="mi">1962</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">03</span><span·class="n">T11</span><span·class="p">:</span><span·class="mi">07</span><span·class="p">:</span><span·class="mf">47.466763</span><span·class="o">-</span><span·class="mi">04</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">an</span><span·class="w">·</span><span·class="ss">error</span></code></pre><p>However,·if·you·just·want·to·change·it·for·the·current·session·you·can·also·do243 </span><span·class="mi">1962</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">03</span><span·class="n">T11</span><span·class="p">:</span><span·class="mi">07</span><span·class="p">:</span><span·class="mf">47.466763</span><span·class="o">-</span><span·class="mi">04</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">an</span><span·class="w">·</span><span·class="ss">error</span></code></pre><p>However,·if·you·just·want·to·change·it·for·the·current·session·you·can·also·do
244 that.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="6276116512-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6276116512-2">{</span><span·class="ss">logg[·...·truncated·by·diffoscope;·len:·268,·SHA:·b45cf742070130a17ac2126067f2a10563bd5324cd4205fc4a8e2113bf6ef8b8·...·]-1">)</span><span·class="p">.</span><span·class="w">244 that.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="3398775204-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3398775204-2">{</span><span·class="ss">logg[·...·truncated·by·diffoscope;·len:·268,·SHA:·48c74d7747f30fb65587951c7e804c4091ffba9de874bd0e761dc0b458ef8f3b·...·]-1">)</span><span·class="p">.</span><span·class="w">
245 </span><span·class="ss">ok</span><span·class="gp·unselectable">245 </span><span·class="ss">ok</span><span·class="gp·unselectable">
246 2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="6276116512-4">(</span><span·class="s">&quot;Oh·noes,·another·error&quot;</span><span·class="p"·data-group-id="6276116512-4">)</span><span·class="p">.</span><span·class="w">246 2&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="3398775204-4">(</span><span·class="s">&quot;Oh·noes,·another·error&quot;</span><span·class="p"·data-group-id="3398775204-4">)</span><span·class="p">.</span><span·class="w">
247 </span><span·class="mi">1962</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">04</span><span·class="n">T15</span><span·class="p">:</span><span·class="mi">34</span><span·class="p">:</span><span·class="mf">02.648713</span><span·class="o">-</span><span·class="mi">04</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">another</span><span·class="w">·</span><span·class="ss">error</span></code></pre><h4>See·also</h4><ul><li><a·href="logger_formatter.html#t:config/0">logger_formatter's·Configuration</a></li><li><a·href="logger_chapter.html#formatters">Formatters</a>·in·the·Logging·User's·Guide</li><li><a·href="logger.html#set_handler_config/3"><code·class="inline">logger:set_handler_config/3</code></a></li></ul><h3·id="add-file-and-line-number-to-log-entries"·class="section-heading">247 </span><span·class="mi">1962</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">04</span><span·class="n">T15</span><span·class="p">:</span><span·class="mi">34</span><span·class="p">:</span><span·class="mf">02.648713</span><span·class="o">-</span><span·class="mi">04</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">another</span><span·class="w">·</span><span·class="ss">error</span></code></pre><h4>See·also</h4><ul><li><a·href="logger_formatter.html#t:config/0">logger_formatter's·Configuration</a></li><li><a·href="logger_chapter.html#formatters">Formatters</a>·in·the·Logging·User's·Guide</li><li><a·href="logger.html#set_handler_config/3"><code·class="inline">logger:set_handler_config/3</code></a></li></ul><h3·id="add-file-and-line-number-to-log-entries"·class="section-heading">
248 ··<a·href="#add-file-and-line-number-to-log-entries"·class="hover-link">248 ··<a·href="#add-file-and-line-number-to-log-entries"·class="hover-link">
249 ····<i·class="ri-link-m"·aria-hidden="true"></i>249 ····<i·class="ri-link-m"·aria-hidden="true"></i>
250 ··</a>250 ··</a>
251 ··<span·class="text">Add·file·and·line·number·to·log·entries</span>251 ··<span·class="text">Add·file·and·line·number·to·log·entries</span>
252 </h3>252 </h3>
253 <p>You·can·change·what·is·printed·to·the·log·by·using·the·formatter·template:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">sys</span><span·class="p">.</span><span·class="ss">config</span><span·class="w">253 <p>You·can·change·what·is·printed·to·the·log·by·using·the·formatter·template:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">sys</span><span·class="p">.</span><span·class="ss">config</span><span·class="w">
254 </span><span·class="p"·data-group-id="1052009193-1">[</span><span·class="p"·data-group-id="1052009193-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">254 </span><span·class="p"·data-group-id="3874391138-1">[</span><span·class="p"·data-group-id="3874391138-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="1052009193-3">[</span><span·class="p"·data-group-id="1052009193-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">255 ··</span><span·class="p"·data-group-id="3874391138-3">[</span><span·class="p"·data-group-id="3874391138-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
256 ····</span><span·class="p"·data-group-id="1052009193-5">[</span><span·class="p"·data-group-id="1052009193-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="p"·data-group-id="3874391138-5">[</span><span·class="p"·data-group-id="3874391138-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
257 ······</span><span·class="p"·data-group-id="1052009193-7">#{</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1052009193-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">257 ······</span><span·class="p"·data-group-id="3874391138-7">#{</span><span·class="w">·</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3874391138-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">
258 ········</span><span·class="p"·data-group-id="1052009193-9">#{</span><span·class="w">·</span><span·class="ss">template</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1052009193-10">[</span><span·class="ss">time</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1058,·SHA:·7a0a9f7762cbae5831bcdbd3ee82b4ec80c9765f5ad433490af9ca01867ae62b·...·]-1">]</span><span·class="p">.</span><span·class="w">258 ········</span><span·class="p"·data-group-id="3874391138-9">#{</span><span·class="w">·</span><span·class="ss">template</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3874391138-10">[</span><span·class="ss">time</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1058,·SHA:·74e9a5f10c4e75d1b578ca43d3b9f785aaa3bb613c53bbc4a13a40d70c24227a·...·]-1">]</span><span·class="p">.</span><span·class="w">
259 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="ss">sys</span><span·class="w">259 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="ss">sys</span><span·class="w">
260 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.1</span><span·class="w">··</span><span·class="p"·data-group-id="1052009193-11">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="1052009193-11">)</span><span·class="gp·unselectable">260 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.1</span><span·class="w">··</span><span·class="p"·data-group-id="3874391138-11">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="3874391138-11">)</span><span·class="gp·unselectable">
261 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="1052009193-12">(</span><span·class="s">&quot;Oh·noes,·more·errors&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1052009193-13">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</[·...·truncated·by·diffoscope;·len:·369,·SHA:·8906648a68792f6498b20ee15fce51e3fd3ad44cacca5484e3c070db08484edc·...·]-12">)</span><span·class="p">.</span><span·class="w">261 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="3874391138-12">(</span><span·class="s">&quot;Oh·noes,·more·errors&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3874391138-13">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</[·...·truncated·by·diffoscope;·len:·369,·SHA:·e40f00f56ba7ed57e3f0c85631e009b22af826fc70062f96ad296a9399a5ef94·...·]-12">)</span><span·class="p">.</span><span·class="w">
262 </span><span·class="mi">1962</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">05</span><span·class="n">T07</span><span·class="p">:</span><span·class="mi">37</span><span·class="p">:</span><span·class="mf">44.104241</span><span·class="o">+</span><span·class="mi">02</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="ss">shell</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">1</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">more</span><span·class="w">·</span><span·class="ss">errors</span></code></pre><p>Note·that·file·and·line·have·to·be·added·in·the·metadata·by·the·caller·of262 </span><span·class="mi">1962</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">05</span><span·class="n">T07</span><span·class="p">:</span><span·class="mi">37</span><span·class="p">:</span><span·class="mf">44.104241</span><span·class="o">+</span><span·class="mi">02</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="ss">shell</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">1</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">more</span><span·class="w">·</span><span·class="ss">errors</span></code></pre><p>Note·that·file·and·line·have·to·be·added·in·the·metadata·by·the·caller·of
263 <a·href="logger.html#log/3"><code·class="inline">logger:log/3</code></a>·as·otherwise·Logger·will·not·know·from·where·it·was·called.·The263 <a·href="logger.html#log/3"><code·class="inline">logger:log/3</code></a>·as·otherwise·Logger·will·not·know·from·where·it·was·called.·The
264 file·and·line·number·are·automatically·added·if·you·use·the·<code·class="inline">?LOG_ERROR</code>·macros264 file·and·line·number·are·automatically·added·if·you·use·the·<code·class="inline">?LOG_ERROR</code>·macros
265 in·<code·class="inline">kernel/include/logger.hrl</code>.</p><h4>See·also</h4><ul><li><a·href="logger_formatter.html#t:config/0">logger_formatter's·Configuration</a></li><li><a·href="logger_formatter.html#t:template/0">logger_formatter's·Template</a></li><li><a·href="logger.html#module-macros">Logger·Macros</a></li><li><a·href="logger_chapter.html#metadata">Metadata</a>·in·the·Logging·User's·Guide</li></ul><h2·id="configuring-handlers"·class="section-heading">265 in·<code·class="inline">kernel/include/logger.hrl</code>.</p><h4>See·also</h4><ul><li><a·href="logger_formatter.html#t:config/0">logger_formatter's·Configuration</a></li><li><a·href="logger_formatter.html#t:template/0">logger_formatter's·Template</a></li><li><a·href="logger.html#module-macros">Logger·Macros</a></li><li><a·href="logger_chapter.html#metadata">Metadata</a>·in·the·Logging·User's·Guide</li></ul><h2·id="configuring-handlers"·class="section-heading">
266 ··<a·href="#configuring-handlers"·class="hover-link">266 ··<a·href="#configuring-handlers"·class="hover-link">
267 ····<i·class="ri-link-m"·aria-hidden="true"></i>267 ····<i·class="ri-link-m"·aria-hidden="true"></i>
268 ··</a>268 ··</a>
Offset 271, 67 lines modifiedOffset 271, 67 lines modified
271 <h3·id="print-logs-to-a-file"·class="section-heading">271 <h3·id="print-logs-to-a-file"·class="section-heading">
272 ··<a·href="#print-logs-to-a-file"·class="hover-link">272 ··<a·href="#print-logs-to-a-file"·class="hover-link">
273 ····<i·class="ri-link-m"·aria-hidden="true"></i>273 ····<i·class="ri-link-m"·aria-hidden="true"></i>
274 ··</a>274 ··</a>
275 ··<span·class="text">Print·logs·to·a·file</span>275 ··<span·class="text">Print·logs·to·a·file</span>
276 </h3>276 </h3>
277 <p>Instead·of·printing·the·logs·to·stdout·we·print·them·to·a·rotating·file·log.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">sys</span><span·class="p">.</span><span·class="ss">config</span><span·class="w">277 <p>Instead·of·printing·the·logs·to·stdout·we·print·them·to·a·rotating·file·log.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">sys</span><span·class="p">.</span><span·class="ss">config</span><span·class="w">
278 </span><span·class="p"·data-group-id="8070728279-1">[</span><span·class="p"·data-group-id="8070728279-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">278 </span><span·class="p"·data-group-id="9030020524-1">[</span><span·class="p"·data-group-id="9030020524-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
279 ··</span><span·class="p"·data-group-id="8070728279-3">[</span><span·class="p"·data-group-id="8070728279-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">279 ··</span><span·class="p"·data-group-id="9030020524-3">[</span><span·class="p"·data-group-id="9030020524-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
280 ····</span><span·class="p"·data-group-id="8070728279-5">[</span><span·class="p"·data-group-id="8070728279-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">280 ····</span><span·class="p"·data-group-id="9030020524-5">[</span><span·class="p"·data-group-id="9030020524-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
281 ······</span><span·class="p"·data-group-id="8070728279-7">#{</span><span·class="w">·</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8070728279-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;log/erlang.log&quot;</span><span·class="p">,</span><span·class="w">281 ······</span><span·class="p"·data-group-id="9030020524-7">#{</span><span·class="w">·</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9030020524-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;log/erlang.log&quot;</span><span·class="p">,</span><span·class="w">
282 ······················</span><span·class="ss">max_no_bytes</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">4096</span><span·class="p">,</span><span·class="w">282 ······················</span><span·class="ss">max_no_bytes</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">4096</span><span·class="p">,</span><span·class="w">
283 ······················</span><span·class="ss">max_no_files</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="8070728279-8">}</span><span·class="p">,</span><span·class="w">283 ······················</span><span·class="ss">max_no_files</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="9030020524-8">}</span><span·class="p">,</span><span·class="w">
284 ·········</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8070728279-9">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8070728279-10">#{</span><span·class="p"·data-group-id="8070728279-10">}</span><span·class="p"·data-group-id="807072[·...·truncated·by·diffoscope;·len:·375,·SHA:·89e45f1ee1691042051e3b2e6f89863f8f06b4550db46da371e896ec1776222f·...·]-1">]</span><span·class="p">.</span><span·class="w">284 ·········</span><span·class="ss">formatter</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9030020524-9">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9030020524-10">#{</span><span·class="p"·data-group-id="9030020524-10">}</span><span·class="p"·data-group-id="903002[·...·truncated·by·diffoscope;·len:·375,·SHA:·502d0836ae0a63fbd6f884d3c875e32c2bbe5e0aba81212a2ee8b0c42d0d43f9·...·]-1">]</span><span·class="p">.</span><span·class="w">
285 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="ss">sys</span><span·class="w">285 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="ss">sys</span><span·class="w">
286 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.1</span><span·class="w">··</span><span·class="p"·data-group-id="8070728279-11">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="8070728279-11">)</span><span·class="gp·unselectable">286 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V10</span><span·class="p">.</span><span·class="mf">5.1</span><span·class="w">··</span><span·class="p"·data-group-id="9030020524-11">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="9030020524-11">)</span><span·class="gp·unselectable">
287 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="8070728279-12">(</span><span·class="s">&quot;Oh·noes,·even·more·errors&quot;</span><span·class="p"·data-group-id="8070728279-12">)</span><span·class="p">.</span><span·class="w">287 1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="9030020524-12">(</span><span·class="s">&quot;Oh·noes,·even·more·errors&quot;</span><span·class="p"·data-group-id="9030020524-12">)</span><span·class="p">.</span><span·class="w">
288 </span><span·class="ss">ok</span><span·class="gp·unselectable">288 </span><span·class="ss">ok</span><span·class="gp·unselectable">
289 2&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">halt</span><span·class="p"·data-group-id="8070728279-13">(</span><span·class="p"·data-group-id="8070728279-13">)</span><span·class="p">.</span><span·class="w">289 2&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">halt</span><span·class="p"·data-group-id="9030020524-13">(</span><span·class="p"·data-group-id="9030020524-13">)</span><span·class="p">.</span><span·class="w">
290 </span><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">log</span><span·class="o">/</span><span·class="ss">erlang</span><span·class="p">.</span><span·class="ss">log</span><span·class="w">290 </span><span·class="sc">$·</span><span·class="ss">cat</span><span·class="w">·</span><span·class="ss">log</span><span·class="o">/</span><span·class="ss">erlang</span><span·class="p">.</span><span·class="ss">log</span><span·class="w">
291 </span><span·class="mi">2019</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">07</span><span·class="n">T11</span><span·class="p">:</span><span·class="mi">47</span><span·class="p">:</span><span·class="mf">16.837958</span><span·class="o">+</span><span·class="mi">02</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">even</span><span·class="w">·</span><span·class="ss">more</span><span·class="w">·</span><span·class="ss">errors</span></code></pre><h4>See·also</h4><ul><li><a·href="logger_std_h.html"><code·class="inline">logger_std_h</code></a></li><li><a·href="logger_chapter.html#handlers">Handlers</a>·in·the·Logging·User's·Guide</li></ul><h3·id="debug-only-handler"·class="section-heading">291 </span><span·class="mi">2019</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">07</span><span·class="n">T11</span><span·class="p">:</span><span·class="mi">47</span><span·class="p">:</span><span·class="mf">16.837958</span><span·class="o">+</span><span·class="mi">02</span><span·class="p">:</span><span·class="mi">00</span><span·class="w">·</span><span·class="nc">error</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Oh</span><span·class="w">·</span><span·class="ss">noes</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">even</span><span·class="w">·</span><span·class="ss">more</span><span·class="w">·</span><span·class="ss">errors</span></code></pre><h4>See·also</h4><ul><li><a·href="logger_std_h.html"><code·class="inline">logger_std_h</code></a></li><li><a·href="logger_chapter.html#handlers">Handlers</a>·in·the·Logging·User's·Guide</li></ul><h3·id="debug-only-handler"·class="section-heading">
292 ··<a·href="#debug-only-handler"·class="hover-link">292 ··<a·href="#debug-only-handler"·class="hover-link">
293 ····<i·class="ri-link-m"·aria-hidden="true"></i>293 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Max diff block lines reached; 55252/96267 bytes (57.39%) of diff not shown.
4.79 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/logger_disk_log_h.html
    
Offset 160, 20 lines modifiedOffset 160, 20 lines modified
160 sync·if·something·has·actually·been·logged.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·sync·operation·is·disabled.·The160 sync·if·something·has·actually·been·logged.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·sync·operation·is·disabled.·The
161 user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to·perform·a161 user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to·perform·a
162 disk_log·sync.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload162 disk_log·sync.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload
163 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler163 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler
164 and·the·disk_log·handler,·and·are·documented·in·the164 and·the·disk_log·handler,·and·are·documented·in·the
165 <a·href="logger_chapter.html#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·when·changing·the·configuration·of·the·handler·in·runtime,·the165 <a·href="logger_chapter.html#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·when·changing·the·configuration·of·the·handler·in·runtime,·the
166 disk_log·options·(<code·class="inline">file</code>,·<code·class="inline">type</code>,·<code·class="inline">max_no_files</code>,·<code·class="inline">max_no_bytes</code>)·must·not·be166 disk_log·options·(<code·class="inline">file</code>,·<code·class="inline">type</code>,·<code·class="inline">max_no_files</code>,·<code·class="inline">max_no_bytes</code>)·must·not·be
167 modified.</p><p>Example·of·adding·a·disk_log·handler:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="0496443979-1">(</span><span·class="ss">my_disk_log_h</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_disk_log_h</span><span·class="p">,</span><span·class="w">167 modified.</p><p>Example·of·adding·a·disk_log·handler:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="1312161226-1">(</span><span·class="ss">my_disk_log_h</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_disk_log_h</span><span·class="p">,</span><span·class="w">
168 ···················</span><span·class="p"·data-group-id="0496443979-2">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0496443979-3">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;./my_disk_log&quot;</span><span·class="p">,</span><span·class="w">168 ···················</span><span·class="p"·data-group-id="1312161226-2">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1312161226-3">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;./my_disk_log&quot;</span><span·class="p">,</span><span·class="w">
169 ·································</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">wrap</span><span·class="p">,</span><span·class="w">169 ·································</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">wrap</span><span·class="p">,</span><span·class="w">
170 ·································</span><span·class="ss">max_no_files</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">170 ·································</span><span·class="ss">max_no_files</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">
171 ·································</span><span·class="ss">max_no_bytes</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">10000</span><span·class="p">,</span><span·class="w">171 ·································</span><span·class="ss">max_no_bytes</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">10000</span><span·class="p">,</span><span·class="w">
172 ·································</span><span·class="ss">filesync_repeat_interval</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1000</span><span·class="p"·data-group-id="0496443979-3">}</span><span·class="p"·data-group-id="0496443979-2">}</span><span·class="p"·data-group-id="0496443979-1">)</span><span·class="p">.</span></code></pre><p>To·use·the·disk_log·handler·instead·of·the·default·standard·handler·when172 ·································</span><span·class="ss">filesync_repeat_interval</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1000</span><span·class="p"·data-group-id="1312161226-3">}</span><span·class="p"·data-group-id="1312161226-2">}</span><span·class="p"·data-group-id="1312161226-1">)</span><span·class="p">.</span></code></pre><p>To·use·the·disk_log·handler·instead·of·the·default·standard·handler·when
173 starting·an·Erlang·node,·change·the·Kernel·default·logger·to·use173 starting·an·Erlang·node,·change·the·Kernel·default·logger·to·use
174 <code·class="inline">logger_disk_log_h</code>.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_disk_log_h,174 <code·class="inline">logger_disk_log_h</code>.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_disk_log_h,
175 ······················#{config·=&gt;·#{file·=&gt;·&quot;./system_disk_log&quot;}}}]'</code></pre><h2·id="module-see-also"·class="section-heading">175 ······················#{config·=&gt;·#{file·=&gt;·&quot;./system_disk_log&quot;}}}]'</code></pre><h2·id="module-see-also"·class="section-heading">
176 ··<a·href="#module-see-also"·class="hover-link">176 ··<a·href="#module-see-also"·class="hover-link">
177 ····<i·class="ri-link-m"·aria-hidden="true"></i>177 ····<i·class="ri-link-m"·aria-hidden="true"></i>
178 ··</a>178 ··</a>
179 ··<span·class="text">See·Also</span>179 ··<span·class="text">See·Also</span>
15.6 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/logger_filters.html
    
Offset 245, 35 lines modifiedOffset 245, 35 lines modified
245 ······</div>245 ······</div>
  
246 <p>This·filter·provides·a·way·of·filtering·log·events·based·on·a·<code·class="inline">domain</code>·field·in246 <p>This·filter·provides·a·way·of·filtering·log·events·based·on·a·<code·class="inline">domain</code>·field·in
247 <code·class="inline">Metadata</code>.·This·field·is·optional,·and·the·purpose·of·using·it·is·to·group·log247 <code·class="inline">Metadata</code>.·This·field·is·optional,·and·the·purpose·of·using·it·is·to·group·log
248 events·from,·for·example,·a·specific·functional·area.·This·allows·filtering·or248 events·from,·for·example,·a·specific·functional·area.·This·allows·filtering·or
249 other·specialized·treatment·in·a·Logger·handler.</p><p>A·domain·field·must·be·a·list·of·atoms,·creating·smaller·and·more·specialized249 other·specialized·treatment·in·a·Logger·handler.</p><p>A·domain·field·must·be·a·list·of·atoms,·creating·smaller·and·more·specialized
250 domains·as·the·list·grows·longer.·The·greatest·domain·is·<code·class="inline">[]</code>,·which·comprises250 domains·as·the·list·grows·longer.·The·greatest·domain·is·<code·class="inline">[]</code>,·which·comprises
251 all·possible·domains.</p><p>For·example,·consider·the·following·domains:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">D1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8892582879-1">[</span><span·class="ss">otp</span><span·class="p"·data-group-id="8892582879-1">]</span><span·class="w">251 all·possible·domains.</p><p>For·example,·consider·the·following·domains:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">D1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6622395747-1">[</span><span·class="ss">otp</span><span·class="p"·data-group-id="6622395747-1">]</span><span·class="w">
252 </span><span·class="n">D2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8892582879-2">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sasl</span><span·class="p"·data-group-id="8892582879-2">]</span></code></pre><p><code·class="inline">D1</code>·is·the·greatest·of·the·two,·and·is·said·to·be·a·super-domain·of·<code·class="inline">D2</code>.·<code·class="inline">D2</code>252 </span><span·class="n">D2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6622395747-2">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sasl</span><span·class="p"·data-group-id="6622395747-2">]</span></code></pre><p><code·class="inline">D1</code>·is·the·greatest·of·the·two,·and·is·said·to·be·a·super-domain·of·<code·class="inline">D2</code>.·<code·class="inline">D2</code>
253 is·a·sub-domain·<code·class="inline">D1</code>.·Both·<code·class="inline">D1</code>·and·<code·class="inline">D2</code>·are·sub-domains·of·<code·class="inline">[]</code>.</p><p>The·above·domains·are·used·for·logs·originating·from·Erlang/OTP.·D1·specifies253 is·a·sub-domain·<code·class="inline">D1</code>.·Both·<code·class="inline">D1</code>·and·<code·class="inline">D2</code>·are·sub-domains·of·<code·class="inline">[]</code>.</p><p>The·above·domains·are·used·for·logs·originating·from·Erlang/OTP.·D1·specifies
254 that·the·log·event·comes·from·Erlang/OTP·in·general,·and·D2·indicates·that·the254 that·the·log·event·comes·from·Erlang/OTP·in·general,·and·D2·indicates·that·the
255 log·event·is·a·so·called·<a·href="logger_chapter.html#sasl_reports">SASL·report</a>.</p><p>The·<code·class="inline">Extra</code>·parameter·to·the·<a·href="#domain/2"><code·class="inline">domain/2</code></a>·function·is·specified·when255 log·event·is·a·so·called·<a·href="logger_chapter.html#sasl_reports">SASL·report</a>.</p><p>The·<code·class="inline">Extra</code>·parameter·to·the·<a·href="#domain/2"><code·class="inline">domain/2</code></a>·function·is·specified·when
256 adding·the·filter·via·<a·href="logger.html#add_primary_filter/2"><code·class="inline">logger:add_primary_filter/2</code></a>·or256 adding·the·filter·via·<a·href="logger.html#add_primary_filter/2"><code·class="inline">logger:add_primary_filter/2</code></a>·or
257 <a·href="logger.html#add_handler_filter/3"><code·class="inline">logger:add_handler_filter/3</code></a>.</p><p>The·filter·compares·the·value·of·the·<code·class="inline">domain</code>·field·in·the·log·event's·metadata257 <a·href="logger.html#add_handler_filter/3"><code·class="inline">logger:add_handler_filter/3</code></a>.</p><p>The·filter·compares·the·value·of·the·<code·class="inline">domain</code>·field·in·the·log·event's·metadata
258 (<code·class="inline">Domain</code>)·against·<code·class="inline">MatchDomain</code>.·The·filter·matches·if·the·value·of·<code·class="inline">Compare</code>258 (<code·class="inline">Domain</code>)·against·<code·class="inline">MatchDomain</code>.·The·filter·matches·if·the·value·of·<code·class="inline">Compare</code>
259 is:</p><ul><li><p><strong><code·class="inline">sub</code></strong>·-·and·<code·class="inline">Domain</code>·is·equal·to·or·a·sub-domain·of·<code·class="inline">MatchDomain</code>,·that259 is:</p><ul><li><p><strong><code·class="inline">sub</code></strong>·-·and·<code·class="inline">Domain</code>·is·equal·to·or·a·sub-domain·of·<code·class="inline">MatchDomain</code>,·that
260 is,·if·<code·class="inline">MatchDomain</code>·is·a·prefix·of·<code·class="inline">Domain</code>.</p></li><li><p><strong><code·class="inline">super</code></strong>·-·and·<code·class="inline">Domain</code>·is·equal·to·or·a·super-domain·of·<code·class="inline">MatchDomain</code>,260 is,·if·<code·class="inline">MatchDomain</code>·is·a·prefix·of·<code·class="inline">Domain</code>.</p></li><li><p><strong><code·class="inline">super</code></strong>·-·and·<code·class="inline">Domain</code>·is·equal·to·or·a·super-domain·of·<code·class="inline">MatchDomain</code>,
261 that·is,·if·<code·class="inline">Domain</code>·is·a·prefix·of·<code·class="inline">MatchDomain</code>.</p></li><li><p><strong><code·class="inline">equal</code></strong>·-·and·<code·class="inline">Domain</code>·is·equal·to·<code·class="inline">MatchDomain</code>.</p></li><li><p><strong><code·class="inline">not_equal</code></strong>·-·and·<code·class="inline">Domain</code>·differs·from·<code·class="inline">MatchDomain</code>,·or·if·there·is·no261 that·is,·if·<code·class="inline">Domain</code>·is·a·prefix·of·<code·class="inline">MatchDomain</code>.</p></li><li><p><strong><code·class="inline">equal</code></strong>·-·and·<code·class="inline">Domain</code>·is·equal·to·<code·class="inline">MatchDomain</code>.</p></li><li><p><strong><code·class="inline">not_equal</code></strong>·-·and·<code·class="inline">Domain</code>·differs·from·<code·class="inline">MatchDomain</code>,·or·if·there·is·no
262 domain·field·in·metadata.</p></li><li><p><strong><code·class="inline">undefined</code></strong>·-·and·there·is·no·domain·field·in·metadata.·In·this·case262 domain·field·in·metadata.</p></li><li><p><strong><code·class="inline">undefined</code></strong>·-·and·there·is·no·domain·field·in·metadata.·In·this·case
263 <code·class="inline">MatchDomain</code>·must·be·set·to·<code·class="inline">[]</code>.</p></li></ul><p>If·the·filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">log</code>,·the·log·event·is·allowed.·If·the263 <code·class="inline">MatchDomain</code>·must·be·set·to·<code·class="inline">[]</code>.</p></li></ul><p>If·the·filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">log</code>,·the·log·event·is·allowed.·If·the
264 filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">stop</code>,·the·log·event·is·stopped.</p><p>If·the·filter·does·not·match,·it·returns·<code·class="inline">ignore</code>,·meaning·that·other·filters,264 filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">stop</code>,·the·log·event·is·stopped.</p><p>If·the·filter·does·not·match,·it·returns·<code·class="inline">ignore</code>,·meaning·that·other·filters,
265 or·the·value·of·the·configuration·parameter·<code·class="inline">filter_default</code>,·decide·if·the265 or·the·value·of·the·configuration·parameter·<code·class="inline">filter_default</code>,·decide·if·the
266 event·is·allowed·or·not.</p><p>Log·events·that·do·not·contain·any·domain·field,·match·only·when·<code·class="inline">Compare</code>·is266 event·is·allowed·or·not.</p><p>Log·events·that·do·not·contain·any·domain·field,·match·only·when·<code·class="inline">Compare</code>·is
267 equal·to·<code·class="inline">undefined</code>·or·<code·class="inline">not_equal</code>.</p><p>Example:·stop·all·events·with·domain·<code·class="inline">[otp,·sasl·|·_]</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="1967390873-1">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">filter_default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">log</span><span·class="p"·data-group-id="1967390873-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·this·is·the·default</span><span·class="w">267 equal·to·<code·class="inline">undefined</code>·or·<code·class="inline">not_equal</code>.</p><p>Example:·stop·all·events·with·domain·<code·class="inline">[otp,·sasl·|·_]</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="3627779663-1">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">filter_default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">log</span><span·class="p"·data-group-id="3627779663-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·this·is·the·default</span><span·class="w">
268 </span><span·class="ss">ok</span><span·class="gp·unselectable">268 </span><span·class="ss">ok</span><span·class="gp·unselectable">
269 2&gt;·</span><span·class="n">Filter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1967390873-2">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·511,·SHA:·0847fe5fef5851bf64104c0476311c33c1d497819b1517a9548329c993e24313·...·]3-2">}</span><span·class="p">.</span><span·class="w">269 2&gt;·</span><span·class="n">Filter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3627779663-2">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">domain</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·511,·SHA:·cf0c99b4ade889598600ef339068094c06761e55535e44a39573585e29f53e79·...·]3-2">}</span><span·class="p">.</span><span·class="w">
270 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">270 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
271 3&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler_filter</span><span·class="p"·data-group-id="1967390873-5">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">no_sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filter</span><span·class="p"·data-group-id="1967390873-5">)</span><span·class="p">.</span><span·class="w">271 3&gt;·</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler_filter</span><span·class="p"·data-group-id="3627779663-5">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">no_sasl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filter</span><span·class="p"·data-group-id="3627779663-5">)</span><span·class="p">.</span><span·class="w">
272 </span><span·class="ss">ok</span></code></pre>272 </span><span·class="ss">ok</span></code></pre>
273 ··</section>273 ··</section>
274 </section>274 </section>
275 <section·class="detail"·id="level/2">275 <section·class="detail"·id="level/2">
  
276 ··<div·class="detail-header">276 ··<div·class="detail-header">
277 ····<a·href="#level/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">277 ····<a·href="#level/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 308, 17 lines modifiedOffset 308, 17 lines modified
308 matches·log·events·by·comparing·the·log·level·with·a·specified·<code·class="inline">MatchLevel</code></p><p>The·<code·class="inline">Extra</code>·parameter·is·specified·when·adding·the·filter·via308 matches·log·events·by·comparing·the·log·level·with·a·specified·<code·class="inline">MatchLevel</code></p><p>The·<code·class="inline">Extra</code>·parameter·is·specified·when·adding·the·filter·via
309 <a·href="logger.html#add_primary_filter/2"><code·class="inline">logger:add_primary_filter/2</code></a>·or·<a·href="logger.html#add_handler_filter/3"><code·class="inline">logger:add_handler_filter/3</code></a>.</p><p>The·filter·compares·the·value·of·the·event's·log·level·(<code·class="inline">Level</code>)·to·<code·class="inline">MatchLevel</code>309 <a·href="logger.html#add_primary_filter/2"><code·class="inline">logger:add_primary_filter/2</code></a>·or·<a·href="logger.html#add_handler_filter/3"><code·class="inline">logger:add_handler_filter/3</code></a>.</p><p>The·filter·compares·the·value·of·the·event's·log·level·(<code·class="inline">Level</code>)·to·<code·class="inline">MatchLevel</code>
310 by·calling310 by·calling
311 <a·href="logger.html#compare_levels/2"><code·class="inline">logger:compare_levels(Level,·MatchLevel)</code></a>.·The311 <a·href="logger.html#compare_levels/2"><code·class="inline">logger:compare_levels(Level,·MatchLevel)</code></a>.·The
312 filter·matches·if·the·value·of·<code·class="inline">Operator</code>·is:</p><ul><li><p><strong><code·class="inline">neq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">lt</code>·or·<code·class="inline">gt</code>.</p></li><li><p><strong><code·class="inline">eq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">eq</code>.</p></li><li><p><strong><code·class="inline">lt</code></strong>·-·and·the·compare·function·returns·<code·class="inline">lt</code>.</p></li><li><p><strong><code·class="inline">gt</code></strong>·-·and·the·compare·function·returns·<code·class="inline">gt</code>.</p></li><li><p><strong><code·class="inline">lteq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">lt</code>·or·<code·class="inline">eq</code>.</p></li><li><p><strong><code·class="inline">gteq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">gt</code>·or·<code·class="inline">eq</code>.</p></li></ul><p>If·the·filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">log</code>,·the·log·event·is·allowed.·If·the312 filter·matches·if·the·value·of·<code·class="inline">Operator</code>·is:</p><ul><li><p><strong><code·class="inline">neq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">lt</code>·or·<code·class="inline">gt</code>.</p></li><li><p><strong><code·class="inline">eq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">eq</code>.</p></li><li><p><strong><code·class="inline">lt</code></strong>·-·and·the·compare·function·returns·<code·class="inline">lt</code>.</p></li><li><p><strong><code·class="inline">gt</code></strong>·-·and·the·compare·function·returns·<code·class="inline">gt</code>.</p></li><li><p><strong><code·class="inline">lteq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">lt</code>·or·<code·class="inline">eq</code>.</p></li><li><p><strong><code·class="inline">gteq</code></strong>·-·and·the·compare·function·returns·<code·class="inline">gt</code>·or·<code·class="inline">eq</code>.</p></li></ul><p>If·the·filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">log</code>,·the·log·event·is·allowed.·If·the
313 filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">stop</code>,·the·log·event·is·stopped.</p><p>If·the·filter·does·not·match,·it·returns·<code·class="inline">ignore</code>,·meaning·that·other·filters,313 filter·matches·and·<code·class="inline">Action</code>·is·<code·class="inline">stop</code>,·the·log·event·is·stopped.</p><p>If·the·filter·does·not·match,·it·returns·<code·class="inline">ignore</code>,·meaning·that·other·filters,
314 or·the·value·of·the·configuration·parameter·<code·class="inline">filter_default</code>,·will·decide·if·the314 or·the·value·of·the·configuration·parameter·<code·class="inline">filter_default</code>,·will·decide·if·the
315 event·is·allowed·or·not.</p><p>Example:·only·allow·debug·level·log·events</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="9690835298-1">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">filter_default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="9690835298-1">)</span><span·class="p">.</span><span·class="w">315 event·is·allowed·or·not.</p><p>Example:·only·allow·debug·level·log·events</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">set_handler_config</span><span·class="p"·data-group-id="6838579377-1">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">filter_default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="6838579377-1">)</span><span·class="p">.</span><span·class="w">
316 </span><span·class="n">Filter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9690835298-2">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">level</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·329,·SHA:·b7e3f3f47ea7767af33ace6ae356c1cd1fd9cfac15ad6f801d9ecd28dc8b3d60·...·]-2">}</span><span·class="p">.</span><span·class="w">316 </span><span·class="n">Filter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6838579377-2">{</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">logger_filters</span><span·class="p">:</span><span·class="ss">level</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·329,·SHA:·ed5a3b4259d25c23cd8944aef8983a71fb6bc0412caa158eb450a64f831ee6bc·...·]-2">}</span><span·class="p">.</span><span·class="w">
317 </span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler_filter</span><span·class="p"·data-group-id="9690835298-4">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug_only</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filter</span><span·class="p"·data-group-id="9690835298-4">)</span><span·class="p">.</span><span·class="w">317 </span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler_filter</span><span·class="p"·data-group-id="6838579377-4">(</span><span·class="ss">h1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug_only</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filter</span><span·class="p"·data-group-id="6838579377-4">)</span><span·class="p">.</span><span·class="w">
318 </span><span·class="ss">ok</span></code></pre>318 </span><span·class="ss">ok</span></code></pre>
319 ··</section>319 ··</section>
320 </section>320 </section>
321 <section·class="detail"·id="progress/2">321 <section·class="detail"·id="progress/2">
  
322 ··<div·class="detail-header">322 ··<div·class="detail-header">
323 ····<a·href="#progress/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">323 ····<a·href="#progress/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
4.53 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/logger_std_h.html
    
Offset 181, 17 lines modifiedOffset 181, 17 lines modified
181 but·only·performs·a·new·sync·if·something·has·actually·been·logged.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·file·sync·operation·is·disabled,181 but·only·performs·a·new·sync·if·something·has·actually·been·logged.</p><p>If·<code·class="inline">no_repeat</code>·is·set·as·value,·the·repeated·file·sync·operation·is·disabled,
182 and·it·is·the·operating·system·settings·that·determine·how·quickly·or·slowly182 and·it·is·the·operating·system·settings·that·determine·how·quickly·or·slowly
183 data·is·written·to·disk.·The·user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to183 data·is·written·to·disk.·The·user·can·also·call·the·<a·href="#filesync/1"><code·class="inline">filesync/1</code></a>·function·to
184 perform·a·file·sync.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload184 perform·a·file·sync.</p><p>Defaults·to·<code·class="inline">5000</code>·milliseconds.</p></li></ul><p>Other·configuration·parameters·exist,·to·be·used·for·customizing·the·overload
185 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler185 protection·behaviour.·The·same·parameters·are·used·both·in·the·standard·handler
186 and·the·disk_log·handler,·and·are·documented·in·the186 and·the·disk_log·handler,·and·are·documented·in·the
187 <a·href="logger_chapter.html#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·if·changing·the·configuration·of·the·handler·in·runtime,·the·<code·class="inline">type</code>,187 <a·href="logger_chapter.html#overload_protection"><code·class="inline">User's·Guide</code></a>.</p><p>Notice·that·if·changing·the·configuration·of·the·handler·in·runtime,·the·<code·class="inline">type</code>,
188 <code·class="inline">file</code>,·or·<code·class="inline">modes</code>·parameters·must·not·be·modified.</p><p>Example·of·adding·a·standard·handler:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="8027637440-1">(</span><span·class="ss">my_standard_h</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">188 <code·class="inline">file</code>,·or·<code·class="inline">modes</code>·parameters·must·not·be·modified.</p><p>Example·of·adding·a·standard·handler:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler</span><span·class="p"·data-group-id="4460627663-1">(</span><span·class="ss">my_standard_h</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">
189 ···················</span><span·class="p"·data-group-id="8027637440-2">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8027637440-3">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;./system_info.log&quot;</span><span·class="p">,</span><span·class="w">189 ···················</span><span·class="p"·data-group-id="4460627663-2">#{</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4460627663-3">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;./system_info.log&quot;</span><span·class="p">,</span><span·class="w">
190 ·································</span><span·class="ss">filesync_repeat_interval</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1000</span><span·class="p"·data-group-id="8027637440-3">}</span><span·class="p"·data-group-id="8027637440-2">}</span><span·class="p"·data-group-id="8027637440-1">)</span><span·class="p">.</span></code></pre><p>To·set·the·default·handler,·that·starts·initially·with·the·Kernel·application,190 ·································</span><span·class="ss">filesync_repeat_interval</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1000</span><span·class="p"·data-group-id="4460627663-3">}</span><span·class="p"·data-group-id="4460627663-2">}</span><span·class="p"·data-group-id="4460627663-1">)</span><span·class="p">.</span></code></pre><p>To·set·the·default·handler,·that·starts·initially·with·the·Kernel·application,
191 to·log·to·file·instead·of·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>,·change·the191 to·log·to·file·instead·of·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>,·change·the
192 Kernel·default·logger·configuration.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_std_h,192 Kernel·default·logger·configuration.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_std_h,
193 ······················#{config·=&gt;·#{file·=&gt;·&quot;./log.log&quot;}}}]'</code></pre><p>An·example·of·how·to·replace·the·standard·handler·with·a·disk_log·handler·at193 ······················#{config·=&gt;·#{file·=&gt;·&quot;./log.log&quot;}}}]'</code></pre><p>An·example·of·how·to·replace·the·standard·handler·with·a·disk_log·handler·at
194 startup·is·found·in·the·<a·href="logger_disk_log_h.html"><code·class="inline">logger_disk_log_h</code></a>·manual.</p><h2·id="module-see-also"·class="section-heading">194 startup·is·found·in·the·<a·href="logger_disk_log_h.html"><code·class="inline">logger_disk_log_h</code></a>·manual.</p><h2·id="module-see-also"·class="section-heading">
195 ··<a·href="#module-see-also"·class="hover-link">195 ··<a·href="#module-see-also"·class="hover-link">
196 ····<i·class="ri-link-m"·aria-hidden="true"></i>196 ····<i·class="ri-link-m"·aria-hidden="true"></i>
197 ··</a>197 ··</a>
4.91 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/net.html
    
Offset 553, 21 lines modifiedOffset 553, 21 lines modified
  
553 ··········<pre·translate="no"><span·class="attribute">-type</span>·ifaddrs_filter_fun()·::·fun((<a·href="#t:ifaddrs/0">ifaddrs</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>553 ··········<pre·translate="no"><span·class="attribute">-type</span>·ifaddrs_filter_fun()·::·fun((<a·href="#t:ifaddrs/0">ifaddrs</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>
  
554 ······</div>554 ······</div>
  
555 <p>Interface·address·filtering·selector·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:function/0"><code·class="inline">function/0</code></a>.</p><p>For·each·<code·class="inline">ifaddrs</code>·entry,·return·either·<code·class="inline">true</code>·to·keep·the·entry555 <p>Interface·address·filtering·selector·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:function/0"><code·class="inline">function/0</code></a>.</p><p>For·each·<code·class="inline">ifaddrs</code>·entry,·return·either·<code·class="inline">true</code>·to·keep·the·entry
556 or·<code·class="inline">false</code>·to·discard·the·entry.</p><p>For·example,·to·get·an·interface·list·which·only·contains556 or·<code·class="inline">false</code>·to·discard·the·entry.</p><p>For·example,·to·get·an·interface·list·which·only·contains
557 non-<code·class="inline">loopback</code>·<code·class="inline">inet</code>·interfaces:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">net</span><span·class="p">:</span><span·class="nf">getifaddrs</span><span·class="p"·data-group-id="8194120900-1">(</span><span·class="w">557 non-<code·class="inline">loopback</code>·<code·class="inline">inet</code>·interfaces:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">net</span><span·class="p">:</span><span·class="nf">getifaddrs</span><span·class="p"·data-group-id="7080223259-1">(</span><span·class="w">
558 ····</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8194120900-2">(</span><span·class="p"·data-group-id="8194120900-3">#{</span><span·class="w">·</span><span·class="ss">addr</span><span·class="w">··</span><span·class="p">:=</span><span·class="w">·</span><span·class="p"·data-group-id="8194120900-4">#{</span>[·...·truncated·by·diffoscope;·len:·172,·SHA:·712f3f0e6e399bb896b443d6500c048e751727972f7c2cacf7c4f9f88bd42166·...·]-4">}</span><span·class="p">,</span><span·class="w">558 ····</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7080223259-2">(</span><span·class="p"·data-group-id="7080223259-3">#{</span><span·class="w">·</span><span·class="ss">addr</span><span·class="w">··</span><span·class="p">:=</span><span·class="w">·</span><span·class="p"·data-group-id="7080223259-4">#{</span>[·...·truncated·by·diffoscope;·len:·172,·SHA:·42c57ac8966751cc50162970468880246d5f32e702ff89a4c6e091c0fbda61fb·...·]-4">}</span><span·class="p">,</span><span·class="w">
559 ············</span><span·class="ss">flags</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Flags</span><span·class="p"·data-group-id="8194120900-3">}</span><span·class="p"·data-group-id="8194120900-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">559 ············</span><span·class="ss">flags</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Flags</span><span·class="p"·data-group-id="7080223259-3">}</span><span·class="p"·data-group-id="7080223259-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
560 ··········</span><span·class="ow">not</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="8194120900-5">(</span><span·class="ss">loopback</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Flags</span><span·class="p"·data-group-id="8194120900-5">)</span><span·class="p">;</span><span·class="w">560 ··········</span><span·class="ow">not</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="7080223259-5">(</span><span·class="ss">loopback</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Flags</span><span·class="p"·data-group-id="7080223259-5">)</span><span·class="p">;</span><span·class="w">
561 ········</span><span·class="p"·data-group-id="8194120900-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="8194120900-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">561 ········</span><span·class="p"·data-group-id="7080223259-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="7080223259-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
562 ··········</span><span·class="ss">false</span><span·class="w">562 ··········</span><span·class="ss">false</span><span·class="w">
563 ····</span><span·class="k">end</span><span·class="p"·data-group-id="8194120900-1">)</span><span·class="p">.</span></code></pre>563 ····</span><span·class="k">end</span><span·class="p"·data-group-id="7080223259-1">)</span><span·class="p">.</span></code></pre>
564 ··</section>564 ··</section>
565 </section>565 </section>
566 <section·class="detail"·id="t:ifaddrs_filter_map/0">566 <section·class="detail"·id="t:ifaddrs_filter_map/0">
  
567 ··<div·class="detail-header">567 ··<div·class="detail-header">
568 ····<a·href="#t:ifaddrs_filter_map/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">568 ····<a·href="#t:ifaddrs_filter_map/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
569 ······<i·class="ri-link-m"·aria-hidden="true"></i>569 ······<i·class="ri-link-m"·aria-hidden="true"></i>
3.1 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/net_adm.html
    
Offset 475, 16 lines modifiedOffset 475, 16 lines modified
475 ···················Name·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),475 ···················Name·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),
476 ···················Port·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),476 ···················Port·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),
477 ···················Reason·::·address·|·<a·href="file.html#t:posix/0">file:posix</a>().</pre>477 ···················Reason·::·address·|·<a·href="file.html#t:posix/0">file:posix</a>().</pre>
  
478 ······</div>478 ······</div>
  
479 <p>Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>479 <p>Returns·the·names·and·associated·port·numbers·of·the·Erlang·nodes·that·<code·class="inline">epmd</code>
480 registered·at·the·specified·host.</p><p>Similar·to·<code·class="inline">epmd·-names</code>,·see·<a·href="../../../../erts-15.2.2/doc/html/epmd_cmd.html"><code·class="inline">erts:epmd</code></a>.</p><p>Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not·operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(arne@dunn)1&gt;·</span><span·class="nc">net_adm</span><span·class="p">:</span><span·class="nf">names</span><span·class="p"·data-group-id="2383817434-1">(</span><span·class="p"·data-group-id="2383817434-1">)</span><span·class="p">.</span><span·class="w">480 registered·at·the·specified·host.</p><p>Similar·to·<code·class="inline">epmd·-names</code>,·see·<a·href="../../../../erts-15.2.2/doc/html/epmd_cmd.html"><code·class="inline">erts:epmd</code></a>.</p><p>Returns·<code·class="inline">{error,·address}</code>·if·<code·class="inline">epmd</code>·is·not·operational.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(arne@dunn)1&gt;·</span><span·class="nc">net_adm</span><span·class="p">:</span><span·class="nf">names</span><span·class="p"·data-group-id="1958133297-1">(</span><span·class="p"·data-group-id="1958133297-1">)</span><span·class="p">.</span><span·class="w">
481 </span><span·class="p"·data-group-id="2383817434-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2383817434-3">[</span><span·class="p"·data-group-id="2383817434-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·e2d14f667462cf55d5e0fb3bc3504871015d3707d9778face244dc07c614dc10·...·]-2">}</span></code></pre>481 </span><span·class="p"·data-group-id="1958133297-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1958133297-3">[</span><span·class="p"·data-group-id="1958133297-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·16dabf54861d1d60543152d01f9392da82d7d60183cdcd787974e2625940c44e·...·]-2">}</span></code></pre>
482 ··</section>482 ··</section>
483 </section>483 </section>
484 <section·class="detail"·id="ping/1">484 <section·class="detail"·id="ping/1">
  
485 ··<div·class="detail-header">485 ··<div·class="detail-header">
486 ····<a·href="#ping/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">486 ····<a·href="#ping/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
487 ······<i·class="ri-link-m"·aria-hidden="true"></i>487 ······<i·class="ri-link-m"·aria-hidden="true"></i>
26.1 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/net_kernel.html
    
Offset 128, 17 lines modifiedOffset 128, 17 lines modified
  
  
128 ····<section·id="moduledoc">128 ····<section·id="moduledoc">
129 <p>Erlang·networking·kernel.</p><p>The·net·kernel·is·a·system·process,·registered·as·<code·class="inline">net_kernel</code>,·which·must·be129 <p>Erlang·networking·kernel.</p><p>The·net·kernel·is·a·system·process,·registered·as·<code·class="inline">net_kernel</code>,·which·must·be
130 operational·for·distributed·Erlang·to·work.·The·purpose·of·this·process·is·to130 operational·for·distributed·Erlang·to·work.·The·purpose·of·this·process·is·to
131 implement·parts·of·the·BIFs·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/4</code></a>·and131 implement·parts·of·the·BIFs·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/4</code></a>·and
132 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#spawn_link/4"><code·class="inline">spawn_link/4</code></a>,·and·to·provide·monitoring·of·the·network.</p><p>An·Erlang·node·is·started·using·command-line·flag·<code·class="inline">-name</code>·or·<code·class="inline">-sname</code>:</p><pre><code·class="text">$·erl·-sname·foobar</code></pre><p>It·is·also·possible·to·call·<a·href="#start/2"><code·class="inline">net_kernel:start(foobar,·#{})</code></a>132 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#spawn_link/4"><code·class="inline">spawn_link/4</code></a>,·and·to·provide·monitoring·of·the·network.</p><p>An·Erlang·node·is·started·using·command-line·flag·<code·class="inline">-name</code>·or·<code·class="inline">-sname</code>:</p><pre><code·class="text">$·erl·-sname·foobar</code></pre><p>It·is·also·possible·to·call·<a·href="#start/2"><code·class="inline">net_kernel:start(foobar,·#{})</code></a>
133 directly·from·the·normal·Erlang·shell·prompt:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9990703026-1">(</span><span·class="ss">foobar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9990703026-2">#{</span><span·class="ss">name_domain</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w"[·...·truncated·by·diffoscope;·len:·137,·SHA:·eee7fe6e395add5b0f8ec1b461d916b90a3f763f12b32e3b4bb647827c47bbcb·...·]-1">)</span><span·class="p">.</span><span·class="w">133 directly·from·the·normal·Erlang·shell·prompt:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4825311710-1">(</span><span·class="ss">foobar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4825311710-2">#{</span><span·class="ss">name_domain</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w"[·...·truncated·by·diffoscope;·len:·137,·SHA:·faf55257c28d96c6624b33dcab2435c88091c2a38031115b3d24f5794c853419·...·]-1">)</span><span·class="p">.</span><span·class="w">
134 </span><span·class="p"·data-group-id="9990703026-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.64</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9990703026-3">}</span><span·class="w">134 </span><span·class="p"·data-group-id="4825311710-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.64</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4825311710-3">}</span><span·class="w">
135 </span><span·class="p"·data-group-id="9990703026-4">(</span><span·class="ss">foobar@gringotts</span><span·class="p"·data-group-id="9990703026-4">)</span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre><p>If·the·node·is·started·with·command-line·flag·<code·class="inline">-sname</code>,·the·node·name·is135 </span><span·class="p"·data-group-id="4825311710-4">(</span><span·class="ss">foobar@gringotts</span><span·class="p"·data-group-id="4825311710-4">)</span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre><p>If·the·node·is·started·with·command-line·flag·<code·class="inline">-sname</code>,·the·node·name·is
136 <code·class="inline">foobar@Host</code>,·where·<code·class="inline">Host</code>·is·the·short·name·of·the·host·(not·the·fully136 <code·class="inline">foobar@Host</code>,·where·<code·class="inline">Host</code>·is·the·short·name·of·the·host·(not·the·fully
137 qualified·domain·name).·If·started·with·flag·<code·class="inline">-name</code>,·the·node·name·is137 qualified·domain·name).·If·started·with·flag·<code·class="inline">-name</code>,·the·node·name·is
138 <code·class="inline">foobar@Host</code>,·where·<code·class="inline">Host</code>·is·the·fully·qualified·domain·name.·For·more138 <code·class="inline">foobar@Host</code>,·where·<code·class="inline">Host</code>·is·the·fully·qualified·domain·name.·For·more
139 information,·see·<a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html"><code·class="inline">erl</code></a>.</p><p>Normally,·connections·are·established·automatically·when·another·node·is139 information,·see·<a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html"><code·class="inline">erl</code></a>.</p><p>Normally,·connections·are·established·automatically·when·another·node·is
140 referenced.·This·functionality·can·be·disabled·by·setting·Kernel·configuration140 referenced.·This·functionality·can·be·disabled·by·setting·Kernel·configuration
141 parameter·<code·class="inline">dist_auto_connect</code>·to·<code·class="inline">never</code>,·see·<a·href="kernel_app.html"><code·class="inline">kernel(6)</code></a>.·In141 parameter·<code·class="inline">dist_auto_connect</code>·to·<code·class="inline">never</code>,·see·<a·href="kernel_app.html"><code·class="inline">kernel(6)</code></a>.·In
142 this·case,·connections·must·be·established·explicitly·by·calling142 this·case,·connections·must·be·established·explicitly·by·calling
Offset 646, 21 lines modifiedOffset 646, 21 lines modified
646 node·through·the·newly·established·connection.</li><li><code·class="inline">nodedown</code>·messages·are·delivered·after·all·the·signals·from·the·remote·node646 node·through·the·newly·established·connection.</li><li><code·class="inline">nodedown</code>·messages·are·delivered·after·all·the·signals·from·the·remote·node
647 over·the·connection·have·been·delivered.</li><li><code·class="inline">nodeup</code>·messages·are·delivered·after·the·corresponding·node·appears·in647 over·the·connection·have·been·delivered.</li><li><code·class="inline">nodeup</code>·messages·are·delivered·after·the·corresponding·node·appears·in
648 results·from·<code·class="inline">erlang:nodes()</code>.</li><li><code·class="inline">nodedown</code>·messages·are·delivered·after·the·corresponding·node·has·disappeared648 results·from·<code·class="inline">erlang:nodes()</code>.</li><li><code·class="inline">nodedown</code>·messages·are·delivered·after·the·corresponding·node·has·disappeared
649 in·results·from·<code·class="inline">erlang:nodes()</code>.</li><li>As·of·OTP·23.0,·a·<code·class="inline">nodedown</code>·message·for·a·connection·being·taken·down·will·be649 in·results·from·<code·class="inline">erlang:nodes()</code>.</li><li>As·of·OTP·23.0,·a·<code·class="inline">nodedown</code>·message·for·a·connection·being·taken·down·will·be
650 delivered·before·a·<code·class="inline">nodeup</code>·message·due·to·a·new·connection·to·the·same·node.650 delivered·before·a·<code·class="inline">nodeup</code>·message·due·to·a·new·connection·to·the·same·node.
651 Prior·to·OTP·23.0,·this·was·not·guaranteed·to·be·the·case.</li></ul><p>The·format·of·the·node·status·change·messages·depends·on·<code·class="inline">Options</code>.·If·<code·class="inline">Options</code>651 Prior·to·OTP·23.0,·this·was·not·guaranteed·to·be·the·case.</li></ul><p>The·format·of·the·node·status·change·messages·depends·on·<code·class="inline">Options</code>.·If·<code·class="inline">Options</code>
652 is·the·empty·list·or·if·<a·href="#monitor_nodes/1"><code·class="inline">net_kernel:monitor_nodes/1</code></a>·is·called,·the·format·is·as652 is·the·empty·list·or·if·<a·href="#monitor_nodes/1"><code·class="inline">net_kernel:monitor_nodes/1</code></a>·is·called,·the·format·is·as
653 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2062168453-1">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="2062168453-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·197,·SHA:·348f2d8be7aac0ffe9004abab0843293f6acea51b9dea9e494f6bf0caa26748b·...·]-2">}</span><span·class="w">653 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5454645465-1">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="5454645465-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·197,·SHA:·b28e0d193cdbc8384964fc4536b8fe87e7bb461137b7b7e02a669c2474864629·...·]-2">}</span><span·class="w">
654 ··</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="2062168453-3">(</span><span·class="p"·data-group-id="2062168453-3">)</span></code></pre><p>When·<code·class="inline">Options</code>·is·the·empty·map·or·empty·list,·the·caller·will·only·subscribe654 ··</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="5454645465-3">(</span><span·class="p"·data-group-id="5454645465-3">)</span></code></pre><p>When·<code·class="inline">Options</code>·is·the·empty·map·or·empty·list,·the·caller·will·only·subscribe
655 for·status·change·messages·for·visible·nodes.·That·is,·only·nodes·that·appear·in655 for·status·change·messages·for·visible·nodes.·That·is,·only·nodes·that·appear·in
656 the·result·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#nodes/0"><code·class="inline">erlang:nodes/0</code></a>.</p><p>If·<code·class="inline">Options</code>·equals·anything·other·than·the·empty·list,·the·format·of·the·status656 the·result·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#nodes/0"><code·class="inline">erlang:nodes/0</code></a>.</p><p>If·<code·class="inline">Options</code>·equals·anything·other·than·the·empty·list,·the·format·of·the·status
657 change·messages·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4161044186-1">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="4161044186-1">}</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·5e6486185378cbdd17f46542fd65a3f1050b2a27aa9aba6a3efa6d421d43b7d1·...·]-2">}</span><span·class="w">657 change·messages·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9367500670-1">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="9367500670-1">}</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·3a097b8f54d172c268925e995b6ca9b46eb2406001ea6c23dad787674e6bc6cd·...·]-2">}</span><span·class="w">
658 ··</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="4161044186-3">(</span><span·class="p"·data-group-id="4161044186-3">)</span><span·class="w">658 ··</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="9367500670-3">(</span><span·class="p"·data-group-id="9367500670-3">)</span><span·class="w">
659 ··</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4161044186-4">#{</span><span·class="n">Tag</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="4161044186-4">}</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·320,·SHA:·433f4c9b225f94d1e468e92b666fd755d5767f224c68531d44d73bf8c0d4411a·...·]-5">]</span></code></pre><p><code·class="inline">Info</code>·is·either·a·map·or·a·list·of·2-tuples.·Its·content·depends·on·<code·class="inline">Options</code>.659 ··</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9367500670-4">#{</span><span·class="n">Tag</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="9367500670-4">}</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·320,·SHA:·1625c1293209bfb15be9a97ecfa60ab852a983b131320ed5135fa43cbcf13892·...·]-5">]</span></code></pre><p><code·class="inline">Info</code>·is·either·a·map·or·a·list·of·2-tuples.·Its·content·depends·on·<code·class="inline">Options</code>.
660 If·<code·class="inline">Options</code>·is·a·map,·<code·class="inline">Info</code>·will·also·be·a·map.·If·<code·class="inline">Options</code>·is·a·list,·<code·class="inline">Info</code>660 If·<code·class="inline">Options</code>·is·a·map,·<code·class="inline">Info</code>·will·also·be·a·map.·If·<code·class="inline">Options</code>·is·a·list,·<code·class="inline">Info</code>
661 will·also·be·a·list.</p><p>When·<code·class="inline">Options</code>·is·a·map,·currently·the·following·associations·are·allowed:</p><ul><li><p><strong><code·class="inline">connection_id·=&gt;·boolean()</code></strong>·-·If·the·value·of·the·association·equals661 will·also·be·a·list.</p><p>When·<code·class="inline">Options</code>·is·a·map,·currently·the·following·associations·are·allowed:</p><ul><li><p><strong><code·class="inline">connection_id·=&gt;·boolean()</code></strong>·-·If·the·value·of·the·association·equals
662 <code·class="inline">true</code>,·a·<code·class="inline">connection_id·=&gt;·ConnectionId</code>·association·will·be·included·in·the662 <code·class="inline">true</code>,·a·<code·class="inline">connection_id·=&gt;·ConnectionId</code>·association·will·be·included·in·the
663 <code·class="inline">Info</code>·map·where·<code·class="inline">ConnectionId</code>·is·the·connection·identifier·of·the·connection663 <code·class="inline">Info</code>·map·where·<code·class="inline">ConnectionId</code>·is·the·connection·identifier·of·the·connection
664 coming·up·or·going·down.·For·more·info·about·this·connection·identifier·see664 coming·up·or·going·down.·For·more·info·about·this·connection·identifier·see
665 the·documentation·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#connection_id">erlang:nodes/2</a>.</p></li><li><p><strong><code·class="inline">node_type·=&gt;·NodeType</code></strong>·-·Valid·values·for·<code·class="inline">NodeType</code>:</p><ul><li><p><strong><code·class="inline">visible</code></strong>·-·Subscribe·to·node·status·change·messages·for·visible·nodes665 the·documentation·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#connection_id">erlang:nodes/2</a>.</p></li><li><p><strong><code·class="inline">node_type·=&gt;·NodeType</code></strong>·-·Valid·values·for·<code·class="inline">NodeType</code>:</p><ul><li><p><strong><code·class="inline">visible</code></strong>·-·Subscribe·to·node·status·change·messages·for·visible·nodes
666 only.·The·association·<code·class="inline">node_type·=&gt;·visible</code>·will·be·included·in·the·<code·class="inline">Info</code>666 only.·The·association·<code·class="inline">node_type·=&gt;·visible</code>·will·be·included·in·the·<code·class="inline">Info</code>
Offset 686, 31 lines modifiedOffset 686, 31 lines modified
686 only.·The·tuple·<code·class="inline">{node_type,·hidden}</code>·will·be·included·in·the·<code·class="inline">Info</code>·list.</p></li><li><p><strong><code·class="inline">all</code></strong>·-·Subscribe·to·node·status·change·messages·for·both·visible·and686 only.·The·tuple·<code·class="inline">{node_type,·hidden}</code>·will·be·included·in·the·<code·class="inline">Info</code>·list.</p></li><li><p><strong><code·class="inline">all</code></strong>·-·Subscribe·to·node·status·change·messages·for·both·visible·and
687 hidden·nodes.·The·tuple·<code·class="inline">{node_type,·visible·|·hidden}</code>·will·be·included·in687 hidden·nodes.·The·tuple·<code·class="inline">{node_type,·visible·|·hidden}</code>·will·be·included·in
688 the·<code·class="inline">Info</code>·list.</p></li></ul><p>If·no·<code·class="inline">{node_type,·NodeType}</code>·option·has·been·given.·The·caller·will·subscribe688 the·<code·class="inline">Info</code>·list.</p></li></ul><p>If·no·<code·class="inline">{node_type,·NodeType}</code>·option·has·been·given.·The·caller·will·subscribe
689 for·status·change·messages·for·visible·nodes·only,·but·<em>no</em>689 for·status·change·messages·for·visible·nodes·only,·but·<em>no</em>
690 <code·class="inline">{node_type,·visible}</code>·tuple·will·be·included·in·the·<code·class="inline">Info</code>·list.</p></li><li><p><strong><code·class="inline">nodedown_reason</code></strong>·-·The·tuple·<code·class="inline">{nodedown_reason,·Reason}</code>·will·be·included690 <code·class="inline">{node_type,·visible}</code>·tuple·will·be·included·in·the·<code·class="inline">Info</code>·list.</p></li><li><p><strong><code·class="inline">nodedown_reason</code></strong>·-·The·tuple·<code·class="inline">{nodedown_reason,·Reason}</code>·will·be·included
691 in·the·<code·class="inline">Info</code>·list·for·<code·class="inline">nodedown</code>·messages.</p><p>See·the·documentation·of·the691 in·the·<code·class="inline">Info</code>·list·for·<code·class="inline">nodedown</code>·messages.</p><p>See·the·documentation·of·the
692 <a·href="net_kernel.html#nodedown_reasons"><code·class="inline">nodedown_reason·=&gt;·boolean()</code></a>·association692 <a·href="net_kernel.html#nodedown_reasons"><code·class="inline">nodedown_reason·=&gt;·boolean()</code></a>·association
693 above·for·information·about·possible·<code·class="inline">Reason</code>·values.</p></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(a@localhost)1&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">monitor_nodes</span><span·class="p"·data-group-id="0477638570-1">(</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0477638570-2">#{</span><span·class="ss">connection_id</span><span·class="p">=&gt;</span><span·class="ss">true</span><span·class[·...·truncated·by·diffoscope;·len:·362,·SHA:·a7764a98c7990a8adb53c6ec116d4d52024dc380175c9d34801841f4fdd55b87·...·]-1">)</span><span·class="p">.</span><span·class="w">693 above·for·information·about·possible·<code·class="inline">Reason</code>·values.</p></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(a@localhost)1&gt;·</span><span·class="nc">net_kernel</span><span·class="p">:</span><span·class="nf">monitor_nodes</span><span·class="p"·data-group-id="5536845163-1">(</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5536845163-2">#{</span><span·class="ss">connection_id</span><span·class="p">=&gt;</span><span·class="ss">true</span><span·class[·...·truncated·by·diffoscope;·len:·362,·SHA:·ceff1decbc6444132564f7bb63f17d33077b880cbb4991090f323623f41c8d0b·...·]-1">)</span><span·class="p">.</span><span·class="w">
694 </span><span·class="nf">ok</span><span·class="w">694 </span><span·class="nf">ok</span><span·class="w">
695 </span><span·class="p"·data-group-id="0477638570-3">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="0477638570-3">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">flush</span><span·class="p"·data-group-id="0477638570[·...·truncated·by·diffoscope;·len:·53,·SHA:·10e6b0a19375e0da0212a819d75a06ae76fcd2b47678e50b52d518851744402d·...·]-4">)</span><span·class="p">.</span><span·class="w">695 </span><span·class="p"·data-group-id="5536845163-3">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="5536845163-3">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">flush</span><span·class="p"·data-group-id="5536845163[·...·truncated·by·diffoscope;·len:·53,·SHA:·5ae8fb9dc4ae6f03e7982335db7d5de49c506a831b2ea37bc96415471d2ce314·...·]-4">)</span><span·class="p">.</span><span·class="w">
696 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0477638570-5">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="w">696 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="5536845163-5">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="w">
697 ··················</span><span·class="p"·data-group-id="0477638570-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">3067552</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·169,·SHA:·3f6d3da8a1a813c3843a9cc075ae698c19bd6f923245118b76d3194c497fb79a·...·]-5">}</span><span·class="w">697 ··················</span><span·class="p"·data-group-id="5536845163-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">3067552</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·169,·SHA:·60ca53f309ae61e1a1136c2e0d99588db76dd4f91d6814b20b63352cc03a9fd6·...·]-5">}</span><span·class="w">
698 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0477638570-7">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="w">698 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="5536845163-7">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="w">
699 ··················</span><span·class="p"·data-group-id="0477638570-8">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">13892107</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·169,·SHA:·3766a98dde24ee041badf2ef94c744edd3e2c8946bf776e5eec3224e20230290·...·]-7">}</span><span·class="w">699 ··················</span><span·class="p"·data-group-id="5536845163-8">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">13892107</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·169,·SHA:·3704a4822f166d1f4de58e1728c604b5fd22f2540080adcb206f305aa7d81570·...·]-7">}</span><span·class="w">
700 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0477638570-9">{</span><span·class="ss">nodedown</span><span·class="p">,</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="w">700 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="5536845163-9">{</span><span·class="ss">nodedown</span><span·class="p">,</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="w">
701 ····················</span><span·class="p"·data-group-id="0477638570-10">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">3067552</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">visible</span><span·class="p">,</span><span·class="w">701 ····················</span><span·class="p"·data-group-id="5536845163-10">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">3067552</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">visible</span><span·class="p">,</span><span·class="w">
702 ······················</span><span·class="ss">nodedown_reason</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">connection_closed</span><span·class="p"·data-group-id="0477638570-10">}</span><span·class="p"·data-group-id="0477638570-9">}</span><span·class="w">702 ······················</span><span·class="ss">nodedown_reason</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">connection_closed</span><span·class="p"·data-group-id="5536845163-10">}</span><span·class="p"·data-group-id="5536845163-9">}</span><span·class="w">
703 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0477638570-11">{</span><span·class="ss">nodedown</span><span·class="p">,</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="w">703 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="5536845163-11">{</span><span·class="ss">nodedown</span><span·class="p">,</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="w">
704 ····················</span><span·class="p"·data-group-id="0477638570-12">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">13892107</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">hidden</span><span·class="p">,</span><span·class="w">704 ····················</span><span·class="p"·data-group-id="5536845163-12">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">13892107</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">hidden</span><span·class="p">,</span><span·class="w">
705 ······················</span><span·class="ss">nodedown_reason</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">net_tick_timeout</span><span·class="p"·data-group-id="0477638570-12">}</span><span·class="p"·data-group-id="0477638570-11">}</span><span·class="w">705 ······················</span><span·class="ss">nodedown_reason</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">net_tick_timeout</span><span·class="p"·data-group-id="5536845163-12">}</span><span·class="p"·data-group-id="5536845163-11">}</span><span·class="w">
706 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0477638570-13">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="w">706 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="5536845163-13">{</span><span·class="ss">nodeup</span><span·class="p">,</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="w">
707 ··················</span><span·class="p"·data-group-id="0477638570-14">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">3067553</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·171,·SHA:·d35ce26e94576ed240ce6a7f5cd289effb53f71167d64e61e4611e8277276091·...·]-13">}</span><span·class="w">707 ··················</span><span·class="p"·data-group-id="5536845163-14">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">3067553</span><span·class="p">,</span><span·class="ss">node_type</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·171,·SHA:·845f2c5db8a367d98536a7d9d1f97e8a96661937f806c424dabe51deb4ab273b·...·]-13">}</span><span·class="w">
708 </span><span·class="nf">ok</span><span·class="w">708 </span><span·class="nf">ok</span><span·class="w">
709 </span><span·class="p"·data-group-id="0477638570-15">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="0477638570-15">)</span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre>709 </span><span·class="p"·data-group-id="5536845163-15">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="5536845163-15">)</span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre>
710 ··</section>710 ··</section>
711 </section>711 </section>
712 <section·class="detail"·id="set_net_ticktime/1">712 <section·class="detail"·id="set_net_ticktime/1">
  
713 ··<div·class="detail-header">713 ··<div·class="detail-header">
714 ····<a·href="#set_net_ticktime/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">714 ····<a·href="#set_net_ticktime/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
715 ······<i·class="ri-link-m"·aria-hidden="true"></i>715 ······<i·class="ri-link-m"·aria-hidden="true"></i>
5.84 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/notes.html
    
Offset 4025, 20 lines modifiedOffset 4025, 20 lines modified
4025 will·make·repeated·attempts·to·open·the·disk·log·fail·every·time.</p><p>Own·Id:·OTP-5558·Aux·Id:·seq9823</p></li><li><p>Previously·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved4025 will·make·repeated·attempts·to·open·the·disk·log·fail·every·time.</p><p>Own·Id:·OTP-5558·Aux·Id:·seq9823</p></li><li><p>Previously·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved
4026 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could4026 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could
4027 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you4027 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you
4028 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be4028 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be
4029 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink4029 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink
4030 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or4030 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or
4031 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did4031 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did
4032 not.·For·example,·the·following·code·might·hang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">············</span><span·class="n">Mon</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monitor</span><span·class="p"·data-group-id="0945314753-1">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="0945314753-1">)</span><span·class="p">,</span><span·class="w">4032 not.·For·example,·the·following·code·might·hang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">············</span><span·class="n">Mon</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monitor</span><span·class="p"·data-group-id="1155421438-1">(</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="1155421438-1">)</span><span·class="p">,</span><span·class="w">
4033 ············</span><span·class="c1">%%·...</span><span·class="w">4033 ············</span><span·class="c1">%%·...</span><span·class="w">
4034 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="0945314753-2">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bang</span><span·class="p"·data-group-id="0945314753-2">)</span><span·class="p">,</span><span·class="w">4034 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="1155421438-2">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bang</span><span·class="p"·data-group-id="1155421438-2">)</span><span·class="p">,</span><span·class="w">
4035 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="0945314753-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="0945314753-3">)</span><span·class="p">,</span><span·class="w">4035 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="1155421438-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="1155421438-3">)</span><span·class="p">,</span><span·class="w">
4036 ············</span><span·class="k">receive</span><span·class="w">4036 ············</span><span·class="k">receive</span><span·class="w">
4037 ················</span><span·class="p"·data-group-id="0945314753-4">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mon</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·144,·SHA:·6d7711263b2d36d8fdec7538d903bb74db6f8e0cbc898bae608b30555885d8da·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">4037 ················</span><span·class="p"·data-group-id="1155421438-4">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mon</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·144,·SHA:·2cf96354f9b397324f9776f9393585fc4a30cfe60c251f3f8a3ee194a6c25783·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
4038 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">4038 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">
4039 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">4039 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">
4040 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">4040 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">
4041 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">4041 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">
4042 ············</span><span·class="k">end</span><span·class="p">,</span></code></pre><p>*<strong>·POTENTIAL·INCOMPATIBILITY·*</strong></p><p>Own·Id:·OTP-5772</p></li><li><p>The·behavior·when·an·application·fails·to·start·and·possibly·causes·the4042 ············</span><span·class="k">end</span><span·class="p">,</span></code></pre><p>*<strong>·POTENTIAL·INCOMPATIBILITY·*</strong></p><p>Own·Id:·OTP-5772</p></li><li><p>The·behavior·when·an·application·fails·to·start·and·possibly·causes·the
4043 runtime·system·to·halt·has·been·cleaned·up,·including·fixing·some·minor·bugs.</p><p><code·class="inline">application_controller</code>·should·now·always·terminate·with·a·non-nested·string,4043 runtime·system·to·halt·has·been·cleaned·up,·including·fixing·some·minor·bugs.</p><p><code·class="inline">application_controller</code>·should·now·always·terminate·with·a·non-nested·string,
4044 meaning·the·slogan·in·an·<code·class="inline">erl_crash.dump</code>·should·always·be·easy·to·read.</p><p><code·class="inline">init</code>·now·makes·sure·that·the·slogan·passed·to·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#halt/1"><code·class="inline">erlang:halt/1</code></a>·does·not4044 meaning·the·slogan·in·an·<code·class="inline">erl_crash.dump</code>·should·always·be·easy·to·read.</p><p><code·class="inline">init</code>·now·makes·sure·that·the·slogan·passed·to·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#halt/1"><code·class="inline">erlang:halt/1</code></a>·does·not
23.0 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/os.html
    
Offset 640, 21 lines modifiedOffset 640, 21 lines modified
640 ··········<pre·translate="no"><span·class="attribute">-spec</span>·cmd(Command,·Options)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·when·Command·::·<a·href="#t:os_command/0">os_command</a>(),·Options·::·<a·href="#t:os_command_opts/0">os_command_opts</a>().</pre>640 ··········<pre·translate="no"><span·class="attribute">-spec</span>·cmd(Command,·Options)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·when·Command·::·<a·href="#t:os_command/0">os_command</a>(),·Options·::·<a·href="#t:os_command_opts/0">os_command_opts</a>().</pre>
  
641 ······</div>641 ······</div>
  
642 <p>Executes·<code·class="inline">Command</code>·in·a·command·shell·of·the·target·OS,·captures·the·standard642 <p>Executes·<code·class="inline">Command</code>·in·a·command·shell·of·the·target·OS,·captures·the·standard
643 output·and·standard·error·of·the·command,·and·returns·this·result·as·a·string.</p><p>The·command·shell·can·be·set·using·the643 output·and·standard·error·of·the·command,·and·returns·this·result·as·a·string.</p><p>The·command·shell·can·be·set·using·the
644 <a·href="kernel_app.html#os_cmd_shell">kernel·configuration·parameter</a>,·by·default·the644 <a·href="kernel_app.html#os_cmd_shell">kernel·configuration·parameter</a>,·by·default·the
645 shell·is·detected·upon·system·startup.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">LsOut</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="3015065987-1">(</span><span·class="s">&quot;ls&quot;</span><span·class="p"·data-group-id="3015065987-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·on·unix·platform</span><span·class="w">645 shell·is·detected·upon·system·startup.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">LsOut</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="9512164219-1">(</span><span·class="s">&quot;ls&quot;</span><span·class="p"·data-group-id="9512164219-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·on·unix·platform</span><span·class="w">
646 </span><span·class="n">DirOut</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="3015065987-2">(</span><span·class="s">&quot;dir&quot;</span><span·class="p"·data-group-id="3015065987-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·on·Win32·platform</span></code></pre><p>Notice·that·in·some·cases,·standard·output·of·a·command·when·called·from·another646 </span><span·class="n">DirOut</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="9512164219-2">(</span><span·class="s">&quot;dir&quot;</span><span·class="p"·data-group-id="9512164219-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·on·Win32·platform</span></code></pre><p>Notice·that·in·some·cases,·standard·output·of·a·command·when·called·from·another
647 program·can·differ,·compared·with·the·standard·output·of·the·command·when·called647 program·can·differ,·compared·with·the·standard·output·of·the·command·when·called
648 directly·from·an·OS·command·shell.</p><p>The·possible·options·are:</p><ul><li><p><strong><code·class="inline">max_size</code></strong>·-·The·maximum·size·of·the·data·returned·by·the·<code·class="inline">os:cmd</code>·call.648 directly·from·an·OS·command·shell.</p><p>The·possible·options·are:</p><ul><li><p><strong><code·class="inline">max_size</code></strong>·-·The·maximum·size·of·the·data·returned·by·the·<code·class="inline">os:cmd</code>·call.
649 This·option·is·a·safety·feature·that·should·be·used·when·the·command·executed649 This·option·is·a·safety·feature·that·should·be·used·when·the·command·executed
650 can·return·a·very·large,·possibly·infinite,·result.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="5351585736-1">(</span><span·class="s">&quot;cat·/dev/zero&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5351585736-2">#{</span><span·class="w">·</span><span·class="ss">max_size</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·191,·SHA:·c3c849b19f4177f98f283e6f86328ece20f0ac0f8c014db74b054abb342798cc·...·]-1">)</span><span·class="p">.</span><span·class="w">650 can·return·a·very·large,·possibly·infinite,·result.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="5781958429-1">(</span><span·class="s">&quot;cat·/dev/zero&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5781958429-2">#{</span><span·class="w">·</span><span·class="ss">max_size</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·191,·SHA:·6bb66eb383a2fa0803db90b70afe087be3dc1974129f6ace7f357d3c9a56e2f4·...·]-1">)</span><span·class="p">.</span><span·class="w">
651 </span><span·class="p"·data-group-id="5351585736-3">[</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p[·...·truncated·by·diffoscope;·len:·762,·SHA:·41004d0a21899e2266fb5f90a9ee359557c77a11ef2e9d2f7e62668359e6a75d·...·]-3">]</span></code></pre></li></ul>651 </span><span·class="p"·data-group-id="5781958429-3">[</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p[·...·truncated·by·diffoscope;·len:·762,·SHA:·0ef421fad8e0535a019b457616a8a7f3214d40bac861507c36c451fa1cedced6·...·]-3">]</span></code></pre></li></ul>
652 ··</section>652 ··</section>
653 </section>653 </section>
654 <section·class="detail"·id="env/0">654 <section·class="detail"·id="env/0">
  
655 ··<div·class="detail-header">655 ··<div·class="detail-header">
656 ····<a·href="#env/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">656 ····<a·href="#env/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
657 ······<i·class="ri-link-m"·aria-hidden="true"></i>657 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 918, 15 lines modifiedOffset 918, 15 lines modified
  
918 ······</div>918 ······</div>
  
919 <p>Returns·a·performance·counter·that·can·be·used·as·a·very·fast·and·high919 <p>Returns·a·performance·counter·that·can·be·used·as·a·very·fast·and·high
920 resolution·timestamp.</p><p>This·counter·is·read·directly·from·the·hardware·or·operating·system·with·the920 resolution·timestamp.</p><p>This·counter·is·read·directly·from·the·hardware·or·operating·system·with·the
921 same·guarantees.·This·means·that·two·consecutive·calls·to·the·function·are·not921 same·guarantees.·This·means·that·two·consecutive·calls·to·the·function·are·not
922 guaranteed·to·be·monotonic,·though·it·most·likely·will·be.·The·performance922 guaranteed·to·be·monotonic,·though·it·most·likely·will·be.·The·performance
923 counter·will·be·converted·to·the·resolution·passed·as·an·argument.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">T1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">perf_counter</span><span·class="p"·data-group-id="6925338425-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="6925338425-1">)</span><span·class="p">,</span><span·class="k">receive</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">10000<[·...·truncated·by·diffoscope;·len:·487,·SHA:·6010da8ed075e1ab42116c83745d95789bcdc8aaf60c21c142e517b115a9ad12·...·]-2">)</span><span·class="p">.</span><span·class="w">923 counter·will·be·converted·to·the·resolution·passed·as·an·argument.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">T1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">perf_counter</span><span·class="p"·data-group-id="3981231528-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="3981231528-1">)</span><span·class="p">,</span><span·class="k">receive</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">10000<[·...·truncated·by·diffoscope;·len:·487,·SHA:·c3257123c927d426d4235972cecf9e061ecffc046a0c3a386837dbcb21ef32c7·...·]-2">)</span><span·class="p">.</span><span·class="w">
924 </span><span·class="mi">176525861</span><span·class="gp·unselectable">924 </span><span·class="mi">176525861</span><span·class="gp·unselectable">
925 2&gt;·</span><span·class="n">T2</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="n">T1</span><span·class="p">.</span><span·class="w">925 2&gt;·</span><span·class="n">T2</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="n">T1</span><span·class="p">.</span><span·class="w">
926 </span><span·class="mi">10004</span></code></pre>926 </span><span·class="mi">10004</span></code></pre>
927 ··</section>927 ··</section>
928 </section>928 </section>
929 <section·class="detail"·id="putenv/2">929 <section·class="detail"·id="putenv/2">
  
Offset 1079, 24 lines modifiedOffset 1079, 24 lines modified
1079 <p>Returns·the·current·<a·href="../../../../erts-15.2.2/doc/html/time_correction.html#os-system-time">OS·system·time</a>1079 <p>Returns·the·current·<a·href="../../../../erts-15.2.2/doc/html/time_correction.html#os-system-time">OS·system·time</a>
1080 in·the·same·format·as·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#timestamp/0"><code·class="inline">erlang:timestamp/0</code></a>.</p><p>The·tuple·can·be·used·together·with·function·<a·href="../../../../lib/stdlib-6.2/doc/html/calendar.html#now_to_universal_time/1"><code·class="inline">calendar:now_to_universal_time/1</code></a>1080 in·the·same·format·as·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#timestamp/0"><code·class="inline">erlang:timestamp/0</code></a>.</p><p>The·tuple·can·be·used·together·with·function·<a·href="../../../../lib/stdlib-6.2/doc/html/calendar.html#now_to_universal_time/1"><code·class="inline">calendar:now_to_universal_time/1</code></a>
1081 or·<a·href="../../../../lib/stdlib-6.2/doc/html/calendar.html#now_to_local_time/1"><code·class="inline">calendar:now_to_local_time/1</code></a>·to·get·calendar·time.·Using·the·calendar·time,1081 or·<a·href="../../../../lib/stdlib-6.2/doc/html/calendar.html#now_to_local_time/1"><code·class="inline">calendar:now_to_local_time/1</code></a>·to·get·calendar·time.·Using·the·calendar·time,
1082 together·with·the·<code·class="inline">MicroSecs</code>·part·of·the·return·tuple·from·this·function,1082 together·with·the·<code·class="inline">MicroSecs</code>·part·of·the·return·tuple·from·this·function,
1083 allows·you·to·log·time·stamps·in·high·resolution·and·consistent·with·the·time·in1083 allows·you·to·log·time·stamps·in·high·resolution·and·consistent·with·the·time·in
1084 ·the·rest·of·the·OS.</p><p>Example·of·code·formatting·a·string·in·format·&quot;DD·Mon·YYYY·HH:MM:SS.mmmmmm&quot;,1084 ·the·rest·of·the·OS.</p><p>Example·of·code·formatting·a·string·in·format·&quot;DD·Mon·YYYY·HH:MM:SS.mmmmmm&quot;,
1085 where·DD·is·the·day·of·month,·Mon·is·the·textual·month·name,·YYYY·is·the·year,1085 where·DD·is·the·day·of·month,·Mon·is·the·textual·month·name,·YYYY·is·the·year,
1086 HH:MM:SS·is·the·time,·and·mmmmmm·is·the·microseconds·in·six·positions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4616634698-1">(</span><span·class="ss">print_time</span><span·class="p"·data-group-id="4616634698-1">)</span><span·class="p">.</span><span·class="w"> 
1087 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4616634698-2">(</span><span·class="p"·data-group-id="4616634698-3">[</span><span·class="ss">format_utc_timestamp</span><span·class="p">/</span><span·class="mi">0</s[·...·truncated·by·diffoscope;·len:·100,·SHA:·b1ccaaafe57a8729d10b5d1f353936d99f20df7e77e961d1c54d185d29b8885e·...·]">)</span><span·class="p">.</span><span·class="w">1086 HH:MM:SS·is·the·time,·and·mmmmmm·is·the·microseconds·in·six·positions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1758136874-1">(</span><span·class="ss">print_time[·...·truncated·by·diffoscope;·len:·50,·SHA:·d59eb142d74631502c4fbecb122f226e9163c5ce6164825302e80af61a943f69·...·]">)</span><span·class="p">.</span><span·class="w">
 1087 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1758136874-2">(</span><span·class="p"·data-group-id="1758136874-3">[</span><span·class="ss">format_utc_timestamp</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1758136874-3">]</span><span·class="p"·data-group-id="1758136874-2">)</span><span·class="p">.</span><span·class="w">
1088 </span><span·class="nf">format_utc_timestamp</span><span·class="p"·data-group-id="4616634698-4">(</span><span·class="p"·data-group-id="4616634698-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1088 </span><span·class="nf">format_utc_timestamp</span><span·class="p"·data-group-id="1758136874-4">(</span><span·class="p"·data-group-id="1758136874-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1089 ····</span><span·class="n">TS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4616634698-5">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Micro</span><span·class="p"·data-group-id="4616634698-5">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·192,·SHA:·34d00c93b97a6e116174facafa55b2e5b9f0b086f3ac5ef37d37858ed9272a7a·...·]-6">)</span><span·class="p">,</span><span·class="w">1089 ····</span><span·class="n">TS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1758136874-5">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Micro</span><span·class="p"·data-group-id="1758136874-5">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·192,·SHA:·24ea7fe4550a13b77ee095b13c986d089eb90e030f7aec14548504970e319769·...·]-6">)</span><span·class="p">,</span><span·class="w">
1090 ····</span><span·class="p"·data-group-id="4616634698-7">{</span><span·class="p"·data-group-id="4616634698-8">{</span><span·class="n">Year</span><span·class="p">,</span><span·class="n">Month</span><span·class="p">,</span><span·class="n">Day</span><span·class="p"·data-group-id="4616634698-8">}</span[·...·truncated·by·diffoscope;·len:·305,·SHA:·8cb7791efa14e4b41a3b21e77cc3636576bf48ea5bbfe9b7b41e6c4973fc605a·...·]-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">1090 ····</span><span·class="p"·data-group-id="1758136874-7">{</span><span·class="p"·data-group-id="1758136874-8">{</span><span·class="n">Year</span><span·class="p">,</span><span·class="n">Month</span><span·class="p">,</span><span·class="n">Day</span><span·class="p"·data-group-id="1758136874-8">}</span[·...·truncated·by·diffoscope;·len:·305,·SHA:·ad9429dc7f0b6fce9509bf37037f249df6d8f020c2e95cb2b3f20dd0de984d58·...·]-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
1091 </span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">now_to_universal_time</span><span·class="p"·data-group-id="4616634698-10">(</span><span·class="n">TS</span><span·class="p"·data-group-id="4616634698-10">)</span><span·class="p">,</span><span·class="w">1091 </span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">now_to_universal_time</span><span·class="p"·data-group-id="1758136874-10">(</span><span·class="n">TS</span><span·class="p"·data-group-id="1758136874-10">)</span><span·class="p">,</span><span·class="w">
1092 ····</span><span·class="n">Mstr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="4616634698-11">(</span><span·class="n">Month</span><span·class="p">,</span><span·class="p"·data-group-id="4616634698-12">{</span><span·class="s">&quot;Jan&quot;</span><span·class="p">,</span><span·class="s">&quot;Feb&quot;</span><span·class="p">,</span><span·class="s">&quot;Mar&quot;</span><span·class="p">,</span><span·class="s">&quot;Apr&quot;</span><span·class="p">,</span><span·class="s">&quot;May&quot;</span><span·class="p">,</span><span·class="s">&quot;Jun&quot;</span><span·class="p">,</span><span·class="s">&quot;Jul&quot;</span><span·class="p">,</span><span·class="w">1092 ····</span><span·class="n">Mstr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="1758136874-11">(</span><span·class="n">Month</span><span·class="p">,</span><span·class="p"·data-group-id="1758136874-12">{</span><span·class="s">&quot;Jan&quot;</span><span·class="p">,</span><span·class="s">&quot;Feb&quot;</span><span·class="p">,</span><span·class="s">&quot;Mar&quot;</span><span·class="p">,</span><span·class="s">&quot;Apr&quot;</span><span·class="p">,</span><span·class="s">&quot;May&quot;</span><span·class="p">,</span><span·class="s">&quot;Jun&quot;</span><span·class="p">,</span><span·class="s">&quot;Jul&quot;</span><span·class="p">,</span><span·class="w">
1093 ····</span><span·class="s">&quot;Aug&quot;</span><span·class="p">,</span><span·class="s">&quot;Sep&quot;</span><span·class="p">,</span><span·class="s">&quot;Oct&quot;</span><span·class="p">,</span><span·class="s">&quot;Nov&quot;</span><span·class="p">,</span><span·class="s">&quot;Dec&quot;</span><span·class="p"·data-group-id="4616634698-12">}</span><span·class="p"·data-group-id="4616634698-11">)</span><span·class="p">,</span><span·class="w">1093 ····</span><span·class="s">&quot;Aug&quot;</span><span·class="p">,</span><span·class="s">&quot;Sep&quot;</span><span·class="p">,</span><span·class="s">&quot;Oct&quot;</span><span·class="p">,</span><span·class="s">&quot;Nov&quot;</span><span·class="p">,</span><span·class="s">&quot;Dec&quot;</span><span·class="p"·data-group-id="1758136874-12">}</span><span·class="p"·data-group-id="1758136874-11">)</span><span·class="p">,</span><span·class="w">
1094 ····</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4616634698-13">(</span><span·class="s">&quot;</span><span·class="si">~2w</span><span·class="s">·</span><span·class="si">~s</span><span·class="s">·</span><span·class="si">~4w</span><span·class="s">·</span><span·class="si">~2w</span><span·class="s">:</span><span·class="si">~2..0w</span><span·class="s">:</span><span·class="si">~2..0w</span><span·class="s">.</span><span·class="si">~6..0w</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">1094 ····</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1758136874-13">(</span><span·class="s">&quot;</span><span·class="si">~2w</span><span·class="s">·</span><span·class="si">~s</span><span·class="s">·</span><span·class="si">~4w</span><span·class="s">·</span><span·class="si">~2w</span><span·class="s">:</span><span·class="si">~2..0w</span><span·class="s">:</span><span·class="si">~2..0w</span><span·class="s">.</span><span·class="si">~6..0w</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
1095 ····</span><span·class="p"·data-group-id="4616634698-14">[</span><span·class="n">Day</span><span·class="p">,</span><span·class="n">Mstr</span><span·class="p">,</span><span·class="n">Year</span><span·class="p">,</span><span·class="n">Hour</span><span·class="p">,</span><span·class="n">Minute</span><[·...·truncated·by·diffoscope;·len:·1004,·SHA:·543e1a5de87244e58e7c27e637a91d0af2e2878d1905de69882f72b0fd22dff7·...·]-1">)</span><span·class="p">.</span><span·class="w">1095 ····</span><span·class="p"·data-group-id="1758136874-14">[</span><span·class="n">Day</span><span·class="p">,</span><span·class="n">Mstr</span><span·class="p">,</span><span·class="n">Year</span><span·class="p">,</span><span·class="n">Hour</span><span·class="p">,</span><span·class="n">Minute</span><[·...·truncated·by·diffoscope;·len:·1004,·SHA:·9868914295322664fca131297b5b4977917b85ea3ffdd3f0db654602db33eeda·...·]-1">)</span><span·class="p">.</span><span·class="w">
1096 </span><span·class="mi">29</span><span·class="w">·</span><span·class="n">Apr</span><span·class="w">·</span><span·class="mi">2009</span><span·class="w">··</span><span·class="mi">9</span><span·class="p">:</span><span·class="mi">55</span><span·class="p">:</span><span·class="mf">30.051711</span></code></pre><p>OS·system·time·can·also·be·retrieved·by·<a·href="#system_time/0"><code·class="inline">system_time/0</code></a>·and·<a·href="#system_time/1"><code·class="inline">system_time/1</code></a>.</p>1096 </span><span·class="mi">29</span><span·class="w">·</span><span·class="n">Apr</span><span·class="w">·</span><span·class="mi">2009</span><span·class="w">··</span><span·class="mi">9</span><span·class="p">:</span><span·class="mi">55</span><span·class="p">:</span><span·class="mf">30.051711</span></code></pre><p>OS·system·time·can·also·be·retrieved·by·<a·href="#system_time/0"><code·class="inline">system_time/0</code></a>·and·<a·href="#system_time/1"><code·class="inline">system_time/1</code></a>.</p>
1097 ··</section>1097 ··</section>
1098 </section>1098 </section>
1099 <section·class="detail"·id="type/0">1099 <section·class="detail"·id="type/0">
  
1100 ··<div·class="detail-header">1100 ··<div·class="detail-header">
1101 ····<a·href="#type/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1101 ····<a·href="#type/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3.27 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/pg.html
    
Offset 836, 15 lines modifiedOffset 836, 15 lines modified
  
836 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor_scope(Scope·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0">pid</a>()]}}.</pre>836 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor_scope(Scope·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0">pid</a>()]}}.</pre>
  
837 ······</div>837 ······</div>
  
838 <p>Subscribes·the·caller·to·updates·from·the·specified·scope.</p><p>Returns·content·of·the·entire·scope·and·a·reference·to·match·the·upcoming838 <p>Subscribes·the·caller·to·updates·from·the·specified·scope.</p><p>Returns·content·of·the·entire·scope·and·a·reference·to·match·the·upcoming
839 notifications.</p><p>Whenever·any·group·membership·changes,·an·update·message·is·sent·to·the839 notifications.</p><p>Whenever·any·group·membership·changes,·an·update·message·is·sent·to·the
840 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0940091248-1">{</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">join</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Group</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·781,·SHA:·8c84bcb24b2567905e160d5ab574aee5c30147d9976acd505064d96e1d4257c0·...·]-1">}</span></code></pre>840 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1609559356-1">{</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">join</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Group</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·781,·SHA:·5c32d20f898e9dec6b070a82e354d64131962a53cc4222b81d85efed96361920·...·]-1">}</span></code></pre>
841 ··</section>841 ··</section>
842 </section>842 </section>
843 <section·class="detail"·id="start/1">843 <section·class="detail"·id="start/1">
  
844 ··<div·class="detail-header">844 ··<div·class="detail-header">
845 ····<a·href="#start/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">845 ····<a·href="#start/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
846 ······<i·class="ri-link-m"·aria-hidden="true"></i>846 ······<i·class="ri-link-m"·aria-hidden="true"></i>
5.12 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/rpc.html
    
Offset 1043, 18 lines modifiedOffset 1043, 18 lines modified
1043 all·the·nodes,·but·the·multicall·is·faster,·as·all·the·requests·are·sent·at·the1043 all·the·nodes,·but·the·multicall·is·faster,·as·all·the·requests·are·sent·at·the
1044 same·time·and·are·collected·one·by·one·as·they·come·back.</p><p>The·function·evaluates·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·Args)</code></a>·on·the1044 same·time·and·are·collected·one·by·one·as·they·come·back.</p><p>The·function·evaluates·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·Args)</code></a>·on·the
1045 specified·nodes·and·collects·the·answers.·It·returns·<code·class="inline">{ResL,·BadNodes}</code>,·where1045 specified·nodes·and·collects·the·answers.·It·returns·<code·class="inline">{ResL,·BadNodes}</code>,·where
1046 <code·class="inline">BadNodes</code>·is·a·list·of·the·nodes·that·do·not·exist,·and·<code·class="inline">ResL</code>·is·a·list·of·the1046 <code·class="inline">BadNodes</code>·is·a·list·of·the·nodes·that·do·not·exist,·and·<code·class="inline">ResL</code>·is·a·list·of·the
1047 return·values,·or·<code·class="inline">{badrpc,·Reason}</code>·for·failing·calls.·<code·class="inline">Timeout</code>·is·a·time1047 return·values,·or·<code·class="inline">{badrpc,·Reason}</code>·for·failing·calls.·<code·class="inline">Timeout</code>·is·a·time
1048 (integer)·in·milliseconds,·or·<code·class="inline">infinity</code>.</p><p>The·following·example·is·useful·when·new·object·code·is·to·be·loaded·on·all1048 (integer)·in·milliseconds,·or·<code·class="inline">infinity</code>.</p><p>The·following·example·is·useful·when·new·object·code·is·to·be·loaded·on·all
1049 nodes·in·the·network,·and·indicates·some·side·effects·that·RPCs·can·produce:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Find·object·code·for·module·Mod</span><span·class="w">1049 nodes·in·the·network,·and·indicates·some·side·effects·that·RPCs·can·produce:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Find·object·code·for·module·Mod</span><span·class="w">
1050 </span><span·class="p"·data-group-id="1809364187-1">{</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="1809364187-1">}</span><span·[·...·truncated·by·diffoscope;·len:·277,·SHA:·235a6e6728146446531a77b6224e7e6b2ae99bc51ef79f6b848bec4abf27f374·...·]-2">)</span><span·class="p">,</span><span·class="w">1050 </span><span·class="p"·data-group-id="4801118138-1">{</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="4801118138-1">}</span><span·[·...·truncated·by·diffoscope;·len:·277,·SHA:·2fe404fb67fc28f2b87efaa8cf83d9d2b669343856d66d669f45602ddc87b0fe·...·]-2">)</span><span·class="p">,</span><span·class="w">
  
1051 </span><span·class="c1">%%·and·load·it·on·all·nodes·including·this·one</span><span·class="w">1051 </span><span·class="c1">%%·and·load·it·on·all·nodes·including·this·one</span><span·class="w">
1052 </span><span·class="p"·data-group-id="1809364187-3">{</span><span·class="n">ResL</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="1809364187-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·428610b92691b187da5f1084585cf9c4927888ade2d32823015833ff6bb0110a·...·]-4">)</span><span·class="p">,</span><span·class="w">1052 </span><span·class="p"·data-group-id="4801118138-3">{</span><span·class="n">ResL</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="4801118138-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·03efda93213925e8ad26f7035bf2acf469317f7c2b69afb0e444507babd8f2da·...·]-4">)</span><span·class="p">,</span><span·class="w">
  
1053 </span><span·class="c1">%%·and·then·maybe·check·the·ResL·list.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·want·the·ability·to·distinguish·between·results,·you·may·want·to1053 </span><span·class="c1">%%·and·then·maybe·check·the·ResL·list.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>If·you·want·the·ability·to·distinguish·between·results,·you·may·want·to
1054 consider·using·the·<a·href="erpc.html#multicall/4"><code·class="inline">erpc:multicall()</code></a>·function·from·the1054 consider·using·the·<a·href="erpc.html#multicall/4"><code·class="inline">erpc:multicall()</code></a>·function·from·the
1055 <code·class="inline">erpc</code>·module·instead.</p></section><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the1055 <code·class="inline">erpc</code>·module·instead.</p></section><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>You·cannot·make·<em>any</em>·assumptions·about·the·process·that·will·perform·the
1056 <code·class="inline">apply()</code>.·It·may·be·the·calling·process·itself,·an·<code·class="inline">rpc</code>·server,·another1056 <code·class="inline">apply()</code>.·It·may·be·the·calling·process·itself,·an·<code·class="inline">rpc</code>·server,·another
1057 server,·or·a·freshly·spawned·process.</p></section>1057 server,·or·a·freshly·spawned·process.</p></section>
1058 ··</section>1058 ··</section>
50.1 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/seq_trace.html
    
Offset 137, 17 lines modifiedOffset 137, 17 lines modified
137 of·the·trace·output.</p><h2·id="module-trace-messages-sent-to-the-system-tracer"·class="section-heading">137 of·the·trace·output.</p><h2·id="module-trace-messages-sent-to-the-system-tracer"·class="section-heading">
138 ··<a·href="#module-trace-messages-sent-to-the-system-tracer"·class="hover-link">138 ··<a·href="#module-trace-messages-sent-to-the-system-tracer"·class="hover-link">
139 ····<i·class="ri-link-m"·aria-hidden="true"></i>139 ····<i·class="ri-link-m"·aria-hidden="true"></i>
140 ··</a>140 ··</a>
141 ··<span·class="text">Trace·Messages·Sent·to·the·System·Tracer</span>141 ··<span·class="text">Trace·Messages·Sent·to·the·System·Tracer</span>
142 </h2>142 </h2>
143 <p>The·format·of·the·messages·is·one·of·the·following,·depending·on·if·flag143 <p>The·format·of·the·messages·is·one·of·the·following,·depending·on·if·flag
144 <code·class="inline">timestamp</code>·of·the·trace·token·is·set·to·<code·class="inline">true</code>·or·<code·class="inline">false</code>:</p><pre><code·class="text">{seq_trace,·Label,·SeqTraceInfo,·TimeStamp}</code></pre><p>or</p><pre><code·class="text">{seq_trace,·Label,·SeqTraceInfo}</code></pre><p>Where:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Label</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="6909894267-1">(</span><span·class="p"·data-group-id="6909894267-1">)</span><span·class="w">144 <code·class="inline">timestamp</code>·of·the·trace·token·is·set·to·<code·class="inline">true</code>·or·<code·class="inline">false</code>:</p><pre><code·class="text">{seq_trace,·Label,·SeqTraceInfo,·TimeStamp}</code></pre><p>or</p><pre><code·class="text">{seq_trace,·Label,·SeqTraceInfo}</code></pre><p>Where:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Label</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="9325736610-1">(</span><span·class="p"·data-group-id="9325736610-1">)</span><span·class="w">
145 </span><span·class="n">TimeStamp</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6909894267-2">{</span><span·class="n">Seconds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Milliseconds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Microseconds</span><span·class="p"·data-group-id="6909894[·...·truncated·by·diffoscope;·len:·3,·SHA:·8acc23987b8960d83c44541f9f0eb46454cea080ea94d916f56fccf033db866f·...·]-2">}</span><span·class="w">145 </span><span·class="n">TimeStamp</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9325736610-2">{</span><span·class="n">Seconds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Milliseconds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Microseconds</span><span·class="p"·data-group-id="9325736[·...·truncated·by·diffoscope;·len:·3,·SHA:·01ce4b291ad3ecd240be71870340051b755e74e91e05d5c5baa0d7830c1b75d4·...·]-2">}</span><span·class="w">
146 ··</span><span·class="n">Seconds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Milliseconds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Microseconds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="6909894267-3">(</span><span·class="p"·data-group-id="6909894267-3">)</span></code></pre><p><code·class="inline">SeqTraceInfo</code>·can·have·the·following·formats:</p><ul><li><p><strong><code·class="inline">{send,·Serial,·From,·To,·Message}</code></strong>·-·Used·when·a·process·<code·class="inline">From</code>·with·its146 ··</span><span·class="n">Seconds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Milliseconds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Microseconds</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="9325736610-3">(</span><span·class="p"·data-group-id="9325736610-3">)</span></code></pre><p><code·class="inline">SeqTraceInfo</code>·can·have·the·following·formats:</p><ul><li><p><strong><code·class="inline">{send,·Serial,·From,·To,·Message}</code></strong>·-·Used·when·a·process·<code·class="inline">From</code>·with·its
147 trace·token·flag·<code·class="inline">send</code>·set·to·<code·class="inline">true</code>·has·sent·information.·<code·class="inline">To</code>·may·be·a147 trace·token·flag·<code·class="inline">send</code>·set·to·<code·class="inline">true</code>·has·sent·information.·<code·class="inline">To</code>·may·be·a
148 process·identifier,·a·registered·name·on·a·node·represented·as148 process·identifier,·a·registered·name·on·a·node·represented·as
149 <code·class="inline">{NameAtom,·NodeAtom}</code>,·or·a·node·name·represented·as·an·atom.·<code·class="inline">From</code>·may·be·a149 <code·class="inline">{NameAtom,·NodeAtom}</code>,·or·a·node·name·represented·as·an·atom.·<code·class="inline">From</code>·may·be·a
150 process·identifier·or·a·node·name·represented·as·an·atom.·<code·class="inline">Message</code>·contains150 process·identifier·or·a·node·name·represented·as·an·atom.·<code·class="inline">Message</code>·contains
151 the·information·passed·along·in·this·information·transfer.·If·the·transfer·is151 the·information·passed·along·in·this·information·transfer.·If·the·transfer·is
152 done·via·message·passing,·it·is·the·actual·message.</p></li><li><p><strong><code·class="inline">{'receive',·Serial,·From,·To,·Message}</code></strong>·-·Used·when·a·process·<code·class="inline">To</code>152 done·via·message·passing,·it·is·the·actual·message.</p></li><li><p><strong><code·class="inline">{'receive',·Serial,·From,·To,·Message}</code></strong>·-·Used·when·a·process·<code·class="inline">To</code>
153 receives·information·with·a·trace·token·that·has·flag·<code·class="inline">'receive'</code>·set·to153 receives·information·with·a·trace·token·that·has·flag·<code·class="inline">'receive'</code>·set·to
Offset 283, 76 lines modifiedOffset 283, 76 lines modified
283 from·the·sequential·tracing·point·of·view.</p><h2·id="module-example-of-use"·class="section-heading">283 from·the·sequential·tracing·point·of·view.</p><h2·id="module-example-of-use"·class="section-heading">
284 ··<a·href="#module-example-of-use"·class="hover-link">284 ··<a·href="#module-example-of-use"·class="hover-link">
285 ····<i·class="ri-link-m"·aria-hidden="true"></i>285 ····<i·class="ri-link-m"·aria-hidden="true"></i>
286 ··</a>286 ··</a>
287 ··<span·class="text">Example·of·Use</span>287 ··<span·class="text">Example·of·Use</span>
288 </h2>288 </h2>
289 <p>This·example·gives·a·rough·idea·of·how·the·new·primitives·can·be·used·and·what289 <p>This·example·gives·a·rough·idea·of·how·the·new·primitives·can·be·used·and·what
290 kind·of·output·it·produces.</p><p>Assume·that·you·have·an·initiating·process·with·<code·class="inline">Pid·==·&lt;0.30.0&gt;</code>·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6111805307-1">(</span><span·class="ss">seqex</span><span·class="p"·data-group-id="6111805307-1">)</span><span·class="p">.</span><span·class="w">290 kind·of·output·it·produces.</p><p>Assume·that·you·have·an·initiating·process·with·<code·class="inline">Pid·==·&lt;0.30.0&gt;</code>·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6222217750-1">(</span><span·class="ss">seqex</span><span·class="p"·data-group-id="6222217750-1">)</span><span·class="p">.</span><span·class="w">
291 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="6111805307-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="6111805307-2">)</span><span·class="p">.</span><span·class="w">291 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="6222217750-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="6222217750-2">)</span><span·class="p">.</span><span·class="w">
  
292 </span><span·class="nf">loop</span><span·class="p"·data-group-id="6111805307-3">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6111805307-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">292 </span><span·class="nf">loop</span><span·class="p"·data-group-id="6222217750-3">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6222217750-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
293 ····</span><span·class="k">receive</span><span·class="w">293 ····</span><span·class="k">receive</span><span·class="w">
294 ········</span><span·class="p"·data-group-id="6111805307-4">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="6111805307-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">294 ········</span><span·class="p"·data-group-id="6222217750-4">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="6222217750-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
295 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="6111805307-5">(</span><span·class="ss">label</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="6111805307-5">)</span><span·class="p">,</span><span·class="w">295 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="6222217750-5">(</span><span·class="ss">label</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="6222217750-5">)</span><span·class="p">,</span><span·class="w">
296 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="6111805307-6">(</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6111805307-6">)</span><span·class="p">,</span><span·class="w">296 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="6222217750-6">(</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6222217750-6">)</span><span·class="p">,</span><span·class="w">
297 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="6111805307-7">(</span><span·class="ss">print</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6111805307-7">)</span><span·class="p">,</span><span·class="w">297 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="6222217750-7">(</span><span·class="ss">print</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6222217750-7">)</span><span·class="p">,</span><span·class="w">
298 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="6111805307-8">(</span><span·class="mi">17</span><span·class="p">,</span><span·class="s">&quot;****·Trace·Started·****&quot;</span><span·class="p"·data-group-id="6111805307-8">)</span><span·class="p">,</span><span·class="w">298 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="6222217750-8">(</span><span·class="mi">17</span><span·class="p">,</span><span·class="s">&quot;****·Trace·Started·****&quot;</span><span·class="p"·data-group-id="6222217750-8">)</span><span·class="p">,</span><span·class="w">
299 ············</span><span·class="ss">call_server</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6111805307-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6111805307-10">(</span><span·class="p"·data-group-id="6111805307-10">)</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="611180530[·...·truncated·by·diffoscope;·len:·1,·SHA:·7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451·...·]-9">}</span><span·class="p">;</span><span·class="w">299 ············</span><span·class="ss">call_server</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6222217750-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6222217750-10">(</span><span·class="p"·data-group-id="6222217750-10">)</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="622221775[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-9">}</span><span·class="p">;</span><span·class="w">
300 ········</span><span·class="p"·data-group-id="6111805307-11">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="6111805307-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">300 ········</span><span·class="p"·data-group-id="6222217750-11">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="6222217750-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
301 ············</span><span·class="ss">ok</span><span·class="w">301 ············</span><span·class="ss">ok</span><span·class="w">
302 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">302 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
303 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6111805307-12">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6111805307-12">)</span><span·class="p">.</span></code></pre><p>And·a·registered·process·<code·class="inline">call_server</code>·with·<code·class="inline">Pid·==·&lt;0.31.0&gt;<[·...·truncated·by·diffoscope;·len:·191,·SHA:·2520e71418c0fdc885bc0ca79d3154b6b2137abf36dbb8fed6d7507939cdd2a7·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">303 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6222217750-12">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6222217750-12">)</span><span·class="p">.</span></code></pre><p>And·a·registered·process·<code·class="inline">call_server</code>·with·<code·class="inline">Pid·==·&lt;0.31.0&gt;<[·...·truncated·by·diffoscope;·len:·191,·SHA:·92207156e57be5fbc692773635ebf74b2610d7c6c39d94ac59ef14d812741aaf·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
304 ····</span><span·class="k">receive</span><span·class="w">304 ····</span><span·class="k">receive</span><span·class="w">
305 ········</span><span·class="p"·data-group-id="3176734215-2">{</span><span·class="n">PortController</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="3176734215-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">305 ········</span><span·class="p"·data-group-id="0709379004-2">{</span><span·class="n">PortController</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="0709379004-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
306 ············</span><span·class="n">Ack</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3176734215-3">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="3176734215-3">}</span><span·class="p">,</span><span·class="w">306 ············</span><span·class="n">Ack</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0709379004-3">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Message</span><span·class="p"·data-group-id="0709379004-3">}</span><span·class="p">,</span><span·class="w">
307 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="3176734215-4">(</span><span·class="mi">17</span><span·class="p">,</span><span·class="s">&quot;We·are·here·now&quot;</span><span·class="p"·data-group-id="3176734215-4">)</span><span·class="p">,</span><span·class="w">307 ············</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="0709379004-4">(</span><span·class="mi">17</span><span·class="p">,</span><span·class="s">&quot;We·are·here·now&quot;</span><span·class="p"·data-group-id="0709379004-4">)</span><span·class="p">,</span><span·class="w">
308 ············</span><span·class="n">PortController</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="3176734215-5">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="3176734215-5">}</span><span·class="w">308 ············</span><span·class="n">PortController</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0709379004-5">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="0709379004-5">}</span><span·class="w">
309 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">309 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
310 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3176734215-6">(</span><span·class="p"·data-group-id="3176734215-6">)</span><span·class="p">.</span></code></pre><p>A·possible·output·from·the·system's·<code·class="inline">sequential_tracer</code>·can·be·like·this:</p><pre><code·class="makeup·erlang"·trans[·...·truncated·by·diffoscope;·len:·433,·SHA:·83f620a866df7ff869b21cbf231a4881cb6a40f089c25135faa997324e0386d9·...·]2-1">}</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">310 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0709379004-6">(</span><span·class="p"·data-group-id="0709379004-6">)</span><span·class="p">.</span></code></pre><p>A·possible·output·from·the·system's·<code·class="inline">sequential_tracer</code>·can·be·like·this:</p><pre><code·class="makeup·erlang"·trans[·...·truncated·by·diffoscope;·len:·433,·SHA:·721c917f3ec07ba675d206fa368465dce07d45ab979df1ac869bb8a85d3df582·...·]2-1">}</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">
311 </span><span·class="s">&quot;****·Trace·Started·****&quot;</span><span·class="w">311 </span><span·class="s">&quot;****·Trace·Started·****&quot;</span><span·class="w">
312 </span><span·class="mi">17</span><span·class="p">:</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Received</span><span·class="w">·</span><span·class="p"·data-group-id="0895743172-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0895743172-2">}</span><span·class="w">·</span><span·class="n">FROM</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">312 </span><span·class="mi">17</span><span·class="p">:</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Received</span><span·class="w">·</span><span·class="p"·data-group-id="1214000912-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1214000912-2">}</span><span·class="w">·</span><span·class="n">FROM</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">
313 </span><span·class="p"·data-group-id="0895743172-3">{</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="0895743172-3">}</span><span·class="w">313 </span><span·class="p"·data-group-id="1214000912-3">{</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="1214000912-3">}</span><span·class="w">
314 </span><span·class="mi">17</span><span·class="p">:</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Info</span><span·class="w">·</span><span·class="p"·data-group-id="0895743172-4">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="0895743172-4">}</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">314 </span><span·class="mi">17</span><span·class="p">:</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Info</span><span·class="w">·</span><span·class="p"·data-group-id="1214000912-4">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1214000912-4">}</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">
315 </span><span·class="s">&quot;We·are·here·now&quot;</span><span·class="w">315 </span><span·class="s">&quot;We·are·here·now&quot;</span><span·class="w">
316 </span><span·class="mi">17</span><span·class="p">:</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Received</span><span·class="w">·</span><span·class="p"·data-group-id="0895743172-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="0895743172-5">}</span><span·class="w">·</span><span·class="n">FROM</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">316 </span><span·class="mi">17</span><span·class="p">:</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Received</span><span·class="w">·</span><span·class="p"·data-group-id="1214000912-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="1214000912-5">}</span><span·class="w">·</span><span·class="n">FROM</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">WITH</span><span·class="w">
317 </span><span·class="p"·data-group-id="0895743172-6">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="p"·data-group-id="0895743172-7">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="08957431[·...·truncated·by·diffoscope;·len:·54,·SHA:·16f1fa55db371e142d9381766f20892aa9f26d5197d56c4f8f217a11f18c6aee·...·]2-6">}</span></code></pre><p>The·implementation·of·a·system·tracer·process·that·produces·this·printout·can317 </span><span·class="p"·data-group-id="1214000912-6">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="p"·data-group-id="1214000912-7">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="12140009[·...·truncated·by·diffoscope;·len:·54,·SHA:·4fa4c43d998ef19fd3da014aa3405a1470a550abe7e8bf265ba21e812395d3b9·...·]2-6">}</span></code></pre><p>The·implementation·of·a·system·tracer·process·that·produces·this·printout·can
318 look·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">tracer</span><span·class="p"·data-group-id="0018216591-1">(</span><span·class="p"·data-group-id="0018216591-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">318 look·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">tracer</span><span·class="p"·data-group-id="8716200569-1">(</span><span·class="p"·data-group-id="8716200569-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
319 ····</span><span·class="k">receive</span><span·class="w">319 ····</span><span·class="k">receive</span><span·class="w">
320 ········</span><span·class="p"·data-group-id="0018216591-2">{</span><span·class="ss">seq_trace</span><span·class="p">,</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="0018216591-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">320 ········</span><span·class="p"·data-group-id="8716200569-2">{</span><span·class="ss">seq_trace</span><span·class="p">,</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="8716200569-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
321 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-3">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="0018216591-3">)</span><span·class="p">;</span><span·class="w">321 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-3">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="8716200569-3">)</span><span·class="p">;</span><span·class="w">
322 ········</span><span·class="p"·data-group-id="0018216591-4">{</span><span·class="ss">seq_trace</span><span·class="p">,</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"·data-group-id="0018216591-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">322 ········</span><span·class="p"·data-group-id="8716200569-4">{</span><span·class="ss">seq_trace</span><span·class="p">,</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"·data-group-id="8716200569-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
323 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-5">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"·data-group-id="0018216591-5">)</span><span·class="p">;</span><span·class="w">323 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-5">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"·data-group-id="8716200569-5">)</span><span·class="p">;</span><span·class="w">
324 ········</span><span·class="p">_</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ignore</span><span·class="w">324 ········</span><span·class="p">_</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ignore</span><span·class="w">
325 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">325 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
326 ····</span><span·class="nf">tracer</span><span·class="p"·data-group-id="0018216591-6">(</span><span·class="p"·data-group-id="0018216591-6">)</span><span·class="p">.</span><span·class="w">326 ····</span><span·class="nf">tracer</span><span·class="p"·data-group-id="8716200569-6">(</span><span·class="p"·data-group-id="8716200569-6">)</span><span·class="p">.</span><span·class="w">
  
327 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-7">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="0018216591-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">327 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-7">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="8716200569-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
328 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0018216591-8">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">:&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0018216591-9">[</span><span·class="n">Label</span><span·class="p"·data-group-id="0018216591-9"[·...·truncated·by·diffoscope;·len:·50,·SHA:·f28f8c14bb9f547626df5e89c45b3b582af8310f2b752fd2c5cf31b90c482625·...·]-8">)</span><span·class="p">,</span><span·class="w">328 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8716200569-8">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">:&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8716200569-9">[</span><span·class="n">Label</span><span·class="p"·data-group-id="8716200569-9"[·...·truncated·by·diffoscope;·len:·50,·SHA:·f4f1130f3304da11777e3b0bbb4df02c6dcea4d54139e74c248d382d439f5dfa·...·]-8">)</span><span·class="p">,</span><span·class="w">
329 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-10">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="0018216591-10">)</span><span·class="p">;</span><span·class="w">329 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-10">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="8716200569-10">)</span><span·class="p">;</span><span·class="w">
330 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-11">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"·data-group-id="0018216591-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">330 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-11">(</span><span·class="n">Label</span><span·class="p">,</span><span·class="n">TraceInfo</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"·data-group-id="8716200569-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
331 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0018216591-12">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·</span><span·class="si">~p</span><span·class="s">:&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0018216591-13">[</span><span·class="n">Labe[·...·truncated·by·diffoscope;·len:·152,·SHA:·c21d0f72d4639867be3b7d8d5896327cb51812058197ad3e8e7e3b4cdac01cf3·...·]-12">)</span><span·class="p">,</span><span·class="w">331 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8716200569-12">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·</span><span·class="si">~p</span><span·class="s">:&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8716200569-13">[</span><span·class="n">Labe[·...·truncated·by·diffoscope;·len:·152,·SHA:·50b7619669c12650cb4b484aa9206e9c0fe366e535ed6c4f2f73a7e64b61855e·...·]-12">)</span><span·class="p">,</span><span·class="w">
332 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-14">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="0018216591-14">)</span><span·class="p">.</span><span·class="w">332 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-14">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="8716200569-14">)</span><span·class="p">.</span><span·class="w">
  
333 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-15">(</span><span·class="p"·data-group-id="0018216591-16">{</span><span·class="ss">print</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="p">_</spa[·...·truncated·by·diffoscope;·len:·148,·SHA:·d004e37851d0d1aa2ad30db05d3c5b600cb003272bbb2a68804e8f4bd52fb654·...·]-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">333 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-15">(</span><span·class="p"·data-group-id="8716200569-16">{</span><span·class="ss">print</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="p">_</spa[·...·truncated·by·diffoscope;·len:·148,·SHA:·cac42f7d91e2f0ded7dc9a3f61a0c5bf896520b3054d2d8b8fe5b2318e0f494b·...·]-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
334 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0018216591-17">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·Info·</span><span·class="si">~p</span><span·class="s">·WITH</span><span·class="si">~n</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·340,·SHA:·a4937c71b4334e206a4d1e8b81c5810e8d1f8e2f65278da8e3b91efa5065edce·...·]-17">)</span><span·class="p">;</span><span·class="w">334 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8716200569-17">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·Info·</span><span·class="si">~p</span><span·class="s">·WITH</span><span·class="si">~n</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·340,·SHA:·268c1030c3f0fc63612718eeff2d1fced046ee4690ef63c7500ea065569d9559·...·]-17">)</span><span·class="p">;</span><span·class="w">
335 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-19">(</span><span·class="p"·data-group-id="0018216591-20">{</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·164,·SHA:·a2dd9ff94e64e2c3a977c0f622c2fc588abbb598cbc4a7649507a288ad3cce4c·...·]-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">335 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-19">(</span><span·class="p"·data-group-id="8716200569-20">{</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·164,·SHA:·8af5bd81d67ea39d0d153e78473126523373968facb3f0edec36824eedad1ad0·...·]-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
336 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0018216591-21">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·Received·</span><span·class="si">~p</span><span·class="s">·FROM·</span><span·class="si">~p</span><span·class="s">·WITH</span><span·class="si">~n</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">336 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8716200569-21">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·Received·</span><span·class="si">~p</span><span·class="s">·FROM·</span><span·class="si">~p</span><span·class="s">·WITH</span><span·class="si">~n</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
337 ··············</span><span·class="p"·data-group-id="0018216591-22">[</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="0018216591-22">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·8205e544ed8984c15cc7d230ad8db3e40678082059cab68b19e0c2e0a80ea881·...·]-21">)</span><span·class="p">;</span><span·class="w">337 ··············</span><span·class="p"·data-group-id="8716200569-22">[</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="8716200569-22">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·c42d90c5cee00757c88637292442bbc06d34b3b0f4c90ccadbba7075519ecc37·...·]-21">)</span><span·class="p">;</span><span·class="w">
338 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="0018216591-23">(</span><span·class="p"·data-group-id="0018216591-24">{</span><span·class="nb">send</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">To</spa[·...·truncated·by·diffoscope;·len:·151,·SHA:·427473105e76e9217afbc2cb82a8ef4d03bc1ecdf99c2f757a732399f0aa6bbd·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">338 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="8716200569-23">(</span><span·class="p"·data-group-id="8716200569-24">{</span><span·class="nb">send</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">From</span><span·class="p">,</span><span·class="n">To</spa[·...·truncated·by·diffoscope;·len:·151,·SHA:·dba191d51900c676652e0f7073044f474f3e8169a7d1165268e8cb53588b9df5·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
339 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0018216591-25">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·Sent·</span><span·class="si">~p</span><span·class="s">·TO·</span><span·class="si">~p</span><span·class="s">·WITH</span><span·class="si">~n</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">339 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8716200569-25">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">·Sent·</span><span·class="si">~p</span><span·class="s">·TO·</span><span·class="si">~p</span><span·class="s">·WITH</span><span·class="si">~n</span><span·class="si">~p</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
340 ··············</span><span·class="p"·data-group-id="0018216591-26">[</span><span·class="n">From</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="0018216591-26">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·8205e544ed8984c15cc7d230ad8db3e40678082059cab68b19e0c2e0a80ea881·...·]-25">)</span><span·class="p">.</span></code></pre><p>The·code·that·creates·a·process·that·runs·this·tracer·function·and·sets·that340 ··············</span><span·class="p"·data-group-id="8716200569-26">[</span><span·class="n">From</span><span·class="p">,</span><span·class="n">Serial</span><span·class="p">,</span><span·class="n">To</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="8716200569-26">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·c42d90c5cee00757c88637292442bbc06d34b3b0f4c90ccadbba7075519ecc37·...·]-25">)</span><span·class="p">.</span></code></pre><p>The·code·that·creates·a·process·that·runs·this·tracer·function·and·sets·that
341 process·as·the·system·tracer·can·look·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start</span><span·class="p"·data-group-id="4288176303-1">(</span><span·class="p"·data-group-id="4288176303-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">341 process·as·the·system·tracer·can·look·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">start</span><span·class="p"·data-group-id="3500016654-1">(</span><span·class="p"·data-group-id="3500016654-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
342 ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4288176303-2">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="ss">tracer</span><span·class="p">,</span><span·class="p"·data-group-id="4288176303-3">[</span><span·class="p"·data-group-id="4288176303-3">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·f644a30886fae434ad32eda56bbdce01de68e661852cd5338be9f53a9e9f746d·...·]-2">)</span><span·class="p">,</span><span·class="w">342 ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="3500016654-2">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="ss">tracer</span><span·class="p">,</span><span·class="p"·data-group-id="3500016654-3">[</span><span·class="p"·data-group-id="3500016654-3">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·fcd8f6e3c8ac5d73a549965c72eb135c047a74d988eb5e095848addb4c030ffa·...·]-2">)</span><span·class="p">,</span><span·class="w">
343 ····</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_system_tracer</span><span·class="p"·data-group-id="4288176303-4">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="4288176303-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·set·Pid·as·the·system·tracer</span><span·class="w">343 ····</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_system_tracer</span><span·class="p"·data-group-id="3500016654-4">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="3500016654-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·set·Pid·as·the·system·tracer</span><span·class="w">
344 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>With·a·function·like·<code·class="inline">test/0</code>,·the·whole·example·can·be·started:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">test</span><span·class="p"·data-group-id="7060343655-1">(</span><span·class="p"·data-group-id="7060343655-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">344 ····</span><span·class="ss">ok</span><span·class="p">.</span></code></pre><p>With·a·function·like·<code·class="inline">test/0</code>,·the·whole·example·can·be·started:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">test</span><span·class="p"·data-group-id="0976427554-1">(</span><span·class="p"·data-group-id="0976427554-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
345 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7060343655-2">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7060343655-3">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·865e56d83776b799e7d99abd595548f60a9bbc39ff4d7a8f6bb2fea15fcefc3a·...·]-2">)</span><span·class="p">,</span><span·class="w">345 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0976427554-2">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0976427554-3">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·f10dca9de1cb64822b85a254dbf5059d16192476cc07f2b99ca0a63775077246·...·]-2">)</span><span·class="p">,</span><span·class="w">
346 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="7060343655-4">(</span><span·class="ss">call_server</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7060343655-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">[·...·truncated·by·diffoscope;·len:·308,·SHA:·b9b497ed416bbcc5a3db99c71cd1a6c04748cc439212dcae9cae0038664d8fc7·...·]-4">)</span><span·class="p">,</span><span·class="w">346 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="0976427554-4">(</span><span·class="ss">call_server</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0976427554-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">[·...·truncated·by·diffoscope;·len:·308,·SHA:·7cf5e125ef813bf10adaab2be18183dc54f85bd6629faa3f31f1e98535f94dd3·...·]-4">)</span><span·class="p">,</span><span·class="w">
347 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="7060343655-7">(</span><span·class="p"·data-group-id="7060343655-7">)</span><span·class="p">,</span><span·class="w">347 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="0976427554-7">(</span><span·class="p"·data-group-id="0976427554-7">)</span><span·class="p">,</span><span·class="w">
348 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7060343655-8">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="ss">message</span><span·class="p"·data-group-id="7060343655-8">}</span><span·class="p">.</span></code></pre>348 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0976427554-8">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="ss">message</span><span·class="p"·data-group-id="0976427554-8">}</span><span·class="p">.</span></code></pre>
349 ····</section>349 ····</section>
  
350 </div>350 </div>
  
351 ··<section·id="summary"·class="details-list">351 ··<section·id="summary"·class="details-list">
352 ····<h1·class="section-heading">352 ····<h1·class="section-heading">
353 ······<a·class="hover-link"·href="#summary">353 ······<a·class="hover-link"·href="#summary">
Offset 907, 19 lines modifiedOffset 907, 19 lines modified
  
907 ······</div>907 ······</div>
  
908 <p>Sets·the·trace·token·for·the·calling·process·to·<code·class="inline">Token</code>.·If·<code·class="inline">Token·==·[]</code>·then908 <p>Sets·the·trace·token·for·the·calling·process·to·<code·class="inline">Token</code>.·If·<code·class="inline">Token·==·[]</code>·then
909 tracing·is·disabled,·otherwise·<code·class="inline">Token</code>·should·be·an·Erlang·term·returned·from909 tracing·is·disabled,·otherwise·<code·class="inline">Token</code>·should·be·an·Erlang·term·returned·from
910 <a·href="#get_token/0"><code·class="inline">get_token/0</code></a>·or·<a·href="#set_token/1"><code·class="inline">set_token/1</code></a>.·<a·href="#set_token/1"><code·class="inline">set_token/1</code></a>910 <a·href="#get_token/0"><code·class="inline">get_token/0</code></a>·or·<a·href="#set_token/1"><code·class="inline">set_token/1</code></a>.·<a·href="#set_token/1"><code·class="inline">set_token/1</code></a>
911 can·be·used·to·temporarily·exclude·message·passing·from·the·trace·by·setting·the911 can·be·used·to·temporarily·exclude·message·passing·from·the·trace·by·setting·the
912 trace·token·to·empty·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OldToken</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="5095803477-1">(</span><span·class="p"·data-group-id="5095803477-2">[</span><span·class="p"·data-group-id="5095803477-2">]</span><span·class="p"·data-group-id="5095803477-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·set·to·empty·and·save</span><span·class="w">912 trace·token·to·empty·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">OldToken</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="1904331462-1">(</span><span·class="p"·data-group-id="1904331462-2">[</span><span·class="p"·data-group-id="1904331462-2">]</span><span·class="p"·data-group-id="1904331462-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·set·to·empty·and·save</span><span·class="w">
913 ····································</span><span·class="c1">%·old·value</span><span·class="w">913 ····································</span><span·class="c1">%·old·value</span><span·class="w">
914 </span><span·class="c1">%·do·something·that·should·not·be·part·of·the·trace</span><span·class="w">914 </span><span·class="c1">%·do·something·that·should·not·be·part·of·the·trace</span><span·class="w">
915 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5095803477-3">(</span><span·class="s">&quot;Exclude·the·signalling·caused·by·this</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p"·data-group-id="5095803477-3">)</span><span·class="p">,</span><span·class="w">915 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1904331462-3">(</span><span·class="s">&quot;Exclude·the·signalling·caused·by·this</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p"·data-group-id="1904331462-3">)</span><span·class="p">,</span><span·class="w">
916 </span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="5095803477-4">(</span><span·class="n">OldToken</span><span·class="p"·data-group-id="5095803477-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·activate·the·trace·token·again</span><span·class="w">916 </span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="1904331462-4">(</span><span·class="n">OldToken</span><span·class="p"·data-group-id="1904331462-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·activate·the·trace·token·again</span><span·class="w">
917 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Returns·the·previous·value·of·the·trace·token.</p>917 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>Returns·the·previous·value·of·the·trace·token.</p>
918 ··</section>918 ··</section>
919 </section>919 </section>
920 <section·class="detail"·id="set_token/2">920 <section·class="detail"·id="set_token/2">
  
921 ··<div·class="detail-header">921 ··<div·class="detail-header">
922 ····<a·href="#set_token/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">922 ····<a·href="#set_token/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
32.3 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/socket.html
    
Offset 168, 16 lines modifiedOffset 168, 16 lines modified
168 and·using·that·as·the·<code·class="inline">Timeout | Handle</code>·argument,·the·same·<code·class="inline">Handle</code>168 and·using·that·as·the·<code·class="inline">Timeout | Handle</code>·argument,·the·same·<code·class="inline">Handle</code>
169 will·then·be·the·<a·href="#t:select_handle/0"><code·class="inline">SelectHandle</code></a>·in·the·returned169 will·then·be·the·<a·href="#t:select_handle/0"><code·class="inline">SelectHandle</code></a>·in·the·returned
170 <a·href="#t:select_info/0"><code·class="inline">select_info/0</code></a>·and·the·received·<code·class="inline">select</code>·message,·or·be170 <a·href="#t:select_info/0"><code·class="inline">select_info/0</code></a>·and·the·received·<code·class="inline">select</code>·message,·or·be
171 the·<a·href="#t:completion_handle/0"><code·class="inline">CompletionHandle</code></a>·in·the·returned171 the·<a·href="#t:completion_handle/0"><code·class="inline">CompletionHandle</code></a>·in·the·returned
172 <a·href="#t:completion_info/0"><code·class="inline">completion_info/0</code></a>·and·the·received·<code·class="inline">completion</code>·message.</p><p>The·compiler·may·then·optimize·a·following·<code·class="inline">receive</code>·statement172 <a·href="#t:completion_info/0"><code·class="inline">completion_info/0</code></a>·and·the·received·<code·class="inline">completion</code>·message.</p><p>The·compiler·may·then·optimize·a·following·<code·class="inline">receive</code>·statement
173 to·only·scan·the·messages·that·arrive·after·the·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0"><code·class="inline">reference/0</code></a>173 to·only·scan·the·messages·that·arrive·after·the·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0"><code·class="inline">reference/0</code></a>
174 is·created.··If·the·message·queue·is·large·this·is·a·big·optimization.</p><p>The·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0"><code·class="inline">reference/0</code></a>·has·to·be·unique·for·the·call.</p><h4>Repeating·an·Operation·on·a·<code·class="inline">select</code>·Systems</h4><p>On<code·class="inline">select</code>·systems,·if·a·call·would·be·repeated·<em>before</em>·the·<code·class="inline">select</code>174 is·created.··If·the·message·queue·is·large·this·is·a·big·optimization.</p><p>The·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0"><code·class="inline">reference/0</code></a>·has·to·be·unique·for·the·call.</p><h4>Repeating·an·Operation·on·a·<code·class="inline">select</code>·Systems</h4><p>On<code·class="inline">select</code>·systems,·if·a·call·would·be·repeated·<em>before</em>·the·<code·class="inline">select</code>
175 message·has·been·received·it·replaces·the·call·in·progress:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p"·data-group-id="2974150120-1">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2974150120-2">{</span><span·class="ss">select_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Hand[·...·truncated·by·diffoscope;·len:·471,·SHA:·007c9fcc20afb6a6d60681f7825ac650b62896f2d397842a486eeb78a20d06ff·...·]-3">)</span><span·class="p">,</span><span·class="w">175 message·has·been·received·it·replaces·the·call·in·progress:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p"·data-group-id="7663602992-1">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7663602992-2">{</span><span·class="ss">select_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Hand[·...·truncated·by·diffoscope;·len:·471,·SHA:·99d3f351e3e674ea6b58c84bc8b4748b7b8e52228ae1b32ce64e62a77c4bdf67·...·]-3">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="2974150120-4">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="p"·data-group-id="2974150120-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·280,·SHA:·6569a520792dd37e2509eeb6c2b990ceed6d74d36ebbe61f4f78cc75c0534734·...·]-5">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="p"·data-group-id="7663602992-4">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="p"·data-group-id="7663602992-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·280,·SHA:·a71757c7d756d4d5cfbd26e1e869e356419cafda7a5e77e3a189e5eddcbf6430·...·]-5">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="p">:</span></code></pre><p>Above,·<code·class="inline">Handle</code>·is·<em>no·longer</em>·valid·once·the·second·<a·href="#accept/2"><code·class="inline">accept/2</code></a>,·call177 ····</span><span·class="p">:</span></code></pre><p>Above,·<code·class="inline">Handle</code>·is·<em>no·longer</em>·valid·once·the·second·<a·href="#accept/2"><code·class="inline">accept/2</code></a>,·call
178 has·been·made·(the·first·call·is·automatically·canceled).178 has·been·made·(the·first·call·is·automatically·canceled).
179 After·the·second·<a·href="#accept/2"><code·class="inline">accept/2</code></a>·call·returns·<code·class="inline">{error,·timeout}</code>,179 After·the·second·<a·href="#accept/2"><code·class="inline">accept/2</code></a>·call·returns·<code·class="inline">{error,·timeout}</code>,
180 the·accept·operation·has·completed.</p><p>Note·that·there·is·a·race·here;·there·is·no·way·to·know·if·the·call180 the·accept·operation·has·completed.</p><p>Note·that·there·is·a·race·here;·there·is·no·way·to·know·if·the·call
181 is·repeated·<em>before</em>·the·<code·class="inline">select</code>·message·is·sent·since·it·<em>may</em>181 is·repeated·<em>before</em>·the·<code·class="inline">select</code>·message·is·sent·since·it·<em>may</em>
182 have·been·sent·just·before·the·repeated·call.··So·now·there182 have·been·sent·just·before·the·repeated·call.··So·now·there
183 might·be·a·<code·class="inline">select</code>·message·containing·<code·class="inline">Handle</code>·in·the·inbox.</p><h4>The·<code·class="inline">abort</code>·Message</h4><p>Another·message·the·user·must·be·prepared·for183 might·be·a·<code·class="inline">select</code>·message·containing·<code·class="inline">Handle</code>·in·the·inbox.</p><h4>The·<code·class="inline">abort</code>·Message</h4><p>Another·message·the·user·must·be·prepared·for
Offset 202, 36 lines modifiedOffset 202, 36 lines modified
202 (<a·href="#t:completion_handle/0">completion·handle</a>)202 (<a·href="#t:completion_handle/0">completion·handle</a>)
203 API·features·could·be·considered·no·longer·experimental.</li></ul><h2·id="module-examples"·class="section-heading">203 API·features·could·be·considered·no·longer·experimental.</li></ul><h2·id="module-examples"·class="section-heading">
204 ··<a·href="#module-examples"·class="hover-link">204 ··<a·href="#module-examples"·class="hover-link">
205 ····<i·class="ri-link-m"·aria-hidden="true"></i>205 ····<i·class="ri-link-m"·aria-hidden="true"></i>
206 ··</a>206 ··</a>
207 ··<span·class="text">Examples</span>207 ··<span·class="text">Examples</span>
208 </h2>208 </h2>
209 <pre><code·class="makeup·erlang"·translate="no"><span·class="nf">client</span><span·class="p"·data-group-id="7323849957-1">(</span><span·class="n">SAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SPort</span><span·class="p"·data-group-id="7323849957-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">209 <pre><code·class="makeup·erlang"·translate="no"><span·class="nf">client</span><span·class="p"·data-group-id="6487085352-1">(</span><span·class="n">SAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SPort</span><span·class="p"·data-group-id="6487085352-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
210 ···</span><span·class="p"·data-group-id="7323849957-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="7323849957-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·349,·SHA:·acefa68ef38ebd3f5a6d503fe5822f7c131708d4164c0d6b2b2fff9d7d3f6bee·...·]-3">)</span><span·class="p">,</span><span·class="w">210 ···</span><span·class="p"·data-group-id="6487085352-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="6487085352-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·349,·SHA:·ffe75acc413f382d770cc1de60e02e3a85f446b6129d35c6b0709f92d906aa31·...·]-3">)</span><span·class="p">,</span><span·class="w">
211 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="7323849957-4">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7323849957-5">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">211 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="6487085352-4">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487085352-5">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">
212 ·······························</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">SAddr</span><span·class="p">,</span><span·class="w">212 ·······························</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">SAddr</span><span·class="p">,</span><span·class="w">
213 ·······························</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">SPort</span><span·class="p"·data-group-id="7323849957-5">}</span><span·class="p"·data-group-id="7323849957-4">)</span><span·class="p">,</span><span·class="w">213 ·······························</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">SPort</span><span·class="p"·data-group-id="6487085352-5">}</span><span·class="p"·data-group-id="6487085352-4">)</span><span·class="p">,</span><span·class="w">
214 ···</span><span·class="n">Msg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7323849957-6">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="7323849957-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">214 ···</span><span·class="n">Msg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6487085352-6">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="6487085352-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">
215 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="7323849957-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7323849957-7">)</span><span·class="p">,</span><span·class="w">215 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="6487085352-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6487085352-7">)</span><span·class="p">,</span><span·class="w">
216 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="7323849957-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><span·class="p"·data-group-id="7323849957-8">)</span><span·class="p">,</span><span·class="w">216 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="6487085352-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><span·class="p"·data-group-id="6487085352-8">)</span><span·class="p">,</span><span·class="w">
217 ···</span><span·class="p"·data-group-id="7323849957-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7323849957-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·195,·SHA:·47aea117d53be93cf430d6dedd846255b2e2e9d27aa40927d2916649507f62cd·...·]-10">)</span><span·class="p">,</span><span·class="w">217 ···</span><span·class="p"·data-group-id="6487085352-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6487085352-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·195,·SHA:·b3a13aec6dbe936a63a3fbda5eef743fb67f6e79f59578b565152c22c0f25e41·...·]-10">)</span><span·class="p">,</span><span·class="w">
218 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7323849957-11">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7323849957-11">)</span><span·class="p">.</span><span·class="w">218 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="6487085352-11">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="6487085352-11">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">server</span><span·class="p"·data-group-id="7323849957-12">(</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="7323849957-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 </span><span·class="nf">server</span><span·class="p"·data-group-id="6487085352-12">(</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="6487085352-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ···</span><span·class="p"·data-group-id="7323849957-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LSock</span><span·class="p"·data-group-id="7323849957-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·353,·SHA:·a9f56871e40e6971064fe5064ce9ba0b955c80a0b670892ebe0854d93522746a·...·]-14">)</span><span·class="p">,</span><span·class="w">220 ···</span><span·class="p"·data-group-id="6487085352-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LSock</span><span·class="p"·data-group-id="6487085352-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·353,·SHA:·e45e770717d8ab1ebb5732191031a4e467314d8ef71a921c6b96ee8ba72347da·...·]-14">)</span><span·class="p">,</span><span·class="w">
221 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">bind</span><span·class="p"·data-group-id="7323849957-15">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7323849957-16">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">221 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">bind</span><span·class="p"·data-group-id="6487085352-15">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487085352-16">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">
222 ·····························</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">222 ·····························</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">
223 ·····························</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p"·data-group-id="7323849957-16">}</span><span·class="p"·data-group-id="7323849957-15">)</span><span·class="p">,</span><span·class="w">223 ·····························</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p"·data-group-id="6487085352-16">}</span><span·class="p"·data-group-id="6487085352-15">)</span><span·class="p">,</span><span·class="w">
224 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="7323849957-17">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="7323849957-17">)</span><span·class="p">,</span><span·class="w">224 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="6487085352-17">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="6487085352-17">)</span><span·class="p">,</span><span·class="w">
225 ···</span><span·class="p"·data-group-id="7323849957-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="7323849957-18">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·98afcebfc997a5bb43c5ba24667242cb11f346d97a7cd67ae15e0244b9772f47·...·]-19">)</span><span·class="p">,</span><span·class="w">225 ···</span><span·class="p"·data-group-id="6487085352-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="6487085352-18">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·11ab6f9685ff2e8318f88acc6c70ca3e1a3849fb6a8889a987ede4f5efbb61c0·...·]-19">)</span><span·class="p">,</span><span·class="w">
226 ···</span><span·class="p"·data-group-id="7323849957-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7323849957-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·197,·SHA:·f5d2404edb84320636188522c3fe7ea69d14e7f80649f5f845791179a3f7b89e·...·]-21">)</span><span·class="p">,</span><span·class="w">226 ···</span><span·class="p"·data-group-id="6487085352-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6487085352-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·197,·SHA:·b8ac9becaf13ff1b4097ca2108faeb81289b35741bc5be681d4d63cc30f7d0d5·...·]-21">)</span><span·class="p">,</span><span·class="w">
227 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="7323849957-22">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7323849957-22">)</span><span·class="p">,</span><span·class="w">227 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="6487085352-22">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6487085352-22">)</span><span·class="p">,</span><span·class="w">
228 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7323849957-23">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7323849957-23">)</span><span·class="p">,</span><span·class="w">228 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="6487085352-23">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="6487085352-23">)</span><span·class="p">,</span><span·class="w">
229 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7323849957-24">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="7323849957-24">)</span><span·class="p">.</span></code></pre>229 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="6487085352-24">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="6487085352-24">)</span><span·class="p">.</span></code></pre>
230 ····</section>230 ····</section>
  
231 </div>231 </div>
  
232 ··<section·id="summary"·class="details-list">232 ··<section·id="summary"·class="details-list">
233 ····<h1·class="section-heading">233 ····<h1·class="section-heading">
234 ······<a·class="hover-link"·href="#summary">234 ······<a·class="hover-link"·href="#summary">
Offset 4675, 15 lines modifiedOffset 4675, 15 lines modified
4675 with·its·name·and·address.</p></li><li><p><strong><code·class="inline">nread</code></strong>·-·Get·the·number·of·bytes·immediately·available·for·reading4675 with·its·name·and·address.</p></li><li><p><strong><code·class="inline">nread</code></strong>·-·Get·the·number·of·bytes·immediately·available·for·reading
4676 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p></li><li><p><strong><code·class="inline">nwrite</code></strong>·-·Get·the·number·of·bytes·in·the·send·queue4676 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p></li><li><p><strong><code·class="inline">nwrite</code></strong>·-·Get·the·number·of·bytes·in·the·send·queue
4677 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p></li><li><p><strong><code·class="inline">nspace</code></strong>·-·Get·the·free·space·in·the·send·queue4677 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p></li><li><p><strong><code·class="inline">nspace</code></strong>·-·Get·the·free·space·in·the·send·queue
4678 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p></li><li><p><strong><code·class="inline">atmark</code></strong>·-·Test·if·there·is·OOB·(out-of-bound)·data·waiting·to·be·read4678 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p></li><li><p><strong><code·class="inline">atmark</code></strong>·-·Test·if·there·is·OOB·(out-of-bound)·data·waiting·to·be·read
4679 <em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0"><code·class="inline">boolean/0</code></a>.</p></li><li><p><strong><code·class="inline">tcp_info</code></strong>·-·Get·miscellaneous·TCP·related·information·for·a4679 <em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0"><code·class="inline">boolean/0</code></a>.</p></li><li><p><strong><code·class="inline">tcp_info</code></strong>·-·Get·miscellaneous·TCP·related·information·for·a
4680 <em>connected</em>·socket·<em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0"><code·class="inline">map/0</code></a>·with·information·items·as·key-value·pairs.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Not·all·requests·are·supported·by·all·platforms.4680 <em>connected</em>·socket·<em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0"><code·class="inline">map/0</code></a>·with·information·items·as·key-value·pairs.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Not·all·requests·are·supported·by·all·platforms.
4681 To·see·if·a·ioctl·request·is·supported·on·the·current·platform:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="n">Request</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">nread</span><span·class="p">,</span><span·class="w">4681 To·see·if·a·ioctl·request·is·supported·on·the·current·platform:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="n">Request</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">nread</span><span·class="p">,</span><span·class="w">
4682 ······</span><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">is_supported</span><span·class="p"·data-group-id="6174753901-1">(</span><span·class="ss">ioctl_requests</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p"·data-group-id="6174753901-1">)</span><span·class="p">,</span><span·class="w">4682 ······</span><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">is_supported</span><span·class="p"·data-group-id="4092087200-1">(</span><span·class="ss">ioctl_requests</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p"·data-group-id="4092087200-1">)</span><span·class="p">,</span><span·class="w">
4683 ······</span><span·class="p">:</span></code></pre></section>4683 ······</span><span·class="p">:</span></code></pre></section>
4684 ··</section>4684 ··</section>
4685 </section>4685 </section>
4686 <section·class="detail"·id="ioctl/3">4686 <section·class="detail"·id="ioctl/3">
  
4687 ··<div·class="detail-header">4687 ··<div·class="detail-header">
4688 ····<a·href="#ioctl/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4688 ····<a·href="#ioctl/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 4833, 15 lines modifiedOffset 4833, 15 lines modified
  
4833 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>4833 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>
  
4834 ······</div>4834 ······</div>
  
4835 <p>Check·if·a·socket·feature·is·supported.</p><p>Returns·<code·class="inline">true</code>·if·<a·href="#supports/0"><code·class="inline">supports/0</code></a>·has·a·<code·class="inline">{Key1,·true}</code>·tuple4835 <p>Check·if·a·socket·feature·is·supported.</p><p>Returns·<code·class="inline">true</code>·if·<a·href="#supports/0"><code·class="inline">supports/0</code></a>·has·a·<code·class="inline">{Key1,·true}</code>·tuple
4836 or·a·<code·class="inline">{Key1,·list()}</code>·tuple·in·its·returned·list,4836 or·a·<code·class="inline">{Key1,·list()}</code>·tuple·in·its·returned·list,
4837 otherwise·<code·class="inline">false</code>·(also·for·unknown·keys).</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">is_supported</span><span·class="p"·data-group-id="8294584408-1">(</span><span·class="ss">local</span><span·class="p"·data-group-id="8294584408-1">)</span><span·class="p">,</span></code></pre>4837 otherwise·<code·class="inline">false</code>·(also·for·unknown·keys).</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">is_supported</span><span·class="p"·data-group-id="0078681511-1">(</span><span·class="ss">local</span><span·class="p"·data-group-id="0078681511-1">)</span><span·class="p">,</span></code></pre>
4838 ··</section>4838 ··</section>
4839 </section>4839 </section>
4840 <section·class="detail"·id="is_supported/2">4840 <section·class="detail"·id="is_supported/2">
  
4841 ··<div·class="detail-header">4841 ··<div·class="detail-header">
4842 ····<a·href="#is_supported/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4842 ····<a·href="#is_supported/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
4843 ······<i·class="ri-link-m"·aria-hidden="true"></i>4843 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 4862, 15 lines modifiedOffset 4862, 15 lines modified
4862 ······<div·class="specs">4862 ······<div·class="specs">
  
4863 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Key2·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>4863 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Key2·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>
  
4864 ······</div>4864 ······</div>
  
4865 <p>Check·if·a·socket·feature·is·supported.</p><p>Returns·<code·class="inline">true</code>·if·<a·href="#supports/1"><code·class="inline">supports(Key1)</code></a>·has·a·<code·class="inline">{Key2,·true}</code>·tuple4865 <p>Check·if·a·socket·feature·is·supported.</p><p>Returns·<code·class="inline">true</code>·if·<a·href="#supports/1"><code·class="inline">supports(Key1)</code></a>·has·a·<code·class="inline">{Key2,·true}</code>·tuple
4866 in·its·returned·list,·otherwise·<code·class="inline">false</code>·(also·for·unknown·keys).</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">is_supported</span><span·class="p"·data-group-id="7472592379-1">(</span><span·class="ss">msg_flags</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">errqueue</span><span·class="p"·data-group-id="7472592379-1">)</span><span·class="p">,</span></code></pre>4866 in·its·returned·list,·otherwise·<code·class="inline">false</code>·(also·for·unknown·keys).</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">is_supported</span><span·class="p"·data-group-id="4666449208-1">(</span><span·class="ss">msg_flags</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">errqueue</span><span·class="p"·data-group-id="4666449208-1">)</span><span·class="p">,</span></code></pre>
4867 ··</section>4867 ··</section>
4868 </section>4868 </section>
4869 <section·class="detail"·id="listen/1">4869 <section·class="detail"·id="listen/1">
  
4870 ··<div·class="detail-header">4870 ··<div·class="detail-header">
4871 ····<a·href="#listen/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4871 ····<a·href="#listen/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
4872 ······<i·class="ri-link-m"·aria-hidden="true"></i>4872 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 4953, 15 lines modifiedOffset 4953, 15 lines modified
  
4953 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor(Socket·::·<a·href="#t:socket/0">socket</a>())·->·MonitorRef·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0">reference</a>().</pre>4953 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor(Socket·::·<a·href="#t:socket/0">socket</a>())·->·MonitorRef·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:reference/0">reference</a>().</pre>
  
4954 ······</div>4954 ······</div>
  
4955 <p>Start·a·socket·monitor.</p><p>If·the·<code·class="inline">Socket</code>·doesn't·exist·or·when·later·the·monitor·is·triggered,4955 <p>Start·a·socket·monitor.</p><p>If·the·<code·class="inline">Socket</code>·doesn't·exist·or·when·later·the·monitor·is·triggered,
4956 a·<code·class="inline">'DOWN'</code>·message·is·sent·to·the·process·that·called·<a·href="#monitor/1"><code·class="inline">monitor/1</code></a>4956 a·<code·class="inline">'DOWN'</code>·message·is·sent·to·the·process·that·called·<a·href="#monitor/1"><code·class="inline">monitor/1</code></a>
4957 with·the·following·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»       ····</span><span·class="p"·data-group-id="5058377953-1">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MonitorRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">socket</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·156,·SHA:·5f15d3d41b628045a352109fbf35c438a298fed80f29b04aca25c0de72630ef0·...·]-1">}</span></code></pre><p><code·class="inline">Info</code>·is·the·termination·reason·of·the·socket·or·<code·class="inline">nosock</code>·if4957 with·the·following·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»       ····</span><span·class="p"·data-group-id="1599912119-1">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MonitorRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">socket</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·156,·SHA:·aaa140e6f68ab84a66409e452299eda2e71260c263ca19eb3a03000abd3db322·...·]-1">}</span></code></pre><p><code·class="inline">Info</code>·is·the·termination·reason·of·the·socket·or·<code·class="inline">nosock</code>·if
4958 <code·class="inline">Socket</code>·did·not·exist·when·the·monitor·was·started.</p><p>Making·several·calls·to·<a·href="#monitor/1"><code·class="inline">socket:monitor/1</code></a>·for·the·same·<code·class="inline">Socket</code>·is·not·an4958 <code·class="inline">Socket</code>·did·not·exist·when·the·monitor·was·started.</p><p>Making·several·calls·to·<a·href="#monitor/1"><code·class="inline">socket:monitor/1</code></a>·for·the·same·<code·class="inline">Socket</code>·is·not·an
4959 error;·each·call·creates·an·independent·monitor·instance.</p>4959 error;·each·call·creates·an·independent·monitor·instance.</p>
4960 ··</section>4960 ··</section>
4961 </section>4961 </section>
4962 <section·class="detail"·id="number_of/0">4962 <section·class="detail"·id="number_of/0">
  
4963 ··<div·class="detail-header">4963 ··<div·class="detail-header">
141 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/socket_usage.html
    
Offset 182, 244 lines modifiedOffset 182, 244 lines modified
182 effects·<em>that</em>·specific·socket).</p><h2·id="example"·class="section-heading">182 effects·<em>that</em>·specific·socket).</p><h2·id="example"·class="section-heading">
183 ··<a·href="#example"·class="hover-link">183 ··<a·href="#example"·class="hover-link">
184 ····<i·class="ri-link-m"·aria-hidden="true"></i>184 ····<i·class="ri-link-m"·aria-hidden="true"></i>
185 ··</a>185 ··</a>
186 ··<span·class="text">Example</span>186 ··<span·class="text">Example</span>
187 </h2>187 </h2>
188 <p>This·example·is·intended·to·show·how·to·create·a·simple·(echo)·server188 <p>This·example·is·intended·to·show·how·to·create·a·simple·(echo)·server
189 (and·client).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0433003471-1">(</span><span·class="ss">example</span><span·class="p"·data-group-id="0433003471-1">)</span><span·class="p">.</span><span·class="w">189 (and·client).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6804645005-1">(</span><span·class="ss">example</span><span·class="p"·data-group-id="6804645005-1">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="w">190 </span><span·class="w">
191 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0433003471-2">(</span><span·class="p"·data-group-id="0433003471-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">client</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·119,·SHA:·c077e6f49622b08211442ac8e160731cc5afd33840c5aed232cec48f5bd52b6a·...·]-2">)</span><span·class="p">.</span><span·class="w">191 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6804645005-2">(</span><span·class="p"·data-group-id="6804645005-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">client</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·119,·SHA:·c0b35feeb9e9b50dd227f2462d219884e4cceeec2bd5ad7b75c658ad08d4c8d8·...·]-2">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0433003471-4">(</span><span·class="p"·data-group-id="0433003471-5">[</span><span·class="ss">server</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">server</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·246,·SHA:·edd20765616725655a877e121156d29138758578e03670cc9e2aff5ebf664b17·...·]-4">)</span><span·class="p">.</span><span·class="w">192 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6804645005-4">(</span><span·class="p"·data-group-id="6804645005-5">[</span><span·class="ss">server</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">server</span><span·class="p">/</span>[·...·truncated·by·diffoscope;·len:·246,·SHA:·460cc89a1bf0a01e06f124feeb8b5cdb8b96c0e2bd3440a82ad1cb7a9d761d06·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
  
193 </span><span·class="c1">%%·======================================================================</span><span·class="w">193 </span><span·class="c1">%%·======================================================================</span><span·class="w">
  
194 </span><span·class="c1">%%·===·Client·===</span><span·class="w">194 </span><span·class="c1">%%·===·Client·===</span><span·class="w">
  
195 </span><span·class="nf">client</span><span·class="p"·data-group-id="0433003471-6">(</span><span·class="p"·data-group-id="0433003471-7">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Family</span><span·class="p"·data-group-id="0433003471-7">}</[·...·truncated·by·diffoscope;·len:·229,·SHA:·b2f372bab600af782c1bf92cae1931233142a62df80602d3968e169e267cf23d·...·]-6">)</span><span·class="w">195 </span><span·class="nf">client</span><span·class="p"·data-group-id="6804645005-6">(</span><span·class="p"·data-group-id="6804645005-7">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Family</span><span·class="p"·data-group-id="6804645005-7">}</[·...·truncated·by·diffoscope;·len:·229,·SHA:·e53f26912b00af5f020b3fff6585f22dc13ac1537c12205023ef020f483f248d·...·]-6">)</span><span·class="w">
196 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="0433003471-8">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-8">)</span><span·class="w">·</span><span·class="ow">orelse</span><span·class="w">·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="0433003471-9"[·...·truncated·by·diffoscope;·len:·76,·SHA:·a678829410e9a20a10f158dffbc314388c38b4f120506fa763dd63521483c4e8·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="6804645005-8">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-8">)</span><span·class="w">·</span><span·class="ow">orelse</span><span·class="w">·</span><span·class="nf">is_binary</span><span·class="p"·data-group-id="6804645005-9"[·...·truncated·by·diffoscope;·len:·76,·SHA:·ccfa32add41ed94a3b5124222c86bed3eeb3a9aa3c71a210266a71494ce0e434·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="p"·data-group-id="0433003471-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="0433003471-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·357,·SHA:·e66e0cec3382f27c53bb6f2343305189e6a0ba5b707d6b3d6ba57e657aa69b0a·...·]-11">)</span><span·class="p">,</span><span·class="w">197 ····</span><span·class="p"·data-group-id="6804645005-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="6804645005-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·357,·SHA:·d55f02a642c1f1ec48ac49c68098f411204d06aee726cea39f7dec941d71a6bf·...·]-11">)</span><span·class="p">,</span><span·class="w">
198 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">maybe_bind</span><span·class="p"·data-group-id="0433003471-12">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Family</span><span·class="p"·data-group-id="0433003471-12">)</span><span·class="p">,</span><span·class="w">198 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">maybe_bind</span><span·class="p"·data-group-id="6804645005-12">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Family</span><span·class="p"·data-group-id="6804645005-12">)</span><span·class="p">,</span><span·class="w">
199 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="0433003471-13">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ServerSockAddr</span><span·class="p"·data-group-id="0433003471-13">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="6804645005-13">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ServerSockAddr</span><span·class="p"·data-group-id="6804645005-13">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="0433003471-14">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-14">)</span><span·class="p">;</span><span·class="w">200 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="6804645005-14">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-14">)</span><span·class="p">;</span><span·class="w">
  
201 </span><span·class="nf">client</span><span·class="p"·data-group-id="0433003471-15">(</span><span·class="n">ServerPort</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-15">)</span><span·class="w">201 </span><span·class="nf">client</span><span·class="p"·data-group-id="6804645005-15">(</span><span·class="n">ServerPort</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-15">)</span><span·class="w">
202 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="0433003471-16">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="0433003471-16">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-17">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·019ae749657dd495452f635dede96d2ddfa18c260fbcf3b706915ab22f41dc26·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="6804645005-16">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="6804645005-16">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-17">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·7343b2096aeb6a25b9993fcc22679bf9f2decb9f171aae81bbc9f3b72fd1f03e·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Default</span><span·class="w">203 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Default</span><span·class="w">
204 ····</span><span·class="n">Addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">get_local_addr</span><span·class="p"·data-group-id="0433003471-18">(</span><span·class="n">Family</span><span·class="p"·data-group-id="0433003471-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Pick·an·address</span><span·class="w">204 ····</span><span·class="n">Addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">get_local_addr</span><span·class="p"·data-group-id="6804645005-18">(</span><span·class="n">Family</span><span·class="p"·data-group-id="6804645005-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Pick·an·address</span><span·class="w">
205 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-19">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">205 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-19">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">
206 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">206 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">
207 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="0433003471-19">}</span><span·class="p">,</span><span·class="w">207 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="6804645005-19">}</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="0433003471-20">(</span><span·class="n">SockAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-20">)</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="6804645005-20">(</span><span·class="n">SockAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-20">)</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="nf">client</span><span·class="p"·data-group-id="0433003471-21">(</span><span·class="n">ServerPort</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ServerAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-21">)</span><span·class="w">209 </span><span·class="nf">client</span><span·class="p"·data-group-id="6804645005-21">(</span><span·class="n">ServerPort</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ServerAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-21">)</span><span·class="w">
210 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="0433003471-22">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="0433003471-22">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-23">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·019ae749657dd495452f635dede96d2ddfa18c260fbcf3b706915ab22f41dc26·...·]-23">)</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">210 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="6804645005-22">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="6804645005-22">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-23">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·7343b2096aeb6a25b9993fcc22679bf9f2decb9f171aae81bbc9f3b72fd1f03e·...·]-23">)</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">
211 ·······</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="0433003471-24">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="0433003471-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">211 ·······</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="6804645005-24">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="6804645005-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
212 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">which_family</span><span·class="p"·data-group-id="0433003471-25">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="0433003471-25">)</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">which_family</span><span·class="p"·data-group-id="6804645005-25">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="6804645005-25">)</span><span·class="p">,</span><span·class="w">
213 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-26">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">213 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-26">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">
214 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">ServerAddr</span><span·class="p">,</span><span·class="w">214 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">ServerAddr</span><span·class="p">,</span><span·class="w">
215 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="0433003471-26">}</span><span·class="p">,</span><span·class="w">215 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="6804645005-26">}</span><span·class="p">,</span><span·class="w">
216 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="0433003471-27">(</span><span·class="n">SockAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-27">)</span><span·class="p">.</span><span·class="w">216 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="6804645005-27">(</span><span·class="n">SockAddr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-27">)</span><span·class="p">.</span><span·class="w">
  
217 </span><span·class="c1">%%·Send·the·message·to·the·(echo)·server·and·wait·for·the·echo·to·come·back.</span><span·class="w">217 </span><span·class="c1">%%·Send·the·message·to·the·(echo)·server·and·wait·for·the·echo·to·come·back.</span><span·class="w">
218 </span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="0433003471-28">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-28">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·149,·SHA:·a8602c68ce5ef6fee542ba2b38feae028ca70eba4f84f26586bd5d52a5e75264·...·]-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 </span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="6804645005-28">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-28">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·149,·SHA:·f2e81a3a6c634b8fa61ee6efae32cc6131ccd5225235866e317f21c0a354aed5·...·]-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="0433003471-30">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="0433003471-31">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="043300347[·...·truncated·by·diffoscope;·len:·55,·SHA:·8d9d70e4f39a93cdf9c8068977fdd22331459e203286a2898d2201e64145f95a·...·]-30">)</span><span·class="p">;</span><span·class="w">219 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="6804645005-30">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="6804645005-31">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="680464500[·...·truncated·by·diffoscope;·len:·55,·SHA:·06b693e3731f2023e511969625f7405d478c38e8b5dce73b78a122d07d72f2e6·...·]-30">)</span><span·class="p">;</span><span·class="w">
220 </span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="0433003471-32">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-32">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·151,·SHA:·b4c15a26cf11a144a8578725ade5492ed5201996d33339634766820d68b30b3f·...·]-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">220 </span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="6804645005-32">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-32">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·151,·SHA:·54c9ef511ee1ac821ce0ef3636d4f8ea90723baf6efba21c76ccc7e16b55179e·...·]-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
221 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="0433003471-34">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p"·data-group-id="0433003471-34">)</span><span·class="p">,</span><span·class="w">221 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="6804645005-34">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p"·data-group-id="6804645005-34">)</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="0433003471-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0433003471-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·492,·SHA:·54173f6ba7ab12dfb2844d0b079ac64d37d57cd27a4c7387690247d1ecd16acf·...·]-36">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="p"·data-group-id="6804645005-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6804645005-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·492,·SHA:·e51344bc81f06c6d57a9caaa515669e3dcebeecfe04aa833ff51724f02addd6c·...·]-36">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">223 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
  
224 </span><span·class="c1">%%·======================================================================</span><span·class="w">224 </span><span·class="c1">%%·======================================================================</span><span·class="w">
  
225 </span><span·class="c1">%%·===·Server·===</span><span·class="w">225 </span><span·class="c1">%%·===·Server·===</span><span·class="w">
  
226 </span><span·class="nf">server</span><span·class="p"·data-group-id="0433003471-38">(</span><span·class="p"·data-group-id="0433003471-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 </span><span·class="nf">server</span><span·class="p"·data-group-id="6804645005-38">(</span><span·class="p"·data-group-id="6804645005-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
227 ····</span><span·class="c1">%%·Make·system·choose·port·(and·address)</span><span·class="w">227 ····</span><span·class="c1">%%·Make·system·choose·port·(and·address)</span><span·class="w">
228 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="0433003471-39">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0433003471-39">)</span><span·class="p">.</span><span·class="w">228 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="6804645005-39">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6804645005-39">)</span><span·class="p">.</span><span·class="w">
  
229 </span><span·class="c1">%%·This·function·return·the·port·and·address·that·it·actually·uses,</span><span·class="w">229 </span><span·class="c1">%%·This·function·return·the·port·and·address·that·it·actually·uses,</span><span·class="w">
230 </span><span·class="c1">%%·in·case·server/0·or·server/1·(with·a·port·number)·was·used·to·start·it.</span><span·class="w">230 </span><span·class="c1">%%·in·case·server/0·or·server/1·(with·a·port·number)·was·used·to·start·it.</span><span·class="w">
  
231 </span><span·class="nf">server</span><span·class="p"·data-group-id="0433003471-40">(</span><span·class="p"·data-group-id="0433003471-41">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·501,·SHA:·57ce57259fadb19101eb8cebefa4bab4467bb1aaec1e5ce4dc6fd1b1baef9825·...·]-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 </span><span·class="nf">server</span><span·class="p"·data-group-id="6804645005-40">(</span><span·class="p"·data-group-id="6804645005-41">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·501,·SHA:·c33e3462b0f52040d5a203689ec3ab960fbf25d787dd5831125c52943ace1df8·...·]-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="0433003471-42">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="0433003471-42">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·353,·SHA:·8244e21731d59111dd28cf6ec4e0f09a5654ad650fd3ddcaf981ed10fd047054·...·]-43">)</span><span·class="p">,</span><span·class="w">232 ····</span><span·class="p"·data-group-id="6804645005-42">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sock</span><span·class="p"·data-group-id="6804645005-42">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·353,·SHA:·52fbd02f010b5d953ae3f942aa9d4d3f185091e6212a2f1c6a938007c1fc1e8d·...·]-43">)</span><span·class="p">,</span><span·class="w">
233 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">bind</span><span·class="p"·data-group-id="0433003471-44">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="0433003471-44">)</span><span·class="p">,</span><span·class="w">233 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">bind</span><span·class="p"·data-group-id="6804645005-44">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="6804645005-44">)</span><span·class="p">,</span><span·class="w">
234 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="0433003471-45">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="0433003471-45">)</span><span·class="p">,</span><span·class="w">234 ····</span><span·class="ss">ok</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="6804645005-45">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="6804645005-45">)</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="p"·data-group-id="0433003471-46">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-47">#{</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·412,·SHA:·a87de09ea4488105ad95b7812b526add32fc7962223e793c5466805a50ca40ea·...·]-48">)</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="p"·data-group-id="6804645005-46">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-47">#{</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·412,·SHA:·06bb3dbb363c97e990fa40140e339acbabd644b0ef47c78bd22dde52f627a8ad·...·]-48">)</span><span·class="p">,</span><span·class="w">
236 ····</span><span·class="n">Acceptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_acceptor</span><span·class="p"·data-group-id="0433003471-49">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="0433003471-49">)</span><span·class="p">,</span><span·class="w">236 ····</span><span·class="n">Acceptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_acceptor</span><span·class="p"·data-group-id="6804645005-49">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="6804645005-49">)</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="0433003471-50">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-51">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Addr</span><sp[·...·truncated·by·diffoscope;·len:·171,·SHA:·751b5b5b34603aebd30a84c6167016682818c836beeaa2535f9e2b0c181a2ce7·...·]-50">}</span><span·class="p">;</span><span·class="w">237 ····</span><span·class="p"·data-group-id="6804645005-50">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-51">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Addr</span><sp[·...·truncated·by·diffoscope;·len:·171,·SHA:·9f6a1ca5cab4e635437a271cb67bd6fbffcb17e14925436cc338fb436d37fa9a·...·]-50">}</span><span·class="p">;</span><span·class="w">
  
238 </span><span·class="nf">server</span><span·class="p"·data-group-id="0433003471-52">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0433003471-52">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="0433003471-5[·...·truncated·by·diffoscope;·len:·79,·SHA:·2ad9bf5746264e24a2459459cd2f4092c3afea22bfbcce60f9a8a200f719e8ed·...·]-53">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">238 </span><span·class="nf">server</span><span·class="p"·data-group-id="6804645005-52">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6804645005-52">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="6804645005-5[·...·truncated·by·diffoscope;·len:·79,·SHA:·15408001dc9e1abe8cbbd2c00131921f2076b0baf3e9c6b1c71f21ed4880b383·...·]-53">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
239 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Default</span><span·class="w">239 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">inet</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Default</span><span·class="w">
240 ····</span><span·class="n">Addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">get_local_addr</span><span·class="p"·data-group-id="0433003471-54">(</span><span·class="n">Family</span><span·class="p"·data-group-id="0433003471-54">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Pick·an·address</span><span·class="w">240 ····</span><span·class="n">Addr</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">get_local_addr</span><span·class="p"·data-group-id="6804645005-54">(</span><span·class="n">Family</span><span·class="p"·data-group-id="6804645005-54">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Pick·an·address</span><span·class="w">
241 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-55">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">241 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-55">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">
242 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">242 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">
243 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="0433003471-55">}</span><span·class="p">,</span><span·class="w">243 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="6804645005-55">}</span><span·class="p">,</span><span·class="w">
244 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="0433003471-56">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="0433003471-56">)</span><span·class="p">.</span><span·class="w">244 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="6804645005-56">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="6804645005-56">)</span><span·class="p">.</span><span·class="w">
  
245 </span><span·class="nf">server</span><span·class="p"·data-group-id="0433003471-57">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p"·data-group-id="0433003471-57">)</span><span·class="w">245 </span><span·class="nf">server</span><span·class="p"·data-group-id="6804645005-57">(</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p"·data-group-id="6804645005-57">)</span><span·class="w">
246 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="0433003471-58">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0433003471-58">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-59">(</span><span·class="n">Por[·...·truncated·by·diffoscope;·len:·150,·SHA:·0ac2cf58d718d7cd80ef48c415916963353f0be3522b2be25b73a0cd68e23cf4·...·]-59">)</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">246 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="6804645005-58">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6804645005-58">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-59">(</span><span·class="n">Por[·...·truncated·by·diffoscope;·len:·150,·SHA:·e2b1e99213cc28119d9c21ac254dc8b2fae9d6fdb9ba7e070bf94a69bee9ac4c·...·]-59">)</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">
247 ·······</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="0433003471-60">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="0433003471-60">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">247 ·······</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="6804645005-60">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="6804645005-60">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
248 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">which_family</span><span·class="p"·data-group-id="0433003471-61">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="0433003471-61">)</span><span·class="p">,</span><span·class="w">248 ····</span><span·class="n">Family</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">which_family</span><span·class="p"·data-group-id="6804645005-61">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="6804645005-61">)</span><span·class="p">,</span><span·class="w">
249 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-62">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">249 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-62">#{</span><span·class="ss">family</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Family</span><span·class="p">,</span><span·class="w">
250 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">250 »       »       ·</span><span·class="ss">addr</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">
251 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="0433003471-62">}</span><span·class="p">,</span><span·class="w">251 »       »       ·</span><span·class="ss">port</span><span·class="w">···</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="6804645005-62">}</span><span·class="p">,</span><span·class="w">
252 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="0433003471-63">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="0433003471-63">)</span><span·class="p">.</span><span·class="w">252 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="6804645005-63">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="6804645005-63">)</span><span·class="p">.</span><span·class="w">
  
  
253 </span><span·class="c1">%%·---·Echo·Server·-·Acceptor·---</span><span·class="w">253 </span><span·class="c1">%%·---·Echo·Server·-·Acceptor·---</span><span·class="w">
  
254 </span><span·class="nf">start_acceptor</span><span·class="p"·data-group-id="0433003471-64">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="0433003471-64">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">254 </span><span·class="nf">start_acceptor</span><span·class="p"·data-group-id="6804645005-64">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="6804645005-64">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
255 ····</span><span·class="n">Self</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0433003471-65">(</span><span·class="p"·data-group-id="0433003471-65">)</span><span·class="p">,</span><span·class="w">255 ····</span><span·class="n">Self</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="6804645005-65">(</span><span·class="p"·data-group-id="6804645005-65">)</span><span·class="p">,</span><span·class="w">
256 ····</span><span·class="p"·data-group-id="0433003471-66">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p"·data-group-id="0433003471-66">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·635,·SHA:·366626e3aaafc3755cc2e12c33c0562be86d8f5172ba9333f8c35de3de8273da·...·]-67">)</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="p"·data-group-id="6804645005-66">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p"·data-group-id="6804645005-66">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·635,·SHA:·b8b0a735d35f340812b7e8d1c6c297bf35cb24b98bb51686ee522da537ea3dcf·...·]-67">)</span><span·class="p">,</span><span·class="w">
257 ····</span><span·class="k">receive</span><span·class="w">257 ····</span><span·class="k">receive</span><span·class="w">
258 »       </span><span·class="p"·data-group-id="0433003471-70">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·149,·SHA:·b150d7de458169f4847e4fd84bdc1e5e56106d3e21025532b995073986334564·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 »       </span><span·class="p"·data-group-id="6804645005-70">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·149,·SHA:·4f0d9d14abc89e6f1cc321da830af004ad2da7d3916493a4f919186201e3ee77·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="0433003471-71">(</span><span·class="p"·data-group-id="0433003471-72">{</span><span·class="ss">failed_starting_acceptor</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="0433003471-72">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·d5a1fe23fe2b274aaa37167dad936dca5097ce88024c364d5bd68071d10fb045·...·]-71">)</span><span·class="p">;</span><span·class="w">259 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="6804645005-71">(</span><span·class="p"·data-group-id="6804645005-72">{</span><span·class="ss">failed_starting_acceptor</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="6804645005-72">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·686142ff864008996482e0ab9c589b7c7be865223c156d4b9f54cab80f164814·...·]-71">)</span><span·class="p">;</span><span·class="w">
260 »       </span><span·class="p"·data-group-id="0433003471-73">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·data-group-id="0433003471-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 »       </span><span·class="p"·data-group-id="6804645005-73">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·data-group-id="6804645005-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 »       ····</span><span·class="c1">%%·Transfer·ownership</span><span·class="w">261 »       ····</span><span·class="c1">%%·Transfer·ownership</span><span·class="w">
262 »       ····</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">setopt</span><span·class="p"·data-group-id="0433003471-74">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">owner</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·62,·SHA:·59346a0029a0f7f0b7643e0288364614d9c53a650c525197a252aa1db8c7d301·...·]-74">)</span><span·class="p">,</span><span·class="w">262 »       ····</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">setopt</span><span·class="p"·data-group-id="6804645005-74">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">otp</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">owner</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·62,·SHA:·f4107d946557de16f6f28224bf1f2bb92c1a1adf4a99e6da1a67a4b936ee2048·...·]-74">)</span><span·class="p">,</span><span·class="w">
263 »       ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-75">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0433003471-76">(</span><span·class="p"·data-group-id="0433003471-76">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·9bd57d1c79925940eec19cc7921b0408a45cf71cffacced63d5563921028375e·...·]-75">}</span><span·class="p">,</span><span·class="w">263 »       ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-75">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6804645005-76">(</span><span·class="p"·data-group-id="6804645005-76">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·db1ffb2a560dc71c1b7a833b7421e41235267faf9667cacd804ddac45644ca0e·...·]-75">}</span><span·class="p">,</span><span·class="w">
264 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="0433003471-77">(</span><span·class="n">MRef</span><span·class="p"·data-group-id="0433003471-77">)</span><span·class="p">,</span><span·class="w">264 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="6804645005-77">(</span><span·class="n">MRef</span><span·class="p"·data-group-id="6804645005-77">)</span><span·class="p">,</span><span·class="w">
265 »       ····</span><span·class="n">Pid</span><span·class="w">265 »       ····</span><span·class="n">Pid</span><span·class="w">
266 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">266 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
267 ····267 ····
268 </span><span·class="nf">acceptor_init</span><span·class="p"·data-group-id="0433003471-78">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LSock</span><span·class="p"·data-group-id="0433003471-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">268 </span><span·class="nf">acceptor_init</span><span·class="p"·data-group-id="6804645005-78">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LSock</span><span·class="p"·data-group-id="6804645005-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
269 ····</span><span·class="n">Parent</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="0433003471-79">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0433003471-80">(</span><span·class="p"·data-group-id="0433003471-80">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·988654340de251800055558026955a3fc1147969b82040b766bcb1b3a66b35b2·...·]-79">}</span><span·class="p">,</span><span·class="w">269 ····</span><span·class="n">Parent</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6804645005-79">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6804645005-80">(</span><span·class="p"·data-group-id="6804645005-80">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·67cfa133bfad8ed9d47aa48b496ecd3685c3ef977ed8d619ed671948df640dbe·...·]-79">}</span><span·class="p">,</span><span·class="w">
270 ····</span><span·class="k">receive</span><span·class="w">270 ····</span><span·class="k">receive</span><span·class="w">
271 »       </span><span·class="p"·data-group-id="0433003471-81">{</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="p"·data-group-id="0433003471-81">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">271 »       </span><span·class="p"·data-group-id="6804645005-81">{</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="p"·data-group-id="6804645005-81">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
272 »       ····</span><span·class="ss">ok</span><span·class="w">272 »       ····</span><span·class="ss">ok</span><span·class="w">
273 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">273 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
274 ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="0433003471-82">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="0433003471-82">)</span><span·class="p">.</span><span·class="w">274 ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="6804645005-82">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="6804645005-82">)</span><span·class="p">.</span><span·class="w">
  
275 </span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="0433003471-83">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="0433003471-83">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">275 </span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="6804645005-83">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="6804645005-83">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
276 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">accept</span><span·class="p"·data-group-id="0433003471-84">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p"·data-group-id="0433003471-84">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">276 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">accept</span><span·class="p"·data-group-id="6804645005-84">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p"·data-group-id="6804645005-84">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
277 »       </span><span·class="p"·data-group-id="0433003471-85">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ASock</span><span·class="p"·data-group-id="0433003471-85">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">277 »       </span><span·class="p"·data-group-id="6804645005-85">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ASock</span><span·class="p"·data-group-id="6804645005-85">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
278 »       ····</span><span·class="nf">start_handler</span><span·class="p"·data-group-id="0433003471-86">(</span><span·class="n">ASock</span><span·class="p"·data-group-id="0433003471-86">)</span><span·class="p">,</span><span·class="w">278 »       ····</span><span·class="nf">start_handler</span><span·class="p"·data-group-id="6804645005-86">(</span><span·class="n">ASock</span><span·class="p"·data-group-id="6804645005-86">)</span><span·class="p">,</span><span·class="w">
279 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="0433003471-87">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="0433003471-87">)</span><span·class="p">;</span><span·class="w">279 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="6804645005-87">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="6804645005-87">)</span><span·class="p">;</span><span·class="w">
280 »       </span><span·class="p"·data-group-id="0433003471-88">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0433003471-88">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">280 »       </span><span·class="p"·data-group-id="6804645005-88">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="6804645005-88">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
281 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="0433003471-89">(</span><span·class="p"·data-group-id="0433003471-90">{</span><span·class="ss">accept_failed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0433003471-90">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·c75c8611f07d67f57a8ca8b792b36ea6d4733c5b6c7591878a11f7b473fe6620·...·]-89">)</span><span·class="w">281 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="6804645005-89">(</span><span·class="p"·data-group-id="6804645005-90">{</span><span·class="ss">accept_failed</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="6804645005-90">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·a15a7f33c2e0be07d36d88efe64232706324b0091cc15300c9da13a730fc5bfd·...·]-89">)</span><span·class="w">
282 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">282 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
  
283 </span><span·class="c1">%%·---·Echo·Server·-·Handler·---</span><span·class="w">283 </span><span·class="c1">%%·---·Echo·Server·-·Handler·---</span><span·class="w">
  
284 </span><span·class="nf">start_handler</span><span·class="p"·data-group-id="0433003471-91">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="0433003471-91">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">284 </span><span·class="nf">start_handler</span><span·class="p"·data-group-id="6804645005-91">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="6804645005-91">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
285 ····</span><span·class="n">Self</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0433003471-92">(</span><span·class="p"·data-group-id="0433003471-92">)</span><span·class="p">,</span><span·class="w">285 ····</span><span·class="n">Self</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="6804645005-92">(</span><span·class="p"·data-group-id="6804645005-92">)</span><span·class="p">,</span><span·class="w">
286 ····</span><span·class="p"·data-group-id="0433003471-93">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p"·data-group-id="0433003471-93">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·633,·SHA:·4b6bc623bf809808f9120c59240ec79eda873cb0cc385682ed5059c7101dcc47·...·]-94">)</span><span·class="p">,</span><span·class="w">286 ····</span><span·class="p"·data-group-id="6804645005-93">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p"·data-group-id="6804645005-93">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·633,·SHA:·04980ec42c1c7b24b5458a02ea01cb28235152830b79ccf929d97f92e5c18d5e·...·]-94">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 79212/144452 bytes (54.84%) of diff not shown.
40.9 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.2/doc/html/trace.html
    
Offset 142, 31 lines modifiedOffset 142, 31 lines modified
142 </h2>142 </h2>
143 <p>All·tracing·is·done·within·a·trace·session.·Trace·sessions·can·be143 <p>All·tracing·is·done·within·a·trace·session.·Trace·sessions·can·be
144 <a·href="#session_create/3">created</a>·and·<a·href="#session_destroy/1">destroyed</a>144 <a·href="#session_create/3">created</a>·and·<a·href="#session_destroy/1">destroyed</a>
145 dynamically.·Each·session·has·its·own·tracer·that·will·receive·all·trace145 dynamically.·Each·session·has·its·own·tracer·that·will·receive·all·trace
146 messages.·Several·sessions·can·exist·at·the·same·time·without·interfering·with146 messages.·Several·sessions·can·exist·at·the·same·time·without·interfering·with
147 each·other.·When·a·trace·session·is·destroyed,·all·its·trace·settings·are147 each·other.·When·a·trace·session·is·destroyed,·all·its·trace·settings·are
148 automatically·cleaned·up.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Create·a·tracer·process·that·will·receive·the·trace·events</span><span·class="gp·unselectable">148 automatically·cleaned·up.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Create·a·tracer·process·that·will·receive·the·trace·events</span><span·class="gp·unselectable">
149 1&gt;·</span><span·class="n">Tracer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0583252605-1">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="0583252605-2">(</span><span·class="p"·data-group-id="0583252605-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><sp[·...·truncated·by·diffoscope;·len:·944,·SHA:·835e8f74f94e148d53584e1efb3c9b6ab610986da46a6590ed38299c71224bc1·...·]-1">)</span><span·class="p">.</span><span·class="w">149 1&gt;·</span><span·class="n">Tracer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0893794430-1">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="0893794430-2">(</span><span·class="p"·data-group-id="0893794430-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><sp[·...·truncated·by·diffoscope;·len:·944,·SHA:·a1c359e5986c81b2fd66108b62d324063a6ebcbd8b7d8b9bcd2142a0be89df42·...·]-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="o">&lt;</span><span·class="mf">0.91</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">150 </span><span·class="o">&lt;</span><span·class="mf">0.91</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
151 </span><span·class="c1">%%·Create·a·session·using·the·Tracer</span><span·class="gp·unselectable">151 </span><span·class="c1">%%·Create·a·session·using·the·Tracer</span><span·class="gp·unselectable">
152 2&gt;·</span><span·class="n">Session</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">session_create</span><span·class="p"·data-group-id="0583252605-6">(</span><span·class="ss">my_session</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0583252605-7">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·71,·SHA:·43fa34b77468f9b188bbc2ef5ad98c1cda22f4d995c0d38902beb6f0962e324d·...·]-6">)</span><span·class="p">.</span><span·class="w">152 2&gt;·</span><span·class="n">Session</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">session_create</span><span·class="p"·data-group-id="0893794430-6">(</span><span·class="ss">my_session</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0893794430-7">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·71,·SHA:·611aaa2552ecccdf7c935c1a7d1c78e588b3b321c99120d7d836b247dd58be21·...·]-6">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p"·data-group-id="0583252605-8">{</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.1543805153</span><span·class="p">.</span><span·class="mf">1548353537.92331</span><span·class="o">&gt;</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·247,·SHA:·8e7939bfcf79fc1585fbd45313667e8f4401ef9f2219846d75a842dc4cc21323·...·]-8">}</span><span·class="w">153 </span><span·class="p"·data-group-id="0893794430-8">{</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.1543805153</span><span·class="p">.</span><span·class="mf">1548353537.92331</span><span·class="o">&gt;</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·247,·SHA:·3fd123f2d30eb80dbf48ea6d549fb9072bc9b5e82c6b50426ff1a0fe5b9ce525·...·]-8">}</span><span·class="w">
154 </span><span·class="c1">%%·Setup·call·tracing·on·self()</span><span·class="gp·unselectable">154 </span><span·class="c1">%%·Setup·call·tracing·on·self()</span><span·class="gp·unselectable">
155 3&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">process</span><span·class="p"·data-group-id="0583252605-10">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0583252605-11">(</span><span·class="p"·data-group-id="0583252605-11">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·281,·SHA:·2f3c38da7a91dd4690be76d3c6cb7178e92c4a89149d9b4d807357033a28fc1b·...·]-10">)</span><span·class="p">.</span><span·class="w">155 3&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">process</span><span·class="p"·data-group-id="0893794430-10">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0893794430-11">(</span><span·class="p"·data-group-id="0893794430-11">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·281,·SHA:·75571f4ca78c0d0d35ba937f5c5bfd1939479baace83e6c27e0d92b24ec213b1·...·]-10">)</span><span·class="p">.</span><span·class="w">
156 </span><span·class="mi">1</span><span·class="w">156 </span><span·class="mi">1</span><span·class="w">
157 </span><span·class="c1">%%·Setup·call·tracing·on·lists:seq/2</span><span·class="gp·unselectable">157 </span><span·class="c1">%%·Setup·call·tracing·on·lists:seq/2</span><span·class="gp·unselectable">
158 4&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">function</span><span·class="p"·data-group-id="0583252605-13">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0583252605-14">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·434,·SHA:·b765a950472b82ac80719eb4f7075d6ba8783d8e8b6cff89bc8635126af36990·...·]-13">)</span><span·class="p">.</span><span·class="w">158 4&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">function</span><span·class="p"·data-group-id="0893794430-13">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0893794430-14">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·434,·SHA:·71d49b894cbfe5e91d86e605293698f0af92685ac7fb6970e0ea9f1c68e62f23·...·]-13">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="mi">1</span><span·class="w">159 </span><span·class="mi">1</span><span·class="w">
160 </span><span·class="c1">%%·Call·the·traced·function</span><span·class="gp·unselectable">160 </span><span·class="c1">%%·Call·the·traced·function</span><span·class="gp·unselectable">
161 5&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="0583252605-17">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p"·data-group-id="0583252605-17">)</span><span·class="p">.</span><span·class="w">161 5&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="0893794430-17">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p"·data-group-id="0893794430-17">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="0583252605-18">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.89</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">call</spa[·...·truncated·by·diffoscope;·len:·462,·SHA:·7db3a1da0f97e07841b4b243d79e5a32fcb7d5e36f2daa4d5c8180ddfd19c7ed·...·]-18">}</span><span·class="w">·</span><span·class="c1">%·The·trace·message</span><span·class="w">162 </span><span·class="p"·data-group-id="0893794430-18">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.89</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">call</spa[·...·truncated·by·diffoscope;·len:·462,·SHA:·da707563f7e5928e36881d1731af8b39d9a95e26f151fc85c0381762318f0f5f·...·]-18">}</span><span·class="w">·</span><span·class="c1">%·The·trace·message</span><span·class="w">
163 </span><span·class="p"·data-group-id="0583252605-21">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="[·...·truncated·by·diffoscope;·len:·274,·SHA:·614e59b0e8f26b55a000acb50e42bfd4345296508b0d6a233df99737448b45fd·...·]-21">]</span><span·class="w">·</span><span·class="c1">%·The·return·value</span><span·class="w">163 </span><span·class="p"·data-group-id="0893794430-21">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="[·...·truncated·by·diffoscope;·len:·274,·SHA:·e06139a2dee67d34b6d69422f78a5d3c9808d17fb96a985d5970ff9485fb2df5·...·]-21">]</span><span·class="w">·</span><span·class="c1">%·The·return·value</span><span·class="w">
164 </span><span·class="c1">%%·Cleanup·the·trace·session</span><span·class="gp·unselectable">164 </span><span·class="c1">%%·Cleanup·the·trace·session</span><span·class="gp·unselectable">
165 6&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">session_destroy</span><span·class="p"·data-group-id="0583252605-22">(</span><span·class="n">Session</span><span·class="p"·data-group-id="0583252605-22">)</span><span·class="p">.</span><span·class="w">165 6&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">session_destroy</span><span·class="p"·data-group-id="0893794430-22">(</span><span·class="n">Session</span><span·class="p"·data-group-id="0893794430-22">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="ss">ok</span></code></pre><h2·id="module-node-local-tracing-only"·class="section-heading">166 </span><span·class="ss">ok</span></code></pre><h2·id="module-node-local-tracing-only"·class="section-heading">
167 ··<a·href="#module-node-local-tracing-only"·class="hover-link">167 ··<a·href="#module-node-local-tracing-only"·class="hover-link">
168 ····<i·class="ri-link-m"·aria-hidden="true"></i>168 ····<i·class="ri-link-m"·aria-hidden="true"></i>
169 ··</a>169 ··</a>
170 ··<span·class="text">Node·Local·Tracing·Only</span>170 ··<span·class="text">Node·Local·Tracing·Only</span>
171 </h2>171 </h2>
172 <p>The·functions·in·this·module·only·operates·on·the·local·node.·That·is,·both·the172 <p>The·functions·in·this·module·only·operates·on·the·local·node.·That·is,·both·the
Offset 1284, 17 lines modifiedOffset 1284, 17 lines modified
1284 <code·class="inline">undefined</code>·if·the·sender·is·not·known·(which·can·be·the·case·for·remote1284 <code·class="inline">undefined</code>·if·the·sender·is·not·known·(which·can·be·the·case·for·remote
1285 senders).·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·receiving·process·can·be1285 senders).·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·receiving·process·can·be
1286 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as1286 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as
1287 <code·class="inline">true</code>.·For·more·information,·see·section1287 <code·class="inline">true</code>.·For·more·information,·see·section
1288 <a·href="../../../../erts-15.2.2/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide1288 <a·href="../../../../erts-15.2.2/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide
1289 for·the·ERTS·application.</p></li><li><p><strong><code·class="inline">true</code></strong>·-·Enable·tracing·for·all·received·messages·(to·<code·class="inline">'receive'</code>·traced1289 for·the·ERTS·application.</p></li><li><p><strong><code·class="inline">true</code></strong>·-·Enable·tracing·for·all·received·messages·(to·<code·class="inline">'receive'</code>·traced
1290 processes).·Any·match·specification·is·removed.·<em>This·is·the·default</em>.</p></li><li><p><strong><code·class="inline">false</code></strong>·-·Disable·tracing·for·all·received·messages.·Any·match1290 processes).·Any·match·specification·is·removed.·<em>This·is·the·default</em>.</p></li><li><p><strong><code·class="inline">false</code></strong>·-·Disable·tracing·for·all·received·messages.·Any·match
1291 specification·is·removed.</p></li></ul><p>Argument·<code·class="inline">FlagList</code>·must·be·<code·class="inline">[]</code>·for·receive·tracing.</p><p>The·return·value·is·always·<code·class="inline">1</code>.</p><p><em>Examples:</em></p><p>Only·trace·messages·from·a·specific·process·<code·class="inline">Pid</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="3494030542-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3494030542-2">[</span><span·class="p"·data-group-id="3494030542-3">{</span><span·class="p"·data-group-id="3494030542-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="3494030542-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="3494030542-5">[</span><span·class="p"·data-group-id="3494030542-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="3494030542-6">[</span><span·class="p"·data-group-id="3494030542-6">]</span><span·class="p"·data-group-id="3494030542-3">}</span><span·class="p"·data-group-id="3494030542-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3494030542-7">[</span><span·class="p"·data-group-id="3494030542-7">]</span><span·class="p"·data-group-id="3494030542-1">)</span><span·class="p">.</span><span·class="w"> 
1292 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·matching·<code·class="inline">{reply,·_}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="8961933084-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8961933084-2">[</span><span·class="p"·data-group-id="8961933084-3">{</span><span·class="p"·data-group-id="8961933084-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8961933084-5">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="8961933084-5">}</span><span·class="p"·data-group-id="8961933084-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="8961933084-6">[</span><span·class="p"·data-group-id="8961933084-6">]</span><span·class="p">,</span><span·class="p"·data-group-id="8961933084-7">[</span><span·class="p"·data-group-id="8961933084-7">]</span><span·class="p"·data-group-id="8961933084-3">}</span><span·class="p"·data-group-id="8961933084-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8961933084-8">[</span><span·class="p"·data-group-id="8961933084-8">]</span><span·class="p"·data-group-id="8961933084-1">)</span><span·class="p">.</span><span·class="w"> 
1293 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·from·other·nodes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">recv</s[·...·truncated·by·diffoscope;·len:·1471,·SHA:·20c4c37ab47762282ec523f16b6e832b0c19c85fcc8c12565d6e7e09fb4d2f8f·...·]-1">)</span><span·class="p">.</span><span·class="w">1291 specification·is·removed.</p></li></ul><p>Argument·<code·class="inline">FlagList</code>·must·be·<code·class="inline">[]</code>·for·receive·tracing.</p><p>The·return·value·is·always·<code·class="inline">1</code>.</p><p><em>Examples:</em></p><p>Only·trace·me[·...·truncated·by·diffoscope;·len:·1310,·SHA:·076e1dfdf4ae834ea366cb3f48a2c1010d575641aabe77f22635f06c160d2295·...·]-1">)</span><span·class="p">.</span><span·class="w">
 1292 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·matching·<code·class="inline">{reply,·_}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="5079813987-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5079813987-2">[</span><span·class="p"·data-group-id="5079813987-3">{</span><span·class="p"·data-group-id="5079813987-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5079813987-5">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="5079813987-5">}</span><span·class="p"·data-group-id="5079813987-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="5079813987-6">[</span><span·class="p"·data-group-id="5079813987-6">]</span><span·class="p">,</span><span·class="p"·data-group-id="5079813987-7">[</span><span·class="p"·data-group-id="5079813987-7">]</span><span·class="p"·data-group-id="5079813987-3">}</span><span·class="p"·data-group-id="5079813987-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5079813987-8">[</span><span·class="p"·data-group-id="5079813987-8">]</span><span·class="p"·data-group-id="5079813987-1">)</span><span·class="p">.</span><span·class="w">
 1293 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·from·other·nodes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="1221240462-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1221240462-2">[</span><span·class="p"·data-group-id="1221240462-3">{</span><span·class="p"·data-group-id="1221240462-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="1221240462-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="1221240462-5">[</span><span·class="p"·data-group-id="1221240462-6">{</span><span·class="ss">&#39;=/=&#39;</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1221240462-7">{</span><span·class="nb">node</span><span·class="p"·data-group-id="1221240462-7">}</span><span·class="p"·data-group-id="1221240462-6">}</span><span·class="p"·data-group-id="1221240462-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="1221240462-8">[</span><span·class="p"·data-group-id="1221240462-8">]</span><span·class="p"·data-group-id="1221240462-3">}</span><span·class="p"·data-group-id="1221240462-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1221240462-9">[</span><span·class="p"·data-group-id="1221240462-9">]</span><span·class="p"·data-group-id="1221240462-1">)</span><span·class="p">.</span><span·class="w">
1294 </span><span·class="mi">1</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·match·specification·for·<code·class="inline">'receive'</code>·trace·can·use·all·guard·and·body1294 </span><span·class="mi">1</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·match·specification·for·<code·class="inline">'receive'</code>·trace·can·use·all·guard·and·body
1295 functions·except·<code·class="inline">caller</code>,·<code·class="inline">is_seq_trace</code>,·<code·class="inline">get_seq_token</code>,·<code·class="inline">set_seq_token</code>,1295 functions·except·<code·class="inline">caller</code>,·<code·class="inline">is_seq_trace</code>,·<code·class="inline">get_seq_token</code>,·<code·class="inline">set_seq_token</code>,
1296 <code·class="inline">enable_trace</code>,·<code·class="inline">disable_trace</code>,·<code·class="inline">trace</code>,·<code·class="inline">silent</code>,·and·<code·class="inline">process_dump</code>.</p></section><p>Fails·by·raising·an·error·exception·with·an·error·reason·of:</p><ul><li><p><strong><code·class="inline">badarg</code></strong>·-·If·an·argument·is·invalid.</p></li><li><p><strong><code·class="inline">system_limit</code></strong>·-·If·a·match·specification·passed·as·argument·has·excessive1296 <code·class="inline">enable_trace</code>,·<code·class="inline">disable_trace</code>,·<code·class="inline">trace</code>,·<code·class="inline">silent</code>,·and·<code·class="inline">process_dump</code>.</p></section><p>Fails·by·raising·an·error·exception·with·an·error·reason·of:</p><ul><li><p><strong><code·class="inline">badarg</code></strong>·-·If·an·argument·is·invalid.</p></li><li><p><strong><code·class="inline">system_limit</code></strong>·-·If·a·match·specification·passed·as·argument·has·excessive
1297 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the1297 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the
1298 calling·process·is·executing·on.1298 calling·process·is·executing·on.
1299 <a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured1299 <a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured
1300 when·starting·the·runtime·system.</p></li></ul>1300 when·starting·the·runtime·system.</p></li></ul>
Offset 1335, 18 lines modifiedOffset 1335, 18 lines modified
1335 the·list·<code·class="inline">[Receiver,·Msg]</code>.·<code·class="inline">Receiver</code>·is·the·process·or·port·identity·of·the1335 the·list·<code·class="inline">[Receiver,·Msg]</code>.·<code·class="inline">Receiver</code>·is·the·process·or·port·identity·of·the
1336 receiver·and·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·sending·process·can·be1336 receiver·and·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·sending·process·can·be
1337 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as1337 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as
1338 <code·class="inline">true</code>.·For·more·information,·see·section1338 <code·class="inline">true</code>.·For·more·information,·see·section
1339 <a·href="../../../../erts-15.2.2/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide1339 <a·href="../../../../erts-15.2.2/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide
1340 for·the·ERTS·application.</p></li><li><p><strong><code·class="inline">true</code></strong>·-·Enable·tracing·for·all·sent·messages·(from·<code·class="inline">send</code>·traced1340 for·the·ERTS·application.</p></li><li><p><strong><code·class="inline">true</code></strong>·-·Enable·tracing·for·all·sent·messages·(from·<code·class="inline">send</code>·traced
1341 processes).·Any·match·specification·is·removed.</p></li><li><p><strong><code·class="inline">false</code></strong>·-·Disable·tracing·for·all·sent·messages.·Any·match·specification1341 processes).·Any·match·specification·is·removed.</p></li><li><p><strong><code·class="inline">false</code></strong>·-·Disable·tracing·for·all·sent·messages.·Any·match·specification
1342 is·removed.</p></li></ul><p>Argument·<code·class="inline">FlagList</code>·must·be·<code·class="inline">[]</code>.</p><p>The·return·value·is·always·<code·class="inline">1</code>.</p><p><em>Examples:</em></p><p>Only·trace·messages·to·a·specific·process·<code·class="inline">Pid</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="3590728908-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3590728908-2">[</span><span·class="p"·data-group-id="3590728908-3">{</span><span·class="p"·data-group-id="3590728908-4">[</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="3590728908-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="3590728908-5">[</span><span·class="p"·data-group-id="3590728908-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="3590728908-6">[</span><span·class="p"·data-group-id="3590728908-6">]</span><span·class="p"·data-group-id="3590728908-3">}</span><span·class="p"·data-group-id="3590728908-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3590728908-7">[</span><span·class="p"·data-group-id="3590728908-7">]</span><span·class="p"·data-group-id="3590728908-1">)</span><span·class="p">.</span><span·class="w"> 
1343 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·matching·<code·class="inline">{reply,·_}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="0167916571-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0167916571-2">[</span><span·class="p"·data-group-id="0167916571-3">{</span><span·class="p"·data-group-id="0167916571-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0167916571-5">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="0167916571-5">}</span><span·class="p"·data-group-id="0167916571-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="0167916571-6">[</span><span·class="p"·data-group-id="0167916571-6">]</span><span·class="p">,</span><span·class="p"·data-group-id="0167916571-7">[</span><span·class="p"·data-group-id="0167916571-7">]</span><span·class="p"·data-group-id="0167916571-3">}</span><span·class="p"·data-group-id="0167916571-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0167916571-8">[</span><span·class="p"·data-group-id="0167916571-8">]</span><span·class="p"·data-group-id="0167916571-1">)</span><span·class="p">.</span><span·class="w"> 
1344 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·sent·to·the·sender·itself:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="8411633169-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8411633169-2">[</span><span·class="p"·data-group-id="8411633169-3">{</span><span·class="p"·data-group-id="8411633169-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="8411633169-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="8411633169-5">[</span><span·class="p"·data-group-id="8411633169-6">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8411633169-7">{</span><span·class="ss">self</span><span·class="p"·data-group-id="8411633169-7">}</span><span·class="p"·data-group-id="8411633169-6">}</span><span·class="p"·data-group-id="8411633169-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="8411633169-8">[</span><span·class="p"·data-group-id="8411633169-8">]</span><span·class="p"·data-group-id="8411633169-3">}</span><span·class="p"·data-group-id="8411633169-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8411633169-9">[</span><span·class="p"·data-group-id="8411633169-9">]</span><span·class="p"·data-group-id="8411633169-1">)</span><span·class="p">.</span><span·class="w"> 
1345 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·sent·to·other·nodes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">send[·...·truncated·by·diffoscope;·len:·1551,·SHA:·79ab6bc201f933031ee8ccaa6835ec3aac65e9ba1ca72530107b3a46a04ae832·...·]-1">)</span><span·class="p">.</span><span·class="w">1342 is·removed.</p></li></ul><p>Argument·<code·class="inline">FlagList</code>·must·be·<code·class="inline">[]</code>.</p><p>The·return·value·is·always·<code·class="inline">1</code>.</p><p><em>Examples:</em></p><p>Only·trace·messages·to·a·specific·process·<code[·...·truncated·by·diffoscope;·len:·1215,·SHA:·a3286a997e7b21e353419b29d2cc858c4ec221b037bfa515813f1ff425663270·...·]-1">)</span><span·class="p">.</span><span·class="w">
 1343 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·matching·<code·class="inline">{reply,·_}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="1190686201-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1190686201-2">[</span><span·class="p"·data-group-id="1190686201-3">{</span><span·class="p"·data-group-id="1190686201-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1190686201-5">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="1190686201-5">}</span><span·class="p"·data-group-id="1190686201-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="1190686201-6">[</span><span·class="p"·data-group-id="1190686201-6">]</span><span·class="p">,</span><span·class="p"·data-group-id="1190686201-7">[</span><span·class="p"·data-group-id="1190686201-7">]</span><span·class="p"·data-group-id="1190686201-3">}</span><span·class="p"·data-group-id="1190686201-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1190686201-8">[</span><span·class="p"·data-group-id="1190686201-8">]</span><span·class="p"·data-group-id="1190686201-1">)</span><span·class="p">.</span><span·class="w">
 1344 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·sent·to·the·sender·itself:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="4046597360-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4046597360-2">[</span><span·class="p"·data-group-id="4046597360-3">{</span><span·class="p"·data-group-id="4046597360-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="4046597360-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="4046597360-5">[</span><span·class="p"·data-group-id="4046597360-6">{</span><span·class="ss">&#39;=:=&#39;</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4046597360-7">{</span><span·class="ss">self</span><span·class="p"·data-group-id="4046597360-7">}</span><span·class="p"·data-group-id="4046597360-6">}</span><span·class="p"·data-group-id="4046597360-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="4046597360-8">[</span><span·class="p"·data-group-id="4046597360-8">]</span><span·class="p"·data-group-id="4046597360-3">}</span><span·class="p"·data-group-id="4046597360-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4046597360-9">[</span><span·class="p"·data-group-id="4046597360-9">]</span><span·class="p"·data-group-id="4046597360-1">)</span><span·class="p">.</span><span·class="w">
 1345 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·sent·to·other·nodes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="4347284978-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4347284978-2">[</span><span·class="p"·data-group-id="4347284978-3">{</span><span·class="p"·data-group-id="4347284978-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="4347284978-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="4347284978-5">[</span><span·class="p"·data-group-id="4347284978-6">{</span><span·class="ss">&#39;=/=&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4347284978-7">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="4347284978-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="4347284978-8">{</span><span·class="nb">node</span><span·class="p"·data-group-id="4347284978-8">}</span><span·class="p"·data-group-id="4347284978-6">}</span><span·class="p"·data-group-id="4347284978-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="4347284978-9">[</span><span·class="p"·data-group-id="4347284978-9">]</span><span·class="p"·data-group-id="4347284978-3">}</span><span·class="p"·data-group-id="4347284978-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4347284978-10">[</span><span·class="p"·data-group-id="4347284978-10">]</span><span·class="p"·data-group-id="4347284978-1">)</span><span·class="p">.</span><span·class="w">
1346 </span><span·class="mi">1</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·match·specification·for·<code·class="inline">send</code>·trace·can·use·all·guard·and·body·functions1346 </span><span·class="mi">1</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·match·specification·for·<code·class="inline">send</code>·trace·can·use·all·guard·and·body·functions
1347 except·<code·class="inline">caller</code>.</p></section><p>Fails·by·raising·an·error·exception·with·an·error·reason·of:</p><ul><li><p><strong><code·class="inline">badarg</code></strong>·-·If·an·argument·is·invalid.</p></li><li><p><strong><code·class="inline">system_limit</code></strong>·-·If·a·match·specification·passed·as·argument·has·excessive1347 except·<code·class="inline">caller</code>.</p></section><p>Fails·by·raising·an·error·exception·with·an·error·reason·of:</p><ul><li><p><strong><code·class="inline">badarg</code></strong>·-·If·an·argument·is·invalid.</p></li><li><p><strong><code·class="inline">system_limit</code></strong>·-·If·a·match·specification·passed·as·argument·has·excessive
1348 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the1348 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the
1349 calling·process·is·executing·on.1349 calling·process·is·executing·on.
1350 <a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured1350 <a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured
1351 when·starting·the·runtime·system.</p></li></ul>1351 when·starting·the·runtime·system.</p></li></ul>
1352 ··</section>1352 ··</section>
300 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7/doc/html/megaco.epub
6.87 KB
zipinfo {}
Max HTML report size reached
239 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:36,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:32:44,·uncompressed·size·20,·method=store
9.69 KB
OEBPS/megaco_user.xhtml
Max HTML report size reached
5.12 KB
OEBPS/megaco_examples.xhtml
    
Offset 50, 18 lines modifiedOffset 50, 18 lines modified
50 synchronously·for·a·reply.</p><p>After·this·initial·service·change·message·the·connection·between·the·MG·and·MGC50 synchronously·for·a·reply.</p><p>After·this·initial·service·change·message·the·connection·between·the·MG·and·MGC
51 is·fully·established·and·supervised.</p><p>Assuming·that·the·MGC·is·started·on·the·local·host,·four·different·MG's,·using51 is·fully·established·and·supervised.</p><p>Assuming·that·the·MGC·is·started·on·the·local·host,·four·different·MG's,·using
52 text·over·TCP/IP,·binary·over·TCP/IP,·text·over·UDP/IP·and·binary·over·UDP/IP52 text·over·TCP/IP,·binary·over·TCP/IP,·text·over·UDP/IP·and·binary·over·UDP/IP
53 may·be·started·on·the·same·Erlang·node·with:</p><pre><code·class="text">······cd·megaco/examples/simple53 may·be·started·on·the·same·Erlang·node·with:</p><pre><code·class="text">······cd·megaco/examples/simple
54 ······erl·-pa·../../../megaco/ebin·-s·megaco_filter·-s·megaco54 ······erl·-pa·../../../megaco/ebin·-s·megaco_filter·-s·megaco
55 ······megaco_simple_mg:start().</code></pre><p>or·simply·'gmake·mg'.</p><p>If·you·&quot;only&quot;·want·to·start·a·single·MG·which·tries·to·connect·an·MG·on·a·host55 ······megaco_simple_mg:start().</code></pre><p>or·simply·'gmake·mg'.</p><p>If·you·&quot;only&quot;·want·to·start·a·single·MG·which·tries·to·connect·an·MG·on·a·host
56 named·&quot;baidarka&quot;,·you·may·use·one·of·these·functions·(instead·of·the56 named·&quot;baidarka&quot;,·you·may·use·one·of·these·functions·(instead·of·the
57 megaco_simple_mg:start/0·above):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_text</span><span·class="p"·data-group-id="3359462138-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3359462138-2">[</span><span·class="p"·data-group-id="3359462138-2">]</span><span·class="p"·data-group-id="335946[·...·truncated·by·diffoscope;·len:·3,·SHA:·d48ff4b2f68a10fd7c86f185a6ccede0dc0f2c48538d697cb33b6ada3f1e85db·...·]8-1">)</span><span·class="p">.</span><span·class="w">57 megaco_simple_mg:start/0·above):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_text</span><span·class="p"·data-group-id="9039030418-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9039030418-2">[</span><span·class="p"·data-group-id="9039030418-2">]</span><span·class="p"·data-group-id="903903[·...·truncated·by·diffoscope;·len:·3,·SHA:·879ce2257ab3468f65bd6d50a1e56f9af8e75a80035cbb1019eced7c3a47db5b·...·]8-1">)</span><span·class="p">.</span><span·class="w">
58 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_binary</span><span·class="p"·data-group-id="3359462138-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3359462138-4">[</span><span·class="p"·data-group-id="3359462138-4">]</span><span·class="p"·data-group-id="335946[·...·truncated·by·diffoscope;·len:·3,·SHA:·d48ff4b2f68a10fd7c86f185a6ccede0dc0f2c48538d697cb33b6ada3f1e85db·...·]8-3">)</span><span·class="p">.</span><span·class="w">58 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_binary</span><span·class="p"·data-group-id="9039030418-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9039030418-4">[</span><span·class="p"·data-group-id="9039030418-4">]</span><span·class="p"·data-group-id="903903[·...·truncated·by·diffoscope;·len:·3,·SHA:·879ce2257ab3468f65bd6d50a1e56f9af8e75a80035cbb1019eced7c3a47db5b·...·]8-3">)</span><span·class="p">.</span><span·class="w">
59 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_text</span><span·class="p"·data-group-id="3359462138-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3359462138-6">[</span><span·class="p"·data-group-id="3359462138-6">]</span><span·class="p"·data-group-id="335946[·...·truncated·by·diffoscope;·len:·3,·SHA:·d48ff4b2f68a10fd7c86f185a6ccede0dc0f2c48538d697cb33b6ada3f1e85db·...·]8-5">)</span><span·class="p">.</span><span·class="w">59 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_text</span><span·class="p"·data-group-id="9039030418-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9039030418-6">[</span><span·class="p"·data-group-id="9039030418-6">]</span><span·class="p"·data-group-id="903903[·...·truncated·by·diffoscope;·len:·3,·SHA:·879ce2257ab3468f65bd6d50a1e56f9af8e75a80035cbb1019eced7c3a47db5b·...·]8-5">)</span><span·class="p">.</span><span·class="w">
60 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_binary</span><span·class="p"·data-group-id="3359462138-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3359462138-8">[</span><span·class="p"·data-group-id="3359462138-8">]</span><span·class="p"·data-group-id="335946[·...·truncated·by·diffoscope;·len:·3,·SHA:·d48ff4b2f68a10fd7c86f185a6ccede0dc0f2c48538d697cb33b6ada3f1e85db·...·]8-7">)</span><span·class="p">.</span></code></pre><p>The·-s·megaco_filter·option·to·erl·implies,·the·event·tracing·mechanism·to·be60 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_binary</span><span·class="p"·data-group-id="9039030418-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9039030418-8">[</span><span·class="p"·data-group-id="9039030418-8">]</span><span·class="p"·data-group-id="903903[·...·truncated·by·diffoscope;·len:·3,·SHA:·879ce2257ab3468f65bd6d50a1e56f9af8e75a80035cbb1019eced7c3a47db5b·...·]8-7">)</span><span·class="p">.</span></code></pre><p>The·-s·megaco_filter·option·to·erl·implies,·the·event·tracing·mechanism·to·be
61 enabled·and·an·interactive·sequence·chart·tool·to·be·started.·This·may·be·quite61 enabled·and·an·interactive·sequence·chart·tool·to·be·started.·This·may·be·quite
62 useful·in·order·to·visualize·how·your·MG·interacts·with·the·Megaco/H.24862 useful·in·order·to·visualize·how·your·MG·interacts·with·the·Megaco/H.248
63 protocol·stack.</p><p>The·event·traces·may·alternatively·be·directed·to·a·file·for·later·analyze.·By63 protocol·stack.</p><p>The·event·traces·may·alternatively·be·directed·to·a·file·for·later·analyze.·By
64 default·the·event·tracing·is·disabled,·but·it·may·dynamically·be·enabled·without64 default·the·event·tracing·is·disabled,·but·it·may·dynamically·be·enabled·without
65 any·need·for·re-compilation·of·the·code.</p>65 any·need·for·re-compilation·of·the·code.</p>
  
66 ··</body>66 ··</body>
21.6 KB
OEBPS/megaco_encode.xhtml
Max HTML report size reached
11.5 KB
OEBPS/megaco_debug.xhtml
Max HTML report size reached
2.66 KB
OEBPS/megaco.xhtml
    
Offset 2951, 15 lines modifiedOffset 2951, 15 lines modified
  
2951 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Versions)·->·<a·href="#t:void/0">void</a>()·when·Versions·::·[VersionInfo],·VersionInfo·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>2951 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Versions)·->·<a·href="#t:void/0">void</a>()·when·Versions·::·[VersionInfo],·VersionInfo·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
2952 ······</div>2952 ······</div>
  
2953 <p>Utility·function·to·produce·a·formated·printout·of·the·versions·info·generated2953 <p>Utility·function·to·produce·a·formated·printout·of·the·versions·info·generated
2954 by·the·<code·class="inline">versions1</code>·and·<code·class="inline">versions2</code>·functions.</p><p>The·function·print_version_info/0·uses·the·result·of·function·version1/0·as2954 by·the·<code·class="inline">versions1</code>·and·<code·class="inline">versions2</code>·functions.</p><p>The·function·print_version_info/0·uses·the·result·of·function·version1/0·as
2955 <code·class="inline">VersionInfo</code>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">···········</samp><samp·class="p"·data-group-id="0863445555-1">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">V</samp><samp·class="p"·data-group-id="0863445555-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·2bf35515cde06389ce1f80e87f6b3dcc646b4b5427323cb19fc4371d175ad9e2·...·]-3">)</samp><samp·class="p">.</samp></code></pre>2955 <code·class="inline">VersionInfo</code>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">···········</samp><samp·class="p"·data-group-id="1585104508-1">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">V</samp><samp·class="p"·data-group-id="1585104508-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·2ba463e3c4849eb70830c4795de25c34832acab3a04806a87a5c028fc7962d96·...·]-3">)</samp><samp·class="p">.</samp></code></pre>
2956 ··</section>2956 ··</section>
2957 </section>2957 </section>
2958 <section·class="detail"·id="process_received_message/4">2958 <section·class="detail"·id="process_received_message/4">
  
2959 ··<div·class="detail-header">2959 ··<div·class="detail-header">
2960 ····<a·href="#process_received_message/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2960 ····<a·href="#process_received_message/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
2961 ······<i·class="ri-link-m"·aria-hidden="true"></i>2961 ······<i·class="ri-link-m"·aria-hidden="true"></i>
3.46 KB
OEBPS/content.opf
3.43 KB
OEBPS/content.opf
Max HTML report size reached
2.76 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7/doc/html/megaco.html
    
Offset 3072, 15 lines modifiedOffset 3072, 15 lines modified
  
3072 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Versions)·->·<a·href="#t:void/0">void</a>()·when·Versions·::·[VersionInfo],·VersionInfo·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>3072 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Versions)·->·<a·href="#t:void/0">void</a>()·when·Versions·::·[VersionInfo],·VersionInfo·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3073 ······</div>3073 ······</div>
  
3074 <p>Utility·function·to·produce·a·formated·printout·of·the·versions·info·generated3074 <p>Utility·function·to·produce·a·formated·printout·of·the·versions·info·generated
3075 by·the·<code·class="inline">versions1</code>·and·<code·class="inline">versions2</code>·functions.</p><p>The·function·print_version_info/0·uses·the·result·of·function·version1/0·as3075 by·the·<code·class="inline">versions1</code>·and·<code·class="inline">versions2</code>·functions.</p><p>The·function·print_version_info/0·uses·the·result·of·function·version1/0·as
3076 <code·class="inline">VersionInfo</code>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="1222996215-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="1222996215-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·5cb2d7e65e3530db10c892688c3614547961781fe6631032078926ea36b96989·...·]-3">)</span><span·class="p">.</span></code></pre>3076 <code·class="inline">VersionInfo</code>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="7812371084-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="7812371084-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·8993949eb0cb5a9fed38d31b1df627f4610ff0b739043b55cf8b64f169a2955b·...·]-3">)</span><span·class="p">.</span></code></pre>
3077 ··</section>3077 ··</section>
3078 </section>3078 </section>
3079 <section·class="detail"·id="process_received_message/4">3079 <section·class="detail"·id="process_received_message/4">
  
3080 ··<div·class="detail-header">3080 ··<div·class="detail-header">
3081 ····<a·href="#process_received_message/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3081 ····<a·href="#process_received_message/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3082 ······<i·class="ri-link-m"·aria-hidden="true"></i>3082 ······<i·class="ri-link-m"·aria-hidden="true"></i>
11.6 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7/doc/html/megaco_debug.html
    
Offset 168, 20 lines modifiedOffset 168, 20 lines modified
168 file·(see·below·for·more·info).·The·messages·in·this·file·is·encoded·with·just168 file·(see·below·for·more·info).·The·messages·in·this·file·is·encoded·with·just
169 one·codec.·During·measurement·initiation,·the·messages·are·read·and·then169 one·codec.·During·measurement·initiation,·the·messages·are·read·and·then
170 transformed·to·all·codec·formats·used·in·the·measurement.</p><p>The·message·transformation·is·done·by·the·transformation·module.·It·is·used·to170 transformed·to·all·codec·formats·used·in·the·measurement.</p><p>The·message·transformation·is·done·by·the·transformation·module.·It·is·used·to
171 transform·a·set·of·messages·encoded·with·one·codec·into·the·other·base·codec's.</p><h4>Measurement(s)</h4><p>There·are·two·different·measurement·tools:</p><ul><li><p><em>meas</em>:</p><p>Used·to·perform·codec·measurements.·That·is,·to·see·what·kind·of·performance171 transform·a·set·of·messages·encoded·with·one·codec·into·the·other·base·codec's.</p><h4>Measurement(s)</h4><p>There·are·two·different·measurement·tools:</p><ul><li><p><em>meas</em>:</p><p>Used·to·perform·codec·measurements.·That·is,·to·see·what·kind·of·performance
172 can·be·expected·by·the·different·codecs·provided·by·the·megaco·application.</p><p>The·measurement·is·done·by·iterating·over·the·decode/encode·function·for172 can·be·expected·by·the·different·codecs·provided·by·the·megaco·application.</p><p>The·measurement·is·done·by·iterating·over·the·decode/encode·function·for
173 approx·2·seconds·per·message·and·counting·the·number·of·decodes/encodes.</p><p>Is·best·run·by·modifying·the·meas.sh.skel·skeleton·script·provided·by·the173 approx·2·seconds·per·message·and·counting·the·number·of·decodes/encodes.</p><p>Is·best·run·by·modifying·the·meas.sh.skel·skeleton·script·provided·by·the
174 tool.</p><p>To·run·it·manually·do·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="c1">%·erl·-pa·&lt;path-megaco-ebin-dir&gt;·-pa·&lt;path-to-meas-module-dir&gt;</span><span·class="w">174 tool.</p><p>To·run·it·manually·do·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="c1">%·erl·-pa·&lt;path-megaco-ebin-dir&gt;·-pa·&lt;path-to-meas-module-dir&gt;</span><span·class="w">
175 ········</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="9567274901-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="9567274901-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·155,·SHA:·9a4080baa19786b639d54948a828ad99dc3fd6ea5d14c8ef68769480d772c8f0·...·]1-2">]</span><span·class="w">175 ········</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="4539435511-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="4539435511-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·155,·SHA:·4af204d1cb832d12c1a071940a68127783dd85f85d709126c81a81968fa83e4e·...·]1-2">]</span><span·class="w">
  
176 ········</span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V12</span><span·class="p">.</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="9567274901-3">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="9567274901-3">)</span><span·class="w">176 ········</span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V12</span><span·class="p">.</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="4539435511-3">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4539435511-3">)</span><span·class="w">
177 ········</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">megaco_codec_meas</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9567274901-4">(</span><span·class="p"·data-group-id="9567274901-4">)</span><span·class="p">.</span><span·class="w">177 ········</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">megaco_codec_meas</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4539435511-4">(</span><span·class="p"·data-group-id="4539435511-4">)</span><span·class="p">.</span><span·class="w">
178 ········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">178 ········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
179 ········</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">halt</span><span·class="p"·data-group-id="9567274901-5">(</span><span·class="p"·data-group-id="9567274901-5">)</span><span·class="p">.</span></code></pre><p>or·to·make·it·even·easier,·assuming·a·measure·shall·be·done·on·all·the·codecs179 ········</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">halt</span><span·class="p"·data-group-id="4539435511-5">(</span><span·class="p"·data-group-id="4539435511-5">)</span><span·class="p">.</span></code></pre><p>or·to·make·it·even·easier,·assuming·a·measure·shall·be·done·on·all·the·codecs
180 (as·above):</p><pre><code·class="text">········%·erl·-noshell·-pa·&lt;path-megaco-ebin-dir&gt;·\\180 (as·above):</p><pre><code·class="text">········%·erl·-noshell·-pa·&lt;path-megaco-ebin-dir&gt;·\\
181 ··············-pa·&lt;path-to-meas-module-dir&gt;·\\181 ··············-pa·&lt;path-to-meas-module-dir&gt;·\\
182 ··············-s·megaco_codec_meas·-s·init·stop</code></pre><p>When·run·as·above·(this·will·take·some·time),·the·measurement·process·is·done182 ··············-s·megaco_codec_meas·-s·init·stop</code></pre><p>When·run·as·above·(this·will·take·some·time),·the·measurement·process·is·done
183 as·follows:</p><pre><code·class="text">For·each·codec:183 as·follows:</p><pre><code·class="text">For·each·codec:
184 ····For·each·message:184 ····For·each·message:
185 ········Read·the·message·from·the·file185 ········Read·the·message·from·the·file
186 ············Detect·message·version186 ············Detect·message·version
Offset 195, 18 lines modifiedOffset 195, 18 lines modified
195 tool.</p><p>The·<em>mstone2</em>·is·similar·to·the·<em>mstone1</em>·tool,·but·in·this·case,·each·created195 tool.</p><p>The·<em>mstone2</em>·is·similar·to·the·<em>mstone1</em>·tool,·but·in·this·case,·each·created
196 process·makes·only·<em>one</em>·run·through·the·messages·and·then·exits.·A·soon·as·a196 process·makes·only·<em>one</em>·run·through·the·messages·and·then·exits.·A·soon·as·a
197 process·exits,·a·new·process·(with·the·same·config·and·messages)·is·created·to197 process·exits,·a·new·process·(with·the·same·config·and·messages)·is·created·to
198 takes·its·place.·The·number·of·messages·processed·in·total·is·the·mstone2(1)198 takes·its·place.·The·number·of·messages·processed·in·total·is·the·mstone2(1)
199 value.</p></li></ul><p>Both·these·tools·use·the·message·package·(time_test.msgs)·provided·with·the199 value.</p></li></ul><p>Both·these·tools·use·the·message·package·(time_test.msgs)·provided·with·the
200 tool(s),·although·it·can·run·on·any·message·package·as·long·as·it·has·the·same200 tool(s),·although·it·can·run·on·any·message·package·as·long·as·it·has·the·same
201 structure.</p><h4>Message·package·file</h4><p>This·is·simply·an·erlang·compatible·text-file·with·the·following·structure:201 structure.</p><h4>Message·package·file</h4><p>This·is·simply·an·erlang·compatible·text-file·with·the·following·structure:
202 <code·class="inline">{codec_name(),·messages_list()}</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">codec_name</span><span·class="p"·data-group-id="5071902669-1">(</span><span·class="p"·data-group-id="5071902669-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">pretty</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·687,·SHA:·5483c4a325ba088e6a0f4b2aa29b8dd8c5a35302756a563091e637beb795a5d3·...·]-2">)</span><span·class="w">202 <code·class="inline">{codec_name(),·messages_list()}</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">codec_name</span><span·class="p"·data-group-id="3991707336-1">(</span><span·class="p"·data-group-id="3991707336-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">pretty</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·687,·SHA:·66019557b0228d7daf54025190f662ae6eb35c0f658e1226ea53a011bae9d96c·...·]-2">)</span><span·class="w">
203 </span><span·class="nf">messages_list</span><span·class="p"·data-group-id="5071902669-3">(</span><span·class="p"·data-group-id="5071902669-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5071902669-4">[</span><span·class="p"·data-group-id="5071902669-5">{</span><sp[·...·truncated·by·diffoscope;·len:·418,·SHA:·b0bafaccabd7efe4ff818adf0f5527920833d6e04b8f9ac2edc7f9881bf6a9f2·...·]-4">]</span><span·class="w">203 </span><span·class="nf">messages_list</span><span·class="p"·data-group-id="3991707336-3">(</span><span·class="p"·data-group-id="3991707336-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3991707336-4">[</span><span·class="p"·data-group-id="3991707336-5">{</span><sp[·...·truncated·by·diffoscope;·len:·418,·SHA:·e1e2c21d0649994419099b16eb2ad90a5b1863218e2653cdd49afc9304c94f73·...·]-4">]</span><span·class="w">
204 </span><span·class="nf">message_name</span><span·class="p"·data-group-id="5071902669-8">(</span><span·class="p"·data-group-id="5071902669-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="5071902669-9">(</span><span·class="p"·data-group-id="5071902669-9">)</span><span·class="w"> 
205 </span><span·class="nf">message</span><span·class="p"·data-group-id="5071902669-10">(</span><span·class="p"·data-group-id="5071902669-10">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="50719026[·...·truncated·by·diffoscope;·len:·155,·SHA:·f6e6628922a48f40a809b55ae401e1703456a0046f958af348183fd3678e7f20·...·]204 </span><span·class="nf">message_name</span><span·class="p"·data-group-id="3991707336-8">(</span><span·class="p"·data-group-id="3991707336-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3991707[·...·truncated·by·diffoscope;·len:·84,·SHA:·e08c39d4e16dd4551907a482a9c7872f4dea340ed8125763debb2757cb1b4dd4·...·]
 205 </span><span·class="nf">message</span><span·class="p"·data-group-id="3991707336-10">(</span><span·class="p"·data-group-id="3991707336-10">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="3991707336-11">(</span><span·class="p"·data-group-id="3991707336-11">)</span></code></pre><p>The·codec·name·is·the·name·of·the·codec·with·which·all·messages·in·the
206 <code·class="inline">message_list()</code>·has·been·encoded.</p><p>This·file·can·be·<code·class="inline">exported</code>·to·a·file·structure·by·calling·the206 <code·class="inline">message_list()</code>·has·been·encoded.</p><p>This·file·can·be·<code·class="inline">exported</code>·to·a·file·structure·by·calling·the
207 <a·href="megaco_codec_transform.html#export_messages">export_messages</a>·function.·This·can207 <a·href="megaco_codec_transform.html#export_messages">export_messages</a>·function.·This·can
208 be·usefull·if·a·measurement·shall·be·done·with·an·external·tool.·Exporting·the208 be·usefull·if·a·measurement·shall·be·done·with·an·external·tool.·Exporting·the
209 messages·creates·a·directory·tree·with·the·following·structure:</p><pre><code·class="text">&lt;message·package&gt;/pretty/&lt;message-files&gt;209 messages·creates·a·directory·tree·with·the·following·structure:</p><pre><code·class="text">&lt;message·package&gt;/pretty/&lt;message-files&gt;
210 ··················compact/210 ··················compact/
211 ··················per/211 ··················per/
212 ··················ber/&lt;message-files&gt;212 ··················ber/&lt;message-files&gt;
21.7 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7/doc/html/megaco_encode.html
    
Offset 170, 67 lines modifiedOffset 170, 67 lines modified
170 ···························}170 ···························}
171 ···················}171 ···················}
172 ···········}172 ···········}
173 ···}</code></pre><p>Then·the·compact·version·without·indentation·and·with·short·keywords:</p><pre><code·class="text">173 ···}</code></pre><p>Then·the·compact·version·without·indentation·and·with·short·keywords:</p><pre><code·class="text">
174 ···!/1·[124.124.124.222]174 ···!/1·[124.124.124.222]
175 ···T=9998{C=-{SC=ROOT{SV{MT=RS,AD=55555,PF=ResGW/1,RE=&quot;901·Cold·Boot&quot;}}}}</code></pre><p>And·the·programmers·view·of·the·same·message.·First·a·list·of·ActionRequest175 ···T=9998{C=-{SC=ROOT{SV{MT=RS,AD=55555,PF=ResGW/1,RE=&quot;901·Cold·Boot&quot;}}}}</code></pre><p>And·the·programmers·view·of·the·same·message.·First·a·list·of·ActionRequest
176 records·are·constructed·and·then·it·is·sent·with·one·of·the·send·functions·in176 records·are·constructed·and·then·it·is·sent·with·one·of·the·send·functions·in
177 the·API:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="n">Prof</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ServiceChangeProfile&#39;</span><span·class="p"·data-group-id="2506042130-1">{</span><span·class="ss">profileName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;resgw&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·cl[·...·truncated·by·diffoscope;·len:·130,·SHA:·55b1e8f67517fc5d552825e5248ace9890a53ae97c383c023b989b1ca9b07933·...·]-1">}</span><span·class="p">,</span><span·class="w">177 the·API:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="n">Prof</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ServiceChangeProfile&#39;</span><span·class="p"·data-group-id="5290706547-1">{</span><span·class="ss">profileName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;resgw&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·cl[·...·truncated·by·diffoscope;·len:·130,·SHA:·a2a711f98bc956738bff189b1f84b61e8a428795b7fbb5bb5811606cc540edc1·...·]-1">}</span><span·class="p">,</span><span·class="w">
178 ··</span><span·class="n">Parm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ServiceChangeParm&#39;</span><span·class="p"·data-group-id="2506042130-2">{</span><span·class="ss">serviceChangeMethod</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">restart</span><span·class="p">,</span><span·class="w">178 ··</span><span·class="n">Parm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ServiceChangeParm&#39;</span><span·class="p"·data-group-id="5290706547-2">{</span><span·class="ss">serviceChangeMethod</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">restart</span><span·class="p">,</span><span·class="w">
179 ······························</span><span·class="ss">serviceChangeAddress</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2506042130-3">{</span><span·class="ss">portNumber</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">55555</span><span·class="p"·data-group-id="2506042130-3">}</span><span·class="p">,</span><span·class="w">179 ······························</span><span·class="ss">serviceChangeAddress</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5290706547-3">{</span><span·class="ss">portNumber</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">55555</span><span·class="p"·data-group-id="5290706547-3">}</span><span·class="p">,</span><span·class="w">
180 ······························</span><span·class="ss">serviceChangeReason</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;901·Cold·Boot&quot;</span><span·class="p">,</span><span·class="w">180 ······························</span><span·class="ss">serviceChangeReason</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;901·Cold·Boot&quot;</span><span·class="p">,</span><span·class="w">
181 ······························</span><span·class="ss">serviceChangeProfile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Prof</span><span·class="p"·data-group-id="2506042130-2">}</span><span·class="p">,</span><span·class="w">181 ······························</span><span·class="ss">serviceChangeProfile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Prof</span><span·class="p"·data-group-id="5290706547-2">}</span><span·class="p">,</span><span·class="w">
182 ··</span><span·class="n">Req</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p"·data-group-id="2506042130-4">{</span><span·class="ss">terminationID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2506042130-5">[</span><span·class="o">?</span><span·class="ss">megaco_root_termination_id</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·2a8874777fa3a52577b4b44789a9bf06d6dff8a3b0bf7a04a4ea2850c8177c8f·...·]-5">]</span><span·class="p">,</span><span·class="w">182 ··</span><span·class="n">Req</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p"·data-group-id="5290706547-4">{</span><span·class="ss">terminationID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5290706547-5">[</span><span·class="o">?</span><span·class="ss">megaco_root_termination_id</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·6741fef656cab7f7133e550cae838db295f24edb147dc4647b481e2d77dbd203·...·]-5">]</span><span·class="p">,</span><span·class="w">
183 ································</span><span·class="ss">serviceChangeParms</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Parm</span><span·class="p"·data-group-id="2506042130-4">}</span><span·class="p">,</span><span·class="w">183 ································</span><span·class="ss">serviceChangeParms</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Parm</span><span·class="p"·data-group-id="5290706547-4">}</span><span·class="p">,</span><span·class="w">
184 ··</span><span·class="n">Actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2506042130-6">[</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="2506042130-7">{</span><span·class="ss">contextId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">megaco_null_context_id</span><span·class="p">,</span><span·class="w">184 ··</span><span·class="n">Actions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5290706547-6">[</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="5290706547-7">{</span><span·class="ss">contextId</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">megaco_null_context_id</span><span·class="p">,</span><span·class="w">
185 ······························</span><span·class="ss">commandRequests</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2506042130-8">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="2506042130-8">}</span><span·class="p"·data-group-id="2506042130-7">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·b0664724514dd6e391cc7b1e822f2d0bb553ece623137140d87eb19ea1fc47d6·...·]-6">]</span><span·class="p">,</span><span·class="w">185 ······························</span><span·class="ss">commandRequests</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5290706547-8">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Req</span><span·class="p"·data-group-id="5290706547-8">}</span><span·class="p"·data-group-id="5290706547-7">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d76d0f4ea1d5f9ce231aa3da8dfc8825a1825ed301cf75d1f74185a0dd245a29·...·]-6">]</span><span·class="p">,</span><span·class="w">
186 ··</span><span·class="nc">megaco</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="2506042130-9">(</span><span·class="n">ConnHandle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Actions</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="2506042130-9">)[·...·truncated·by·diffoscope;·len:·217,·SHA:·0375e6b64b18e6ef4cd8aa41f8206616516ae3114d2c4cabae3c7b45afecd7f3·...·]-1">{</span><span·class="ss">&#39;MegacoMessage&#39;</span><span·class="p">,</span><span·class="w">186 ··</span><span·class="nc">megaco</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="5290706547-9">(</span><span·class="n">ConnHandle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Actions</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="5290706547-9">)[·...·truncated·by·diffoscope;·len:·217,·SHA:·ab61a4ac18dbe5099291fca79a670ba576b8e792212e72989f695506398204f7·...·]-1">{</span><span·class="ss">&#39;MegacoMessage&#39;</span><span·class="p">,</span><span·class="w">
187 ···</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">187 ···</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
188 ···</span><span·class="p"·data-group-id="0028087215-2">{</span><span·class="ss">&#39;Message&#39;</span><span·class="p">,</span><span·class="w">188 ···</span><span·class="p"·data-group-id="6990738934-2">{</span><span·class="ss">&#39;Message&#39;</span><span·class="p">,</span><span·class="w">
189 ····</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">189 ····</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
190 ····</span><span·class="p"·data-group-id="0028087215-3">{</span><span·class="ss">ip4Address</span><span·class="p">,</span><span·class="p"·data-group-id="0028087215-4">{</span><span·class="ss">&#39;IP4Address&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·433,·SHA:·d43c618e10ea0fbed34837280e0f8e7a815b2caad6ede22f1db43f007a3f4e54·...·]-3">}</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="p"·data-group-id="6990738934-3">{</span><span·class="ss">ip4Address</span><span·class="p">,</span><span·class="p"·data-group-id="6990738934-4">{</span><span·class="ss">&#39;IP4Address&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·433,·SHA:·4bbe85d0403e5aa97836b2ac670ac3196cc5132855e70a657d2f84fcba608a43·...·]-3">}</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="p"·data-group-id="0028087215-6">{</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">191 ····</span><span·class="p"·data-group-id="6990738934-6">{</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">
192 ·····</span><span·class="p"·data-group-id="0028087215-7">[</span><span·class="w">192 ·····</span><span·class="p"·data-group-id="6990738934-7">[</span><span·class="w">
193 ······</span><span·class="p"·data-group-id="0028087215-8">{</span><span·class="ss">transactionRequest</span><span·class="p">,</span><span·class="w">193 ······</span><span·class="p"·data-group-id="6990738934-8">{</span><span·class="ss">transactionRequest</span><span·class="p">,</span><span·class="w">
194 ·······</span><span·class="p"·data-group-id="0028087215-9">{</span><span·class="ss">&#39;TransactionRequest&#39;</span><span·class="p">,</span><span·class="w">194 ·······</span><span·class="p"·data-group-id="6990738934-9">{</span><span·class="ss">&#39;TransactionRequest&#39;</span><span·class="p">,</span><span·class="w">
195 ·········</span><span·class="mi">9998</span><span·class="p">,</span><span·class="w">195 ·········</span><span·class="mi">9998</span><span·class="p">,</span><span·class="w">
196 ·········</span><span·class="p"·data-group-id="0028087215-10">[</span><span·class="p"·data-group-id="0028087215-11">{</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p">,</span><span·class="w">196 ·········</span><span·class="p"·data-group-id="6990738934-10">[</span><span·class="p"·data-group-id="6990738934-11">{</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p">,</span><span·class="w">
197 ···········</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">197 ···········</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
198 ···········</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">198 ···········</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
199 ···········</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">199 ···········</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
200 ···········</span><span·class="p"·data-group-id="0028087215-12">[</span><span·class="w">200 ···········</span><span·class="p"·data-group-id="6990738934-12">[</span><span·class="w">
201 ············</span><span·class="p"·data-group-id="0028087215-13">{</span><span·class="ss">&#39;CommandRequest&#39;</span><span·class="p">,</span><span·class="w">201 ············</span><span·class="p"·data-group-id="6990738934-13">{</span><span·class="ss">&#39;CommandRequest&#39;</span><span·class="p">,</span><span·class="w">
202 ·············</span><span·class="p"·data-group-id="0028087215-14">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">202 ·············</span><span·class="p"·data-group-id="6990738934-14">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">
203 ··············</span><span·class="p"·data-group-id="0028087215-15">{</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p">,</span><span·class="w">203 ··············</span><span·class="p"·data-group-id="6990738934-15">{</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p">,</span><span·class="w">
204 ···············</span><span·class="p"·data-group-id="0028087215-16">[</span><span·class="w">204 ···············</span><span·class="p"·data-group-id="6990738934-16">[</span><span·class="w">
205 ················</span><span·class="p"·data-group-id="0028087215-17">{</span><span·class="ss">megaco_term_id</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0028087215-18">[</span><span·class="s">[·...·truncated·by·diffoscope;·len:·172,·SHA:·156cdc60be8dd5bdc9ce520ea6e67fc718a7abb8bdbf213a2452fb1409e91144·...·]-16">]</span><span·class="p">,</span><span·class="w">205 ················</span><span·class="p"·data-group-id="6990738934-17">{</span><span·class="ss">megaco_term_id</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6990738934-18">[</span><span·class="s">[·...·truncated·by·diffoscope;·len:·172,·SHA:·2318e2f49e2860320db430a621762c2ef69ac84565e5ed33e18f5c2582f78a24·...·]-16">]</span><span·class="p">,</span><span·class="w">
206 ················</span><span·class="p"·data-group-id="0028087215-19">{</span><span·class="ss">&#39;ServiceChangeParm&#39;</span><span·class="p">,</span><span·class="w">206 ················</span><span·class="p"·data-group-id="6990738934-19">{</span><span·class="ss">&#39;ServiceChangeParm&#39;</span><span·class="p">,</span><span·class="w">
207 ·················</span><span·class="ss">restart</span><span·class="p">,</span><span·class="w">207 ·················</span><span·class="ss">restart</span><span·class="p">,</span><span·class="w">
208 ·················</span><span·class="p"·data-group-id="0028087215-20">{</span><span·class="ss">portNumber</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">55555</span><span·class="p"·data-group-id="0028087215-20">}</span><span·class="p">,</span><span·class="w">208 ·················</span><span·class="p"·data-group-id="6990738934-20">{</span><span·class="ss">portNumber</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">55555</span><span·class="p"·data-group-id="6990738934-20">}</span><span·class="p">,</span><span·class="w">
209 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">209 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
210 ·················</span><span·class="p"·data-group-id="0028087215-21">{</span><span·class="ss">&#39;ServiceChangeProfile&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;resgw&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·class=[·...·truncated·by·diffoscope;·len:·126,·SHA:·cce6c317cae5c274d17d999cd5a2c24267eb40383c9546622b090717f3372f68·...·]-21">}</span><span·class="p">,</span><span·class="w">210 ·················</span><span·class="p"·data-group-id="6990738934-21">{</span><span·class="ss">&#39;ServiceChangeProfile&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;resgw&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·class=[·...·truncated·by·diffoscope;·len:·126,·SHA:·ef763848013d09d084edda120db21f2e88d392491cb837d05d0b5e6e244ad93b·...·]-21">}</span><span·class="p">,</span><span·class="w">
211 ·················</span><span·class="s">&quot;901·MG·Cold·Boot&quot;</span><span·class="p">,</span><span·class="w">211 ·················</span><span·class="s">&quot;901·MG·Cold·Boot&quot;</span><span·class="p">,</span><span·class="w">
212 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">212 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
213 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">213 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
214 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="w">214 ·················</span><span·class="ss">asn1_NOVALUE</span><span·class="w">
215 ················</span><span·class="p"·data-group-id="0028087215-19">}</span><span·class="w">215 ················</span><span·class="p"·data-group-id="6990738934-19">}</span><span·class="w">
216 ··············</span><span·class="p"·data-group-id="0028087215-15">}</span><span·class="w">216 ··············</span><span·class="p"·data-group-id="6990738934-15">}</span><span·class="w">
217 ·············</span><span·class="p"·data-group-id="0028087215-14">}</span><span·class="p">,</span><span·class="w">217 ·············</span><span·class="p"·data-group-id="6990738934-14">}</span><span·class="p">,</span><span·class="w">
218 ·············</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">218 ·············</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
219 ·············</span><span·class="ss">asn1_NOVALUE</span><span·class="w">219 ·············</span><span·class="ss">asn1_NOVALUE</span><span·class="w">
220 ············</span><span·class="p"·data-group-id="0028087215-13">}</span><span·class="w">220 ············</span><span·class="p"·data-group-id="6990738934-13">}</span><span·class="w">
221 ···········</span><span·class="p"·data-group-id="0028087215-12">]</span><span·class="w">221 ···········</span><span·class="p"·data-group-id="6990738934-12">]</span><span·class="w">
222 ··········</span><span·class="p"·data-group-id="0028087215-11">}</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="6990738934-11">}</span><span·class="w">
223 ·········</span><span·class="p"·data-group-id="0028087215-10">]</span><span·class="w">223 ·········</span><span·class="p"·data-group-id="6990738934-10">]</span><span·class="w">
224 ·······</span><span·class="p"·data-group-id="0028087215-9">}</span><span·class="w">224 ·······</span><span·class="p"·data-group-id="6990738934-9">}</span><span·class="w">
225 ······</span><span·class="p"·data-group-id="0028087215-8">}</span><span·class="w">225 ······</span><span·class="p"·data-group-id="6990738934-8">}</span><span·class="w">
226 ·····</span><span·class="p"·data-group-id="0028087215-7">]</span><span·class="w">226 ·····</span><span·class="p"·data-group-id="6990738934-7">]</span><span·class="w">
227 ····</span><span·class="p"·data-group-id="0028087215-6">}</span><span·class="w">227 ····</span><span·class="p"·data-group-id="6990738934-6">}</span><span·class="w">
228 ···</span><span·class="p"·data-group-id="0028087215-2">}</span><span·class="w">228 ···</span><span·class="p"·data-group-id="6990738934-2">}</span><span·class="w">
229 ··</span><span·class="p"·data-group-id="0028087215-1">}</span></code></pre><p>The·following·encoding·modules·are·provided:</p><ul><li>megaco_pretty_text_encoder·-·encodes·messages·into·pretty·text·format,·decodes229 ··</span><span·class="p"·data-group-id="6990738934-1">}</span></code></pre><p>The·following·encoding·modules·are·provided:</p><ul><li>megaco_pretty_text_encoder·-·encodes·messages·into·pretty·text·format,·decodes
230 both·pretty·as·well·as·compact·text.</li><li>megaco_compact_text_encoder·-·encodes·messages·into·compact·text·format,230 both·pretty·as·well·as·compact·text.</li><li>megaco_compact_text_encoder·-·encodes·messages·into·compact·text·format,
231 decodes·both·pretty·as·well·as·compact·text.</li><li>megaco_binary_encoder·-·encode/decode·ASN.1·BER·messages.·This·encoder231 decodes·both·pretty·as·well·as·compact·text.</li><li>megaco_binary_encoder·-·encode/decode·ASN.1·BER·messages.·This·encoder
232 implements·the·fastest·of·the·BER·encoders/decoders.·Recommended·binary·codec.</li><li>megaco_ber_encoder·-·encode/decode·ASN.1·BER·messages.</li><li>megaco_per_encoder·-·encode/decode·ASN.1·PER·messages.·N.B.·that·this·format232 implements·the·fastest·of·the·BER·encoders/decoders.·Recommended·binary·codec.</li><li>megaco_ber_encoder·-·encode/decode·ASN.1·BER·messages.</li><li>megaco_per_encoder·-·encode/decode·ASN.1·PER·messages.·N.B.·that·this·format
233 is·not·included·in·the·Megaco·standard.</li><li>megaco_erl_dist_encoder·-·encodes·messages·into·Erlangs·distribution·format.233 is·not·included·in·the·Megaco·standard.</li><li>megaco_erl_dist_encoder·-·encodes·messages·into·Erlangs·distribution·format.
234 It·is·rather·verbose·but·encoding·and·decoding·is·blinding·fast.·N.B.·that234 It·is·rather·verbose·but·encoding·and·decoding·is·blinding·fast.·N.B.·that
235 this·format·is·not·included·in·the·Megaco·standard.</li></ul><p><a·href=""·id="erl_dist_config"></a></p><h2·id="configuration-of-erlang-distribution-encoding-module"·class="section-heading">235 this·format·is·not·included·in·the·Megaco·standard.</li></ul><p><a·href=""·id="erl_dist_config"></a></p><h2·id="configuration-of-erlang-distribution-encoding-module"·class="section-heading">
236 ··<a·href="#configuration-of-erlang-distribution-encoding-module"·class="hover-link">236 ··<a·href="#configuration-of-erlang-distribution-encoding-module"·class="hover-link">
5.21 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7/doc/html/megaco_examples.html
    
Offset 155, 18 lines modifiedOffset 155, 18 lines modified
155 synchronously·for·a·reply.</p><p>After·this·initial·service·change·message·the·connection·between·the·MG·and·MGC155 synchronously·for·a·reply.</p><p>After·this·initial·service·change·message·the·connection·between·the·MG·and·MGC
156 is·fully·established·and·supervised.</p><p>Assuming·that·the·MGC·is·started·on·the·local·host,·four·different·MG's,·using156 is·fully·established·and·supervised.</p><p>Assuming·that·the·MGC·is·started·on·the·local·host,·four·different·MG's,·using
157 text·over·TCP/IP,·binary·over·TCP/IP,·text·over·UDP/IP·and·binary·over·UDP/IP157 text·over·TCP/IP,·binary·over·TCP/IP,·text·over·UDP/IP·and·binary·over·UDP/IP
158 may·be·started·on·the·same·Erlang·node·with:</p><pre><code·class="text">······cd·megaco/examples/simple158 may·be·started·on·the·same·Erlang·node·with:</p><pre><code·class="text">······cd·megaco/examples/simple
159 ······erl·-pa·../../../megaco/ebin·-s·megaco_filter·-s·megaco159 ······erl·-pa·../../../megaco/ebin·-s·megaco_filter·-s·megaco
160 ······megaco_simple_mg:start().</code></pre><p>or·simply·'gmake·mg'.</p><p>If·you·&quot;only&quot;·want·to·start·a·single·MG·which·tries·to·connect·an·MG·on·a·host160 ······megaco_simple_mg:start().</code></pre><p>or·simply·'gmake·mg'.</p><p>If·you·&quot;only&quot;·want·to·start·a·single·MG·which·tries·to·connect·an·MG·on·a·host
161 named·&quot;baidarka&quot;,·you·may·use·one·of·these·functions·(instead·of·the161 named·&quot;baidarka&quot;,·you·may·use·one·of·these·functions·(instead·of·the
162 megaco_simple_mg:start/0·above):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_text</span><span·class="p"·data-group-id="8250102953-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8250102953-2">[</span><span·class="p"·data-group-id="8250102953-2">]</span><span·class="p"·data-group-id="825010[·...·truncated·by·diffoscope;·len:·4,·SHA:·a91b21e23dd3b8cef04eff46433de003fb9380c11069b29c1c2dea23554e6536·...·]-1">)</span><span·class="p">.</span><span·class="w">162 megaco_simple_mg:start/0·above):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_text</span><span·class="p"·data-group-id="4400542104-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4400542104-2">[</span><span·class="p"·data-group-id="4400542104-2">]</span><span·class="p"·data-group-id="440054[·...·truncated·by·diffoscope;·len:·4,·SHA:·8a376a996f6d7e958bbd68a87649296ea289ed2880de8b358cb91fa06aa3dfc6·...·]-1">)</span><span·class="p">.</span><span·class="w">
163 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_binary</span><span·class="p"·data-group-id="8250102953-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8250102953-4">[</span><span·class="p"·data-group-id="8250102953-4">]</span><span·class="p"·data-group-id="825010[·...·truncated·by·diffoscope;·len:·4,·SHA:·a91b21e23dd3b8cef04eff46433de003fb9380c11069b29c1c2dea23554e6536·...·]-3">)</span><span·class="p">.</span><span·class="w">163 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_tcp_binary</span><span·class="p"·data-group-id="4400542104-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4400542104-4">[</span><span·class="p"·data-group-id="4400542104-4">]</span><span·class="p"·data-group-id="440054[·...·truncated·by·diffoscope;·len:·4,·SHA:·8a376a996f6d7e958bbd68a87649296ea289ed2880de8b358cb91fa06aa3dfc6·...·]-3">)</span><span·class="p">.</span><span·class="w">
164 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_text</span><span·class="p"·data-group-id="8250102953-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8250102953-6">[</span><span·class="p"·data-group-id="8250102953-6">]</span><span·class="p"·data-group-id="825010[·...·truncated·by·diffoscope;·len:·4,·SHA:·a91b21e23dd3b8cef04eff46433de003fb9380c11069b29c1c2dea23554e6536·...·]-5">)</span><span·class="p">.</span><span·class="w">164 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_text</span><span·class="p"·data-group-id="4400542104-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4400542104-6">[</span><span·class="p"·data-group-id="4400542104-6">]</span><span·class="p"·data-group-id="440054[·...·truncated·by·diffoscope;·len:·4,·SHA:·8a376a996f6d7e958bbd68a87649296ea289ed2880de8b358cb91fa06aa3dfc6·...·]-5">)</span><span·class="p">.</span><span·class="w">
165 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_binary</span><span·class="p"·data-group-id="8250102953-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8250102953-8">[</span><span·class="p"·data-group-id="8250102953-8">]</span><span·class="p"·data-group-id="825010[·...·truncated·by·diffoscope;·len:·4,·SHA:·a91b21e23dd3b8cef04eff46433de003fb9380c11069b29c1c2dea23554e6536·...·]-7">)</span><span·class="p">.</span></code></pre><p>The·-s·megaco_filter·option·to·erl·implies,·the·event·tracing·mechanism·to·be165 ······</span><span·class="nc">megaco_simple_mg</span><span·class="p">:</span><span·class="nf">start_udp_binary</span><span·class="p"·data-group-id="4400542104-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4400542104-8">[</span><span·class="p"·data-group-id="4400542104-8">]</span><span·class="p"·data-group-id="440054[·...·truncated·by·diffoscope;·len:·4,·SHA:·8a376a996f6d7e958bbd68a87649296ea289ed2880de8b358cb91fa06aa3dfc6·...·]-7">)</span><span·class="p">.</span></code></pre><p>The·-s·megaco_filter·option·to·erl·implies,·the·event·tracing·mechanism·to·be
166 enabled·and·an·interactive·sequence·chart·tool·to·be·started.·This·may·be·quite166 enabled·and·an·interactive·sequence·chart·tool·to·be·started.·This·may·be·quite
167 useful·in·order·to·visualize·how·your·MG·interacts·with·the·Megaco/H.248167 useful·in·order·to·visualize·how·your·MG·interacts·with·the·Megaco/H.248
168 protocol·stack.</p><p>The·event·traces·may·alternatively·be·directed·to·a·file·for·later·analyze.·By168 protocol·stack.</p><p>The·event·traces·may·alternatively·be·directed·to·a·file·for·later·analyze.·By
169 default·the·event·tracing·is·disabled,·but·it·may·dynamically·be·enabled·without169 default·the·event·tracing·is·disabled,·but·it·may·dynamically·be·enabled·without
170 any·need·for·re-compilation·of·the·code.</p>170 any·need·for·re-compilation·of·the·code.</p>
171 </div>171 </div>
  
9.77 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7/doc/html/megaco_user.html
    
Offset 127, 31 lines modifiedOffset 127, 31 lines modified
127 ··</h1>127 ··</h1>
  
  
128 ····<section·id="moduledoc">128 ····<section·id="moduledoc">
129 <p>Callback·module·for·users·of·the·Megaco·application</p><p>This·module·defines·the·callback·behaviour·of·Megaco·users.·A·megaco_user129 <p>Callback·module·for·users·of·the·Megaco·application</p><p>This·module·defines·the·callback·behaviour·of·Megaco·users.·A·megaco_user
130 compliant·callback·module·must·export·the·following·functions:</p><ul><li><a·href="#c:handle_connect/3">handle_connect/2,3</a></li><li><a·href="#c:handle_disconnect/3">handle_disconnect/3</a></li><li><a·href="#c:handle_syntax_error/4">handle_syntax_error/3,4</a></li><li><a·href="#c:handle_message_error/4">handle_message_error/3,4</a></li><li><a·href="#c:handle_trans_request/4">handle_trans_request/3,4</a></li><li><a·href="#c:handle_trans_long_request/4">handle_trans_long_request/3,4</a></li><li><a·href="#c:handle_trans_reply/5">handle_trans_reply/4,5</a></li><li><a·href="#c:handle_trans_ack/5">handle_trans_ack/4,5</a></li><li><a·href="#c:handle_unexpected_trans/4">handle_unexpected_trans/3,4</a></li><li><a·href="#c:handle_trans_request_abort/5">handle_trans_request_abort/4,5</a></li><li><a·href="#c:handle_segment_reply/6">handle_segment_reply/5,6</a></li></ul><p>The·semantics·of·them·and·their·exact·signatures·are·explained·below.</p><p>The·<code·class="inline">user_args</code>·configuration·parameter·which·may·be·used·to·extend·the·argument130 compliant·callback·module·must·export·the·following·functions:</p><ul><li><a·href="#c:handle_connect/3">handle_connect/2,3</a></li><li><a·href="#c:handle_disconnect/3">handle_disconnect/3</a></li><li><a·href="#c:handle_syntax_error/4">handle_syntax_error/3,4</a></li><li><a·href="#c:handle_message_error/4">handle_message_error/3,4</a></li><li><a·href="#c:handle_trans_request/4">handle_trans_request/3,4</a></li><li><a·href="#c:handle_trans_long_request/4">handle_trans_long_request/3,4</a></li><li><a·href="#c:handle_trans_reply/5">handle_trans_reply/4,5</a></li><li><a·href="#c:handle_trans_ack/5">handle_trans_ack/4,5</a></li><li><a·href="#c:handle_unexpected_trans/4">handle_unexpected_trans/3,4</a></li><li><a·href="#c:handle_trans_request_abort/5">handle_trans_request_abort/4,5</a></li><li><a·href="#c:handle_segment_reply/6">handle_segment_reply/5,6</a></li></ul><p>The·semantics·of·them·and·their·exact·signatures·are·explained·below.</p><p>The·<code·class="inline">user_args</code>·configuration·parameter·which·may·be·used·to·extend·the·argument
131 list·of·the·callback·functions.·For·example,·the·handle_connect·function·takes131 list·of·the·callback·functions.·For·example,·the·handle_connect·function·takes
132 by·default·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_connect</span><span·class="p"·data-group-id="6122183364-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Version</span><span·class="p"·data-group-id="6122183364-1">)</span></code></pre><p>but·if·the·<code·class="inline">user_args</code>·parameter·is·set·to·a·longer·list,·such·as132 by·default·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_connect</span><span·class="p"·data-group-id="7178664680-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Version</span><span·class="p"·data-group-id="7178664680-1">)</span></code></pre><p>but·if·the·<code·class="inline">user_args</code>·parameter·is·set·to·a·longer·list,·such·as
133 <code·class="inline">[SomePid,SomeTableRef]</code>,·the·callback·function·is·expected·to·have·these·(in133 <code·class="inline">[SomePid,SomeTableRef]</code>,·the·callback·function·is·expected·to·have·these·(in
134 this·case·two)·extra·arguments·last·in·the·argument·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_connect</span><span·class="p"·data-group-id="0598449656-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Version</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SomePid</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·75,·SHA:·38597bd0354de1c8cdb55e89ed070cca16a1696632527fe9fbfbece56030eba4·...·]-1">)</span></code></pre><p><a·href=""·id="extra_argument"></a></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Must·of·the·functions·below·has·an·optional·<code·class="inline">Extra</code>·argument·(e.g.134 this·case·two)·extra·arguments·last·in·the·argument·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_connect</span><span·class="p"·data-group-id="7757128018-1">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Version</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SomePid</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·75,·SHA:·beb7ab95fe4231623871b616a5d5238e88d17040a7dbda6e9af546628076e5b3·...·]-1">)</span></code></pre><p><a·href=""·id="extra_argument"></a></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Must·of·the·functions·below·has·an·optional·<code·class="inline">Extra</code>·argument·(e.g.
135 <a·href="#c:handle_unexpected_trans/4">handle_unexpected_trans/4</a>).·The·functions135 <a·href="#c:handle_unexpected_trans/4">handle_unexpected_trans/4</a>).·The·functions
136 which·takes·this·argument·will·be·called·if·and·only·if·one·of·the·functions136 which·takes·this·argument·will·be·called·if·and·only·if·one·of·the·functions
137 <a·href="megaco.html#receive_message/5"><code·class="inline">receive_message/5</code></a>·or137 <a·href="megaco.html#receive_message/5"><code·class="inline">receive_message/5</code></a>·or
138 <a·href="megaco.html#process_received_message/5"><code·class="inline">process_received_message/5</code></a>·was·called138 <a·href="megaco.html#process_received_message/5"><code·class="inline">process_received_message/5</code></a>·was·called
139 with·the·<code·class="inline">Extra</code>·argument·different·than·<code·class="inline">ignore_extra</code>.</p></section><h2·id="module-data-types"·class="section-heading">139 with·the·<code·class="inline">Extra</code>·argument·different·than·<code·class="inline">ignore_extra</code>.</p></section><h2·id="module-data-types"·class="section-heading">
140 ··<a·href="#module-data-types"·class="hover-link">140 ··<a·href="#module-data-types"·class="hover-link">
141 ····<i·class="ri-link-m"·aria-hidden="true"></i>141 ····<i·class="ri-link-m"·aria-hidden="true"></i>
142 ··</a>142 ··</a>
143 ··<span·class="text">DATA·TYPES</span>143 ··<span·class="text">DATA·TYPES</span>
144 </h2>144 </h2>
145 <pre><code·class="makeup·erlang"·translate="no"><span·class="nf">action_request</span><span·class="p"·data-group-id="7696064500-1">(</span><span·class="p"·data-group-id="7696064500-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="7696064[·...·truncated·by·diffoscope;·len:·56,·SHA:·dc279d5c997661b69c3e1c75c82edb26d035abbae9ad61da4b635809e217c567·...·]-2">}</span><span·class="w">145 <pre><code·class="makeup·erlang"·translate="no"><span·class="nf">action_request</span><span·class="p"·data-group-id="4406014015-1">(</span><span·class="p"·data-group-id="4406014015-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="4406014[·...·truncated·by·diffoscope;·len:·56,·SHA:·3985f177a58a61fdf5c09b9f6a4c1d16edc7889e340ba4b5f4f8d76fc62f7e9a·...·]-2">}</span><span·class="w">
146 </span><span·class="nf">action_reply</span><span·class="p"·data-group-id="7696064500-3">(</span><span·class="p"·data-group-id="7696064500-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ActionReply&#39;</span><span·class="p"·data-group-id="769606450[·...·truncated·by·diffoscope;·len:·54,·SHA:·1db241ed2496bb06a2762e9bec1b45fca42f494c3d070af7bd4e0e1e6ffe406c·...·]-4">}</span><span·class="w">146 </span><span·class="nf">action_reply</span><span·class="p"·data-group-id="4406014015-3">(</span><span·class="p"·data-group-id="4406014015-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ActionReply&#39;</span><span·class="p"·data-group-id="440601401[·...·truncated·by·diffoscope;·len:·54,·SHA:·b4ff129e8bf4b1d15e496fffdabb596a652e7e872bda5cbbe1fa286917558550·...·]-4">}</span><span·class="w">
147 </span><span·class="nf">error_desc</span><span·class="p"·data-group-id="7696064500-5">(</span><span·class="p"·data-group-id="7696064500-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ErrorDescriptor&#39;</span><span·class="p"·data-group-id="76960[·...·truncated·by·diffoscope;·len:·58,·SHA:·f59ec2d1f2cc85dba6a92ef2b9a866d224d7c5ade54131c2e8fdecc01a844d1c·...·]-6">}</span><span·class="w">147 </span><span·class="nf">error_desc</span><span·class="p"·data-group-id="4406014015-5">(</span><span·class="p"·data-group-id="4406014015-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ErrorDescriptor&#39;</span><span·class="p"·data-group-id="44060[·...·truncated·by·diffoscope;·len:·58,·SHA:·60db90355b0d071db900db17809bc4fa048a0e6720447f950887b19564077ba4·...·]-6">}</span><span·class="w">
148 </span><span·class="nf">segment_no</span><span·class="p"·data-group-id="7696064500-7">(</span><span·class="p"·data-group-id="7696064500-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="7696064500-8">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·462,·SHA:·ffc49ad06eebbf54433c494f45cf57937c983b70b6e0b8f0af715a5e2418cfb0·...·]-2">}</span></code></pre><p>The·record·initially·returned·by·<code·class="inline">megaco:connect/4,5</code>.·It·identifies·a·&quot;virtual&quot;148 </span><span·class="nf">segment_no</span><span·class="p"·data-group-id="4406014015-7">(</span><span·class="p"·data-group-id="4406014015-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="4406014015-8">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·462,·SHA:·f4b63ff90ba56392911dda1b1ff829b4cf0fb016834595d7eac7adf64c716f60·...·]-2">}</span></code></pre><p>The·record·initially·returned·by·<code·class="inline">megaco:connect/4,5</code>.·It·identifies·a·&quot;virtual&quot;
149 connection·and·may·be·reused·after·a·reconnect·(disconnect·+·connect).</p><pre><code·class="text">protocol_version()·=·integer()</code></pre><p>Is·the·actual·protocol·version.·In·most·cases·the·protocol·version·is·retrieved149 connection·and·may·be·reused·after·a·reconnect·(disconnect·+·connect).</p><pre><code·class="text">protocol_version()·=·integer()</code></pre><p>Is·the·actual·protocol·version.·In·most·cases·the·protocol·version·is·retrieved
150 from·the·processed·message,·but·there·are·exceptions:</p><ul><li>When·<code·class="inline">handle_connect/2,3</code>·is·triggered·by·an·explicit·call·to150 from·the·processed·message,·but·there·are·exceptions:</p><ul><li>When·<code·class="inline">handle_connect/2,3</code>·is·triggered·by·an·explicit·call·to
151 <code·class="inline">megaco:connect/4,5</code>.</li><li><a·href="#c:handle_disconnect/3"><code·class="inline">handle_disconnect/3</code></a></li><li><a·href="#c:handle_syntax_error/3"><code·class="inline">handle_syntax_error/3</code></a></li></ul><p>In·these·cases,·the·ProtocolVersion·default·version·is·obtained·from·the·static151 <code·class="inline">megaco:connect/4,5</code>.</li><li><a·href="#c:handle_disconnect/3"><code·class="inline">handle_disconnect/3</code></a></li><li><a·href="#c:handle_syntax_error/3"><code·class="inline">handle_syntax_error/3</code></a></li></ul><p>In·these·cases,·the·ProtocolVersion·default·version·is·obtained·from·the·static
152 connection·configuration:</p><ul><li><code·class="inline">megaco:conn_info(ConnHandle,·protocol_version)</code>.</li></ul>152 connection·configuration:</p><ul><li><code·class="inline">megaco:conn_info(ConnHandle,·protocol_version)</code>.</li></ul>
153 ····</section>153 ····</section>
  
154 </div>154 </div>
1010 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia.epub
3.96 KB
zipinfo {}
    
Offset 1, 26 lines modifiedOffset 1, 26 lines modified
1 Zip·file·size:·220439·bytes,·number·of·entries:·241 Zip·file·size:·220426·bytes,·number·of·entries:·24
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:51·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:26·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·10:51·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·09:26·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····77487·bx·defN·25-Feb-13·10:51·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····77487·bx·defN·25-Feb-13·09:26·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2017·bx·defN·25-Feb-13·10:51·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2017·bx·defN·25-Feb-13·09:26·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····7620·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_registry.xhtml6 ?rw-r--r--··6.1·unx·····7620·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_registry.xhtml
7 ?rw-r--r--··6.1·unx·····6838·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_overview.xhtml7 ?rw-r--r--··6.1·unx·····6838·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_overview.xhtml
8 ?rw-r--r--··6.1·unx····13297·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_frag_hash.xhtml8 ?rw-r--r--··6.1·unx····13297·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_frag_hash.xhtml
9 ?rw-r--r--··6.1·unx·····1788·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_chap8.xhtml9 ?rw-r--r--··6.1·unx·····1788·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_chap8.xhtml
10 ?rw-r--r--··6.1·unx····72223·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_chap7.xhtml10 ?rw-r--r--··6.1·unx····72223·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_chap7.xhtml
11 ?rw-r--r--··6.1·unx···134382·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_chap5.xhtml11 ?rw-r--r--··6.1·unx···134382·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_chap5.xhtml
12 ?rw-r--r--··6.1·unx···116071·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_chap4.xhtml12 ?rw-r--r--··6.1·unx···116071·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_chap4.xhtml
13 ?rw-r--r--··6.1·unx····45236·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_chap3.xhtml13 ?rw-r--r--··6.1·unx····45236·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_chap3.xhtml
14 ?rw-r--r--··6.1·unx···102199·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_chap2.xhtml14 ?rw-r--r--··6.1·unx···102199·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_chap2.xhtml
15 ?rw-r--r--··6.1·unx·····3837·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_chap1.xhtml15 ?rw-r--r--··6.1·unx·····3837·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_chap1.xhtml
16 ?rw-r--r--··6.1·unx····39172·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_app_c.xhtml16 ?rw-r--r--··6.1·unx····39172·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_app_c.xhtml
17 ?rw-r--r--··6.1·unx····74291·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_app_b.xhtml17 ?rw-r--r--··6.1·unx····74291·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_app_b.xhtml
18 ?rw-r--r--··6.1·unx····38867·bx·defN·25-Feb-13·10:51·OEBPS/mnesia_app_a.xhtml18 ?rw-r--r--··6.1·unx····38867·bx·defN·25-Feb-13·09:26·OEBPS/mnesia_app_a.xhtml
19 ?rw-r--r--··6.1·unx···314521·bx·defN·25-Feb-13·10:51·OEBPS/mnesia.xhtml19 ?rw-r--r--··6.1·unx···314521·bx·defN·25-Feb-13·09:26·OEBPS/mnesia.xhtml
20 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-erlang-ESPT6BQV.css20 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:26·OEBPS/dist/epub-erlang-ESPT6BQV.css
21 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-LSJCIYTM.js21 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:26·OEBPS/dist/epub-LSJCIYTM.js
22 ?rw-r--r--··6.1·unx·····3374·bx·defN·25-Feb-13·10:51·OEBPS/content.opf22 ?rw-r--r--··6.1·unx·····3374·bx·defN·25-Feb-13·09:26·OEBPS/content.opf
23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:51·OEBPS/assets/logo.png23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:26·OEBPS/assets/logo.png
24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:51·META-INF/container.xml24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:26·META-INF/container.xml
25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:51·META-INF/com.apple.ibooks.display-options.xml25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:26·META-INF/com.apple.ibooks.display-options.xml
26 24·files,·1075270·bytes·uncompressed,·216217·bytes·compressed:··79.9%26 24·files,·1075270·bytes·uncompressed,·216204·bytes·compressed:··79.9%
134 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:51:46,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:26:40,·uncompressed·size·20,·method=store
3.64 KB
OEBPS/mnesia_registry.xhtml
    
Offset 134, 16 lines modifiedOffset 134, 16 lines modified
134 ··········<pre·translate="no"><span·class="attribute">-spec</span>·create_table(Tab·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>()}])·->·ok.</pre>134 ··········<pre·translate="no"><span·class="attribute">-spec</span>·create_table(Tab·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../lib/../erts/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>()}])·->·ok.</pre>
  
135 ······</div>135 ······</div>
  
136 <section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p><em>This·function·is·deprecated.·Do·not·use·it.</em></p></section><p>A·wrapper·function·for·<a·href="mnesia.xhtml#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>,·which·creates·a·table·(if·there136 <section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p><em>This·function·is·deprecated.·Do·not·use·it.</em></p></section><p>A·wrapper·function·for·<a·href="mnesia.xhtml#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>,·which·creates·a·table·(if·there
137 is·no·existing·table)·with·an·appropriate·set·of·<code·class="inline">attributes</code>.·The·attributes137 is·no·existing·table)·with·an·appropriate·set·of·<code·class="inline">attributes</code>.·The·attributes
138 and·<code·class="inline">TabDef</code>·are·forwarded·to·<a·href="mnesia.xhtml#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>.·For·example,·if·the·table138 and·<code·class="inline">TabDef</code>·are·forwarded·to·<a·href="mnesia.xhtml#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>.·For·example,·if·the·table
139 is·to·reside·as·<code·class="inline">disc_only_copies</code>·on·all·nodes,·a·call·looks·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">··········</samp><samp·class="n">TabDef</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4983225219-1">[</samp><samp·class="p"·data-group-id="4983225219-2">{</samp><samp·class="p"·data-group-id="4983225219-3">{</samp><samp·class="ss">disc_only_copies</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nf">node</samp><samp·class=[·...·truncated·by·diffoscope;·len:·318,·SHA:·73419c263b7b4c93e29529077bd0b71b0ec375c43a89c2b52a64d8792b5acf12·...·]-3">}</samp><samp·class="p">]</samp><samp·class="p">,</samp><samp·class="w">139 is·to·reside·as·<code·class="inline">disc_only_copies</code>·on·all·nodes,·a·call·looks·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">··········</samp><samp·class="n">TabDef</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="1939912302-1">[</samp><samp·class="p"·data-group-id="1939912302-2">{</samp><samp·class="p"·data-group-id="1939912302-3">{</samp><samp·class="ss">disc_only_copies</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nf">node</samp><samp·class=[·...·truncated·by·diffoscope;·len:·318,·SHA:·fb8414c7566d707dd46759bd0617cb02121d97b09e444bdc13fb096a411c4ee8·...·]-3">}</samp><samp·class="p">]</samp><samp·class="p">,</samp><samp·class="w">
140 ··········</samp><samp·class="nc">mnesia_registry</samp><samp·class="p">:</samp><samp·class="nf">create_table</samp><samp·class="p"·data-group-id="4983225219-6">(</samp><samp·class="ss">my_reg</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TabDef</samp><samp·class="p"·data-group-id="4983225219-6">)</samp></code></pre>140 ··········</samp><samp·class="nc">mnesia_registry</samp><samp·class="p">:</samp><samp·class="nf">create_table</samp><samp·class="p"·data-group-id="1939912302-6">(</samp><samp·class="ss">my_reg</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TabDef</samp><samp·class="p"·data-group-id="1939912302-6">)</samp></code></pre>
141 ··</section>141 ··</section>
142 </section>142 </section>
  
143 ········</div>143 ········</div>
144 ······</section>144 ······</section>
  
  
47.0 KB
OEBPS/mnesia_chap7.xhtml
Max HTML report size reached
147 KB
OEBPS/mnesia_chap5.xhtml
Max HTML report size reached
141 KB
OEBPS/mnesia_chap4.xhtml
Max HTML report size reached
51.8 KB
OEBPS/mnesia_chap3.xhtml
Max HTML report size reached
161 KB
OEBPS/mnesia_chap2.xhtml
Max HTML report size reached
68.5 KB
OEBPS/mnesia_app_c.xhtml
Max HTML report size reached
133 KB
OEBPS/mnesia_app_b.xhtml
Max HTML report size reached
63.3 KB
OEBPS/mnesia_app_a.xhtml
Max HTML report size reached
50.6 KB
OEBPS/mnesia.xhtml
Max HTML report size reached
1.23 KB
OEBPS/content.opf
1.2 KB
OEBPS/content.opf
Max HTML report size reached
50.7 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia.html
    
Offset 162, 19 lines modifiedOffset 162, 19 lines modified
162 <code·class="inline">true</code>,·a·majority·of·the·table·replicas·must·be·available·for·an·update·to162 <code·class="inline">true</code>,·a·majority·of·the·table·replicas·must·be·available·for·an·update·to
163 succeed.·Majority·checking·can·be·enabled·on·tables·with·mission-critical163 succeed.·Majority·checking·can·be·enabled·on·tables·with·mission-critical
164 data,·where·it·is·vital·to·avoid·inconsistencies·because·of·network·splits.</p></li><li><p><code·class="inline">snmp</code>.·Each·(set-based)·Mnesia·table·can·be·automatically·turned·into·a164 data,·where·it·is·vital·to·avoid·inconsistencies·because·of·network·splits.</p></li><li><p><code·class="inline">snmp</code>.·Each·(set-based)·Mnesia·table·can·be·automatically·turned·into·a
165 Simple·Network·Management·Protocol·(SNMP)·ordered·table·as·well.·This·property165 Simple·Network·Management·Protocol·(SNMP)·ordered·table·as·well.·This·property
166 specifies·the·types·of·the·SNMP·keys.</p></li><li><p><code·class="inline">attributes</code>.·The·names·of·the·attributes·for·the·records·that·are·inserted·in166 specifies·the·types·of·the·SNMP·keys.</p></li><li><p><code·class="inline">attributes</code>.·The·names·of·the·attributes·for·the·records·that·are·inserted·in
167 the·table.</p></li></ul><p>For·information·about·the·complete·set·of·table·properties·and·their·details,167 the·table.</p></li></ul><p>For·information·about·the·complete·set·of·table·properties·and·their·details,
168 see·<a·href="#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>.</p><p>This·Reference·Manual·uses·a·table·of·persons·to·illustrate·various·examples.168 see·<a·href="#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>.</p><p>This·Reference·Manual·uses·a·table·of·persons·to·illustrate·various·examples.
169 The·following·record·definition·is·assumed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5752267116-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5752267116-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">169 The·following·record·definition·is·assumed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2921847648-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2921847648-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">
170 ·················</span><span·class="ss">age</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">170 ·················</span><span·class="ss">age</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
171 ·················</span><span·class="ss">address</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">unknown</span><span·class="p">,</span><span·class="w">171 ·················</span><span·class="ss">address</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">unknown</span><span·class="p">,</span><span·class="w">
172 ·················</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">172 ·················</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
173 ·················</span><span·class="ss">children</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5752267116-3">[</span><span·class="p"·data-group-id="5752267116-3">]</span><span·class="p"·data-group-id="5752267116-2">}</span><span·class="p"·data-group-id="5752267116-1">)</span><span·class="p">,</span></code></pre><p>The·first·record·attribute·is·the·primary·key,·or·key·for·short.</p><p>The·function·descriptions·are·sorted·in·alphabetical·order.·It·is·recommended·to173 ·················</span><span·class="ss">children</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2921847648-3">[</span><span·class="p"·data-group-id="2921847648-3">]</span><span·class="p"·data-group-id="2921847648-2">}</span><span·class="p"·data-group-id="2921847648-1">)</span><span·class="p">,</span></code></pre><p>The·first·record·attribute·is·the·primary·key,·or·key·for·short.</p><p>The·function·descriptions·are·sorted·in·alphabetical·order.·It·is·recommended·to
174 start·to·read·about·<a·href="#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>,·<a·href="#lock/2"><code·class="inline">mnesia:lock/2</code></a>,·and174 start·to·read·about·<a·href="#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>,·<a·href="#lock/2"><code·class="inline">mnesia:lock/2</code></a>,·and
175 ·<a·href="#activity/4"><code·class="inline">mnesia:activity/4</code></a>·before·you·continue·and·learn·about·the·rest.</p><p>Writing·or·deleting·in·transaction-context·creates·a·local·copy·of·each·modified175 ·<a·href="#activity/4"><code·class="inline">mnesia:activity/4</code></a>·before·you·continue·and·learn·about·the·rest.</p><p>Writing·or·deleting·in·transaction-context·creates·a·local·copy·of·each·modified
176 record·during·the·transaction.·During·iteration,·that·is,·<a·href="#foldl/4"><code·class="inline">mnesia:foldl/4</code></a>,176 record·during·the·transaction.·During·iteration,·that·is,·<a·href="#foldl/4"><code·class="inline">mnesia:foldl/4</code></a>,
177 <a·href="#foldr/4"><code·class="inline">mnesia:foldr/4</code></a>,·<a·href="#next/2"><code·class="inline">mnesia:next/2</code></a>,·<a·href="#prev/2"><code·class="inline">mnesia:prev/2</code></a>,·and·<a·href="#snmp_get_next_index/2"><code·class="inline">mnesia:snmp_get_next_index/2</code></a>,·Mnesia177 <a·href="#foldr/4"><code·class="inline">mnesia:foldr/4</code></a>,·<a·href="#next/2"><code·class="inline">mnesia:next/2</code></a>,·<a·href="#prev/2"><code·class="inline">mnesia:prev/2</code></a>,·and·<a·href="#snmp_get_next_index/2"><code·class="inline">mnesia:snmp_get_next_index/2</code></a>,·Mnesia
178 compensates·for·every·written·or·deleted·record,·which·can·reduce·the178 compensates·for·every·written·or·deleted·record,·which·can·reduce·the
179 performance.</p><p>If·possible,·avoid·writing·or·deleting·records·in·the·same·transaction·before179 performance.</p><p>If·possible,·avoid·writing·or·deleting·records·in·the·same·transaction·before
180 iterating·over·the·table.</p><h2·id="module-configuration-parameters"·class="section-heading">180 iterating·over·the·table.</p><h2·id="module-configuration-parameters"·class="section-heading">
Offset 2793, 15 lines modifiedOffset 2793, 15 lines modified
  
2793 ······<div·class="specs">2793 ······<div·class="specs">
  
2794 ··········<pre·translate="no"><span·class="attribute">-spec</span>·change_table_copy_type(Tab·::·<a·href="#t:table/0">table</a>(),·Node·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:node/0">node</a>(),·To·::·<a·href="#t:storage_type/0">storage_type</a>())·->·<a·href="#t:t_result/1">t_result</a>(ok).</pre>2794 ··········<pre·translate="no"><span·class="attribute">-spec</span>·change_table_copy_type(Tab·::·<a·href="#t:table/0">table</a>(),·Node·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:node/0">node</a>(),·To·::·<a·href="#t:storage_type/0">storage_type</a>())·->·<a·href="#t:t_result/1">t_result</a>(ok).</pre>
  
2795 ······</div>2795 ······</div>
  
2796 <p>Change·the·storage·type·of·a·table.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_copy_type</span><span·class="p"·data-group-id="1930827241-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="1930827241-2">(</span><span·class="p"·data-group-id="1930827241-2">)</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·102,·SHA:·3894793a586451ea4c6e243dc7b101530526cb1da871dd767496d3a7a372f9ae·...·]-1">)</span></code></pre><p>Transforms·the·<code·class="inline">person</code>·table·from·a·RAM·table·into·a·disc-based·table·at2796 <p>Change·the·storage·type·of·a·table.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_copy_type</span><span·class="p"·data-group-id="6153482366-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="6153482366-2">(</span><span·class="p"·data-group-id="6153482366-2">)</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·102,·SHA:·cbab4dfe924a82396dbef0e3f5335397ecd119bfc25060a1f312c7d1446b4fe6·...·]-1">)</span></code></pre><p>Transforms·the·<code·class="inline">person</code>·table·from·a·RAM·table·into·a·disc-based·table·at
2797 <code·class="inline">Node</code>.</p><p>This·function·can·also·be·used·to·change·the·storage·type·of·the·table·named2797 <code·class="inline">Node</code>.</p><p>This·function·can·also·be·used·to·change·the·storage·type·of·the·table·named
2798 <code·class="inline">schema</code>.·The·schema·table·can·only·have·<code·class="inline">ram_copies</code>·or·<code·class="inline">disc_copies</code>·as·the2798 <code·class="inline">schema</code>.·The·schema·table·can·only·have·<code·class="inline">ram_copies</code>·or·<code·class="inline">disc_copies</code>·as·the
2799 storage·type.·If·the·storage·type·of·the·schema·is·<code·class="inline">ram_copies</code>,·no·other·table2799 storage·type.·If·the·storage·type·of·the·schema·is·<code·class="inline">ram_copies</code>,·no·other·table
2800 can·be·disc-resident·on·that·node.</p>2800 can·be·disc-resident·on·that·node.</p>
2801 ··</section>2801 ··</section>
2802 </section>2802 </section>
2803 <section·class="detail"·id="change_table_frag/2">2803 <section·class="detail"·id="change_table_frag/2">
Offset 3032, 30 lines modifiedOffset 3032, 30 lines modified
3032 Therefore·applications·that·use·SNMP·to·manipulate·and·control·the·system·can3032 Therefore·applications·that·use·SNMP·to·manipulate·and·control·the·system·can
3033 be·designed·easily,·since·Mnesia·provides·a·direct·mapping·between·the·logical3033 be·designed·easily,·since·Mnesia·provides·a·direct·mapping·between·the·logical
3034 tables·that·make·up·an·SNMP·control·application·and·the·physical·data·that3034 tables·that·make·up·an·SNMP·control·application·and·the·physical·data·that
3035 makes·up·a·Mnesia·table.</p></li><li><p><code·class="inline">{storage_properties,·[{Backend,·Properties}]</code>·forwards·more·properties·to·the3035 makes·up·a·Mnesia·table.</p></li><li><p><code·class="inline">{storage_properties,·[{Backend,·Properties}]</code>·forwards·more·properties·to·the
3036 back·end·storage.·<code·class="inline">Backend</code>·can·currently·be·<code·class="inline">ets</code>·or·<code·class="inline">dets</code>.·<code·class="inline">Properties</code>·is3036 back·end·storage.·<code·class="inline">Backend</code>·can·currently·be·<code·class="inline">ets</code>·or·<code·class="inline">dets</code>.·<code·class="inline">Properties</code>·is
3037 a·list·of·options·sent·to·the·back·end·storage·during·table·creation.3037 a·list·of·options·sent·to·the·back·end·storage·during·table·creation.
3038 <code·class="inline">Properties</code>·cannot·contain·properties·already·used·by·Mnesia,·such·as·<code·class="inline">type</code>3038 <code·class="inline">Properties</code>·cannot·contain·properties·already·used·by·Mnesia,·such·as·<code·class="inline">type</code>
3039 or·<code·class="inline">named_table</code>.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="6032957952-1">(</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6032957952-2">[</span><span·class="p"·data-group-id="6032957952-3">{</span><span·class="ss">ram_copies</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·688,·SHA:·666d77f6bc6f818cb9a1ccab282acce5d4ddd92e49c6cb82c8b454028b5297b7·...·]2-6">}</span><span·class="p">,</span><span·class="w">3039 or·<code·class="inline">named_table</code>.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="8264280262-1">(</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8264280262-2">[</span><span·class="p"·data-group-id="8264280262-3">{</span><span·class="ss">ram_copies</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·688,·SHA:·e32ffba47e0936489a07c60c320c98c9074ce3016f42295d876823af35a28815·...·]2-6">}</span><span·class="p">,</span><span·class="w">
3040 ·······</span><span·class="p"·data-group-id="6032957952-8">{</span><span·class="ss">storage_properties</span><span·class="p">,</span><span·class="w">3040 ·······</span><span·class="p"·data-group-id="8264280262-8">{</span><span·class="ss">storage_properties</span><span·class="p">,</span><span·class="w">
3041 ········</span><span·class="p"·data-group-id="6032957952-9">[</span><span·class="p"·data-group-id="6032957952-10">{</span><span·class="ss">ets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6032957952-11">[</span><span·class="ss">compressed</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·871,·SHA:·34cecda3b3b2418a80a1239120e6c30f74a1fd9cdb49f5bd0ca2b5c8980c5d17·...·]2-1">)</span></code></pre></li><li><p><code·class="inline">{type,·Type}</code>,·where·<code·class="inline">Type</code>·must·be·either·of·the·atoms·<code·class="inline">set</code>,·<code·class="inline">ordered_set</code>,3041 ········</span><span·class="p"·data-group-id="8264280262-9">[</span><span·class="p"·data-group-id="8264280262-10">{</span><span·class="ss">ets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8264280262-11">[</span><span·class="ss">compressed</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·871,·SHA:·10f8bfcc44546b00c530b6a05358eb599a3888e1a5fcfc8002ce512c104b9b5c·...·]2-1">)</span></code></pre></li><li><p><code·class="inline">{type,·Type}</code>,·where·<code·class="inline">Type</code>·must·be·either·of·the·atoms·<code·class="inline">set</code>,·<code·class="inline">ordered_set</code>,
3042 or·<code·class="inline">bag</code>.·Default·is·<code·class="inline">set</code>.·In·a·<code·class="inline">set</code>,·all·records·have·unique·keys.·In·a3042 or·<code·class="inline">bag</code>.·Default·is·<code·class="inline">set</code>.·In·a·<code·class="inline">set</code>,·all·records·have·unique·keys.·In·a
3043 <code·class="inline">bag</code>,·several·records·can·have·the·same·key,·but·the·record·content·is3043 <code·class="inline">bag</code>,·several·records·can·have·the·same·key,·but·the·record·content·is
3044 unique.·If·a·non-unique·record·is·stored,·the·old·conflicting·records·are3044 unique.·If·a·non-unique·record·is·stored,·the·old·conflicting·records·are
3045 overwritten.</p><p>Notice·that·currently·<code·class="inline">ordered_set</code>·is·not·supported·for·<code·class="inline">disc_only_copies</code>.</p></li><li><p><code·class="inline">{local_content,·Bool}</code>,·where·<code·class="inline">Bool</code>·is·<code·class="inline">true</code>·or·<code·class="inline">false</code>.·Default·is3045 overwritten.</p><p>Notice·that·currently·<code·class="inline">ordered_set</code>·is·not·supported·for·<code·class="inline">disc_only_copies</code>.</p></li><li><p><code·class="inline">{local_content,·Bool}</code>,·where·<code·class="inline">Bool</code>·is·<code·class="inline">true</code>·or·<code·class="inline">false</code>.·Default·is
3046 <code·class="inline">false</code>.</p></li></ul><p>For·example,·the·following·call·creates·the·<code·class="inline">person</code>·table·(defined·earlier)·and3046 <code·class="inline">false</code>.</p></li></ul><p>For·example,·the·following·call·creates·the·<code·class="inline">person</code>·table·(defined·earlier)·and
3047 replicates·it·on·two·nodes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2594822379-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">3047 replicates·it·on·two·nodes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="9385721301-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">
3048 ····</span><span·class="p"·data-group-id="2594822379-2">[</span><span·class="p"·data-group-id="2594822379-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2594822379-4">[</span><span·class="n">N1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N2</span><span·class="p"·data-group-id="2594822379-4">]</span><span·class="p"·data-group-id="2594822379-3">}</span><span·class="p">,</span><span·class="w"> 
3049 ·····</span><span·class="p"·data-group-id="2594822379-5">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2594822379-6">(</span><span·class="ss">fields</[·...·truncated·by·diffoscope;·len:·412,·SHA:·485e995cffb79fa4d389dbec386d42b926fffa925c6f77245c41da0010cd35c3·...·]3048 ····</span><span·class="p"·data-group-id="9385721301-2">[</span><span·class="p"·data-group-id="9385721301-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9385721301-4">[</span><span·cl[·...·truncated·by·diffoscope;·len:·236,·SHA:·15a865fa909335516e13a8f33e7af0ec456768ff34cbdb8c1382cce28399478e·...·]
 3049 ·····</span><span·class="p"·data-group-id="9385721301-5">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="9385721301-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">person</span><span·class="p"·data-group-id="9385721301-6">)</span><span·class="p"·data-group-id="9385721301-5">}</span><span·class="p"·data-group-id="9385721301-2">]</span><span·class="p"·data-group-id="9385721301-1">)</span><span·class="p">.</span></code></pre><p>If·it·is·required·that·Mnesia·must·build·and·maintain·an·extra·index·table·on
3050 attribute·<code·class="inline">address</code>·of·all·the·<code·class="inline">person</code>·records·that·are·inserted·in·the·table,3050 attribute·<code·class="inline">address</code>·of·all·the·<code·class="inline">person</code>·records·that·are·inserted·in·the·table,
3051 the·following·code·would·be·issued:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="9428850748-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">3051 the·following·code·would·be·issued:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4034502073-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">
3052 ····</span><span·class="p"·data-group-id="9428850748-2">[</span><span·class="p"·data-group-id="9428850748-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9428850748-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·c65683693dbe6f61ba4ecef254a20ae3f283ccd9cba47db3d0cfaff355225cdc·...·]-3">}</span><span·class="p">,</span><span·class="w">3052 ····</span><span·class="p"·data-group-id="4034502073-2">[</span><span·class="p"·data-group-id="4034502073-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4034502073-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·30030a61b5d65bbd899f2be43d955918463212de85ba8de73c67516f8a64a32f·...·]-3">}</span><span·class="p">,</span><span·class="w">
3053 ·····</span><span·class="p"·data-group-id="9428850748-5">{</span><span·class="ss">index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9428850748-6">[</span><span·class="ss">address</span><span·class="p"·data-group-id="9428850748-6">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·216ec7eda16442d258ee93b96bcc2f7ec0fb8390c8ea28496eeea6041150f13d·...·]-5">}</span><span·class="p">,</span><span·class="w">3053 ·····</span><span·class="p"·data-group-id="4034502073-5">{</span><span·class="ss">index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4034502073-6">[</span><span·class="ss">address</span><span·class="p"·data-group-id="4034502073-6">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·cad4b1be78512ffdad40a3adedb84044f9daa5e5c9bc1750254f8a291b8b6d5f·...·]-5">}</span><span·class="p">,</span><span·class="w">
3054 ·····</span><span·class="p"·data-group-id="9428850748-7">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="9428850748-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·244,·SHA:·fef56103c2eb4bd0bf4c28a3e243dd40e59e1e07c30dbe702eb91caf0aa7059e·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·specification·of·<code·class="inline">index</code>·and·<code·class="inline">attributes</code>·can·be·hard-coded·as3054 ·····</span><span·class="p"·data-group-id="4034502073-7">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4034502073-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·244,·SHA:·e9d9dd504122c30ae75f3d144edf4d05a978ca235ac8c32383e08ed261f9468f·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·specification·of·<code·class="inline">index</code>·and·<code·class="inline">attributes</code>·can·be·hard-coded·as
3055 <code·class="inline">{index,·[2]}</code>·and·<code·class="inline">{attributes,·[name,·age,·address,·salary,·children]}</code>,3055 <code·class="inline">{index,·[2]}</code>·and·<code·class="inline">{attributes,·[name,·age,·address,·salary,·children]}</code>,
3056 respectively.</p><p><a·href="#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>·writes·records·into·the·table·<code·class="inline">schema</code>.·This·function,3056 respectively.</p><p><a·href="#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>·writes·records·into·the·table·<code·class="inline">schema</code>.·This·function,
3057 and·all·other·schema·manipulation·functions,·are·implemented·with·the·normal3057 and·all·other·schema·manipulation·functions,·are·implemented·with·the·normal
3058 transaction·management·system.·This·guarantees·that·schema·updates·are·performed3058 transaction·management·system.·This·guarantees·that·schema·updates·are·performed
3059 on·all·nodes·in·an·atomic·manner.</p>3059 on·all·nodes·in·an·atomic·manner.</p>
3060 ··</section>3060 ··</section>
3061 </section>3061 </section>
Offset 5155, 18 lines modifiedOffset 5155, 18 lines modified
5155 ······</div>5155 ······</div>
  
5156 <p>Select·the·objects·in·<code·class="inline">Tab</code>·against·<code·class="inline">MatchSpec</code>.</p><p>Matches·the·objects·in·table·<code·class="inline">Tab</code>·using·a·<code·class="inline">match_spec</code>·as·described·in·the5156 <p>Select·the·objects·in·<code·class="inline">Tab</code>·against·<code·class="inline">MatchSpec</code>.</p><p>Matches·the·objects·in·table·<code·class="inline">Tab</code>·using·a·<code·class="inline">match_spec</code>·as·described·in·the
5157 <a·href="../../../../lib/stdlib-6.2/doc/html/ets.html#select/3"><code·class="inline">ets:select/3</code></a>.·Optionally·a·lock·<code·class="inline">read</code>·or·<code·class="inline">write</code>·can·be·given·as·the·third5157 <a·href="../../../../lib/stdlib-6.2/doc/html/ets.html#select/3"><code·class="inline">ets:select/3</code></a>.·Optionally·a·lock·<code·class="inline">read</code>·or·<code·class="inline">write</code>·can·be·given·as·the·third
5158 argument.·Default·is·<code·class="inline">read</code>.·The·return·value·depends·on·<code·class="inline">MatchSpec</code>.</p><p>Notice·that·for·best·performance,·<code·class="inline">select</code>·is·to·be·used·before·any·modifying5158 argument.·Default·is·<code·class="inline">read</code>.·The·return·value·depends·on·<code·class="inline">MatchSpec</code>.</p><p>Notice·that·for·best·performance,·<code·class="inline">select</code>·is·to·be·used·before·any·modifying
5159 operations·are·done·on·that·table·in·the·same·transaction.·That·is,·do·not·use5159 operations·are·done·on·that·table·in·the·same·transaction.·That·is,·do·not·use
5160 <code·class="inline">write</code>·or·<code·class="inline">delete</code>·before·a·<code·class="inline">select</code>.</p><p>In·its·simplest·forms,·the·<code·class="inline">match_spec</code>·look·as·follows:</p><ul><li><code·class="inline">MatchSpec·=·[MatchFunction]</code></li><li><code·class="inline">MatchFunction·=·{MatchHead,·[Guard],·[Result]}</code></li><li><p><code·class="inline">MatchHead·=·tuple()·|·record()</code></p></li><li><code·class="inline">Guard·=·{&quot;Guardtest·name&quot;,·...}</code></li><li><code·class="inline">Result·=·&quot;Term·construct&quot;</code></li></ul><p>For·a·complete·description·of·<code·class="inline">select</code>,·see·the·<a·href="../../../../erts-15.2.2/doc/html/index.html">ERTS</a>5160 <code·class="inline">write</code>·or·<code·class="inline">delete</code>·before·a·<code·class="inline">select</code>.</p><p>In·its·simplest·forms,·the·<code·class="inline">match_spec</code>·look·as·follows:</p><ul><li><code·class="inline">MatchSpec·=·[MatchFunction]</code></li><li><code·class="inline">MatchFunction·=·{MatchHead,·[Guard],·[Result]}</code></li><li><p><code·class="inline">MatchHead·=·tuple()·|·record()</code></p></li><li><code·class="inline">Guard·=·{&quot;Guardtest·name&quot;,·...}</code></li><li><code·class="inline">Result·=·&quot;Term·construct&quot;</code></li></ul><p>For·a·complete·description·of·<code·class="inline">select</code>,·see·the·<a·href="../../../../erts-15.2.2/doc/html/index.html">ERTS</a>
5161 User's·Guide·and·the·<a·href="../../../../lib/stdlib-6.2/doc/html/ets.html"><code·class="inline">ets</code></a>·manual·page·in·STDLIB.</p><p>For·example,·to·find·the·names·of·all·male·persons·older·than·30·in·table·<code·class="inline">Tab</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MatchHead</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2779999499-1">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sex</span><span·class="o">=</span><span·class="ss">male</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·288,·SHA:·d1b85341e5270c436e0815f8b901f013ab0d113ea13a3a9637340a4725324988·...·]-1">}</span><span·class="p">,</span><span·class="w">5161 User's·Guide·and·the·<a·href="../../../../lib/stdlib-6.2/doc/html/ets.html"><code·class="inline">ets</code></a>·manual·page·in·STDLIB.</p><p>For·example,·to·find·the·names·of·all·male·persons·older·than·30·in·table·<code·class="inline">Tab</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MatchHead</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="4353711958-1">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sex</span><span·class="o">=</span><span·class="ss">male</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·288,·SHA:·de49aab5de985f8c9420f2e6038f1c25d5158773b6a16c6a06b1070dda016032·...·]-1">}</span><span·class="p">,</span><span·class="w">
5162 </span><span·class="n">Guard</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2779999499-2">{</span><span·class="ss">&#39;&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">30</span><span·class="p"·data-group-id="2779999[·...·truncated·by·diffoscope;·len:·3,·SHA:·db3defda18fafc0c197740438051c690d98b551a7e449d66390d38fa2db09b77·...·]-2">}</span><span·class="p">,</span><span·class="w">5162 </span><span·class="n">Guard</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4353711958-2">{</span><span·class="ss">&#39;&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">30</span><span·class="p"·data-group-id="4353711[·...·truncated·by·diffoscope;·len:·3,·SHA:·debc96817a3523d6f3cde58b00abaf6480477744625d0b1f4e406e644ae1763b·...·]-2">}</span><span·class="p">,</span><span·class="w">
5163 </span><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">5163 </span><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
5164 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="2779999499-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="p"·data-group-id="2779999499-4">[</span><span·class="p"·data-group-id="2779999499-5">{</span><span·class="n">MatchHead</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·8dce155217c25f919071b826086d41269865a9d87634a2ac60eddf47b7e70e18·...·]-3">)</span><span·class="p">,</span></code></pre>5164 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="4353711958-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="p"·data-group-id="4353711958-4">[</span><span·class="p"·data-group-id="4353711958-5">{</span><span·class="n">MatchHead</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·26d43310685ef8a499cafe5bc63f26348aa2052c773cc60373a67518e68a0f6c·...·]-3">)</span><span·class="p">,</span></code></pre>
5165 ··</section>5165 ··</section>
5166 </section>5166 </section>
5167 <section·class="detail"·id="select/4">5167 <section·class="detail"·id="select/4">
  
5168 ··<div·class="detail-header">5168 ··<div·class="detail-header">
5169 ····<a·href="#select/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">5169 ····<a·href="#select/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
5170 ······<i·class="ri-link-m"·aria-hidden="true"></i>5170 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 5435, 17 lines modifiedOffset 5435, 17 lines modified
5435 information·needed·is·information·about·the·key·types·in·the·table.·Multiple5435 information·needed·is·information·about·the·key·types·in·the·table.·Multiple
5436 keys·cannot·be·handled·in·Mnesia,·but·many·SNMP·tables·have·multiple·keys.5436 keys·cannot·be·handled·in·Mnesia,·but·many·SNMP·tables·have·multiple·keys.
5437 Therefore,·the·following·convention·is·used:·if·a·table·has·multiple·keys,·these5437 Therefore,·the·following·convention·is·used:·if·a·table·has·multiple·keys,·these
5438 must·always·be·stored·as·a·tuple·of·the·keys.·Information·about·the·key·types·is5438 must·always·be·stored·as·a·tuple·of·the·keys.·Information·about·the·key·types·is
5439 specified·as·a·tuple·of·atoms·describing·the·types.·The·only·significant·type·is5439 specified·as·a·tuple·of·atoms·describing·the·types.·The·only·significant·type·is
5440 <code·class="inline">fix_string</code>.·This·means·that·a·string·has·a·fixed·size.</p><p>For·example,·the·following·causes·table·<code·class="inline">person</code>·to·be·ordered·as·an·SNMP·table:</p><pre><code·class="text">mnesia:snmp_open_table(person,·[{key,·string}])</code></pre><p>Consider·the·following·schema·for·a·table·of·company·employees.·Each·employee·is5440 <code·class="inline">fix_string</code>.·This·means·that·a·string·has·a·fixed·size.</p><p>For·example,·the·following·causes·table·<code·class="inline">person</code>·to·be·ordered·as·an·SNMP·table:</p><pre><code·class="text">mnesia:snmp_open_table(person,·[{key,·string}])</code></pre><p>Consider·the·following·schema·for·a·table·of·company·employees.·Each·employee·is
5441 identified·by·department·number·and·name.·The·other·table·column·stores·the5441 identified·by·department·number·and·name.·The·other·table·column·stores·the
5442 telephone·number:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4406162175-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">5442 telephone·number:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="9088627793-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
5443 ····</span><span·class="p"·data-group-id="4406162175-2">[</span><span·class="p"·data-group-id="4406162175-3">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4406162175-4">[</span><span·class="p"·data-group-id="4406162175-5">{</span[·...·truncated·by·diffoscope;·len:·438,·SHA:·cb4792eda742740d39044bc7b81a5437b5320a9b564455a32b9d630a4c2c586e·...·]-3">}</span><span·class="p">,</span><span·class="w">5443 ····</span><span·class="p"·data-group-id="9088627793-2">[</span><span·class="p"·data-group-id="9088627793-3">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9088627793-4">[</span><span·class="p"·data-group-id="9088627793-5">{</span[·...·truncated·by·diffoscope;·len:·438,·SHA:·4fef85cd32db2d32b8c2899baa691337a0d5780ba73b169fc01c4707e9a14d5b·...·]-3">}</span><span·class="p">,</span><span·class="w">
5444 ·····</span><span·class="p"·data-group-id="4406162175-7">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4406162175-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·247,·SHA:·cbdf53448110500aa4704b2b0ab57754719bc8c4351d1825b684334a390db014·...·]-1">)</span><span·class="p">,</span></code></pre><p>The·corresponding·SNMP·table·would·have·three·columns:·<code·class="inline">department</code>,·<code·class="inline">name</code>,·and5444 ·····</span><span·class="p"·data-group-id="9088627793-7">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="9088627793-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·247,·SHA:·21a0bf20a2ebc3a6a3f495cbc3a8be99dbad234fb59d1c6d136ba24d573cb169·...·]-1">)</span><span·class="p">,</span></code></pre><p>The·corresponding·SNMP·table·would·have·three·columns:·<code·class="inline">department</code>,·<code·class="inline">name</code>,·and
5445 <code·class="inline">telno</code>.</p><p>An·option·is·to·have·table·columns·that·are·not·visible·through·the·SNMP5445 <code·class="inline">telno</code>.</p><p>An·option·is·to·have·table·columns·that·are·not·visible·through·the·SNMP
5446 protocol.·These·columns·must·be·the·last·columns·of·the·table.·In·the·previous5446 protocol.·These·columns·must·be·the·last·columns·of·the·table.·In·the·previous
5447 example,·the·SNMP·table·could·have·columns·<code·class="inline">department</code>·and·<code·class="inline">name</code>·only.·The5447 example,·the·SNMP·table·could·have·columns·<code·class="inline">department</code>·and·<code·class="inline">name</code>·only.·The
5448 application·could·then·use·column·<code·class="inline">telno</code>·internally,·but·it·would·not·be5448 application·could·then·use·column·<code·class="inline">telno</code>·internally,·but·it·would·not·be
5449 visible·to·the·SNMP·managers.</p><p>In·a·table·monitored·by·SNMP,·all·elements·must·be·integers,·strings,·or·lists5449 visible·to·the·SNMP·managers.</p><p>In·a·table·monitored·by·SNMP,·all·elements·must·be·integers,·strings,·or·lists
5450 of·integers.</p><p>When·a·table·is·SNMP·ordered,·modifications·are·more·expensive·than·usual,5450 of·integers.</p><p>When·a·table·is·SNMP·ordered,·modifications·are·more·expensive·than·usual,
5451 O(logN).·Also,·more·memory·is·used.</p><p>Notice·that·only·the·lexicographical·SNMP·ordering·is·implemented·in·Mnesia,·not5451 O(logN).·Also,·more·memory·is·used.</p><p>Notice·that·only·the·lexicographical·SNMP·ordering·is·implemented·in·Mnesia,·not
Offset 6008, 43 lines modifiedOffset 6008, 43 lines modified
  
6008 <p>Execute·<code·class="inline">Fun</code>·with·arguments·<code·class="inline">Args</code>·as·a·transaction.</p><p>The·code·that·executes·inside·the·transaction·can·consist·of·a·series·of·table6008 <p>Execute·<code·class="inline">Fun</code>·with·arguments·<code·class="inline">Args</code>·as·a·transaction.</p><p>The·code·that·executes·inside·the·transaction·can·consist·of·a·series·of·table
6009 manipulation·functions.·If·something·goes·wrong·inside·the·transaction·as·a6009 manipulation·functions.·If·something·goes·wrong·inside·the·transaction·as·a
6010 result·of·a·user·error·or·a·certain·table·not·being·available,·the·entire6010 result·of·a·user·error·or·a·certain·table·not·being·available,·the·entire
6011 transaction·is·terminated·and·the·function·<a·href="#transaction/1"><code·class="inline">transaction/1</code></a>6011 transaction·is·terminated·and·the·function·<a·href="#transaction/1"><code·class="inline">transaction/1</code></a>
6012 returns·the·tuple·<code·class="inline">{aborted,·Reason}</code>.</p><p>If·all·is·going·well,·<code·class="inline">{atomic,·ResultOfFun}</code>·is·returned,·where·<code·class="inline">ResultOfFun</code>6012 returns·the·tuple·<code·class="inline">{aborted,·Reason}</code>.</p><p>If·all·is·going·well,·<code·class="inline">{atomic,·ResultOfFun}</code>·is·returned,·where·<code·class="inline">ResultOfFun</code>
6013 is·the·value·of·the·last·expression·in·<code·class="inline">Fun</code>.</p><p>A·function·that·adds·a·family·to·the·database·can·be·written·as·follows·if·there6013 is·the·value·of·the·last·expression·in·<code·class="inline">Fun</code>.</p><p>A·function·that·adds·a·family·to·the·database·can·be·written·as·follows·if·there
6014 is·a·structure·<code·class="inline">{family,·Father,·Mother,·ChildrenList}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">add_family</span><span·class="p"·data-group-id="2049103441-1">(</span><span·class="p"·data-group-id="2049103441-2">{</span><span·class="ss">family</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·c[·...·truncated·by·diffoscope;·len:·166,·SHA:·ab0dc7b0d57613291b4631c56081ea57ca68a0c439d4edd57069152c35114874·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">6014 is·a·structure·<code·class="inline">{family,·Father,·Mother,·ChildrenList}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">add_family</span><span·class="p"·data-group-id="1761571310-1">(</span><span·class="p"·data-group-id="1761571310-2">{</span><span·class="ss">family</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·c[·...·truncated·by·diffoscope;·len:·166,·SHA:·aa73861ed7177f2884328b698929abff4fef0149bc9c2e93ca9f9541b917da98·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
6015 ····</span><span·class="n">ChildOids</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="2049103441-3">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">oid</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Children</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·ca815291dcac79dcad7bfa4dfe19667f692905563f2a35ae1badf54a2cf216b3·...·]-3">)</span><span·class="p">,</span><span·class="w">6015 ····</span><span·class="n">ChildOids</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="1761571310-3">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">oid</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Children</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·3a09f50cc0fedec892d3907ca83a6bea6b004003b56149dffd68be76f2ca05ba·...·]-3">)</span><span·class="p">,</span><span·class="w">
6016 ····</span><span·class="n">Trans</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2049103441-4">(</span><span·class="p"·data-group-id="2049103441-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">6016 ····</span><span·class="n">Trans</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1761571310-4">(</span><span·class="p"·data-group-id="1761571310-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
6017 ········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="2049103441-5">(</span><span·class="n">F</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2049103441-6">{</span><span·class="ss">children</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ChildOids</span><span·class="p"·data-group-id="2049103441-6">}</span><span·class="p"·data-group-id="2049103441-5">)</span><span·class="p">,</span><span·class="w"> 
6018 ········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="2049103441-7">(</span><span·class="n">M</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2049103441-8">{</span><span·class="ss">children</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·129,·SHA:·0b477a3d2f58b0d45bd272a0e8c6e7779fa4ccdf0b68886305d5e91b36e12552·...·]">)</span><span·class="p">,</span><span·class="w">6017 ········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="1761571310-5">(</span><span·class="n">F</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1761571310-6">{</span><span·class="ss">children</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·129,·SHA:·ca831e8db231707fa05d40da3ccd77f9d2bfd23e6ce23cbc2a1fa9a26a214fad·...·]">)</span><span·class="p">,</span><span·class="w">
 6018 ········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="1761571310-7">(</span><span·class="n">M</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1761571310-8">{</span><span·class="ss">children</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ChildOids</span><span·class="p"·data-group-id="1761571310-8">}</span><span·class="p"·data-group-id="1761571310-7">)</span><span·class="p">,</span><span·class="w">
6019 ········</span><span·class="n">Write</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2049103441-9">(</span><span·class="n">Child</span><span·class="p"·data-group-id="2049103441-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write<[·...·truncated·by·diffoscope;·len:·129,·SHA:·0a1b610cafc43565496f27b2e323da4e54417e9d233dae949e89c92ec4c91081·...·]-10">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">6019 ········</span><span·class="n">Write</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1761571310-9">(</span><span·class="n">Child</span><span·class="p"·data-group-id="1761571310-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write<[·...·truncated·by·diffoscope;·len:·129,·SHA:·803961cad39e115db1f8f1a54998cf1605349b62b432ef709d4be788c8ec76c1·...·]-10">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
6020 ········</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foreach</span><span·class="p"·data-group-id="2049103441-11">(</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Children</span><span·class="p"·data-group-id="2049103441-11">)</span><span·class="w">6020 ········</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foreach</span><span·class="p"·data-group-id="1761571310-11">(</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Children</span><span·class="p"·data-group-id="1761571310-11">)</span><span·class="w">
6021 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">6021 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
6022 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="2049103441-12">(</span><span·class="n">Trans</span><span·class="p"·data-group-id="2049103441-12">)</span><span·class="p">.</span><span·class="w">6022 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="1761571310-12">(</span><span·class="n">Trans</span><span·class="p"·data-group-id="1761571310-12">)</span><span·class="p">.</span><span·class="w">
  
6023 </span><span·class="nf">oid</span><span·class="p"·data-group-id="2049103441-13">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="2049103441-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2049103441-14">{</span><span·class="nf">elemen[·...·truncated·by·diffoscope;·len:·542,·SHA:·07d5e2b1fbd49e54c19f276261b6478db029f1f16f156d6e188590e488c713d1·...·]-14">}</span><span·class="p">.</span></code></pre><p>This·code·adds·a·set·of·people·to·the·database.·Running·this·code·within·one6023 </span><span·class="nf">oid</span><span·class="p"·data-group-id="1761571310-13">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="1761571310-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1761571310-14">{</span><span·class="nf">elemen[·...·truncated·by·diffoscope;·len:·542,·SHA:·64355aeaabdf0393b21edf582423408f0e763bd01f281060701a054e9865ecd2·...·]-14">}</span><span·class="p">.</span></code></pre><p>This·code·adds·a·set·of·people·to·the·database.·Running·this·code·within·one
6024 transaction·ensures·that·either·the·whole·family·is·added·to·the·database,·or6024 transaction·ensures·that·either·the·whole·family·is·added·to·the·database,·or
6025 the·whole·transaction·terminates.·For·example,·if·the·last·child·is·badly6025 the·whole·transaction·terminates.·For·example,·if·the·last·child·is·badly
6026 formatted,·or·the·executing·process·terminates·because·of·an·<code·class="inline">'EXIT'</code>·signal6026 formatted,·or·the·executing·process·terminates·because·of·an·<code·class="inline">'EXIT'</code>·signal
Max diff block lines reached; 7198/51824 bytes (13.89%) of diff not shown.
63.6 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_app_a.html
    
Offset 155, 160 lines modifiedOffset 155, 160 lines modified
155 </span><span·class="c1">%%</span><span·class="w">155 </span><span·class="c1">%%</span><span·class="w">
156 </span><span·class="c1">%%·The·NewOpaqueData·arguments·returned·by·restore·callback·functions·will</span><span·class="w">156 </span><span·class="c1">%%·The·NewOpaqueData·arguments·returned·by·restore·callback·functions·will</span><span·class="w">
157 </span><span·class="c1">%%·be·given·as·input·when·the·next·restore·callback·function·is·invoked</span><span·class="w">157 </span><span·class="c1">%%·be·given·as·input·when·the·next·restore·callback·function·is·invoked</span><span·class="w">
158 </span><span·class="c1">%%·If·any·return·value·does·not·match·{ok,·_}·the·restore·will·be·aborted.</span><span·class="w">158 </span><span·class="c1">%%·If·any·return·value·does·not·match·{ok,·_}·the·restore·will·be·aborted.</span><span·class="w">
159 </span><span·class="c1">%%</span><span·class="w">159 </span><span·class="c1">%%</span><span·class="w">
160 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">160 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
161 </span><span·class="w">161 </span><span·class="w">
162 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5321659231-1">(</span><span·class="ss">mnesia_backup</span><span·class="p"·data-group-id="5321659231-1">)</span><span·class="p">.</span><span·class="w">162 </span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0833505058-1">(</span><span·class="ss">mnesia_backup</span><span·class="p"·data-group-id="0833505058-1">)</span><span·class="p">.</span><span·class="w">
163 </span><span·class="w">163 </span><span·class="w">
164 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="5321659231-2">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="5321659231-2">)</span><span·class="p">.</span><span·class="w">164 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0833505058-2">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="0833505058-2">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="w">165 </span><span·class="w">
166 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5321659231-3">(</span><span·class="p"·data-group-id="5321659231-4">[</span><span·class="w">166 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0833505058-3">(</span><span·class="p"·data-group-id="0833505058-4">[</span><span·class="w">
167 »       ·</span><span·class="c1">%%·Write·access</span><span·class="w">167 »       ·</span><span·class="c1">%%·Write·access</span><span·class="w">
168 ·········</span><span·class="ss">open_write</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">168 ·········</span><span·class="ss">open_write</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
169 »       ·</span><span·class="ss">write</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">169 »       ·</span><span·class="ss">write</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
170 »       ·</span><span·class="ss">commit_write</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">170 »       ·</span><span·class="ss">commit_write</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
171 »       ·</span><span·class="ss">abort_write</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">171 »       ·</span><span·class="ss">abort_write</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
  
172 »       ·</span><span·class="c1">%%·Read·access</span><span·class="w">172 »       ·</span><span·class="c1">%%·Read·access</span><span·class="w">
173 ·········</span><span·class="ss">open_read</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">173 ·········</span><span·class="ss">open_read</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
174 »       ·</span><span·class="ss">read</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">174 »       ·</span><span·class="ss">read</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
175 »       ·</span><span·class="ss">close_read</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">175 »       ·</span><span·class="ss">close_read</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">
176 ········</span><span·class="p"·data-group-id="5321659231-4">]</span><span·class="p"·data-group-id="5321659231-3">)</span><span·class="p">.</span><span·class="w">176 ········</span><span·class="p"·data-group-id="0833505058-4">]</span><span·class="p"·data-group-id="0833505058-3">)</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">177 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
178 </span><span·class="c1">%%·Backup·callback·interface</span><span·class="w">178 </span><span·class="c1">%%·Backup·callback·interface</span><span·class="w">
179 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5321659231-5">(</span><span·class="ss">backup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5321659231-6">{</span><span·class="ss">tmp_file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</[·...·truncated·by·diffoscope;·len:·180,·SHA:·86d97a5cbdcfda7263fe9a41d6955fbeba1edec8462781f65ce7de52a3420a62·...·]-5">)</span><span·class="p">.</span><span·class="w">179 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0833505058-5">(</span><span·class="ss">backup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0833505058-6">{</span><span·class="ss">tmp_file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</[·...·truncated·by·diffoscope;·len:·180,·SHA:·b92ce00253412bd2be3039b23bacbdf5ea7e94540907f858e0b4cead1ac1128b·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="c1">%%·Opens·backup·media·for·write</span><span·class="w">180 </span><span·class="c1">%%·Opens·backup·media·for·write</span><span·class="w">
181 </span><span·class="c1">%%</span><span·class="w">181 </span><span·class="c1">%%</span><span·class="w">
182 </span><span·class="c1">%%·Returns·{ok,·OpaqueData}·or·{error,·Reason}</span><span·class="w">182 </span><span·class="c1">%%·Returns·{ok,·OpaqueData}·or·{error,·Reason}</span><span·class="w">
183 </span><span·class="nf">open_write</span><span·class="p"·data-group-id="5321659231-7">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="5321659231-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">183 </span><span·class="nf">open_write</span><span·class="p"·data-group-id="0833505058-7">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="0833505058-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">
185 ····</span><span·class="n">Tmp</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">concat</span><span·class="p"·data-group-id="5321659231-8">(</span><span·class="p"·data-group-id="5321659231-9">[</span><span·class="n">File</span><span·class="p">,</span><span·class="s">&quot;.BUPTMP&quot;</span><span·class="p"·data-group-id="5321659231-9">]</span><span·class="p"·data-group-id="5321[·...·truncated·by·diffoscope;·len:·6,·SHA:·e1d014215ab64568bd0ef3640f6580933c316cb423e576623cb954cf7c72508c·...·]-8">)</span><span·class="p">,</span><span·class="w">185 ····</span><span·class="n">Tmp</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">concat</span><span·class="p"·data-group-id="0833505058-8">(</span><span·class="p"·data-group-id="0833505058-9">[</span><span·class="n">File</span><span·class="p">,</span><span·class="s">&quot;.BUPTMP&quot;</span><span·class="p"·data-group-id="0833505058-9">]</span><span·class="p"·data-group-id="0833[·...·truncated·by·diffoscope;·len:·6,·SHA:·7a93101136034713e092ca7d6addada860f86b565a9442bb52930504dc88be2d·...·]-8">)</span><span·class="p">,</span><span·class="w">
186 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="5321659231-10">(</span><span·class="n">Tmp</span><span·class="p"·data-group-id="5321659231-10">)</span><span·class="p">,</span><span·class="w">186 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="0833505058-10">(</span><span·class="n">Tmp</span><span·class="p"·data-group-id="0833505058-10">)</span><span·class="p">,</span><span·class="w">
187 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="5321659231-11">(</span><span·class="p"·data-group-id="5321659231-12">[</span><span·class="p"·data-group-id="5321659231-13">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·132,·SHA:·14d0ba5352b68af3d278ce3395788c7aaec1928ba00aaa729b47f676ecffdf37·...·]-13">}</span><span·class="p">,</span><span·class="w">187 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="0833505058-11">(</span><span·class="p"·data-group-id="0833505058-12">[</span><span·class="p"·data-group-id="0833505058-13">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·132,·SHA:·218d51e08f69a96f17366f533de35423b641ab70cf6b26f41abd71f2102d7b26·...·]-13">}</span><span·class="p">,</span><span·class="w">
188 »       »       »       </span><span·class="p"·data-group-id="5321659231-15">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tmp</span><span·class="p"·data-group-id="5321659231-15">}</span><span·class="p">,</span><span·class="w">188 »       »       »       </span><span·class="p"·data-group-id="0833505058-15">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tmp</span><span·class="p"·data-group-id="0833505058-15">}</span><span·class="p">,</span><span·class="w">
189 »       »       »       </span><span·class="p"·data-group-id="5321659231-16">{</span><span·class="ss">repair</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="5321659231-16">}</span><span·class="p">,</span><span·class="w">189 »       »       »       </span><span·class="p"·data-group-id="0833505058-16">{</span><span·class="ss">repair</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="0833505058-16">}</span><span·class="p">,</span><span·class="w">
190 »       »       »       </span><span·class="p"·data-group-id="5321659231-17">{</span><span·class="ss">linkto</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="5321659231-18">(</span><span·class="p"·data-group-id="5321659231-18">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·50ef1f3b37ea3551092beae2cf5435e81307c9ea770dd8a8f3ad07172c62a70a·...·]-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">190 »       »       »       </span><span·class="p"·data-group-id="0833505058-17">{</span><span·class="ss">linkto</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0833505058-18">(</span><span·class="p"·data-group-id="0833505058-18">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·4659bef42070ec33206c34012d47b697f658d749c6f9109c4da65da193842fcc·...·]-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
191 »       </span><span·class="p"·data-group-id="5321659231-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5321659231-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 »       </span><span·class="p"·data-group-id="0833505058-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="0833505058-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 »       ····</span><span·class="p"·data-group-id="5321659231-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p"·data-group-id="5321659231-21">{</span><span·class="ss">tmp_file</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·527,·SHA:·d215606724ee8d8c8380e29fffdb3906b51f92cffc171905bc88ddf5cb6e2844·...·]-20">}</span><span·class="p">;</span><span·class="w">192 »       ····</span><span·class="p"·data-group-id="0833505058-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p"·data-group-id="0833505058-21">{</span><span·class="ss">tmp_file</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·527,·SHA:·84bc561363a6d96a3817757c2784debe817e43125408373b4c492316a3e979ff·...·]-20">}</span><span·class="p">;</span><span·class="w">
193 »       </span><span·class="p"·data-group-id="5321659231-22">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 »       </span><span·class="p"·data-group-id="0833505058-22">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 »       ····</span><span·class="p"·data-group-id="5321659231-23">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-23">}</span><span·class="w">194 »       ····</span><span·class="p"·data-group-id="0833505058-23">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-23">}</span><span·class="w">
195 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="c1">%%·Writes·BackupItems·to·the·backup·media</span><span·class="w">196 </span><span·class="c1">%%·Writes·BackupItems·to·the·backup·media</span><span·class="w">
197 </span><span·class="c1">%%</span><span·class="w">197 </span><span·class="c1">%%</span><span·class="w">
198 </span><span·class="c1">%%·Returns·{ok,·OpaqueData}·or·{error,·Reason}</span><span·class="w">198 </span><span·class="c1">%%·Returns·{ok,·OpaqueData}·or·{error,·Reason}</span><span·class="w">
199 </span><span·class="nf">write</span><span·class="p"·data-group-id="5321659231-24">(</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BackupItems</span><span·class="p"·data-group-id="5321659231-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">199 </span><span·class="nf">write</span><span·class="p"·data-group-id="0833505058-24">(</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BackupItems</span><span·class="p"·data-group-id="0833505058-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
200 ····</span><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">200 ····</span><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">
201 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">log_terms</span><span·class="p"·data-group-id="5321659231-25">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BackupItems</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·28f5e35c625a827ddbae6ff6b085f9b1d98649c10b9d3c0c5d65afa88e143d5e·...·]-25">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">201 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">log_terms</span><span·class="p"·data-group-id="0833505058-25">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BackupItems</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·4381e1ad7b1332d915ff57267a74a8ae84e7518fcda270a70c63db439adfe484·...·]-25">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
202 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ············</span><span·class="p"·data-group-id="5321659231-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="5321659231-26">}</span><span·class="p">;</span><span·class="w">203 ············</span><span·class="p"·data-group-id="0833505058-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="0833505058-26">}</span><span·class="p">;</span><span·class="w">
204 ········</span><span·class="p"·data-group-id="5321659231-27">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 ········</span><span·class="p"·data-group-id="0833505058-27">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ············</span><span·class="nf">abort_write</span><span·class="p"·data-group-id="5321659231-28">(</span><span·class="n">B</span><span·class="p"·data-group-id="5321659231-28">)</span><span·class="p">,</span><span·class="w">205 ············</span><span·class="nf">abort_write</span><span·class="p"·data-group-id="0833505058-28">(</span><span·class="n">B</span><span·class="p"·data-group-id="0833505058-28">)</span><span·class="p">,</span><span·class="w">
206 ············</span><span·class="p"·data-group-id="5321659231-29">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-29">}</span><span·class="w">206 ············</span><span·class="p"·data-group-id="0833505058-29">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-29">}</span><span·class="w">
207 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">207 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
208 </span><span·class="c1">%%·Closes·the·backup·media·after·a·successful·backup</span><span·class="w">208 </span><span·class="c1">%%·Closes·the·backup·media·after·a·successful·backup</span><span·class="w">
209 </span><span·class="c1">%%</span><span·class="w">209 </span><span·class="c1">%%</span><span·class="w">
210 </span><span·class="c1">%%·Returns·{ok,·ReturnValueToUser}·or·{error,·Reason}</span><span·class="w">210 </span><span·class="c1">%%·Returns·{ok,·ReturnValueToUser}·or·{error,·Reason}</span><span·class="w">
211 </span><span·class="nf">commit_write</span><span·class="p"·data-group-id="5321659231-30">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="5321659231-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">211 </span><span·class="nf">commit_write</span><span·class="p"·data-group-id="0833505058-30">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="0833505058-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
212 ····</span><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="n">B</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">
213 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">sync</span><span·class="p"·data-group-id="5321659231-31">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p"·data-group-id="5321659231-31">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">213 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">sync</span><span·class="p"·data-group-id="0833505058-31">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p"·data-group-id="0833505058-31">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
214 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="5321659231-32">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p"·data-group-id="5321659231-32">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">215 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="0833505058-32">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p"·data-group-id="0833505058-32">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
216 ················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 ················</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
217 ····················</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="5321659231-33">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file</span><span·class="p"·data-group-id="5321659231-33">)</span><span·class="p">,</span><span·class="w">217 ····················</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="0833505058-33">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file</span><span·class="p"·data-group-id="0833505058-33">)</span><span·class="p">,</span><span·class="w">
218 »       »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">rename</span><span·class="p"·data-group-id="5321659231-34">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">tmp_file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="o">#</span><sp[·...·truncated·by·diffoscope;·len:·120,·SHA:·50d7f9b949a5c853681d11d1fcd3ddbb4eb64933221e235ef15ff03ac21cb867·...·]-34">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">218 »       »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">rename</span><span·class="p"·data-group-id="0833505058-34">(</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">tmp_file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="o">#</span><sp[·...·truncated·by·diffoscope;·len:·120,·SHA:·69ccc4d04813b98964f4838473a807a1bb6c15e7d46a6b88d07d669c5a16b764·...·]-34">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
219 »       »       ·······</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 »       »       ·······</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 »       »       »       ····</span><span·class="p"·data-group-id="5321659231-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·b12624f4077b885394d273b6318d8adb9e5b34e78b5a5385458bc4a884f327e5·...·]-35">}</span><span·class="p">;</span><span·class="w">220 »       »       »       ····</span><span·class="p"·data-group-id="0833505058-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·42dfc23af00ef6be22660cf8cd357ab7976bfb0c57b60c74d47b0f9c3c844e03·...·]-35">}</span><span·class="p">;</span><span·class="w">
221 »       »       ·······</span><span·class="p"·data-group-id="5321659231-36">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-36">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 »       »       ·······</span><span·class="p"·data-group-id="0833505058-36">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-36">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 »       »       »       ····</span><span·class="p"·data-group-id="5321659231-37">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-37">}</span><span·class="w">222 »       »       »       ····</span><span·class="p"·data-group-id="0833505058-37">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-37">}</span><span·class="w">
223 »       »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">223 »       »       ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
224 ················</span><span·class="p"·data-group-id="5321659231-38">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-38">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 ················</span><span·class="p"·data-group-id="0833505058-38">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-38">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 »       »       ····</span><span·class="p"·data-group-id="5321659231-39">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-39">}</span><span·class="w">225 »       »       ····</span><span·class="p"·data-group-id="0833505058-39">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-39">}</span><span·class="w">
226 ············</span><span·class="k">end</span><span·class="p">;</span><span·class="w">226 ············</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
227 ········</span><span·class="p"·data-group-id="5321659231-40">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 ········</span><span·class="p"·data-group-id="0833505058-40">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ············</span><span·class="p"·data-group-id="5321659231-41">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-41">}</span><span·class="w">228 ············</span><span·class="p"·data-group-id="0833505058-41">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-41">}</span><span·class="w">
229 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">229 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
230 </span><span·class="c1">%%·Closes·the·backup·media·after·an·interrupted·backup</span><span·class="w">230 </span><span·class="c1">%%·Closes·the·backup·media·after·an·interrupted·backup</span><span·class="w">
231 </span><span·class="c1">%%</span><span·class="w">231 </span><span·class="c1">%%</span><span·class="w">
232 </span><span·class="c1">%%·Returns·{ok,·ReturnValueToUser}·or·{error,·Reason}</span><span·class="w">232 </span><span·class="c1">%%·Returns·{ok,·ReturnValueToUser}·or·{error,·Reason}</span><span·class="w">
233 </span><span·class="nf">abort_write</span><span·class="p"·data-group-id="5321659231-42">(</span><span·class="n">BackupRef</span><span·class="p"·data-group-id="5321659231-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">233 </span><span·class="nf">abort_write</span><span·class="p"·data-group-id="0833505058-42">(</span><span·class="n">BackupRef</span><span·class="p"·data-group-id="0833505058-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
234 ····</span><span·class="n">Res</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="5321659231-43">(</span><span·class="n">BackupRef</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p"·data-group-id="5321659231-43">)</span><span·class="p">,</span><span·class="w">234 ····</span><span·class="n">Res</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="0833505058-43">(</span><span·class="n">BackupRef</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file_desc</span><span·class="p"·data-group-id="0833505058-43">)</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="5321659231-44">(</span><span·class="n">BackupRef</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">tmp_file</span><span·class="p"·data-group-id="5321659231-44">)</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="0833505058-44">(</span><span·class="n">BackupRef</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">tmp_file</span><span·class="p"·data-group-id="0833505058-44">)</span><span·class="p">,</span><span·class="w">
236 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Res</span><span·class="w">·</span><span·class="k">of</span><span·class="w">236 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Res</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
237 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">237 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 ············</span><span·class="p"·data-group-id="5321659231-45">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BackupRef</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·0410232d9509958335a83f57f86a42f244bac98c1516bdb6c7f73653ae2d045f·...·]-45">}</span><span·class="p">;</span><span·class="w">238 ············</span><span·class="p"·data-group-id="0833505058-45">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BackupRef</span><span·class="o">#</span><span·class="ss">backup</span><span·class="p">.</span><span·class="ss">file</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·2f95afb0cc1cefa68a49c65b76868176ab6570a426a7117ff3b8582e9e43c548·...·]-45">}</span><span·class="p">;</span><span·class="w">
239 ········</span><span·class="p"·data-group-id="5321659231-46">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 ········</span><span·class="p"·data-group-id="0833505058-46">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ············</span><span·class="p"·data-group-id="5321659231-47">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-47">}</span><span·class="w">240 ············</span><span·class="p"·data-group-id="0833505058-47">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-47">}</span><span·class="w">
241 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">241 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
242 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">242 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
243 </span><span·class="c1">%%·Restore·callback·interface</span><span·class="w">243 </span><span·class="c1">%%·Restore·callback·interface</span><span·class="w">
244 </span><span·class="w">244 </span><span·class="w">
245 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5321659231-48">(</span><span·class="ss">restore</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5321659231-49">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file_de[·...·truncated·by·diffoscope;·len:·180,·SHA:·0c88055e0ec02703c17c40dc497a481abe124e60b5ef254bdc6871f4c403d2aa·...·]-48">)</span><span·class="p">.</span><span·class="w">245 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0833505058-48">(</span><span·class="ss">restore</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0833505058-49">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file_de[·...·truncated·by·diffoscope;·len:·180,·SHA:·1d9dd899938b54b1e21f042e4cbfc32a8cc264d2c6139e8cf0ef28312dd760f4·...·]-48">)</span><span·class="p">.</span><span·class="w">
  
246 </span><span·class="c1">%%·Opens·backup·media·for·read</span><span·class="w">246 </span><span·class="c1">%%·Opens·backup·media·for·read</span><span·class="w">
247 </span><span·class="c1">%%</span><span·class="w">247 </span><span·class="c1">%%</span><span·class="w">
248 </span><span·class="c1">%%·Returns·{ok,·OpaqueData}·or·{error,·Reason}</span><span·class="w">248 </span><span·class="c1">%%·Returns·{ok,·OpaqueData}·or·{error,·Reason}</span><span·class="w">
249 </span><span·class="nf">open_read</span><span·class="p"·data-group-id="5321659231-50">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="5321659231-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">249 </span><span·class="nf">open_read</span><span·class="p"·data-group-id="0833505058-50">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="0833505058-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
250 ····</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">250 ····</span><span·class="n">File</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">OpaqueData</span><span·class="p">,</span><span·class="w">
251 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">read_file_info</span><span·class="p"·data-group-id="5321659231-51">(</span><span·class="n">File</span><span·class="p"·data-group-id="5321659231-51">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">251 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">read_file_info</span><span·class="p"·data-group-id="0833505058-51">(</span><span·class="n">File</span><span·class="p"·data-group-id="0833505058-51">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
252 »       </span><span·class="p"·data-group-id="5321659231-52">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-52">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">252 »       </span><span·class="p"·data-group-id="0833505058-52">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-52">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
253 »       ····</span><span·class="p"·data-group-id="5321659231-53">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-53">}</span><span·class="p">;</span><span·class="w">253 »       ····</span><span·class="p"·data-group-id="0833505058-53">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-53">}</span><span·class="p">;</span><span·class="w">
254 »       </span><span·class="p">_</span><span·class="n">FileInfo</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%%·file·exists</span><span·class="w">254 »       </span><span·class="p">_</span><span·class="n">FileInfo</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%%·file·exists</span><span·class="w">
255 »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="5321659231-54">(</span><span·class="p"·data-group-id="5321659231-55">[</span><span·class="p"·data-group-id="5321659231-56">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·eb8f44540f31f00d0912ff482a45adeabffeadf399146b34fdee7beb59b8e9a9·...·]-56">}</span><span·class="p">,</span><span·class="w">255 »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="0833505058-54">(</span><span·class="p"·data-group-id="0833505058-55">[</span><span·class="p"·data-group-id="0833505058-56">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·0e184415ee5ccb19d4ef3ecde34dbe064a0b6a00c490da9ac150f50da4c4eb71·...·]-56">}</span><span·class="p">,</span><span·class="w">
256 »       »       »       »       </span><span·class="p"·data-group-id="5321659231-57">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·data-group-id="5321659231-58">(</span><span·class="p"·data-group-id="5321659231-58">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·e1dfe94ae73e342906e0bb6869b072f86192e44c5f723ee999d9f3d809d37b75·...·]-57">}</span><span·class="p">,</span><span·class="w">256 »       »       »       »       </span><span·class="p"·data-group-id="0833505058-57">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·data-group-id="0833505058-58">(</span><span·class="p"·data-group-id="0833505058-58">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·104cb7f1867e18f4e30be77b12135bb36702dd830ae515725b820fb831baf2d6·...·]-57">}</span><span·class="p">,</span><span·class="w">
257 »       »       »       »       </span><span·class="p"·data-group-id="5321659231-59">{</span><span·class="ss">repair</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="5321659231-59">}</span><span·class="p">,</span><span·class="w">257 »       »       »       »       </span><span·class="p"·data-group-id="0833505058-59">{</span><span·class="ss">repair</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="0833505058-59">}</span><span·class="p">,</span><span·class="w">
258 »       »       »       »       </span><span·class="p"·data-group-id="5321659231-60">{</span><span·class="ss">mode</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">read_only</span><span·class="p"·data-group-id="5321659231-60">}</span><span·class="p">,</span><span·class="w">258 »       »       »       »       </span><span·class="p"·data-group-id="0833505058-60">{</span><span·class="ss">mode</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">read_only</span><span·class="p"·data-group-id="0833505058-60">}</span><span·class="p">,</span><span·class="w">
259 »       »       »       »       </span><span·class="p"·data-group-id="5321659231-61">{</span><span·class="ss">linkto</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="5321659231-62">(</span><span·class="p"·data-group-id="5321659231-62">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·3c755d5b0b30c6c156c0d117ac15e316a92dda0c98fd2198ab13fefe900bca25·...·]-54">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">259 »       »       »       »       </span><span·class="p"·data-group-id="0833505058-61">{</span><span·class="ss">linkto</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="0833505058-62">(</span><span·class="p"·data-group-id="0833505058-62">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·bcebca7ea7eb401de1dc9a6450c551ad32b059d9e07e557d9fcc641e2890514c·...·]-54">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
260 »       »       </span><span·class="p"·data-group-id="5321659231-63">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="5321659231-63">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 »       »       </span><span·class="p"·data-group-id="0833505058-63">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="0833505058-63">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 »       »       ····</span><span·class="p"·data-group-id="5321659231-64">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">restore</span><span·class="p"·data-group-id="5321659231-65">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·330ddd7ccb8fb985bb586b962c831618f18049fcf33b4f192ce3c3ecad42e294·...·]-64">}</span><span·class="p">;</span><span·class="w">261 »       »       ····</span><span·class="p"·data-group-id="0833505058-64">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">restore</span><span·class="p"·data-group-id="0833505058-65">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·60f8b4886b616c2efd386b1f0cd73eab975261b07bd2f330a965ecc0851cbd62·...·]-64">}</span><span·class="p">;</span><span·class="w">
262 »       »       </span><span·class="p"·data-group-id="5321659231-66">{</span><span·class="ss">repaired</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·246,·SHA:·3fd6f5a485ce1b8ab106c2cfe05fa3b6df6f41d32625ba980b10d971a606512f·...·]-66">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">262 »       »       </span><span·class="p"·data-group-id="0833505058-66">{</span><span·class="ss">repaired</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·246,·SHA:·6b8a99613a60d7445a8689eda8fa12ab6822e1f40d267c6625a06ad460897fa3·...·]-66">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
263 »       »       ····</span><span·class="p"·data-group-id="5321659231-68">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">restore</span><span·class="p"·data-group-id="5321659231-69">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·ee686bacad832992c5211a832ec1eccad8b91e248529006e56183d2a5aeb7745·...·]-68">}</span><span·class="p">;</span><span·class="w">263 »       »       ····</span><span·class="p"·data-group-id="0833505058-68">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">restore</span><span·class="p"·data-group-id="0833505058-69">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·8de1da7203d0b13311ca9386156f9c24934389b75b5ba821d46e165cfd3fe237·...·]-68">}</span><span·class="p">;</span><span·class="w">
264 »       »       </span><span·class="p"·data-group-id="5321659231-70">{</span><span·class="ss">repaired</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·57,·SHA:·9b78d541aecf80e420a3fe40f23d0bd34671b4f614fc7f34376fc368a1fb0348·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">264 »       »       </span><span·class="p"·data-group-id="0833505058-70">{</span><span·class="ss">repaired</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·57,·SHA:·0ee0c655a265914114dea66ade5fd0b40de0805e202c594e9ccfa84d25d72634·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
265 »       »       ····</span><span·class="p"·data-group-id="5321659231-71">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">restore</span><span·class="p"·data-group-id="5321659231-72">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·2cc9637acec2abbc3befe09df2ea5f3463b184d6b4fa42aeea9eb23ecce0db26·...·]-71">}</span><span·class="p">;</span><span·class="w">265 »       »       ····</span><span·class="p"·data-group-id="0833505058-71">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">restore</span><span·class="p"·data-group-id="0833505058-72">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·b52ed42b6b9dc668e8691a32e64477dc114c784f9cc11203a2ca9d38c0c08784·...·]-71">}</span><span·class="p">;</span><span·class="w">
266 »       »       </span><span·class="p"·data-group-id="5321659231-73">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">266 »       »       </span><span·class="p"·data-group-id="0833505058-73">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 »       »       ····</span><span·class="p"·data-group-id="5321659231-74">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5321659231-74">}</span><span·class="w">267 »       »       ····</span><span·class="p"·data-group-id="0833505058-74">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="0833505058-74">}</span><span·class="w">
268 »       ····</span><span·class="k">end</span><span·class="w">268 »       ····</span><span·class="k">end</span><span·class="w">
269 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">269 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
270 </span><span·class="c1">%%·Reads·BackupItems·from·the·backup·media</span><span·class="w">270 </span><span·class="c1">%%·Reads·BackupItems·from·the·backup·media</span><span·class="w">
271 </span><span·class="c1">%%</span><span·class="w">271 </span><span·class="c1">%%</span><span·class="w">
272 </span><span·class="c1">%%·Returns·{ok,·OpaqueData,·BackupItems}·or·{error,·Reason}</span><span·class="w">272 </span><span·class="c1">%%·Returns·{ok,·OpaqueData,·BackupItems}·or·{error,·Reason}</span><span·class="w">
Max diff block lines reached; 14518/64973 bytes (22.34%) of diff not shown.
134 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_app_b.html
    
Offset 127, 250 lines modifiedOffset 127, 250 lines modified
  
127 <h2·id="mnesia_access-callback-behavior"·class="section-heading">127 <h2·id="mnesia_access-callback-behavior"·class="section-heading">
128 ··<a·href="#mnesia_access-callback-behavior"·class="hover-link">128 ··<a·href="#mnesia_access-callback-behavior"·class="hover-link">
129 ····<i·class="ri-link-m"·aria-hidden="true"></i>129 ····<i·class="ri-link-m"·aria-hidden="true"></i>
130 ··</a>130 ··</a>
131 ··<span·class="text">mnesia_access·Callback·Behavior</span>131 ··<span·class="text">mnesia_access·Callback·Behavior</span>
132 </h2>132 </h2>
133 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6782471179-1">(</span><span·class="ss">mnesia_frag</span><span·class="p"·data-group-id="6782471179-1">)</span><span·class="p">.</span><span·class="w">133 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5829688572-1">(</span><span·class="ss">mnesia_frag</span><span·class="p"·data-group-id="5829688572-1">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="c1">%%·Callback·functions·when·accessed·within·an·activity</span><span·class="w">134 </span><span·class="c1">%%·Callback·functions·when·accessed·within·an·activity</span><span·class="w">
135 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6782471179-2">(</span><span·class="p"·data-group-id="6782471179-3">[</span><span·class="w">135 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5829688572-2">(</span><span·class="p"·data-group-id="5829688572-3">[</span><span·class="w">
136 »       ·</span><span·class="ss">lock</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">136 »       ·</span><span·class="ss">lock</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">
137 »       ·</span><span·class="ss">write</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete_object</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">137 »       ·</span><span·class="ss">write</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">delete_object</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">
138 »       ·</span><span·class="ss">read</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">match_object</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all_keys</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">138 »       ·</span><span·class="ss">read</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">match_object</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">all_keys</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">
139 »       ·</span><span·class="ss">select</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">select</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">select_cont</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">139 »       ·</span><span·class="ss">select</span><span·class="p">/</span><span·class="mi">5</span><span·class="p">,</span><span·class="ss">select</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="ss">select_cont</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
140 »       ·</span><span·class="ss">index_match_object</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">index_read</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">140 »       ·</span><span·class="ss">index_match_object</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">index_read</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">
141 »       ·</span><span·class="ss">foldl</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foldr</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">table_info</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">141 »       ·</span><span·class="ss">foldl</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foldr</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">table_info</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">
142 »       ·</span><span·class="ss">first</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">next</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prev</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">last</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">142 »       ·</span><span·class="ss">first</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">next</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prev</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">last</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
143 »       ·</span><span·class="ss">clear_table</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">143 »       ·</span><span·class="ss">clear_table</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">
144 ·······</span><span·class="p"·data-group-id="6782471179-3">]</span><span·class="p"·data-group-id="6782471179-2">)</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Callback·functions·which·provides·transparent</span><span·class="w">144 ·······</span><span·class="p"·data-group-id="5829688572-3">]</span><span·class="p"·data-group-id="5829688572-2">)</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Callback·functions·which·provides·transparent</span><span·class="w">
145 </span><span·class="c1">%%·access·of·fragmented·tables·from·any·activity</span><span·class="w">145 </span><span·class="c1">%%·access·of·fragmented·tables·from·any·activity</span><span·class="w">
146 </span><span·class="c1">%%·access·context.</span><span·class="w">146 </span><span·class="c1">%%·access·context.</span><span·class="w">
  
147 </span><span·class="nf">lock</span><span·class="p"·data-group-id="4721153500-1">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4721153500-2">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·277,·SHA:·4a3bd9ad37d2438db750461c8972115e5622d984e5ef9e8124109262b5ca37f2·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">147 </span><span·class="nf">lock</span><span·class="p"·data-group-id="3357484998-1">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3357484998-2">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·277,·SHA:·508ce406774298e606fc4b96adb02bab8708524c949706281b6cedc206addd84·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
148 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="4721153500-3">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">148 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="3357484998-3">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
149 »       </span><span·class="p"·data-group-id="4721153500-4">[</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-4">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 »       </span><span·class="p"·data-group-id="3357484998-4">[</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-4">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 »       ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="4721153500-5">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4721153500-6">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·253,·SHA:·2f7e827e9bbf0b520c6e7e78b0ee8a4446cc214c6268e5e776490bd49ba41357·...·]-5">)</span><span·class="p">;</span><span·class="w">150 »       ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="3357484998-5">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3357484998-6">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·253,·SHA:·8535377c8508a62b2eb9f6023961c155e9ef62603a64e93c607b47e2efd50104·...·]-5">)</span><span·class="p">;</span><span·class="w">
151 »       </span><span·class="n">Frags</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 »       </span><span·class="n">Frags</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
152 »       ····</span><span·class="n">DeepNs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4721153500-7">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="4721153500-8">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Op[·...·truncated·by·diffoscope;·len:·386,·SHA:·94bc62a57de095da928dd7cb3e870abfd075d2b7bc275aa1638a8dc7b0b8ded0·...·]-8">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">152 »       ····</span><span·class="n">DeepNs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3357484998-7">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="3357484998-8">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Op[·...·truncated·by·diffoscope;·len:·386,·SHA:·ce4c9e0a2ffa496814a33b516fa91526d2004b7fe8a934c9ea71fe8106e59e69·...·]-8">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
153 »       »       »       ·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">Frags</span><span·class="p"·data-group-id="4721153500-7">]</span><span·class="p">,</span><span·class="w">153 »       »       »       ·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">Frags</span><span·class="p"·data-group-id="3357484998-7">]</span><span·class="p">,</span><span·class="w">
154 »       ····</span><span·class="nc">mnesia_lib</span><span·class="p">:</span><span·class="nf">uniq</span><span·class="p"·data-group-id="4721153500-10">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="4721153500-11">(</span><span·class="n">DeepNs</span><span·class="p"·data-group-id="4721153500-11">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·919d44a40645c7ba4a181be258d65c49fd5f9163f6831223dad8bae72b78b2e2·...·]-10">)</span><span·class="w">154 »       ····</span><span·class="nc">mnesia_lib</span><span·class="p">:</span><span·class="nf">uniq</span><span·class="p"·data-group-id="3357484998-10">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3357484998-11">(</span><span·class="n">DeepNs</span><span·class="p"·data-group-id="3357484998-11">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·69a2da7dae3cc3c66e4af110dc6fbcd1fc870ef62eadab7fbd78ce61cea07bfb·...·]-10">)</span><span·class="w">
155 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">155 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
  
156 </span><span·class="nf">lock</span><span·class="p"·data-group-id="4721153500-12">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LockItem</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·76,·SHA:·1c0b4e40d53c8c0c08058234cb41067880fb2d726514dc206bac8ea68fcbc9c8·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 </span><span·class="nf">lock</span><span·class="p"·data-group-id="3357484998-12">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LockItem</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·76,·SHA:·1c2866efae2e927d3a6a63e83dcf347ea62ac3c2645c013cff83eb95e0085736·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="4721153500-13">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LockItem</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·76,·SHA:·1c0b4e40d53c8c0c08058234cb41067880fb2d726514dc206bac8ea68fcbc9c8·...·]-13">)</span><span·class="p">.</span><span·class="w">157 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="3357484998-13">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LockItem</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·76,·SHA:·1c2866efae2e927d3a6a63e83dcf347ea62ac3c2645c013cff83eb95e0085736·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
158 </span><span·class="nf">write</span><span·class="p"·data-group-id="4721153500-14">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·8c6530acdbf2845a1a19a30f7c52a55697dce5980d66fd2f7db85d7e59ce6193·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">158 </span><span·class="nf">write</span><span·class="p"·data-group-id="3357484998-14">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·3ab4ef1cb5ba4f86977da4f0ea3c16167bb7e458d727cc0170370ed3730ddef1·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
159 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record_to_frag_name</span><span·class="p"·data-group-id="4721153500-15">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rec</span><span·class="p"·data-group-id="4721153500-15">)</span><span·class="p">,</span><span·class="w">159 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record_to_frag_name</span><span·class="p"·data-group-id="3357484998-15">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rec</span><span·class="p"·data-group-id="3357484998-15">)</span><span·class="p">,</span><span·class="w">
160 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4721153500-16">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·3a08d4d3ec8925dfa78b3a9d9478b0f5206f12b78a9a41e52f118a6957336a37·...·]-16">)</span><span·class="p">.</span><span·class="w">160 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="3357484998-16">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·f0fcfa9bc660bb49080477e8899eb0837e9d27639a27762a3349dadbf2a2936d·...·]-16">)</span><span·class="p">.</span><span·class="w">
  
161 </span><span·class="nf">delete</span><span·class="p"·data-group-id="4721153500-17">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·2f30980f608f2257176d818a6ed721e1cd14c601ea4c5a4eaff3cba3a9a7faee·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 </span><span·class="nf">delete</span><span·class="p"·data-group-id="3357484998-17">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·52702d88926d0e938a98ff5958d3b9badea03c17be4adf3dbb0fd3f6433bd3b6·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">key_to_frag_name</span><span·class="p"·data-group-id="4721153500-18">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="4721153500-18">)</span><span·class="p">,</span><span·class="w">162 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">key_to_frag_name</span><span·class="p"·data-group-id="3357484998-18">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="3357484998-18">)</span><span·class="p">,</span><span·class="w">
163 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="4721153500-19">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·f2a023110aba72ba1e26951b54580ebf544f0948331709c56e3e9a8d20a03707·...·]-19">)</span><span·class="p">.</span><span·class="w">163 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="3357484998-19">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·25278b1be231ea21824837fea39b5c8c6c168cf978be060beaba1933a7fed943·...·]-19">)</span><span·class="p">.</span><span·class="w">
  
164 </span><span·class="nf">delete_object</span><span·class="p"·data-group-id="4721153500-20">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·8c6530acdbf2845a1a19a30f7c52a55697dce5980d66fd2f7db85d7e59ce6193·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">164 </span><span·class="nf">delete_object</span><span·class="p"·data-group-id="3357484998-20">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·3ab4ef1cb5ba4f86977da4f0ea3c16167bb7e458d727cc0170370ed3730ddef1·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
165 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record_to_frag_name</span><span·class="p"·data-group-id="4721153500-21">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rec</span><span·class="p"·data-group-id="4721153500-21">)</span><span·class="p">,</span><span·class="w">165 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">record_to_frag_name</span><span·class="p"·data-group-id="3357484998-21">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rec</span><span·class="p"·data-group-id="3357484998-21">)</span><span·class="p">,</span><span·class="w">
166 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete_object</span><span·class="p"·data-group-id="4721153500-22">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·3a08d4d3ec8925dfa78b3a9d9478b0f5206f12b78a9a41e52f118a6957336a37·...·]-22">)</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete_object</span><span·class="p"·data-group-id="3357484998-22">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·f0fcfa9bc660bb49080477e8899eb0837e9d27639a27762a3349dadbf2a2936d·...·]-22">)</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">read</span><span·class="p"·data-group-id="4721153500-23">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·2f30980f608f2257176d818a6ed721e1cd14c601ea4c5a4eaff3cba3a9a7faee·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 </span><span·class="nf">read</span><span·class="p"·data-group-id="3357484998-23">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·145,·SHA:·52702d88926d0e938a98ff5958d3b9badea03c17be4adf3dbb0fd3f6433bd3b6·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">key_to_frag_name</span><span·class="p"·data-group-id="4721153500-24">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="4721153500-24">)</span><span·class="p">,</span><span·class="w">168 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">key_to_frag_name</span><span·class="p"·data-group-id="3357484998-24">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="3357484998-24">)</span><span·class="p">,</span><span·class="w">
169 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="4721153500-25">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·f2a023110aba72ba1e26951b54580ebf544f0948331709c56e3e9a8d20a03707·...·]-25">)</span><span·class="p">.</span><span·class="w">169 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="3357484998-25">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·146,·SHA:·25278b1be231ea21824837fea39b5c8c6c168cf978be060beaba1933a7fed943·...·]-25">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="nf">match_object</span><span·class="p"·data-group-id="4721153500-26">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·149,·SHA:·989980edc4f34c3870cbbcc1331829364c9031cde9085e38820a4bf51e3da478·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">170 </span><span·class="nf">match_object</span><span·class="p"·data-group-id="3357484998-26">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·149,·SHA:·3973688d864f6e80d505676ba636a1915448e80543ed68c502674dc7844bc242·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
171 ····</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4721153500-27">[</span><span·class="p"·data-group-id="4721153500-28">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4721153500-29">[</span><span·class="p"·data-group-id="4721153500-29">][·...·truncated·by·diffoscope;·len:·294,·SHA:·84535078f064a1811dc4ce9ccaf0335ef3b431b10801761e78f5b9877b8c2385·...·]-27">]</span><span·class="p">,</span><span·class="w">171 ····</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3357484998-27">[</span><span·class="p"·data-group-id="3357484998-28">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3357484998-29">[</span><span·class="p"·data-group-id="3357484998-29">][·...·truncated·by·diffoscope;·len:·294,·SHA:·807de302c877d0819fed0eaa7dda63c60a0b8c67af102f5987768206e445fc96·...·]-27">]</span><span·class="p">,</span><span·class="w">
172 ····</span><span·class="nf">select</span><span·class="p"·data-group-id="4721153500-31">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·151,·SHA:·90effcefc17da37d7c62dddd6019c5220d46245f9718d4313fc3e5c99c7ccff9·...·]-31">)</span><span·class="p">.</span><span·class="w">172 ····</span><span·class="nf">select</span><span·class="p"·data-group-id="3357484998-31">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·151,·SHA:·b858b76c12003d0c2d88986e54604fb6da984de0da9ac801b42244f199b56cf8·...·]-31">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">select</span><span·class="p"·data-group-id="4721153500-32">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·151,·SHA:·90effcefc17da37d7c62dddd6019c5220d46245f9718d4313fc3e5c99c7ccff9·...·]-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="nf">select</span><span·class="p"·data-group-id="3357484998-32">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·151,·SHA:·b858b76c12003d0c2d88986e54604fb6da984de0da9ac801b42244f199b56cf8·...·]-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="nf">do_select</span><span·class="p"·data-group-id="4721153500-33">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·151,·SHA:·90effcefc17da37d7c62dddd6019c5220d46245f9718d4313fc3e5c99c7ccff9·...·]-33">)</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="nf">do_select</span><span·class="p"·data-group-id="3357484998-33">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·151,·SHA:·b858b76c12003d0c2d88986e54604fb6da984de0da9ac801b42244f199b56cf8·...·]-33">)</span><span·class="p">.</span><span·class="w">
  
  
175 </span><span·class="nf">select</span><span·class="p"·data-group-id="4721153500-34">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·227,·SHA:·ade26276e48d8566070402b998d4a653906fae7be9a341289d8f3191f0f80afb·...·]-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 </span><span·class="nf">select</span><span·class="p"·data-group-id="3357484998-34">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·227,·SHA:·9f5737986a6569c9f39ba2ecad734524f469e900f0eec94cd8777085e9d0ab07·...·]-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="nf">init_select</span><span·class="p"·data-group-id="4721153500-35">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·227,·SHA:·ade26276e48d8566070402b998d4a653906fae7be9a341289d8f3191f0f80afb·...·]-35">)</span><span·class="p">.</span><span·class="w">176 ····</span><span·class="nf">init_select</span><span·class="p"·data-group-id="3357484998-35">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·227,·SHA:·9f5737986a6569c9f39ba2ecad734524f469e900f0eec94cd8777085e9d0ab07·...·]-35">)</span><span·class="p">.</span><span·class="w">
  
  
177 </span><span·class="nf">all_keys</span><span·class="p"·data-group-id="4721153500-36">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·71,·SHA:·85cecf870f89cf2e1156c852d8c3814e8c43d71a801057ee6dada33ead09754e·...·]-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">177 </span><span·class="nf">all_keys</span><span·class="p"·data-group-id="3357484998-36">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·71,·SHA:·488b5e858a59f204de24b5979b14af7d0a449efaf2f1dec03a82c197c34020e9·...·]-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4721153500-37">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">all_keys</span><span·class="p"·data-group-id="4721153500-38">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·212,·SHA:·c3586735ad59a5b7bc8dc3e1a0a7b98b2392745958b977fc080c23b9055f0b82·...·]-38">)</span><span·class="w">178 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3357484998-37">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">all_keys</span><span·class="p"·data-group-id="3357484998-38">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·212,·SHA:·560570734d8c3fd7715327ed3bcd05e52b43eba9e53999e71090d7cb74e89e4e·...·]-38">)</span><span·class="w">
179 »       ·····</span><span·class="p">||</span><span·class="w">·</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="4721153500-39">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-39">)</span><span·class="p"·data-group-id="4721153500-37">]</span><span·class="p">,</span><span·class="w">179 »       ·····</span><span·class="p">||</span><span·class="w">·</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="3357484998-39">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-39">)</span><span·class="p"·data-group-id="3357484998-37">]</span><span·class="p">,</span><span·class="w">
180 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="4721153500-40">(</span><span·class="n">Match</span><span·class="p"·data-group-id="4721153500-40">)</span><span·class="p">.</span><span·class="w">180 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3357484998-40">(</span><span·class="n">Match</span><span·class="p"·data-group-id="3357484998-40">)</span><span·class="p">.</span><span·class="w">
  
181 </span><span·class="nf">clear_table</span><span·class="p"·data-group-id="4721153500-41">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·66,·SHA:·14ddf2efd4232d766c493cf7f5bcf62acdc756ea2bec963339d2f32ea12433ae·...·]-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">181 </span><span·class="nf">clear_table</span><span·class="p"·data-group-id="3357484998-41">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·66,·SHA:·41fd7cec7687a0132b9c27a7afdf66eb07d1572d8ef4c0583725947d196fef02·...·]-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
182 ····</span><span·class="p"·data-group-id="4721153500-42">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">clear_table</span><span·class="p"·data-group-id="4721153500-43">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·609,·SHA:·880d39d899d50bc965ae3639cfa9772b3eff5ea655794e203f4c8e71b8bc8b8f·...·]-42">]</span><span·class="p">,</span><span·class="w">182 ····</span><span·class="p"·data-group-id="3357484998-42">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">clear_table</span><span·class="p"·data-group-id="3357484998-43">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·609,·SHA:·62cc6f42d0ccb2bffbb614c4e7e792c038cdc8c99610bbb9e09729785a5c63c8·...·]-42">]</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">183 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="4721153500-45">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·220,·SHA:·d575bc929b5fb5ecf4ffea0e44e37277e602062a2ca28d185565e92b221ef104·...·]-45">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 </span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="3357484998-45">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·220,·SHA:·c41f1fce93588310422b6d620aea2666e55a8e0c5bc3600a2a391fb87717722e·...·]-45">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">185 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
186 »       </span><span·class="p"·data-group-id="4721153500-46">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="4721153500-47">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·371,·SHA:·edad073b9190e443932fa038f1a80b3772cb73014176d72ecb134ab7fd590907·...·]-47">)</span><span·class="w">186 »       </span><span·class="p"·data-group-id="3357484998-46">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="3357484998-47">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·371,·SHA:·ab07e9dbffdd2dd2c3a6fd7bbe67047edf310c550e7f9e423d03135feae56799·...·]-47">)</span><span·class="w">
187 »       ·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="4721153500-48">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-48">)</span><span·class="p"·data-group-id="4721153500-46">]</span><span·class="p">,</span><span·class="w">187 »       ·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="3357484998-48">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-48">)</span><span·class="p"·data-group-id="3357484998-46">]</span><span·class="p">,</span><span·class="w">
188 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="4721153500-49">(</span><span·class="n">Match</span><span·class="p"·data-group-id="4721153500-49">)</span><span·class="p">.</span><span·class="w">188 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3357484998-49">(</span><span·class="n">Match</span><span·class="p"·data-group-id="3357484998-49">)</span><span·class="p">.</span><span·class="w">
  
189 </span><span·class="nf">index_read</span><span·class="p"·data-group-id="4721153500-50">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·220,·SHA:·bf7364216390214b0c053e1d1881ee07ac1740da203c6c93d8d5d977d212c0a7·...·]-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 </span><span·class="nf">index_read</span><span·class="p"·data-group-id="3357484998-50">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·220,·SHA:·c4eab68a99106a390fd6f07fddee7c68d61bb848db0d9b0a55f7e515535017f3·...·]-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">190 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
191 »       </span><span·class="p"·data-group-id="4721153500-51">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_read</span><span·class="p"·data-group-id="4721153500-52">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·363,·SHA:·a9fa78fe602d97f49312eafbf2851546f0297e31f568d353d96442714882664c·...·]-52">)</span><span·class="w">191 »       </span><span·class="p"·data-group-id="3357484998-51">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_read</span><span·class="p"·data-group-id="3357484998-52">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·363,·SHA:·9f0e287bf45c45abd67042714a6ffa3e49807c22bbfbec83fc4b6dd90e42ee3d·...·]-52">)</span><span·class="w">
192 »       ·····</span><span·class="p">||</span><span·class="w">·</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="4721153500-53">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-53">)</span><span·class="p"·data-group-id="4721153500-51">]</span><span·class="p">,</span><span·class="w">192 »       ·····</span><span·class="p">||</span><span·class="w">·</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="3357484998-53">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-53">)</span><span·class="p"·data-group-id="3357484998-51">]</span><span·class="p">,</span><span·class="w">
193 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="4721153500-54">(</span><span·class="n">Match</span><span·class="p"·data-group-id="4721153500-54">)</span><span·class="p">.</span><span·class="w">193 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3357484998-54">(</span><span·class="n">Match</span><span·class="p"·data-group-id="3357484998-54">)</span><span·class="p">.</span><span·class="w">
  
194 </span><span·class="nf">foldl</span><span·class="p"·data-group-id="4721153500-55">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·219,·SHA:·9cc902f221a8d59c353bf2bd0dce5f8121dd774b14effa4a3f6d05ab610ad3b9·...·]-55">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 </span><span·class="nf">foldl</span><span·class="p"·data-group-id="3357484998-55">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·219,·SHA:·5344c73aa07046de5d8d32a3942b140585286a23a7493a9ebf74bb276cec68f0·...·]-55">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ····</span><span·class="n">Fun2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4721153500-56">(</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="4721153500-56">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 ····</span><span·class="n">Fun2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3357484998-56">(</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="3357484998-56">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 »       »       ···</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="4721153500-57">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·1a9e74f6c960fd2d1cffdfe11574c4f6b5710ece0f43458fed7a992e7ab2bb52·...·]-57">)</span><span·class="w">196 »       »       ···</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="3357484998-57">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·ddc7fcf2bd4620aae2f90f16cbb2896202cc7519294e9ad07f8297ed174af762·...·]-57">)</span><span·class="w">
197 »       ···</span><span·class="k">end</span><span·class="p">,</span><span·class="w">197 »       ···</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
198 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="4721153500-58">(</span><span·class="n">Fun2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="4721153500-59">(</s[·...·truncated·by·diffoscope;·len:·125,·SHA:·462777d552f79283bfd8df17aa984ad072eb7ecee0b028a50ebd167e7915cb26·...·]-58">)</span><span·class="p">.</span><span·class="w">198 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="3357484998-58">(</span><span·class="n">Fun2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="3357484998-59">(</s[·...·truncated·by·diffoscope;·len:·125,·SHA:·b06f7abf417c188209bbef02d11e15671d6216ef617e0320f29c744b72fc8033·...·]-58">)</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">foldr</span><span·class="p"·data-group-id="4721153500-60">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·219,·SHA:·9cc902f221a8d59c353bf2bd0dce5f8121dd774b14effa4a3f6d05ab610ad3b9·...·]-60">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">199 </span><span·class="nf">foldr</span><span·class="p"·data-group-id="3357484998-60">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·219,·SHA:·5344c73aa07046de5d8d32a3942b140585286a23a7493a9ebf74bb276cec68f0·...·]-60">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
200 ····</span><span·class="n">Fun2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4721153500-61">(</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="4721153500-61">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 ····</span><span·class="n">Fun2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3357484998-61">(</span><span·class="n">Frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p"·data-group-id="3357484998-61">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 »       »       ···</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="4721153500-62">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·1a9e74f6c960fd2d1cffdfe11574c4f6b5710ece0f43458fed7a992e7ab2bb52·...·]-62">)</span><span·class="w">201 »       »       ···</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="3357484998-62">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·ddc7fcf2bd4620aae2f90f16cbb2896202cc7519294e9ad07f8297ed174af762·...·]-62">)</span><span·class="w">
202 »       ···</span><span·class="k">end</span><span·class="p">,</span><span·class="w">202 »       ···</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="4721153500-63">(</span><span·class="n">Fun2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="4721153500-64">(</s[·...·truncated·by·diffoscope;·len:·125,·SHA:·587f30837d998b86c12d94d1d9a7c792a2b439c9f1aee12ebf32305eaa7c387d·...·]-63">)</span><span·class="p">.</span><span·class="w">203 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="3357484998-63">(</span><span·class="n">Fun2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="3357484998-64">(</s[·...·truncated·by·diffoscope;·len:·125,·SHA:·3abb8959e4c77b3c33fcecee96744b7053aa635af5bff1f5ae563c27dc66e0e0·...·]-63">)</span><span·class="p">.</span><span·class="w">
  
204 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="4721153500-65">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4721153500-66">{</span><span·class="n">Tab</[·...·truncated·by·diffoscope;·len:·249,·SHA:·d3bc298e815c9915c45ff8ec85e3e06ee36a6c179012d9c45433be40118c48d4·...·]-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="3357484998-65">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3357484998-66">{</span><span·class="n">Tab</[·...·truncated·by·diffoscope;·len:·249,·SHA:·284f0c8301f7441761be19cc983273740192d19b94025e4e6999d5abf558e6d7·...·]-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">key_to_frag_name</span><span·class="p"·data-group-id="4721153500-67">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="4721153500-67">)</span><span·class="p">,</span><span·class="w">205 ····</span><span·class="n">Frag</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">key_to_frag_name</span><span·class="p"·data-group-id="3357484998-67">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="3357484998-67">)</span><span·class="p">,</span><span·class="w">
206 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="4721153500-68">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·142,·SHA:·6d8aefb0cdc685c75cf67d8ce777f40d61e5125ad69e40237678c37e8bbcd77d·...·]-68">)</span><span·class="p">;</span><span·class="w">206 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="3357484998-68">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·142,·SHA:·144126956cb9dfd2d296097e8067ce23dfd373ebd1f092a7f7f4730f83389e7c·...·]-68">)</span><span·class="p">;</span><span·class="w">
207 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="4721153500-69">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·67,·SHA:·b119f079193768ff417653eb12682607a7e27cf395fba5c76e27f922094856a2·...·]-69">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">207 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="3357484998-69">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·67,·SHA:·f94a8e6361d437899dddd6c0af24ed492686c2451cced2353d2177e4ff90cf00·...·]-69">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
208 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="4721153500-70">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·141,·SHA:·bae8a779958722794a89002a45fba7944204b85f169c50f1584c5ec18272f95f·...·]-70">)</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="3357484998-70">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·141,·SHA:·a382ccd51f4ed0b739bcc61b0ff65cad903d3f2d8e990b02ad864d431bd4ca25·...·]-70">)</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="nf">table_info2</span><span·class="p"·data-group-id="4721153500-71">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·142,·SHA:·6d8aefb0cdc685c75cf67d8ce777f40d61e5125ad69e40237678c37e8bbcd77d·...·]-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">209 </span><span·class="nf">table_info2</span><span·class="p"·data-group-id="3357484998-71">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Opaque</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·142,·SHA:·144126956cb9dfd2d296097e8067ce23dfd373ebd1f092a7f7f4730f83389e7c·...·]-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
210 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Item</span><span·class="w">·</span><span·class="k">of</span><span·class="w">210 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Item</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
211 »       </span><span·class="nb">size</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">211 »       </span><span·class="nb">size</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
212 »       ····</span><span·class="n">SumFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4721153500-72">(</span><span·class="p"·data-group-id="4721153500-73">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="4721153500-73">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·89,·SHA:·e7f1544187ad0447631ba6698ca4a0beb066f7c19ebb8d35577d19a782a8cfcb·...·]-72">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Size</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">212 »       ····</span><span·class="n">SumFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3357484998-72">(</span><span·class="p"·data-group-id="3357484998-73">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="3357484998-73">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·89,·SHA:·9a2f465f70e8b0b687808c4987303f7ae8d5ddf7ec27cb5740d3803d8b7c9ccc·...·]-72">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Size</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
213 »       ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="4721153500-74">(</span><span·class="n">SumFun</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_size</span><span·class="p"·data-group-id="4721153500-75">(</s[·...·truncated·by·diffoscope;·len:·283,·SHA:·a3e0fa71b8a30762c62ed4fa0bf5193b15aec3b1c9248fd688ed47d8db44cd5d·...·]-74">)</span><span·class="p">;</span><span·class="w">213 »       ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="3357484998-74">(</span><span·class="n">SumFun</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_size</span><span·class="p"·data-group-id="3357484998-75">(</s[·...·truncated·by·diffoscope;·len:·283,·SHA:·564247e897ba916eb13b5c315e850da0d36c1c7a487cded6b897d5a489249edd·...·]-74">)</span><span·class="p">;</span><span·class="w">
214 »       </span><span·class="nb">memory</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 »       </span><span·class="nb">memory</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 »       ····</span><span·class="n">SumFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4721153500-76">(</span><span·class="p"·data-group-id="4721153500-77">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="4721153500-77">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·89,·SHA:·e7f1544187ad0447631ba6698ca4a0beb066f7c19ebb8d35577d19a782a8cfcb·...·]-76">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Size</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">215 »       ····</span><span·class="n">SumFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3357484998-76">(</span><span·class="p"·data-group-id="3357484998-77">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="3357484998-77">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·89,·SHA:·9a2f465f70e8b0b687808c4987303f7ae8d5ddf7ec27cb5740d3803d8b7c9ccc·...·]-76">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Size</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
216 »       ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="4721153500-78">(</span><span·class="n">SumFun</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_memory</span><span·class="p"·data-group-id="4721153500-79">(<[·...·truncated·by·diffoscope;·len:·285,·SHA:·d0526c2c55af34f65ef97bac56dd60297e45a68f6f2b284f2865930d0d83b6ec·...·]-78">)</span><span·class="p">;</span><span·class="w">216 »       ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="3357484998-78">(</span><span·class="n">SumFun</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">frag_memory</span><span·class="p"·data-group-id="3357484998-79">(<[·...·truncated·by·diffoscope;·len:·285,·SHA:·2971d1bed9ae37afcfe4379e80f20b897992e78582b8b27fd000d23422610c87·...·]-78">)</span><span·class="p">;</span><span·class="w">
217 »       </span><span·class="ss">base_table</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 »       </span><span·class="ss">base_table</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 »       ····</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="4721153500-80">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">base_table</span><span·class="p"·data-group-id="4721153500-80">)</span><span·class="p">;</span><span·class="w">218 »       ····</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="3357484998-80">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">base_table</span><span·class="p"·data-group-id="3357484998-80">)</span><span·class="p">;</span><span·class="w">
219 »       </span><span·class="ss">node_pool</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 »       </span><span·class="ss">node_pool</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 »       ····</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="4721153500-81">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node_pool</span><span·class="p"·data-group-id="4721153500-81">)</span><span·class="p">;</span><span·class="w">220 »       ····</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="3357484998-81">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node_pool</span><span·class="p"·data-group-id="3357484998-81">)</span><span·class="p">;</span><span·class="w">
221 »       </span><span·class="ss">n_fragments</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 »       </span><span·class="ss">n_fragments</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 »       ····</span><span·class="n">FH</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">lookup_frag_hash</span><span·class="p"·data-group-id="4721153500-82">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-82">)</span><span·class="p">,</span><span·class="w">222 »       ····</span><span·class="n">FH</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">lookup_frag_hash</span><span·class="p"·data-group-id="3357484998-82">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-82">)</span><span·class="p">,</span><span·class="w">
223 »       ····</span><span·class="n">FH</span><span·class="o">#</span><span·class="ss">frag_state</span><span·class="p">.</span><span·class="ss">n_fragments</span><span·class="p">;</span><span·class="w">223 »       ····</span><span·class="n">FH</span><span·class="o">#</span><span·class="ss">frag_state</span><span·class="p">.</span><span·class="ss">n_fragments</span><span·class="p">;</span><span·class="w">
224 »       </span><span·class="ss">foreign_key</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 »       </span><span·class="ss">foreign_key</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 »       ····</span><span·class="n">FH</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">lookup_frag_hash</span><span·class="p"·data-group-id="4721153500-83">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-83">)</span><span·class="p">,</span><span·class="w">225 »       ····</span><span·class="n">FH</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">lookup_frag_hash</span><span·class="p"·data-group-id="3357484998-83">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-83">)</span><span·class="p">,</span><span·class="w">
226 »       ····</span><span·class="n">FH</span><span·class="o">#</span><span·class="ss">frag_state</span><span·class="p">.</span><span·class="ss">foreign_key</span><span·class="p">;</span><span·class="w">226 »       ····</span><span·class="n">FH</span><span·class="o">#</span><span·class="ss">frag_state</span><span·class="p">.</span><span·class="ss">foreign_key</span><span·class="p">;</span><span·class="w">
227 »       </span><span·class="ss">foreigners</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 »       </span><span·class="ss">foreigners</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 »       ····</span><span·class="nf">lookup_foreigners</span><span·class="p"·data-group-id="4721153500-84">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="4721153500-84">)</span><span·class="p">;</span><span·class="w">228 »       ····</span><span·class="nf">lookup_foreigners</span><span·class="p"·data-group-id="3357484998-84">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="3357484998-84">)</span><span·class="p">;</span><span·class="w">
229 »       </span><span·class="ss">n_ram_copies</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 »       </span><span·class="ss">n_ram_copies</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 »       ····</span><span·class="nf">length</span><span·class="p"·data-group-id="4721153500-85">(</span><span·class="nf">val</span><span·class="p"·data-group-id="4721153500-86">(</span><span·class="p"·data-group-id="4721153500-87">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ram_cop[·...·truncated·by·diffoscope;·len:·159,·SHA:·406c8f2f0d30df8bef1e9780f250cdffad76acab365abd80f4f9c44ed7651cbb·...·]-85">)</span><span·class="p">;</span><span·class="w">230 »       ····</span><span·class="nf">length</span><span·class="p"·data-group-id="3357484998-85">(</span><span·class="nf">val</span><span·class="p"·data-group-id="3357484998-86">(</span><span·class="p"·data-group-id="3357484998-87">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ram_cop[·...·truncated·by·diffoscope;·len:·159,·SHA:·596a18d0281315768a85363d819319c155896ac53800f29464af036edb1f5b50·...·]-85">)</span><span·class="p">;</span><span·class="w">
231 »       </span><span·class="ss">n_disc_copies</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 »       </span><span·class="ss">n_disc_copies</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 »       ····</span><span·class="nf">length</span><span·class="p"·data-group-id="4721153500-88">(</span><span·class="nf">val</span><span·class="p"·data-group-id="4721153500-89">(</span><span·class="p"·data-group-id="4721153500-90">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disc_co[·...·truncated·by·diffoscope;·len:·160,·SHA:·611020d82f3caa2c304492c5dcd31b341f6534f0a9af978036b793d793923b4b·...·]-88">)</span><span·class="p">;</span><span·class="w">232 »       ····</span><span·class="nf">length</span><span·class="p"·data-group-id="3357484998-88">(</span><span·class="nf">val</span><span·class="p"·data-group-id="3357484998-89">(</span><span·class="p"·data-group-id="3357484998-90">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disc_co[·...·truncated·by·diffoscope;·len:·160,·SHA:·463777bcefd2293262507a179e071a44cc7604837262458bc681780011eafa11·...·]-88">)</span><span·class="p">;</span><span·class="w">
Max diff block lines reached; 58921/136552 bytes (43.15%) of diff not shown.
68.8 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_app_c.html
    
Offset 127, 144 lines modifiedOffset 127, 144 lines modified
  
127 <h2·id="mnesia_frag_hash-callback-behavior"·class="section-heading">127 <h2·id="mnesia_frag_hash-callback-behavior"·class="section-heading">
128 ··<a·href="#mnesia_frag_hash-callback-behavior"·class="hover-link">128 ··<a·href="#mnesia_frag_hash-callback-behavior"·class="hover-link">
129 ····<i·class="ri-link-m"·aria-hidden="true"></i>129 ····<i·class="ri-link-m"·aria-hidden="true"></i>
130 ··</a>130 ··</a>
131 ··<span·class="text">mnesia_frag_hash·Callback·Behavior</span>131 ··<span·class="text">mnesia_frag_hash·Callback·Behavior</span>
132 </h2>132 </h2>
133 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6220935626-1">(</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="6220935626-1">)</span><span·class="p">.</span><span·class="w">133 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1716477429-1">(</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="1716477429-1">)</span><span·class="p">.</span><span·class="w">
134 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="6220935626-2">(</span><span·class="p"·data-group-id="6220935626-3">[</span><span·class="p"·data-group-id="6220935626-4">{</span><span·class="ss">nowarn_deprecated_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·461,·SHA:·be32670b38648f006d2b12e7cebfca88575443bff218949854ab0f0f7681d94b·...·]-2">)</span><span·class="p">.</span><span·class="w">134 </span><span·class="p">-</span><span·class="na">compile</span><span·class="p"·data-group-id="1716477429-2">(</span><span·class="p"·data-group-id="1716477429-3">[</span><span·class="p"·data-group-id="1716477429-4">{</span><span·class="ss">nowarn_deprecated_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·461,·SHA:·871152ab1006f1c43d2fb1f2516115592bb7643dbb75297f35de86e77a4ea1cf·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
135 </span><span·class="c1">%%·Fragmented·Table·Hashing·callback·functions</span><span·class="w">135 </span><span·class="c1">%%·Fragmented·Table·Hashing·callback·functions</span><span·class="w">
136 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6220935626-7">(</span><span·class="p"·data-group-id="6220935626-8">[</span><span·class="w">136 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1716477429-7">(</span><span·class="p"·data-group-id="1716477429-8">[</span><span·class="w">
137 »       ·</span><span·class="ss">init_state</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">137 »       ·</span><span·class="ss">init_state</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
138 »       ·</span><span·class="ss">add_frag</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">138 »       ·</span><span·class="ss">add_frag</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
139 »       ·</span><span·class="ss">del_frag</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">139 »       ·</span><span·class="ss">del_frag</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
140 »       ·</span><span·class="ss">key_to_frag_number</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">140 »       ·</span><span·class="ss">key_to_frag_number</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
141 »       ·</span><span·class="ss">match_spec_to_frag_numbers</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">141 »       ·</span><span·class="ss">match_spec_to_frag_numbers</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">
142 »       </span><span·class="p"·data-group-id="6220935626-8">]</span><span·class="p"·data-group-id="6220935626-7">)</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4638715811-1">(</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">142 »       </span><span·class="p"·data-group-id="1716477429-8">]</span><span·class="p"·data-group-id="1716477429-7">)</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0281922476-1">(</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">
143 »       </span><span·class="p"·data-group-id="4638715811-2">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="w">143 »       </span><span·class="p"·data-group-id="0281922476-2">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="w">
144 »       ·</span><span·class="ss">next_n_to_split</span><span·class="p">,</span><span·class="w">144 »       ·</span><span·class="ss">next_n_to_split</span><span·class="p">,</span><span·class="w">
145 »       ·</span><span·class="ss">n_doubles</span><span·class="p">,</span><span·class="w">145 »       ·</span><span·class="ss">n_doubles</span><span·class="p">,</span><span·class="w">
146 »       ·</span><span·class="ss">function</span><span·class="p"·data-group-id="4638715811-2">}</span><span·class="p"·data-group-id="4638715811-1">)</span><span·class="p">.</span><span·class="w">146 »       ·</span><span·class="ss">function</span><span·class="p"·data-group-id="0281922476-2">}</span><span·class="p"·data-group-id="0281922476-1">)</span><span·class="p">.</span><span·class="w">
  
147 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">147 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
148 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">init_state</span><span·class="p"·data-group-id="4638715811-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="4638715811-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">NewState</span><span·class="w">·</span><span·class="k">when</span><span·class="w">148 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">init_state</span><span·class="p"·data-group-id="0281922476-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="0281922476-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">NewState</span><span·class="w">·</span><span·class="k">when</span><span·class="w">
149 ······</span><span·class="n">Tab</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="4638715811-4">(</span><span·class="p"·data-group-id="4638715811-4">)</span><span·class="p">,</span><span·class="w">149 ······</span><span·class="n">Tab</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="0281922476-4">(</span><span·class="p"·data-group-id="0281922476-4">)</span><span·class="p">,</span><span·class="w">
150 ······</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-5">(</span><span·class="p"·data-group-id="4638715811-5">)</span><span·class="p">,</span><span·class="w">150 ······</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-5">(</span><span·class="p"·data-group-id="0281922476-5">)</span><span·class="p">,</span><span·class="w">
151 ······</span><span·class="n">NewState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-6">(</span><span·class="p"·data-group-id="4638715811-6">)</span><span·class="p">.</span><span·class="w">151 ······</span><span·class="n">NewState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-6">(</span><span·class="p"·data-group-id="0281922476-6">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="nf">init_state</span><span·class="p"·data-group-id="4638715811-7">(</span><span·class="p">_</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="4638715811-7">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">State</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 </span><span·class="nf">init_state</span><span·class="p"·data-group-id="0281922476-7">(</span><span·class="p">_</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="0281922476-7">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">State</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ····</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-8">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">153 ····</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-8">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
154 »       »       </span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">154 »       »       </span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
155 »       »       </span><span·class="ss">n_doubles</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">155 »       »       </span><span·class="ss">n_doubles</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
156 »       »       </span><span·class="ss">function</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">phash2</span><span·class="p"·data-group-id="4638715811-8">}</span><span·class="p">.</span><span·class="w">156 »       »       </span><span·class="ss">function</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">phash2</span><span·class="p"·data-group-id="0281922476-8">}</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="4638715811-9">(</span><span·class="p"·data-group-id="4638715811-10">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><s[·...·truncated·by·diffoscope;·len:·165,·SHA:·e2ac43bebb665b40cad0ae022b57d9e3347ae9b81d368729fcfff883c5bc747a·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="0281922476-9">(</span><span·class="p"·data-group-id="0281922476-10">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><s[·...·truncated·by·diffoscope;·len:·165,·SHA:·fa7542d2ba52d13eee641891af214f3504cb91386c6e526b0f5d17b229dfdb14·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-11">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">158 ····</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-11">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">
159 »       »       </span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="p">,</span><span·class="w">159 »       »       </span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="p">,</span><span·class="w">
160 »       »       </span><span·class="ss">n_doubles</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="p">,</span><span·class="w">160 »       »       </span><span·class="ss">n_doubles</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="p">,</span><span·class="w">
161 »       »       </span><span·class="ss">function</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">phash</span><span·class="p"·data-group-id="4638715811-11">}</span><span·class="p">.</span><span·class="w">161 »       »       </span><span·class="ss">function</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">phash</span><span·class="p"·data-group-id="0281922476-11">}</span><span·class="p">.</span><span·class="w">
  
162 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">162 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
163 </span><span·class="w">163 </span><span·class="w">
164 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="4638715811-12">(</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-13">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·688d22d13cc8c5a213f84c4e9f1a8e797ba08e27964d9055e32ebea7af1bc4b9·...·]-14">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">164 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="0281922476-12">(</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-13">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·84ae22276dfe3e38897ab81e34341973398cfeb47af1e52bc49b3cf936ce7a40·...·]-14">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">
165 ······</span><span·class="n">NewState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-15">(</span><span·class="p"·data-group-id="4638715811-15">)</span><span·class="p">,</span><span·class="w">165 ······</span><span·class="n">NewState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-15">(</span><span·class="p"·data-group-id="0281922476-15">)</span><span·class="p">,</span><span·class="w">
166 ······</span><span·class="n">IterFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-16">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="4638715811-17">(</span><span·class="p"·data-group-id="4638715811-17">)</span><span·class="p"·data-group-id="4638715811-16">]</span><span·class="p">,</span><span·class="w">166 ······</span><span·class="n">IterFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-16">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="0281922476-17">(</span><span·class="p"·data-group-id="0281922476-17">)</span><span·class="p"·data-group-id="0281922476-16">]</span><span·class="p">,</span><span·class="w">
167 ······</span><span·class="n">AdditionalLockFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-18">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="4638715811-19">(</span><span·class="p"·data-group-id="4638715811-19">)</span><span·class="p"·data-group-id="4638715811-18">]</span><span·class="p">.</span><span·class="w">167 ······</span><span·class="n">AdditionalLockFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-18">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="0281922476-19">(</span><span·class="p"·data-group-id="0281922476-19">)</span><span·class="p"·data-group-id="0281922476-18">]</span><span·class="p">.</span><span·class="w">
168 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="4638715811-20">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-21">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·83390f6fe31c5a42dce3f57ca95aefe5af740dc6ad210743148030613917a1d9·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="0281922476-20">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-21">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·ea95dc4dc7cb20baf39f58c90656a6aad31e0cc82c846e0eb7ec35280f6fab16·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
169 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">SplitN</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">169 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">SplitN</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
170 ····</span><span·class="n">NewN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">170 ····</span><span·class="n">NewN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
171 ····</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="4638715811-22">(</span><span·class="n">L</span><span·class="p"·data-group-id="4638715811-22">)</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="k">of</span><span·class="w">171 ····</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="0281922476-22">(</span><span·class="n">L</span><span·class="p"·data-group-id="0281922476-22">)</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
172 »       »       ·</span><span·class="n">P2</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">P2</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">P</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 »       »       ·</span><span·class="n">P2</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">P2</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">P</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
173 »       »       ·····</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-23">{</span><span·class="ss">n_fragments</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="n">NewN</span><span·class="p">,</span><span·class="w">173 »       »       ·····</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-23">{</span><span·class="ss">n_fragments</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="n">NewN</span><span·class="p">,</span><span·class="w">
174 »       »       »       »       ······</span><span·class="ss">n_doubles</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">174 »       »       »       »       ······</span><span·class="ss">n_doubles</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
175 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4638715811-23">}</span><span·class="p">;</span><span·class="w">175 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0281922476-23">}</span><span·class="p">;</span><span·class="w">
176 »       »       ·</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 »       »       ·</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 »       »       ·····</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-24">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">NewN</span><span·class="p">,</span><span·class="w">177 »       »       ·····</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-24">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">NewN</span><span·class="p">,</span><span·class="w">
178 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="p"·data-group-id="4638715811-24">}</span><span·class="w">178 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="p"·data-group-id="0281922476-24">}</span><span·class="w">
179 »       ·····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">179 »       ·····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="4638715811-25">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-26">[</span><span·class="n">SplitN</span><span·class="p"·data-group-id="4638715811-26">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·205,·SHA:·eefc7bd88badb153c510a7e8dff0939cbf4e51671e51a37ac653bd7ae5cfb0b9·...·]-25">}</span><span·class="p">;</span><span·class="w">180 ····</span><span·class="p"·data-group-id="0281922476-25">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-26">[</span><span·class="n">SplitN</span><span·class="p"·data-group-id="0281922476-26">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·205,·SHA:·ec6713684b2e8c7614de9bebc7e4ebec198c3e888ef399216518d341856d468b·...·]-25">}</span><span·class="p">;</span><span·class="w">
181 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="4638715811-28">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="4638715811-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">181 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="0281922476-28">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="0281922476-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
182 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="4638715811-29">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="4638715811-29">)</span><span·class="p">,</span><span·class="w">182 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="0281922476-29">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="0281922476-29">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="4638715811-30">(</span><span·class="n">State</span><span·class="p"·data-group-id="4638715811-30">)</span><span·class="p">.</span><span·class="w">183 ····</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="0281922476-30">(</span><span·class="n">State</span><span·class="p"·data-group-id="0281922476-30">)</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">184 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
185 </span><span·class="w">185 </span><span·class="w">
186 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="4638715811-31">(</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-32">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·94b4dacd65b132e134d2caa3d9b23b96d1bccbf52841533d0dcf8a2c503f8908·...·]-33">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">186 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="0281922476-31">(</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-32">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·5f5bc61e2daaff458439354230cdf20cba343fb7bfd095f29f69cd9e7bcadade·...·]-33">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">
187 ······</span><span·class="n">NewState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-34">(</span><span·class="p"·data-group-id="4638715811-34">)</span><span·class="p">,</span><span·class="w">187 ······</span><span·class="n">NewState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-34">(</span><span·class="p"·data-group-id="0281922476-34">)</span><span·class="p">,</span><span·class="w">
188 ······</span><span·class="n">IterFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-35">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="4638715811-36">(</span><span·class="p"·data-group-id="4638715811-36">)</span><span·class="p"·data-group-id="4638715811-35">]</span><span·class="p">,</span><span·class="w">188 ······</span><span·class="n">IterFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-35">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="0281922476-36">(</span><span·class="p"·data-group-id="0281922476-36">)</span><span·class="p"·data-group-id="0281922476-35">]</span><span·class="p">,</span><span·class="w">
189 ······</span><span·class="n">AdditionalLockFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-37">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="4638715811-38">(</span><span·class="p"·data-group-id="4638715811-38">)</span><span·class="p"·data-group-id="4638715811-37">]</span><span·class="p">.</span><span·class="w">189 ······</span><span·class="n">AdditionalLockFrags</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-37">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="0281922476-38">(</span><span·class="p"·data-group-id="0281922476-38">)</span><span·class="p"·data-group-id="0281922476-37">]</span><span·class="p">.</span><span·class="w">
190 </span><span·class="nf">del_frag</span><span·class="p"·data-group-id="4638715811-39">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-40">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·cf0739b7d129169879060e2da026c63b4ded972fa5f6e9a8c3125f5ce752ca82·...·]-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">190 </span><span·class="nf">del_frag</span><span·class="p"·data-group-id="0281922476-39">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-40">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·d6e1bf59607449eace2082bf551d9ff4e53f2617e37c3247b09d6957fd02961f·...·]-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">SplitN</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">191 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">SplitN</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
192 ····</span><span·class="k">if</span><span·class="w">192 ····</span><span·class="k">if</span><span·class="w">
193 »       </span><span·class="n">P</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 »       </span><span·class="n">P</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 »       ····</span><span·class="n">L2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">194 »       ····</span><span·class="n">L2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
195 »       ····</span><span·class="n">MergeN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="4638715811-41">(</span><span·class="n">L2</span><span·class="p"·data-group-id="4638715811-41">)</span><span·class="p">,</span><span·class="w">195 »       ····</span><span·class="n">MergeN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="0281922476-41">(</span><span·class="n">L2</span><span·class="p"·data-group-id="0281922476-41">)</span><span·class="p">,</span><span·class="w">
196 »       ····</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-42">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">196 »       ····</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-42">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
197 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MergeN</span><span·class="p">,</span><span·class="w">197 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MergeN</span><span·class="p">,</span><span·class="w">
198 »       »       »       »       ······</span><span·class="ss">n_doubles</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L2</span><span·class="p"·data-group-id="4638715811-42">}</span><span·class="p">,</span><span·class="w">198 »       »       »       »       ······</span><span·class="ss">n_doubles</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="n">L2</span><span·class="p"·data-group-id="0281922476-42">}</span><span·class="p">,</span><span·class="w">
199 »       ····</span><span·class="p"·data-group-id="4638715811-43">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-44">[</span><span·class="n">N</span><span·class="p"·data-group-id="4638715811-44">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·bddf46f287c9c85874f8db7f0393a86340c55980c3ac98fc7bad0165f2c8e97a·...·]-43">}</span><span·class="p">;</span><span·class="w">199 »       ····</span><span·class="p"·data-group-id="0281922476-43">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-44">[</span><span·class="n">N</span><span·class="p"·data-group-id="0281922476-44">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·7f902202e93ae4f7a42fea92e0e8eae44c96b40cc1d96ba6b4890c90fb5c757f·...·]-43">}</span><span·class="p">;</span><span·class="w">
200 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 »       ····</span><span·class="n">MergeN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="p">,</span><span·class="w">201 »       ····</span><span·class="n">MergeN</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">P</span><span·class="p">,</span><span·class="w">
202 »       ····</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-46">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">202 »       ····</span><span·class="n">State2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-46">{</span><span·class="ss">n_fragments</span><span·class="w">·····</span><span·class="o">=</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
203 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MergeN</span><span·class="p"·data-group-id="4638715811-46">}</span><span·class="p">,</span><span·class="w">203 »       »       »       »       ······</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MergeN</span><span·class="p"·data-group-id="0281922476-46">}</span><span·class="p">,</span><span·class="w">
204 »       ····</span><span·class="p"·data-group-id="4638715811-47">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-48">[</span><span·class="n">N</span><span·class="p"·data-group-id="4638715811-48">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·75fe6e4e95a09c7af6217876b99632463a02db383cf4b9a9474a623dd3b19c5a·...·]-47">}</span><span·class="w">204 »       ····</span><span·class="p"·data-group-id="0281922476-47">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-48">[</span><span·class="n">N</span><span·class="p"·data-group-id="0281922476-48">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·e587c4309b97e4bed8599301710493cec71c4dca899fd38d059e1e954cb91fe7·...·]-47">}</span><span·class="w">
205 »       </span><span·class="k">end</span><span·class="p">;</span><span·class="w">205 »       </span><span·class="k">end</span><span·class="p">;</span><span·class="w">
206 </span><span·class="nf">del_frag</span><span·class="p"·data-group-id="4638715811-50">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="4638715811-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 </span><span·class="nf">del_frag</span><span·class="p"·data-group-id="0281922476-50">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="0281922476-50">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="4638715811-51">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="4638715811-51">)</span><span·class="p">,</span><span·class="w">207 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="0281922476-51">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="0281922476-51">)</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="4638715811-52">(</span><span·class="n">State</span><span·class="p"·data-group-id="4638715811-52">)</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="0281922476-52">(</span><span·class="n">State</span><span·class="p"·data-group-id="0281922476-52">)</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">209 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
210 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="4638715811-53">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="4638715811-53">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Fragnum</span><span·class="w">·</span><span·class="k">when</span><span·class="w">210 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="0281922476-53">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="0281922476-53">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Fragnum</span><span·class="w">·</span><span·class="k">when</span><span·class="w">
211 ······</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-54">(</span><span·class="p"·data-group-id="4638715811-54">)</span><span·class="p">,</span><span·class="w">211 ······</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-54">(</span><span·class="p"·data-group-id="0281922476-54">)</span><span·class="p">,</span><span·class="w">
212 ······</span><span·class="n">Key</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-55">(</span><span·class="p"·data-group-id="4638715811-55">)</span><span·class="p">,</span><span·class="w">212 ······</span><span·class="n">Key</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-55">(</span><span·class="p"·data-group-id="0281922476-55">)</span><span·class="p">,</span><span·class="w">
213 ······</span><span·class="n">Fragnum</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="4638715811-56">(</span><span·class="p"·data-group-id="4638715811-56">)</span><span·class="p">.</span><span·class="w">213 ······</span><span·class="n">Fragnum</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="0281922476-56">(</span><span·class="p"·data-group-id="0281922476-56">)</span><span·class="p">.</span><span·class="w">
214 </span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="4638715811-57">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-58">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·537,·SHA:·c1aa6ba9083ee93d17220b8f88009aef62fe6e7475f773541973c5c54e16d840·...·]-57">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 </span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="0281922476-57">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-58">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·537,·SHA:·dac0fcd8d019d907169412f9d08080837a575c66457c428e801fdbf927f4b0eb·...·]-57">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash</span><span·class="p"·data-group-id="4638715811-59">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="4638715811-60">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·3cbed3ce4dea7040ade1c31b6a7387b02b9e8d832ecd0cb8f0dd7d8c69945a81·...·]-59">)</span><span·class="p">,</span><span·class="w">215 ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash</span><span·class="p"·data-group-id="0281922476-59">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="0281922476-60">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·ea5356a3c991f6521298486ee1b3c37e293ec9f71ad742599d36b4f77cf9b57a·...·]-59">)</span><span·class="p">,</span><span·class="w">
216 ····</span><span·class="k">if</span><span·class="w">216 ····</span><span·class="k">if</span><span·class="w">
217 »       </span><span·class="n">A</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 »       </span><span·class="n">A</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 »       ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="4638715811-61">(</span><span·class="n">L</span><span·class="p"·data-group-id="4638715811-61">)</span><span·class="p">;</span><span·class="w">218 »       ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="0281922476-61">(</span><span·class="n">L</span><span·class="p"·data-group-id="0281922476-61">)</span><span·class="p">;</span><span·class="w">
219 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 »       ····</span><span·class="n">A</span><span·class="w">220 »       ····</span><span·class="n">A</span><span·class="w">
221 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">221 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
222 </span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="4638715811-62">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-63">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·538,·SHA:·e8913c6f19c644fb657df6fa686e770f5f765d78d701a4c1dffb99620b8412d3·...·]-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 </span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="0281922476-62">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-63">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·538,·SHA:·de4c3e3307d17ef63bbc6efa8ac223db831e153c34125cebe9a745c64f466f87·...·]-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="4638715811-64">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="4638715811-65">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·1db8295d79e505d231e071c4a86c47e3e908364a2468d184a2e7076fe4e13cd8·...·]-64">)</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="0281922476-64">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="0281922476-65">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·d413e339c80f6b67a9f8869483d2b801da08ad8f9c4d4f166ea740b421a635fb·...·]-64">)</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
224 ····</span><span·class="k">if</span><span·class="w">224 ····</span><span·class="k">if</span><span·class="w">
225 »       </span><span·class="n">A</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 »       </span><span·class="n">A</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 »       ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="4638715811-66">(</span><span·class="n">L</span><span·class="p"·data-group-id="4638715811-66">)</span><span·class="p">;</span><span·class="w">226 »       ····</span><span·class="n">A</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="nf">power2</span><span·class="p"·data-group-id="0281922476-66">(</span><span·class="n">L</span><span·class="p"·data-group-id="0281922476-66">)</span><span·class="p">;</span><span·class="w">
227 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 »       ····</span><span·class="n">A</span><span·class="w">228 »       ····</span><span·class="n">A</span><span·class="w">
229 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">229 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
230 </span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="4638715811-67">(</span><span·class="n">OldState</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="4638715811-67">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">230 </span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="0281922476-67">(</span><span·class="n">OldState</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="0281922476-67">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
231 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="4638715811-68">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="4638715811-68">)</span><span·class="p">,</span><span·class="w">231 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="0281922476-68">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="0281922476-68">)</span><span·class="p">,</span><span·class="w">
232 ····</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="4638715811-69">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="4638715811-69">)</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="0281922476-69">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="0281922476-69">)</span><span·class="p">.</span><span·class="w">
  
233 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">233 </span><span·class="c1">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span><span·class="w">
234 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">match_spec_to_frag_numbers</span><span·class="p"·data-group-id="4638715811-70">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="4638715811-70">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Fragnums</span><span·class="w">·</span><span·class="k">when</span><span·class="w">234 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">match_spec_to_frag_numbers</span><span·class="p"·data-group-id="0281922476-70">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="0281922476-70">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Fragnums</span><span·class="w">·</span><span·class="k">when</span><span·class="w">
235 ······</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4638715811-71">(</span><span·class="p"·data-group-id="4638715811-71">)</span><span·class="p">,</span><span·class="w">235 ······</span><span·class="n">State</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0281922476-71">(</span><span·class="p"·data-group-id="0281922476-71">)</span><span·class="p">,</span><span·class="w">
236 ······</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_spec</span><span·class="p"·data-group-id="4638715811-72">(</span><span·class="p"·data-group-id="4638715811-72">)</span><span·class="p">,</span><span·class="w">236 ······</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_spec</span><span·class="p"·data-group-id="0281922476-72">(</span><span·class="p"·data-group-id="0281922476-72">)</span><span·class="p">,</span><span·class="w">
237 ······</span><span·class="n">Fragnums</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4638715811-73">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="4638715811-74">(</span><span·class="p"·data-group-id="4638715811-74">)</span><span·class="p"·data-group-id="4638715811-73">]</span><span·class="p">.</span><span·class="w">237 ······</span><span·class="n">Fragnums</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0281922476-73">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="0281922476-74">(</span><span·class="p"·data-group-id="0281922476-74">)</span><span·class="p"·data-group-id="0281922476-73">]</span><span·class="p">.</span><span·class="w">
238 </span><span·class="nf">match_spec_to_frag_numbers</span><span·class="p"·data-group-id="4638715811-75">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="4638715811-76">{</span><span·class="ss">n_fragments</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n[·...·truncated·by·diffoscope;·len:·285,·SHA:·8c8b89afa7327116a9451cb4d49a3900f2d45fc59c3c148dc77f1c4aff0af49c·...·]-75">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">238 </span><span·class="nf">match_spec_to_frag_numbers</span><span·class="p"·data-group-id="0281922476-75">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="0281922476-76">{</span><span·class="ss">n_fragments</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n[·...·truncated·by·diffoscope;·len:·285,·SHA:·3d78cee90738851ea01ea7b704dbcf484d91ac2ac9e0098cd284b1b1479f4f19·...·]-75">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
239 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="k">of</span><span·class="w">239 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
240 »       </span><span·class="p"·data-group-id="4638715811-77">[</span><span·class="p"·data-group-id="4638715811-78">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span[·...·truncated·by·diffoscope;·len:·555,·SHA:·7e1d645116b870d6ca2ab8501784eafa2a76d4638fc7a00368bf98bb1c0932d1·...·]-80">)</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">240 »       </span><span·class="p"·data-group-id="0281922476-77">[</span><span·class="p"·data-group-id="0281922476-78">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span[·...·truncated·by·diffoscope;·len:·555,·SHA:·e99d6e30a43996117d0527db21ecda0650c2a941edd55239e9f185a8f404a06f·...·]-80">)</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
241 »       ····</span><span·class="n">KeyPat</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="4638715811-81">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HeadPat</span><span·class="p"·data-group-id="4638715811-81">)</span><span·class="p">,</span><span·class="w">241 »       ····</span><span·class="n">KeyPat</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="0281922476-81">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HeadPat</span><span·class="p"·data-group-id="0281922476-81">)</span><span·class="p">,</span><span·class="w">
242 »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">has_var</span><span·class="p"·data-group-id="4638715811-82">(</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="4638715811-82">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">242 »       ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">has_var</span><span·class="p"·data-group-id="0281922476-82">(</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="0281922476-82">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
243 »       »       </span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">243 »       »       </span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
244 »       »       ····</span><span·class="p"·data-group-id="4638715811-83">[</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="4638715811-84">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·63,·SHA:·27a0fe8bf69ebc7b11bf75898df06acc465d1b07000fa7fb705a46a0a0174e2b·...·]-83">]</span><span·class="p">;</span><span·class="w">244 »       »       ····</span><span·class="p"·data-group-id="0281922476-83">[</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="0281922476-84">(</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·63,·SHA:·733e22ca6ed108f0b01817784ad62f04f8018a763e15a5dfe0755c6e62deb144·...·]-83">]</span><span·class="p">;</span><span·class="w">
245 »       »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">245 »       »       </span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 3709/70270 bytes (5.28%) of diff not shown.
161 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_chap2.html
    
Offset 133, 47 lines modifiedOffset 133, 47 lines modified
133 ··<a·href="#starting-mnesia-for-the-first-time"·class="hover-link">133 ··<a·href="#starting-mnesia-for-the-first-time"·class="hover-link">
134 ····<i·class="ri-link-m"·aria-hidden="true"></i>134 ····<i·class="ri-link-m"·aria-hidden="true"></i>
135 ··</a>135 ··</a>
136 ··<span·class="text">Starting·Mnesia·for·the·First·Time</span>136 ··<span·class="text">Starting·Mnesia·for·the·First·Time</span>
137 </h2>137 </h2>
138 <p>This·section·provides·a·simplified·demonstration·of·a·<code·class="inline">Mnesia</code>·system·startup.138 <p>This·section·provides·a·simplified·demonstration·of·a·<code·class="inline">Mnesia</code>·system·startup.
139 The·dialogue·from·the·Erlang·shell·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">unix</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">mnesia</span><span·class="w">·</span><span·class="ss">dir</span><span·class="w">·</span><span·class="ss">&#39;&quot;/tmp/funky&quot;&#39;</span><span·class="w">139 The·dialogue·from·the·Erlang·shell·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">unix</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">mnesia</span><span·class="w">·</span><span·class="ss">dir</span><span·class="w">·</span><span·class="ss">&#39;&quot;/tmp/funky&quot;&#39;</span><span·class="w">
140 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="0733910901-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">4.9</span><span·class="w">140 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="0996907764-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">4.9</span><span·class="w">
  
141 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="0733910901-2">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="0733910901-2">)</span><span·class="w">141 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="0996907764-2">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="0996907764-2">)</span><span·class="w">
142 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="gp·unselectable">142 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="gp·unselectable">
143 1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="0733910901-3">(</span><span·class="p"·data-group-id="0733910901-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0733910901-5">(</span><span·class="p"·data-group-id="0733910901-5">)</span><span·class="p"·data-group-id="0733910901-4">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·7a98dc23b5e634e77b4a785deac1c1e04aaf34d34235d5c5d8c5c323e37eea30·...·]-3">)</span><span·class="p">.</span><span·class="w">143 1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="0996907764-3">(</span><span·class="p"·data-group-id="0996907764-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0996907764-5">(</span><span·class="p"·data-group-id="0996907764-5">)</span><span·class="p"·data-group-id="0996907764-4">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·f22027355470231d0120e407eac9d84036b56cfe763dd9c73fd3dad2c541789b·...·]-3">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="ss">ok</span><span·class="gp·unselectable">144 </span><span·class="ss">ok</span><span·class="gp·unselectable">
145 2&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="0733910901-6">(</span><span·class="p"·data-group-id="0733910901-6">)</span><span·class="p">.</span><span·class="w">145 2&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="0996907764-6">(</span><span·class="p"·data-group-id="0996907764-6">)</span><span·class="p">.</span><span·class="w">
146 </span><span·class="ss">ok</span><span·class="gp·unselectable">146 </span><span·class="ss">ok</span><span·class="gp·unselectable">
147 3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="0733910901-7">(</span><span·class="ss">funky</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-8">[</span><span·class="p"·data-group-id="0733910901-8">]</span><span·class="p"·data-group-id="0733910901-7">)</span><span·class="p">.</span><span·class="w">147 3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="0996907764-7">(</span><span·class="ss">funky</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-8">[</span><span·class="p"·data-group-id="0996907764-8">]</span><span·class="p"·data-group-id="0996907764-7">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="p"·data-group-id="0733910901-9">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="0733910901-9">}</span><span·class="gp·unselectable">148 </span><span·class="p"·data-group-id="0996907764-9">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="0996907764-9">}</span><span·class="gp·unselectable">
149 4&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="0733910901-10">(</span><span·class="p"·data-group-id="0733910901-10">)</span><span·class="p">.</span><span·class="w">149 4&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="0996907764-10">(</span><span·class="p"·data-group-id="0996907764-10">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Processes</span><span·class="w">·</span><span·class="ss">holding</span><span·class="w">·</span><span·class="ss">locks</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">150 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Processes</span><span·class="w">·</span><span·class="ss">holding</span><span·class="w">·</span><span·class="ss">locks</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">
151 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Processes</span><span·class="w">·</span><span·class="ss">waiting</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">locks</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">151 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Processes</span><span·class="w">·</span><span·class="ss">waiting</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">locks</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">
152 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Pending</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-11">(</span><span·class="ss">remote</span><span·class="p"·data-group-id="0733910901-11">)</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">152 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Pending</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-11">(</span><span·class="ss">remote</span><span·class="p"·data-group-id="0996907764-11">)</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">
153 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Active</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-12">(</span><span·class="ss">local</span><span·class="p"·data-group-id="0733910901-12">)</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">153 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Active</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-12">(</span><span·class="ss">local</span><span·class="p"·data-group-id="0996907764-12">)</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">
154 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Uncertain</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">154 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Uncertain</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">
155 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Active</span><span·class="w">·</span><span·class="ss">tables</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">155 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Active</span><span·class="w">·</span><span·class="ss">tables</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="o">--</span><span·class="w">
156 </span><span·class="ss">funky</span><span·class="w">··········</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">records</span><span·class="w">·</span><span·class="ss">occupying</span><span·class="w">·</span><span·class="mi">269</span><span·class="w">·</span><span·class="ss">words</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">mem</span><span·class="w">156 </span><span·class="ss">funky</span><span·class="w">··········</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">records</span><span·class="w">·</span><span·class="ss">occupying</span><span·class="w">·</span><span·class="mi">269</span><span·class="w">·</span><span·class="ss">words</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">mem</span><span·class="w">
157 </span><span·class="ss">schema</span><span·class="w">·········</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="ss">records</span><span·class="w">·</span><span·class="ss">occupying</span><span·class="w">·</span><span·class="mi">353</span><span·class="w">·</span><span·class="ss">words</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">mem</span><span·class="w">157 </span><span·class="ss">schema</span><span·class="w">·········</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="ss">records</span><span·class="w">·</span><span·class="ss">occupying</span><span·class="w">·</span><span·class="mi">353</span><span·class="w">·</span><span·class="ss">words</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">mem</span><span·class="w">
158 </span><span·class="o">==</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">System</span><span·class="w">·</span><span·class="ss">info</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug</span><span·class="w">·</span><span·class="ss">level</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">none</span><span·class="w">·</span><span·class="o">&lt;=</span><span·class="o">==</span><span·class="w">158 </span><span·class="o">==</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">System</span><span·class="w">·</span><span·class="ss">info</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug</span><span·class="w">·</span><span·class="ss">level</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">none</span><span·class="w">·</span><span·class="o">&lt;=</span><span·class="o">==</span><span·class="w">
159 </span><span·class="ss">opt_disc</span><span·class="p">.</span><span·class="w">·</span><span·class="n">Directory</span><span·class="w">·</span><span·class="s">&quot;/tmp/funky&quot;</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">used</span><span·class="p">.</span><span·class="w">159 </span><span·class="ss">opt_disc</span><span·class="p">.</span><span·class="w">·</span><span·class="n">Directory</span><span·class="w">·</span><span·class="s">&quot;/tmp/funky&quot;</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">used</span><span·class="p">.</span><span·class="w">
160 </span><span·class="ss">use</span><span·class="w">·</span><span·class="ss">fall</span><span·class="o">-</span><span·class="ss">back</span><span·class="w">·</span><span·class="ss">at</span><span·class="w">·</span><span·class="ss">restart</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">160 </span><span·class="ss">use</span><span·class="w">·</span><span·class="ss">fall</span><span·class="o">-</span><span·class="ss">back</span><span·class="w">·</span><span·class="ss">at</span><span·class="w">·</span><span·class="ss">restart</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">
161 </span><span·class="ss">running</span><span·class="w">·</span><span·class="ss">db</span><span·class="w">·</span><span·class="nb">nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-13">[</span><span·class="ss">nonode@nohost</span><span·class="p"·data-group-id="0733910901-13">]</span><span·class="w">161 </span><span·class="ss">running</span><span·class="w">·</span><span·class="ss">db</span><span·class="w">·</span><span·class="nb">nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-13">[</span><span·class="ss">nonode@nohost</span><span·class="p"·data-group-id="0996907764-13">]</span><span·class="w">
162 </span><span·class="ss">stopped</span><span·class="w">·</span><span·class="ss">db</span><span·class="w">·</span><span·class="nb">nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-14">[</span><span·class="p"·data-group-id="0733910901-14">]</span><span·class="w">162 </span><span·class="ss">stopped</span><span·class="w">·</span><span·class="ss">db</span><span·class="w">·</span><span·class="nb">nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-14">[</span><span·class="p"·data-group-id="0996907764-14">]</span><span·class="w">
163 </span><span·class="ss">remote</span><span·class="w">···········</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-15">[</span><span·class="p"·data-group-id="0733910901-15">]</span><span·class="w">163 </span><span·class="ss">remote</span><span·class="w">···········</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-15">[</span><span·class="p"·data-group-id="0996907764-15">]</span><span·class="w">
164 </span><span·class="ss">ram_copies</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-16">[</span><span·class="ss">funky</span><span·class="p"·data-group-id="0733910901-16">]</span><span·class="w">164 </span><span·class="ss">ram_copies</span><span·class="w">·······</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-16">[</span><span·class="ss">funky</span><span·class="p"·data-group-id="0996907764-16">]</span><span·class="w">
165 </span><span·class="ss">disc_copies</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-17">[</span><span·class="ss">schema</span><span·class="p"·data-group-id="0733910901-17">]</span><span·class="w">165 </span><span·class="ss">disc_copies</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-17">[</span><span·class="ss">schema</span><span·class="p"·data-group-id="0996907764-17">]</span><span·class="w">
166 </span><span·class="ss">disc_only_copies</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-18">[</span><span·class="p"·data-group-id="0733910901-18">]</span><span·class="w">166 </span><span·class="ss">disc_only_copies</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-18">[</span><span·class="p"·data-group-id="0996907764-18">]</span><span·class="w">
167 </span><span·class="p"·data-group-id="0733910901-19">[</span><span·class="p"·data-group-id="0733910901-20">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">disc_copies</span><span·class="p"·data-group-id="0733910901-20">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·221,·SHA:·9764a47bdfa536765236055605ac5d121ff32edc807808ae3b178ffc9dd17d59·...·]-21">]</span><span·class="w">167 </span><span·class="p"·data-group-id="0996907764-19">[</span><span·class="p"·data-group-id="0996907764-20">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">disc_copies</span><span·class="p"·data-group-id="0996907764-20">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·221,·SHA:·ce71354b6a2f274eb6230903f381e0ce585e5332a4dd0702a4e0c1bd1d573e29·...·]-21">]</span><span·class="w">
168 </span><span·class="p"·data-group-id="0733910901-22">[</span><span·class="p"·data-group-id="0733910901-23">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="0733910901-23">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·219,·SHA:·1ac1d476ee7ffff510bfb1f3557a39c601f136f34f34027fdc8929060431ee69·...·]-24">]</span><span·class="w">168 </span><span·class="p"·data-group-id="0996907764-22">[</span><span·class="p"·data-group-id="0996907764-23">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="0996907764-23">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·219,·SHA:·e3702399fbf120741fb8bfae31e40bb281368a84d4a2adafba101c42a56141bf·...·]-24">]</span><span·class="w">
169 </span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="ss">committed</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">aborted</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">restarted</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">logged</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">disc</span><span·class="w">169 </span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="ss">committed</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">aborted</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">restarted</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">logged</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">disc</span><span·class="w">
170 </span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">held</span><span·class="w">·</span><span·class="ss">locks</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">queue</span><span·class="p">;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">local</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">remote</span><span·class="w">170 </span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">held</span><span·class="w">·</span><span·class="ss">locks</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">queue</span><span·class="p">;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">local</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">remote</span><span·class="w">
171 </span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="ss">waits</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">other</span><span·class="w">·</span><span·class="nc">nodes</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0733910901-25">[</span><span·class="p"·data-group-id="0733910901-25">]</span><span·class="w">171 </span><span·class="mi">0</span><span·class="w">·</span><span·class="ss">transactions</span><span·class="w">·</span><span·class="ss">waits</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">other</span><span·class="w">·</span><span·class="nc">nodes</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0996907764-25">[</span><span·class="p"·data-group-id="0996907764-25">]</span><span·class="w">
172 </span><span·class="ss">ok</span></code></pre><p>In·this·example,·the·following·actions·are·performed:</p><ul><li><em>Step·1:</em>·The·Erlang·system·is·started·from·the·UNIX·prompt·with·a·flag172 </span><span·class="ss">ok</span></code></pre><p>In·this·example,·the·following·actions·are·performed:</p><ul><li><em>Step·1:</em>·The·Erlang·system·is·started·from·the·UNIX·prompt·with·a·flag
173 <code·class="inline">-mnesia·dir·'&quot;/tmp/funky&quot;'</code>,·which·indicates·in·which·directory·to·store·the173 <code·class="inline">-mnesia·dir·'&quot;/tmp/funky&quot;'</code>,·which·indicates·in·which·directory·to·store·the
174 data.</li><li><em>Step·2:</em>·A·new·empty·schema·is·initialized·on·the·local·node·by·evaluating174 data.</li><li><em>Step·2:</em>·A·new·empty·schema·is·initialized·on·the·local·node·by·evaluating
175 <a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema([node()])</code></a>.·The·schema175 <a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema([node()])</code></a>.·The·schema
176 contains·information·about·the·database·in·general.·This·is·explained·in176 contains·information·about·the·database·in·general.·This·is·explained·in
177 detail·later.</li><li><em>Step·3:</em>·The·DBMS·is·started·by·evaluating177 detail·later.</li><li><em>Step·3:</em>·The·DBMS·is·started·by·evaluating
178 <a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>.</li><li><em>Step·4:</em>·A·first·table·is·created,·called·<code·class="inline">funky</code>,·by·evaluating·the178 <a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>.</li><li><em>Step·4:</em>·A·first·table·is·created,·called·<code·class="inline">funky</code>,·by·evaluating·the
Offset 225, 36 lines modifiedOffset 225, 36 lines modified
225 relationship.</li></ol></li></ul><h3·id="defining-structure-and-content"·class="section-heading">225 relationship.</li></ol></li></ul><h3·id="defining-structure-and-content"·class="section-heading">
226 ··<a·href="#defining-structure-and-content"·class="hover-link">226 ··<a·href="#defining-structure-and-content"·class="hover-link">
227 ····<i·class="ri-link-m"·aria-hidden="true"></i>227 ····<i·class="ri-link-m"·aria-hidden="true"></i>
228 ··</a>228 ··</a>
229 ··<span·class="text">Defining·Structure·and·Content</span>229 ··<span·class="text">Defining·Structure·and·Content</span>
230 </h3>230 </h3>
231 <p>First·the·record·definitions·are·entered·into·a·text·file·named·<code·class="inline">company.hrl</code>.231 <p>First·the·record·definitions·are·entered·into·a·text·file·named·<code·class="inline">company.hrl</code>.
232 This·file·defines·the·following·structure·for·the·example·database:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3138659965-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3138659965-2">{</span><span·class="ss">emp_no</span><span·class="p">,</span><span·class="w">232 This·file·defines·the·following·structure·for·the·example·database:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4977576592-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4977576592-2">{</span><span·class="ss">emp_no</span><span·class="p">,</span><span·class="w">
233 ···················</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">233 ···················</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">
234 ···················</span><span·class="ss">salary</span><span·class="p">,</span><span·class="w">234 ···················</span><span·class="ss">salary</span><span·class="p">,</span><span·class="w">
235 ···················</span><span·class="ss">sex</span><span·class="p">,</span><span·class="w">235 ···················</span><span·class="ss">sex</span><span·class="p">,</span><span·class="w">
236 ···················</span><span·class="ss">phone</span><span·class="p">,</span><span·class="w">236 ···················</span><span·class="ss">phone</span><span·class="p">,</span><span·class="w">
237 ···················</span><span·class="ss">room_no</span><span·class="p"·data-group-id="3138659965-2">}</span><span·class="p"·data-group-id="3138659965-1">)</span><span·class="p">.</span><span·class="w">237 ···················</span><span·class="ss">room_no</span><span·class="p"·data-group-id="4977576592-2">}</span><span·class="p"·data-group-id="4977576592-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="w">238 </span><span·class="w">
239 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3138659965-3">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3138659965-4">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="w">239 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4977576592-3">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4977576592-4">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="w">
240 ···············</span><span·class="ss">name</span><span·class="p"·data-group-id="3138659965-4">}</span><span·class="p"·data-group-id="3138659965-3">)</span><span·class="p">.</span><span·class="w">240 ···············</span><span·class="ss">name</span><span·class="p"·data-group-id="4977576592-4">}</span><span·class="p"·data-group-id="4977576592-3">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="w">241 </span><span·class="w">
242 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3138659965-5">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3138659965-6">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">242 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4977576592-5">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4977576592-6">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">
243 ··················</span><span·class="ss">number</span><span·class="p"·data-group-id="3138659965-6">}</span><span·class="p"·data-group-id="3138659965-5">)</span><span·class="p">.</span><span·class="w">243 ··················</span><span·class="ss">number</span><span·class="p"·data-group-id="4977576592-6">}</span><span·class="p"·data-group-id="4977576592-5">)</span><span·class="p">.</span><span·class="w">
244 </span><span·class="w">244 </span><span·class="w">
  
245 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3138659965-7">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3138659965-8">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">245 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4977576592-7">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4977576592-8">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">
246 ··················</span><span·class="ss">dept</span><span·class="p"·data-group-id="3138659965-8">}</span><span·class="p"·data-group-id="3138659965-7">)</span><span·class="p">.</span><span·class="w">246 ··················</span><span·class="ss">dept</span><span·class="p"·data-group-id="4977576592-8">}</span><span·class="p"·data-group-id="4977576592-7">)</span><span·class="p">.</span><span·class="w">
247 </span><span·class="w">247 </span><span·class="w">
248 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3138659965-9">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3138659965-10">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">248 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4977576592-9">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4977576592-10">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">
249 ·················</span><span·class="ss">dept_id</span><span·class="p"·data-group-id="3138659965-10">}</span><span·class="p"·data-group-id="3138659965-9">)</span><span·class="p">.</span><span·class="w">249 ·················</span><span·class="ss">dept_id</span><span·class="p"·data-group-id="4977576592-10">}</span><span·class="p"·data-group-id="4977576592-9">)</span><span·class="p">.</span><span·class="w">
250 </span><span·class="w">250 </span><span·class="w">
251 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3138659965-11">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3138659965-12">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">251 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4977576592-11">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4977576592-12">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">
252 ··················</span><span·class="ss">proj_name</span><span·class="p"·data-group-id="3138659965-12">}</span><span·class="p"·data-group-id="3138659965-11">)</span><span·class="p">.</span></code></pre><p>The·structure·defines·six·tables·in·the·database.·In·<code·class="inline">Mnesia</code>,·the·function252 ··················</span><span·class="ss">proj_name</span><span·class="p"·data-group-id="4977576592-12">}</span><span·class="p"·data-group-id="4977576592-11">)</span><span·class="p">.</span></code></pre><p>The·structure·defines·six·tables·in·the·database.·In·<code·class="inline">Mnesia</code>,·the·function
253 <a·href="mnesia.html#create_table/2"><code·class="inline">mnesia:create_table(Name,·ArgList)</code></a>·creates·tables.253 <a·href="mnesia.html#create_table/2"><code·class="inline">mnesia:create_table(Name,·ArgList)</code></a>·creates·tables.
254 <code·class="inline">Name</code>·is·the·table·name.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·current·version·of·<code·class="inline">Mnesia</code>·does·not·require·that·the·name·of·the·table·is254 <code·class="inline">Name</code>·is·the·table·name.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·current·version·of·<code·class="inline">Mnesia</code>·does·not·require·that·the·name·of·the·table·is
255 the·same·as·the·record·name,·see255 the·same·as·the·record·name,·see
256 <a·href="mnesia_chap4.html#recordnames_tablenames">Record·Names·versus·Table·Names.</a>.</p></section><p>For·example,·the·table·for·employees·is·created·with·the·function256 <a·href="mnesia_chap4.html#recordnames_tablenames">Record·Names·versus·Table·Names.</a>.</p></section><p>For·example,·the·table·for·employees·is·created·with·the·function
257 <code·class="inline">mnesia:create_table(employee,·[{attributes,·record_info(fields,·employee)}])</code>.257 <code·class="inline">mnesia:create_table(employee,·[{attributes,·record_info(fields,·employee)}])</code>.
258 The·table·name·<code·class="inline">employee</code>·matches·the·name·for·records·specified·in·<code·class="inline">ArgList</code>.258 The·table·name·<code·class="inline">employee</code>·matches·the·name·for·records·specified·in·<code·class="inline">ArgList</code>.
259 The·expression·<code·class="inline">record_info(fields,·RecordName)</code>·is·processed·by·the·Erlang259 The·expression·<code·class="inline">record_info(fields,·RecordName)</code>·is·processed·by·the·Erlang
Offset 263, 120 lines modifiedOffset 263, 120 lines modified
263 ··<a·href="#program"·class="hover-link">263 ··<a·href="#program"·class="hover-link">
264 ····<i·class="ri-link-m"·aria-hidden="true"></i>264 ····<i·class="ri-link-m"·aria-hidden="true"></i>
265 ··</a>265 ··</a>
266 ··<span·class="text">Program</span>266 ··<span·class="text">Program</span>
267 </h3>267 </h3>
268 <p>The·following·shell·interaction·starts·<code·class="inline">Mnesia</code>·and·initializes·the·schema·for268 <p>The·following·shell·interaction·starts·<code·class="inline">Mnesia</code>·and·initializes·the·schema·for
269 the·<code·class="inline">Company</code>·database:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-mnesia·dir·&#39;&quot;/ldisc/scratch/Mnesia.Company&quot;&#39;</span><span·class="w">269 the·<code·class="inline">Company</code>·database:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-mnesia·dir·&#39;&quot;/ldisc/scratch/Mnesia.Company&quot;&#39;</span><span·class="w">
270 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="8055795983-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="8055795983-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">4.9</span><span·class="w">270 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="7931142949-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="7931142949-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">4.9</span><span·class="w">
  
271 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="8055795983-2">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="8055795983-2">)</span><span·class="gp·unselectable">271 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="7931142949-2">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="7931142949-2">)</span><span·class="gp·unselectable">
272 1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="8055795983-3">(</span><span·class="p"·data-group-id="8055795983-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="8055795983-5">(</span><span·class="p"·data-group-id="8055795983-5">)</span><span·class="p"·data-group-id="8055795983-4">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·096bc23d16b0a6d24590b35162b2aac2c5a55fe5c1bd1ab241776a145fb07877·...·]-3">)</span><span·class="p">.</span><span·class="w">272 1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="7931142949-3">(</span><span·class="p"·data-group-id="7931142949-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="7931142949-5">(</span><span·class="p"·data-group-id="7931142949-5">)</span><span·class="p"·data-group-id="7931142949-4">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·d81df756407c94762012825f6faf1cf7057c9cfafada53cd2a04454c7a3effba·...·]-3">)</span><span·class="p">.</span><span·class="w">
273 </span><span·class="ss">ok</span><span·class="gp·unselectable">273 </span><span·class="ss">ok</span><span·class="gp·unselectable">
274 2&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8055795983-6">(</span><span·class="p"·data-group-id="8055795983-6">)</span><span·class="p">.</span><span·class="w">274 2&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7931142949-6">(</span><span·class="p"·data-group-id="7931142949-6">)</span><span·class="p">.</span><span·class="w">
275 </span><span·class="ss">ok</span></code></pre><p>The·following·program·module·creates·and·populates·previously·defined·tables:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="2555338804-1">(</span><span·class="s">&quot;stdlib/include/qlc.hrl&quot;</span><span·class="p"·data-group-id="2555338804-1">)</span><span·class="p">.</span><span·class="w">275 </span><span·class="ss">ok</span></code></pre><p>The·following·program·module·creates·and·populates·previously·defined·tables:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1317621049-1">(</span><span·class="s">&quot;stdlib/include/qlc.hrl&quot;</span><span·class="p"·data-group-id="1317621049-1">)</span><span·class="p">.</span><span·class="w">
276 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="2555338804-2">(</span><span·class="s">&quot;company.hrl&quot;</span><span·class="p"·data-group-id="2555338804-2">)</span><span·class="p">.</span><span·class="w">276 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="1317621049-2">(</span><span·class="s">&quot;company.hrl&quot;</span><span·class="p"·data-group-id="1317621049-2">)</span><span·class="p">.</span><span·class="w">
  
277 </span><span·class="nf">init</span><span·class="p"·data-group-id="2555338804-3">(</span><span·class="p"·data-group-id="2555338804-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">277 </span><span·class="nf">init</span><span·class="p"·data-group-id="1317621049-3">(</span><span·class="p"·data-group-id="1317621049-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
278 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2555338804-4">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">278 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="1317621049-4">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
279 ························</span><span·class="p"·data-group-id="2555338804-5">[</span><span·class="p"·data-group-id="2555338804-6">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2555338804-7">(</span><span·class[·...·truncated·by·diffoscope;·len:·299,·SHA:·35f608eb7cf37d0214b4f08e6dad2786d747470f9060cf383d953f08143e0efb·...·]-4">)</span><span·class="p">,</span><span·class="w">279 ························</span><span·class="p"·data-group-id="1317621049-5">[</span><span·class="p"·data-group-id="1317621049-6">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="1317621049-7">(</span><span·class[·...·truncated·by·diffoscope;·len:·299,·SHA:·9ed47e1c3ae8583eb4f54a16cdc45784f919900dfde27737f2985e68616e8cf4·...·]-4">)</span><span·class="p">,</span><span·class="w">
280 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2555338804-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">280 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="1317621049-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">
281 ························</span><span·class="p"·data-group-id="2555338804-9">[</span><span·class="p"·data-group-id="2555338804-10">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2555338804-11">(</span><span·cla[·...·truncated·by·diffoscope;·len:·299,·SHA:·46ee342f728dab01954a9e681388f2e400069d46c8170df9c8fc9204e7c364e4·...·]-8">)</span><span·class="p">,</span><span·class="w">281 ························</span><span·class="p"·data-group-id="1317621049-9">[</span><span·class="p"·data-group-id="1317621049-10">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="1317621049-11">(</span><span·cla[·...·truncated·by·diffoscope;·len:·299,·SHA:·163b417795cb3c1656066a85d8ccd68ab9ce12c099c3c4e0655d724c7620811d·...·]-8">)</span><span·class="p">,</span><span·class="w">
282 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2555338804-12">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">282 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="1317621049-12">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">
283 ························</span><span·class="p"·data-group-id="2555338804-13">[</span><span·class="p"·data-group-id="2555338804-14">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2555338804-15">(</span><span·cl[·...·truncated·by·diffoscope;·len:·304,·SHA:·b5a83dfab2ca490f7e966c1ef688e902dc6e34dae72f7e29487444757a1afda4·...·]-12">)</span><span·class="p">,</span><span·class="w">283 ························</span><span·class="p"·data-group-id="1317621049-13">[</span><span·class="p"·data-group-id="1317621049-14">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="1317621049-15">(</span><span·cl[·...·truncated·by·diffoscope;·len:·304,·SHA:·2108ff916fcd92a594710a2792eb5abde702487086ff330ca5968de741c861a7·...·]-12">)</span><span·class="p">,</span><span·class="w">
284 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2555338804-16">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2555338804-17">[</span><span·class="p"·data-group-id="2555338804-18">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·ebaf298733e0641757361f8171032b390ea452bbc0759a3dab0a66fbb7f7e51a·...·]-18">}</span><span·class="p">,</span><span·class="w">284 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="1317621049-16">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1317621049-17">[</span><span·class="p"·data-group-id="1317621049-18">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·da504fbc85d068a925a8934b5502d5ea5f1731ec74795f9273749dead450af17·...·]-18">}</span><span·class="p">,</span><span·class="w">
285 ··································</span><span·class="p"·data-group-id="2555338804-19">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2555338804-20">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·c410486f8a6b4dc85b928716bd472ef723cfb85a3f31f468824f9dacbe3f86a6·...·]-16">)</span><span·class="p">,</span><span·class="w">285 ··································</span><span·class="p"·data-group-id="1317621049-19">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="1317621049-20">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·9dd7069587e4bbfdb43861785cdccdeb928fc8ef163f7dfe32745d365f5023c3·...·]-16">)</span><span·class="p">,</span><span·class="w">
286 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2555338804-21">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">286 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="1317621049-21">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">
287 ·························</span><span·class="p"·data-group-id="2555338804-22">[</span><span·class="p"·data-group-id="2555338804-23">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2555338804-24">(</span><span·cl[·...·truncated·by·diffoscope;·len:·303,·SHA:·e89ee3b549dd6e12b64b6b35971adcbc30f6c3cb89e4ba3bdf1bd379a6052939·...·]-21">)</span><span·class="p">,</span><span·class="w">287 ·························</span><span·class="p"·data-group-id="1317621049-22">[</span><span·class="p"·data-group-id="1317621049-23">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="1317621049-24">(</span><span·cl[·...·truncated·by·diffoscope;·len:·303,·SHA:·433db6e46d034b795941394ad8283f86999bcfc82229262e5cb02495e594e66f·...·]-21">)</span><span·class="p">,</span><span·class="w">
288 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2555338804-25">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2555338804-26">[</span><span·class="p"·data-group-id="2555338804-27">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·ebaf298733e0641757361f8171032b390ea452bbc0759a3dab0a66fbb7f7e51a·...·]-27">}</span><span·class="p">,</span><span·class="w">288 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="1317621049-25">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1317621049-26">[</span><span·class="p"·data-group-id="1317621049-27">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·da504fbc85d068a925a8934b5502d5ea5f1731ec74795f9273749dead450af17·...·]-27">}</span><span·class="p">,</span><span·class="w">
289 ··································</span><span·class="p"·data-group-id="2555338804-28">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="2555338804-29">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·6a3b189e29aebeeebba5f50ac3699c0151415c7fa63121f0198a6459aa1e072a·...·]-25">)</span><span·class="p">.</span></code></pre><h3·id="program-explained"·class="section-heading">289 ··································</span><span·class="p"·data-group-id="1317621049-28">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="1317621049-29">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·04bfcc6a449e8d735641779fed60a0b829652942d9e30de4b478f795888e4a0b·...·]-25">)</span><span·class="p">.</span></code></pre><h3·id="program-explained"·class="section-heading">
290 ··<a·href="#program-explained"·class="hover-link">290 ··<a·href="#program-explained"·class="hover-link">
291 ····<i·class="ri-link-m"·aria-hidden="true"></i>291 ····<i·class="ri-link-m"·aria-hidden="true"></i>
292 ··</a>292 ··</a>
293 ··<span·class="text">Program·Explained</span>293 ··<span·class="text">Program·Explained</span>
294 </h3>294 </h3>
295 <p>The·following·commands·and·functions·are·used·to·initiate·the·<code·class="inline">Company</code>295 <p>The·following·commands·and·functions·are·used·to·initiate·the·<code·class="inline">Company</code>
296 database:</p><ul><li><code·class="inline">%·erl·-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.Company&quot;'</code>.·This·is·a·UNIX296 database:</p><ul><li><code·class="inline">%·erl·-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.Company&quot;'</code>.·This·is·a·UNIX
297 command-line·entry·that·starts·the·Erlang·system.·The·flag·<code·class="inline">-mnesia·dir·Dir</code>297 command-line·entry·that·starts·the·Erlang·system.·The·flag·<code·class="inline">-mnesia·dir·Dir</code>
298 specifies·the·location·of·the·database·directory.·The·system·responds·and298 specifies·the·location·of·the·database·directory.·The·system·responds·and
299 waits·for·further·input·with·the·prompt·<code·class="inline">1&gt;</code>.</li><li><a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema([node()])</code></a>.·This·function·has299 waits·for·further·input·with·the·prompt·<code·class="inline">1&gt;</code>.</li><li><a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema([node()])</code></a>.·This·function·has
300 the·format·<code·class="inline">mnesia:create_schema(DiscNodeList)</code>·and·initiates·a·new·schema.·In300 the·format·<code·class="inline">mnesia:create_schema(DiscNodeList)</code>·and·initiates·a·new·schema.·In
301 this·example,·a·non-distributed·system·using·only·one·node·is·created.·Schemas301 this·example,·a·non-distributed·system·using·only·one·node·is·created.·Schemas
302 are·fully·explained·in·<a·href="mnesia_chap3.html#def_schema">Define·a·Schema</a>.</li><li><a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>.·This·function·starts·<code·class="inline">Mnesia</code>·and·is·fully302 are·fully·explained·in·<a·href="mnesia_chap3.html#def_schema">Define·a·Schema</a>.</li><li><a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>.·This·function·starts·<code·class="inline">Mnesia</code>·and·is·fully
Max diff block lines reached; 115609/165064 bytes (70.04%) of diff not shown.
52.1 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_chap3.html
    
Offset 171, 26 lines modifiedOffset 171, 26 lines modified
171 there·as·well.·This·action·extends·the·set·of·nodes·that·comprise·this171 there·as·well.·This·action·extends·the·set·of·nodes·that·comprise·this
172 particular·<code·class="inline">Mnesia</code>·system.</p></li><li><p><a·href="mnesia.html#del_table_copy/2"><code·class="inline">mnesia:del_table_copy(Tab,·Node)</code></a>·deletes·the172 particular·<code·class="inline">Mnesia</code>·system.</p></li><li><p><a·href="mnesia.html#del_table_copy/2"><code·class="inline">mnesia:del_table_copy(Tab,·Node)</code></a>·deletes·the
173 replica·of·table·<code·class="inline">Tab</code>·at·node·<code·class="inline">Node</code>.·When·the·last·replica·of·a·table·is173 replica·of·table·<code·class="inline">Tab</code>·at·node·<code·class="inline">Node</code>.·When·the·last·replica·of·a·table·is
174 removed,·the·table·is·deleted.</p></li><li><p><a·href="mnesia.html#transform_table/4"><code·class="inline">mnesia:transform_table(Tab,·Fun,·NewAttributeList,·NewRecordName)</code></a>174 removed,·the·table·is·deleted.</p></li><li><p><a·href="mnesia.html#transform_table/4"><code·class="inline">mnesia:transform_table(Tab,·Fun,·NewAttributeList,·NewRecordName)</code></a>
175 changes·the·format·on·all·records·in·table·<code·class="inline">Tab</code>.·It·applies·argument·<code·class="inline">Fun</code>·to175 changes·the·format·on·all·records·in·table·<code·class="inline">Tab</code>.·It·applies·argument·<code·class="inline">Fun</code>·to
176 all·records·in·the·table.·<code·class="inline">Fun</code>·must·be·a·function·that·takes·a·record·of·the176 all·records·in·the·table.·<code·class="inline">Fun</code>·must·be·a·function·that·takes·a·record·of·the
177 old·type,·and·returns·the·record·of·the·new·type.·The·table·key·must·not·be177 old·type,·and·returns·the·record·of·the·new·type.·The·table·key·must·not·be
178 changed.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3265460091-1">(</span><span·class="ss">old</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3265460091-2">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·7058f8cd726493bff79d3ab2953a5aef869bf3c5bfdf9de55a0eebd4445667a2·...·]-1">)</span><span·class="p">.</span><span·class="w">178 changed.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0171595317-1">(</span><span·class="ss">old</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0171595317-2">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·249ffb53d98a8aa6e5b54b6ddbab707c57892cd8ff51c8ab828ed66e937abe51·...·]-1">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3265460091-3">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3265460091-4">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·167,·SHA:·4badcc38cf2accee7d40ded16135279ac1e5e4af5373b54cab3e68edef6f72be·...·]-3">)</span><span·class="p">.</span><span·class="w">179 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0171595317-3">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0171595317-4">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·167,·SHA:·3185c8f16c077d6195e2774a9bf466658a4053235c236aa209d52742c22b4e31·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="n">Transformer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">180 </span><span·class="n">Transformer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
181 ···</span><span·class="nf">fun</span><span·class="p"·data-group-id="3265460091-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="3265460091-5">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">record</span><span·class="p"·data-group-id="3265460091-6">(</span[·...·truncated·by·diffoscope;·len:·141,·SHA:·5a539f3aa62aab12587ef151b01bb02af4efea4a50f59a7b2128ee3918614212·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">181 ···</span><span·class="nf">fun</span><span·class="p"·data-group-id="0171595317-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="0171595317-5">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">record</span><span·class="p"·data-group-id="0171595317-6">(</span[·...·truncated·by·diffoscope;·len:·141,·SHA:·d13a3112c860583d7e06a9725014c5cb08eee94718eabd53707766f054918e50·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
182 ······</span><span·class="o">#</span><span·class="ss">new</span><span·class="p"·data-group-id="3265460091-7">{</span><span·class="ss">key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">old</span><span·class="p">.</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">182 ······</span><span·class="o">#</span><span·class="ss">new</span><span·class="p"·data-group-id="0171595317-7">{</span><span·class="ss">key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">old</span><span·class="p">.</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">
183 ···········</span><span·class="ss">val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">old</span><span·class="p">.</span><span·class="ss">val</span><span·class="p">,</span><span·class="w">183 ···········</span><span·class="ss">val</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">X</span><span·class="o">#</span><span·class="ss">old</span><span·class="p">.</span><span·class="ss">val</span><span·class="p">,</span><span·class="w">
184 ···········</span><span·class="ss">extra</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="3265460091-7">}</span><span·class="w">184 ···········</span><span·class="ss">extra</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="0171595317-7">}</span><span·class="w">
185 ···</span><span·class="k">end</span><span·class="p">,</span><span·class="w">185 ···</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
186 </span><span·class="p"·data-group-id="3265460091-8">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p"·data-group-id="3265460091-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·129,·SHA:·bbe23d5bd9da774de3ef5a8a0a14fbcaba9f310d3dbf590ea4116fcad1f0367b·...·]-9">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Transformer</span><span·class="p">,</span><span·class="w">186 </span><span·class="p"·data-group-id="0171595317-8">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p"·data-group-id="0171595317-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·129,·SHA:·0aec8e2fff146e62c807474f9d28d1a4bf9158f1ba8ca75312e34d4da125bf48·...·]-9">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Transformer</span><span·class="p">,</span><span·class="w">
187 ······································</span><span·class="nf">record_info</span><span·class="p"·data-group-id="3265460091-10">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new</span><span·class="p"·data-group-id="3265460091-10">)</span><span·class="p">,</span><span·class="w">187 ······································</span><span·class="nf">record_info</span><span·class="p"·data-group-id="0171595317-10">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">new</span><span·class="p"·data-group-id="0171595317-10">)</span><span·class="p">,</span><span·class="w">
188 ······································</span><span·class="ss">new</span><span·class="p"·data-group-id="3265460091-9">)</span><span·class="p">,</span></code></pre><p>Argument·<code·class="inline">Fun</code>·can·also·be·the·atom·<code·class="inline">ignore</code>,·which·indicates·that·only·the188 ······································</span><span·class="ss">new</span><span·class="p"·data-group-id="0171595317-9">)</span><span·class="p">,</span></code></pre><p>Argument·<code·class="inline">Fun</code>·can·also·be·the·atom·<code·class="inline">ignore</code>,·which·indicates·that·only·the
189 metadata·about·the·table·is·updated.·Use·of·<code·class="inline">ignore</code>·is·not·recommended·(as·it189 metadata·about·the·table·is·updated.·Use·of·<code·class="inline">ignore</code>·is·not·recommended·(as·it
190 creates·inconsistencies·between·the·metadata·and·the·actual·data)·but·it·is190 creates·inconsistencies·between·the·metadata·and·the·actual·data)·but·it·is
191 included·as·a·possibility·for·the·user·do·to·an·own·(offline)·transform.</p></li><li><p><a·href="mnesia.html#change_table_copy_type/3"><code·class="inline">mnesia:change_table_copy_type(Tab,·Node,·ToType)</code></a>191 included·as·a·possibility·for·the·user·do·to·an·own·(offline)·transform.</p></li><li><p><a·href="mnesia.html#change_table_copy_type/3"><code·class="inline">mnesia:change_table_copy_type(Tab,·Node,·ToType)</code></a>
192 changes·the·storage·type·of·a·table.·For·example,·a·RAM·table·is·changed·to·a192 changes·the·storage·type·of·a·table.·For·example,·a·RAM·table·is·changed·to·a
193 <code·class="inline">disc_table</code>·at·the·node·specified·as·<code·class="inline">Node</code>.</p></li></ul><h2·id="data-model"·class="section-heading">193 <code·class="inline">disc_table</code>·at·the·node·specified·as·<code·class="inline">Node</code>.</p></li></ul><h2·id="data-model"·class="section-heading">
194 ··<a·href="#data-model"·class="hover-link">194 ··<a·href="#data-model"·class="hover-link">
195 ····<i·class="ri-link-m"·aria-hidden="true"></i>195 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 234, 37 lines modifiedOffset 234, 37 lines modified
234 <a·href="mnesia_chap2.html#getting_started">Getting·Started</a>·to·illustrate·how·to·run·a234 <a·href="mnesia_chap2.html#getting_started">Getting·Started</a>·to·illustrate·how·to·run·a
235 database·on·two·separate·nodes,·called·<code·class="inline">a@gin</code>·and·<code·class="inline">b@skeppet</code>.·Each·of·these235 database·on·two·separate·nodes,·called·<code·class="inline">a@gin</code>·and·<code·class="inline">b@skeppet</code>.·Each·of·these
236 nodes·must·have·a·<code·class="inline">Mnesia</code>·directory·and·an·initialized·schema·before·<code·class="inline">Mnesia</code>236 nodes·must·have·a·<code·class="inline">Mnesia</code>·directory·and·an·initialized·schema·before·<code·class="inline">Mnesia</code>
237 can·be·started.·There·are·two·ways·to·specify·the·<code·class="inline">Mnesia</code>·directory·to·be·used:</p><ul><li><p>Specify·the·<code·class="inline">Mnesia</code>·directory·by·providing·an·application·parameter·either237 can·be·started.·There·are·two·ways·to·specify·the·<code·class="inline">Mnesia</code>·directory·to·be·used:</p><ul><li><p>Specify·the·<code·class="inline">Mnesia</code>·directory·by·providing·an·application·parameter·either
238 when·starting·the·Erlang·shell·or·in·the·application·script.·Previously,·the238 when·starting·the·Erlang·shell·or·in·the·application·script.·Previously,·the
239 following·example·was·used·to·create·the·directory·for·the·<code·class="inline">Company</code>·database:</p><pre><code·class="text">%·erl·-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.Company&quot;'</code></pre></li><li><p>If·no·command-line·flag·is·entered,·the·<code·class="inline">Mnesia</code>·directory·becomes·the·current239 following·example·was·used·to·create·the·directory·for·the·<code·class="inline">Company</code>·database:</p><pre><code·class="text">%·erl·-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.Company&quot;'</code></pre></li><li><p>If·no·command-line·flag·is·entered,·the·<code·class="inline">Mnesia</code>·directory·becomes·the·current
240 working·directory·on·the·node·where·the·Erlang·shell·is·started.</p></li></ul><p>To·start·the·<code·class="inline">Company</code>·database·and·get·it·running·on·the·two·specified·nodes,240 working·directory·on·the·node·where·the·Erlang·shell·is·started.</p></li></ul><p>To·start·the·<code·class="inline">Company</code>·database·and·get·it·running·on·the·two·specified·nodes,
241 enter·the·following·commands:</p><ol><li>On·the·node·<code·class="inline">a@gin</code>:</li></ol><pre><code·class="text">·gin·%·erl·-sname·a··-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.company&quot;'</code></pre><ol><li>On·the·node·<code·class="inline">b@skeppet</code>:</li></ol><pre><code·class="text">skeppet·%·erl·-sname·b·-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.company&quot;'</code></pre><ol><li>On·one·of·the·two·nodes:</li></ol><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(a@gin)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="0734348580-1">(</span><span·class="p"·data-group-id="0734348580-2">[</span><span·class="ss">a@gin</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b@skeppet</span><span·class="p"·data-group-id="0734348580-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·7d36c178e4300f5844d0e1f07fe4bd38fa626baa6623767bf89cd602a40d4382·...·]-1">)</span><span·class="p">.</span></code></pre><ol><li>The·function·<a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>·is·called·on·both·nodes.</li><li>To·initialize·the·database,·execute·the·following·code·on·one·of·the·two241 enter·the·following·commands:</p><ol><li>On·the·node·<code·class="inline">a@gin</code>:</li></ol><pre><code·class="text">·gin·%·erl·-sname·a··-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.company&quot;'</code></pre><ol><li>On·the·node·<code·class="inline">b@skeppet</code>:</li></ol><pre><code·class="text">skeppet·%·erl·-sname·b·-mnesia·dir·'&quot;/ldisc/scratch/Mnesia.company&quot;'</code></pre><ol><li>On·one·of·the·two·nodes:</li></ol><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(a@gin)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="3525607895-1">(</span><span·class="p"·data-group-id="3525607895-2">[</span><span·class="ss">a@gin</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b@skeppet</span><span·class="p"·data-group-id="3525607895-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·86fe34d3a09a1153384ec2454daeb106d92d7eaaeead9cd81424617c7131a854·...·]-1">)</span><span·class="p">.</span></code></pre><ol><li>The·function·<a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>·is·called·on·both·nodes.</li><li>To·initialize·the·database,·execute·the·following·code·on·one·of·the·two
242 nodes:</li></ol><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">dist_init</span><span·class="p"·data-group-id="5186850364-1">(</span><span·class="p"·data-group-id="5186850364-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">242 nodes:</li></ol><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">dist_init</span><span·class="p"·data-group-id="4819798061-1">(</span><span·class="p"·data-group-id="4819798061-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
243 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="5186850364-2">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">243 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4819798061-2">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
244 ·························</span><span·class="p"·data-group-id="5186850364-3">[</span><span·class="p"·data-group-id="5186850364-4">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186850364-5">[</span><span·class="ss">a@gin</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·158,·SHA:·8be5e5d6a64c27c50b05d8c5d9e0b47f57aed6177241623635f4eb2528c25ee4·...·]-4">}</span><span·class="p">,</span><span·class="w">244 ·························</span><span·class="p"·data-group-id="4819798061-3">[</span><span·class="p"·data-group-id="4819798061-4">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4819798061-5">[</span><span·class="ss">a@gin</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·158,·SHA:·b5c8f3919c868ee094cd58b684ef4d5e41ea8491b83da9465014479c63b0e698·...·]-4">}</span><span·class="p">,</span><span·class="w">
245 ··························</span><span·class="p"·data-group-id="5186850364-6">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="5186850364-7">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">245 ··························</span><span·class="p"·data-group-id="4819798061-6">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4819798061-7">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">
246 »       »       »       »       »       »       ···</span><span·class="ss">employee</span><span·class="p"·data-group-id="5186850364-7">)</span><span·class="p"·data-group-id="5186850364-6">}</span><span·class="p"·data-group-id="5186850364-3">]</span><span·class="p"·data-group-id="5186850364-2">)</span><span·class="p">,</span><span·class="w">246 »       »       »       »       »       »       ···</span><span·class="ss">employee</span><span·class="p"·data-group-id="4819798061-7">)</span><span·class="p"·data-group-id="4819798061-6">}</span><span·class="p"·data-group-id="4819798061-3">]</span><span·class="p"·data-group-id="4819798061-2">)</span><span·class="p">,</span><span·class="w">
247 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="5186850364-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4819798061-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">
248 ·························</span><span·class="p"·data-group-id="5186850364-9">[</span><span·class="p"·data-group-id="5186850364-10">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186850364-11">[</span><span·class="ss">a@gin</span><span·class="p"[·...·truncated·by·diffoscope;·len:·161,·SHA:·b2b6bcc68717aa5a16d920d5d7ec7233449d6e6f4d7129fa590ccbfa69b7d09b·...·]-10">}</span><span·class="p">,</span><span·class="w">248 ·························</span><span·class="p"·data-group-id="4819798061-9">[</span><span·class="p"·data-group-id="4819798061-10">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4819798061-11">[</span><span·class="ss">a@gin</span><span·class="p"[·...·truncated·by·diffoscope;·len:·161,·SHA:·594eeee2bb51dc712caa806ca9d63c5104e331470dee02f622cbed8bcc6e7192·...·]-10">}</span><span·class="p">,</span><span·class="w">
249 ··························</span><span·class="p"·data-group-id="5186850364-12">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="5186850364-13">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·246,·SHA:·dbe8cc34a9e764c0862c57e8c316f8aa131deadddd068ef9692c83e8d41a35ef·...·]-8">)</span><span·class="p">,</span><span·class="w">249 ··························</span><span·class="p"·data-group-id="4819798061-12">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4819798061-13">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·246,·SHA:·e6673af6b58eeb10d00c426f23f8535bcb01db82f2885f1d2f0f03f06bab5d29·...·]-8">)</span><span·class="p">,</span><span·class="w">
250 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="5186850364-14">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">250 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4819798061-14">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">
251 ·························</span><span·class="p"·data-group-id="5186850364-15">[</span><span·class="p"·data-group-id="5186850364-16">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186850364-17">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·015ac9aed627ac34c19c8369ec8603ac8a8b140e61850abd87556bb423a9c91a·...·]-16">}</span><span·class="p">,</span><span·class="w">251 ·························</span><span·class="p"·data-group-id="4819798061-15">[</span><span·class="p"·data-group-id="4819798061-16">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4819798061-17">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·f9db8c30094771287dfd15235433f348ae1596b337f2f65ad8a6eae1dd19d670·...·]-16">}</span><span·class="p">,</span><span·class="w">
252 ··························</span><span·class="p"·data-group-id="5186850364-18">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="5186850364-19">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·a813e3b0051a374212134aa5e35c3ef61bca6e6d65277f08793277e4becc23de·...·]-14">)</span><span·class="p">,</span><span·class="w">252 ··························</span><span·class="p"·data-group-id="4819798061-18">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4819798061-19">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·1b1afc20cedeba34f6fea16c8cdc1f050116295c65e1fb01db7c1af5d345f577·...·]-14">)</span><span·class="p">,</span><span·class="w">
253 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="5186850364-20">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186850364-21">[</span><span·class="p"·data-group-id="5186850364-22">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·9aa53264882bbdf51ec0d86c56b656632fc00c83ad086c497c1c9126f49fd79e·...·]-22">}</span><span·class="p">,</span><span·class="w">253 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4819798061-20">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4819798061-21">[</span><span·class="p"·data-group-id="4819798061-22">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·066a939cc9c1ed57eaad3d3c3acb004218549a4c49faf2bea74ec04efc8fcc6f·...·]-22">}</span><span·class="p">,</span><span·class="w">
254 ··································</span><span·class="p"·data-group-id="5186850364-23">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186850364-24">[</span><span·class="ss">a@gin</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b@s[·...·truncated·by·diffoscope;·len:·108,·SHA:·79c644e2c17560f39b4ba0865f7259fbeb3b9aed117177db5c11b0bb6e6370d7·...·]-23">}</span><span·class="p">,</span><span·class="w">254 ··································</span><span·class="p"·data-group-id="4819798061-23">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4819798061-24">[</span><span·class="ss">a@gin</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b@s[·...·truncated·by·diffoscope;·len:·108,·SHA:·31b950106aef7473f9e5f814c53cf38721fbcad0783199d95b2642f0fac43613·...·]-23">}</span><span·class="p">,</span><span·class="w">
255 ··································</span><span·class="p"·data-group-id="5186850364-25">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="5186850364-26">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">255 ··································</span><span·class="p"·data-group-id="4819798061-25">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4819798061-26">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">
256 »       »       »       »       »       »       »       ···</span><span·class="ss">manager</span><span·class="p"·data-group-id="5186850364-26">)</span><span·class="p"·data-group-id="5186850364-25">}</span><span·class="p"·data-group-id="5186850364-21">]</span><span·class="p"·data-group-id="5186850364-20">)</span><span·class="p">,</span><span·class="w">256 »       »       »       »       »       »       »       ···</span><span·class="ss">manager</span><span·class="p"·data-group-id="4819798061-26">)</span><span·class="p"·data-group-id="4819798061-25">}</span><span·class="p"·data-group-id="4819798061-21">]</span><span·class="p"·data-group-id="4819798061-20">)</span><span·class="p">,</span><span·class="w">
257 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="5186850364-27">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">257 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4819798061-27">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">
258 ·························</span><span·class="p"·data-group-id="5186850364-28">[</span><span·class="p"·data-group-id="5186850364-29">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186850364-30">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·c4496bdc08e21865e7582147aec55da960b50893a2c6b28376449ad57e10cfa2·...·]-29">}</span><span·class="p">,</span><span·class="w">258 ·························</span><span·class="p"·data-group-id="4819798061-28">[</span><span·class="p"·data-group-id="4819798061-29">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4819798061-30">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·cab240b574f86062211012afd2a3dde866867231be3c227f1d1d7ce6d6b6e7a0·...·]-29">}</span><span·class="p">,</span><span·class="w">
259 ··························</span><span·class="p"·data-group-id="5186850364-31">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="5186850364-32">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·249,·SHA:·52eba8c7145319962b0ea0a8fd432855432a598f638d8cd7a40cef5510e28da7·...·]-27">)</span><span·class="p">,</span><span·class="w">259 ··························</span><span·class="p"·data-group-id="4819798061-31">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4819798061-32">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·249,·SHA:·5fcb200f9d92f6858625c5cd376c4f32455834c211c2e29c9e3b962659fed65a·...·]-27">)</span><span·class="p">,</span><span·class="w">
260 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="5186850364-33">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">260 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4819798061-33">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">
261 ························</span><span·class="p"·data-group-id="5186850364-34">[</span><span·class="p"·data-group-id="5186850364-35">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bag</span><span·class="p"·data-group-id="5186850364-35">}</span><span·class="p">,</span><span·class="w">261 ························</span><span·class="p"·data-group-id="4819798061-34">[</span><span·class="p"·data-group-id="4819798061-35">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bag</span><span·class="p"·data-group-id="4819798061-35">}</span><span·class="p">,</span><span·class="w">
262 ·························</span><span·class="p"·data-group-id="5186850364-36">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186850364-37">[</span><span·class="ss">a@gin</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b@s[·...·truncated·by·diffoscope;·len:·108,·SHA:·0ce426ebb740a390c5e346129ab2b04a6b3038340dc5f134cc8cceff056e7095·...·]-36">}</span><span·class="p">,</span><span·class="w">262 ·························</span><span·class="p"·data-group-id="4819798061-36">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4819798061-37">[</span><span·class="ss">a@gin</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b@s[·...·truncated·by·diffoscope;·len:·108,·SHA:·cd2f36f179a038f7ce75712815c614bc0fa5366b42faf1cebc6fc3f2ee588a2c·...·]-36">}</span><span·class="p">,</span><span·class="w">
263 ·························</span><span·class="p"·data-group-id="5186850364-38">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="5186850364-39">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·17650d9f937444d2d2d620ffa2d5a8fcf9d6f070d7b36a817020dca4e17375ec·...·]-33">)</span><span·class="p">.</span></code></pre><p>As·illustrated,·the·two·directories·reside·on·different·nodes,·because263 ·························</span><span·class="p"·data-group-id="4819798061-38">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="4819798061-39">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·89353b16eb39d0934ba419bd34e9ad272c98b908bfd84a76fe9b87ab61090e24·...·]-33">)</span><span·class="p">.</span></code></pre><p>As·illustrated,·the·two·directories·reside·on·different·nodes,·because
264 <code·class="inline">/ldisc/scratch</code>·(the·&quot;local&quot;·disc)·exists·on·the·two·different·nodes.</p><p>By·executing·these·commands,·two·Erlang·nodes·are·configured·to·run·the264 <code·class="inline">/ldisc/scratch</code>·(the·&quot;local&quot;·disc)·exists·on·the·two·different·nodes.</p><p>By·executing·these·commands,·two·Erlang·nodes·are·configured·to·run·the
265 <code·class="inline">Company</code>·database,·and·therefore,·initialize·the·database.·This·is·required265 <code·class="inline">Company</code>·database,·and·therefore,·initialize·the·database.·This·is·required
266 only·once·when·setting·up.·The·next·time·the·system·is·started,266 only·once·when·setting·up.·The·next·time·the·system·is·started,
267 <a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>·is·called·on·both·nodes,·to·initialize·the267 <a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>·is·called·on·both·nodes,·to·initialize·the
268 system·from·disc.</p><p>In·a·system·of·<code·class="inline">Mnesia</code>·nodes,·every·node·is·aware·of·the·current·location·of268 system·from·disc.</p><p>In·a·system·of·<code·class="inline">Mnesia</code>·nodes,·every·node·is·aware·of·the·current·location·of
269 all·tables.·In·this·example,·data·is·replicated·on·both·nodes·and·functions·that269 all·tables.·In·this·example,·data·is·replicated·on·both·nodes·and·functions·that
270 manipulate·the·data·in·the·tables·can·be·executed·on·either·of·the·two·nodes.270 manipulate·the·data·in·the·tables·can·be·executed·on·either·of·the·two·nodes.
Offset 273, 15 lines modifiedOffset 273, 15 lines modified
273 the·function·is·executed.·The·functions·<a·href="mnesia.html#start/0"><code·class="inline">mnesia:start/0</code></a>·and·<a·href="mnesia.html#stop/0"><code·class="inline">mnesia:stop/0</code></a>273 the·function·is·executed.·The·functions·<a·href="mnesia.html#start/0"><code·class="inline">mnesia:start/0</code></a>·and·<a·href="mnesia.html#stop/0"><code·class="inline">mnesia:stop/0</code></a>
274 work·on·the·&quot;local&quot;·<code·class="inline">Mnesia</code>·system.·No·functions·start·or·stop·a·set·of·nodes.</p><h3·id="startup-procedure"·class="section-heading">274 work·on·the·&quot;local&quot;·<code·class="inline">Mnesia</code>·system.·No·functions·start·or·stop·a·set·of·nodes.</p><h3·id="startup-procedure"·class="section-heading">
275 ··<a·href="#startup-procedure"·class="hover-link">275 ··<a·href="#startup-procedure"·class="hover-link">
276 ····<i·class="ri-link-m"·aria-hidden="true"></i>276 ····<i·class="ri-link-m"·aria-hidden="true"></i>
277 ··</a>277 ··</a>
278 ··<span·class="text">Startup·Procedure</span>278 ··<span·class="text">Startup·Procedure</span>
279 </h3>279 </h3>
280 <p>Start·<code·class="inline">Mnesia</code>·by·calling·the·following·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2907422071-1">(</span><span·class="p"·data-group-id="2907422071-1">)</span><span·class="p">.</span></code></pre><p>This·function·initiates·the·DBMS·locally.</p><p>The·choice·of·configuration·alters·the·location·and·load·order·of·the·tables.280 <p>Start·<code·class="inline">Mnesia</code>·by·calling·the·following·function:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2787207318-1">(</span><span·class="p"·data-group-id="2787207318-1">)</span><span·class="p">.</span></code></pre><p>This·function·initiates·the·DBMS·locally.</p><p>The·choice·of·configuration·alters·the·location·and·load·order·of·the·tables.
281 The·alternatives·are·as·follows:</p><ol><li>Tables·that·are·only·stored·locally·are·initialized·from·the·local·<code·class="inline">Mnesia</code>281 The·alternatives·are·as·follows:</p><ol><li>Tables·that·are·only·stored·locally·are·initialized·from·the·local·<code·class="inline">Mnesia</code>
282 directory.</li><li>Replicated·tables·that·reside·locally·as·well·as·somewhere·else·are·either282 directory.</li><li>Replicated·tables·that·reside·locally·as·well·as·somewhere·else·are·either
283 initiated·from·disc·or·by·copying·the·entire·table·from·the·other·node,283 initiated·from·disc·or·by·copying·the·entire·table·from·the·other·node,
284 depending·on·which·of·the·different·replicas·are·the·most·recent.·<code·class="inline">Mnesia</code>284 depending·on·which·of·the·different·replicas·are·the·most·recent.·<code·class="inline">Mnesia</code>
285 determines·which·of·the·tables·are·the·most·recent.</li><li>Tables·that·reside·on·remote·nodes·are·available·to·other·nodes·as·soon·as285 determines·which·of·the·tables·are·the·most·recent.</li><li>Tables·that·reside·on·remote·nodes·are·available·to·other·nodes·as·soon·as
286 they·are·loaded.</li></ol><p>Table·initialization·is·asynchronous.·The·function·call286 they·are·loaded.</li></ol><p>Table·initialization·is·asynchronous.·The·function·call
287 <a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>·returns·the·atom·<code·class="inline">ok</code>·and·then·starts·to287 <a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>·returns·the·atom·<code·class="inline">ok</code>·and·then·starts·to
Offset 296, 17 lines modifiedOffset 296, 17 lines modified
296 situation,·a·call·to·<a·href="mnesia.html#wait_for_tables/2"><code·class="inline">mnesia:wait_for_tables/2</code></a>,·suspends·the·caller·until·the296 situation,·a·call·to·<a·href="mnesia.html#wait_for_tables/2"><code·class="inline">mnesia:wait_for_tables/2</code></a>,·suspends·the·caller·until·the
297 remote·node·has·initialized·the·table·from·its·local·disc·and·the·node·has297 remote·node·has·initialized·the·table·from·its·local·disc·and·the·node·has
298 copied·the·table·over·the·network·to·the·local·node.</p><p>However,·this·procedure·can·be·time-consuming,·the·shortcut·function298 copied·the·table·over·the·network·to·the·local·node.</p><p>However,·this·procedure·can·be·time-consuming,·the·shortcut·function
299 <a·href="mnesia.html#force_load_table/1"><code·class="inline">mnesia:force_load_table(Tab)</code></a>·loads·all·the·tables299 <a·href="mnesia.html#force_load_table/1"><code·class="inline">mnesia:force_load_table(Tab)</code></a>·loads·all·the·tables
300 from·disc·at·a·faster·rate.·The·function·forces·tables·to·be·loaded·from·disc300 from·disc·at·a·faster·rate.·The·function·forces·tables·to·be·loaded·from·disc
301 regardless·of·the·network·situation.</p><p>Thus,·it·can·be·assumed·that·if·an·application·wants·to·use·tables·<code·class="inline">a</code>·and·<code·class="inline">b</code>,301 regardless·of·the·network·situation.</p><p>Thus,·it·can·be·assumed·that·if·an·application·wants·to·use·tables·<code·class="inline">a</code>·and·<code·class="inline">b</code>,
302 the·application·must·perform·some·action·similar·to·following·before·it·can·use302 the·application·must·perform·some·action·similar·to·following·before·it·can·use
303 the·tables:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">wait_for_tables</span><span·class="p"·data-group-id="1891352922-1">(</span><span·class="p"·data-group-id="1891352922-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="1891352922-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·6cadaa26c393d75b65790e2b3509cca5403510d0dc9a96d979c9d6520aed242c·...·]-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">303 the·tables:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">wait_for_tables</span><span·class="p"·data-group-id="6039454177-1">(</span><span·class="p"·data-group-id="6039454177-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p"·data-group-id="6039454177-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·f542a826fbb9d246578a1bc0111cf71fbe213212521819bd4f6aa695ae58ba8a·...·]-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
304 ··</span><span·class="p"·data-group-id="1891352922-3">{</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="1891352922-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">304 ··</span><span·class="p"·data-group-id="6039454177-3">{</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="6039454177-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
305 ····</span><span·class="nf">panic</span><span·class="p"·data-group-id="1891352922-4">(</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="1891352922-4">)</span><span·class="p">;</span><span·class="w">305 ····</span><span·class="nf">panic</span><span·class="p"·data-group-id="6039454177-4">(</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="6039454177-4">)</span><span·class="p">;</span><span·class="w">
306 ··</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">306 ··</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
307 ····</span><span·class="ss">synced</span><span·class="w">307 ····</span><span·class="ss">synced</span><span·class="w">
308 </span><span·class="k">end</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>When·tables·are·forcefully·loaded·from·the·local·disc,·all·operations·that308 </span><span·class="k">end</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>When·tables·are·forcefully·loaded·from·the·local·disc,·all·operations·that
309 were·performed·on·the·replicated·table·while·the·local·node·was·down,·and·the309 were·performed·on·the·replicated·table·while·the·local·node·was·down,·and·the
310 remote·replica·was·alive,·are·lost.·This·can·cause·the·database·to·become310 remote·replica·was·alive,·are·lost.·This·can·cause·the·database·to·become
311 inconsistent.</p></section><p>If·the·startup·procedure·fails,·the·function·<a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>311 inconsistent.</p></section><p>If·the·startup·procedure·fails,·the·function·<a·href="mnesia.html#start/0"><code·class="inline">mnesia:start()</code></a>
312 returns·the·cryptic·tuple312 returns·the·cryptic·tuple
Offset 324, 21 lines modifiedOffset 324, 21 lines modified
324 the·records·that·constitute·the·table.·For·details,·see·<code·class="inline">record_name</code>.</li><li><code·class="inline">ArgList</code>·is·a·list·of·<code·class="inline">{Key,Value}</code>·tuples.·The·following·arguments·are324 the·records·that·constitute·the·table.·For·details,·see·<code·class="inline">record_name</code>.</li><li><code·class="inline">ArgList</code>·is·a·list·of·<code·class="inline">{Key,Value}</code>·tuples.·The·following·arguments·are
325 valid:<ul><li><p><code·class="inline">{type,·Type}</code>,·where·<code·class="inline">Type</code>·must·be·either·of·the·atoms·<code·class="inline">set</code>,325 valid:<ul><li><p><code·class="inline">{type,·Type}</code>,·where·<code·class="inline">Type</code>·must·be·either·of·the·atoms·<code·class="inline">set</code>,
326 <code·class="inline">ordered_set</code>,·or·<code·class="inline">bag</code>.·Default·is·<code·class="inline">set</code>.</p><p>Notice·that·currently·<code·class="inline">ordered_set</code>·is·not·supported·for·<code·class="inline">disc_only_copies</code>326 <code·class="inline">ordered_set</code>,·or·<code·class="inline">bag</code>.·Default·is·<code·class="inline">set</code>.</p><p>Notice·that·currently·<code·class="inline">ordered_set</code>·is·not·supported·for·<code·class="inline">disc_only_copies</code>
327 tables.</p><p>A·table·of·type·<code·class="inline">set</code>·or·<code·class="inline">ordered_set</code>·has·either·zero·or·one·record·per327 tables.</p><p>A·table·of·type·<code·class="inline">set</code>·or·<code·class="inline">ordered_set</code>·has·either·zero·or·one·record·per
328 key,·whereas·a·table·of·type·<code·class="inline">bag</code>·can·have·an·arbitrary·number·of·records328 key,·whereas·a·table·of·type·<code·class="inline">bag</code>·can·have·an·arbitrary·number·of·records
329 per·key.·The·key·for·each·record·is·always·the·first·attribute·of·the329 per·key.·The·key·for·each·record·is·always·the·first·attribute·of·the
330 record.</p><p>The·following·example·illustrates·the·difference·between·type·<code·class="inline">set</code>·and330 record.</p><p>The·following·example·illustrates·the·difference·between·type·<code·class="inline">set</code>·and
331 <code·class="inline">bag</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="nf">f</span><span·class="p"·data-group-id="9560425145-1">(</span><span·class="p"·data-group-id="9560425145-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">331 <code·class="inline">bag</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="nf">f</span><span·class="p"·data-group-id="9224823549-1">(</span><span·class="p"·data-group-id="9224823549-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
332 ····</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9560425145-2">(</span><span·class="p"·data-group-id="9560425145-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">332 ····</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9224823549-2">(</span><span·class="p"·data-group-id="9224823549-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
333 ··········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9560425145-3">(</span><span·class="p"·data-group-id="9560425145-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·40d69cb1426225f91a5789a3751d5b79ebb647156c485fa55d1ce9c25a5054fa·...·]-3">)</span><span·class="p">,</span><span·class="w">333 ··········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9224823549-3">(</span><span·class="p"·data-group-id="9224823549-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·c4b1e31680033c9de0be8bb53dcd65ce8140ba56525d6bdeb9a977e91546dada·...·]-3">)</span><span·class="p">,</span><span·class="w">
334 ··········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9560425145-5">(</span><span·class="p"·data-group-id="9560425145-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·41516a0f0d8ece433f0089978d1562bc535d4b9c8c5eb817d2884e1ae13444cd·...·]-5">)</span><span·class="p">,</span><span·class="w">334 ··········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9224823549-5">(</span><span·class="p"·data-group-id="9224823549-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·ebb8d7c38d9a03393b4066965c43d40876168458c3e244cb7efe8f9aa95bf507·...·]-5">)</span><span·class="p">,</span><span·class="w">
335 ··········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="9560425145-7">(</span><span·class="p"·data-group-id="9560425145-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="9560425145-8">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·49c6f9c85aa074636d3d626abf9f014f73ff1f96541e8d505ec77278c6c6a8ca·...·]-7">)</span><span·class="w">335 ··········</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="9224823549-7">(</span><span·class="p"·data-group-id="9224823549-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="9224823549-8">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·fb4bd70fc342516fb3766ada50107ab87d8737b5149c3cdbb348058650a10eee·...·]-7">)</span><span·class="w">
336 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">336 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
337 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="9560425145-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="9560425145-9">)</span><span·class="p">.</span></code></pre><p>This·transaction·returns·the·list·<code·class="inline">[{foo,1,3}]</code>·if·table·<code·class="inline">foo</code>·is·of·type337 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="9224823549-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="9224823549-9">)</span><span·class="p">.</span></code></pre><p>This·transaction·returns·the·list·<code·class="inline">[{foo,1,3}]</code>·if·table·<code·class="inline">foo</code>·is·of·type
338 <code·class="inline">set</code>.·However,·the·list·<code·class="inline">[{foo,1,2},·{foo,1,3}]</code>·is·returned·if·the·table338 <code·class="inline">set</code>.·However,·the·list·<code·class="inline">[{foo,1,2},·{foo,1,3}]</code>·is·returned·if·the·table
339 is·of·type·<code·class="inline">bag</code>.</p><p><code·class="inline">Mnesia</code>·tables·can·never·contain·duplicates·of·the·same·record·in·the·same339 is·of·type·<code·class="inline">bag</code>.</p><p><code·class="inline">Mnesia</code>·tables·can·never·contain·duplicates·of·the·same·record·in·the·same
340 table.·Duplicate·records·have·attributes·with·the·same·contents·and·key.</p></li><li><p><code·class="inline">{disc_copies,·NodeList}</code>,·where·<code·class="inline">NodeList</code>·is·a·list·of·the·nodes·where340 table.·Duplicate·records·have·attributes·with·the·same·contents·and·key.</p></li><li><p><code·class="inline">{disc_copies,·NodeList}</code>,·where·<code·class="inline">NodeList</code>·is·a·list·of·the·nodes·where
341 this·table·is·to·reside·on·disc.</p><p>Write·operations·to·a·table·replica·of·type·<code·class="inline">disc_copies</code>·write·data·to·the341 this·table·is·to·reside·on·disc.</p><p>Write·operations·to·a·table·replica·of·type·<code·class="inline">disc_copies</code>·write·data·to·the
342 disc·copy·and·to·the·RAM·copy·of·the·table.</p><p>It·is·possible·to·have·a·replicated·table·of·type·<code·class="inline">disc_copies</code>·on·one·node,342 disc·copy·and·to·the·RAM·copy·of·the·table.</p><p>It·is·possible·to·have·a·replicated·table·of·type·<code·class="inline">disc_copies</code>·on·one·node,
343 and·the·same·table·stored·as·a·different·type·on·another·node.·Default·is343 and·the·same·table·stored·as·a·different·type·on·another·node.·Default·is
344 <code·class="inline">[]</code>.·This·arrangement·is·desirable·if·the·following·operational344 <code·class="inline">[]</code>.·This·arrangement·is·desirable·if·the·following·operational
Offset 374, 19 lines modifiedOffset 374, 19 lines modified
374 possible·for·you·to·provide·the·attribute·names·or·to·use·the374 possible·for·you·to·provide·the·attribute·names·or·to·use·the
375 <code·class="inline">record_info/2</code>·notation.</p><p>It·is·recommended·to·use·the·<code·class="inline">record_info/2</code>·notation,·as·it·becomes·easier375 <code·class="inline">record_info/2</code>·notation.</p><p>It·is·recommended·to·use·the·<code·class="inline">record_info/2</code>·notation,·as·it·becomes·easier
376 to·maintain·the·program·and·the·program·becomes·more·robust·with·regards·to376 to·maintain·the·program·and·the·program·becomes·more·robust·with·regards·to
377 future·record·changes.</p></li><li><p><code·class="inline">{record_name,·Atom}</code>·specifies·the·common·name·of·all·records·stored·in·the377 future·record·changes.</p></li><li><p><code·class="inline">{record_name,·Atom}</code>·specifies·the·common·name·of·all·records·stored·in·the
378 table.·All·records·stored·in·the·table·must·have·this·name·as·their·first378 table.·All·records·stored·in·the·table·must·have·this·name·as·their·first
379 element.·<code·class="inline">record_name</code>·defaults·to·the·name·of·the·table.·For·more379 element.·<code·class="inline">record_name</code>·defaults·to·the·name·of·the·table.·For·more
Max diff block lines reached; 7203/53163 bytes (13.55%) of diff not shown.
141 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_chap4.html
    
Offset 141, 22 lines modifiedOffset 141, 22 lines modified
141 <p>Transactions·are·important·when·designing·fault-tolerant,·distributed·systems.·A141 <p>Transactions·are·important·when·designing·fault-tolerant,·distributed·systems.·A
142 <code·class="inline">Mnesia</code>·transaction·is·a·mechanism·by·which·a·series·of·database·operations·can142 <code·class="inline">Mnesia</code>·transaction·is·a·mechanism·by·which·a·series·of·database·operations·can
143 be·executed·as·one·functional·block.·The·functional·block·that·is·run·as·a143 be·executed·as·one·functional·block.·The·functional·block·that·is·run·as·a
144 transaction·is·called·a·Functional·Object·(Fun),·and·this·code·can·read,·write,144 transaction·is·called·a·Functional·Object·(Fun),·and·this·code·can·read,·write,
145 and·delete·<code·class="inline">Mnesia</code>·records.·The·Fun·is·evaluated·as·a·transaction·that·either145 and·delete·<code·class="inline">Mnesia</code>·records.·The·Fun·is·evaluated·as·a·transaction·that·either
146 commits·or·terminates.·If·a·transaction·succeeds·in·executing·the·Fun,·it146 commits·or·terminates.·If·a·transaction·succeeds·in·executing·the·Fun,·it
147 replicates·the·action·on·all·nodes·involved,·or·terminates·if·an·error·occurs.</p><p>The·following·example·shows·a·transaction·that·raises·the·salary·of·certain147 replicates·the·action·on·all·nodes·involved,·or·terminates·if·an·error·occurs.</p><p>The·following·example·shows·a·transaction·that·raises·the·salary·of·certain
148 employee·numbers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">raise</span><span·class="p"·data-group-id="6878346972-1">(</span><span·class="n">Eno</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p"·data-group-id="6878346972-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 employee·numbers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">raise</span><span·class="p"·data-group-id="4039323360-1">(</span><span·class="n">Eno</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p"·data-group-id="4039323360-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ····</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6878346972-2">(</span><span·class="p"·data-group-id="6878346972-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ····</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4039323360-2">(</span><span·class="p"·data-group-id="4039323360-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 ················</span><span·class="p"·data-group-id="6878346972-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="6878346972-3">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><sp[·...·truncated·by·diffoscope;·len:·274,·SHA:·6aa35906ce060d9c8e88b7152b6f856762d32b21e787eb1884fcb3bbb3ab2210·...·]-4">)</span><span·class="p">,</span><span·class="w">150 ················</span><span·class="p"·data-group-id="4039323360-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="4039323360-3">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><sp[·...·truncated·by·diffoscope;·len:·274,·SHA:·042d3bd5423c3778df3b44d44135e27851776f80bb73fb940c2a7113649ad9a2·...·]-4">)</span><span·class="p">,</span><span·class="w">
151 ················</span><span·class="n">Salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p">.</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p">,</span><span·class="w">151 ················</span><span·class="n">Salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p">.</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p">,</span><span·class="w">
152 ················</span><span·class="n">New</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p"·data-group-id="6878346972-5">{</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Salary</span><span·class="p"·data-group-id="6878346972-5">}</span><span·class="p">,</span><span·class="w">152 ················</span><span·class="n">New</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p"·data-group-id="4039323360-5">{</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Salary</span><span·class="p"·data-group-id="4039323360-5">}</span><span·class="p">,</span><span·class="w">
153 ················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="6878346972-6">(</span><span·class="n">New</span><span·class="p"·data-group-id="6878346972-6">)</span><span·class="w">153 ················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4039323360-6">(</span><span·class="n">New</span><span·class="p"·data-group-id="4039323360-6">)</span><span·class="w">
154 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">154 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
155 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="6878346972-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="6878346972-7">)</span><span·class="p">.</span></code></pre><p>The·function·<code·class="inline">raise/2</code>·contains·a·Fun·made·up·of·four·code·lines.·This·Fun·is155 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="4039323360-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="4039323360-7">)</span><span·class="p">.</span></code></pre><p>The·function·<code·class="inline">raise/2</code>·contains·a·Fun·made·up·of·four·code·lines.·This·Fun·is
156 called·by·the·statement·<code·class="inline">mnesia:transaction(F)</code>·and·returns·a·value.</p><p>The·<code·class="inline">Mnesia</code>·transaction·system·facilitates·the·construction·of·reliable,156 called·by·the·statement·<code·class="inline">mnesia:transaction(F)</code>·and·returns·a·value.</p><p>The·<code·class="inline">Mnesia</code>·transaction·system·facilitates·the·construction·of·reliable,
157 distributed·systems·by·providing·the·following·important·properties:</p><ul><li>The·transaction·handler·ensures·that·a·Fun,·which·is·placed·inside·a157 distributed·systems·by·providing·the·following·important·properties:</p><ul><li>The·transaction·handler·ensures·that·a·Fun,·which·is·placed·inside·a
158 transaction,·does·not·interfere·with·operations·embedded·in·other·transactions158 transaction,·does·not·interfere·with·operations·embedded·in·other·transactions
159 when·it·executes·a·series·of·operations·on·tables.</li><li>The·transaction·handler·ensures·that·either·all·operations·in·the·transaction159 when·it·executes·a·series·of·operations·on·tables.</li><li>The·transaction·handler·ensures·that·either·all·operations·in·the·transaction
160 are·performed·successfully·on·all·nodes·atomically,·or·the·transaction·fails160 are·performed·successfully·on·all·nodes·atomically,·or·the·transaction·fails
161 without·permanent·effect·on·any·node.</li><li>The·<code·class="inline">Mnesia</code>·transactions·have·four·important·properties,·called·<em>A</em>tomicity,161 without·permanent·effect·on·any·node.</li><li>The·<code·class="inline">Mnesia</code>·transactions·have·four·important·properties,·called·<em>A</em>tomicity,
162 <em>C</em>onsistency,·<em>I</em>solation,·and·<em>D</em>urability·(ACID).·These·properties·are162 <em>C</em>onsistency,·<em>I</em>solation,·and·<em>D</em>urability·(ACID).·These·properties·are
Offset 242, 23 lines modifiedOffset 242, 23 lines modified
242 code·these·operations.</p><p>Deadlocks·can·occur·when·concurrent·processes·set·and·release·locks·on·the·same242 code·these·operations.</p><p>Deadlocks·can·occur·when·concurrent·processes·set·and·release·locks·on·the·same
243 records.·<code·class="inline">Mnesia</code>·employs·a·&quot;wait-die&quot;·strategy·to·resolve·these·situations.·If243 records.·<code·class="inline">Mnesia</code>·employs·a·&quot;wait-die&quot;·strategy·to·resolve·these·situations.·If
244 <code·class="inline">Mnesia</code>·suspects·that·a·deadlock·can·occur·when·a·transaction·tries·to·set·a244 <code·class="inline">Mnesia</code>·suspects·that·a·deadlock·can·occur·when·a·transaction·tries·to·set·a
245 lock,·the·transaction·is·forced·to·release·all·its·locks·and·sleep·for·a·while.245 lock,·the·transaction·is·forced·to·release·all·its·locks·and·sleep·for·a·while.
246 The·Fun·in·the·transaction·is·evaluated·once·more.</p><p>It·is·therefore·important·that·the·code·inside·the·Fun·given·to246 The·Fun·in·the·transaction·is·evaluated·once·more.</p><p>It·is·therefore·important·that·the·code·inside·the·Fun·given·to
247 <a·href="mnesia.html#transaction/1"><code·class="inline">mnesia:transaction/1</code></a>·is·pure.·Some·strange·results·can·occur·if,·for·example,247 <a·href="mnesia.html#transaction/1"><code·class="inline">mnesia:transaction/1</code></a>·is·pure.·Some·strange·results·can·occur·if,·for·example,
248 messages·are·sent·by·the·transaction·Fun.·The·following·example·illustrates·this248 messages·are·sent·by·the·transaction·Fun.·The·following·example·illustrates·this
249 situation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bad_raise</span><span·class="p"·data-group-id="9683194637-1">(</span><span·class="n">Eno</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p"·data-group-id="9683194637-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">249 situation:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">bad_raise</span><span·class="p"·data-group-id="4379323999-1">(</span><span·class="n">Eno</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p"·data-group-id="4379323999-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
250 ····</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9683194637-2">(</span><span·class="p"·data-group-id="9683194637-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">250 ····</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4379323999-2">(</span><span·class="p"·data-group-id="4379323999-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="9683194637-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="9683194637-3">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><sp[·...·truncated·by·diffoscope;·len:·303,·SHA:·e22fb9fd55449090dfe59018d2413bef38e2063282523393c5816d715d51b4ab·...·]-4">)</span><span·class="p">,</span><span·class="w">251 ················</span><span·class="p"·data-group-id="4379323999-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="4379323999-3">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><sp[·...·truncated·by·diffoscope;·len:·303,·SHA:·2d1609b469e8f099c108a5d498ab956a288bc511f484b8ab1d77543326de1a44·...·]-4">)</span><span·class="p">,</span><span·class="w">
252 ················</span><span·class="n">Salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p">.</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p">,</span><span·class="w">252 ················</span><span·class="n">Salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p">.</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">Raise</span><span·class="p">,</span><span·class="w">
253 ················</span><span·class="n">New</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p"·data-group-id="9683194637-6">{</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Salary</span><span·class="p"·data-group-id="9683194637-6">}</span><span·class="p">,</span><span·class="w">253 ················</span><span·class="n">New</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span·class="o">#</span><span·class="ss">employee</span><span·class="p"·data-group-id="4379323999-6">{</span><span·class="ss">salary</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Salary</span><span·class="p"·data-group-id="4379323999-6">}</span><span·class="p">,</span><span·class="w">
254 ················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9683194637-7">(</span><span·class="s">&quot;Trying·to·write·...·</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9683194637-8">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·d54fffb1ac8ee73d233229dab096e05bf5dc38919922df29076d25b6abac40c5·...·]-7">)</span><span·class="p">,</span><span·class="w">254 ················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4379323999-7">(</span><span·class="s">&quot;Trying·to·write·...·</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4379323999-8">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·76cde39b839d84601a6b50bf239c186d95c8e59f2018f18358927101c90a3436·...·]-7">)</span><span·class="p">,</span><span·class="w">
255 ················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9683194637-9">(</span><span·class="n">New</span><span·class="p"·data-group-id="9683194637-9">)</span><span·class="w">255 ················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4379323999-9">(</span><span·class="n">New</span><span·class="p"·data-group-id="4379323999-9">)</span><span·class="w">
256 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">256 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
257 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="9683194637-10">(</span><span·class="n">F</span><span·class="p"·data-group-id="9683194637-10">)</span><span·class="p">.</span></code></pre><p>This·transaction·can·write·the·text·<code·class="inline">&quot;Trying·to·write·...·&quot;</code>·1000·times·to·the257 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="4379323999-10">(</span><span·class="n">F</span><span·class="p"·data-group-id="4379323999-10">)</span><span·class="p">.</span></code></pre><p>This·transaction·can·write·the·text·<code·class="inline">&quot;Trying·to·write·...·&quot;</code>·1000·times·to·the
258 terminal.·However,·<code·class="inline">Mnesia</code>·guarantees·that·each·transaction·will·eventually258 terminal.·However,·<code·class="inline">Mnesia</code>·guarantees·that·each·transaction·will·eventually
259 run.·As·a·result,·<code·class="inline">Mnesia</code>·is·not·only·deadlock·free,·but·also·livelock·free.</p><p>The·<code·class="inline">Mnesia</code>·programmer·cannot·prioritize·one·particular·transaction·to·execute259 run.·As·a·result,·<code·class="inline">Mnesia</code>·is·not·only·deadlock·free,·but·also·livelock·free.</p><p>The·<code·class="inline">Mnesia</code>·programmer·cannot·prioritize·one·particular·transaction·to·execute
260 before·other·transactions·that·are·waiting·to·execute.·As·a·result,·the·<code·class="inline">Mnesia</code>260 before·other·transactions·that·are·waiting·to·execute.·As·a·result,·the·<code·class="inline">Mnesia</code>
261 DBMS·transaction·system·is·not·suitable·for·hard·real-time·applications.261 DBMS·transaction·system·is·not·suitable·for·hard·real-time·applications.
262 However,·<code·class="inline">Mnesia</code>·contains·other·features·that·have·real-time·properties.</p><p><code·class="inline">Mnesia</code>·dynamically·sets·and·releases·locks·as·transactions·execute.·It·is262 However,·<code·class="inline">Mnesia</code>·contains·other·features·that·have·real-time·properties.</p><p><code·class="inline">Mnesia</code>·dynamically·sets·and·releases·locks·as·transactions·execute.·It·is
263 therefore·dangerous·to·execute·code·with·transaction·side-effects.·In263 therefore·dangerous·to·execute·code·with·transaction·side-effects.·In
264 particular,·a·<code·class="inline">receive</code>·statement·inside·a·transaction·can·lead·to·a·situation264 particular,·a·<code·class="inline">receive</code>·statement·inside·a·transaction·can·lead·to·a·situation
Offset 297, 21 lines modifiedOffset 297, 21 lines modified
297 record·when·reading·a·record,·and·lock·all·replicas·of·a·record·when·writing·a297 record·when·reading·a·record,·and·lock·all·replicas·of·a·record·when·writing·a
298 record.·However,·some·applications·use·<code·class="inline">Mnesia</code>·mainly·for·its·fault-tolerant298 record.·However,·some·applications·use·<code·class="inline">Mnesia</code>·mainly·for·its·fault-tolerant
299 qualities.·These·applications·can·be·configured·with·one·node·doing·all·the299 qualities.·These·applications·can·be·configured·with·one·node·doing·all·the
300 heavy·work,·and·a·standby·node·that·is·ready·to·take·over·if·the·main·node300 heavy·work,·and·a·standby·node·that·is·ready·to·take·over·if·the·main·node
301 fails.·Such·applications·can·benefit·from·using·sticky·locks·instead·of·the301 fails.·Such·applications·can·benefit·from·using·sticky·locks·instead·of·the
302 normal·locking·scheme.</p><p>A·sticky·lock·is·a·lock·that·stays·in·place·at·a·node,·after·the·transaction302 normal·locking·scheme.</p><p>A·sticky·lock·is·a·lock·that·stays·in·place·at·a·node,·after·the·transaction
303 that·first·acquired·the·lock·has·terminated.·To·illustrate·this,·assume·that·the303 that·first·acquired·the·lock·has·terminated.·To·illustrate·this,·assume·that·the
304 following·transaction·is·executed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9866238232-1">(</span><span·class="p"·data-group-id="9866238232-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">304 following·transaction·is·executed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2742361761-1">(</span><span·class="p"·data-group-id="2742361761-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
305 ······</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9866238232-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="9866238232-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">kalle</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·fb34f95507fbd0f4a26051ccbcaacdac49debcabdc0b1628ff0b7d2c64ece60d·...·]-2">)</span><span·class="w">305 ······</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="2742361761-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="2742361761-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">kalle</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·2eb0eba41fbfbb219d4dd2cde02a3cc989911db0971e0b2c2fe0e5f2956c76a6·...·]-2">)</span><span·class="w">
306 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">306 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
307 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="9866238232-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="9866238232-4">)</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">foo</code>·table·is·replicated·on·the·two·nodes·<code·class="inline">N1</code>·and·<code·cla[·...·truncated·by·diffoscope;·len:·557,·SHA:·a4e526a12592abc14bc2b5e0e75bc64d072a922de8b153ce41703c33b742e86d·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">307 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="2742361761-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="2742361761-4">)</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">foo</code>·table·is·replicated·on·the·two·nodes·<code·class="inline">N1</code>·and·<code·cla[·...·truncated·by·diffoscope;·len:·557,·SHA:·7b21b90fb8804cb2c3ca723b5563328c5114d046bd21b1a0fed7d8e7ca8aaf74·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
308 ······</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">s_write</span><span·class="p"·data-group-id="4209629878-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="4209629878-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">kalle</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·dda2646f6571d7b9089fc72614f5de14a15abb7c3f9993b5e625da62751d102c·...·]-2">)</span><span·class="w">308 ······</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">s_write</span><span·class="p"·data-group-id="5217817020-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="5217817020-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">kalle</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·ea06119ce67c27036eda9707399867b687f0b939850ea7e9a254c0f6e53d657a·...·]-2">)</span><span·class="w">
309 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">309 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
310 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="4209629878-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="4209629878-4">)</span><span·class="p">.</span></code></pre><p>This·code·uses·the·function·<a·href="mnesia.html#s_write/1"><code·class="inline">s_write/1</code></a>·instead·of·the310 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">transaction</span><span·class="p"·data-group-id="5217817020-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="5217817020-4">)</span><span·class="p">.</span></code></pre><p>This·code·uses·the·function·<a·href="mnesia.html#s_write/1"><code·class="inline">s_write/1</code></a>·instead·of·the
311 function·<a·href="mnesia.html#write/1"><code·class="inline">write/1</code></a>·The·function·<code·class="inline">s_write/1</code>·sets·a·sticky·lock311 function·<a·href="mnesia.html#write/1"><code·class="inline">write/1</code></a>·The·function·<code·class="inline">s_write/1</code>·sets·a·sticky·lock
312 instead·of·a·normal·lock.·If·the·table·is·not·replicated,·sticky·locks·have·no312 instead·of·a·normal·lock.·If·the·table·is·not·replicated,·sticky·locks·have·no
313 special·effect.·If·the·table·is·replicated,·and·a·sticky·lock·is·set·on·node313 special·effect.·If·the·table·is·replicated,·and·a·sticky·lock·is·set·on·node
314 <code·class="inline">N1</code>,·this·lock·then·sticks·to·node·<code·class="inline">N1</code>.·The·next·time·you·try·to·set·a·sticky314 <code·class="inline">N1</code>,·this·lock·then·sticks·to·node·<code·class="inline">N1</code>.·The·next·time·you·try·to·set·a·sticky
315 lock·on·the·same·record·at·node·<code·class="inline">N1</code>,·<code·class="inline">Mnesia</code>·detects·that·the·lock·is·already315 lock·on·the·same·record·at·node·<code·class="inline">N1</code>,·<code·class="inline">Mnesia</code>·detects·that·the·lock·is·already
316 set·and·do·no·network·operation·to·acquire·the·lock.</p><p>It·is·more·efficient·to·set·a·local·lock·than·it·is·to·set·a·networked·lock.316 set·and·do·no·network·operation·to·acquire·the·lock.</p><p>It·is·more·efficient·to·set·a·local·lock·than·it·is·to·set·a·networked·lock.
317 Sticky·locks·can·therefore·benefit·an·application·that·uses·a·replicated·table317 Sticky·locks·can·therefore·benefit·an·application·that·uses·a·replicated·table
Offset 329, 16 lines modifiedOffset 329, 16 lines modified
329 locks·automatically,·and·the·programmer·does·not·need·to·code·these·operations.329 locks·automatically,·and·the·programmer·does·not·need·to·code·these·operations.
330 However,·transactions·that·read·and·write·many·records·in·a·specific·table330 However,·transactions·that·read·and·write·many·records·in·a·specific·table
331 execute·more·efficiently·if·the·transaction·is·started·by·setting·a·table·lock331 execute·more·efficiently·if·the·transaction·is·started·by·setting·a·table·lock
332 on·this·table.·This·blocks·other·concurrent·transactions·from·the·table.·The332 on·this·table.·This·blocks·other·concurrent·transactions·from·the·table.·The
333 following·two·functions·are·used·to·set·explicit·table·locks·for·read·and·write333 following·two·functions·are·used·to·set·explicit·table·locks·for·read·and·write
334 operations:</p><ul><li><a·href="mnesia.html#read_lock_table/1"><code·class="inline">mnesia:read_lock_table(Tab)</code></a>·sets·a·read·lock·on334 operations:</p><ul><li><a·href="mnesia.html#read_lock_table/1"><code·class="inline">mnesia:read_lock_table(Tab)</code></a>·sets·a·read·lock·on
335 table·<code·class="inline">Tab</code>.</li><li><a·href="mnesia.html#write_lock_table/1"><code·class="inline">mnesia:write_lock_table(Tab)</code></a>·sets·a·write·lock335 table·<code·class="inline">Tab</code>.</li><li><a·href="mnesia.html#write_lock_table/1"><code·class="inline">mnesia:write_lock_table(Tab)</code></a>·sets·a·write·lock
336 on·table·<code·class="inline">Tab</code>.</li></ul><p>Alternative·syntax·for·acquisition·of·table·locks·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="2216314749-1">(</span><span·class="p"·data-group-id="2216314749-2">{</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p"·data-group-id="2216314749-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">read</span><span·class="p"·data-group-id="2216314749-1">)</span><span·class="w"> 
337 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="2216314749-3">(</span><span·class="p"·data-group-id="2216314749-4">{</span><span·class="ss">table</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·345,·SHA:·b95d9d77ec910b0395d504d8dcfbc8d5a4c2e32207880b27f4785c23e6dbaeda·...·]336 on·table·<code·class="inline">Tab</code>.</li></ul><p>Alternative·syntax·for·acquisition·of·table·locks·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><spa[·...·truncated·by·diffoscope;·len:·403,·SHA:·205ca9816ccd9e5cc2592fbb18aad8d481e6cb39901da837f0a06893d2cc31fc·...·]
 337 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="0778015143-3">(</span><span·class="p"·data-group-id="0778015143-4">{</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p"·data-group-id="0778015143-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><span·class="p"·data-group-id="0778015143-3">)</span></code></pre><p>The·matching·operations·in·<code·class="inline">Mnesia</code>·can·either·lock·the·entire·table·or·only·a
338 single·record·(when·the·key·is·bound·in·the·pattern).</p><h3·id="global-locks"·class="section-heading">338 single·record·(when·the·key·is·bound·in·the·pattern).</p><h3·id="global-locks"·class="section-heading">
339 ··<a·href="#global-locks"·class="hover-link">339 ··<a·href="#global-locks"·class="hover-link">
340 ····<i·class="ri-link-m"·aria-hidden="true"></i>340 ····<i·class="ri-link-m"·aria-hidden="true"></i>
341 ··</a>341 ··</a>
342 ··<span·class="text">Global·Locks</span>342 ··<span·class="text">Global·Locks</span>
343 </h3>343 </h3>
344 <p>Write·locks·are·normally·acquired·on·all·nodes·where·a·replica·of·the·table344 <p>Write·locks·are·normally·acquired·on·all·nodes·where·a·replica·of·the·table
Offset 421, 86 lines modifiedOffset 421, 86 lines modified
421 ··<span·class="text">Record·Names·versus·Table·Names</span>421 ··<span·class="text">Record·Names·versus·Table·Names</span>
422 </h2>422 </h2>
423 <p>In·<code·class="inline">Mnesia</code>,·all·records·in·a·table·must·have·the·same·name.·All·the·records423 <p>In·<code·class="inline">Mnesia</code>,·all·records·in·a·table·must·have·the·same·name.·All·the·records
424 must·be·instances·of·the·same·record·type.·The·record·name,·however,·does·not424 must·be·instances·of·the·same·record·type.·The·record·name,·however,·does·not
425 necessarily·have·to·be·the·same·as·the·table·name,·although·this·is·the·case·in425 necessarily·have·to·be·the·same·as·the·table·name,·although·this·is·the·case·in
426 most·of·the·examples·in·this·User's·Guide.·If·a·table·is·created·without426 most·of·the·examples·in·this·User's·Guide.·If·a·table·is·created·without
427 property·<code·class="inline">record_name</code>,·the·following·code·ensures·that·all·records·in·the427 property·<code·class="inline">record_name</code>,·the·following·code·ensures·that·all·records·in·the
428 tables·have·the·same·name·as·the·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="7899176606-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7899176606-2">[</span><span·class="p"·data-group-id="7899176606-2">]</span><span·class="p"·data-group-id="7899176606-1">)</span></code></pre><p>However,·if·the·table·is·created·with·an·explicit·record·name·as·argument,·as428 tables·have·the·same·name·as·the·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="9350197078-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9350197078-2">[</span><span·class="p"·data-group-id="9350197078-2">]</span><span·class="p"·data-group-id="9350197078-1">)</span></code></pre><p>However,·if·the·table·is·created·with·an·explicit·record·name·as·argument,·as
429 shown·in·the·following·example,·subscriber·records·can·be·stored·in·both·of·the429 shown·in·the·following·example,·subscriber·records·can·be·stored·in·both·of·the
430 tables·regardless·of·the·table·names:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">TabDef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7989904109-1">[</span><span·class="p"·data-group-id="7989904109-2">{</span><span·class="ss">record_name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="7989904109-2">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·9c765c98edff325483144cbfcfb3e8d84b1d002caff9a7a407e12b52b8510878·...·]-1">]</span><span·class="p">,</span><span·class="w">430 tables·regardless·of·the·table·names:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">TabDef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3803811793-1">[</span><span·class="p"·data-group-id="3803811793-2">{</span><span·class="ss">record_name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="3803811793-2">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·bd1d93c72bd71b3745f054ac7fa43e812d625dbd02555381eb5b2834e79a1068·...·]-1">]</span><span·class="p">,</span><span·class="w">
431 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="7989904109-3">(</span><span·class="ss">my_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabDef</span><span·class="p"·data-group-id="7989904109-3">)</span><span·class="p">,</span><span·class="w">431 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="3803811793-3">(</span><span·class="ss">my_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabDef</span><span·class="p"·data-group-id="3803811793-3">)</span><span·class="p">,</span><span·class="w">
432 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="7989904109-4">(</span><span·class="ss">your_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabDef</span><span·class="p"·data-group-id="7989904109-4">)</span><span·class="p">.</span></code></pre><p>To·access·such·tables,·simplified·access·functions·(as·described·earlier)·cannot432 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="3803811793-4">(</span><span·class="ss">your_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabDef</span><span·class="p"·data-group-id="3803811793-4">)</span><span·class="p">.</span></code></pre><p>To·access·such·tables,·simplified·access·functions·(as·described·earlier)·cannot
433 be·used.·For·example,·writing·a·subscriber·record·into·a·table·requires·the433 be·used.·For·example,·writing·a·subscriber·record·into·a·table·requires·the
434 function·<a·href="mnesia.html#write/3"><code·class="inline">mnesia:write/3</code></a>·instead·of·the·simplified·functions·<a·href="mnesia.html#write/1"><code·class="inline">mnesia:write/1</code></a>434 function·<a·href="mnesia.html#write/3"><code·class="inline">mnesia:write/3</code></a>·instead·of·the·simplified·functions·<a·href="mnesia.html#write/1"><code·class="inline">mnesia:write/1</code></a>
435 and·<a·href="mnesia.html#s_write/1"><code·class="inline">mnesia:s_write/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9175683216-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="9175683216-2">{</span><span·class="p"·data-group-id="9175683216[·...·truncated·by·diffoscope;·len:·130,·SHA:·8dec2ee5d5503403ce3df9aa4978458ccb461fd84305eee6a090fcadcb291ec9·...·]-1">)</span><span·class="w">435 and·<a·href="mnesia.html#s_write/1"><code·class="inline">mnesia:s_write/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7021624090-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="7021624090-2">{</span><span·class="p"·data-group-id="7021624090[·...·truncated·by·diffoscope;·len:·130,·SHA:·8c1dd880b511e93e148f2ca806c0baaf39c0e3907cc88700d394903d6b6336cc·...·]-1">)</span><span·class="w">
436 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9175683216-3">(</span><span·class="ss">my_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="9175683216-4">{</span><span·class="p"·data-group-id="9175683[·...·truncated·by·diffoscope;·len:·140,·SHA:·c5bcd056836ec6061e1c6d7993166715273313256eacdb355afc80baed2163a4·...·]-3">)</span><span·class="w">436 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7021624090-3">(</span><span·class="ss">my_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="7021624090-4">{</span><span·class="p"·data-group-id="7021624[·...·truncated·by·diffoscope;·len:·140,·SHA:·79d1a88ed5acef4c2f0e34db55a04b4faf68c25428b444ae8b02f8c1f87052e3·...·]-3">)</span><span·class="w">
437 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="9175683216-5">(</span><span·class="ss">your_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="9175683216-6">{</span><span·class="p"·data-group-id="91756[·...·truncated·by·diffoscope;·len:·135,·SHA:·423cb4311e984e64e42e486fd9c82b30b8357bb51a09c6b33dae376a19c121e2·...·]-5">)</span></code></pre><p>The·following·simple·code·illustrates·the·relationship·between·the·simplified437 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7021624090-5">(</span><span·class="ss">your_subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">subscriber</span><span·class="p"·data-group-id="7021624090-6">{</span><span·class="p"·data-group-id="70216[·...·truncated·by·diffoscope;·len:·135,·SHA:·724738ebdde10e5f85550761ace6f786e70f7c18ec677f592e00f34f2a2b7ba2·...·]-5">)</span></code></pre><p>The·following·simple·code·illustrates·the·relationship·between·the·simplified
438 access·functions·used·in·most·of·the·examples·and·their·more·flexible438 access·functions·used·in·most·of·the·examples·and·their·more·flexible
439 counterparts:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_write</span><span·class="p"·data-group-id="8969202258-1">(</span><span·class="n">Record</span><span·class="p"·data-group-id="8969202258-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">439 counterparts:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_write</span><span·class="p"·data-group-id="6397132457-1">(</span><span·class="n">Record</span><span·class="p"·data-group-id="6397132457-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
440 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="8969202258-2">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="8969202258-2">)</span><span·class="p">,</span><span·class="w">440 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="6397132457-2">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="6397132457-2">)</span><span·class="p">,</span><span·class="w">
441 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_write</span><span·class="p"·data-group-id="8969202258-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="8969202258-3">)</span><span·class="p">.</span><span·class="w">441 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_write</span><span·class="p"·data-group-id="6397132457-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="6397132457-3">)</span><span·class="p">.</span><span·class="w">
  
442 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete</span><span·class="p"·data-group-id="8969202258-4">(</span><span·class="p"·data-group-id="8969202258-5">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8969202258-5">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·f2036d4f7104c4fc521f806778b03599c1fbf00a21ceebc9177eda26eaa1ce77·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">442 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete</span><span·class="p"·data-group-id="6397132457-4">(</span><span·class="p"·data-group-id="6397132457-5">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="6397132457-5">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·86f962b3145bf7bf675223849434b6d711f24e10c6b31bb7723a0574114192d6·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
443 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete</span><span·class="p"·data-group-id="8969202258-6">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8969202258-6">)</span><span·class="p">.</span><span·class="w">443 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete</span><span·class="p"·data-group-id="6397132457-6">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="6397132457-6">)</span><span·class="p">.</span><span·class="w">
  
444 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete_object</span><span·class="p"·data-group-id="8969202258-7">(</span><span·class="n">Record</span><span·class="p"·data-group-id="8969202258-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">444 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete_object</span><span·class="p"·data-group-id="6397132457-7">(</span><span·class="n">Record</span><span·class="p"·data-group-id="6397132457-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
445 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="8969202258-8">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="8969202258-8">)</span><span·class="p">,</span><span·class="w">445 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="6397132457-8">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="6397132457-8">)</span><span·class="p">,</span><span·class="w">
446 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete_object</span><span·class="p"·data-group-id="8969202258-9">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="8969202258-9">)</span><span·class="w">446 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_delete_object</span><span·class="p"·data-group-id="6397132457-9">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="6397132457-9">)</span><span·class="w">
  
447 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_update_counter</span><span·class="p"·data-group-id="8969202258-10">(</span><span·class="p"·data-group-id="8969202258-11">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8969202258-11">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·91,·SHA:·167c7af3f2ff5809e50778be8f0dff57d5ac086729761a8ed9e102321daa63f5·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">447 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_update_counter</span><span·class="p"·data-group-id="6397132457-10">(</span><span·class="p"·data-group-id="6397132457-11">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="6397132457-11">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·91,·SHA:·888d5050ee7aaa143a9d43d738cbd057cb122c74085dc90220169e0865f5861d·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
448 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_update_counter</span><span·class="p"·data-group-id="8969202258-12">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Incr</span><span·class="p"·data-group-id="8969202258-12">)</span><span·class="p">.</span><span·class="w">448 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_update_counter</span><span·class="p"·data-group-id="6397132457-12">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Incr</span><span·class="p"·data-group-id="6397132457-12">)</span><span·class="p">.</span><span·class="w">
  
449 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_read</span><span·class="p"·data-group-id="8969202258-13">(</span><span·class="p"·data-group-id="8969202258-14">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8969202258-14">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·fdb88784b5fe78b5d39c7791d7ec307871af1cd93ae1a11b901b0e4b5c6c286d·...·]-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">449 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_read</span><span·class="p"·data-group-id="6397132457-13">(</span><span·class="p"·data-group-id="6397132457-14">{</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="6397132457-14">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·6afd31dae336e8971c17b3c6ee2d0d9ae8a19bf7db414bb7ca47d7594527e3f3·...·]-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
450 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="8969202258-15">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="8969202258-15">)</span><span·class="p">,</span><span·class="w">450 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="6397132457-15">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Record</span><span·class="p"·data-group-id="6397132457-15">)</span><span·class="p">,</span><span·class="w">
451 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_read</span><span·class="p"·data-group-id="8969202258-16">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="8969202258-16">)</span><span·class="p">.</span><span·class="w">451 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_read</span><span·class="p"·data-group-id="6397132457-16">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p"·data-group-id="6397132457-16">)</span><span·class="p">.</span><span·class="w">
  
452 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_match_object</span><span·class="p"·data-group-id="8969202258-17">(</span><span·class="n">Pattern</span><span·class="p"·data-group-id="8969202258-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">452 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_match_object</span><span·class="p"·data-group-id="6397132457-17">(</span><span·class="n">Pattern</span><span·class="p"·data-group-id="6397132457-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
453 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="8969202258-18">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pattern</span><span·class="p"·data-group-id="8969202258-18">)</span><span·class="p">,</span><span·class="w">453 ··</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">element</span><span·class="p"·data-group-id="6397132457-18">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pattern</span><span·class="p"·data-group-id="6397132457-18">)</span><span·class="p">,</span><span·class="w">
454 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_match_object</span><span·class="p"·data-group-id="8969202258-19">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pattern</span><span·class="p"·data-group-id="8969202258-19">)</span><span·class="p">.</span><span·class="w">454 ··</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">dirty_match_object</span><span·class="p"·data-group-id="6397132457-19">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pattern</span><span·class="p"·data-group-id="6397132457-19">)</span><span·class="p">.</span><span·class="w">
  
Max diff block lines reached; 94945/144113 bytes (65.88%) of diff not shown.
147 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_chap5.html
    
Offset 163, 17 lines modifiedOffset 163, 17 lines modified
163 different·Erlang·nodes·in·various·ways.·The·<code·class="inline">Mnesia</code>·programmer·does·not·need·to163 different·Erlang·nodes·in·various·ways.·The·<code·class="inline">Mnesia</code>·programmer·does·not·need·to
164 state·where·the·different·tables·reside,·only·the·names·of·the·different·tables164 state·where·the·different·tables·reside,·only·the·names·of·the·different·tables
165 need·to·be·specified·in·the·program·code.·This·is·known·as·&quot;location165 need·to·be·specified·in·the·program·code.·This·is·known·as·&quot;location
166 transparency&quot;·and·is·an·important·concept.·In·particular:</p><ul><li><p>A·program·works·regardless·of·the·data·location.·It·makes·no·difference166 transparency&quot;·and·is·an·important·concept.·In·particular:</p><ul><li><p>A·program·works·regardless·of·the·data·location.·It·makes·no·difference
167 whether·the·data·resides·on·the·local·node·or·on·a·remote·node.</p><p>Notice·that·the·program·runs·slower·if·the·data·is·located·on·a·remote·node.</p></li><li><p>The·database·can·be·reconfigured,·and·tables·can·be·moved·between·nodes.·These167 whether·the·data·resides·on·the·local·node·or·on·a·remote·node.</p><p>Notice·that·the·program·runs·slower·if·the·data·is·located·on·a·remote·node.</p></li><li><p>The·database·can·be·reconfigured,·and·tables·can·be·moved·between·nodes.·These
168 operations·do·not·affect·the·user·programs.</p></li></ul><p>It·has·previously·been·shown·that·each·table·has·a·number·of·system·attributes,168 operations·do·not·affect·the·user·programs.</p></li></ul><p>It·has·previously·been·shown·that·each·table·has·a·number·of·system·attributes,
169 such·as·<code·class="inline">index</code>·and·<code·class="inline">type</code>.</p><p>Table·attributes·are·specified·when·the·table·is·created.·For·example,·the169 such·as·<code·class="inline">index</code>·and·<code·class="inline">type</code>.</p><p>Table·attributes·are·specified·when·the·table·is·created.·For·example,·the
170 following·function·creates·a·table·with·two·RAM·replicas:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="0195251091-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">170 following·function·creates·a·table·with·two·RAM·replicas:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="8995160085-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">
171 ····················</span><span·class="p"·data-group-id="0195251091-2">[</span><span·class="p"·data-group-id="0195251091-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0195251091-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·4e0336196e56d35862a6857cae28fe93560cbdb698439529d376bfd15e32d9b9·...·]-3">}</span><span·class="p">,</span><span·class="w">171 ····················</span><span·class="p"·data-group-id="8995160085-2">[</span><span·class="p"·data-group-id="8995160085-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8995160085-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·7a1a8631b6c03ea1a2dd0754a1a8d58c18a91cb60fd5031f0726de41a027352a·...·]-3">}</span><span·class="p">,</span><span·class="w">
172 ·····················</span><span·class="p"·data-group-id="0195251091-5">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="0195251091-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·241,·SHA:·dac23207478c74bfe4b5783d8fa8727a105573857217ad2193fd7f290a98bacc·...·]-1">)</span><span·class="p">.</span></code></pre><p>Tables·can·also·have·the·following·properties,·where·each·attribute·has·a·list172 ·····················</span><span·class="p"·data-group-id="8995160085-5">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">record_info</span><span·class="p"·data-group-id="8995160085-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·241,·SHA:·08dc046567cf2738d754bdff281980daa2b1c677b01c9aa5da82f4fafd8c49ea·...·]-1">)</span><span·class="p">.</span></code></pre><p>Tables·can·also·have·the·following·properties,·where·each·attribute·has·a·list
173 of·Erlang·nodes·as·its·value:</p><ul><li><p><code·class="inline">ram_copies</code>.·The·value·of·the·node·list·is·a·list·of·Erlang·nodes,·and·a·RAM173 of·Erlang·nodes·as·its·value:</p><ul><li><p><code·class="inline">ram_copies</code>.·The·value·of·the·node·list·is·a·list·of·Erlang·nodes,·and·a·RAM
174 replica·of·the·table·resides·on·each·node·in·the·list.</p><p>Notice·that·no·disc·operations·are·performed·when·a·program·executes·write174 replica·of·the·table·resides·on·each·node·in·the·list.</p><p>Notice·that·no·disc·operations·are·performed·when·a·program·executes·write
175 operations·to·these·replicas.·However,·if·permanent·RAM·replicas·are·required,175 operations·to·these·replicas.·However,·if·permanent·RAM·replicas·are·required,
176 the·following·alternatives·are·available:</p><ol><li>The·function·<a·href="mnesia.html#dump_tables/1"><code·class="inline">mnesia:dump_tables/1</code></a>·can·be·used·to·dump·RAM·table·replicas176 the·following·alternatives·are·available:</p><ol><li>The·function·<a·href="mnesia.html#dump_tables/1"><code·class="inline">mnesia:dump_tables/1</code></a>·can·be·used·to·dump·RAM·table·replicas
177 to·disc.</li><li>The·table·replicas·can·be·backed·up,·either·from·RAM,·or·from·disc·if177 to·disc.</li><li>The·table·replicas·can·be·backed·up,·either·from·RAM,·or·from·disc·if
178 dumped·there·with·this·function.</li></ol></li><li><p><code·class="inline">disc_copies</code>.·The·value·of·the·attribute·is·a·list·of·Erlang·nodes,·and·a178 dumped·there·with·this·function.</li></ol></li><li><p><code·class="inline">disc_copies</code>.·The·value·of·the·attribute·is·a·list·of·Erlang·nodes,·and·a
179 replica·of·the·table·resides·both·in·RAM·and·on·disc·on·each·node·in·the·list.179 replica·of·the·table·resides·both·in·RAM·and·on·disc·on·each·node·in·the·list.
Offset 218, 60 lines modifiedOffset 218, 60 lines modified
218 <code·class="inline">mnesia_frag</code>·can·be·used·as·a·<code·class="inline">mnesia_access</code>·callback·module.</p><p>At·each·record·access,·<code·class="inline">mnesia_frag</code>·first·computes·a·hash·value·from·the·record218 <code·class="inline">mnesia_frag</code>·can·be·used·as·a·<code·class="inline">mnesia_access</code>·callback·module.</p><p>At·each·record·access,·<code·class="inline">mnesia_frag</code>·first·computes·a·hash·value·from·the·record
219 key.·Second,·the·name·of·the·table·fragment·is·determined·from·the·hash·value.219 key.·Second,·the·name·of·the·table·fragment·is·determined·from·the·hash·value.
220 Finally·the·actual·table·access·is·performed·by·the·same·functions·as·for220 Finally·the·actual·table·access·is·performed·by·the·same·functions·as·for
221 non-fragmented·tables.·When·the·key·is·not·known·beforehand,·all·fragments·are221 non-fragmented·tables.·When·the·key·is·not·known·beforehand,·all·fragments·are
222 searched·for·matching·records.</p><p>Notice·that·in·<code·class="inline">ordered_set</code>·tables,·the·records·are·ordered·per·fragment,·and222 searched·for·matching·records.</p><p>Notice·that·in·<code·class="inline">ordered_set</code>·tables,·the·records·are·ordered·per·fragment,·and
223 the·order·is·undefined·in·results·returned·by·<code·class="inline">select</code>·and·<code·class="inline">match_object</code>,·as223 the·order·is·undefined·in·results·returned·by·<code·class="inline">select</code>·and·<code·class="inline">match_object</code>,·as
224 well·as·<code·class="inline">first</code>,·<code·class="inline">next</code>,·<code·class="inline">prev</code>·and·<code·class="inline">last</code>.</p><p>The·following·code·illustrates·how·a·<code·class="inline">Mnesia</code>·table·is·converted·to·be·a224 well·as·<code·class="inline">first</code>,·<code·class="inline">next</code>,·<code·class="inline">prev</code>·and·<code·class="inline">last</code>.</p><p>The·following·code·illustrates·how·a·<code·class="inline">Mnesia</code>·table·is·converted·to·be·a
225 fragmented·table·and·how·more·fragments·are·added·later:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mf">7.3</span><span·class="p">.</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="3415890204-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="3415890204-1">)</span><span·class="gp·unselectable">225 fragmented·table·and·how·more·fragments·are·added·later:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mf">7.3</span><span·class="p">.</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6487390593-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="6487390593-1">)</span><span·class="gp·unselectable">
226 (a@sam)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3415890204-2">(</span><span·class="p"·data-group-id="3415890204-2">)</span><span·class="p">.</span><span·class="w">226 (a@sam)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="6487390593-2">(</span><span·class="p"·data-group-id="6487390593-2">)</span><span·class="p">.</span><span·class="w">
227 </span><span·class="nf">ok</span><span·class="w">227 </span><span·class="nf">ok</span><span·class="w">
228 </span><span·class="p"·data-group-id="3415890204-3">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3415890204-3">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">syste[·...·truncated·by·diffoscope;·len:·147,·SHA:·6c6fbc682b76043ab59e9feecc2fb27382c365fb7dfabeb26508697d9c0dc200·...·]-4">)</span><span·class="p">.</span><span·class="w">228 </span><span·class="p"·data-group-id="6487390593-3">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="6487390593-3">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">syste[·...·truncated·by·diffoscope;·len:·147,·SHA:·55d274f830fe4d9f72c2442def4930f341458f2a9e5bf957fddb0da7033753b7·...·]-4">)</span><span·class="p">.</span><span·class="w">
229 </span><span·class="p"·data-group-id="3415890204-5">[</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3415890204-5">]</span><span·class="gp·unselectable">229 </span><span·class="p"·data-group-id="6487390593-5">[</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="6487390593-5">]</span><span·class="gp·unselectable">
230 (a@sam)3&gt;·</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">dictionary</span><span·class="p">.</span><span·class="w">230 (a@sam)3&gt;·</span><span·class="n">Tab</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">dictionary</span><span·class="p">.</span><span·class="w">
231 </span><span·class="nf">dictionary</span><span·class="w">231 </span><span·class="nf">dictionary</span><span·class="w">
232 </span><span·class="p"·data-group-id="3415890204-6">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3415890204-6">)</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">creat[·...·truncated·by·diffoscope;·len:·690,·SHA:·9190cfa929ab38cc6a2653aea6eacaca9461cb0099618b7709d665d3bccae3e8·...·]-7">)</span><span·class="p">.</span><span·class="w">232 </span><span·class="p"·data-group-id="6487390593-6">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="6487390593-6">)</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">creat[·...·truncated·by·diffoscope;·len:·690,·SHA:·e6be40d4bf65f88f77c68974e68354c85bfc1c5345c351a05b7e97d1f9f663b4·...·]-7">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="3415890204-11">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3415890204-11">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="6487390593-11">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="6487390593-11">}</span><span·class="gp·unselectable">
234 (a@sam)5&gt;·</span><span·class="n">Write</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3415890204-12">(</span><span·class="n">Keys</span><span·class="p"·data-group-id="3415890204-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-13">[</span><span·class="nc">mnesi[·...·truncated·by·diffoscope;·len:·664,·SHA:·f44329e6590801d47b79cbbaa6630e3bb2376af8bcd68de38e6582feca68de21·...·]-13">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">234 (a@sam)5&gt;·</span><span·class="n">Write</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6487390593-12">(</span><span·class="n">Keys</span><span·class="p"·data-group-id="6487390593-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-13">[</span><span·class="nc">mnesi[·...·truncated·by·diffoscope;·len:·664,·SHA:·eacea517263b1f4878d435f3083bc4110bfdb9e352e5674d8b882526d5840c0f·...·]-13">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">235 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">
236 (a@sam)6&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3415890204-16">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-17">[</span><span·class="nc">list[·...·truncated·by·diffoscope;·len:·445,·SHA:·4de492ccd7fa0797dbaa6f8a69584671f9ad10153ff999825d00ef19636251fb·...·]-16">)</span><span·class="p">.</span><span·class="w">236 (a@sam)6&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="6487390593-16">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-17">[</span><span·class="nc">list[·...·truncated·by·diffoscope;·len:·445,·SHA:·a4f977f98472aaee861539c9663286956fd37350c8f6c8de93209520fa034f85·...·]-16">)</span><span·class="p">.</span><span·class="w">
237 </span><span·class="nf">ok</span><span·class="w">237 </span><span·class="nf">ok</span><span·class="w">
238 </span><span·class="p"·data-group-id="3415890204-19">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3415890204-19">)</span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">cha[·...·truncated·by·diffoscope;·len:·486,·SHA:·0e6ed47237e20439bbd0998a28e2adc8e1d7249b3cde4b9635d4ce7ed302a471·...·]-20">)</span><span·class="p">.</span><span·class="w">238 </span><span·class="p"·data-group-id="6487390593-19">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="6487390593-19">)</span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">cha[·...·truncated·by·diffoscope;·len:·486,·SHA:·24380e479be430b9e171afe968ebe06749b88a328576aa0f8a9e0f38417715e7·...·]-20">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="3415890204-23">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3415890204-23">}</span><span·class="gp·unselectable">239 </span><span·class="p"·data-group-id="6487390593-23">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="6487390593-23">}</span><span·class="gp·unselectable">
240 (a@sam)8&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">table_info</span><span·class="p"·data-group-id="3415890204-24">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">frag_properties</span><span·class="p"·data-group-id="3415890204-24">)</span><span·class="p">.</span><span·class="w">240 (a@sam)8&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">table_info</span><span·class="p"·data-group-id="6487390593-24">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">frag_properties</span><span·class="p"·data-group-id="6487390593-24">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p"·data-group-id="3415890204-25">[</span><span·class="p"·data-group-id="3415890204-26">{</span><span·class="ss">base_table</span><span·class="p">,</span><span·class="ss">dictionary</span><span·class="p"·data-group-id="3415890204-26">}</span><span·class="p">,</span><span·class="w">241 </span><span·class="p"·data-group-id="6487390593-25">[</span><span·class="p"·data-group-id="6487390593-26">{</span><span·class="ss">base_table</span><span·class="p">,</span><span·class="ss">dictionary</span><span·class="p"·data-group-id="6487390593-26">}</span><span·class="p">,</span><span·class="w">
242 ·</span><span·class="p"·data-group-id="3415890204-27">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="3415890204-27">}</span><span·class="p">,</span><span·class="w">242 ·</span><span·class="p"·data-group-id="6487390593-27">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="6487390593-27">}</span><span·class="p">,</span><span·class="w">
243 ·</span><span·class="p"·data-group-id="3415890204-28">{</span><span·class="ss">n_doubles</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3415890204-28">}</span><span·class="p">,</span><span·class="w">243 ·</span><span·class="p"·data-group-id="6487390593-28">{</span><span·class="ss">n_doubles</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6487390593-28">}</span><span·class="p">,</span><span·class="w">
244 ·</span><span·class="p"·data-group-id="3415890204-29">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3415890204-29">}</span><span·class="p">,</span><span·class="w">244 ·</span><span·class="p"·data-group-id="6487390593-29">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6487390593-29">}</span><span·class="p">,</span><span·class="w">
245 ·</span><span·class="p"·data-group-id="3415890204-30">{</span><span·class="ss">next_n_to_split</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3415890204-30">}</span><span·class="p">,</span><span·class="w">245 ·</span><span·class="p"·data-group-id="6487390593-30">{</span><span·class="ss">next_n_to_split</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6487390593-30">}</span><span·class="p">,</span><span·class="w">
246 ·</span><span·class="p"·data-group-id="3415890204-31">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="p"·data-group-id="3415890204-32">[</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·162,·SHA:·7339d29dc31f0784b179b57e6f27e66f4f3bbea8c356022fa0d62b52c134bd6b·...·]-25">]</span><span·class="gp·unselectable">246 ·</span><span·class="p"·data-group-id="6487390593-31">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="p"·data-group-id="6487390593-32">[</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·162,·SHA:·446209536d00d7cd0619582b628f65febe53a0b142bf3275673adf2500549352·...·]-25">]</span><span·class="gp·unselectable">
247 (a@sam)9&gt;·</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3415890204-33">(</span><span·class="n">Item</span><span·class="p"·data-group-id="3415890204-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">table[·...·truncated·by·diffoscope;·len:·208,·SHA:·f9a45ffa119976e33212189d430c97e1274f8dc536b23424ac467c5bb6e0ae0b·...·]-34">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">247 (a@sam)9&gt;·</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6487390593-33">(</span><span·class="n">Item</span><span·class="p"·data-group-id="6487390593-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">table[·...·truncated·by·diffoscope;·len:·208,·SHA:·dca3557d4a8c3c7936d83d8640d82b12d8a6ce7e27f953b192f015c9cead296e·...·]-34">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">248 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">
249 (a@sam)10&gt;·</span><span·class="n">Dist</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3415890204-35">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-36">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·2fdd80e933e7c3a4d24406220132cede5f3ff84dd002435ac7be154dfc0f8d95·...·]-35">)</span><span·class="p">.</span><span·class="w">249 (a@sam)10&gt;·</span><span·class="n">Dist</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="6487390593-35">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-36">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·8fbe26492482236f4356975001eb66ab7b2d731eef21a54bef4ec77a59d67f4d·...·]-35">)</span><span·class="p">.</span><span·class="w">
250 </span><span·class="p"·data-group-id="3415890204-37">[</span><span·class="p"·data-group-id="3415890204-38">{</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3415890204-38">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·703c7266131b5c29abe045c5286357a22417bc3f8168007538627a755f85a906·...·]-37">]</span><span·class="gp·unselectable">250 </span><span·class="p"·data-group-id="6487390593-37">[</span><span·class="p"·data-group-id="6487390593-38">{</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6487390593-38">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·0a398a4540edce9992bd598f9f056f6cfae79a2508ad3df11bf7a722b17edf3f·...·]-37">]</span><span·class="gp·unselectable">
251 (a@sam)11&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_frag</span><span·class="p"·data-group-id="3415890204-41">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-42">{</span><span·class="ss">add_frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dist</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·eeb8fab50cd86021a536a40bd1875cc6f329568a18b9c403514376075cc00711·...·]-41">)</span><span·class="p">.</span><span·class="w">251 (a@sam)11&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_frag</span><span·class="p"·data-group-id="6487390593-41">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-42">{</span><span·class="ss">add_frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dist</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·51080ab6e52b3b65d994bbe265df7cf7a4521fc56910870ef9d7da5bc669dd6a·...·]-41">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="p"·data-group-id="3415890204-43">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3415890204-43">}</span><span·class="gp·unselectable">252 </span><span·class="p"·data-group-id="6487390593-43">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="6487390593-43">}</span><span·class="gp·unselectable">
253 (a@sam)12&gt;·</span><span·class="n">Dist2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3415890204-44">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-45">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·198e73ac626ea882b8443a2aca52bd1865a307f2f8d9c51ddf91bfbd57d0d184·...·]-44">)</span><span·class="p">.</span><span·class="w">253 (a@sam)12&gt;·</span><span·class="n">Dist2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="6487390593-44">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-45">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·d8d4d5f61a59be208fa681aafa9d0212702cbf986d7cd38242d04044f76237d3·...·]-44">)</span><span·class="p">.</span><span·class="w">
254 </span><span·class="p"·data-group-id="3415890204-46">[</span><span·class="p"·data-group-id="3415890204-47">{</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3415890204-47">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·e03b9ce1091c4f589b7d1cf8bc5d871ad8bc0223e40f7faf4a057a05a83f6bb4·...·]-46">]</span><span·class="gp·unselectable">254 </span><span·class="p"·data-group-id="6487390593-46">[</span><span·class="p"·data-group-id="6487390593-47">{</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6487390593-47">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·8fae859d1326e771872df0e4fe94a2fc78bf8273bb13577732fd0c3893298815·...·]-46">]</span><span·class="gp·unselectable">
255 (a@sam)13&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_frag</span><span·class="p"·data-group-id="3415890204-50">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-51">{</span><span·class="ss">add_frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dist2</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·ce07994536d4f90e773aad29b56aabafd3e8def645d411fab27b88f494f605ef·...·]-50">)</span><span·class="p">.</span><span·class="w">255 (a@sam)13&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_frag</span><span·class="p"·data-group-id="6487390593-50">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-51">{</span><span·class="ss">add_frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dist2</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·3906edaf9240759a2fef63bccb4c325738f4f122ed64fe602d5a3ef12c4caa3b·...·]-50">)</span><span·class="p">.</span><span·class="w">
256 </span><span·class="p"·data-group-id="3415890204-52">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3415890204-52">}</span><span·class="gp·unselectable">256 </span><span·class="p"·data-group-id="6487390593-52">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="6487390593-52">}</span><span·class="gp·unselectable">
257 (a@sam)14&gt;·</span><span·class="n">Dist3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3415890204-53">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-54">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·3d420d9c7f7450ed1461dd232ff2a78f50b5711a2276da926fb5c6a611621b4b·...·]-53">)</span><span·class="p">.</span><span·class="w">257 (a@sam)14&gt;·</span><span·class="n">Dist3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="6487390593-53">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-54">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·ff9b17c9a292cb691d13b0622c05d76f9bfc758e2a63d7ef14aba6b74997dd9d·...·]-53">)</span><span·class="p">.</span><span·class="w">
258 </span><span·class="p"·data-group-id="3415890204-55">[</span><span·class="p"·data-group-id="3415890204-56">{</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3415890204-56">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·01e0efabe3c67887082dbb7c4c4e3cbec45559032498fe97f88ee37ec170d471·...·]-55">]</span><span·class="gp·unselectable">258 </span><span·class="p"·data-group-id="6487390593-55">[</span><span·class="p"·data-group-id="6487390593-56">{</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6487390593-56">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·f5bf5bc9f219a9372f572e165e356a138a2884b0d277f7eda96d7b380d2a7fa1·...·]-55">]</span><span·class="gp·unselectable">
259 (a@sam)15&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_frag</span><span·class="p"·data-group-id="3415890204-59">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-60">{</span><span·class="ss">add_frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dist3</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·eb6bfc3581810e3e61c6498c2cea0f2b293e997e7d7e594b603f23da0bb93085·...·]-59">)</span><span·class="p">.</span><span·class="w">259 (a@sam)15&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">change_table_frag</span><span·class="p"·data-group-id="6487390593-59">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-60">{</span><span·class="ss">add_frag</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dist3</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·445832c6c9756407585ba4c76225e73ec491e06b81866b01f5d5324bf38e9ba9·...·]-59">)</span><span·class="p">.</span><span·class="w">
260 </span><span·class="p"·data-group-id="3415890204-61">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3415890204-61">}</span><span·class="gp·unselectable">260 </span><span·class="p"·data-group-id="6487390593-61">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="6487390593-61">}</span><span·class="gp·unselectable">
261 (a@sam)16&gt;·</span><span·class="n">Read</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3415890204-62">(</span><span·class="n">Key</span><span·class="p"·data-group-id="3415890204-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</[·...·truncated·by·diffoscope;·len:·308,·SHA:·6d6e5906c627b0aa77cee5a501cde8fd01a9cd8a274cbcb03bfc2611096da46d·...·]-63">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">261 (a@sam)16&gt;·</span><span·class="n">Read</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6487390593-62">(</span><span·class="n">Key</span><span·class="p"·data-group-id="6487390593-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</[·...·truncated·by·diffoscope;·len:·308,·SHA:·b356b895020ecc1e9c3057bc46bcc8b0fca355b67ac15822892716edadc6d601·...·]-63">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
262 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">262 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">
263 (a@sam)17&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3415890204-65">(</span><span·class="ss">transaction</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Read</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-66">[</span><span·class="mi">12</[·...·truncated·by·diffoscope;·len:·183,·SHA:·464ff0225c9b86270f47f4ce7f619735966a50452e2cdc4b4a2b34398301a3f1·...·]-65">)</span><span·class="p">.</span><span·class="w">263 (a@sam)17&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="6487390593-65">(</span><span·class="ss">transaction</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Read</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-66">[</span><span·class="mi">12</[·...·truncated·by·diffoscope;·len:·183,·SHA:·f08c27576f98b70607502e91f4f77ff63a67d4ed50599ff8047749734e13b27f·...·]-65">)</span><span·class="p">.</span><span·class="w">
264 </span><span·class="p"·data-group-id="3415890204-67">[</span><span·class="p"·data-group-id="3415890204-68">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="o">-</span><span·class="mi">12</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·74,·SHA:·4648bd889b7e6e7b665d8b8485c49f440ee7606eeff3557694ee45ef0c4b45ea·...·]-67">]</span><span·class="gp·unselectable">264 </span><span·class="p"·data-group-id="6487390593-67">[</span><span·class="p"·data-group-id="6487390593-68">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">12</span><span·class="p">,</span><span·class="o">-</span><span·class="mi">12</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·74,·SHA:·f4185ffa3a79130efc8e4bd511d2b1944e9653eaf8f01a51b084b5dfbf2b9c3c·...·]-67">]</span><span·class="gp·unselectable">
265 (a@sam)18&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3415890204-69">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3415890204-70">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·974e5bdb87349fcea1e1ff68929343d90c00de2af1c8a53a66e7826567f1cc08·...·]-69">)</span><span·class="p">.</span><span·class="w">265 (a@sam)18&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="6487390593-69">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6487390593-70">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·2e1809ed7467e4104b89a48aff79b604517331f8c85265f27f7fb680f34270a3·...·]-69">)</span><span·class="p">.</span><span·class="w">
266 </span><span·class="p"·data-group-id="3415890204-71">[</span><span·class="p"·data-group-id="3415890204-72">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="3415890204-72">}</span><span·class="p">,</span><span·class="w">266 </span><span·class="p"·data-group-id="6487390593-71">[</span><span·class="p"·data-group-id="6487390593-72">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="6487390593-72">}</span><span·class="p">,</span><span·class="w">
267 ·</span><span·class="p"·data-group-id="3415890204-73">{</span><span·class="ss">dictionary_frag2</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="3415890204-73">}</span><span·class="p">,</span><span·class="w">267 ·</span><span·class="p"·data-group-id="6487390593-73">{</span><span·class="ss">dictionary_frag2</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="6487390593-73">}</span><span·class="p">,</span><span·class="w">
268 ·</span><span·class="p"·data-group-id="3415890204-74">{</span><span·class="ss">dictionary_frag3</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="3415890204-74">}</span><span·class="p">,</span><span·class="w">268 ·</span><span·class="p"·data-group-id="6487390593-74">{</span><span·class="ss">dictionary_frag3</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="6487390593-74">}</span><span·class="p">,</span><span·class="w">
269 ·</span><span·class="p"·data-group-id="3415890204-75">{</span><span·class="ss">dictionary_frag4</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="3415890204-75">}</span><span·class="p"·data-group-id="3415890204-71">]</span><span·class="w"> 
270 </span><span·class="p"·data-group-id="3415890204-76">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3415890204-76">)</span><span·class="mi">19</span><span·class="o">&gt;</span></code></pre><h3·id="fragmentation-properties"·class="secti[·...·truncated·by·diffoscope;·len:·10,·SHA:·ab8d9cf9adb6f312c4ca8d2d89923fa12ea0ca69e5371467ebf63dbb11a07592·...·]">269 ·</span><span·class="p"·data-group-id="6487390593-75">{</span><span·class="ss">dictionary_frag4</span><span·class="p">,</span><span·class="mi">64</span><span·class="p"·data-group-id="6487390593-75">}</span><span·class="p"·data-group-id="6487390593-71">]</s[·...·truncated·by·diffoscope;·len:·18,·SHA:·7f5c6b1212d3eb04fd43abf1652541570d6ef0d2bed264ce2c2977e5b9aeee63·...·]">
 270 </span><span·class="p"·data-group-id="6487390593-76">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="6487390593-76">)</span><span·class="mi">19</span><span·class="o">&gt;</span></code></pre><h3·id="fragmentation-properties"·class="section-heading">
271 ··<a·href="#fragmentation-properties"·class="hover-link">271 ··<a·href="#fragmentation-properties"·class="hover-link">
272 ····<i·class="ri-link-m"·aria-hidden="true"></i>272 ····<i·class="ri-link-m"·aria-hidden="true"></i>
273 ··</a>273 ··</a>
274 ··<span·class="text">Fragmentation·Properties</span>274 ··<span·class="text">Fragmentation·Properties</span>
275 </h3>275 </h3>
276 <p>The·table·property·<code·class="inline">frag_properties</code>·can·be·read·with·the·function276 <p>The·table·property·<code·class="inline">frag_properties</code>·can·be·read·with·the·function
277 <a·href="mnesia.html#table_info/2"><code·class="inline">mnesia:table_info(Tab,·frag_properties)</code></a>.·The277 <a·href="mnesia.html#table_info/2"><code·class="inline">mnesia:table_info(Tab,·frag_properties)</code></a>.·The
Offset 305, 72 lines modifiedOffset 305, 72 lines modified
305 defaults·to·<code·class="inline">undefined</code>.·However,·if·the·foreign·key·is·set·to·something·else,305 defaults·to·<code·class="inline">undefined</code>.·However,·if·the·foreign·key·is·set·to·something·else,
306 it·causes·the·default·values·of·the·other·fragmentation·properties·to·be·the306 it·causes·the·default·values·of·the·other·fragmentation·properties·to·be·the
307 same·values·as·the·actual·fragmentation·properties·of·the·foreign·table.</p></li><li><p><strong><code·class="inline">{hash_module,·Atom}</code></strong>·-·Enables·definition·of·an·alternative·hashing307 same·values·as·the·actual·fragmentation·properties·of·the·foreign·table.</p></li><li><p><strong><code·class="inline">{hash_module,·Atom}</code></strong>·-·Enables·definition·of·an·alternative·hashing
308 scheme.·The·module·must·implement·the·<a·href="mnesia_frag_hash.html"><code·class="inline">mnesia_frag_hash</code></a>·callback·behavior.308 scheme.·The·module·must·implement·the·<a·href="mnesia_frag_hash.html"><code·class="inline">mnesia_frag_hash</code></a>·callback·behavior.
309 This·property·can·explicitly·be·set·at·table·creation.·Default·is309 This·property·can·explicitly·be·set·at·table·creation.·Default·is
310 <code·class="inline">mnesia_frag_hash</code>.</p></li><li><p><strong><code·class="inline">{hash_state,·Term}</code></strong>·-·Enables·a·table-specific·parameterization·of·a310 <code·class="inline">mnesia_frag_hash</code>.</p></li><li><p><strong><code·class="inline">{hash_state,·Term}</code></strong>·-·Enables·a·table-specific·parameterization·of·a
311 generic·hash·module.·This·property·can·explicitly·be·set·at·table·creation.311 generic·hash·module.·This·property·can·explicitly·be·set·at·table·creation.
312 Default·is·<code·class="inline">undefined</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mf">7.3</span><span·class="p">.</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="0019612565-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="0019612565-1">)</span><span·class="gp·unselectable">312 Default·is·<code·class="inline">undefined</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mf">7.3</span><span·class="p">.</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="3430627664-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="3430627664-1">)</span><span·class="gp·unselectable">
313 (a@sam)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="0019612565-2">(</span><span·class="p"·data-group-id="0019612565-2">)</span><span·class="p">.</span><span·class="w">313 (a@sam)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3430627664-2">(</span><span·class="p"·data-group-id="3430627664-2">)</span><span·class="p">.</span><span·class="w">
314 </span><span·class="nf">ok</span><span·class="w">314 </span><span·class="nf">ok</span><span·class="w">
315 </span><span·class="p"·data-group-id="0019612565-3">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="0019612565-3">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">PrimProps</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0019612565-4">[</span><span·class="p"·data-group-id="0019612565-5">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">7</span><span·class="p"·data-group-id="0019612565-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0019612565-6">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0019612565-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0019612565-8">(</span><span·class="p"·data-group-id="0019612565-8">)</span><span·class="p"·data-group-id="0019612565-7">]</span><span·class="p"·data-group-id="0019612565-6">}</span><span·class="p"·data-group-id="0019612565-4">]</span><span·class="p">.</span><span·class="w"> 
316 </span><span·class="p"·data-group-id="0019612565-9">[</span><span·class="p"·data-group-id="0019612565-10">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="0019612565-10">}</span><span·class="p">,</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·365,·SHA:·45bd59e2295939240eda2a01f6210f2cd7510629d9b78782700ae9f01a239cd5·...·]">315 </span><span·class="p"·data-group-id="3430627664-3">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3430627664-3">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">PrimProps</span><span·class="w">·</span><span·class="o">=</s[·...·truncated·by·diffoscope;·len:·861,·SHA:·c37115a855de583568c53eebf5d2f3d837ccb417a180ff54518a68d5ad05e54b·...·]">
 316 </span><span·class="p"·data-group-id="3430627664-9">[</span><span·class="p"·data-group-id="3430627664-10">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="3430627664-10">}</span><span·class="p">,</span><span·class="p"·data-group-id="3430627664-11">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="p"·data-group-id="3430627664-12">[</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3430627664-12">]</span><span·class="p"·data-group-id="3430627664-11">}</span><span·class="p"·data-group-id="3430627664-9">]</span><span·class="gp·unselectable">
317 (a@sam)3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="0019612565-13">(</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">317 (a@sam)3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="3430627664-13">(</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">
318 ······························</span><span·class="p"·data-group-id="0019612565-14">[</span><span·class="p"·data-group-id="0019612565-15">{</span><span·class="ss">frag_properties</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimProps</span><span·class="p"·data-group-id="0019612565-15">}</span><span·class="p">,</span><span·class="w">318 ······························</span><span·class="p"·data-group-id="3430627664-14">[</span><span·class="p"·data-group-id="3430627664-15">{</span><span·class="ss">frag_properties</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimProps</span><span·class="p"·data-group-id="3430627664-15">}</span><span·class="p">,</span><span·class="w">
319 ·······························</span><span·class="p"·data-group-id="0019612565-16">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="p"·data-group-id="0019612565-17">[</span><span·class="ss">prim_key</span><span·class="p">,</span><span·class="ss">prim_val</span><span·class="p"·data-group-id="00[·...·truncated·by·diffoscope;·len:·170,·SHA:·762d4906ef8de0c622a040e0b306d9c80446a0f41b2228357fd37cd626c46694·...·]-13">)</span><span·class="p">.</span><span·class="w">319 ·······························</span><span·class="p"·data-group-id="3430627664-16">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="p"·data-group-id="3430627664-17">[</span><span·class="ss">prim_key</span><span·class="p">,</span><span·class="ss">prim_val</span><span·class="p"·data-group-id="34[·...·truncated·by·diffoscope;·len:·170,·SHA:·d5b9a78a1792e9b4bee8bbac480c0ae9b7b3663fba6e6ee5ecf7044efe64fd3d·...·]-13">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="p"·data-group-id="0019612565-18">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="0019612565-18">}</span><span·class="gp·unselectable">320 </span><span·class="p"·data-group-id="3430627664-18">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3430627664-18">}</span><span·class="gp·unselectable">
321 (a@sam)4&gt;·</span><span·class="n">SecProps</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0019612565-19">[</span><span·class="p"·data-group-id="0019612565-20">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0019612565-21">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sec_val</span><span·class="p"·data-group-id="0019612565-21">}</span><span·class="p"·data-group-id="0019612565-20">}</span><span·class="p"·data-group-id="0019612565-19">]</span><span·class="p">.</span><span·class="w"> 
322 </span><span·class="p"·data-group-id="0019612565-22">[</span><span·class="p"·data-group-id="0019612565-23">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="p"·data-group-id="0019612565-24">{</span><span·class="ss">prim_dict</[·...·truncated·by·diffoscope;·len:·250,·SHA:·51d35631d066912356524b54a5728814aac5723cafcd0dbf3a3383b7b3ab8ef0·...·]">321 (a@sam)4&gt;·</span><span·class="n">SecProps</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3430627664-19">[</span><span·class="p"·data-group-id="3430627664-20">{</span><span·class="ss">foreign_[·...·truncated·by·diffoscope;·len:·424,·SHA:·e3704508b6d8a2897537e795bb418a3b0caa9c6c7f94b35db886c0ecde425848·...·]">
 322 </span><span·class="p"·data-group-id="3430627664-22">[</span><span·class="p"·data-group-id="3430627664-23">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="p"·data-group-id="3430627664-24">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="ss">sec_val</span><span·class="p"·data-group-id="3430627664-24">}</span><span·class="p"·data-group-id="3430627664-23">}</span><span·class="p"·data-group-id="3430627664-22">]</span><span·class="gp·unselectable">
323 (a@sam)5&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="0019612565-25">(</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">323 (a@sam)5&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="3430627664-25">(</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">
324 ······························</span><span·class="p"·data-group-id="0019612565-26">[</span><span·class="p"·data-group-id="0019612565-27">{</span><span·class="ss">frag_properties</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecProps</span><span·class="p"·data-group-id="0019612565-27">}</span><span·class="p">,</span><span·class="gp·unselectable">324 ······························</span><span·class="p"·data-group-id="3430627664-26">[</span><span·class="p"·data-group-id="3430627664-27">{</span><span·class="ss">frag_properties</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecProps</span><span·class="p"·data-group-id="3430627664-27">}</span><span·class="p">,</span><span·class="gp·unselectable">
325 (a@sam)5&gt;·</span><span·class="w">·····················</span><span·class="p"·data-group-id="0019612565-28">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0019612565-29">[</span><span·class="ss">sec_key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·216,·SHA:·59ca1beacee4613fe0027e943cc11549722d2b3949b8ab3f5fa367511e45ff8c·...·]-25">)</span><span·class="p">.</span><span·class="w">325 (a@sam)5&gt;·</span><span·class="w">·····················</span><span·class="p"·data-group-id="3430627664-28">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3430627664-29">[</span><span·class="ss">sec_key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·216,·SHA:·cb571156eef5c50e01d020a29700767a0b6782bfae34321a1b35cbd06093207a·...·]-25">)</span><span·class="p">.</span><span·class="w">
326 </span><span·class="p"·data-group-id="0019612565-30">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="0019612565-30">}</span><span·class="gp·unselectable">326 </span><span·class="p"·data-group-id="3430627664-30">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3430627664-30">}</span><span·class="gp·unselectable">
327 (a@sam)6&gt;·</span><span·class="n">Write</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0019612565-31">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="0019612565-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write<[·...·truncated·by·diffoscope;·len:·127,·SHA:·0348cef9892ce2f96f290c923dd6344a233c50b4b1734d4e30d736bb013a2443·...·]-32">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">327 (a@sam)6&gt;·</span><span·class="n">Write</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3430627664-31">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="3430627664-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write<[·...·truncated·by·diffoscope;·len:·127,·SHA:·207be29be9bf028711d2586320414c42e2dca8e7a7d4297c4a9a5fc108dca3f9·...·]-32">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
328 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">328 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">
329 (a@sam)7&gt;·</span><span·class="n">PrimKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">11</span><span·class="p">.</span><span·class="w">329 (a@sam)7&gt;·</span><span·class="n">PrimKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">11</span><span·class="p">.</span><span·class="w">
330 </span><span·class="mi">11</span><span·class="gp·unselectable">330 </span><span·class="mi">11</span><span·class="gp·unselectable">
331 (a@sam)8&gt;·</span><span·class="n">SecKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">.</span><span·class="w">331 (a@sam)8&gt;·</span><span·class="n">SecKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">.</span><span·class="w">
332 </span><span·class="mi">42</span><span·class="gp·unselectable">332 </span><span·class="mi">42</span><span·class="gp·unselectable">
333 (a@sam)9&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="0019612565-33">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">333 (a@sam)9&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3430627664-33">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">
334 ··························</span><span·class="p"·data-group-id="0019612565-34">[</span><span·class="p"·data-group-id="0019612565-35">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimKey</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</s[·...·truncated·by·diffoscope;·len:·262,·SHA:·8a475b521c5da812823e8183dc2cd53de5ef172c865ab2874d9b0bf79ba0da65·...·]-33">)</span><span·class="p">.</span><span·class="w">334 ··························</span><span·class="p"·data-group-id="3430627664-34">[</span><span·class="p"·data-group-id="3430627664-35">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimKey</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</s[·...·truncated·by·diffoscope;·len:·262,·SHA:·c171c51924c1f5469a54804e4350012608c0775b784785e922b052ff0f6a1ac4·...·]-33">)</span><span·class="p">.</span><span·class="w">
335 </span><span·class="nf">ok</span><span·class="w">335 </span><span·class="nf">ok</span><span·class="w">
336 </span><span·class="p"·data-group-id="0019612565-36">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="0019612565-36">)</span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">ac[·...·truncated·by·diffoscope;·len:·54,·SHA:·ea07a605a62886c1e7290ef7b1d9f42c0babe5823344f9a8d9859599b7a437db·...·]-37">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">336 </span><span·class="p"·data-group-id="3430627664-36">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3430627664-36">)</span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">ac[·...·truncated·by·diffoscope;·len:·54,·SHA:·b1121b00bfe522be400955c225614c923739b17c48de620345306d33252b9f6c·...·]-37">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Write</span><span·class="p">,</span><span·class="w">
337 ···························</span><span·class="p"·data-group-id="0019612565-38">[</span><span·class="p"·data-group-id="0019612565-39">{</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimKe[·...·truncated·by·diffoscope;·len:·240,·SHA:·ddb8d468977adac0c8023dab45f3aa94340c812c1e48a241da7050654dbb1d2b·...·]-37">)</span><span·class="p">.</span><span·class="w">337 ···························</span><span·class="p"·data-group-id="3430627664-38">[</span><span·class="p"·data-group-id="3430627664-39">{</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimKe[·...·truncated·by·diffoscope;·len:·240,·SHA:·291a2ff4fc32af426139acfa6e20d9dc09b1739b949480a32af4a3daa14482c5·...·]-37">)</span><span·class="p">.</span><span·class="w">
338 </span><span·class="nf">ok</span><span·class="w">338 </span><span·class="nf">ok</span><span·class="w">
339 </span><span·class="p"·data-group-id="0019612565-40">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="0019612565-40">)</span><span·class="mi">11</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">ch[·...·truncated·by·diffoscope;·len:·630,·SHA:·de38ef3bec41b6186b7e96504a9f95d49ce7080cc3fd13956e43de9896459d97·...·]-41">)</span><span·class="p">.</span><span·class="w">339 </span><span·class="p"·data-group-id="3430627664-40">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="3430627664-40">)</span><span·class="mi">11</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">ch[·...·truncated·by·diffoscope;·len:·630,·SHA:·87d7ad7da0810b07c5841626bf1f1499e0ebae6bb25ceaf2a9be04406a97f2d0·...·]-41">)</span><span·class="p">.</span><span·class="w">
340 </span><span·class="p"·data-group-id="0019612565-45">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="0019612565-45">}</span><span·class="gp·unselectable">340 </span><span·class="p"·data-group-id="3430627664-45">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3430627664-45">}</span><span·class="gp·unselectable">
341 (a@sam)12&gt;·</span><span·class="n">SecRead</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0019612565-46">(</span><span·class="n">PrimKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecKey</span><span·class="p"·data-group-id="0019612565-46">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">341 (a@sam)12&gt;·</span><span·class="n">SecRead</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3430627664-46">(</span><span·class="n">PrimKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecKey</span><span·class="p"·data-group-id="3430627664-46">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
342 ···············</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="0019612565-47">(</span><span·class="p"·data-group-id="0019612565-48">{</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimKey</span><span·class="p"·data-group-id="0019612565-48">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·179,·SHA:·647dac2e92c2f5743349a8a7477a172aa7ae71b1d6fe1b7d8869b1b4f9ede6bf·...·]-47">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">342 ···············</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="3430627664-47">(</span><span·class="p"·data-group-id="3430627664-48">{</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrimKey</span><span·class="p"·data-group-id="3430627664-48">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·179,·SHA:·ce263ab0ab3e276baa5fa4a5aff71935e407863e2c82857661885675b5e1dfed·...·]-47">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
343 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">343 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">
344 (a@sam)13&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="0019612565-49">(</span><span·class="ss">transaction</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecRead</span><span·class="p">,</span><span·class="w">344 (a@sam)13&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3430627664-49">(</span><span·class="ss">transaction</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecRead</span><span·class="p">,</span><span·class="w">
345 ···························</span><span·class="p"·data-group-id="0019612565-50">[</span><span·class="n">PrimKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecKey</span><span·class="p"·data-group-id="0019612565-50">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_[·...·truncated·by·diffoscope;·len:·52,·SHA:·79fee894d8896925e8adce727ea0fc6d0794a2b4f2409cb58a89bff8a01fac92·...·]-49">)</span><span·class="p">.</span><span·class="w">345 ···························</span><span·class="p"·data-group-id="3430627664-50">[</span><span·class="n">PrimKey</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecKey</span><span·class="p"·data-group-id="3430627664-50">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_[·...·truncated·by·diffoscope;·len:·52,·SHA:·a8d149616a902209eea065ba3aabac20af33896bb63ff3a8ddc267caeca61361·...·]-49">)</span><span·class="p">.</span><span·class="w">
346 </span><span·class="p"·data-group-id="0019612565-51">[</span><span·class="p"·data-group-id="0019612565-52">{</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="mi">42</span><span·class="p">,</span><span·class="mi">11</span><span·class="p"·data-group-id="0019612565-52">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·39381313702ebc22d84b0813125f793e6f86902f975b203a084c60ddb98ecc9b·...·]-51">]</span><span·class="gp·unselectable">346 </span><span·class="p"·data-group-id="3430627664-51">[</span><span·class="p"·data-group-id="3430627664-52">{</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="mi">42</span><span·class="p">,</span><span·class="mi">11</span><span·class="p"·data-group-id="3430627664-52">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·eb0178113bda49cb34bf60415f38e504da0849efbce20b9985f7bbd6de5802a5·...·]-51">]</span><span·class="gp·unselectable">
347 (a@sam)14&gt;·</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0019612565-53">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Item</span><span·class="p"·data-group-id="0019612565-53">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·282,·SHA:·c6a98d9387bb82212e279762f1e23d5f47d02a7bc7bf76e33ec58d6cc7260a54·...·]-54">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">347 (a@sam)14&gt;·</span><span·class="n">Info</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3430627664-53">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Item</span><span·class="p"·data-group-id="3430627664-53">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·282,·SHA:·eada08b0263a4f27e4dce2dea9d21eeda79672aadff03d57a2a2ce8c18a7772e·...·]-54">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
348 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">348 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_eval</span><span·class="o">&gt;</span><span·class="gp·unselectable">
349 (a@sam)15&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="0019612565-55">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">349 (a@sam)15&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">activity</span><span·class="p"·data-group-id="3430627664-55">(</span><span·class="ss">sync_dirty</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 62050/149971 bytes (41.37%) of diff not shown.
47.1 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_chap7.html
    
Offset 229, 34 lines modifiedOffset 229, 34 lines modified
229 ··</a>229 ··</a>
230 ··<span·class="text">Startup·Files</span>230 ··<span·class="text">Startup·Files</span>
231 </h3>231 </h3>
232 <p><a·href="mnesia_chap3.html#start_mnesia">Start·Mnesia</a>·states·the·following·prerequisites232 <p><a·href="mnesia_chap3.html#start_mnesia">Start·Mnesia</a>·states·the·following·prerequisites
233 for·starting·<code·class="inline">Mnesia</code>:</p><ul><li>An·Erlang·session·must·be·started·and·a·<code·class="inline">Mnesia</code>·directory·must·be·specified233 for·starting·<code·class="inline">Mnesia</code>:</p><ul><li>An·Erlang·session·must·be·started·and·a·<code·class="inline">Mnesia</code>·directory·must·be·specified
234 for·the·database.</li><li>A·database·schema·must·be·initiated,·using·the·function234 for·the·database.</li><li>A·database·schema·must·be·initiated,·using·the·function
235 <a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema/1</code></a>.</li></ul><p>The·following·example·shows·how·these·tasks·are·performed:</p><p><em>Step·1:</em>·Start·an·Erlang·session·and·specify·a·<code·class="inline">Mnesia</code>·directory·for·the235 <a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema/1</code></a>.</li></ul><p>The·following·example·shows·how·these·tasks·are·performed:</p><p><em>Step·1:</em>·Start·an·Erlang·session·and·specify·a·<code·class="inline">Mnesia</code>·directory·for·the
236 database:</p><pre><code·class="text">%·erl·-sname·klacke·-mnesia·dir·'&quot;/ldisc/scratch/klacke&quot;'</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="0468107243-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="0468107243-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">4.9</span><span·class="w">236 database:</p><pre><code·class="text">%·erl·-sname·klacke·-mnesia·dir·'&quot;/ldisc/scratch/klacke&quot;'</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="5962530220-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="5962530220-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">4.9</span><span·class="w">
  
237 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="0468107243-2">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="0468107243-2">)</span><span·class="gp·unselectable">237 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V4</span><span·class="p">.</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="5962530220-2">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="5962530220-2">)</span><span·class="gp·unselectable">
238 (klacke@gin)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="0468107243-3">(</span><span·class="p"·data-group-id="0468107243-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0468107243-5">(</span><span·class="p"·data-group-id="0468107243-5">)</span><span·class="p"·data-group-id="0468107243-4">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·7950dda5f7585ce9d6f9a475e59f7f3781dc46dc2647009f4c6e7596d5b39b32·...·]-3">)</span><span·class="p">.</span><span·class="w">238 (klacke@gin)1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="5962530220-3">(</span><span·class="p"·data-group-id="5962530220-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="5962530220-5">(</span><span·class="p"·data-group-id="5962530220-5">)</span><span·class="p"·data-group-id="5962530220-4">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·2c557e32170ccf4f09b01a411c5cbfa97f368baa2cb6a08370eb537796eebc9a·...·]-3">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="nf">ok</span><span·class="w">239 </span><span·class="nf">ok</span><span·class="w">
240 </span><span·class="p"·data-group-id="0468107243-6">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="0468107243-6">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">240 </span><span·class="p"·data-group-id="5962530220-6">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="5962530220-6">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">
241 </span><span·class="err">^</span><span·class="n">Z</span><span·class="w">241 </span><span·class="err">^</span><span·class="n">Z</span><span·class="w">
242 </span><span·class="n">Suspended</span></code></pre><p><em>Step·2:</em>·You·can·inspect·the·<code·class="inline">Mnesia</code>·directory·to·see·what·files·have·been242 </span><span·class="n">Suspended</span></code></pre><p><em>Step·2:</em>·You·can·inspect·the·<code·class="inline">Mnesia</code>·directory·to·see·what·files·have·been
243 created:</p><pre><code·class="text">%·ls·-l·/ldisc/scratch/klacke243 created:</p><pre><code·class="text">%·ls·-l·/ldisc/scratch/klacke
244 -rw-rw-r--···1·klacke···staff·······247·Aug·12·15:06·FALLBACK.BUP</code></pre><p>The·response·shows·that·the·file·<code·class="inline">FALLBACK.BUP</code>·has·been·created.·This·is·called244 -rw-rw-r--···1·klacke···staff·······247·Aug·12·15:06·FALLBACK.BUP</code></pre><p>The·response·shows·that·the·file·<code·class="inline">FALLBACK.BUP</code>·has·been·created.·This·is·called
245 a·backup·file,·and·it·contains·an·initial·schema.·If·more·than·one·node·in·the245 a·backup·file,·and·it·contains·an·initial·schema.·If·more·than·one·node·in·the
246 function·<a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema/1</code></a>·had·been·specified,·identical·backup·files246 function·<a·href="mnesia.html#create_schema/1"><code·class="inline">mnesia:create_schema/1</code></a>·had·been·specified,·identical·backup·files
247 would·have·been·created·on·all·nodes.</p><p><em>Step·3:</em>·Start·<code·class="inline">Mnesia</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5129253987-1">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="5129253987-1">)</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class=[·...·truncated·by·diffoscope;·len:·105,·SHA:·53c6e5d254818e2e00c9d93a95b606194bbb677321f3807b221d7d653d84d8e2·...·]7-2">)</span><span·class="p">.</span><span·class="w">247 would·have·been·created·on·all·nodes.</p><p><em>Step·3:</em>·Start·<code·class="inline">Mnesia</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6588660477-1">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="6588660477-1">)</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class=[·...·truncated·by·diffoscope;·len:·105,·SHA:·c13466cee559ed04cfc571d587d133865bf32c6718f788bd14affee5c4ae3815·...·]7-2">)</span><span·class="p">.</span><span·class="w">
248 </span><span·class="ss">ok</span></code></pre><p><em>Step·4:</em>·You·can·see·the·following·listing·in·the·<code·class="inline">Mnesia</code>·directory:</p><pre><code·class="text">-rw-rw-r--···1·klacke···staff·········86·May·26·19:03·LATEST.LOG248 </span><span·class="ss">ok</span></code></pre><p><em>Step·4:</em>·You·can·see·the·following·listing·in·the·<code·class="inline">Mnesia</code>·directory:</p><pre><code·class="text">-rw-rw-r--···1·klacke···staff·········86·May·26·19:03·LATEST.LOG
249 -rw-rw-r--···1·klacke···staff······34507·May·26·19:03·schema.DAT</code></pre><p>The·schema·in·the·backup·file·<code·class="inline">FALLBACK.BUP</code>·has·been·used·to·generate·the·file249 -rw-rw-r--···1·klacke···staff······34507·May·26·19:03·schema.DAT</code></pre><p>The·schema·in·the·backup·file·<code·class="inline">FALLBACK.BUP</code>·has·been·used·to·generate·the·file
250 <code·class="inline">schema.DAT</code>.·Since·there·are·no·other·disc·resident·tables·than·the·schema,·no250 <code·class="inline">schema.DAT</code>.·Since·there·are·no·other·disc·resident·tables·than·the·schema,·no
251 other·data·files·were·created.·The·file·<code·class="inline">FALLBACK.BUP</code>·was·removed·after·the251 other·data·files·were·created.·The·file·<code·class="inline">FALLBACK.BUP</code>·was·removed·after·the
252 successful·&quot;restoration&quot;.·You·also·see·some·files·that·are·for·internal·use·by252 successful·&quot;restoration&quot;.·You·also·see·some·files·that·are·for·internal·use·by
253 <code·class="inline">Mnesia</code>.</p><p><em>Step·5:</em>·Create·a·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(klacke@gin)4&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2490303733-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="p"·data-group-id="2490303733-2">[</span><span·class="p"·data-group-id="2490303733-3">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2490303733-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="2490303733-5">(</span><span·class="p"·data-group-id="2490303733-5">)</span><span·class="p"·data-group-id="2490303733-4">]</span><span·class="p"·data-group-id="2490303733-3">}</span><span·class="p"·data-group-id="2490303733-2">]</span><span·class="p"·data-group-id="2490303733-1">)</span><span·class="p">.</span><span·class="w"> 
254 </span><span·class="p"·data-group-id="2490303733-6">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2490303733-6">}</span></code></pre><p><em>Step·6:</em>·You·can·see·the·following·listi[·...·truncated·by·diffoscope;·len:·112,·SHA:·97a746fbad41ac6f5fe9013762a4d97380077fc7d0e49d5206c8569b7dda64af·...·]253 <code·class="inline">Mnesia</code>.</p><p><em>Step·5:</em>·Create·a·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(klacke@gin)4&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">creat[·...·truncated·by·diffoscope;·len:·746,·SHA:·5d0e48e18b93f328cd21f53343da1b954398535e036ef1922b4da997ad284752·...·]
 254 </span><span·class="p"·data-group-id="6285075640-6">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="6285075640-6">}</span></code></pre><p><em>Step·6:</em>·You·can·see·the·following·listing·in·the·<code·class="inline">Mnesia</code>·directory:</p><pre><code·class="text">%·ls·-l·/ldisc/scratch/klacke
255 -rw-rw-r--·1·klacke·staff····86·May·26·19:07·LATEST.LOG255 -rw-rw-r--·1·klacke·staff····86·May·26·19:07·LATEST.LOG
256 -rw-rw-r--·1·klacke·staff····94·May·26·19:07·foo.DCD256 -rw-rw-r--·1·klacke·staff····94·May·26·19:07·foo.DCD
257 -rw-rw-r--·1·klacke·staff··6679·May·26·19:07·schema.DAT</code></pre><p>The·file·<code·class="inline">foo.DCD</code>·has·been·created.·This·file·will·eventually·store·all·data257 -rw-rw-r--·1·klacke·staff··6679·May·26·19:07·schema.DAT</code></pre><p>The·file·<code·class="inline">foo.DCD</code>·has·been·created.·This·file·will·eventually·store·all·data
258 that·is·written·into·the·<code·class="inline">foo</code>·table.</p><h3·id="log-file"·class="section-heading">258 that·is·written·into·the·<code·class="inline">foo</code>·table.</p><h3·id="log-file"·class="section-heading">
259 ··<a·href="#log-file"·class="hover-link">259 ··<a·href="#log-file"·class="hover-link">
260 ····<i·class="ri-link-m"·aria-hidden="true"></i>260 ····<i·class="ri-link-m"·aria-hidden="true"></i>
261 ··</a>261 ··</a>
Offset 292, 19 lines modifiedOffset 292, 19 lines modified
292 and·it·is·efficient·to·insert·and·search·for·records·in·these·files·with·a292 and·it·is·efficient·to·insert·and·search·for·records·in·these·files·with·a
293 specific·key.·The·<code·class="inline">.DAT</code>·files·are·used·for·the·schema·and·for293 specific·key.·The·<code·class="inline">.DAT</code>·files·are·used·for·the·schema·and·for
294 <code·class="inline">disc_only_copies</code>·tables.·The·<code·class="inline">Mnesia</code>·data·files·are·currently·implemented·in294 <code·class="inline">disc_only_copies</code>·tables.·The·<code·class="inline">Mnesia</code>·data·files·are·currently·implemented·in
295 the·standard·library·module·<a·href="../../../../lib/stdlib-6.2/doc/html/dets.html"><code·class="inline">dets</code></a>·in·<code·class="inline">STDLIB</code>.</p><p>All·operations·that·can·be·performed·on·<code·class="inline">dets</code>·files·can·also·be·performed·on295 the·standard·library·module·<a·href="../../../../lib/stdlib-6.2/doc/html/dets.html"><code·class="inline">dets</code></a>·in·<code·class="inline">STDLIB</code>.</p><p>All·operations·that·can·be·performed·on·<code·class="inline">dets</code>·files·can·also·be·performed·on
296 the·<code·class="inline">Mnesia</code>·data·files.·For·example,·<code·class="inline">dets</code>·contains·the·function296 the·<code·class="inline">Mnesia</code>·data·files.·For·example,·<code·class="inline">dets</code>·contains·the·function
297 <a·href="../../../../lib/stdlib-6.2/doc/html/dets.html#traverse/2"><code·class="inline">dets:traverse/2</code></a>,·which·can·be·used·to·view·the·contents·of·a·<code·class="inline">Mnesia</code>·<code·class="inline">DAT</code>297 <a·href="../../../../lib/stdlib-6.2/doc/html/dets.html#traverse/2"><code·class="inline">dets:traverse/2</code></a>,·which·can·be·used·to·view·the·contents·of·a·<code·class="inline">Mnesia</code>·<code·class="inline">DAT</code>
298 file.·However,·this·can·only·be·done·when·<code·class="inline">Mnesia</code>·is·not·running.·So,·to·view298 file.·However,·this·can·only·be·done·when·<code·class="inline">Mnesia</code>·is·not·running.·So,·to·view
299 the·schema·file,·do·as·follows;</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5932920430-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="5932920430-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·688,·SHA:·39c98ab8696f36dafdc6a31e82074c4c9d435d1d294760aed3647cebfae5643d·...·]-5">}</span><span·class="p">,</span><span·class="w">299 the·schema·file,·do·as·follows;</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7638748258-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="7638748258-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·688,·SHA:·4516b7aefc9b6bef071f38a6fed9028bf66d7308269c64131161918f268b6745·...·]-5">}</span><span·class="p">,</span><span·class="w">
300 </span><span·class="p"·data-group-id="5932920430-6">{</span><span·class="ss">keypos</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="5932920430-6">}</span><span·class="p"·data-group-id="5932920430-3">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·925aae7d24faf47ae61fa3620c140cc9a983a3b37d27a546ea7b28c064ff14a4·...·]-2">)</span><span·class="p">,</span><span·class="w">300 </span><span·class="p"·data-group-id="7638748258-6">{</span><span·class="ss">keypos</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="7638748258-6">}</span><span·class="p"·data-group-id="7638748258-3">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·79b6155c118bad631fa602ec33d700e2307448e2121e648559e97011b7bd1042·...·]-2">)</span><span·class="p">,</span><span·class="w">
301 </span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5932920430-7">(</span><span·class="n">X</span><span·class="p"·data-group-id="5932920430-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><[·...·truncated·by·diffoscope;·len:·381,·SHA:·d76a077a7d6475c84cc0dadd312667b5883561bdca2308cbfc086c2b4c69f245·...·]-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">301 </span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7638748258-7">(</span><span·class="n">X</span><span·class="p"·data-group-id="7638748258-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><[·...·truncated·by·diffoscope;·len:·381,·SHA:·b4c090445fc9706d3ba78d04545a7be889ac271d6bd00874bf3aafe1dc74880f·...·]-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
302 </span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">traverse</span><span·class="p"·data-group-id="5932920430-10">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="5932920430-10">)</span><span·class="p">,</span><span·class="w">302 </span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">traverse</span><span·class="p"·data-group-id="7638748258-10">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="7638748258-10">)</span><span·class="p">,</span><span·class="w">
303 </span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="5932920430-11">(</span><span·class="n">N</span><span·class="p"·data-group-id="5932920430-11">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·<code·class="inline">DAT</code>·files·must·always·be·opened·with·option·<code·class="inline">{repair,·false}</code>.·This303 </span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="7638748258-11">(</span><span·class="n">N</span><span·class="p"·data-group-id="7638748258-11">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·<code·class="inline">DAT</code>·files·must·always·be·opened·with·option·<code·class="inline">{repair,·false}</code>.·This
304 ensures·that·these·files·are·not·automatically·repaired.·Without·this·option,304 ensures·that·these·files·are·not·automatically·repaired.·Without·this·option,
305 the·database·can·become·inconsistent,·because·<code·class="inline">Mnesia</code>·can·believe·that·the305 the·database·can·become·inconsistent,·because·<code·class="inline">Mnesia</code>·can·believe·that·the
306 files·were·properly·closed.·For·information·about·configuration·parameter306 files·were·properly·closed.·For·information·about·configuration·parameter
307 <code·class="inline">auto_repair</code>,·see·the·Reference·Manual.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>It·is·recommended·that·the·data·files·are·not·tampered·with·while·<code·class="inline">Mnesia</code>·is307 <code·class="inline">auto_repair</code>,·see·the·Reference·Manual.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>It·is·recommended·that·the·data·files·are·not·tampered·with·while·<code·class="inline">Mnesia</code>·is
308 running.·While·not·prohibited,·the·behavior·of·<code·class="inline">Mnesia</code>·is·unpredictable.</p></section><p>The·<code·class="inline">disc_copies</code>·tables·are·stored·on·disk·with·<code·class="inline">.DCL</code>·and·<code·class="inline">.DCD</code>·files,·which308 running.·While·not·prohibited,·the·behavior·of·<code·class="inline">Mnesia</code>·is·unpredictable.</p></section><p>The·<code·class="inline">disc_copies</code>·tables·are·stored·on·disk·with·<code·class="inline">.DCL</code>·and·<code·class="inline">.DCD</code>·files,·which
309 are·standard·<code·class="inline">disk_log</code>·files.</p><h2·id="loading-tables-at-startup"·class="section-heading">309 are·standard·<code·class="inline">disk_log</code>·files.</p><h2·id="loading-tables-at-startup"·class="section-heading">
310 ··<a·href="#loading-tables-at-startup"·class="hover-link">310 ··<a·href="#loading-tables-at-startup"·class="hover-link">
Offset 530, 48 lines modifiedOffset 530, 48 lines modified
530 of·what·<code·class="inline">record_name</code>·is·set·to.</li></ul><p>The·backup·data·is·divided·into·two·sections.·The·first·section·contains530 of·what·<code·class="inline">record_name</code>·is·set·to.</li></ul><p>The·backup·data·is·divided·into·two·sections.·The·first·section·contains
531 information·related·to·the·schema.·All·schema-related·items·are·tuples·where·the531 information·related·to·the·schema.·All·schema-related·items·are·tuples·where·the
532 first·field·equals·the·atom·schema.·The·second·section·is·the·record·section.532 first·field·equals·the·atom·schema.·The·second·section·is·the·record·section.
533 Schema·records·cannot·be·mixed·with·other·records·and·all·schema·records·must·be533 Schema·records·cannot·be·mixed·with·other·records·and·all·schema·records·must·be
534 located·first·in·the·backup.</p><p>The·schema·itself·is·a·table·and·is·possibly·included·in·the·backup.·Each·node534 located·first·in·the·backup.</p><p>The·schema·itself·is·a·table·and·is·possibly·included·in·the·backup.·Each·node
535 where·the·schema·table·resides·is·regarded·as·a·<code·class="inline">db_node</code>.</p><p>The·following·example·shows·how535 where·the·schema·table·resides·is·regarded·as·a·<code·class="inline">db_node</code>.</p><p>The·following·example·shows·how
536 <a·href="mnesia.html#traverse_backup/4"><code·class="inline">mnesia:traverse_backup</code></a>·can·be·used·to·rename·a536 <a·href="mnesia.html#traverse_backup/4"><code·class="inline">mnesia:traverse_backup</code></a>·can·be·used·to·rename·a
537 <code·class="inline">db_node</code>·in·a·backup·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">change_node_name</span><span·class="p"·data-group-id="0426577063-1">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">To</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·135,·SHA:·fd43ee2a6f758e6a77802ee30a75be233e4c4f331c0c8036cb5f049f28816e85·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">537 <code·class="inline">db_node</code>·in·a·backup·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">change_node_name</span><span·class="p"·data-group-id="2619848742-1">(</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">To</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·135,·SHA:·a0b59146ceab9a4fd8f783e8af190a1ddef92aad5739107922464bfe9db58950·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
538 ····</span><span·class="n">Switch</span><span·class="w">·</span><span·class="o">=</span><span·class="w">538 ····</span><span·class="n">Switch</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
539 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="0426577063-2">(</span><span·class="n">Node</span><span·class="p"·data-group-id="0426577063-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">From</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">To</span><span·class="p">;</span><span·class="w">539 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="2619848742-2">(</span><span·class="n">Node</span><span·class="p"·data-group-id="2619848742-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="n">From</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">To</span><span·class="p">;</span><span·class="w">
540 ···········</span><span·class="p"·data-group-id="0426577063-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="0426577063-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">==</span><sp[·...·truncated·by·diffoscope;·len:·466,·SHA:·a2e3cbb5e1ded5b795ef8a04cb415bb2e532bfca5b9ce7b8c3bfe512b98287c9·...·]-4">)</span><span·class="p">;</span><span·class="w">540 ···········</span><span·class="p"·data-group-id="2619848742-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="2619848742-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">==</span><sp[·...·truncated·by·diffoscope;·len:·466,·SHA:·59ceef941080feeb1a269197af44eabee381fe9e0e77cc6a5cf0b001007db31a·...·]-4">)</span><span·class="p">;</span><span·class="w">
541 ···········</span><span·class="p"·data-group-id="0426577063-6">(</span><span·class="n">Node</span><span·class="p"·data-group-id="0426577063-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">541 ···········</span><span·class="p"·data-group-id="2619848742-6">(</span><span·class="n">Node</span><span·class="p"·data-group-id="2619848742-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">
542 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">542 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
543 ····</span><span·class="n">Convert</span><span·class="w">·</span><span·class="o">=</span><span·class="w">543 ····</span><span·class="n">Convert</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
544 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="0426577063-7">(</span><span·class="p"·data-group-id="0426577063-8">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Nodes</[·...·truncated·by·diffoscope;·len:·173,·SHA:·1a2549a17be7626924a140d6c92589e7e2b8eea0ac7f869e73669dc29ffa1324·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">544 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="2619848742-7">(</span><span·class="p"·data-group-id="2619848742-8">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Nodes</[·...·truncated·by·diffoscope;·len:·173,·SHA:·1bca60afcfd586c8c0aee6ae1604fa2900371d094082bb5407f0c472f9a3cc62·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
545 ················</span><span·class="p"·data-group-id="0426577063-9">{</span><span·class="p"·data-group-id="0426577063-10">[</span><span·class="p"·data-group-id="0426577063-11">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">db_nodes</span><span·class="p">[·...·truncated·by·diffoscope;·len:·524,·SHA:·3bf8a595e0634f08ae976f4b7257288bc83b682e05a0b0491562f9b7babc850b·...·]-9">}</span><span·class="p">;</span><span·class="w">545 ················</span><span·class="p"·data-group-id="2619848742-9">{</span><span·class="p"·data-group-id="2619848742-10">[</span><span·class="p"·data-group-id="2619848742-11">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">db_nodes</span><span·class="p">[·...·truncated·by·diffoscope;·len:·524,·SHA:·cc31241845d04d5169c8d1810387329f22a0361fcc30ada99828cea00c20247c·...·]-9">}</span><span·class="p">;</span><span·class="w">
546 ···········</span><span·class="p"·data-group-id="0426577063-13">(</span><span·class="p"·data-group-id="0426577063-14">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Versio[·...·truncated·by·diffoscope;·len:·177,·SHA:·72b879850334ebec92288a9770dedb04b2dab60a9e14b938dc6782986f3f750e·...·]-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">546 ···········</span><span·class="p"·data-group-id="2619848742-13">(</span><span·class="p"·data-group-id="2619848742-14">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Versio[·...·truncated·by·diffoscope;·len:·177,·SHA:·a329ead78d250043893257f17088f807d3afff13e5796d6f388785b748bac717·...·]-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
547 ················</span><span·class="p"·data-group-id="0426577063-15">{</span><span·class="p"·data-group-id="0426577063-16">[</span><span·class="p"·data-group-id="0426577063-17">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·class="p">[·...·truncated·by·diffoscope;·len:·285,·SHA:·fa7730bbbd66cca82dc36653c95742fc9fa68adf14d65a1a67bdddb24bfd8464·...·]-15">}</span><span·class="p">;</span><span·class="w">547 ················</span><span·class="p"·data-group-id="2619848742-15">{</span><span·class="p"·data-group-id="2619848742-16">[</span><span·class="p"·data-group-id="2619848742-17">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">version</span><span·class="p">[·...·truncated·by·diffoscope;·len:·285,·SHA:·6b84858b13ebae79e900257f80898d806be1ce2b826c3f307fcd1abd360f3a3d·...·]-15">}</span><span·class="p">;</span><span·class="w">
548 ···········</span><span·class="p"·data-group-id="0426577063-18">(</span><span·class="p"·data-group-id="0426577063-19">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cookie</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cookie<[·...·truncated·by·diffoscope;·len:·175,·SHA:·34827d26c17d1f85afb5de2fd620a9b3820e08afd8fa5a9de2606e9623b4c4b5·...·]-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">548 ···········</span><span·class="p"·data-group-id="2619848742-18">(</span><span·class="p"·data-group-id="2619848742-19">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cookie</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cookie<[·...·truncated·by·diffoscope;·len:·175,·SHA:·633305e020ec73c8792cb005d9d03393358a6b51dde427da8bbfb92596e96721·...·]-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
549 ················</span><span·class="p"·data-group-id="0426577063-20">{</span><span·class="p"·data-group-id="0426577063-21">[</span><span·class="p"·data-group-id="0426577063-22">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cookie</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·283,·SHA:·4d1b6533a0e76f5f6bbc14ef8c9c5679642ef995ee53e95ecf3602952d1530f6·...·]-20">}</span><span·class="p">;</span><span·class="w">549 ················</span><span·class="p"·data-group-id="2619848742-20">{</span><span·class="p"·data-group-id="2619848742-21">[</span><span·class="p"·data-group-id="2619848742-22">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cookie</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·283,·SHA:·66889aa69dbd1cfccf305f98b6fcc798cc715b1a0969998be258585a9add2d93·...·]-20">}</span><span·class="p">;</span><span·class="w">
550 ···········</span><span·class="p"·data-group-id="0426577063-23">(</span><span·class="p"·data-group-id="0426577063-24">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CreateList<[·...·truncated·by·diffoscope;·len:·175,·SHA:·6e44632af3063565b3f3e3c16b728880c03c620775302ba382f87abc3f3323b1·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">550 ···········</span><span·class="p"·data-group-id="2619848742-23">(</span><span·class="p"·data-group-id="2619848742-24">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CreateList<[·...·truncated·by·diffoscope;·len:·175,·SHA:·99a0ba3347b2b4a9bc0e07e2304f20ec3081d2b9e27cb883a893019860345bad·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
551 ················</span><span·class="n">Keys</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0426577063-25">[</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disc_only_copies</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·08e81168370721db2dfcd28da6b4f7aced5f347af20e18cf4505958b84a8cff4·...·]-25">]</span><span·class="p">,</span><span·class="w">551 ················</span><span·class="n">Keys</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2619848742-25">[</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disc_only_copies</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·a6daa8054154a4f537c07112a0904a422fc73296e2099441e63648300fe2929d·...·]-25">]</span><span·class="p">,</span><span·class="w">
552 ················</span><span·class="n">OptSwitch</span><span·class="w">·</span><span·class="o">=</span><span·class="w">552 ················</span><span·class="n">OptSwitch</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
553 ····················</span><span·class="nf">fun</span><span·class="p"·data-group-id="0426577063-26">(</span><span·class="p"·data-group-id="0426577063-27">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="0426577063-27">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·07d590e1c95fc2fbae4b7e053cfbbf8b7c5c77f149db6683f4b7744a0461f0c6·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">553 ····················</span><span·class="nf">fun</span><span·class="p"·data-group-id="2619848742-26">(</span><span·class="p"·data-group-id="2619848742-27">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="2619848742-27">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·cb74a8b70c855edda5667046ccc5cc6c828eaa1681094f8f5c25f2d450d2e48d·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
554 ····························</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="0426577063-28">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Keys</span><span·class="p"·data-group-id="0426577063-28">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">554 ····························</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="2619848742-28">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Keys</span><span·class="p"·data-group-id="2619848742-28">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
555 ································</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0426577063-29">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="0426577063-30">(</span><span·class="n">Switch</s[·...·truncated·by·diffoscope;·len:·173,·SHA:·428fe346fadc4aba046b331867cdb69e4898dbdae19be49c233b62ac804b83bc·...·]-29">}</span><span·class="p">;</span><span·class="w">555 ································</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2619848742-29">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="2619848742-30">(</span><span·class="n">Switch</s[·...·truncated·by·diffoscope;·len:·173,·SHA:·a76d743af8332b793bcd793249690230a8ee0e8f4d5c34ae8d325c45edad0ca9·...·]-29">}</span><span·class="p">;</span><span·class="w">
556 ································</span><span·class="ss">false</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0426577063-31">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="0426577063-31">}</span><span·class="w">556 ································</span><span·class="ss">false</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2619848742-31">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="2619848742-31">}</span><span·class="w">
557 ····························</span><span·class="k">end</span><span·class="w">557 ····························</span><span·class="k">end</span><span·class="w">
558 ····················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">558 ····················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
559 ················</span><span·class="p"·data-group-id="0426577063-32">{</span><span·class="p"·data-group-id="0426577063-33">[</span><span·class="p"·data-group-id="0426577063-34">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·551,·SHA:·604310d8e86805c9b5cb3b712cc8efdb77d831d440cd202450d3e746ba12443a·...·]-32">}</span><span·class="p">;</span><span·class="w">559 ················</span><span·class="p"·data-group-id="2619848742-32">{</span><span·class="p"·data-group-id="2619848742-33">[</span><span·class="p"·data-group-id="2619848742-34">{</span><span·class="ss">schema</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tab</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·551,·SHA:·23af5c1ca361a14ac51efab7f6973cdcbe9b14ea35d191254dcb4de426864077·...·]-32">}</span><span·class="p">;</span><span·class="w">
560 ···········</span><span·class="p"·data-group-id="0426577063-36">(</span><span·class="n">Other</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0426577063-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">560 ···········</span><span·class="p"·data-group-id="2619848742-36">(</span><span·class="n">Other</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2619848742-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
561 ················</span><span·class="p"·data-group-id="0426577063-37">{</span><span·class="p"·data-group-id="0426577063-38">[</span><span·class="n">Other</span><span·class="p"·data-group-id="0426577063-38">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·59fd5e0e4ac2077db3803ada634362b906eef2363e71cefa6cadbaca0b4ba3cf·...·]-37">}</span><span·class="w">561 ················</span><span·class="p"·data-group-id="2619848742-37">{</span><span·class="p"·data-group-id="2619848742-38">[</span><span·class="n">Other</span><span·class="p"·data-group-id="2619848742-38">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·313ad4e24afad87675d1e464c1af5e7497ab97a29a68cfcdac33a9f9b77463e0·...·]-37">}</span><span·class="w">
562 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">562 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
563 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="0426577063-39">(</span><span·class="n">Source</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Target</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·220,·SHA:·940fb382d3cbf78ac1d0e0908d0d3083c64a9e9ebe67a6668256e6ae2832915b·...·]-39">)</span><span·class="p">.</span><span·class="w">563 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="2619848742-39">(</span><span·class="n">Source</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Target</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·220,·SHA:·2f347ebe90c8e8b9414c0ab05a5cb0d0da7c58ede7daf6777e7bdc452fd46d56·...·]-39">)</span><span·class="p">.</span><span·class="w">
  
564 </span><span·class="nf">view</span><span·class="p"·data-group-id="0426577063-40">(</span><span·class="n">Source</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="0426577063-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">564 </span><span·class="nf">view</span><span·class="p"·data-group-id="2619848742-40">(</span><span·class="n">Source</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="2619848742-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
565 ····</span><span·class="n">View</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0426577063-41">(</span><span·class="n">Item</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0426577063-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">565 ····</span><span·class="n">View</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2619848742-41">(</span><span·class="n">Item</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2619848742-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
566 ···················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0426577063-42">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">.</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0426577063-43">[</span><span·class="n">Item<[·...·truncated·by·diffoscope;·len:·101,·SHA:·7910b3179c1a3e2ed8b3aad3fb58397c5ee16030bcb8ac170e6bc91bf37ef285·...·]-42">)</span><span·class="p">,</span><span·class="w">566 ···················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2619848742-42">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">.</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2619848742-43">[</span><span·class="n">Item<[·...·truncated·by·diffoscope;·len:·101,·SHA:·09445df1afe664baf8af9d311e0b1ab678680d25f9163cf051f824cc0b48aea3·...·]-42">)</span><span·class="p">,</span><span·class="w">
567 ···················</span><span·class="p"·data-group-id="0426577063-44">{</span><span·class="p"·data-group-id="0426577063-45">[</span><span·class="n">Item</span><span·class="p"·data-group-id="0426577063-45">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·114,·SHA:·bf81c997a06b6b4d963fb0dbf95e16c918032af5496ef79521644d458fa2b3b0·...·]-44">}</span><span·class="w">567 ···················</span><span·class="p"·data-group-id="2619848742-44">{</span><span·class="p"·data-group-id="2619848742-45">[</span><span·class="n">Item</span><span·class="p"·data-group-id="2619848742-45">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·114,·SHA:·655ee0d60a5e00f81ec2b205246e22590fb5db9f926555984fc0f8ff57170597·...·]-44">}</span><span·class="w">
568 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">568 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
569 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="0426577063-46">(</span><span·class="n">Source</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dummy</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·217,·SHA:·14e295c6e172543d0d214b762e4495c6ac87050c8e84df2d0f3b68fdcaa394f5·...·]-46">)</span><span·class="p">.</span></code></pre><h3·id="restore"·class="section-heading">569 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="2619848742-46">(</span><span·class="n">Source</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dummy</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·217,·SHA:·84a55b1e7399c3f26e48de015ce6be64bd6486911bb4ea2845d6b5a37df38f77·...·]-46">)</span><span·class="p">.</span></code></pre><h3·id="restore"·class="section-heading">
570 ··<a·href="#restore"·class="hover-link">570 ··<a·href="#restore"·class="hover-link">
571 ····<i·class="ri-link-m"·aria-hidden="true"></i>571 ····<i·class="ri-link-m"·aria-hidden="true"></i>
572 ··</a>572 ··</a>
573 ··<span·class="text">Restore</span>573 ··<span·class="text">Restore</span>
574 </h3>574 </h3>
575 <p>Tables·can·be·restored·online·from·a·backup·without·restarting·<code·class="inline">Mnesia</code>.·A575 <p>Tables·can·be·restored·online·from·a·backup·without·restarting·<code·class="inline">Mnesia</code>.·A
576 restore·is·performed·with·the·function576 restore·is·performed·with·the·function
3.75 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.3/doc/html/mnesia_registry.html
    
Offset 250, 16 lines modifiedOffset 250, 16 lines modified
250 ··········<pre·translate="no"><span·class="attribute">-spec</span>·create_table(Tab·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()}])·->·ok.</pre>250 ··········<pre·translate="no"><span·class="attribute">-spec</span>·create_table(Tab·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()}])·->·ok.</pre>
  
251 ······</div>251 ······</div>
  
252 <section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p><em>This·function·is·deprecated.·Do·not·use·it.</em></p></section><p>A·wrapper·function·for·<a·href="mnesia.html#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>,·which·creates·a·table·(if·there252 <section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p><em>This·function·is·deprecated.·Do·not·use·it.</em></p></section><p>A·wrapper·function·for·<a·href="mnesia.html#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>,·which·creates·a·table·(if·there
253 is·no·existing·table)·with·an·appropriate·set·of·<code·class="inline">attributes</code>.·The·attributes253 is·no·existing·table)·with·an·appropriate·set·of·<code·class="inline">attributes</code>.·The·attributes
254 and·<code·class="inline">TabDef</code>·are·forwarded·to·<a·href="mnesia.html#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>.·For·example,·if·the·table254 and·<code·class="inline">TabDef</code>·are·forwarded·to·<a·href="mnesia.html#create_table/2"><code·class="inline">mnesia:create_table/2</code></a>.·For·example,·if·the·table
255 is·to·reside·as·<code·class="inline">disc_only_copies</code>·on·all·nodes,·a·call·looks·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">TabDef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1850619833-1">[</span><span·class="p"·data-group-id="1850619833-2">{</span><span·class="p"·data-group-id="1850619833-3">{</span><span·class="ss">disc_only_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">node</span><span·class=[·...·truncated·by·diffoscope;·len:·318,·SHA:·92a2f727bcf09595902f59cc941dda86a508d9e72a1ca796fdc23e6d39b82fe2·...·]-3">}</span><span·class="p">]</span><span·class="p">,</span><span·class="w">255 is·to·reside·as·<code·class="inline">disc_only_copies</code>·on·all·nodes,·a·call·looks·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">TabDef</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4334378379-1">[</span><span·class="p"·data-group-id="4334378379-2">{</span><span·class="p"·data-group-id="4334378379-3">{</span><span·class="ss">disc_only_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">node</span><span·class=[·...·truncated·by·diffoscope;·len:·318,·SHA:·ad6bf1757a1e0bead9fc9b9cd94b9880adf3750fda066bd09398510ab357addf·...·]-3">}</span><span·class="p">]</span><span·class="p">,</span><span·class="w">
256 ··········</span><span·class="nc">mnesia_registry</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="1850619833-6">(</span><span·class="ss">my_reg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabDef</span><span·class="p"·data-group-id="1850619833-6">)</span></code></pre>256 ··········</span><span·class="nc">mnesia_registry</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="4334378379-6">(</span><span·class="ss">my_reg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabDef</span><span·class="p"·data-group-id="4334378379-6">)</span></code></pre>
257 ··</section>257 ··</section>
258 </section>258 </section>
  
259 ····</div>259 ····</div>
260 ··</section>260 ··</section>
  
261 ····<footer·class="footer">261 ····<footer·class="footer">
410 KB
./usr/share/doc/erlang-doc/html/lib/observer-2.17/doc/html/observer.epub
3.75 KB
zipinfo {}
    
Offset 1, 25 lines modifiedOffset 1, 25 lines modified
1 Zip·file·size:·116848·bytes,·number·of·entries:·231 Zip·file·size:·116861·bytes,·number·of·entries:·23
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:31·mimetype
3 ?rw-r--r--··6.1·unx···158943·bx·defN·25-Feb-13·10:52·OEBPS/ttb_ug.xhtml3 ?rw-r--r--··6.1·unx···158943·bx·defN·25-Feb-13·09:31·OEBPS/ttb_ug.xhtml
4 ?rw-r--r--··6.1·unx···105646·bx·defN·25-Feb-13·10:52·OEBPS/ttb.xhtml4 ?rw-r--r--··6.1·unx···105646·bx·defN·25-Feb-13·09:31·OEBPS/ttb.xhtml
5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·09:31·OEBPS/title.xhtml
6 ?rw-r--r--··6.1·unx····17377·bx·defN·25-Feb-13·10:52·OEBPS/observer_ug.xhtml6 ?rw-r--r--··6.1·unx····17377·bx·defN·25-Feb-13·09:31·OEBPS/observer_ug.xhtml
7 ?rw-r--r--··6.1·unx·····1190·bx·defN·25-Feb-13·10:52·OEBPS/observer_app.xhtml7 ?rw-r--r--··6.1·unx·····1190·bx·defN·25-Feb-13·09:31·OEBPS/observer_app.xhtml
8 ?rw-r--r--··6.1·unx·····8120·bx·defN·25-Feb-13·10:52·OEBPS/observer.xhtml8 ?rw-r--r--··6.1·unx·····8120·bx·defN·25-Feb-13·09:31·OEBPS/observer.xhtml
9 ?rw-r--r--··6.1·unx····65022·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml9 ?rw-r--r--··6.1·unx····65022·bx·defN·25-Feb-13·09:31·OEBPS/notes.xhtml
10 ?rw-r--r--··6.1·unx·····1682·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml10 ?rw-r--r--··6.1·unx·····1682·bx·defN·25-Feb-13·09:31·OEBPS/nav.xhtml
11 ?rw-r--r--··6.1·unx·····1299·bx·defN·25-Feb-13·10:52·OEBPS/introduction_ug.xhtml11 ?rw-r--r--··6.1·unx·····1299·bx·defN·25-Feb-13·09:31·OEBPS/introduction_ug.xhtml
12 ?rw-r--r--··6.1·unx·····9700·bx·defN·25-Feb-13·10:52·OEBPS/etop_ug.xhtml12 ?rw-r--r--··6.1·unx·····9700·bx·defN·25-Feb-13·09:31·OEBPS/etop_ug.xhtml
13 ?rw-r--r--··6.1·unx····12167·bx·defN·25-Feb-13·10:52·OEBPS/etop.xhtml13 ?rw-r--r--··6.1·unx····12167·bx·defN·25-Feb-13·09:31·OEBPS/etop.xhtml
14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:31·OEBPS/dist/epub-erlang-ESPT6BQV.css
15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:31·OEBPS/dist/epub-LSJCIYTM.js
16 ?rw-r--r--··6.1·unx·····4815·bx·defN·25-Feb-13·10:52·OEBPS/crashdump_viewer.xhtml16 ?rw-r--r--··6.1·unx·····4815·bx·defN·25-Feb-13·09:31·OEBPS/crashdump_viewer.xhtml
17 ?rw-r--r--··6.1·unx····17541·bx·defN·25-Feb-13·10:52·OEBPS/crashdump_ug.xhtml17 ?rw-r--r--··6.1·unx····17541·bx·defN·25-Feb-13·09:31·OEBPS/crashdump_ug.xhtml
18 ?rw-r--r--··6.1·unx·····2990·bx·defN·25-Feb-13·10:52·OEBPS/content.opf18 ?rw-r--r--··6.1·unx·····2990·bx·defN·25-Feb-13·09:31·OEBPS/content.opf
19 ?rw-r--r--··6.1·unx·····1523·bx·defN·25-Feb-13·10:52·OEBPS/cdv_cmd.xhtml19 ?rw-r--r--··6.1·unx·····1523·bx·defN·25-Feb-13·09:31·OEBPS/cdv_cmd.xhtml
20 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png20 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:31·OEBPS/assets/logo.png
21 ?rw-r--r--··6.1·unx·····8877·bx·stor·25-Feb-13·10:52·OEBPS/assets/et_processes.gif21 ?rw-r--r--··6.1·unx·····8877·bx·stor·25-Feb-13·09:31·OEBPS/assets/et_processes.gif
22 ?rw-r--r--··6.1·unx·····9369·bx·stor·25-Feb-13·10:52·OEBPS/assets/et_modsprocs.gif22 ?rw-r--r--··6.1·unx·····9369·bx·stor·25-Feb-13·09:31·OEBPS/assets/et_modsprocs.gif
23 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml23 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:31·META-INF/container.xml
24 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml24 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:31·META-INF/com.apple.ibooks.display-options.xml
25 23·files,·448311·bytes·uncompressed,·112852·bytes·compressed:··74.8%25 23·files,·448311·bytes·uncompressed,·112865·bytes·compressed:··74.8%
135 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:18,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:31:08,·uncompressed·size·20,·method=store
250 KB
OEBPS/ttb_ug.xhtml
Max HTML report size reached
19.6 KB
OEBPS/ttb.xhtml
Max HTML report size reached
1.24 KB
OEBPS/content.opf
1.2 KB
OEBPS/content.opf
Max HTML report size reached
19.7 KB
./usr/share/doc/erlang-doc/html/lib/observer-2.17/doc/html/ttb.html
    
Offset 1848, 21 lines modifiedOffset 1848, 21 lines modified
1848 returns·a·match·specification,·which·turns·on·sequential·tracing·with·the1848 returns·a·match·specification,·which·turns·on·sequential·tracing·with·the
1849 specified·<code·class="inline">Flags</code>.</p><p>This·match·specification·can·be·specified·as·the·last·argument·to·<code·class="inline">tp</code>·or·<code·class="inline">tpl</code>.1849 specified·<code·class="inline">Flags</code>.</p><p>This·match·specification·can·be·specified·as·the·last·argument·to·<code·class="inline">tp</code>·or·<code·class="inline">tpl</code>.
1850 The·activated·<code·class="inline">Item</code>·then·becomes·a·<em>trigger</em>·for·sequential·tracing.·This·means1850 The·activated·<code·class="inline">Item</code>·then·becomes·a·<em>trigger</em>·for·sequential·tracing.·This·means
1851 that·if·the·item·is·called·on·a·process·with·trace·flag·<code·class="inline">call</code>·set,·the·process1851 that·if·the·item·is·called·on·a·process·with·trace·flag·<code·class="inline">call</code>·set,·the·process
1852 is·&quot;contaminated&quot;·with·token·<code·class="inline">seq_trace</code>.</p><p>If·<code·class="inline">Flags·=·all</code>,·all·possible·flags·are·set.</p><p>The·possible·values·for·<code·class="inline">SeqTraceFlag</code>·are·available·in·<a·href="../../../../lib/kernel-10.2.2/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>.</p><p>For·a·description·of·the·<code·class="inline">match_spec()</code>·syntax,·see·section1852 is·&quot;contaminated&quot;·with·token·<code·class="inline">seq_trace</code>.</p><p>If·<code·class="inline">Flags·=·all</code>,·all·possible·flags·are·set.</p><p>The·possible·values·for·<code·class="inline">SeqTraceFlag</code>·are·available·in·<a·href="../../../../lib/kernel-10.2.2/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>.</p><p>For·a·description·of·the·<code·class="inline">match_spec()</code>·syntax,·see·section
1853 <a·href="../../../../erts-15.2.2/doc/html/match_spec.html"><code·class="inline">Match·Specifications·in·Erlang</code></a>·in·ERTS,·which1853 <a·href="../../../../erts-15.2.2/doc/html/match_spec.html"><code·class="inline">Match·Specifications·in·Erlang</code></a>·in·ERTS,·which
1854 explains·the·general·match·specification·&quot;language&quot;.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·<em>system·tracer</em>·for·sequential·tracing·is·automatically·initiated·by·<code·class="inline">ttb</code>1854 explains·the·general·match·specification·&quot;language&quot;.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·<em>system·tracer</em>·for·sequential·tracing·is·automatically·initiated·by·<code·class="inline">ttb</code>
1855 when·a·trace·port·is·started·with·<code·class="inline">ttb:tracer/0,1,2</code>.</p></section><p>An·example·of·how·to·use·function·<code·class="inline">seq_trigger_ms/0,1</code>·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(tiger@durin)5&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="1393237816-1">(</span><span·class="p"·data-group-id="1393237816-1">)</span><span·class="p">.</span><span·class="w">1855 when·a·trace·port·is·started·with·<code·class="inline">ttb:tracer/0,1,2</code>.</p></section><p>An·example·of·how·to·use·function·<code·class="inline">seq_trigger_ms/0,1</code>·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(tiger@durin)5&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="9716766034-1">(</span><span·class="p"·data-group-id="9716766034-1">)</span><span·class="p">.</span><span·class="w">
1856 </span><span·class="p"·data-group-id="1393237816-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1393237816-3">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1393237816-3">]</span><span·class="p"·data-group-id="1393237816-2">}</span><span·class="gp·unselectable">1856 </span><span·class="p"·data-group-id="9716766034-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9716766034-3">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9716766034-3">]</span><span·class="p"·data-group-id="9716766034-2">}</span><span·class="gp·unselectable">
1857 (tiger@durin)6&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="1393237816-4">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="1393237816-4">)</span><span·class="p">.</span><span·class="w">1857 (tiger@durin)6&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="9716766034-4">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="9716766034-4">)</span><span·class="p">.</span><span·class="w">
1858 </span><span·class="p"·data-group-id="1393237816-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1393237816-6">{</span><span·class="p"·data-group-id="1393237816-7">[</span><span·class="ss">all</span><span·class="p"·data-group-id="1393237816-7">]</spa[·...·truncated·by·diffoscope;·len:·254,·SHA:·241a95ce0bd780c97ebfdb58e97af7aa16513d65650909b0356fc12f959f2f3e·...·]-5">}</span><span·class="gp·unselectable">1858 </span><span·class="p"·data-group-id="9716766034-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9716766034-6">{</span><span·class="p"·data-group-id="9716766034-7">[</span><span·class="ss">all</span><span·class="p"·data-group-id="9716766034-7">]</spa[·...·truncated·by·diffoscope;·len:·254,·SHA:·02871896426efdcdce0efbd0a79e1f576e5789d05e660fe60f2ed8cc22a35fbd·...·]-5">}</span><span·class="gp·unselectable">
1859 (tiger@durin)7&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="1393237816-9">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">func</span><span·class="p">,</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">seq_trigger_ms</span><span·class="p"·data-group-id="1393237816-[·...·truncated·by·diffoscope;·len:·107,·SHA:·373d16bf59f751ccc60b146494a028a1562373d24c105b82d7d3694d9e915908·...·]-9">)</span><span·class="p">.</span><span·class="w">1859 (tiger@durin)7&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="9716766034-9">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">func</span><span·class="p">,</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">seq_trigger_ms</span><span·class="p"·data-group-id="9716766034-[·...·truncated·by·diffoscope;·len:·107,·SHA:·9afaabfe11649c8f219dd65f22d30b940f4522bc19272caef742562f32ecd562·...·]-9">)</span><span·class="p">.</span><span·class="w">
1860 </span><span·class="p"·data-group-id="1393237816-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1393237816-12">[</span><span·class="p"·data-group-id="1393237816-13">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·364,·SHA:·cb4c46ea3231e0dbe0d37f75862286aec021b062b8c28bce2bd41c07d2ae8dff·...·]-11">}</span><span·class="w">1860 </span><span·class="p"·data-group-id="9716766034-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9716766034-12">[</span><span·class="p"·data-group-id="9716766034-13">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·364,·SHA:·38788c2db4beb6b3908b522bdbcea74792e0bb409c10db2b36c879d6fcefd411·...·]-11">}</span><span·class="w">
1861 </span><span·class="p"·data-group-id="1393237816-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1393237816-15">)</span><span·class="mi">8</span><span·class="o">&gt;</span></code></pre><p>Whenever·<code·class="inline">mod:func(...)</code>·is·called·after·this,·token·<code·class="inline">seq_trace</code>·is·set·on·the1861 </span><span·class="p"·data-group-id="9716766034-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9716766034-15">)</span><span·class="mi">8</span><span·class="o">&gt;</span></code></pre><p>Whenever·<code·class="inline">mod:func(...)</code>·is·called·after·this,·token·<code·class="inline">seq_trace</code>·is·set·on·the
1862 executing·process.</p>1862 executing·process.</p>
1863 ··</section>1863 ··</section>
1864 </section>1864 </section>
1865 <section·class="detail"·id="start_trace/4">1865 <section·class="detail"·id="start_trace/4">
  
1866 ··<div·class="detail-header">1866 ··<div·class="detail-header">
1867 ····<a·href="#start_trace/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1867 ····<a·href="#start_trace/4"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1891, 22 lines modifiedOffset 1891, 22 lines modified
1891 ·························TracerOpts·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),1891 ·························TracerOpts·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),
1892 ·························Result·::·{ok,·[{<a·href="#t:item/0">item</a>(),·<a·href="#t:match_desc/0">match_desc</a>()}]}.</pre>1892 ·························Result·::·{ok,·[{<a·href="#t:item/0">item</a>(),·<a·href="#t:match_desc/0">match_desc</a>()}]}.</pre>
  
1893 ······</div>1893 ······</div>
  
1894 <p>This·function·is·a·shortcut·allowing·to·start·a·trace·with·one·command.·Each1894 <p>This·function·is·a·shortcut·allowing·to·start·a·trace·with·one·command.·Each
1895 tuple·in·<code·class="inline">Patterns</code>·is·converted·to·a·list,·which·in·turn·is·passed·to1895 tuple·in·<code·class="inline">Patterns</code>·is·converted·to·a·list,·which·in·turn·is·passed·to
1896 <code·class="inline">ttb:tpl/2,3,4</code>.</p><p>The·call:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">start_trace</span><span·class="p"·data-group-id="6097222538-1">(</span><span·class="p"·data-group-id="6097222538-2">[</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherNode</span><span·class="p"·data-group-id="6097222538-2">]</span><span·class="p">,</span><span·class="w">1896 <code·class="inline">ttb:tpl/2,3,4</code>.</p><p>The·call:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">start_trace</span><span·class="p"·data-group-id="8627869489-1">(</span><span·class="p"·data-group-id="8627869489-2">[</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OtherNode</span><span·class="p"·data-group-id="8627869489-2">]</span><span·class="p">,</span><span·class="w">
1897 ··················</span><span·class="p"·data-group-id="6097222538-3">[</span><span·class="p"·data-group-id="6097222538-4">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·498,·SHA:·ec0fc0def13ed14df0cc4ef2703a789c213243e0f45f22514e2cc28f8c5f935c·...·]-3">]</span><span·class="p">,</span><span·class="w">1897 ··················</span><span·class="p"·data-group-id="8627869489-3">[</span><span·class="p"·data-group-id="8627869489-4">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·498,·SHA:·4b52649f902a6b93fc5feab47fead02ef073857e4ed0aa7c3dd93606a15b9c6e·...·]-3">]</span><span·class="p">,</span><span·class="w">
1898 ··················</span><span·class="p"·data-group-id="6097222538-7">{</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">call</span><span·class="p"·data-group-id="6097222538-7">}</span><span·class="p">,</span><span·class="w">1898 ··················</span><span·class="p"·data-group-id="8627869489-7">{</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">call</span><span·class="p"·data-group-id="8627869489-7">}</span><span·class="p">,</span><span·class="w">
1899 ··················</span><span·class="p"·data-group-id="6097222538-8">[</span><span·class="p"·data-group-id="6097222538-9">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="6097222538-9">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·1095,·SHA:·ca4adeeba19bafafb7ce7af5e97c33280fcd7898d5066a55d9c28efd16bc6e2c·...·]-2">]</span><span·class="p">,</span><span·class="w">1899 ··················</span><span·class="p"·data-group-id="8627869489-8">[</span><span·class="p"·data-group-id="8627869489-9">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="8627869489-9">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·1095,·SHA:·4868cd07680576d2ffcdacf715635d68e2cb73608d9af90cff0e676434eff3af·...·]-2">]</span><span·class="p">,</span><span·class="w">
1900 ··················</span><span·class="p"·data-group-id="1891369175-3">[</span><span·class="p"·data-group-id="1891369175-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="1891369175-4">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·587,·SHA:·121b97931be3c860f53cab34e937d0778839f2d1c5c446aca3d1daad662220cd·...·]-1">)</span><span·class="p">,</span><span·class="w">1900 ··················</span><span·class="p"·data-group-id="1453566176-3">[</span><span·class="p"·data-group-id="1453566176-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-group-id="1453566176-4">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·587,·SHA:·01f83a52a5752d0d0de63ec99b1de81588f9f771e7cea3829e15f76043bbf1ea·...·]-1">)</span><span·class="p">,</span><span·class="w">
1901 </span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tpl</span><span·class="p"·data-group-id="1891369175-7">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1891369175-8">[</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·62,·SHA:·c6a6598941da515b94101397ba78e31728babb6fcec08268fbf642e7fe209e21·...·]-7">)</span><span·class="p">,</span><span·class="w">1901 </span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tpl</span><span·class="p"·data-group-id="1453566176-7">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1453566176-8">[</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·62,·SHA:·11ae86b545e02041eb724b7b64e553434790eb742c813a165d175fac5d2ce4b5·...·]-7">)</span><span·class="p">,</span><span·class="w">
1902 </span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tpl</span><span·class="p"·data-group-id="1891369175-9">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·137,·SHA:·53a620a3dcc8b321a9d99609230a3ac46096d60cfc2c006b896a32021d97a0a7·...·]-9">)</span><span·class="p">,</span><span·class="w">1902 </span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tpl</span><span·class="p"·data-group-id="1453566176-9">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·137,·SHA:·73f5063e2f80778f8c5ccae258db8209b9cb3c91711afaf7bce93b37009d2fa4·...·]-9">)</span><span·class="p">,</span><span·class="w">
1903 </span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="1891369175-11">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">call</span><span·class="p"·data-group-id="1891369175-11">)</span><span·class="p">.</span></code></pre>1903 </span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="1453566176-11">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">call</span><span·class="p"·data-group-id="1453566176-11">)</span><span·class="p">.</span></code></pre>
1904 ··</section>1904 ··</section>
1905 </section>1905 </section>
1906 <section·class="detail"·id="stop/0">1906 <section·class="detail"·id="stop/0">
  
1907 ··<div·class="detail-header">1907 ··<div·class="detail-header">
1908 ····<a·href="#stop/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1908 ····<a·href="#stop/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1909 ······<i·class="ri-link-m"·aria-hidden="true"></i>1909 ······<i·class="ri-link-m"·aria-hidden="true"></i>
250 KB
./usr/share/doc/erlang-doc/html/lib/observer-2.17/doc/html/ttb_ug.html
    
Offset 168, 130 lines modifiedOffset 168, 130 lines modified
168 graphically·with·application·Event·Tracer·(ET).</p><p>If·option·<code·class="inline">format</code>·is·specified·to·<a·href="ttb.html#stop/1"><code·class="inline">ttb:stop/1</code></a>,·the·formatting·is168 graphically·with·application·Event·Tracer·(ET).</p><p>If·option·<code·class="inline">format</code>·is·specified·to·<a·href="ttb.html#stop/1"><code·class="inline">ttb:stop/1</code></a>,·the·formatting·is
169 automatically·done·when·stopping·<code·class="inline">ttb</code>.</p></li></ul><h3·id="tracing-local-node-from-erlang-shell"·class="section-heading">169 automatically·done·when·stopping·<code·class="inline">ttb</code>.</p></li></ul><h3·id="tracing-local-node-from-erlang-shell"·class="section-heading">
170 ··<a·href="#tracing-local-node-from-erlang-shell"·class="hover-link">170 ··<a·href="#tracing-local-node-from-erlang-shell"·class="hover-link">
171 ····<i·class="ri-link-m"·aria-hidden="true"></i>171 ····<i·class="ri-link-m"·aria-hidden="true"></i>
172 ··</a>172 ··</a>
173 ··<span·class="text">Tracing·Local·Node·from·Erlang·Shell</span>173 ··<span·class="text">Tracing·Local·Node·from·Erlang·Shell</span>
174 </h3>174 </h3>
175 <p>The·following·small·module·is·used·in·the·subsequent·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8809474330-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="8809474330-1">)</span><span·class="p">.</span><span·class="w">175 <p>The·following·small·module·is·used·in·the·subsequent·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6132373256-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="6132373256-1">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8809474330-2">(</span><span·class="p"·data-group-id="8809474330-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8809474330-3">]</span><span·class="p"·data-group-id="8809474330-2">)</span><span·class="p">.</span><span·class="w">176 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6132373256-2">(</span><span·class="p"·data-group-id="6132373256-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6132373256-3">]</span><span·class="p"·data-group-id="6132373256-2">)</span><span·class="p">.</span><span·class="w">
177 </span><span·class="nf">f</span><span·class="p"·data-group-id="8809474330-4">(</span><span·class="p"·data-group-id="8809474330-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">177 </span><span·class="nf">f</span><span·class="p"·data-group-id="6132373256-4">(</span><span·class="p"·data-group-id="6132373256-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ···</span><span·class="k">receive</span><span·class="w">178 ···</span><span·class="k">receive</span><span·class="w">
179 ······</span><span·class="n">From</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_pid</span><span·class="p"·data-group-id="8809474330-5">(</span><span·class="n">From</span><span·class="p"·data-group-id="8809474330-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 ······</span><span·class="n">From</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_pid</span><span·class="p"·data-group-id="6132373256-5">(</span><span·class="n">From</span><span·class="p"·data-group-id="6132373256-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ·········</span><span·class="n">Now</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">now</span><span·class="p"·data-group-id="8809474330-6">(</span><span·class="p"·data-group-id="8809474330-6">)</span><span·class="p">,</span><span·class="w">180 ·········</span><span·class="n">Now</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">now</span><span·class="p"·data-group-id="6132373256-6">(</span><span·class="p"·data-group-id="6132373256-6">)</span><span·class="p">,</span><span·class="w">
181 ·········</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8809474330-7">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8809474330-8">(</span><span·class="p"·data-group-id="8809474330-8">)</span><span·class="p">,</span><span·class="n">Now</span><span·class="p"·data-group-id="8809474330-7">}</span><span·class="w">181 ·········</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6132373256-7">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6132373256-8">(</span><span·class="p"·data-group-id="6132373256-8">)</span><span·class="p">,</span><span·class="n">Now</span><span·class="p"·data-group-id="6132373256-7">}</span><span·class="w">
182 ···</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·following·example·shows·the·basic·use·of·<code·class="inline">ttb</code>·from·the·Erlang·shell.182 ···</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·following·example·shows·the·basic·use·of·<code·class="inline">ttb</code>·from·the·Erlang·shell.
183 Default·options·are·used·both·for·starting·the·tracer·and·for·formatting·(the183 Default·options·are·used·both·for·starting·the·tracer·and·for·formatting·(the
184 custom·fetch·directory·is·however·provided).·This·gives·a·trace·log·named184 custom·fetch·directory·is·however·provided).·This·gives·a·trace·log·named
185 <code·class="inline">Node-ttb</code>·in·the·newly·created·directory,·where·<code·class="inline">Node</code>·is·the·node·name.·The185 <code·class="inline">Node-ttb</code>·in·the·newly·created·directory,·where·<code·class="inline">Node</code>·is·the·node·name.·The
186 default·handler·prints·the·formatted·trace·messages·in·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(tiger@durin)47&gt;·</span><span·class="c1">%%·First·I·spawn·a·process·running·my·test·function</span><span·class="gp·unselectable">186 default·handler·prints·the·formatted·trace·messages·in·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">(tiger@durin)47&gt;·</span><span·class="c1">%%·First·I·spawn·a·process·running·my·test·function</span><span·class="gp·unselectable">
187 (tiger@durin)47&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9874988019-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="ss">f</span><span·class="p">,</span><span·class="p"·data-group-id="9874988019-2">[</span><span·class="p"·data-group-id="9874988019-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·40e0d4cce098ec0c61b167099ac1c455ba3a6f8e4e9403e713b555004ad7b02d·...·]-1">)</span><span·class="p">.</span><span·class="w">187 (tiger@durin)47&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5788573500-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="ss">f</span><span·class="p">,</span><span·class="p"·data-group-id="5788573500-2">[</span><span·class="p"·data-group-id="5788573500-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·eba39ff75f44ab339f20caabc38e12eb549f28c5e3a9202efe930f62f733e254·...·]-1">)</span><span·class="p">.</span><span·class="w">
188 </span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">188 </span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
189 </span><span·class="p"·data-group-id="9874988019-3">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9874988019-3">)</span><span·class="mi">48</span><span·class="o">&gt;</span><span·class="gp·unselectable">189 </span><span·class="p"·data-group-id="5788573500-3">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="5788573500-3">)</span><span·class="mi">48</span><span·class="o">&gt;</span><span·class="gp·unselectable">
190 (tiger@durin)48&gt;·</span><span·class="c1">%%·Then·I·start·a·tracer...</span><span·class="gp·unselectable">190 (tiger@durin)48&gt;·</span><span·class="c1">%%·Then·I·start·a·tracer...</span><span·class="gp·unselectable">
191 (tiger@durin)48&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="9874988019-4">(</span><span·class="p"·data-group-id="9874988019-4">)</span><span·class="p">.</span><span·class="w">191 (tiger@durin)48&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="5788573500-4">(</span><span·class="p"·data-group-id="5788573500-4">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p"·data-group-id="9874988019-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9874988019-6">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9874988019-6">]</span><span·class="p"·data-group-id="9874988019-5">}</span><span·class="w">192 </span><span·class="p"·data-group-id="5788573500-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5788573500-6">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="5788573500-6">]</span><span·class="p"·data-group-id="5788573500-5">}</span><span·class="w">
193 </span><span·class="p"·data-group-id="9874988019-7">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9874988019-7">)</span><span·class="mi">49</span><span·class="o">&gt;</span><span·class="gp·unselectable">193 </span><span·class="p"·data-group-id="5788573500-7">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="5788573500-7">)</span><span·class="mi">49</span><span·class="o">&gt;</span><span·class="gp·unselectable">
194 (tiger@durin)49&gt;·</span><span·class="c1">%%·and·activate·the·new·process·for·tracing</span><span·class="gp·unselectable">194 (tiger@durin)49&gt;·</span><span·class="c1">%%·and·activate·the·new·process·for·tracing</span><span·class="gp·unselectable">
195 (tiger@durin)49&gt;·</span><span·class="c1">%%·function·calls·and·sent·messages.</span><span·class="gp·unselectable">195 (tiger@durin)49&gt;·</span><span·class="c1">%%·function·calls·and·sent·messages.</span><span·class="gp·unselectable">
196 (tiger@durin)49&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="9874988019-8">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="p"·data-group-id="9874988019-9">[</span><span·class="ss">call</span><span·class="p">,</span><span·class="nb">send</span><span·class="p"·data-group-id="9874988019-9">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·0c44a4cdd37aec92a8115a436f3731dfc017739450d538c97408445e6055b5fb·...·]-8">)</span><span·class="p">.</span><span·class="w">196 (tiger@durin)49&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="5788573500-8">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="p"·data-group-id="5788573500-9">[</span><span·class="ss">call</span><span·class="p">,</span><span·class="nb">send</span><span·class="p"·data-group-id="5788573500-9">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·2e0ae543927b76c84cc58ff75238e103e4590aa9a82e3d8a152c7cead533c25f·...·]-8">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="9874988019-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9874988019-11">[</span><span·class="p"·data-group-id="9874988019-12">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·585,·SHA:·b83586808f776c8755c8ca48baa217c1ac6cb82b6a4abebd158d8330a2758ef4·...·]-10">}</span><span·class="w">197 </span><span·class="p"·data-group-id="5788573500-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5788573500-11">[</span><span·class="p"·data-group-id="5788573500-12">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·585,·SHA:·10ae49c8472da3af422df77dba83b074a1aa3de96f1d305f5ceec9aca883a37a·...·]-10">}</span><span·class="w">
198 </span><span·class="p"·data-group-id="9874988019-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9874988019-15">)</span><span·class="mi">50</span><span·class="o">&gt;</span><span·class="gp·unselectable">198 </span><span·class="p"·data-group-id="5788573500-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="5788573500-15">)</span><span·class="mi">50</span><span·class="o">&gt;</span><span·class="gp·unselectable">
199 (tiger@durin)50&gt;·</span><span·class="c1">%%·Here·I·set·a·trace·pattern·on·erlang:now/0</span><span·class="gp·unselectable">199 (tiger@durin)50&gt;·</span><span·class="c1">%%·Here·I·set·a·trace·pattern·on·erlang:now/0</span><span·class="gp·unselectable">
200 (tiger@durin)50&gt;·</span><span·class="c1">%%·The·trace·pattern·is·a·simple·match·spec</span><span·class="gp·unselectable">200 (tiger@durin)50&gt;·</span><span·class="c1">%%·The·trace·pattern·is·a·simple·match·spec</span><span·class="gp·unselectable">
201 (tiger@durin)50&gt;·</span><span·class="c1">%%·indicating·that·the·return·value·should·be</span><span·class="gp·unselectable">201 (tiger@durin)50&gt;·</span><span·class="c1">%%·indicating·that·the·return·value·should·be</span><span·class="gp·unselectable">
202 (tiger@durin)50&gt;·</span><span·class="c1">%%·traced.·Refer·to·the·reference_manual·for</span><span·class="gp·unselectable">202 (tiger@durin)50&gt;·</span><span·class="c1">%%·traced.·Refer·to·the·reference_manual·for</span><span·class="gp·unselectable">
203 (tiger@durin)50&gt;·</span><span·class="c1">%%·the·full·list·of·match·spec·shortcuts</span><span·class="gp·unselectable">203 (tiger@durin)50&gt;·</span><span·class="c1">%%·the·full·list·of·match·spec·shortcuts</span><span·class="gp·unselectable">
204 (tiger@durin)50&gt;·</span><span·class="c1">%%·available.</span><span·class="gp·unselectable">204 (tiger@durin)50&gt;·</span><span·class="c1">%%·available.</span><span·class="gp·unselectable">
205 (tiger@durin)51&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="9874988019-16">(</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="ss">now</span><span·class="p">,</span><span·class="ss">return</span><span·class="p"·data-group-id="9874988019-16">)</span><span·class="p">.</span><span·class="w">205 (tiger@durin)51&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="5788573500-16">(</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="ss">now</span><span·class="p">,</span><span·class="ss">return</span><span·class="p"·data-group-id="5788573500-16">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="9874988019-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9874988019-18">[</span><span·class="p"·data-group-id="9874988019-19">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">tig[·...·truncated·by·diffoscope;·len:·423,·SHA:·793896277d644e76892d432d40899488d272b95cbc14660e1b6b14e58119b2df·...·]-17">}</span><span·class="w">206 </span><span·class="p"·data-group-id="5788573500-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5788573500-18">[</span><span·class="p"·data-group-id="5788573500-19">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">tig[·...·truncated·by·diffoscope;·len:·423,·SHA:·8c46aaaf33b99b5ccefda7307f58895e6de68d0097f375c66d81c777f4db0843·...·]-17">}</span><span·class="w">
207 </span><span·class="p"·data-group-id="9874988019-21">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9874988019-21">)</span><span·class="mi">52</span><span·class="o">&gt;</span><span·class="gp·unselectable">207 </span><span·class="p"·data-group-id="5788573500-21">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="5788573500-21">)</span><span·class="mi">52</span><span·class="o">&gt;</span><span·class="gp·unselectable">
208 (tiger@durin)52&gt;·</span><span·class="c1">%%·I·run·my·test·(i.e.·send·a·message·to</span><span·class="gp·unselectable">208 (tiger@durin)52&gt;·</span><span·class="c1">%%·I·run·my·test·(i.e.·send·a·message·to</span><span·class="gp·unselectable">
209 (tiger@durin)52&gt;·</span><span·class="c1">%%·my·new·process)</span><span·class="gp·unselectable">209 (tiger@durin)52&gt;·</span><span·class="c1">%%·my·new·process)</span><span·class="gp·unselectable">
210 (tiger@durin)52&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9874988019-22">(</span><span·class="p"·data-group-id="9874988019-22">)</span><span·class="p">.</span><span·class="w">210 (tiger@durin)52&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="5788573500-22">(</span><span·class="p"·data-group-id="5788573500-22">)</span><span·class="p">.</span><span·class="w">
211 </span><span·class="o">&lt;</span><span·class="mf">0.72</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">211 </span><span·class="o">&lt;</span><span·class="mf">0.72</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
212 </span><span·class="p"·data-group-id="9874988019-23">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9874988019-23">)</span><span·class="mi">53</span><span·class="o">&gt;</span><span·class="gp·unselectable">212 </span><span·class="p"·data-group-id="5788573500-23">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="5788573500-23">)</span><span·class="mi">53</span><span·class="o">&gt;</span><span·class="gp·unselectable">
213 (tiger@durin)53&gt;·</span><span·class="c1">%%·And·then·I·have·to·stop·ttb·in·order·to·flush</span><span·class="gp·unselectable">213 (tiger@durin)53&gt;·</span><span·class="c1">%%·And·then·I·have·to·stop·ttb·in·order·to·flush</span><span·class="gp·unselectable">
214 (tiger@durin)53&gt;·</span><span·class="c1">%%·the·trace·port·buffer</span><span·class="gp·unselectable">214 (tiger@durin)53&gt;·</span><span·class="c1">%%·the·trace·port·buffer</span><span·class="gp·unselectable">
215 (tiger@durin)53&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="9874988019-24">(</span><span·class="p"·data-group-id="9874988019-25">[</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9874988019-26">{</span><span·class="ss">fetch_dir</span><span·class="p[·...·truncated·by·diffoscope;·len:·223,·SHA:·5061251ed1bf0f68bdadb9b1ea18886b2eadc013613d2cd048ec078c58dd7dfa·...·]-24">)</span><span·class="p">.</span><span·class="w">215 (tiger@durin)53&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="5788573500-24">(</span><span·class="p"·data-group-id="5788573500-25">[</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5788573500-26">{</span><span·class="ss">fetch_dir</span><span·class="p[·...·truncated·by·diffoscope;·len:·223,·SHA:·40462c1eb8af7183cec1a8987d212ebf055d83125f506f5376cbe380fd2d8a6b·...·]-24">)</span><span·class="p">.</span><span·class="w">
216 </span><span·class="p"·data-group-id="9874988019-27">{</span><span·class="ss">stopped</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="9874988019-27">}</span><span·class="w">216 </span><span·class="p"·data-group-id="5788573500-27">{</span><span·class="ss">stopped</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="5788573500-27">}</span><span·class="w">
217 </span><span·class="p"·data-group-id="9874988019-28">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9874988019-28">)</span><span·class="mi">54</span><span·class="o">&gt;</span><span·class="gp·unselectable">217 </span><span·class="p"·data-group-id="5788573500-28">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="5788573500-28">)</span><span·class="mi">54</span><span·class="o">&gt;</span><span·class="gp·unselectable">
218 (tiger@durin)54&gt;·</span><span·class="c1">%%·Finally·I·format·my·trace·log</span><span·class="gp·unselectable">218 (tiger@durin)54&gt;·</span><span·class="c1">%%·Finally·I·format·my·trace·log</span><span·class="gp·unselectable">
219 (tiger@durin)54&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9874988019-29">(</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="9874988019-29">)</span><span·class="p">.</span><span·class="w">219 (tiger@durin)54&gt;·</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5788573500-29">(</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="5788573500-29">)</span><span·class="p">.</span><span·class="w">
220 </span><span·class="p"·data-group-id="9874988019-30">(</span><span·class="p"·data-group-id="9874988019-31">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·627,·SHA:·6ae0aafcbad1cae420de4e34629036f27129ff3d42c60509de4fd4e39baa0d05·...·]-33">)</span><span·class="w">220 </span><span·class="p"·data-group-id="5788573500-30">(</span><span·class="p"·data-group-id="5788573500-31">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·627,·SHA:·8fb4204b50f12d127874384ce234d2b3b25527608173cff3da6f7252934532ac·...·]-33">)</span><span·class="w">
221 </span><span·class="p"·data-group-id="9874988019-34">(</span><span·class="p"·data-group-id="9874988019-35">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·362,·SHA:·d040a370cd2cb20ad55a06739262eca7f9291cb4b2440ed6b895bf4b2d7d04cc·...·]-34">)</span><span·class="w">·</span><span·class="ss">returned</span><span·class="w">·</span><span·class="ss">from</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="ss">now</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 </span><span·class="p"·data-group-id="5788573500-34">(</span><span·class="p"·data-group-id="5788573500-35">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·362,·SHA:·d466e2aad64874cab743ae327a858b601679b82adc4025382a394ebd75d42992·...·]-34">)</span><span·class="w">·</span><span·class="ss">returned</span><span·class="w">·</span><span·class="ss">from</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="ss">now</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 </span><span·class="p"·data-group-id="9874988019-37">{</span><span·class="mi">1031</span><span·class="p">,</span><span·class="mi">133451</span><span·class="p">,</span><span·class="mi">667611</span><span·class="p"·data-group-id="9874988019-37">}</span><span·class="w">222 </span><span·class="p"·data-group-id="5788573500-37">{</span><span·class="mi">1031</span><span·class="p">,</span><span·class="mi">133451</span><span·class="p">,</span><span·class="mi">667611</span><span·class="p"·data-group-id="5788573500-37">}</span><span·class="w">
223 </span><span·class="p"·data-group-id="9874988019-38">(</span><span·class="p"·data-group-id="9874988019-39">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·362,·SHA:·0c2ee662b4f16c220eb2f3294eb573f3c06eb20e3d753d387694969892ad56c6·...·]-38">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.72</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">!</span><span·class="w">223 </span><span·class="p"·data-group-id="5788573500-38">(</span><span·class="p"·data-group-id="5788573500-39">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·362,·SHA:·c265b3057608b9197cfef74eb8a294b12f16d23197466af998e7a4a933f0d465·...·]-38">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.72</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">!</span><span·class="w">
224 </span><span·class="p"·data-group-id="9874988019-41">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="9874988019-42">{</span><span·class="mi">1031</[·...·truncated·by·diffoscope;·len:·208,·SHA:·37fba50305e15610f14cc84c8f762a69a4500a44bcc870d99cc02c82670fcb2e·...·]-41">}</span><span·class="w">224 </span><span·class="p"·data-group-id="5788573500-41">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5788573500-42">{</span><span·class="mi">1031</[·...·truncated·by·diffoscope;·len:·208,·SHA:·12a02858230d809ec5a21a8018cd8f2c630b312aa5a83e963d1a1c624116aab7·...·]-41">}</span><span·class="w">
225 </span><span·class="ss">ok</span></code></pre><h3·id="build-your-own-tool"·class="section-heading">225 </span><span·class="ss">ok</span></code></pre><h3·id="build-your-own-tool"·class="section-heading">
226 ··<a·href="#build-your-own-tool"·class="hover-link">226 ··<a·href="#build-your-own-tool"·class="hover-link">
227 ····<i·class="ri-link-m"·aria-hidden="true"></i>227 ····<i·class="ri-link-m"·aria-hidden="true"></i>
228 ··</a>228 ··</a>
229 ··<span·class="text">Build·Your·Own·Tool</span>229 ··<span·class="text">Build·Your·Own·Tool</span>
230 </h3>230 </h3>
231 <p>The·following·example·shows·a·simple·tool·for·&quot;debug·tracing&quot;,·that·is,·tracing231 <p>The·following·example·shows·a·simple·tool·for·&quot;debug·tracing&quot;,·that·is,·tracing
232 of·function·calls·with·return·values:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0593164606-1">(</span><span·class="ss">mydebug</span><span·class="p"·data-group-id="0593164606-1">)</span><span·class="p">.</span><span·class="w">232 of·function·calls·with·return·values:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1548664176-1">(</span><span·class="ss">mydebug</span><span·class="p"·data-group-id="1548664176-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0593164606-2">(</span><span·class="p"·data-group-id="0593164606-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">trc</span><span·class="p">/</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·294,·SHA:·2ccb469c706154131b1f2e7b9d0b3f709ee246891a71d96d1190afa1c491f02a·...·]6-2">)</span><span·class="p">.</span><span·class="w">233 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1548664176-2">(</span><span·class="p"·data-group-id="1548664176-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">trc</span><span·class="p">/</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·294,·SHA:·685b82969c66dbbaf9a8720eacf6f3eb524d0c0d1a5d2e83393d5be235930ab9·...·]6-2">)</span><span·class="p">.</span><span·class="w">
234 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0593164606-4">(</span><span·class="p"·data-group-id="0593164606-5">[</span><span·class="ss">print</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="0593164606-5">]</span><span·class="p"·data-group-id="0593164606-4">)</span><span·class="p">.</span><span·class="w">234 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1548664176-4">(</span><span·class="p"·data-group-id="1548664176-5">[</span><span·class="ss">print</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="1548664176-5">]</span><span·class="p"·data-group-id="1548664176-4">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="c1">%%·Include·ms_transform.hrl·so·that·I·can·use·dbg:fun2ms/2·to</span><span·class="w">235 </span><span·class="c1">%%·Include·ms_transform.hrl·so·that·I·can·use·dbg:fun2ms/2·to</span><span·class="w">
236 </span><span·class="c1">%%·generate·match·specifications.</span><span·class="w">236 </span><span·class="c1">%%·generate·match·specifications.</span><span·class="w">
237 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0593164606-6">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="0593164606-6">)</span><span·class="p">.</span><span·class="w">237 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1548664176-6">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="1548664176-6">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="c1">%%%·-------------Tool·API-------------</span><span·class="w">238 </span><span·class="c1">%%%·-------------Tool·API-------------</span><span·class="w">
239 </span><span·class="c1">%%%·----------------------------------</span><span·class="w">239 </span><span·class="c1">%%%·----------------------------------</span><span·class="w">
240 </span><span·class="c1">%%%·Star·the·&quot;mydebug&quot;·tool</span><span·class="w">240 </span><span·class="c1">%%%·Star·the·&quot;mydebug&quot;·tool</span><span·class="w">
241 </span><span·class="nf">start</span><span·class="p"·data-group-id="0593164606-7">(</span><span·class="p"·data-group-id="0593164606-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">241 </span><span·class="nf">start</span><span·class="p"·data-group-id="1548664176-7">(</span><span·class="p"·data-group-id="1548664176-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
242 ····</span><span·class="c1">%%·The·options·specify·that·the·binary·log·shall·be·named</span><span·class="w">242 ····</span><span·class="c1">%%·The·options·specify·that·the·binary·log·shall·be·named</span><span·class="w">
243 ····</span><span·class="c1">%%·&lt;Node&gt;-debug_log·and·that·the·print/4·function·in·this</span><span·class="w">243 ····</span><span·class="c1">%%·&lt;Node&gt;-debug_log·and·that·the·print/4·function·in·this</span><span·class="w">
244 ····</span><span·class="c1">%%·module·shall·be·used·as·format·handler</span><span·class="w">244 ····</span><span·class="c1">%%·module·shall·be·used·as·format·handler</span><span·class="w">
245 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="0593164606-8">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="p"·data-group-id="0593164606-9">[</span><span·class="p"·data-group-id="0593164606-10">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·725,·SHA:·ae1a4f3a6132e2e20c9b621d3ec83ffc300c9061ee444f96ab8d6cbab327b5ee·...·]6-8">)</span><span·class="p">,</span><span·class="w">245 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="1548664176-8">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="p"·data-group-id="1548664176-9">[</span><span·class="p"·data-group-id="1548664176-10">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·725,·SHA:·aa459e84eda1c052009447b1072b908619b05a838e9e6958d0b7ea13193fffff·...·]6-8">)</span><span·class="p">,</span><span·class="w">
246 ····</span><span·class="c1">%%·All·processes·(existing·and·new)·shall·trace·function·calls</span><span·class="w">246 ····</span><span·class="c1">%%·All·processes·(existing·and·new)·shall·trace·function·calls</span><span·class="w">
247 ····</span><span·class="c1">%%·We·want·trace·messages·to·be·sorted·upon·format,·which·requires</span><span·class="w">247 ····</span><span·class="c1">%%·We·want·trace·messages·to·be·sorted·upon·format,·which·requires</span><span·class="w">
248 ····</span><span·class="c1">%%·timestamp·flag.·The·flag·is·however·enabled·by·default·in·ttb.</span><span·class="w">248 ····</span><span·class="c1">%%·timestamp·flag.·The·flag·is·however·enabled·by·default·in·ttb.</span><span·class="w">
249 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="0593164606-14">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="0593164606-14">)</span><span·class="p">.</span><span·class="w">249 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="1548664176-14">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="1548664176-14">)</span><span·class="p">.</span><span·class="w">
  
250 </span><span·class="c1">%%%·Set·trace·pattern·on·function(s)</span><span·class="w">250 </span><span·class="c1">%%%·Set·trace·pattern·on·function(s)</span><span·class="w">
251 </span><span·class="nf">trc</span><span·class="p"·data-group-id="0593164606-15">(</span><span·class="n">M</span><span·class="p"·data-group-id="0593164606-15">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_atom</span><span·class="p"·data-group-id="0593164606-16">(</[·...·truncated·by·diffoscope;·len:·69,·SHA:·1f56e6bc214c063dc4cc06773721009c846fe1fca563fd4967ad38b023561125·...·]6-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">251 </span><span·class="nf">trc</span><span·class="p"·data-group-id="1548664176-15">(</span><span·class="n">M</span><span·class="p"·data-group-id="1548664176-15">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_atom</span><span·class="p"·data-group-id="1548664176-16">(</[·...·truncated·by·diffoscope;·len:·69,·SHA:·456886b29a98c4e7587a8a2433e97f73fec67f6821aed6da6ccbe9cc7fcf5bb4·...·]6-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
252 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="0593164606-17">(</span><span·class="p"·data-group-id="0593164606-18">{</span><span·class="n">M</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="059316[·...·truncated·by·diffoscope;·len:·57,·SHA:·eb2aa23feaf5b5ddd5719666079696312027b7800ec130db4faaf4e9089b81be·...·]6-17">)</span><span·class="p">;</span><span·class="w">252 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="1548664176-17">(</span><span·class="p"·data-group-id="1548664176-18">{</span><span·class="n">M</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="154866[·...·truncated·by·diffoscope;·len:·57,·SHA:·99aec14f739d8195df4ec29ff27ea2677d2db4272ca0e37bc336414f01d87d11·...·]6-17">)</span><span·class="p">;</span><span·class="w">
253 </span><span·class="nf">trc</span><span·class="p"·data-group-id="0593164606-19">(</span><span·class="p"·data-group-id="0593164606-20">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p"·data-group-id="0593164606-20">}</span><span·class="p"·data-group-id="0593164606-19">)</span[·...·truncated·by·diffoscope;·len:·436,·SHA:·0e63bb54a33aad4a419852565bffd66c6ec27484c8ee9ab418c682ae8783d083·...·]6-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">253 </span><span·class="nf">trc</span><span·class="p"·data-group-id="1548664176-19">(</span><span·class="p"·data-group-id="1548664176-20">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p"·data-group-id="1548664176-20">}</span><span·class="p"·data-group-id="1548664176-19">)</span[·...·truncated·by·diffoscope;·len:·436,·SHA:·393188b80f283db172425c0fc601ef5bd6df3cb4b0f5af558f0f58c56e7bb85b·...·]6-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
254 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="0593164606-23">(</span><span·class="p"·data-group-id="0593164606-24">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="0593164606-24">}<[·...·truncated·by·diffoscope;·len:·46,·SHA:·a5bf322d3ddb3f23e6d26c7d969499b5f9e3fbd85572289fc30457df2772b66f·...·]6-23">)</span><span·class="p">;</span><span·class="w">254 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="1548664176-23">(</span><span·class="p"·data-group-id="1548664176-24">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="1548664176-24">}<[·...·truncated·by·diffoscope;·len:·46,·SHA:·df7cc85276da7e1aafe5df9f3506dd5d77912ef7197d9fc12364037a08678664·...·]6-23">)</span><span·class="p">;</span><span·class="w">
255 </span><span·class="nf">trc</span><span·class="p"·data-group-id="0593164606-25">(</span><span·class="p"·data-group-id="0593164606-26">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="p">_</span><span·class="n">A</span><span·class="p"·data-group-id="0593[·...·truncated·by·diffoscope;·len:·558,·SHA:·631abd7b61a389975be566cd85ad02d712c782b66e00f9f9cf2a50993b985877·...·]6-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">255 </span><span·class="nf">trc</span><span·class="p"·data-group-id="1548664176-25">(</span><span·class="p"·data-group-id="1548664176-26">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">,</span><span·class="p">_</span><span·class="n">A</span><span·class="p"·data-group-id="1548[·...·truncated·by·diffoscope;·len:·558,·SHA:·9f167985308b173a6b11dbbf86e2ab186b74e644dc644e68a1374022370dc7a7·...·]6-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
256 ····</span><span·class="c1">%%·This·match·spec·shortcut·specifies·that·return·values·shall</span><span·class="w">256 ····</span><span·class="c1">%%·This·match·spec·shortcut·specifies·that·return·values·shall</span><span·class="w">
257 ····</span><span·class="c1">%%·be·traced.</span><span·class="w">257 ····</span><span·class="c1">%%·be·traced.</span><span·class="w">
258 ····</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="0593164606-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0593164606-30">(</span><span·class="p">_</span><span·class="p"·data-group-id="0593164606-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·236,·SHA:·fa8931895e9b9a339ed93ab38be318f86e981da971ed65467aaf1cb1299b8906·...·]6-29">)</span><span·class="p">,</span><span·class="w">258 ····</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="1548664176-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1548664176-30">(</span><span·class="p">_</span><span·class="p"·data-group-id="1548664176-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·236,·SHA:·f69c0137ece894093bfe721eeaf61ffa18a3d2b336edf6ea40ef453041fbdcfb·...·]6-29">)</span><span·class="p">,</span><span·class="w">
259 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tpl</span><span·class="p"·data-group-id="0593164606-32">(</span><span·class="n">MFA</span><span·class="p">,</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="0593164606-32">)</span><span·class="p">.</span><span·class="w">259 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">tpl</span><span·class="p"·data-group-id="1548664176-32">(</span><span·class="n">MFA</span><span·class="p">,</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="1548664176-32">)</span><span·class="p">.</span><span·class="w">
  
260 </span><span·class="c1">%%%·Format·a·binary·trace·log</span><span·class="w">260 </span><span·class="c1">%%%·Format·a·binary·trace·log</span><span·class="w">
261 </span><span·class="nf">format</span><span·class="p"·data-group-id="0593164606-33">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="0593164606-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">261 </span><span·class="nf">format</span><span·class="p"·data-group-id="1548664176-33">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="1548664176-33">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0593164606-34">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="0593164606-34">)</span><span·class="p">.</span><span·class="w">262 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1548664176-34">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="1548664176-34">)</span><span·class="p">.</span><span·class="w">
  
263 </span><span·class="c1">%%%·Stop·the·&quot;mydebug&quot;·tool</span><span·class="w">263 </span><span·class="c1">%%%·Stop·the·&quot;mydebug&quot;·tool</span><span·class="w">
264 </span><span·class="nf">stop</span><span·class="p"·data-group-id="0593164606-35">(</span><span·class="p"·data-group-id="0593164606-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">264 </span><span·class="nf">stop</span><span·class="p"·data-group-id="1548664176-35">(</span><span·class="p"·data-group-id="1548664176-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
265 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="0593164606-36">(</span><span·class="ss">return</span><span·class="p"·data-group-id="0593164606-36">)</span><span·class="p">.</span><span·class="w">265 ····</span><span·class="nc">ttb</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="1548664176-36">(</span><span·class="ss">return</span><span·class="p"·data-group-id="1548664176-36">)</span><span·class="p">.</span><span·class="w">
  
266 </span><span·class="c1">%%%·--------Internal·functions--------</span><span·class="w">266 </span><span·class="c1">%%%·--------Internal·functions--------</span><span·class="w">
267 </span><span·class="c1">%%%·----------------------------------</span><span·class="w">267 </span><span·class="c1">%%%·----------------------------------</span><span·class="w">
268 </span><span·class="c1">%%%·Format·handler</span><span·class="w">268 </span><span·class="c1">%%%·Format·handler</span><span·class="w">
269 </span><span·class="nf">print</span><span·class="p"·data-group-id="0593164606-37">(</span><span·class="p">_</span><span·class="n">Out</span><span·class="p">,</span><span·class="ss">end_of_trace</span><span·class="p">,</span><span·class="p">_</span><span·class="n">TI</span><span·class="p">,</span><span·class="n">N</span><s[·...·truncated·by·diffoscope;·len:·38,·SHA:·b776394b960d8fa1ec80c2e6bc672fc5de2feb31b3954d808be25d7d31725ae9·...·]6-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">269 </span><span·class="nf">print</span><span·class="p"·data-group-id="1548664176-37">(</span><span·class="p">_</span><span·class="n">Out</span><span·class="p">,</span><span·class="ss">end_of_trace</span><span·class="p">,</span><span·class="p">_</span><span·class="n">TI</span><span·class="p">,</span><span·class="n">N</span><s[·...·truncated·by·diffoscope;·len:·38,·SHA:·31d64d45528b5eb356f027abd225ce6d52f2155137cb3e317467f9acc94ce0c3·...·]6-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ····</span><span·class="n">N</span><span·class="p">;</span><span·class="w">270 ····</span><span·class="n">N</span><span·class="p">;</span><span·class="w">
271 </span><span·class="nf">print</span><span·class="p"·data-group-id="0593164606-38">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="n">Trace</span><span·class="p">,</span><span·class="p">_</span><span·class="n">TI</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="059[·...·truncated·by·diffoscope;·len:·6,·SHA:·8baff6d5baf496110265d98d8a008774073b543411f9803f6119909ad6fe4a4c·...·]6-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">271 </span><span·class="nf">print</span><span·class="p"·data-group-id="1548664176-38">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="n">Trace</span><span·class="p">,</span><span·class="p">_</span><span·class="n">TI</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="154[·...·truncated·by·diffoscope;·len:·6,·SHA:·beaf36f5900241ff56dd59008db12c0bef43d9b30ff882f1ae131020d12afa65·...·]6-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
272 ····</span><span·class="nf">do_print</span><span·class="p"·data-group-id="0593164606-39">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="n">Trace</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="0593164606-39">)</span><span·class="p">,</span><span·class="w">272 ····</span><span·class="nf">do_print</span><span·class="p"·data-group-id="1548664176-39">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="n">Trace</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1548664176-39">)</span><span·class="p">,</span><span·class="w">
273 ····</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">273 ····</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
  
274 </span><span·class="nf">do_print</span><span·class="p"·data-group-id="0593164606-40">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="0593164606-41">{</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="ss">call</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·23df2f7de8599d65604f6e894ba14866954a07670ac0688d7a39cc413fb2746b·...·]6-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">274 </span><span·class="nf">do_print</span><span·class="p"·data-group-id="1548664176-40">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="1548664176-41">{</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="ss">call</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·db48cab4d96935bdcda0b777a5f28c214584134cac5ef385fa31a502dc88bffe·...·]6-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
275 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0593164606-43">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="w">275 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1548664176-43">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="w">
276 ··············</span><span·class="s">&quot;</span><span·class="si">~w</span><span·class="s">:·</span><span·class="si">~w</span><span·class="s">,·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">276 ··············</span><span·class="s">&quot;</span><span·class="si">~w</span><span·class="s">:·</span><span·class="si">~w</span><span·class="s">,·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">
277 ··············</span><span·class="s">&quot;Call······:·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~w</span><span·class="s">/</span><span·class="si">~w</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">277 ··············</span><span·class="s">&quot;Call······:·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~w</span><span·class="s">/</span><span·class="si">~w</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">
278 ··············</span><span·class="s">&quot;Arguments·:</span><span·class="si">~p</span><span·class="si">~n</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">278 ··············</span><span·class="s">&quot;Arguments·:</span><span·class="si">~p</span><span·class="si">~n</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
279 ··············</span><span·class="p"·data-group-id="0593164606-44">[</span><span·class="n">N</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">[·...·truncated·by·diffoscope;·len:·312,·SHA:·1107b5caba3b91bebfd2014c80cb919df9839c3eb10bb6f96a1f0ffca2de4cf8·...·]6-43">)</span><span·class="p">;</span><span·class="w">279 ··············</span><span·class="p"·data-group-id="1548664176-44">[</span><span·class="n">N</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">[·...·truncated·by·diffoscope;·len:·312,·SHA:·f482239b9637f9b5c9d2feacf3f83f13466b9cecba6939f4e873d475b057ca02·...·]6-43">)</span><span·class="p">;</span><span·class="w">
280 </span><span·class="nf">do_print</span><span·class="p"·data-group-id="0593164606-46">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="0593164606-47">{</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="ss">return_f[·...·truncated·by·diffoscope;·len:·501,·SHA:·ca197a80d824a9f844ecaa5ece4149bd17f1ff4c09a9077cb44746c41a1246ac·...·]6-46">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">280 </span><span·class="nf">do_print</span><span·class="p"·data-group-id="1548664176-46">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="1548664176-47">{</span><span·class="ss">trace_ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="ss">return_f[·...·truncated·by·diffoscope;·len:·501,·SHA:·6550de9df8aa5eeeabfba8ec87ba6c5d1480bc5ec2a912d5452860139636711f·...·]6-46">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
281 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0593164606-49">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="w">281 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1548664176-49">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="w">
282 ··············</span><span·class="s">&quot;</span><span·class="si">~w</span><span·class="s">:·</span><span·class="si">~w</span><span·class="s">,·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">282 ··············</span><span·class="s">&quot;</span><span·class="si">~w</span><span·class="s">:·</span><span·class="si">~w</span><span·class="s">,·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">
283 ··············</span><span·class="s">&quot;Return·from··:·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~w</span><span·class="s">/</span><span·class="si">~w</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">283 ··············</span><span·class="s">&quot;Return·from··:·</span><span·class="si">~w</span><span·class="s">:</span><span·class="si">~w</span><span·class="s">/</span><span·class="si">~w</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="w">
284 ··············</span><span·class="s">&quot;Return·value·:</span><span·class="si">~p</span><span·class="si">~n</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">284 ··············</span><span·class="s">&quot;Return·value·:</span><span·class="si">~p</span><span·class="si">~n</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">
285 ··············</span><span·class="p"·data-group-id="0593164606-50">[</span><span·class="n">N</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">[·...·truncated·by·diffoscope;·len:·174,·SHA:·6fbfb709cd40cb9834bba2f788d40ffbf771fedc59377aa7a69a05ff66c4928a·...·]6-49">)</span><span·class="p">.</span></code></pre><p>To·distinguish·trace·logs·produced·with·this·tool·from·other·logs,·option·<code·class="inline">file</code>285 ··············</span><span·class="p"·data-group-id="1548664176-50">[</span><span·class="n">N</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">P</span><span·class="p">,</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p">[·...·truncated·by·diffoscope;·len:·174,·SHA:·ddf3b303885963c5bb40e86b74be89c5963343606ebdcb514833bac0a4496120·...·]6-49">)</span><span·class="p">.</span></code></pre><p>To·distinguish·trace·logs·produced·with·this·tool·from·other·logs,·option·<code·class="inline">file</code>
286 is·used·in·<a·href="ttb.html#tracer/2"><code·class="inline">tracer/2</code></a>.·The·logs·are·therefore·fetched·to·a286 is·used·in·<a·href="ttb.html#tracer/2"><code·class="inline">tracer/2</code></a>.·The·logs·are·therefore·fetched·to·a
287 directory·named·<code·class="inline">ttb_upload_debug_log-YYYYMMDD-HHMMSS</code></p><p>By·using·option·<code·class="inline">handler</code>·when·starting·the·tracer,·the·information·about·how·to287 directory·named·<code·class="inline">ttb_upload_debug_log-YYYYMMDD-HHMMSS</code></p><p>By·using·option·<code·class="inline">handler</code>·when·starting·the·tracer,·the·information·about·how·to
288 format·the·file·is·stored·in·the·trace·information·file·(<code·class="inline">.ti</code>).·This·is·not288 format·the·file·is·stored·in·the·trace·information·file·(<code·class="inline">.ti</code>).·This·is·not
289 necessary,·as·it·can·be·specified·when·formatting·instead.·However,·It·can·be289 necessary,·as·it·can·be·specified·when·formatting·instead.·However,·It·can·be
Max diff block lines reached; 196954/255850 bytes (76.98%) of diff not shown.
82.4 KB
./usr/share/doc/erlang-doc/html/lib/odbc-2.15/doc/html/getting_started.html
    
Offset 153, 85 lines modifiedOffset 153, 85 lines modified
153 ··<span·class="text">Using·the·Erlang·API</span>153 ··<span·class="text">Using·the·Erlang·API</span>
154 </h2>154 </h2>
155 <p>The·following·dialog·within·the·Erlang·shell·illustrates·the·functionality·of155 <p>The·following·dialog·within·the·Erlang·shell·illustrates·the·functionality·of
156 the·Erlang·ODBC·interface.·The·table·used·in·the·example·does·not·have·any156 the·Erlang·ODBC·interface.·The·table·used·in·the·example·does·not·have·any
157 relevance·to·anything·that·exist·in·reality,·it·is·just·a·simple·example.·The157 relevance·to·anything·that·exist·in·reality,·it·is·just·a·simple·example.·The
158 example·was·created·using·<code·class="inline">sqlserver·7.0·with·servicepack·1</code>·as·database·and·the158 example·was·created·using·<code·class="inline">sqlserver·7.0·with·servicepack·1</code>·as·database·and·the
159 ODBC·driver·for·<code·class="inline">sqlserver</code>·with·version·<code·class="inline">2000.80.194.00</code>.</p><pre><code·class="text">·1·&gt;·odbc:start().159 ODBC·driver·for·<code·class="inline">sqlserver</code>·with·version·<code·class="inline">2000.80.194.00</code>.</p><pre><code·class="text">·1·&gt;·odbc:start().
160 ······ok</code></pre><p>Connect·to·the·database</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3303133516-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ref</span><span·class="p"·data-group-id="3303133516-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·393,·SHA:·d211bb954b055d4c1ddcc36150a42e58cfa9c396e726d128738c457f5a7b1c5a·...·]-2">)</span><span·class="p">.</span><span·class="w">160 ······ok</code></pre><p>Connect·to·the·database</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3225472272-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ref</span><span·class="p"·data-group-id="3225472272-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·393,·SHA:·aeecf7cba30457fe223feba3a0e124789504f057cd2b9df131f80a4cb5f77c50·...·]-2">)</span><span·class="p">.</span><span·class="w">
161 ······</span><span·class="p"·data-group-id="3303133516-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.342</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3303133516-4">}</span></code></pre><p>Create·a·table</p><pre><code·class="text">·3·&gt;·odbc:sql_query(Ref,·&quot;CREATE·TABLE·EMPLOYEE·(NR·integer,161 ······</span><span·class="p"·data-group-id="3225472272-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.342</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3225472272-4">}</span></code></pre><p>Create·a·table</p><pre><code·class="text">·3·&gt;·odbc:sql_query(Ref,·&quot;CREATE·TABLE·EMPLOYEE·(NR·integer,
162 ······FIRSTNAME··char·varying(20),·LASTNAME··char·varying(20),·GENDER·char(1),162 ······FIRSTNAME··char·varying(20),·LASTNAME··char·varying(20),·GENDER·char(1),
163 ······PRIMARY·KEY(NR))&quot;).163 ······PRIMARY·KEY(NR))&quot;).
164 ······{updated,undefined}</code></pre><p>Insert·some·data</p><pre><code·class="text">·4·&gt;·odbc:sql_query(Ref,·&quot;INSERT·INTO·EMPLOYEE·VALUES(1,·'Jane',·'Doe',·'F')&quot;).164 ······{updated,undefined}</code></pre><p>Insert·some·data</p><pre><code·class="text">·4·&gt;·odbc:sql_query(Ref,·&quot;INSERT·INTO·EMPLOYEE·VALUES(1,·'Jane',·'Doe',·'F')&quot;).
165 ······{updated,1}</code></pre><p>Check·what·data·types·the·database·assigned·for·the·columns.·Hopefully·this·is165 ······{updated,1}</code></pre><p>Check·what·data·types·the·database·assigned·for·the·columns.·Hopefully·this·is
166 not·a·surprise,·some·times·it·can·be!·These·are·the·data·types·that·you·should166 not·a·surprise,·some·times·it·can·be!·These·are·the·data·types·that·you·should
167 use·if·you·want·to·do·a·parameterized·query.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">describe_table</span><span·class="p"·data-group-id="2376432198-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;EMPLOYEE&quot;</span><span·class="p"·data-group-id="2376432198-1">)</span><span·class="p">.</span><span·class="w">167 use·if·you·want·to·do·a·parameterized·query.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">describe_table</span><span·class="p"·data-group-id="7790133784-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;EMPLOYEE&quot;</span><span·class="p"·data-group-id="7790133784-1">)</span><span·class="p">.</span><span·class="w">
168 ······</span><span·class="p"·data-group-id="2376432198-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2376432198-3">[</span><span·class="p"·data-group-id="2376432198-4">{</span><span·class="s">&quot;NR&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·107,·SHA:·1ae02c021b5cf856a942c8c179b805ef271be56e68b4ceff4521910de0e0a53e·...·]-4">}</span><span·class="p">,</span><span·class="w">168 ······</span><span·class="p"·data-group-id="7790133784-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7790133784-3">[</span><span·class="p"·data-group-id="7790133784-4">{</span><span·class="s">&quot;NR&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·107,·SHA:·846022c792d38dce18348872c5bc124356168e31371ac106be5237ea37aad736·...·]-4">}</span><span·class="p">,</span><span·class="w">
169 ············</span><span·class="p"·data-group-id="2376432198-5">{</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2376432198-6">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="2376432198-6">}</span><span·class="p"·data-group-id="2376432198-5">}</span><span·class="p">,</span><span·class="w"> 
170 ············</span><span·class="p"·data-group-id="2376432198-7">{</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2376432198-8">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·118,·SHA:·0618b8fede1d45b942f0efe8d4bdddf2055a0dc0e545f023b9ec471869c26467·...·]</span><span·class="w">169 ············</span><span·class="p"·data-group-id="7790133784-5">{</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7790133784-6">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·143,·SHA:·8ba498352fe72ad93cd400e6d28273c3a57b41bfd14a000106ca2e49f1c9f41d·...·]</span><span·class="w">
 170 ············</span><span·class="p"·data-group-id="7790133784-7">{</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7790133784-8">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="7790133784-8">}</span><span·class="p"·data-group-id="7790133784-7">}</span><span·class="w">
171 ············</span><span·class="p"·data-group-id="2376432198-9">{</span><span·class="s">&quot;GENDER&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2376432198-10">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·636,·SHA:·25a1cf57c523f0db7e5643658bb1740099fd8727f48ad023ba11c64c79484738·...·]-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="s">&quot;INSERT·INTO·EMPLOYEE·(NR,·FIRSTNAME,·&quot;</span><span·class="w">171 ············</span><span·class="p"·data-group-id="7790133784-9">{</span><span·class="s">&quot;GENDER&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7790133784-10">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·636,·SHA:·2bf95b117674a71f95f5b9ffb34fbdc62c8c71a9de1192c28daaf57e3bd8f5f6·...·]-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="s">&quot;INSERT·INTO·EMPLOYEE·(NR,·FIRSTNAME,·&quot;</span><span·class="w">
172 ··················</span><span·class="s">&quot;LASTNAME,·GENDER)·VALUES(?,·?,·?,·?)&quot;</span><span·class="p">,</span><span·class="w">172 ··················</span><span·class="s">&quot;LASTNAME,·GENDER)·VALUES(?,·?,·?,·?)&quot;</span><span·class="p">,</span><span·class="w">
173 ···················</span><span·class="p"·data-group-id="6226615032-2">[</span><span·class="p"·data-group-id="6226615032-3">{</span><span·class="ss">sql_integer</span><span·class="p">,</span><span·class="p"·data-group-id="6226615032-4">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</[·...·truncated·by·diffoscope;·len:·344,·SHA:·e07eeb3751e471519276797d6baddb9a4755a76a4f88a6c187d0ec3aa8f79561·...·]-3">}</span><span·class="p">,</span><span·class="w">173 ···················</span><span·class="p"·data-group-id="3217950076-2">[</span><span·class="p"·data-group-id="3217950076-3">{</span><span·class="ss">sql_integer</span><span·class="p">,</span><span·class="p"·data-group-id="3217950076-4">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</[·...·truncated·by·diffoscope;·len:·344,·SHA:·0ef0d6cb71ea47e2d7785e4d8a91bf46edce5b508abd1d738f7aa8f18b0d65a4·...·]-3">}</span><span·class="p">,</span><span·class="w">
174 ····················</span><span·class="p"·data-group-id="6226615032-5">{</span><span·class="p"·data-group-id="6226615032-6">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="6226615032-6">}</span><span·class="p">,</span><span·class="w">174 ····················</span><span·class="p"·data-group-id="3217950076-5">{</span><span·class="p"·data-group-id="3217950076-6">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="3217950076-6">}</span><span·class="p">,</span><span·class="w">
175 ·····························</span><span·class="p"·data-group-id="6226615032-7">[</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Ross&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="w">175 ·····························</span><span·class="p"·data-group-id="3217950076-7">[</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Ross&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="w">
176 ·····························</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Louise&quot;</span><span·class="p"·data-group-id="6226615032-7">]</span><span·class="p"·data-group-id="6226615032-5">}</span><span·class="p">,</span><span·class="w">176 ·····························</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Louise&quot;</span><span·class="p"·data-group-id="3217950076-7">]</span><span·class="p"·data-group-id="3217950076-5">}</span><span·class="p">,</span><span·class="w">
177 ···················</span><span·class="p"·data-group-id="6226615032-8">{</span><span·class="p"·data-group-id="6226615032-9">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="6226615032-9">}</span><span·class="p">,</span><span·class="w">177 ···················</span><span·class="p"·data-group-id="3217950076-8">{</span><span·class="p"·data-group-id="3217950076-9">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">20</span><span·class="p"·data-group-id="3217950076-9">}</span><span·class="p">,</span><span·class="w">
178 ·····························</span><span·class="p"·data-group-id="6226615032-10">[</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Green&quot;</span><span·class="p">,</span><span·class="w">178 ·····························</span><span·class="p"·data-group-id="3217950076-10">[</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Green&quot;</span><span·class="p">,</span><span·class="w">
179 ······························</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Lane&quot;</span><span·class="p"·data-group-id="6226615032-10">]</span><span·class="p"·data-group-id="6226615032-8">}</span><span·class="p">,</span><span·class="w">179 ······························</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Lane&quot;</span><span·class="p"·data-group-id="3217950076-10">]</span><span·class="p"·data-group-id="3217950076-8">}</span><span·class="p">,</span><span·class="w">
180 ···················</span><span·class="p"·data-group-id="6226615032-11">{</span><span·class="p"·data-group-id="6226615032-12">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="6226615032-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·680,·SHA:·b58cc72b3577a076214471aaaed8eec6a40d7daa43271343259c3da32296cfd4·...·]-1">)</span><span·class="p">.</span><span·class="w">180 ···················</span><span·class="p"·data-group-id="3217950076-11">{</span><span·class="p"·data-group-id="3217950076-12">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="3217950076-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·680,·SHA:·f8440dd93df1ff02ee334c7fb5f749ebc0947a3dc7621953bcc554b366d4e89c·...·]-1">)</span><span·class="p">.</span><span·class="w">
181 ······</span><span·class="p"·data-group-id="6226615032-14">{</span><span·class="ss">updated</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">7</span><span·class="p"·data-group-id="6226615032-14">}</span></code></pre><p>Fetch·all·data·in·the·table·employee</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·439,·SHA:·1a358816575628cb3f370fead733f9a714910561015b52b9c3eeb06646f21982·...·]-1">)</span><span·class="p">.</span><span·class="w">181 ······</span><span·class="p"·data-group-id="3217950076-14">{</span><span·class="ss">updated</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">7</span><span·class="p"·data-group-id="3217950076-14">}</span></code></pre><p>Fetch·all·data·in·the·table·employee</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·439,·SHA:·0917b94c95fc34ea53b714d13c2dba1b4c86c52eaeb6b9473d77174a33bd876e·...·]-1">)</span><span·class="p">.</span><span·class="w">
182 ····</span><span·class="p"·data-group-id="8782323846-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8782323846-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·a1bf1ac4fd09b4c70a9cd63fa380f678702788415ccb4f1583861f27314e1afb·...·]-3">]</span><span·class="p">,</span><span·class="w">182 ····</span><span·class="p"·data-group-id="2933154887-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="2933154887-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·2a2a4cb6208967b2a255f66200acbb6dce315f4b29e4443c148b82e9bb7eca28·...·]-3">]</span><span·class="p">,</span><span·class="w">
183 ··········</span><span·class="p"·data-group-id="8782323846-4">[</span><span·class="p"·data-group-id="8782323846-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·70,·SHA:·f62fbb22234ba073aff46a545091e1029b7fe0b0768f1fa3ec1dd9a13b67bf1c·...·]-5">}</span><span·class="p">,</span><span·class="w">183 ··········</span><span·class="p"·data-group-id="2933154887-4">[</span><span·class="p"·data-group-id="2933154887-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·70,·SHA:·2e8e761751d9b83c87f3632b695f463aeaaa43127ecf3300e96d4b5960e12a60·...·]-5">}</span><span·class="p">,</span><span·class="w">
184 ···········</span><span·class="p"·data-group-id="8782323846-6">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·80a49dca5565554731315e3cd9b5158c761231302473f0727360dff9de1bba30·...·]-6">}</span><span·class="p">,</span><span·class="w">184 ···········</span><span·class="p"·data-group-id="2933154887-6">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·9b5a1ddc22847b29d108957a697d8544e6ce3fb8607912f16e12a619e7b9a112·...·]-6">}</span><span·class="p">,</span><span·class="w">
185 ···········</span><span·class="p"·data-group-id="8782323846-7">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·694bc2ae828b5fc5e15fc252a89d5e51bf762d658c34850daf7a2883a6ce670d·...·]-7">}</span><span·class="p">,</span><span·class="w">185 ···········</span><span·class="p"·data-group-id="2933154887-7">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·a7eafde31e9e4cce5ce328d76a068af2466c4d4e70525dbaff8176178f764c94·...·]-7">}</span><span·class="p">,</span><span·class="w">
186 ···········</span><span·class="p"·data-group-id="8782323846-8">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="s">&quot;Ross&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·bc9972c78c489f2c420bd15132b938d1a13169ff198d21cac0f1ca77ae3885ee·...·]-8">}</span><span·class="p">,</span><span·class="w">186 ···········</span><span·class="p"·data-group-id="2933154887-8">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="s">&quot;Ross&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·e6525f8e8819358a692d775a7477f0211c1cea151671880f49595efe3a66bf47·...·]-8">}</span><span·class="p">,</span><span·class="w">
187 ···········</span><span·class="p"·data-group-id="8782323846-9">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="s">&quot;Green&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·5e02cf5eafbabccc009500be30a9ab84212c828ec0d306df38ab94cb153512a6·...·]-9">}</span><span·class="p">,</span><span·class="w">187 ···········</span><span·class="p"·data-group-id="2933154887-9">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="s">&quot;Green&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·1edfa38dd33dbbde70c1c5baaf0cc09dea58b503756413516677e5a50fe3079b·...·]-9">}</span><span·class="p">,</span><span·class="w">
188 ···········</span><span·class="p"·data-group-id="8782323846-10">{</span><span·class="mi">6</span><span·class="p">,</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·4c0f8e6271dc9409856e2d1605bf0cbfd37d9001135c6438320858e23607f737·...·]-10">}</span><span·class="p">,</span><span·class="w">188 ···········</span><span·class="p"·data-group-id="2933154887-10">{</span><span·class="mi">6</span><span·class="p">,</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·acf048c26d067071fb3af62c1a42772e3725f067c1a59c0a666c16d040d19e3b·...·]-10">}</span><span·class="p">,</span><span·class="w">
189 ···········</span><span·class="p"·data-group-id="8782323846-11">{</span><span·class="mi">7</span><span·class="p">,</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·4fc7a3d1bd12a6798d671ed735006fd8a90c27402a6594b1ef30706c3f8e5818·...·]-11">}</span><span·class="p">,</span><span·class="w">189 ···········</span><span·class="p"·data-group-id="2933154887-11">{</span><span·class="mi">7</span><span·class="p">,</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7d292f70869595236b5eae70f57787d6b677470e2dc4441a00e74140dd3740ab·...·]-11">}</span><span·class="p">,</span><span·class="w">
190 ···········</span><span·class="p"·data-group-id="8782323846-12">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="s">&quot;Lane&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·152,·SHA:·d154c18f68221227b40c825afaf54513a6c5c281997465f4685aa92035dd0b17·...·]-2">}</span></code></pre><p>Associate·a·result·set·containing·the·whole·table·<code·class="inline">EMPLOYEE</code>·to·the·connection.190 ···········</span><span·class="p"·data-group-id="2933154887-12">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="s">&quot;Lane&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·152,·SHA:·3a402dd8a179536c7f8396be435c9ff9f6901dca927d9641bf6f6f2ba763359d·...·]-2">}</span></code></pre><p>Associate·a·result·set·containing·the·whole·table·<code·class="inline">EMPLOYEE</code>·to·the·connection.
191 The·number·of·rows·in·the·result·set·is·returned.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">8</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">select_count</span><span·class="p"·data-group-id="0630489491-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SELECT·*·FROM·EMPLOYEE&quot;</span><span·class="p"·data-group-id="0630489491-1">)</span><span·class="p">.</span><span·class="w">191 The·number·of·rows·in·the·result·set·is·returned.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">8</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">select_count</span><span·class="p"·data-group-id="7135678709-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SELECT·*·FROM·EMPLOYEE&quot;</span><span·class="p"·data-group-id="7135678709-1">)</span><span·class="p">.</span><span·class="w">
192 ······</span><span·class="p"·data-group-id="0630489491-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="0630489491-2">}</span></code></pre><p>You·can·always·traverse·the·result·set·sequential·by·using·next</p><pre><code·class="makeu[·...·truncated·by·diffoscope;·len:·349,·SHA:·c363c9a027726cdbf6748c2102b5ac47de8b63595cf7884438d169b70bf9f232·...·]-1">)</span><span·class="p">.</span><span·class="w">192 ······</span><span·class="p"·data-group-id="7135678709-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="7135678709-2">}</span></code></pre><p>You·can·always·traverse·the·result·set·sequential·by·using·next</p><pre><code·class="makeu[·...·truncated·by·diffoscope;·len:·349,·SHA:·995263eff422280b62a1a45dba7eaaaf7d55d7c96783e608bd719a05f69ec35b·...·]-1">)</span><span·class="p">.</span><span·class="w">
193 ······</span><span·class="p"·data-group-id="9049730221-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9049730221-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1050,·SHA:·92746093f37d7a344affdf918b9f47d6a10848e4c2adeb5ad3e4e7212eed0a32·...·]-1">)</span><span·class="p">.</span><span·class="w">193 ······</span><span·class="p"·data-group-id="7090021407-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7090021407-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1050,·SHA:·dd1e87d768c2a7f2fad2a6b4ef3d89155ff1ef3f5b9f47ce32c3a249163aff73·...·]-1">)</span><span·class="p">.</span><span·class="w">
194 ······</span><span·class="p"·data-group-id="9369237742-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9369237742-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·652,·SHA:·14e75f5d785a4362695ab5f59b88a67c6333afa8bf037bfa1c4677d4ec338ffa·...·]-2">}</span></code></pre><p>If·your·driver·supports·scrollable·cursors·you·have·a·little·more·freedom,·and194 ······</span><span·class="p"·data-group-id="3872619546-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="3872619546-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·652,·SHA:·5cec3826aa0b09aa0f36498eb3c01423dc4de1cf569efe094e46b6d0101275c5·...·]-2">}</span></code></pre><p>If·your·driver·supports·scrollable·cursors·you·have·a·little·more·freedom,·and
195 can·do·things·like·this.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">11</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">last</span><span·class="p"·data-group-id="0422527483-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="0422527483-1">)</span><span·class="p">.</span><span·class="w">195 can·do·things·like·this.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">11</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">last</span><span·class="p"·data-group-id="4579066217-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="4579066217-1">)</span><span·class="p">.</span><span·class="w">
196 ······</span><span·class="p"·data-group-id="0422527483-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="0422527483-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1053,·SHA:·5027db9309e6d02700769e58f8b386bc9953491bbf06348cbe51b5f87e6734be·...·]-1">)</span><span·class="p">.</span><span·class="w">196 ······</span><span·class="p"·data-group-id="4579066217-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4579066217-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1053,·SHA:·c57bd0e6c72d5ef95f6614eefe38b687d0f8dca94f9bc6427998edc14c6fcf84·...·]-1">)</span><span·class="p">.</span><span·class="w">
197 ······</span><span·class="p"·data-group-id="6302895749-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6302895749-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1056,·SHA:·b4290aa5a4e6d57ef1cd0f2edd79793f8f38d2a00c2e24bd98a06472a71563ed·...·]9-1">)</span><span·class="p">.</span><span·class="w">197 ······</span><span·class="p"·data-group-id="9721812092-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9721812092-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1056,·SHA:·cab1eb4f64d81a4233567b46520f1799c5355320de05e1edecf844e5d8b172f8·...·]9-1">)</span><span·class="p">.</span><span·class="w">
198 ······</span><span·class="p"·data-group-id="5248888509-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5248888509-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1050,·SHA:·752d6b0fe14fa01b12eb40a2fafa84348a2f477fbe839c5d6694068356e02ea2·...·]-1">)</span><span·class="p">.</span><span·class="w">198 ······</span><span·class="p"·data-group-id="0201190179-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="0201190179-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·1050,·SHA:·4af963e036489c907893d43c928882c44a08067da24743bdd24cb75a98152bc7·...·]-1">)</span><span·class="p">.</span><span·class="w">
199 ······</span><span·class="p"·data-group-id="2590890961-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="2590890961-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1317,·SHA:·3ab39477eeb0c5e9fb1dccc9dc433af2fb74f1051abbc8324213a4df42b73147·...·]-1">)</span><span·class="p">.</span><span·class="w">199 ······</span><span·class="p"·data-group-id="2777465104-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="2777465104-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1317,·SHA:·c208cccb66156b506c8ca87cb4343963182d918b1a275cdc8e8e8b8b5ee170cf·...·]-1">)</span><span·class="p">.</span><span·class="w">
200 ·····</span><span·class="p"·data-group-id="3507580040-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="3507580040-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·77725bccf02e1b075bd5037f8b90f59dc60cedfdfef7d4d04555eee349002c6b·...·]-3">]</span><span·class="p">,</span><span·class="w">200 ·····</span><span·class="p"·data-group-id="1229023419-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1229023419-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·3cf40ec0af20c266fad8f4a1f21759426424db598af110b7a2c913e12146c5bc·...·]-3">]</span><span·class="p">,</span><span·class="w">
201 ··········</span><span·class="p"·data-group-id="3507580040-4">[</span><span·class="p"·data-group-id="3507580040-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3507580040-5">}</span><span·class="p">,</span><span·class="w">201 ··········</span><span·class="p"·data-group-id="1229023419-4">[</span><span·class="p"·data-group-id="1229023419-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1229023419-5">}</span><span·class="p">,</span><span·class="w">
202 ···········</span><span·class="p"·data-group-id="3507580040-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3507580040-6">}</span><span·class="p">,</span><span·class="w">202 ···········</span><span·class="p"·data-group-id="1229023419-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1229023419-6">}</span><span·class="p">,</span><span·class="w">
203 ···········</span><span·class="p"·data-group-id="3507580040-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="3507580040-7">}</span><span·class="p">,</span><span·class="w">203 ···········</span><span·class="p"·data-group-id="1229023419-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="1229023419-7">}</span><span·class="p">,</span><span·class="w">
204 ···········</span><span·class="p"·data-group-id="3507580040-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="3507580040-8">}</span><span·class="p">,</span><span·class="w">204 ···········</span><span·class="p"·data-group-id="1229023419-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="1229023419-8">}</span><span·class="p">,</span><span·class="w">
205 ···········</span><span·class="p"·data-group-id="3507580040-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="3507580040-9">}</span><span·class="p">,</span><span·class="w">205 ···········</span><span·class="p"·data-group-id="1229023419-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1229023419-9">}</span><span·class="p">,</span><span·class="w">
206 ···········</span><span·class="p"·data-group-id="3507580040-10">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="3507580040-10">}</span><span·class="p"·data-group-id="3507580040-4">]</span><span·class="p"·data-group-id="35075[·...·truncated·by·diffoscope;·len:·5,·SHA:·0171a7d8ca74d8eeb1dd170d5cc1f9ada91cbcb76795d79cb092d1849a3e24be·...·]-2">}</span></code></pre><p>Fetch·the·fields·<code·class="inline">FIRSTNAME</code>and·<code·class="inline">NR</code>for·all·female·employees·and·sort·them·on206 ···········</span><span·class="p"·data-group-id="1229023419-10">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="1229023419-10">}</span><span·class="p"·data-group-id="1229023419-4">]</span><span·class="p"·data-group-id="12290[·...·truncated·by·diffoscope;·len:·5,·SHA:·500b083ba2056daa97adcceb5afec7140e63fccc4e7df485ffd44575b6319488·...·]-2">}</span></code></pre><p>Fetch·the·fields·<code·class="inline">FIRSTNAME</code>and·<code·class="inline">NR</code>for·all·female·employees·and·sort·them·on
207 the·field·<code·class="inline">FIRSTNAME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">16</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">sql_query</span><span·class="p"·data-group-id="4624935342-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SELECT·FIRSTNAME,·NR·FROM·EMPLOYEE·WHERE·GENDER·=·&#39;F&#39;207 the·field·<code·class="inline">FIRSTNAME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">16</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">sql_query</span><span·class="p"·data-group-id="1656265768-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SELECT·FIRSTNAME,·NR·FROM·EMPLOYEE·WHERE·GENDER·=·&#39;F&#39;
208 ······ORDER·BY·FIRSTNAME&quot;</span><span·class="p"·data-group-id="4624935342-1">)</span><span·class="p">.</span><span·class="w">208 ······ORDER·BY·FIRSTNAME&quot;</span><span·class="p"·data-group-id="1656265768-1">)</span><span·class="p">.</span><span·class="w">
209 ····</span><span·class="p"·data-group-id="4624935342-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4624935342-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·fc926e20ff5cc4437d10d05910ad115f706d2aa4e31f0655265019ec9c63f924·...·]-3">]</span><span·class="p">,</span><span·class="w">209 ····</span><span·class="p"·data-group-id="1656265768-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1656265768-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·b45628de1aeb82801a8a595fef3d482f1bc79fc0c25f2cec1b2e1c8cda12a2f7·...·]-3">]</span><span·class="p">,</span><span·class="w">
210 ··········</span><span·class="p"·data-group-id="4624935342-4">[</span><span·class="p"·data-group-id="4624935342-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4624935342-5">}</span><span·class="p">,</span><span·class="w">210 ··········</span><span·class="p"·data-group-id="1656265768-4">[</span><span·class="p"·data-group-id="1656265768-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1656265768-5">}</span><span·class="p">,</span><span·class="w">
211 ···········</span><span·class="p"·data-group-id="4624935342-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="4624935342-6">}</span><span·class="p">,</span><span·class="w">211 ···········</span><span·class="p"·data-group-id="1656265768-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="1656265768-6">}</span><span·class="p">,</span><span·class="w">
212 ···········</span><span·class="p"·data-group-id="4624935342-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4624935342-7">}</span><span·class="p">,</span><span·class="w">212 ···········</span><span·class="p"·data-group-id="1656265768-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1656265768-7">}</span><span·class="p">,</span><span·class="w">
213 ···········</span><span·class="p"·data-group-id="4624935342-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="4624935342-8">}</span><span·class="p">,</span><span·class="w">213 ···········</span><span·class="p"·data-group-id="1656265768-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="1656265768-8">}</span><span·class="p">,</span><span·class="w">
214 ···········</span><span·class="p"·data-group-id="4624935342-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="4624935342-9">}</span><span·class="p">,</span><span·class="w">214 ···········</span><span·class="p"·data-group-id="1656265768-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1656265768-9">}</span><span·class="p">,</span><span·class="w">
215 ···········</span><span·class="p"·data-group-id="4624935342-10">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="4624935342-10">}</span><span·class="p"·data-group-id="4624935342-4">]</span><span·class="p"·data-group-id="46249[·...·truncated·by·diffoscope;·len:·5,·SHA:·f6a65d5f09e5af466609d327ede2321b019afd3611a94d66d8585faf91ebeb2d·...·]-2">}</span></code></pre><p>Associate·a·result·set·that·contains·the·fields·<code·class="inline">FIRSTNAME</code>·and·<code·class="inline">NR</code>for·all215 ···········</span><span·class="p"·data-group-id="1656265768-10">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="1656265768-10">}</span><span·class="p"·data-group-id="1656265768-4">]</span><span·class="p"·data-group-id="16562[·...·truncated·by·diffoscope;·len:·5,·SHA:·d36ff77e2dbd137b1db278d191ce176ee248f843cd62e1a03da461fdeaf17213·...·]-2">}</span></code></pre><p>Associate·a·result·set·that·contains·the·fields·<code·class="inline">FIRSTNAME</code>·and·<code·class="inline">NR</code>for·all
216 female·employees·to·the·connection.·The·number·of·rows·in·the·result·set·is216 female·employees·to·the·connection.·The·number·of·rows·in·the·result·set·is
217 returned.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">17</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">select_count</span><span·class="p"·data-group-id="1570305405-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SELECT·FIRSTNAME,·NR·FROM·EMPLOYEE·WHERE·GENDER·=·&#39;F&#39;&quot;</span><span·class="p"·data-group-id="1570305405-1">)</span><span·class="p">.</span><span·class="w">217 returned.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">17</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">select_count</span><span·class="p"·data-group-id="6131009230-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SELECT·FIRSTNAME,·NR·FROM·EMPLOYEE·WHERE·GENDER·=·&#39;F&#39;&quot;</span><span·class="p"·data-group-id="6131009230-1">)</span><span·class="p">.</span><span·class="w">
218 ······</span><span·class="p"·data-group-id="1570305405-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="1570305405-2">}</span></code></pre><p>A·few·more·ways·of·retrieving·parts·of·the·result·set·when·the·driver·supports218 ······</span><span·class="p"·data-group-id="6131009230-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6131009230-2">}</span></code></pre><p>A·few·more·ways·of·retrieving·parts·of·the·result·set·when·the·driver·supports
219 scrollable·cursors.·Note·that·next·will·work·even·without·support·for·scrollable219 scrollable·cursors.·Note·that·next·will·work·even·without·support·for·scrollable
220 cursors.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">18</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="7876689386-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7876689386-2">{</span><span·class="ss">relative</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·165,·SHA:·031b177af01ba8659dbf16b14856ed3b891a1be8edc0eb6321fdb286a2521557·...·]-1">)</span><span·class="p">.</span><span·class="w">220 cursors.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">18</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="5211087990-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5211087990-2">{</span><span·class="ss">relative</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·165,·SHA:·962f06a78b8330b3fbdfbd7d282b4cb9096985e25fb7e5cd7e2624480078bfed·...·]-1">)</span><span·class="p">.</span><span·class="w">
221 ····</span><span·class="p"·data-group-id="7876689386-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7876689386-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1388,·SHA:·7ef44abd379a6432539a927b670bb3f973c3b682e45d93f8079c2c804f921e83·...·]-1">)</span><span·class="p">.</span><span·class="w">221 ····</span><span·class="p"·data-group-id="5211087990-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5211087990-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1388,·SHA:·b659939ea25d2c77946e1a07dd685fc5c9e261d8a6086fa8486023e0141b84f1·...·]-1">)</span><span·class="p">.</span><span·class="w">
222 ······</span><span·class="p"·data-group-id="8494607846-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8494607846-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1350,·SHA:·0b00d8502123420ccaf538b31cfad7d60e7609e8cef83b497a393126b6276064·...·]-1">)</span><span·class="p">.</span><span·class="w">222 ······</span><span·class="p"·data-group-id="4249972485-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4249972485-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1350,·SHA:·49d1e9e8579ce234571f94c5a76bff81344b8f636120a44aeaa2573ea613fa62·...·]-1">)</span><span·class="p">.</span><span·class="w">
223 ······</span><span·class="p"·data-group-id="9889924296-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9889924296-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1167,·SHA:·54608a43534a7d2522499c3482770964817c861c91003ac008942ed00c525d36·...·]-1">)</span><span·class="p">.</span><span·class="w">223 ······</span><span·class="p"·data-group-id="6298981082-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6298981082-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1167,·SHA:·2d43f86fb4a72fc7bc2c933ecd018bdc4b4ab2d6c999f009b6a0ee44cb384895·...·]-1">)</span><span·class="p">.</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="7161051008-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7161051008-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1351,·SHA:·f625931290fbcf764e1c3460750b4b5c1171a37f843c87d202b4cd4df39ffb2a·...·]-1">)</span><span·class="p">.</span><span·class="w">224 ····</span><span·class="p"·data-group-id="1139738547-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1139738547-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1351,·SHA:·6860496e9e477d143da26e3c99fed14469cf7094a1c6b8f63467a313e408e6b3·...·]-1">)</span><span·class="p">.</span><span·class="w">
225 ······</span><span·class="p"·data-group-id="7631550556-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7631550556-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·65e8043b86e6609402b2f7be84b40bf92904dae5536e484ea45e26c08ff59ea1·...·]-4">]</span><span·class="p">,</span><span·class="w">225 ······</span><span·class="p"·data-group-id="7641797438-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7641797438-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·437f62f843725a880b6f0abb561857a12b88fdb43ce2e5fa4c8b483fbda7825b·...·]-4">]</span><span·class="p">,</span><span·class="w">
226 ················</span><span·class="p"·data-group-id="7631550556-5">[</span><span·class="p"·data-group-id="7631550556-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7631550556-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="7631550556-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7631550556-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="7631550556-8">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="7631550556-8">}</span><span·class="p">,</span><span·class="p"·data-group-id="7631550556-9">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7631550556-9">}</span><span·class="p"·data-group-id="7631550556-5">]</span><span·class="p"·data-group-id="7631550556-3">}</span></code></pre><p>Select,·using·a·parameterized·query.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">23</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">param_query</span><span·class="p"·data-group-id="6154223890-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SELECT·*·FROM·EMPLOYEE·WHERE·GENDER=?&quot;</span><span·class="p">,</span><span·class="w"> 
227 ······</span><span·class="p"·data-group-id="6154223890-2">[</span><span·class="p"·data-group-id="6154223890-3">{</span><span·class="p"·data-group-id="6154223890-4">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·434,·SHA:·8e321c260a379dbd9ab0fbda371864be39f6265823f59934bdfcbab0c779292d·...·]</span><span·class="w">226 ················</span><span·class="p"·data-group-id="7641797438-5">[</span><span·class="p"·data-group-id="7641797438-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7641797438-6">[·...·truncated·by·diffoscope;·len:·1305,·SHA:·ae4ac66400c6082a28d882414b5c13ef2260375c0f7a1c1e652ef69f79b4a88e·...·]</span><span·class="w">
 227 ······</span><span·class="p"·data-group-id="1576515784-2">[</span><span·class="p"·data-group-id="1576515784-3">{</span><span·class="p"·data-group-id="1576515784-4">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1576515784-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1576515784-5">[</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-group-id="1576515784-5">]</span><span·class="p"·data-group-id="1576515784-3">}</span><span·class="p"·data-group-id="1576515784-2">]</span><span·class="p"·data-group-id="1576515784-1">)</span><span·class="p">.</span><span·class="w">
228 ······</span><span·class="p"·data-group-id="6154223890-6">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6154223890-7">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·b30911df8db202b3baf4a4aeb7d5796f7c198d975b06acbdf9185f5251d9e88b·...·]-7">]</span><span·class="p">,</span><span·class="w">228 ······</span><span·class="p"·data-group-id="1576515784-6">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1576515784-7">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·758761a40f32a8781f41a63ba588b9ea376517dad2692a73c328725fef7a05be·...·]-7">]</span><span·class="p">,</span><span·class="w">
229 ················</span><span·class="p"·data-group-id="6154223890-8">[</span><span·class="p"·data-group-id="6154223890-9">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Doe&quot;</span><span·c[·...·truncated·by·diffoscope;·len:·569,·SHA:·1d366d268ab9162b77786871aa8b90beeebf6d4f6728ef007fc8ef0939abbd3c·...·]-6">}</span></code></pre><p>Delete·the·table·<code·class="inline">EMPLOYEE</code>.</p><pre><code·class="text">·24·&gt;·odbc:sql_query(Ref,·&quot;DROP·TABLE·EMPLOYEE&quot;).229 ················</span><span·class="p"·data-group-id="1576515784-8">[</span><span·class="p"·data-group-id="1576515784-9">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Doe&quot;</span><span·c[·...·truncated·by·diffoscope;·len:·569,·SHA:·67c1c18b34570ad14ee9a43ee9e6e5ea2a5e2fdbdd65bd7891ad3067a02ba889·...·]-6">}</span></code></pre><p>Delete·the·table·<code·class="inline">EMPLOYEE</code>.</p><pre><code·class="text">·24·&gt;·odbc:sql_query(Ref,·&quot;DROP·TABLE·EMPLOYEE&quot;).
230 ······{updated,undefined}</code></pre><p>Shut·down·the·connection.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">25</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="8585871434-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8585871434-1">)</span><span·class="p">.</span><span·class="w">230 ······{updated,undefined}</code></pre><p>Shut·down·the·connection.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">25</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">disconnect</span><span·class="p"·data-group-id="6939716924-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="6939716924-1">)</span><span·class="p">.</span><span·class="w">
231 ······</span><span·class="ss">ok</span></code></pre><p>Shut·down·the·application.</p><pre><code·class="text">·26·&gt;·odbc:stop().231 ······</span><span·class="ss">ok</span></code></pre><p>Shut·down·the·application.</p><pre><code·class="text">·26·&gt;·odbc:stop().
232 ····=INFO·REPORT====·7-Jan-2004::17:00:59·===232 ····=INFO·REPORT====·7-Jan-2004::17:00:59·===
233 ····application:·odbc233 ····application:·odbc
234 ····exited:·stopped234 ····exited:·stopped
235 ····type:·temporary235 ····type:·temporary
  
236 ····ok</code></pre>236 ····ok</code></pre>
173 KB
./usr/share/doc/erlang-doc/html/lib/odbc-2.15/doc/html/odbc.epub
2.71 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·67285·bytes,·number·of·entries:·161 Zip·file·size:·67279·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:31·mimetype
3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Feb-13·09:31·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····70635·bx·defN·25-Feb-13·10:52·OEBPS/odbc.xhtml4 ?rw-r--r--··6.1·unx····70635·bx·defN·25-Feb-13·09:31·OEBPS/odbc.xhtml
5 ?rw-r--r--··6.1·unx····51061·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx····51061·bx·defN·25-Feb-13·09:31·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1245·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1245·bx·defN·25-Feb-13·09:31·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx·····2442·bx·defN·25-Feb-13·10:52·OEBPS/introduction.xhtml7 ?rw-r--r--··6.1·unx·····2442·bx·defN·25-Feb-13·09:31·OEBPS/introduction.xhtml
8 ?rw-r--r--··6.1·unx····45354·bx·defN·25-Feb-13·10:52·OEBPS/getting_started.xhtml8 ?rw-r--r--··6.1·unx····45354·bx·defN·25-Feb-13·09:31·OEBPS/getting_started.xhtml
9 ?rw-r--r--··6.1·unx·····8056·bx·defN·25-Feb-13·10:52·OEBPS/error_handling.xhtml9 ?rw-r--r--··6.1·unx·····8056·bx·defN·25-Feb-13·09:31·OEBPS/error_handling.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:31·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:31·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx····11572·bx·defN·25-Feb-13·10:52·OEBPS/databases.xhtml12 ?rw-r--r--··6.1·unx····11572·bx·defN·25-Feb-13·09:31·OEBPS/databases.xhtml
13 ?rw-r--r--··6.1·unx·····2032·bx·defN·25-Feb-13·10:52·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····2032·bx·defN·25-Feb-13·09:31·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx····12172·bx·stor·25-Feb-13·10:52·OEBPS/assets/odbc_app_arc.gif14 ?rw-r--r--··6.1·unx····12172·bx·stor·25-Feb-13·09:31·OEBPS/assets/odbc_app_arc.gif
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:31·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:31·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:31·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·226611·bytes·uncompressed,·64481·bytes·compressed:··71.5%18 16·files,·226611·bytes·uncompressed,·64475·bytes·compressed:··71.5%
85.9 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:20,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:31:22,·uncompressed·size·20,·method=store
82.3 KB
OEBPS/getting_started.xhtml
Max HTML report size reached
1.22 KB
OEBPS/content.opf
1.19 KB
OEBPS/content.opf
Max HTML report size reached
82.2 KB
./usr/share/doc/erlang-doc/html/lib/os_mon-2.10.1/doc/html/os_mon.epub
2.66 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·50282·bytes,·number·of·entries:·161 Zip·file·size:·50284·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:51·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:27·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·10:51·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·09:27·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····17153·bx·defN·25-Feb-13·10:51·OEBPS/os_sup.xhtml4 ?rw-r--r--··6.1·unx····17153·bx·defN·25-Feb-13·09:27·OEBPS/os_sup.xhtml
5 ?rw-r--r--··6.1·unx·····3941·bx·defN·25-Feb-13·10:51·OEBPS/os_mon_app.xhtml5 ?rw-r--r--··6.1·unx·····3941·bx·defN·25-Feb-13·09:27·OEBPS/os_mon_app.xhtml
6 ?rw-r--r--··6.1·unx·····9012·bx·defN·25-Feb-13·10:51·OEBPS/nteventlog.xhtml6 ?rw-r--r--··6.1·unx·····9012·bx·defN·25-Feb-13·09:27·OEBPS/nteventlog.xhtml
7 ?rw-r--r--··6.1·unx····51221·bx·defN·25-Feb-13·10:51·OEBPS/notes.xhtml7 ?rw-r--r--··6.1·unx····51221·bx·defN·25-Feb-13·09:27·OEBPS/notes.xhtml
8 ?rw-r--r--··6.1·unx·····1225·bx·defN·25-Feb-13·10:51·OEBPS/nav.xhtml8 ?rw-r--r--··6.1·unx·····1225·bx·defN·25-Feb-13·09:27·OEBPS/nav.xhtml
9 ?rw-r--r--··6.1·unx····25551·bx·defN·25-Feb-13·10:51·OEBPS/memsup.xhtml9 ?rw-r--r--··6.1·unx····25551·bx·defN·25-Feb-13·09:27·OEBPS/memsup.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:27·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:27·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx····18738·bx·defN·25-Feb-13·10:51·OEBPS/disksup.xhtml12 ?rw-r--r--··6.1·unx····18738·bx·defN·25-Feb-13·09:27·OEBPS/disksup.xhtml
13 ?rw-r--r--··6.1·unx····22574·bx·defN·25-Feb-13·10:51·OEBPS/cpu_sup.xhtml13 ?rw-r--r--··6.1·unx····22574·bx·defN·25-Feb-13·09:27·OEBPS/cpu_sup.xhtml
14 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Feb-13·10:51·OEBPS/content.opf14 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Feb-13·09:27·OEBPS/content.opf
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:51·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:27·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:51·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:27·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:51·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:27·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·173509·bytes·uncompressed,·47528·bytes·compressed:··72.6%18 16·files,·173509·bytes·uncompressed,·47530·bytes·compressed:··72.6%
77.8 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:51:56,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:27:46,·uncompressed·size·20,·method=store
1.21 KB
OEBPS/content.opf
1.18 KB
OEBPS/content.opf
Max HTML report size reached
13.6 KB
./usr/share/doc/erlang-doc/html/lib/parsetools-2.6/doc/html/leex.html
    
Offset 169, 21 lines modifiedOffset 169, 21 lines modified
169 <code·class="inline">error_location</code>·is·set·to·<code·class="inline">line</code>).</p></li></ul><p>The·code·must·return:</p><ul><li><p><strong><code·class="inline">{token,Token}</code></strong>·-·Return·<code·class="inline">Token</code>·to·the·caller.</p></li><li><p><strong><code·class="inline">{end_token,Token}</code></strong>·-·Return·<code·class="inline">Token</code>·and·is·last·token·in·a·tokens·call.</p></li><li><p><strong><code·class="inline">skip_token</code></strong>·-·Skip·this·token·completely.</p></li><li><p><strong><code·class="inline">{error,ErrString}</code></strong>·-·An·error·in·the·token,·<code·class="inline">ErrString</code>·is·a·string169 <code·class="inline">error_location</code>·is·set·to·<code·class="inline">line</code>).</p></li></ul><p>The·code·must·return:</p><ul><li><p><strong><code·class="inline">{token,Token}</code></strong>·-·Return·<code·class="inline">Token</code>·to·the·caller.</p></li><li><p><strong><code·class="inline">{end_token,Token}</code></strong>·-·Return·<code·class="inline">Token</code>·and·is·last·token·in·a·tokens·call.</p></li><li><p><strong><code·class="inline">skip_token</code></strong>·-·Skip·this·token·completely.</p></li><li><p><strong><code·class="inline">{error,ErrString}</code></strong>·-·An·error·in·the·token,·<code·class="inline">ErrString</code>·is·a·string
170 describing·the·error.</p></li></ul><p>It·is·also·possible·to·push·back·characters·into·the·input·characters·with·the170 describing·the·error.</p></li></ul><p>It·is·also·possible·to·push·back·characters·into·the·input·characters·with·the
171 following·returns:</p><ul><li><code·class="inline">{token,Token,PushBackList}</code></li><li><code·class="inline">{end_token,Token,PushBackList}</code></li><li><code·class="inline">{skip_token,PushBackList}</code></li></ul><p>These·have·the·same·meanings·as·the·normal·returns·but·the·characters·in171 following·returns:</p><ul><li><code·class="inline">{token,Token,PushBackList}</code></li><li><code·class="inline">{end_token,Token,PushBackList}</code></li><li><code·class="inline">{skip_token,PushBackList}</code></li></ul><p>These·have·the·same·meanings·as·the·normal·returns·but·the·characters·in
172 <code·class="inline">PushBackList</code>·will·be·prepended·to·the·input·characters·and·scanned·for·the172 <code·class="inline">PushBackList</code>·will·be·prepended·to·the·input·characters·and·scanned·for·the
173 next·token.·Note·that·pushing·back·a·newline·will·mean·the·line·numbering·will173 next·token.·Note·that·pushing·back·a·newline·will·mean·the·line·numbering·will
174 no·longer·be·correct.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Pushing·back·characters·gives·you·unexpected·possibilities·to·cause·the174 no·longer·be·correct.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Pushing·back·characters·gives·you·unexpected·possibilities·to·cause·the
175 scanner·to·loop!</p></section><p>The·following·example·would·match·a·simple·Erlang·integer·or·float·and·return·a175 scanner·to·loop!</p></section><p>The·following·example·would·match·a·simple·Erlang·integer·or·float·and·return·a
176 token·which·could·be·sent·to·the·Erlang·parser:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">D</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6115953065-1">[</span><span·class="mi">0</span><span·class="o">-</span><span·class="mi">9</span><span·class="p"·data-group-id="6115953065-1">]</span><span·class="w">176 token·which·could·be·sent·to·the·Erlang·parser:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">D</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2006274555-1">[</span><span·class="mi">0</span><span·class="o">-</span><span·class="mi">9</span><span·class="p"·data-group-id="2006274555-1">]</span><span·class="w">
  
177 </span><span·class="p"·data-group-id="6115953065-2">{</span><span·class="n">D</span><span·class="p"·data-group-id="6115953065-2">}</span><span·class="o">+</span><span·class="w">·</span><span·class="p">:</span><span·class="w">177 </span><span·class="p"·data-group-id="2006274555-2">{</span><span·class="n">D</span><span·class="p"·data-group-id="2006274555-2">}</span><span·class="o">+</span><span·class="w">·</span><span·class="p">:</span><span·class="w">
178 ··</span><span·class="p"·data-group-id="6115953065-3">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="6115953065-4">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="n">TokenLine</span><span·class="p">,</span><span·class="nf">[·...·truncated·by·diffoscope;·len:·254,·SHA:·4b422bd6aacf2f3d443230abc067b0fee65b4e263dc353a701de6b910669e398·...·]5-3">}</span><span·class="p">.</span><span·class="w">178 ··</span><span·class="p"·data-group-id="2006274555-3">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="2006274555-4">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="n">TokenLine</span><span·class="p">,</span><span·class="nf">[·...·truncated·by·diffoscope;·len:·254,·SHA:·affe6be5576ca80b66c9e4997c71cb9898cba0503ac5d7fb5ad3d67f1b87fcd4·...·]5-3">}</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="p"·data-group-id="6115953065-6">{</span><span·class="n">D</span><span·class="p"·data-group-id="6115953065-6">}</span><span·class="o">+</span><span·class="err">\</span><span·class="p">.</span><span·class="p"·data-group-id="6115953065-7">{</span><span·class="n">D</span><span·[·...·truncated·by·diffoscope;·len:·755,·SHA:·063905ce33f66f2516b61dbca4efcc30a0ccc0735c3be7c6daae3416add9037f·...·]5-8">)</span><span·class="o">?</span><span·class="w">·</span><span·class="p">:</span><span·class="w">179 </span><span·class="p"·data-group-id="2006274555-6">{</span><span·class="n">D</span><span·class="p"·data-group-id="2006274555-6">}</span><span·class="o">+</span><span·class="err">\</span><span·class="p">.</span><span·class="p"·data-group-id="2006274555-7">{</span><span·class="n">D</span><span·[·...·truncated·by·diffoscope;·len:·755,·SHA:·7c517d2d9e9c09805cc8357622a006aaae52ea47541190de60d9d872239f1887·...·]5-8">)</span><span·class="o">?</span><span·class="w">·</span><span·class="p">:</span><span·class="w">
180 ··</span><span·class="p"·data-group-id="6115953065-12">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="6115953065-13">{</span><span·class="nb">float</span><span·class="p">,</span><span·class="n">TokenLine</span><span·class="p">,</span><span·class="nf">[·...·truncated·by·diffoscope;·len:·255,·SHA:·8c39dad116f67c7bd0b6117841a8ea734c6c52f4f5b54f0ec7f8e5dca4a46706·...·]5-12">}</span><span·class="p">.</span></code></pre><p>The·Erlang·code·in·the·<code·class="inline">Erlang·code.</code>·section·is·written·into·the·output·file180 ··</span><span·class="p"·data-group-id="2006274555-12">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="2006274555-13">{</span><span·class="nb">float</span><span·class="p">,</span><span·class="n">TokenLine</span><span·class="p">,</span><span·class="nf">[·...·truncated·by·diffoscope;·len:·255,·SHA:·8dd29372673d783dadc7d88e2b729b1eb977a646885a5f23bd1368338beea003·...·]5-12">}</span><span·class="p">.</span></code></pre><p>The·Erlang·code·in·the·<code·class="inline">Erlang·code.</code>·section·is·written·into·the·output·file
181 directly·after·the·module·declaration·and·predefined·exports·declaration,·making181 directly·after·the·module·declaration·and·predefined·exports·declaration,·making
182 it·possible·to·add·extra·exports,·define·imports,·and·other·attributes,·which·are182 it·possible·to·add·extra·exports,·define·imports,·and·other·attributes,·which·are
183 visible·in·the·whole·file.</p><h2·id="module-regular-expressions"·class="section-heading">183 visible·in·the·whole·file.</p><h2·id="module-regular-expressions"·class="section-heading">
184 ··<a·href="#module-regular-expressions"·class="hover-link">184 ··<a·href="#module-regular-expressions"·class="hover-link">
185 ····<i·class="ri-link-m"·aria-hidden="true"></i>185 ····<i·class="ri-link-m"·aria-hidden="true"></i>
186 ··</a>186 ··</a>
187 ··<span·class="text">Regular·Expressions</span>187 ··<span·class="text">Regular·Expressions</span>
Offset 707, 15 lines modifiedOffset 707, 15 lines modified
707 <p>This·is·a·re-entrant·call·to·try·and·scan·a·single·token·from·<code·class="inline">Chars</code>.</p><p>If·there·are·enough·characters·in·<code·class="inline">Chars</code>·to·either·scan·a·token·or707 <p>This·is·a·re-entrant·call·to·try·and·scan·a·single·token·from·<code·class="inline">Chars</code>.</p><p>If·there·are·enough·characters·in·<code·class="inline">Chars</code>·to·either·scan·a·token·or
708 detect·an·error·then·this·will·be·returned·with708 detect·an·error·then·this·will·be·returned·with
709 <code·class="inline">{done,...}</code>.·Otherwise·<code·class="inline">{cont,Cont}</code>·will·be·returned·where·<code·class="inline">Cont</code>·is709 <code·class="inline">{done,...}</code>.·Otherwise·<code·class="inline">{cont,Cont}</code>·will·be·returned·where·<code·class="inline">Cont</code>·is
710 used·in·the·next·call·to·<code·class="inline">token()</code>·with·more·characters·to·try·an·scan710 used·in·the·next·call·to·<code·class="inline">token()</code>·with·more·characters·to·try·an·scan
711 the·token.·This·is·continued·until·a·token·has·been·scanned.·<code·class="inline">Cont</code>·is711 the·token.·This·is·continued·until·a·token·has·been·scanned.·<code·class="inline">Cont</code>·is
712 initially·<code·class="inline">[]</code>.</p><p>It·is·not·designed·to·be·called·directly·by·an·application,·but·is712 initially·<code·class="inline">[]</code>.</p><p>It·is·not·designed·to·be·called·directly·by·an·application,·but·is
713 used·through·the·I/O·system·where·it·can·typically·be·called·in·an713 used·through·the·I/O·system·where·it·can·typically·be·called·in·an
714 application·by:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="3254116400-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3254116400-2">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p">[·...·truncated·by·diffoscope;·len:·393,·SHA:·84a031f58c3502ec55acf4b2fedd3763e8c9b6776eb2a3691f7214d30919d771·...·]-1">)</span><span·class="w">714 application·by:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="1708626667-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1708626667-2">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p">[·...·truncated·by·diffoscope;·len:·393,·SHA:·a5ee4a1a90a50fb90985d3e8d41da138cf53fd2db2dd6b1bdff304d7320f3b84·...·]-1">)</span><span·class="w">
715 ··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">TokenRet</span></code></pre>715 ··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">TokenRet</span></code></pre>
716 ··</section>716 ··</section>
717 </section>717 </section>
718 <section·class="detail"·id="tokens/2">718 <section·class="detail"·id="tokens/2">
  
719 ··<div·class="detail-header">719 ··<div·class="detail-header">
720 ····<a·href="#tokens/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">720 ····<a·href="#tokens/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 792, 15 lines modifiedOffset 792, 15 lines modified
792 scan·the·tokens.·This·is·continued·until·all·tokens·have·been792 scan·the·tokens.·This·is·continued·until·all·tokens·have·been
793 scanned.·<code·class="inline">Cont</code>·is·initially·<code·class="inline">[]</code>.</p><p>This·functions·differs·from·<code·class="inline">token</code>·in·that·it·will·continue·to·scan·tokens·up793 scanned.·<code·class="inline">Cont</code>·is·initially·<code·class="inline">[]</code>.</p><p>This·functions·differs·from·<code·class="inline">token</code>·in·that·it·will·continue·to·scan·tokens·up
794 to·and·including·an·<code·class="inline">{end_token,Token}</code>·has·been·scanned·(see·next·section).·It794 to·and·including·an·<code·class="inline">{end_token,Token}</code>·has·been·scanned·(see·next·section).·It
795 will·then·return·all·the·tokens.·This·is·typically·used·for·scanning·grammars795 will·then·return·all·the·tokens.·This·is·typically·used·for·scanning·grammars
796 like·Erlang·where·there·is·an·explicit·end·token,·<code·class="inline">'.'</code>.·If·no·end·token·is796 like·Erlang·where·there·is·an·explicit·end·token,·<code·class="inline">'.'</code>.·If·no·end·token·is
797 found·then·the·whole·file·will·be·scanned·and·returned.·If·an·error·occurs·then797 found·then·the·whole·file·will·be·scanned·and·returned.·If·an·error·occurs·then
798 all·tokens·up·to·and·including·the·next·end·token·will·be·skipped.</p><p>It·is·not·designed·to·be·called·directly·by·an·application,·but·used·through·the798 all·tokens·up·to·and·including·the·next·end·token·will·be·skipped.</p><p>It·is·not·designed·to·be·called·directly·by·an·application,·but·used·through·the
799 I/O·system·where·it·can·typically·be·called·in·an·application·by:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="3920417745-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3920417745-2">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p">[·...·truncated·by·diffoscope;·len:·394,·SHA:·5f6fecfba27a8a3419aed649f8d62e5fec3b9d82c19ed160f576f8d8d3426969·...·]-1">)</span><span·class="w">799 I/O·system·where·it·can·typically·be·called·in·an·application·by:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">request</span><span·class="p"·data-group-id="5926651411-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5926651411-2">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p">[·...·truncated·by·diffoscope;·len:·394,·SHA:·15bd3d3114beb0b370f72a841132a3e444f798d67fbeacb307e5d3e898546cd6·...·]-1">)</span><span·class="w">
800 ··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">TokensRet</span></code></pre>800 ··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">TokensRet</span></code></pre>
801 ··</section>801 ··</section>
802 </section>802 </section>
  
803 ····</div>803 ····</div>
804 ··</section>804 ··</section>
  
135 KB
./usr/share/doc/erlang-doc/html/lib/parsetools-2.6/doc/html/parsetools.epub
2.06 KB
zipinfo {}
    
Offset 1, 14 lines modifiedOffset 1, 14 lines modified
1 Zip·file·size:·44441·bytes,·number·of·entries:·121 Zip·file·size:·44440·bytes,·number·of·entries:·12
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:48·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:07·mimetype
3 ?rw-r--r--··6.1·unx····61841·bx·defN·25-Feb-13·10:48·OEBPS/yecc.xhtml3 ?rw-r--r--··6.1·unx····61841·bx·defN·25-Feb-13·09:07·OEBPS/yecc.xhtml
4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·10:48·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Feb-13·09:07·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····31920·bx·defN·25-Feb-13·10:48·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx····31920·bx·defN·25-Feb-13·09:07·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx······987·bx·defN·25-Feb-13·10:48·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx······987·bx·defN·25-Feb-13·09:07·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····49472·bx·defN·25-Feb-13·10:48·OEBPS/leex.xhtml7 ?rw-r--r--··6.1·unx····49472·bx·defN·25-Feb-13·09:07·OEBPS/leex.xhtml
8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:48·OEBPS/dist/epub-erlang-ESPT6BQV.css8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:07·OEBPS/dist/epub-erlang-ESPT6BQV.css
9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:48·OEBPS/dist/epub-LSJCIYTM.js9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:07·OEBPS/dist/epub-LSJCIYTM.js
10 ?rw-r--r--··6.1·unx·····1463·bx·defN·25-Feb-13·10:48·OEBPS/content.opf10 ?rw-r--r--··6.1·unx·····1463·bx·defN·25-Feb-13·09:07·OEBPS/content.opf
11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:48·OEBPS/assets/logo.png11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:07·OEBPS/assets/logo.png
12 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:48·META-INF/container.xml12 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:07·META-INF/container.xml
13 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:48·META-INF/com.apple.ibooks.display-options.xml13 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:07·META-INF/com.apple.ibooks.display-options.xml
14 12·files,·167735·bytes·uncompressed,·42371·bytes·compressed:··74.7%14 12·files,·167735·bytes·uncompressed,·42370·bytes·compressed:··74.7%
68.7 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:48:08,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:07:44,·uncompressed·size·20,·method=store
49.2 KB
OEBPS/yecc.xhtml
Max HTML report size reached
13.5 KB
OEBPS/leex.xhtml
Max HTML report size reached
1.21 KB
OEBPS/content.opf
1.17 KB
OEBPS/content.opf
Max HTML report size reached
49.4 KB
./usr/share/doc/erlang-doc/html/lib/parsetools-2.6/doc/html/yecc.html
    
Offset 158, 16 lines modifiedOffset 158, 16 lines modified
158 <code·class="inline">{Category,·Position,·Symbol}</code>.</p><p>If·a·terminal·symbol·is·the·only·member·of·a·category,·and·the·symbol·name·is158 <code·class="inline">{Category,·Position,·Symbol}</code>.</p><p>If·a·terminal·symbol·is·the·only·member·of·a·category,·and·the·symbol·name·is
159 identical·to·the·category·name,·the·token·format·can·be·<code·class="inline">{Symbol,·Position}</code>.</p><p>A·list·of·tokens·produced·by·the·scanner·should·end·with·a·special159 identical·to·the·category·name,·the·token·format·can·be·<code·class="inline">{Symbol,·Position}</code>.</p><p>A·list·of·tokens·produced·by·the·scanner·should·end·with·a·special
160 <code·class="inline">end_of_input</code>·tuple·which·the·parser·is·looking·for.·The·format·of·this·tuple160 <code·class="inline">end_of_input</code>·tuple·which·the·parser·is·looking·for.·The·format·of·this·tuple
161 should·be·<code·class="inline">{Endsymbol,·EndPosition}</code>,·where·<code·class="inline">Endsymbol</code>·is·an·identifier·that·is161 should·be·<code·class="inline">{Endsymbol,·EndPosition}</code>,·where·<code·class="inline">Endsymbol</code>·is·an·identifier·that·is
162 distinguished·from·all·the·terminal·and·non-terminal·categories·of·the·syntax162 distinguished·from·all·the·terminal·and·non-terminal·categories·of·the·syntax
163 rules.·The·<code·class="inline">Endsymbol</code>·can·be·declared·in·the·grammar·file.</p><p>The·simplest·case·is·to·segment·the·input·string·into·a·list·of·identifiers163 rules.·The·<code·class="inline">Endsymbol</code>·can·be·declared·in·the·grammar·file.</p><p>The·simplest·case·is·to·segment·the·input·string·into·a·list·of·identifiers
164 (atoms)·and·use·those·atoms·both·as·categories·and·values·of·the·tokens.·For164 (atoms)·and·use·those·atoms·both·as·categories·and·values·of·the·tokens.·For
165 example,·the·input·string·<code·class="inline">aaa·bbb·777,·X</code>·may·be·scanned·(tokenized)·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7678994501-1">[</span><span·class="p"·data-group-id="7678994501-2">{</span><span·class="ss">aaa</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="7678994501-2">}</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·1016,·SHA:·2ad060818a9c518863f435f8f23a01c76c9dc10524752edd163d3290f9fb5fef·...·]-6">}</span><span·class="p">,</span><span·class="w">165 example,·the·input·string·<code·class="inline">aaa·bbb·777,·X</code>·may·be·scanned·(tokenized)·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5051839305-1">[</span><span·class="p"·data-group-id="5051839305-2">{</span><span·class="ss">aaa</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="5051839305-2">}</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·1016,·SHA:·118d822408fb34294d4ab6a4a0c42c13e6c5e479d1889d29b0468f4d1475f363·...·]-6">}</span><span·class="p">,</span><span·class="w">
166 ·</span><span·class="p"·data-group-id="7678994501-7">{</span><span·class="ss">&#39;$end&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="7678994501-7">}</span><span·class="p"·data-group-id="7678994501-1">]</span><span·class="p">.</span></code></pre><p>This·assumes·that·this·is·the·first·line·of·the·input·text,·and·that·<code·class="inline">'$end'</code>·is166 ·</span><span·class="p"·data-group-id="5051839305-7">{</span><span·class="ss">&#39;$end&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="5051839305-7">}</span><span·class="p"·data-group-id="5051839305-1">]</span><span·class="p">.</span></code></pre><p>This·assumes·that·this·is·the·first·line·of·the·input·text,·and·that·<code·class="inline">'$end'</code>·is
167 the·distinguished·<code·class="inline">end_of_input</code>·symbol.</p><p>The·Erlang·scanner·in·the·<code·class="inline">io</code>·module·can·be·used·as·a·starting·point·when167 the·distinguished·<code·class="inline">end_of_input</code>·symbol.</p><p>The·Erlang·scanner·in·the·<code·class="inline">io</code>·module·can·be·used·as·a·starting·point·when
168 writing·a·new·scanner.·Study·<code·class="inline">yeccscan.erl</code>·in·order·to·see·how·a·filter·can·be168 writing·a·new·scanner.·Study·<code·class="inline">yeccscan.erl</code>·in·order·to·see·how·a·filter·can·be
169 added·on·top·of·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#scan_erl_form/3"><code·class="inline">io:scan_erl_form/3</code></a>·to·provide·a·scanner·for·Yecc·that169 added·on·top·of·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#scan_erl_form/3"><code·class="inline">io:scan_erl_form/3</code></a>·to·provide·a·scanner·for·Yecc·that
170 tokenizes·grammar·files·before·parsing·them·with·the·Yecc·parser.·A·more·general170 tokenizes·grammar·files·before·parsing·them·with·the·Yecc·parser.·A·more·general
171 approach·to·scanner·implementation·is·to·use·a·scanner·generator·such·as171 approach·to·scanner·implementation·is·to·use·a·scanner·generator·such·as
172 <a·href="leex.html"><code·class="inline">leex</code></a>.</p><h2·id="module-grammar-definition-format"·class="section-heading">172 <a·href="leex.html"><code·class="inline">leex</code></a>.</p><h2·id="module-grammar-definition-format"·class="section-heading">
173 ··<a·href="#module-grammar-definition-format"·class="hover-link">173 ··<a·href="#module-grammar-definition-format"·class="hover-link">
Offset 229, 29 lines modifiedOffset 229, 29 lines modified
229 list·-&gt;·'('·')'.229 list·-&gt;·'('·')'.
230 list·-&gt;·'('·elements·')'.230 list·-&gt;·'('·elements·')'.
231 elements·-&gt;·element.231 elements·-&gt;·element.
232 elements·-&gt;·element·elements.232 elements·-&gt;·element·elements.
233 element·-&gt;·atom.233 element·-&gt;·atom.
234 element·-&gt;·list.</code></pre><p>This·grammar·can·be·used·to·generate·a·parser·which·parses·list·expressions,234 element·-&gt;·list.</code></pre><p>This·grammar·can·be·used·to·generate·a·parser·which·parses·list·expressions,
235 such·as·<code·class="inline">(),·(a),·(peter·charles),·(a·(b·c)·d·(())),·...</code>·provided·that·your235 such·as·<code·class="inline">(),·(a),·(peter·charles),·(a·(b·c)·d·(())),·...</code>·provided·that·your
236 scanner·tokenizes,·for·example,·the·input·<code·class="inline">(peter·charles)</code>·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4099363686-1">[</span><span·class="p"·data-group-id="4099363686-2">{</span><span·class="ss">&#39;(&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4099363686-2">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·920,·SHA:·e73e61128f10da206fbf407310755bc3cba03d9003ab4ab3e4d5df758e46b0f4·...·]-5">}</span><span·class="p">,</span><span·class="w">236 scanner·tokenizes,·for·example,·the·input·<code·class="inline">(peter·charles)</code>·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0871246399-1">[</span><span·class="p"·data-group-id="0871246399-2">{</span><span·class="ss">&#39;(&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0871246399-2">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·920,·SHA:·52963ddf8fb29b47e6ce1790675764801a757612f95fac197045c30b35712d83·...·]-5">}</span><span·class="p">,</span><span·class="w">
237 ·</span><span·class="p"·data-group-id="4099363686-6">{</span><span·class="ss">&#39;$end&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4099363686-6">}</span><span·class="p"·data-group-id="4099363686-1">]</span></code></pre><p>When·a·grammar·rule·is·used·by·the·parser·to·parse·(part·of)·the·input·string·as237 ·</span><span·class="p"·data-group-id="0871246399-6">{</span><span·class="ss">&#39;$end&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0871246399-6">}</span><span·class="p"·data-group-id="0871246399-1">]</span></code></pre><p>When·a·grammar·rule·is·used·by·the·parser·to·parse·(part·of)·the·input·string·as
238 a·grammatical·phrase,·the·associated·code·is·evaluated,·and·the·value·of·the238 a·grammatical·phrase,·the·associated·code·is·evaluated,·and·the·value·of·the
239 last·expression·becomes·the·value·of·the·parsed·phrase.·This·value·may·be·used239 last·expression·becomes·the·value·of·the·parsed·phrase.·This·value·may·be·used
240 by·the·parser·later·to·build·structures·that·are·values·of·higher·phrases·of240 by·the·parser·later·to·build·structures·that·are·values·of·higher·phrases·of
241 which·the·current·phrase·is·a·part.·The·values·initially·associated·with241 which·the·current·phrase·is·a·part.·The·values·initially·associated·with
242 terminal·category·phrases,·i.e.·input·tokens,·are·the·token·tuples·themselves.</p><p>Below·is·an·example·of·the·grammar·above·with·structure·building·code·added:</p><pre><code·class="text">list·-&gt;·'('·')'·:·nil.242 terminal·category·phrases,·i.e.·input·tokens,·are·the·token·tuples·themselves.</p><p>Below·is·an·example·of·the·grammar·above·with·structure·building·code·added:</p><pre><code·class="text">list·-&gt;·'('·')'·:·nil.
243 list·-&gt;·'('·elements·')'·:·'$2'.243 list·-&gt;·'('·elements·')'·:·'$2'.
244 elements·-&gt;·element·:·{cons,·'$1',·nil}.244 elements·-&gt;·element·:·{cons,·'$1',·nil}.
245 elements·-&gt;·element·elements·:·{cons,·'$1',·'$2'}.245 elements·-&gt;·element·elements·:·{cons,·'$1',·'$2'}.
246 element·-&gt;·atom·:·'$1'.246 element·-&gt;·atom·:·'$1'.
247 element·-&gt;·list·:·'$1'.</code></pre><p>With·this·code·added·to·the·grammar·rules,·the·parser·produces·the·following247 element·-&gt;·list·:·'$1'.</code></pre><p>With·this·code·added·to·the·grammar·rules,·the·parser·produces·the·following
248 value·(structure)·when·parsing·the·input·string·<code·class="inline">(a·b·c).</code>.·This·still·assumes248 value·(structure)·when·parsing·the·input·string·<code·class="inline">(a·b·c).</code>.·This·still·assumes
249 that·this·was·the·first·input·line·that·the·scanner·tokenized:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8893829952-1">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8893829952-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·567,·SHA:·8d2f83d00ef040d8905d0598f74b2d139e361f186119da1fc9356d8119812b17·...·]-4">}</span><span·class="p">,</span><span·class="w">249 that·this·was·the·first·input·line·that·the·scanner·tokenized:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0154084160-1">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0154084160-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·567,·SHA:·083f84e8ae373e93d3122e5e0599383748f716315d6b683139bcbfa4b5e235fb·...·]-4">}</span><span·class="p">,</span><span·class="w">
250 ····························</span><span·class="p"·data-group-id="8893829952-5">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8893829952-6">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·344,·SHA:·d25ebfd97e67ec3085a997f76d52c840a98ca7912eb08721807b528e47a0cd84·...·]-1">}</span></code></pre><p>The·associated·code·contains·<code·class="inline">pseudo·variables</code>·<code·class="inline">'$1'</code>,·<code·class="inline">'$2'</code>,250 ····························</span><span·class="p"·data-group-id="0154084160-5">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0154084160-6">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·344,·SHA:·2549c8e15729138e7c29df0098a4db944c3255dbdeec959a9268922197df9b50·...·]-1">}</span></code></pre><p>The·associated·code·contains·<code·class="inline">pseudo·variables</code>·<code·class="inline">'$1'</code>,·<code·class="inline">'$2'</code>,
251 <code·class="inline">'$3'</code>,·and·so·on.··which·refer·to·(are·bound·to)·the·values251 <code·class="inline">'$3'</code>,·and·so·on.··which·refer·to·(are·bound·to)·the·values
252 associated·previously·by·the·parser·with·the·symbols·of·the·right-hand252 associated·previously·by·the·parser·with·the·symbols·of·the·right-hand
253 side·of·the·rule.·When·these·symbols·are·terminal·categories,·the253 side·of·the·rule.·When·these·symbols·are·terminal·categories,·the
254 values·are·token·tuples·of·the·input·string·(see·above).</p><p>The·associated·code·may·not·only·be·used·to·build·structures254 values·are·token·tuples·of·the·input·string·(see·above).</p><p>The·associated·code·may·not·only·be·used·to·build·structures
255 associated·with·phrases,·but·may·also·be·used·for·syntactic·and255 associated·with·phrases,·but·may·also·be·used·for·syntactic·and
256 semantic·tests,·printout·actions·(for·example·for·tracing),·and·so·on256 semantic·tests,·printout·actions·(for·example·for·tracing),·and·so·on
257 during·the·parsing·process.·Since·tokens·contain·positional·(line257 during·the·parsing·process.·Since·tokens·contain·positional·(line
Offset 266, 37 lines modifiedOffset 266, 37 lines modified
266 element·-&gt;·atom·:·'$1'.266 element·-&gt;·atom·:·'$1'.
267 element·-&gt;·list·:·'$1'.</code></pre><h2·id="module-generating-a-parser"·class="section-heading">267 element·-&gt;·list·:·'$1'.</code></pre><h2·id="module-generating-a-parser"·class="section-heading">
268 ··<a·href="#module-generating-a-parser"·class="hover-link">268 ··<a·href="#module-generating-a-parser"·class="hover-link">
269 ····<i·class="ri-link-m"·aria-hidden="true"></i>269 ····<i·class="ri-link-m"·aria-hidden="true"></i>
270 ··</a>270 ··</a>
271 ··<span·class="text">Generating·a·Parser</span>271 ··<span·class="text">Generating·a·Parser</span>
272 </h2>272 </h2>
273 <p>To·call·the·parser·generator,·use·the·following·command:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">yecc</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="0994976358-1">(</span><span·class="n">Grammarfile</span><span·class="p"·data-group-id="0994976358-1">)</span><span·class="p">.</span></code></pre><p>An·error·message·from·Yecc·will·be·shown·if·the·grammar·is·not·of·the·LALR·type273 <p>To·call·the·parser·generator,·use·the·following·command:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">yecc</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="7456258618-1">(</span><span·class="n">Grammarfile</span><span·class="p"·data-group-id="7456258618-1">)</span><span·class="p">.</span></code></pre><p>An·error·message·from·Yecc·will·be·shown·if·the·grammar·is·not·of·the·LALR·type
274 (for·example·too·ambiguous).·Shift/reduce·conflicts·are·resolved·in·favor·of274 (for·example·too·ambiguous).·Shift/reduce·conflicts·are·resolved·in·favor·of
275 shifting·if·there·are·no·operator·precedence·declarations.·Refer·to·the·<code·class="inline">yacc</code>275 shifting·if·there·are·no·operator·precedence·declarations.·Refer·to·the·<code·class="inline">yacc</code>
276 documentation·on·the·use·of·operator·precedence.</p><p>The·output·file·contains·Erlang·source·code·for·a·parser·module·with·module·name276 documentation·on·the·use·of·operator·precedence.</p><p>The·output·file·contains·Erlang·source·code·for·a·parser·module·with·module·name
277 equal·to·the·<code·class="inline">Parserfile</code>·parameter.·After·compilation,·the·parser·can·be·called277 equal·to·the·<code·class="inline">Parserfile</code>·parameter.·After·compilation,·the·parser·can·be·called
278 as·follows·(the·module·name·is·assumed·to·be·<code·class="inline">myparser</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="5466584861-1">(</span><span·class="nc">myscanner</span><span·class="p">:</span><span·class="nf">scan</span><span·class="p"·data-group-id="5466584861-2">(</span><span·class="n">Inport</span><span·class="p"·data-group-id="5466584861-2">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·5bf6203e4e111edbb59fe1dacae7ac14d46b3c7248467d67d0307345f7696ddb·...·]-1">)</span></code></pre><p>The·call·format·can·be·different·if·a·customized·prologue·file·has·been·included278 as·follows·(the·module·name·is·assumed·to·be·<code·class="inline">myparser</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="3755413550-1">(</span><span·class="nc">myscanner</span><span·class="p">:</span><span·class="nf">scan</span><span·class="p"·data-group-id="3755413550-2">(</span><span·class="n">Inport</span><span·class="p"·data-group-id="3755413550-2">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·462f55906af050b01d0d52810e33f179d4c8a87b878acf6403e3a520de6b8d4d·...·]-1">)</span></code></pre><p>The·call·format·can·be·different·if·a·customized·prologue·file·has·been·included
279 when·generating·the·parser·instead·of·the·default·file279 when·generating·the·parser·instead·of·the·default·file
280 <code·class="inline">lib/parsetools/include/yeccpre.hrl</code>.</p><p>With·the·standard·prologue,·this·call·will·return·either·<code·class="inline">{ok,·Result}</code>,·where280 <code·class="inline">lib/parsetools/include/yeccpre.hrl</code>.</p><p>With·the·standard·prologue,·this·call·will·return·either·<code·class="inline">{ok,·Result}</code>,·where
281 <code·class="inline">Result</code>·is·a·structure·that·the·Erlang·code·of·the·grammar·file·has·built,·or281 <code·class="inline">Result</code>·is·a·structure·that·the·Erlang·code·of·the·grammar·file·has·built,·or
282 <code·class="inline">{error,·{Position,·Module,·Message}}</code>·if·there·was·a·syntax·error·in·the·input.</p><p><code·class="inline">Message</code>·is·something·which·may·be·converted·into·a·string·by·calling282 <code·class="inline">{error,·{Position,·Module,·Message}}</code>·if·there·was·a·syntax·error·in·the·input.</p><p><code·class="inline">Message</code>·is·something·which·may·be·converted·into·a·string·by·calling
283 <code·class="inline">Module:format_error(Message)</code>·and·printed·with·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>By·default,·the·parser·that·was·generated·will·not·print·out·error·messages·to283 <code·class="inline">Module:format_error(Message)</code>·and·printed·with·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>By·default,·the·parser·that·was·generated·will·not·print·out·error·messages·to
284 the·screen.·The·user·will·have·to·do·this·either·by·printing·the·returned284 the·screen.·The·user·will·have·to·do·this·either·by·printing·the·returned
285 error·messages,·or·by·inserting·tests·and·print·instructions·in·the·Erlang285 error·messages,·or·by·inserting·tests·and·print·instructions·in·the·Erlang
286 code·associated·with·the·syntax·rules·of·the·grammar·file.</p></section><p>It·is·also·possible·to·make·the·parser·ask·for·more·input·tokens·when·needed·if286 code·associated·with·the·syntax·rules·of·the·grammar·file.</p></section><p>It·is·also·possible·to·make·the·parser·ask·for·more·input·tokens·when·needed·if
287 the·following·call·format·is·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse_and_scan</span><span·class="p"·data-group-id="8411979589-1">(</span><span·class="p"·data-group-id="8411979589-2">{</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="8411979589-2">}</span><span·class="p"·data-group-id="8411979589-1">)</span><span·class="w"> 
288 </span><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse_and_scan</span><span·class="p"·data-group-id="8411979589-3">(</span><span·class="p"·data-group-id="8411979589-4">{</span><span·class="n">Mod</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·386,·SHA:·a524d22841302872ffa1d4aa320682e1be6b3aaeeb39a124943e156781e1c589·...·]287 the·following·call·format·is·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse_and_scan</span><span·class="p"·data-group-id="8880177764-1">(</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·258,·SHA:·05df338166b9a9749d053bb495055e04589dc7e8cc9e5261b0b02eadfe0f2f38·...·]
 288 </span><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse_and_scan</span><span·class="p"·data-group-id="8880177764-3">(</span><span·class="p"·data-group-id="8880177764-4">{</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tokenizer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="8880177764-4">}</span><span·class="p"·data-group-id="8880177764-3">)</span></code></pre><p>The·tokenizer·<code·class="inline">Function</code>·is·either·a·fun·or·a·tuple·<code·class="inline">{Mod,·Tokenizer}</code>.·The·call
289 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/2"><code·class="inline">apply(Function,·Args)</code></a>·or289 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/2"><code·class="inline">apply(Function,·Args)</code></a>·or
290 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/2"><code·class="inline">apply({Mod,·Tokenizer},·Args)</code></a>·is·executed·whenever·a·new·token·is290 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/2"><code·class="inline">apply({Mod,·Tokenizer},·Args)</code></a>·is·executed·whenever·a·new·token·is
291 needed.·This,·for·example,·makes·it·possible·to·parse·from·a·file,·token·by291 needed.·This,·for·example,·makes·it·possible·to·parse·from·a·file,·token·by
292 token.</p><p>The·tokenizer·used·above·has·to·be·implemented·so·as·to·return·one·of·the292 token.</p><p>The·tokenizer·used·above·has·to·be·implemented·so·as·to·return·one·of·the
293 following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8288598729-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tokens</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EndPosition</span><span·class="p"·data-group-id="8288598729-1">}</span><span·class="w">293 following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7242531464-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tokens</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EndPosition</span><span·class="p"·data-group-id="7242531464-1">}</span><span·class="w">
294 </span><span·class="p"·data-group-id="8288598729-2">{</span><span·class="ss">eof</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EndPosition</span><span·class="p"·data-group-id="8288598729-2">}</span><span·class="w">294 </span><span·class="p"·data-group-id="7242531464-2">{</span><span·class="ss">eof</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EndPosition</span><span·class="p"·data-group-id="7242531464-2">}</span><span·class="w">
295 </span><span·class="p"·data-group-id="8288598729-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error_description</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EndPosition</span><span·class="p"·data-group-id="8288[·...·truncated·by·diffoscope;·len:·6,·SHA:·183e98449ea7105737c1416a038b2edfda12ae81ceb0583d7329e35d9f1cad27·...·]-3">}</span></code></pre><p>This·conforms·to·the·format·used·by·the·scanner·in·the·Erlang·<code·class="inline">io</code>·library295 </span><span·class="p"·data-group-id="7242531464-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error_description</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EndPosition</span><span·class="p"·data-group-id="7242[·...·truncated·by·diffoscope;·len:·6,·SHA:·e0a7c73b19e94b4db298f527b6cda4c27443a9c0a788e32a414cb10562a87bdd·...·]-3">}</span></code></pre><p>This·conforms·to·the·format·used·by·the·scanner·in·the·Erlang·<code·class="inline">io</code>·library
296 module.</p><p>If·<code·class="inline">{eof,·EndPosition}</code>·is·returned·immediately,·the·call·to·<code·class="inline">parse_and_scan/1</code>296 module.</p><p>If·<code·class="inline">{eof,·EndPosition}</code>·is·returned·immediately,·the·call·to·<code·class="inline">parse_and_scan/1</code>
297 returns·<code·class="inline">{ok,·eof}</code>.·If·<code·class="inline">{eof,·EndPosition}</code>·is·returned·before·the·parser297 returns·<code·class="inline">{ok,·eof}</code>.·If·<code·class="inline">{eof,·EndPosition}</code>·is·returned·before·the·parser
298 expects·end·of·input,·<code·class="inline">parse_and_scan/1</code>·will,·of·course,·return·an·error298 expects·end·of·input,·<code·class="inline">parse_and_scan/1</code>·will,·of·course,·return·an·error
299 message·(see·above).·Otherwise·<code·class="inline">{ok,·Result}</code>·is·returned.</p><h2·id="module-more-examples"·class="section-heading">299 message·(see·above).·Otherwise·<code·class="inline">{ok,·Result}</code>·is·returned.</p><h2·id="module-more-examples"·class="section-heading">
300 ··<a·href="#module-more-examples"·class="hover-link">300 ··<a·href="#module-more-examples"·class="hover-link">
301 ····<i·class="ri-link-m"·aria-hidden="true"></i>301 ····<i·class="ri-link-m"·aria-hidden="true"></i>
302 ··</a>302 ··</a>
Offset 338, 44 lines modifiedOffset 338, 44 lines modified
338 </span><span·class="n">Terminals</span><span·class="w">338 </span><span·class="n">Terminals</span><span·class="w">
339 </span><span·class="ss">atom</span><span·class="w">·</span><span·class="nb">float</span><span·class="w">·</span><span·class="ss">integer</span><span·class="w">·</span><span·class="ss">reserved_symbol</span><span·class="w">·</span><span·class="ss">reserved_word</span><span·class="w">·</span><span·class="ss">string</span><span·class="w">·</span><span·class="ss">char</span><span·class="w">·</span><span·class="ss">var</span><span·class="w">339 </span><span·class="ss">atom</span><span·class="w">·</span><span·class="nb">float</span><span·class="w">·</span><span·class="ss">integer</span><span·class="w">·</span><span·class="ss">reserved_symbol</span><span·class="w">·</span><span·class="ss">reserved_word</span><span·class="w">·</span><span·class="ss">string</span><span·class="w">·</span><span·class="ss">char</span><span·class="w">·</span><span·class="ss">var</span><span·class="w">
340 </span><span·class="ss">&#39;-&gt;&#39;</span><span·class="w">·</span><span·class="ss">&#39;:&#39;</span><span·class="w">·</span><span·class="ss">dot</span><span·class="p">.</span><span·class="w">340 </span><span·class="ss">&#39;-&gt;&#39;</span><span·class="w">·</span><span·class="ss">&#39;:&#39;</span><span·class="w">·</span><span·class="ss">dot</span><span·class="p">.</span><span·class="w">
341 </span><span·class="n">Rootsymbol</span><span·class="w">·</span><span·class="ss">grammar</span><span·class="p">.</span><span·class="w">341 </span><span·class="n">Rootsymbol</span><span·class="w">·</span><span·class="ss">grammar</span><span·class="p">.</span><span·class="w">
342 </span><span·class="n">Endsymbol</span><span·class="w">·</span><span·class="ss">&#39;$end&#39;</span><span·class="p">.</span><span·class="w">342 </span><span·class="n">Endsymbol</span><span·class="w">·</span><span·class="ss">&#39;$end&#39;</span><span·class="p">.</span><span·class="w">
343 </span><span·class="ss">grammar</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">declaration</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">343 </span><span·class="ss">grammar</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">declaration</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
344 </span><span·class="ss">grammar</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">rule</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">344 </span><span·class="ss">grammar</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">rule</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
345 </span><span·class="ss">declaration</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="ss">symbols</span><span·class="w">·</span><span·class="nc">dot</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-1">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="8074166113-1">}</span><span·class="p">.</span><span·class="w">345 </span><span·class="ss">declaration</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="ss">symbols</span><span·class="w">·</span><span·class="nc">dot</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-1">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="0990965429-1">}</span><span·class="p">.</span><span·class="w">
346 </span><span·class="ss">rule</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">head</span><span·class="w">·</span><span·class="ss">&#39;-&gt;&#39;</span><span·class="w">·</span><span·class="ss">symbols</span><span·class="w">·</span><span·class="ss">attached_code</span><span·class="w">·</span><span·class="nc">dot</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-2">{</span><span·class="ss">rule</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·80,·SHA:·98a695bbe6d778bc76909b7c2402236b244e2449afabc37336d05d8f2be977d8·...·]-3">]</span><span·class="p">,</span><span·class="w">346 </span><span·class="ss">rule</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">head</span><span·class="w">·</span><span·class="ss">&#39;-&gt;&#39;</span><span·class="w">·</span><span·class="ss">symbols</span><span·class="w">·</span><span·class="ss">attached_code</span><span·class="w">·</span><span·class="nc">dot</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-2">{</span><span·class="ss">rule</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·80,·SHA:·9454f5d579b7d6bb5a9f9af4b1bb318f4684059df7465df1b66b069a783d6bb6·...·]-3">]</span><span·class="p">,</span><span·class="w">
347 ········</span><span·class="ss">&#39;$4&#39;</span><span·class="p"·data-group-id="8074166113-2">}</span><span·class="p">.</span><span·class="w">347 ········</span><span·class="ss">&#39;$4&#39;</span><span·class="p"·data-group-id="0990965429-2">}</span><span·class="p">.</span><span·class="w">
348 </span><span·class="ss">head</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">348 </span><span·class="ss">head</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
349 </span><span·class="ss">symbols</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-4">]</span><span·class="p">.</span><span·class="w">349 </span><span·class="ss">symbols</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-4">]</span><span·class="p">.</span><span·class="w">
350 </span><span·class="ss">symbols</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="ss">symbols</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-5">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="8074166113-5">]</span><span·class="p">.</span><span·class="w">350 </span><span·class="ss">symbols</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">symbol</span><span·class="w">·</span><span·class="ss">symbols</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-5">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="0990965429-5">]</span><span·class="p">.</span><span·class="w">
351 </span><span·class="ss">attached_code</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;:&#39;</span><span·class="w">·</span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-6">{</span><span·class="ss">erlang_code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="8074166113-6">}</span><span·class="p">.</span><span·class="w">351 </span><span·class="ss">attached_code</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;:&#39;</span><span·class="w">·</span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-6">{</span><span·class="ss">erlang_code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="0990965429-6">}</span><span·class="p">.</span><span·class="w">
352 </span><span·class="ss">attached_code</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;$empty&#39;</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-7">{</span><span·class="ss">erlang_code</span><span·class="p">,</span><span·class="w">352 </span><span·class="ss">attached_code</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;$empty&#39;</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-7">{</span><span·class="ss">erlang_code</span><span·class="p">,</span><span·class="w">
353 ·················</span><span·class="p"·data-group-id="8074166113-8">[</span><span·class="p"·data-group-id="8074166113-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$undefined[·...·truncated·by·diffoscope;·len:·159,·SHA:·81222110f9f8e03f320dab87dfcd715210abb26ff42d4a7a10e5e1d9dc6ecb94·...·]-7">}</span><span·class="p">.</span><span·class="w">353 ·················</span><span·class="p"·data-group-id="0990965429-8">[</span><span·class="p"·data-group-id="0990965429-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$undefined[·...·truncated·by·diffoscope;·len:·159,·SHA:·845d7179014e8f2a748746bfc11021f89d9edf1585021b4e61bce4adc47dc513·...·]-7">}</span><span·class="p">.</span><span·class="w">
354 </span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">token</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-10">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-10">]</span><span·class="p">.</span><span·class="w">354 </span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">token</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-10">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-10">]</span><span·class="p">.</span><span·class="w">
355 </span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">token</span><span·class="w">·</span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-11">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="8074166113-11">]</span><span·class="p">.</span><span·class="w">355 </span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">token</span><span·class="w">·</span><span·class="ss">tokens</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-11">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="0990965429-11">]</span><span·class="p">.</span><span·class="w">
356 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">var</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="8074166113-12">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-12">)</span><span·class="p">.</span><span·class="w">356 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">var</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0990965429-12">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-12">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">atom</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="8074166113-13">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-13">)</span><span·class="p">.</span><span·class="w">357 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">atom</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0990965429-13">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-13">)</span><span·class="p">.</span><span·class="w">
358 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">integer</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="8074166113-14">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-14">)</span><span·class="p">.</span><span·class="w">358 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">integer</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0990965429-14">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-14">)</span><span·class="p">.</span><span·class="w">
359 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">reserved_word</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="8074166113-15">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-15">)</span><span·class="p">.</span><span·class="w">359 </span><span·class="ss">symbol</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">reserved_word</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0990965429-15">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-15">)</span><span·class="p">.</span><span·class="w">
360 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">var</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">360 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">var</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
361 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">atom</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">361 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">atom</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
362 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nb">float</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">362 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nb">float</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
363 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">integer</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">363 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">integer</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
364 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">string</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">364 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">string</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
365 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">char</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">365 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">char</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p">.</span><span·class="w">
366 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">reserved_symbol</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-16">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="8074166113-17">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-17">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·18308a196fab1ba6dc7ae6003e4b9cd621d122b99737efacba152c3c84069abc·...·]-16">}</span><span·class="p">.</span><span·class="w">366 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">reserved_symbol</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-16">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0990965429-17">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-17">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·22002fc3201de1eb1dbcbf95b2f08a8c16e8653b4e864ef60d3b19f4f6eb5aee·...·]-16">}</span><span·class="p">.</span><span·class="w">
367 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">reserved_word</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-19">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="8074166113-20">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8074166113-20">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·c6142ef9a89e6f5f063b8bec6ae38a3a1dddc72705111f8f637ca554828e2c1d·...·]-19">}</span><span·class="p">.</span><span·class="w">367 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">reserved_word</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-19">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0990965429-20">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0990965429-20">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·34ed73251d1d066f73da78a142f8cde16c37733a67249fe5762414426c367b80·...·]-19">}</span><span·class="p">.</span><span·class="w">
368 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;-&gt;&#39;</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-22">{</span><span·class="ss">&#39;-&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">line_of</span><span·class="p"·data-group-id="8074166113-23">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·25a0d3a67acaadaf2c9026f029aab0722dd9f16aedd9a5df390e8b268541d2ad·...·]-22">}</span><span·class="p">.</span><span·class="w">368 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;-&gt;&#39;</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-22">{</span><span·class="ss">&#39;-&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">line_of</span><span·class="p"·data-group-id="0990965429-23">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·f9849a606a71f10a82d868ff6373475c8da6cc997c49f3094d9e788d4701d7b4·...·]-22">}</span><span·class="p">.</span><span·class="w">
369 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;:&#39;</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8074166113-24">{</span><span·class="ss">&#39;:&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">line_of</span><span·class="p"·data-group-id="8074166113-25">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·16940a8913c901b9e26bcb13c11daf1f183f8bbdcbe39e2f9048133f39eea25e·...·]-24">}</span><span·class="p">.</span><span·class="w">369 </span><span·class="ss">token</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;:&#39;</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0990965429-24">{</span><span·class="ss">&#39;:&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">line_of</span><span·class="p"·data-group-id="0990965429-25">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·9056c6b9a75a70f83c0f343a68b3d68800ad4bca4693f42ede250893e91a2003·...·]-24">}</span><span·class="p">.</span><span·class="w">
370 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">code</span><span·class="p">.</span><span·class="w">370 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">code</span><span·class="p">.</span><span·class="w">
371 </span><span·class="nf">value_of</span><span·class="p"·data-group-id="8074166113-26">(</span><span·class="n">Token</span><span·class="p"·data-group-id="8074166113-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">371 </span><span·class="nf">value_of</span><span·class="p"·data-group-id="0990965429-26">(</span><span·class="n">Token</span><span·class="p"·data-group-id="0990965429-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
372 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="8074166113-27">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Token</span><span·class="p"·data-group-id="8074166113-27">)</span><span·class="p">.</span><span·class="w">372 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="0990965429-27">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Token</span><span·class="p"·data-group-id="0990965429-27">)</span><span·class="p">.</span><span·class="w">
373 </span><span·class="nf">line_of</span><span·class="p"·data-group-id="8074166113-28">(</span><span·class="n">Token</span><span·class="p"·data-group-id="8074166113-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">373 </span><span·class="nf">line_of</span><span·class="p"·data-group-id="0990965429-28">(</span><span·class="n">Token</span><span·class="p"·data-group-id="0990965429-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
374 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="8074166113-29">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Token</span><span·class="p"·data-group-id="8074166113-29">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·symbols·<code·class="inline">'-&gt;'</code>,·and·<code·class="inline">':'</code>·have·to·be·treated·in·a·special·way,·as·they·are374 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="0990965429-29">(</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Token</span><span·class="p"·data-group-id="0990965429-29">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·symbols·<code·class="inline">'-&gt;'</code>,·and·<code·class="inline">':'</code>·have·to·be·treated·in·a·special·way,·as·they·are
375 meta·symbols·of·the·grammar·notation,·as·well·as·terminal·symbols·of·the·Yecc375 meta·symbols·of·the·grammar·notation,·as·well·as·terminal·symbols·of·the·Yecc
376 grammar.</p></section><p>5.·The·file·<code·class="inline">erl_parse.yrl</code>·in·the·<code·class="inline">lib/stdlib/src</code>·directory·contains·the376 grammar.</p></section><p>5.·The·file·<code·class="inline">erl_parse.yrl</code>·in·the·<code·class="inline">lib/stdlib/src</code>·directory·contains·the
377 grammar·for·Erlang.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Syntactic·tests·are·used·in·the·code·associated·with·some·rules,·and·an·error377 grammar·for·Erlang.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Syntactic·tests·are·used·in·the·code·associated·with·some·rules,·and·an·error
378 is·thrown·(and·caught·by·the·generated·parser·to·produce·an·error·message)378 is·thrown·(and·caught·by·the·generated·parser·to·produce·an·error·message)
Max diff block lines reached; 220/50398 bytes (0.44%) of diff not shown.
435 KB
./usr/share/doc/erlang-doc/html/lib/public_key-1.17.1/doc/html/public_key.epub
2.42 KB
zipinfo {}
    
Offset 1, 16 lines modifiedOffset 1, 16 lines modified
1 Zip·file·size:·99744·bytes,·number·of·entries:·141 Zip·file·size:·99733·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:29·mimetype
3 ?rw-r--r--··6.1·unx···125467·bx·defN·25-Feb-13·10:52·OEBPS/using_public_key.xhtml3 ?rw-r--r--··6.1·unx···125467·bx·defN·25-Feb-13·09:29·OEBPS/using_public_key.xhtml
4 ?rw-r--r--··6.1·unx······726·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······726·bx·defN·25-Feb-13·09:29·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····64574·bx·defN·25-Feb-13·10:52·OEBPS/public_key_records.xhtml5 ?rw-r--r--··6.1·unx····64574·bx·defN·25-Feb-13·09:29·OEBPS/public_key_records.xhtml
6 ?rw-r--r--··6.1·unx·····4198·bx·defN·25-Feb-13·10:52·OEBPS/public_key_app.xhtml6 ?rw-r--r--··6.1·unx·····4198·bx·defN·25-Feb-13·09:29·OEBPS/public_key_app.xhtml
7 ?rw-r--r--··6.1·unx···198860·bx·defN·25-Feb-13·10:52·OEBPS/public_key.xhtml7 ?rw-r--r--··6.1·unx···198860·bx·defN·25-Feb-13·09:29·OEBPS/public_key.xhtml
8 ?rw-r--r--··6.1·unx····82431·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····82431·bx·defN·25-Feb-13·09:29·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1240·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1240·bx·defN·25-Feb-13·09:29·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:29·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:29·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1854·bx·defN·25-Feb-13·10:52·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1854·bx·defN·25-Feb-13·09:29·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:29·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:29·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:29·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·500682·bytes·uncompressed,·97270·bytes·compressed:··80.6%16 14·files,·500682·bytes·uncompressed,·97259·bytes·compressed:··80.6%
82.1 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:06,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:29:14,·uncompressed·size·20,·method=store
207 KB
OEBPS/using_public_key.xhtml
Max HTML report size reached
95.9 KB
OEBPS/public_key_records.xhtml
Max HTML report size reached
46.0 KB
OEBPS/public_key.xhtml
Max HTML report size reached
1.25 KB
OEBPS/content.opf
1.22 KB
OEBPS/content.opf
Max HTML report size reached
46.2 KB
./usr/share/doc/erlang-doc/html/lib/public_key-1.17.1/doc/html/public_key.html
    
Offset 3187, 30 lines modifiedOffset 3187, 30 lines modified
3187 certificates·include·policies·the·constrained·policy·set·with3187 certificates·include·policies·the·constrained·policy·set·with
3188 potential·qualifiers·will·be·returned,·these·values·are·derived·from3188 potential·qualifiers·will·be·returned,·these·values·are·derived·from
3189 the·policy·tree·created·as·part·of·the·path·validation·algorithm.·The3189 the·policy·tree·created·as·part·of·the·path·validation·algorithm.·The
3190 constrained·set·can·be·constrained·only·by·the·Certificate·Authorities3190 constrained·set·can·be·constrained·only·by·the·Certificate·Authorities
3191 or·also·by·the·user·when·the·option·<code·class="inline">policy_set</code>·is·provided·to·this3191 or·also·by·the·user·when·the·option·<code·class="inline">policy_set</code>·is·provided·to·this
3192 function.·The·qualifiers·convey·information·about·the·valid·policy·and3192 function.·The·qualifiers·convey·information·about·the·valid·policy·and
3193 is·intended·as·information·to·end·users.</p><p>Available·options:</p><ul><li><p><strong>{verify_fun,·{fun(),·UserState::term()}</strong>·-·The·fun·must·be3193 is·intended·as·information·to·end·users.</p><p>Available·options:</p><ul><li><p><strong>{verify_fun,·{fun(),·UserState::term()}</strong>·-·The·fun·must·be
3194 defined·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="7238163666-1">(</span><span·class="n">OtpCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="72381[·...·truncated·by·diffoscope;·len:·58,·SHA:·886202e2dc584bc7c48ee9091a7a37ee6ecdd7a0c7eee564616dd1e931e65b25·...·]-2">}</span><span·class="p">,</span><span·class="w">3194 defined·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="1570236351-1">(</span><span·class="n">OtpCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="15702[·...·truncated·by·diffoscope;·len:·58,·SHA:·6d9ee1112612bf8252a016004439b274ee9c20ca44a6e3615745ab6e6437bc27·...·]-2">}</span><span·class="p">,</span><span·class="w">
3195 ····</span><span·class="n">Event</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7238163666-3">{</span><span·class="ss">bad_cert</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">bad_cert_rea[·...·truncated·by·diffoscope;·len:·548,·SHA:·9b047731647b2c60f2012a5309dea90069c052b1909aa3088cd80556a00bcf76·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3195 ····</span><span·class="n">Event</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="1570236351-3">{</span><span·class="ss">bad_cert</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">bad_cert_rea[·...·truncated·by·diffoscope;·len:·548,·SHA:·76be24a8a272ff43caaa946a499d73a77e6ae0e55363d2d8726dca1df99a6301·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3196 ·············</span><span·class="p"·data-group-id="7238163666-7">{</span><span·class="ss">extension</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="7238163666-8">{</span><span·class="p"·data-group-id="72[·...·truncated·by·diffoscope;·len:·61,·SHA:·b3e6369d431e65db11082d7b1a89cded49356a2dadea0e3a1a6ec74e706f00e9·...·]-7">}</span><span·class="p">,</span><span·class="w">3196 ·············</span><span·class="p"·data-group-id="1570236351-7">{</span><span·class="ss">extension</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="1570236351-8">{</span><span·class="p"·data-group-id="15[·...·truncated·by·diffoscope;·len:·61,·SHA:·6765993e528a7e236ea181781e76a39204d521fd64e3f3386342df0c75c247ae·...·]-7">}</span><span·class="p">,</span><span·class="w">
3197 ····</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="7238163666-9">(</span><span·class="p"·data-group-id="7238163666-9">)</span><span·class="p"·data-group-id="7238163666-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3197 ····</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="1570236351-9">(</span><span·class="p"·data-group-id="1570236351-9">)</span><span·class="p"·data-group-id="1570236351-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3198 ··</span><span·class="p"·data-group-id="7238163666-10">{</span><span·class="ss">valid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span>[·...·truncated·by·diffoscope;·len:·149,·SHA:·fd2eb4d5904b5d10e887cb8c65f26168e66427a70e4f7c4696385bc951893b5b·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3198 ··</span><span·class="p"·data-group-id="1570236351-10">{</span><span·class="ss">valid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span>[·...·truncated·by·diffoscope;·len:·149,·SHA:·64b2b5ce802e8eef8375a4d07b44ee11f5e4342743e58eb0d7bda2e59901b1fa·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3199 ··</span><span·class="p"·data-group-id="7238163666-12">{</span><span·class="ss">valid_peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</[·...·truncated·by·diffoscope;·len:·154,·SHA:·11aa451444787e7de305bf6d7cf0e7e908d80139415cb9c2a5d97214ea02958f·...·]-12">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3199 ··</span><span·class="p"·data-group-id="1570236351-12">{</span><span·class="ss">valid_peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</[·...·truncated·by·diffoscope;·len:·154,·SHA:·d7e0258597e072e09a5e288249812171ebd6c663e3cb670af5d50c5bf58e70cb·...·]-12">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3200 ··</span><span·class="p"·data-group-id="7238163666-14">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·481b64f5a2915151dd08187839842abd7765510ea25e6f56bfb983c2c8fb33be·...·]-14">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3200 ··</span><span·class="p"·data-group-id="1570236351-14">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·44e002adbc18ebb89a648dd0c612b44f16af0838ce6f91f2b4c4772a3f98a624·...·]-14">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3201 ··</span><span·class="p"·data-group-id="7238163666-16">{</span><span·class="ss">unknown</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</spa[·...·truncated·by·diffoscope;·len:·634,·SHA:·1de57c6a800c24a41064b04e9b49792c7d85bea48337c8c919971ff8457bc784·...·]-2">}</span><span·class="p">,</span><span·class="w">3201 ··</span><span·class="p"·data-group-id="1570236351-16">{</span><span·class="ss">unknown</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</spa[·...·truncated·by·diffoscope;·len:·634,·SHA:·bf0ecbe2e45bb238bfb30c96235a0987fd21ecf610b2f161d4fc50af7cf84d89·...·]-2">}</span><span·class="p">,</span><span·class="w">
3202 ····</span><span·class="n">DerCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">der_encoded</span><span·class="p"·data-group-id="7959201333-3">(</span><span·class="p"·data-group-id="7959201333-3">)</span><span·class="p">,</span><span·class="w">3202 ····</span><span·class="n">DerCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">der_encoded</span><span·class="p"·data-group-id="3666858897-3">(</span><span·class="p"·data-group-id="3666858897-3">)</span><span·class="p">,</span><span·class="w">
3203 ····</span><span·class="n">Event</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7959201333-4">{</span><span·class="ss">bad_cert</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">bad_cert_rea[·...·truncated·by·diffoscope;·len:·548,·SHA:·4224233f41119e933e1e5290b4ef46e67722e5d916307126087eb53ec13a97e4·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3203 ····</span><span·class="n">Event</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3666858897-4">{</span><span·class="ss">bad_cert</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">bad_cert_rea[·...·truncated·by·diffoscope;·len:·548,·SHA:·feed6284986c67277d86ca2f84a7638fb7ee1199be30258a49546867698abff1·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3204 ·············</span><span·class="p"·data-group-id="7959201333-8">{</span><span·class="ss">extension</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="7959201333-9">{</span><span·class="p"·data-group-id="79[·...·truncated·by·diffoscope;·len:·61,·SHA:·c72d4b2ca1bef05f0d62cc79e9b09a8145ed6d26cd614967981516048f02e5b2·...·]-8">}</span><span·class="p">,</span><span·class="w">3204 ·············</span><span·class="p"·data-group-id="3666858897-8">{</span><span·class="ss">extension</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="3666858897-9">{</span><span·class="p"·data-group-id="36[·...·truncated·by·diffoscope;·len:·61,·SHA:·ae7af6f5774a944c18c24a776e5bba71223d3d33c5f443b11b2ac8f49f92d854·...·]-8">}</span><span·class="p">,</span><span·class="w">
3205 ····</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="7959201333-10">(</span><span·class="p"·data-group-id="7959201333-10">)</span><span·class="p"·data-group-id="7959201333-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3205 ····</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="3666858897-10">(</span><span·class="p"·data-group-id="3666858897-10">)</span><span·class="p"·data-group-id="3666858897-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3206 ··</span><span·class="p"·data-group-id="7959201333-11">{</span><span·class="ss">valid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span>[·...·truncated·by·diffoscope;·len:·149,·SHA:·02b54061d7afc9bf92928765d42f6e84e0931f621908d2b3d284e44a74ed5b8b·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3206 ··</span><span·class="p"·data-group-id="3666858897-11">{</span><span·class="ss">valid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span>[·...·truncated·by·diffoscope;·len:·149,·SHA:·afc5694d2d356eb510ecfe6093966af8308034d9f9aa23a061a477012ba37140·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3207 ··</span><span·class="p"·data-group-id="7959201333-13">{</span><span·class="ss">valid_peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</[·...·truncated·by·diffoscope;·len:·154,·SHA:·888349c8094054d0aa723d950d9ddea5f609e5986ad0a84b755991507a30722e·...·]-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3207 ··</span><span·class="p"·data-group-id="3666858897-13">{</span><span·class="ss">valid_peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</[·...·truncated·by·diffoscope;·len:·154,·SHA:·3a6461ecba41b65da5acec849d7b2a12390bf172501ab44f88431e0a98593186·...·]-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3208 ··</span><span·class="p"·data-group-id="7959201333-15">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·09b69e433ae3d8657ea1f41f7ae82414d7c6fb4ed2755bdabea2d34962a95ad7·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3208 ··</span><span·class="p"·data-group-id="3666858897-15">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·b759c103fa4b5780d4584ba1a54aca58c1a209a98bae963ab439538a6e4d7046·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3209 ··</span><span·class="p"·data-group-id="7959201333-17">{</span><span·class="ss">unknown</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</spa[·...·truncated·by·diffoscope;·len:·151,·SHA:·90dd659e7aff18a1d43f7f3e6065a9cbd126cf9b21101a02bfa86426e85b59c8·...·]-17">}</span><span·class="p">.</span></code></pre><p>The·verify·callback·can·have·3·or·4·arguments·in·case·the·DER·encoded3209 ··</span><span·class="p"·data-group-id="3666858897-17">{</span><span·class="ss">unknown</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</spa[·...·truncated·by·diffoscope;·len:·151,·SHA:·c3ac44418d7da83138eacd0c7cc86df0449a0501fe3121a006cd3fc574e6a4cd·...·]-17">}</span><span·class="p">.</span></code></pre><p>The·verify·callback·can·have·3·or·4·arguments·in·case·the·DER·encoded
3210 version·is·needed·by·the·callback.</p><p>If·the·verify·callback·fun·returns·<code·class="inline">{fail,·Reason}</code>,·the·verification·process3210 version·is·needed·by·the·callback.</p><p>If·the·verify·callback·fun·returns·<code·class="inline">{fail,·Reason}</code>,·the·verification·process
3211 is·immediately·stopped.·If·the·verify·callback·fun·returns3211 is·immediately·stopped.·If·the·verify·callback·fun·returns
3212 <code·class="inline">{valid,·UserState}</code>,·the·verification·process·is·continued.·This·can·be·used3212 <code·class="inline">{valid,·UserState}</code>,·the·verification·process·is·continued.·This·can·be·used
3213 to·accept·specific·path·validation·errors,·such·as·<code·class="inline">selfsigned_peer</code>,·as·well3213 to·accept·specific·path·validation·errors,·such·as·<code·class="inline">selfsigned_peer</code>,·as·well
3214 as·verifying·application-specific·extensions.·If·called·with·an·extension3214 as·verifying·application-specific·extensions.·If·called·with·an·extension
3215 unknown·to·the·user·application,·the·return·value·<code·class="inline">{unknown,·UserState}</code>·is·to3215 unknown·to·the·user·application,·the·return·value·<code·class="inline">{unknown,·UserState}</code>·is·to
3216 be·used.</p><blockquote><h4·class="note">Note</h4><p>If·you·need·the·DER·encoded·version·of·the·certificate·and·have3216 be·used.</p><blockquote><h4·class="note">Note</h4><p>If·you·need·the·DER·encoded·version·of·the·certificate·and·have
Offset 3366, 17 lines modifiedOffset 3366, 17 lines modified
3366 certificate·is·in·agreement·with·at·least·one·of·the·<em>Reference·Identifier</em>·that3366 certificate·is·in·agreement·with·at·least·one·of·the·<em>Reference·Identifier</em>·that
3367 the·client·expects·to·be·connected·to.</p><p>The·function·is·intended·to·be·added·as·an·extra·client·check·of·the3367 the·client·expects·to·be·connected·to.</p><p>The·function·is·intended·to·be·added·as·an·extra·client·check·of·the
3368 peer·certificate·when·performing3368 peer·certificate·when·performing
3369 <a·href="#pkix_path_validation/3">public_key:pkix_path_validation/3</a></p><p>See·<a·href="https://tools.ietf.org/html/rfc6125">RFC·6125</a>·for·detailed·information3369 <a·href="#pkix_path_validation/3">public_key:pkix_path_validation/3</a></p><p>See·<a·href="https://tools.ietf.org/html/rfc6125">RFC·6125</a>·for·detailed·information
3370 about·hostname·verification.·The3370 about·hostname·verification.·The
3371 <a·href="using_public_key.html#verify_hostname">User's·Guide</a>·and3371 <a·href="using_public_key.html#verify_hostname">User's·Guide</a>·and
3372 <a·href="using_public_key.html#verify_hostname_examples">code·examples</a>·describes·this3372 <a·href="using_public_key.html#verify_hostname_examples">code·examples</a>·describes·this
3373 function·more·detailed.</p><p>The·option·funs·are·described·here:</p><ul><li><p><strong><code·class="inline">match_fun</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="8109309012-1">(</span><span·class="n">ReferenceId</span><span·class="p">:</span><span·class="p">:</span><span·class="n">ReferenceId</span><span·class="p"·data-group-id="8109309012-2">(</span><span·class="p"·data-group-id="8109309012-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">FQDN</span><span·class="p">:</span><span·class="p">:</span><span·class="nf">string</span><span·class="p"·data-group-id="8109309012-3">(</span><span·class="p"·data-group-id="8109309012-3">)</span><span·class="p">,</span><span·class="w"> 
3374 ····</span><span·class="n">PresentedId</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="8109309012-4">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="8109309012-5">(</span><span·class="p"·data-group-id="8109309012-5">)</span><span·class="p"·data-group-id="8109309012-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8109309012-6">{</span><span·class="ss">uniformResourceIdentifier</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="8109309012-7">(</span><span·class="p"·data-group-id="8109309012-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
3375 ·················</span><span·class="p"·data-group-id="8109309012-8">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="nf">list</span><span·class="p"·data-group-id="8109309012-9">(</span><span·class="nf">byte</span><span·class="[·...·truncated·by·diffoscope;·len:·1111,·SHA:·9ebf5374d20fd8a9cd3bb0f94e98f4346ede13bdf0e444eaafd36fd183c3f3d9·...·]3373 function·more·detailed.</p><p>The·option·funs·are·described·here:</p><ul><li><p><strong><code·class="inline">match_fun</code></strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="8572566384-1[·...·truncated·by·diffoscope;·len:·555,·SHA:·429a2b1d776b799032308d944d9c95dcaaf0d0a8734de656c636431f6ae99132·...·]
 3374 ····</span><span·class="n">PresentedId</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="8572566384-4">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="8572566384-5">(</span><span·class="p"·data-group-id="8572566384-5">)</span><span·class="p"·data-group-id="8572566384-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8572566384-6">{</span><span·class="ss">uniformResourceIdentifier</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="8572566384-7">(</span><span·class="p"·data-group-id="8572566384-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
 3375 ·················</span><span·class="p"·data-group-id="8572566384-8">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="nf">list</span><span·class="p"·data-group-id="8572566384-9">(</span><span·class="nf">byte</span><span·class="p"·data-group-id="8572566384-10">(</span><span·class="p"·data-group-id="8572566384-10">)</span><span·class="p"·data-group-id="8572566384-9">)</span><span·class="p"·data-group-id="8572566384-8">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8572566384-11">{</span><span·class="n">OtherId</span><span·class="p">:</span><span·class="p">:</span><span·class="nf">atom</span><span·class="p"·data-group-id="8572566384-12">(</span><span·class="p"·data-group-id="8572566384-12">)</span><span·class="p">|</span><span·class="nf">oid</span><span·class="p"·data-group-id="8572566384-13">(</span><span·class="p"·data-group-id="8572566384-13">)</span><span·class="p">,</span><span·class="nf">term</span><span·class="p"·data-group-id="8572566384-14">(</span><span·class="p"·data-group-id="8572566384-14">)</span><span·class="p"·data-group-id="8572566384-11">}</span><span·class="p"·data-group-id="8572566384-6">}</span><span·class="p"·data-group-id="8572566384-1">)</span></code></pre><p>This·function·replaces·the·default·host·name·matching·rules.·The·fun·should
3376 return·a·boolean·to·tell·if·the·Reference·ID·and·Presented·ID·matches·or·not.3376 return·a·boolean·to·tell·if·the·Reference·ID·and·Presented·ID·matches·or·not.
3377 The·match·fun·can·also·return·a·third·value,·value,·the·atom·<code·class="inline">default</code>,·if·the3377 The·match·fun·can·also·return·a·third·value,·value,·the·atom·<code·class="inline">default</code>,·if·the
3378 default·matching·rules·shall·apply.·This·makes·it·possible·to·augment·the3378 default·matching·rules·shall·apply.·This·makes·it·possible·to·augment·the
3379 tests·with·a·special·case:</p><pre><code·class="text">fun(....)·-&gt;·true;···%·My·special·case3379 tests·with·a·special·case:</p><pre><code·class="text">fun(....)·-&gt;·true;···%·My·special·case
3380 ···(_,·_)·-&gt;·default·%·all·others·falls·back·to·the·inherit·tests3380 ···(_,·_)·-&gt;·default·%·all·others·falls·back·to·the·inherit·tests
3381 end</code></pre><p>See·<a·href="#pkix_verify_hostname_match_fun/1"><code·class="inline">pkix_verify_hostname_match_fun/1</code></a>·for·a·function·that·takes·a·protocol3381 end</code></pre><p>See·<a·href="#pkix_verify_hostname_match_fun/1"><code·class="inline">pkix_verify_hostname_match_fun/1</code></a>·for·a·function·that·takes·a·protocol
3382 name·as·argument·and·returns·a·<code·class="inline">fun/2</code>·suitable·for·this·option·and3382 name·as·argument·and·returns·a·<code·class="inline">fun/2</code>·suitable·for·this·option·and
Offset 3560, 22 lines modifiedOffset 3560, 22 lines modified
3560 ····································revocation_status_undetermined·|3560 ····································revocation_status_undetermined·|
3561 ····································{revocation_status_undetermined,·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()}·|3561 ····································{revocation_status_undetermined,·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()}·|
3562 ····································{revoked,·<a·href="#t:crl_reason/0">crl_reason</a>()}.</pre>3562 ····································{revoked,·<a·href="#t:crl_reason/0">crl_reason</a>()}.</pre>
  
3563 ······</div>3563 ······</div>
  
3564 <p>Performs·CRL·validation.·It·is·intended·to·be·called·from·the·verify·fun·of3564 <p>Performs·CRL·validation.·It·is·intended·to·be·called·from·the·verify·fun·of
3565 <a·href="#pkix_path_validation/3">pkix_path_validation/3·</a>.</p><p>Available·options:</p><ul><li><p><strong>{update_crl,·fun()}</strong>·-·The·fun·has·the·following·type·specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6748645815-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="6748645815-2">{</span><span·class="p"·data-group-id="6748645815-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·215,·SHA:·e9a23eec7076eef65eb6a86994a6cf10a35f879e79e972c0007cce98d8a72b96·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3565 <a·href="#pkix_path_validation/3">pkix_path_validation/3·</a>.</p><p>Available·options:</p><ul><li><p><strong>{update_crl,·fun()}</strong>·-·The·fun·has·the·following·type·specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5571617388-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="5571617388-2">{</span><span·class="p"·data-group-id="5571617388-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·215,·SHA:·3ec63f6bc429537fd359741e319241af788fd1f353a0bd62ec5bf61423b203fa·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3566 ········</span><span·class="o">#</span><span·class="ss">&#39;CertificateList&#39;</span><span·class="p"·data-group-id="6748645815-4">{</span><span·class="p"·data-group-id="6748645815-4">}</span></code></pre><p>The·fun·uses·the·information·in·the·distribution·point·to·access·the·latest3566 ········</span><span·class="o">#</span><span·class="ss">&#39;CertificateList&#39;</span><span·class="p"·data-group-id="5571617388-4">{</span><span·class="p"·data-group-id="5571617388-4">}</span></code></pre><p>The·fun·uses·the·information·in·the·distribution·point·to·access·the·latest
3567 possible·version·of·the·CRL.·If·this·fun·is·not·specified,·Public·Key·uses·the3567 possible·version·of·the·CRL.·If·this·fun·is·not·specified,·Public·Key·uses·the
3568 default·implementation:</p><pre><code·class="text">·fun(_DP,·CRL)·-&gt;·CRL·end</code></pre></li><li><p><strong>{issuer_fun,·{fun(),·UserState::term()}}</strong>·-·The·fun·has·the·following·type3568 default·implementation:</p><pre><code·class="text">·fun(_DP,·CRL)·-&gt;·CRL·end</code></pre></li><li><p><strong>{issuer_fun,·{fun(),·UserState::term()}}</strong>·-·The·fun·has·the·following·type
3569 specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="2096105883-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="2096105883-2">{</span><span·class="p"·data-group-id="2096105883-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·c5e24d15988ebce861c7a8b19c3c05242cdb9f420404f749dbc9bae58fb444f6·...·]-3">}</span><span·class="p">,</span><span·class="w">3569 specification:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="9561278986-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="9561278986-2">{</span><span·class="p"·data-group-id="9561278986-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·0cdbf5346a866358016910e0c1ba4bf8d187f7be75165b092bfca511c5e5c579·...·]-3">}</span><span·class="p">,</span><span·class="w">
3570 ····</span><span·class="p"·data-group-id="2096105883-4">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="p"·data-group-id="2096105883-5">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2096105883-6[·...·truncated·by·diffoscope;·len:·472,·SHA:·659f2c68e5cff8f96d090da9065946e1589393188aecdcfa3d7e6ec5484ad14f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3570 ····</span><span·class="p"·data-group-id="9561278986-4">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="p"·data-group-id="9561278986-5">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9561278986-6[·...·truncated·by·diffoscope;·len:·472,·SHA:·4cf91403764a461a5142215b8833fa719320949af2f84033221c04f628ee1c51·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3571 ··</span><span·class="p"·data-group-id="2096105883-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="2096105883-9">{</span><span·class="p"·data-group-id="2096[·...·truncated·by·diffoscope;·len:·250,·SHA:·487c98d59df33855868e97bbc4292207c2f9cfa81382793ddaf9862d3900c91b·...·]-8">}</span></code></pre><p>The·fun·returns·the·root·certificate·and·certificate·chain·that·has·signed·the3571 ··</span><span·class="p"·data-group-id="9561278986-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="9561278986-9">{</span><span·class="p"·data-group-id="9561[·...·truncated·by·diffoscope;·len:·250,·SHA:·f376f46a6fddd9e434d494a0d4cc1492921814909066a6b9830772e45460ea71·...·]-8">}</span></code></pre><p>The·fun·returns·the·root·certificate·and·certificate·chain·that·has·signed·the
3572 CRL.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5022914745-1">(</span><span·class="n">DP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CRL</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Issuer</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·429,·SHA:·76a11911b938ce1eef8706e85f74078174817006ea6fae24300f09d6ca7874a8·...·]5-2">}</span></code></pre></li><li><p><strong>{undetermined_details,·boolean()}</strong>·-·Defaults·to·false.·When·revocation3572 CRL.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3608261325-1">(</span><span·class="n">DP</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CRL</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Issuer</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·429,·SHA:·9edbd503ab6d138d36f689a0723eaaaf3c9fa7d55b05d197787cc1aa9fe9e72c·...·]5-2">}</span></code></pre></li><li><p><strong>{undetermined_details,·boolean()}</strong>·-·Defaults·to·false.·When·revocation
3573 status·cannot·be·determined,·and·this·option·is·set·to·true,·details·of·why·no3573 status·cannot·be·determined,·and·this·option·is·set·to·true,·details·of·why·no
3574 CRLs·where·accepted·are·included·in·the·return·value.</p></li></ul>3574 CRLs·where·accepted·are·included·in·the·return·value.</p></li></ul>
3575 ··</section>3575 ··</section>
3576 </section>3576 </section>
3577 <section·class="detail"·id="pkix_dist_point/1">3577 <section·class="detail"·id="pkix_dist_point/1">
  
3578 ··<div·class="detail-header">3578 ··<div·class="detail-header">
Offset 3899, 26 lines modifiedOffset 3899, 26 lines modified
3899 certificate,·but·makes·the·certificate·useful·for·both·roles.</p><p>Explanation·of·the·options·used·to·customize·certificates·in·the·generated3899 certificate,·but·makes·the·certificate·useful·for·both·roles.</p><p>Explanation·of·the·options·used·to·customize·certificates·in·the·generated
3900 chains:</p><ul><li><p><strong>{digest,·digest_type()}</strong>·-·Hash·algorithm·to·be·used·for·signing·the3900 chains:</p><ul><li><p><strong>{digest,·digest_type()}</strong>·-·Hash·algorithm·to·be·used·for·signing·the
3901 certificate·together·with·the·key·option.·Defaults·to·sha·that·is·sha1.</p></li><li><p><strong>{key,··ec_params()|·{rsa,·Size:pos_integer(),·Prime::pos_integer()}·|·private_key()}</strong>·-·Parameters·to·be·used·to·call3901 certificate·together·with·the·key·option.·Defaults·to·sha·that·is·sha1.</p></li><li><p><strong>{key,··ec_params()|·{rsa,·Size:pos_integer(),·Prime::pos_integer()}·|·private_key()}</strong>·-·Parameters·to·be·used·to·call
3902 public_key:generate_key/1,·to·generate·a·key,·or·an·existing·key.·Defaults·to3902 public_key:generate_key/1,·to·generate·a·key,·or·an·existing·key.·Defaults·to
3903 generating·an·ECDSA·key.·Note·this·could·fail·if·Erlang/OTP·is·compiled·with·a3903 generating·an·ECDSA·key.·Note·this·could·fail·if·Erlang/OTP·is·compiled·with·a
3904 very·old·cryptolib.</p></li><li><p><strong>{validity,·{From::erlang:timestamp(),·To::erlang:timestamp()}}</strong>·-·The3904 very·old·cryptolib.</p></li><li><p><strong>{validity,·{From::erlang:timestamp(),·To::erlang:timestamp()}}</strong>·-·The
3905 validity·period·of·the·certificate.</p></li><li><p><strong>{extensions,·[#'Extension'{}]}</strong>·-·Extensions·to·include·in·the3905 validity·period·of·the·certificate.</p></li><li><p><strong>{extensions,·[#'Extension'{}]}</strong>·-·Extensions·to·include·in·the
3906 certificate.</p><p>Default·extensions·included·in·CA·certificates·if·not·otherwise·specified·are:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7481495821-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="7481495821-2">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-keyUsage&#39;</span><span·class="p">,</span><span·class="w">3906 certificate.</p><p>Default·extensions·included·in·CA·certificates·if·not·otherwise·specified·are:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1014368986-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="1014368986-2">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-keyUsage&#39;</span><span·class="p">,</span><span·class="w">
3907 ··············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7481495821-3">[</span><span·class="ss">keyCertSign</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cRLSign</span><span·class="p"·data-group-id="7481495821-3">]</span><span·class="p">,</span><span·class="w">3907 ··············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1014368986-3">[</span><span·class="ss">keyCertSign</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cRLSign</span><span·class="p"·data-group-id="1014368986-3">]</span><span·class="p">,</span><span·class="w">
3908 ··············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="7481495821-2">}</span><span·class="p">,</span><span·class="w">3908 ··············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="1014368986-2">}</span><span·class="p">,</span><span·class="w">
3909 </span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="7481495821-4">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-basicConstraints&#39;</span><span·class="p">,</span><span·class="w">3909 </span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="1014368986-4">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-basicConstraints&#39;</span><span·class="p">,</span><span·class="w">
3910 ·············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;BasicConstraints&#39;</span><span·class="p"·data-group-id="7481495821-5">{</span><span·class="ss">cA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="7481495821-5">}</span><span·class="p">,</span><span·class="w">3910 ·············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;BasicConstraints&#39;</span><span·class="p"·data-group-id="1014368986-5">{</span><span·class="ss">cA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1014368986-5">}</span><span·class="p">,</span><span·class="w">
3911 ·············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="7481495821-4">}</span><span·class="p"·data-group-id="7481495821-1">]</span></code></pre><p>Default·extensions·included·in·the·server·peer·cert·if·not·otherwise·specified3911 ·············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1014368986-4">}</span><span·class="p"·data-group-id="1014368986-1">]</span></code></pre><p>Default·extensions·included·in·the·server·peer·cert·if·not·otherwise·specified
3912 are:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1773743643-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="1773743643-2">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-keyUsage&#39;</span><span·class="p">,</span><span·class="w">3912 are:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4170499880-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="4170499880-2">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-keyUsage&#39;</span><span·class="p">,</span><span·class="w">
3913 ··············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1773743643-3">[</span><span·class="ss">digitalSignature</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">keyAgreement</span><span·class="p"·data-group-id="1773743643-3">]</span><span·class="p">,</span><span·class="w">3913 ··············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4170499880-3">[</span><span·class="ss">digitalSignature</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">keyAgreement</span><span·class="p"·data-group-id="4170499880-3">]</span><span·class="p">,</span><span·class="w">
3914 ··············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="1773743643-2">}</span><span·class="p">,</span><span·class="w">3914 ··············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="4170499880-2">}</span><span·class="p">,</span><span·class="w">
3915 </span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="1773743643-4">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-subjectAltName&#39;</span><span·class="p">,</span><span·class="w">3915 </span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="4170499880-4">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-subjectAltName&#39;</span><span·class="p">,</span><span·class="w">
3916 ·············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1773743643-5">[</span><span·class="p"·data-group-id="1773743643-6">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Hostname</span><span·class="p"·data-group-id="1773743643-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·b47cbc9ab433da0c902731c7b6dbd559c04b8aa3d0a2fe56d4d15adbbe1cde61·...·]-5">]</span><span·class="p">,</span><span·class="w">3916 ·············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4170499880-5">[</span><span·class="p"·data-group-id="4170499880-6">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Hostname</span><span·class="p"·data-group-id="4170499880-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·c26c7d4e1894c845b0fff22569e13a2303c94a409f5e4dd57f0990770e048213·...·]-5">]</span><span·class="p">,</span><span·class="w">
3917 ·············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="1773743643-4">}</span><span·class="p"·data-group-id="1773743643-1">]</span></code></pre><p>Hostname·is·the·result·of·calling·net_adm:localhost()·in·the·Erlang·node·where3917 ·············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="4170499880-4">}</span><span·class="p"·data-group-id="4170499880-1">]</span></code></pre><p>Hostname·is·the·result·of·calling·net_adm:localhost()·in·the·Erlang·node·where
3918 this·function·is·called.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Note·that·the·generated·certificates·and·keys·does·not·provide·a·formally3918 this·function·is·called.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Note·that·the·generated·certificates·and·keys·does·not·provide·a·formally
3919 correct·PKIX-trust-chain·and·they·cannot·be·used·to·achieve·real·security.3919 correct·PKIX-trust-chain·and·they·cannot·be·used·to·achieve·real·security.
3920 This·function·is·provided·for·testing·purposes·only.</p></section>3920 This·function·is·provided·for·testing·purposes·only.</p></section>
3921 ··</section>3921 ··</section>
3922 </section>3922 </section>
3923 <section·class="detail"·id="pkix_test_root_cert/2">3923 <section·class="detail"·id="pkix_test_root_cert/2">
  
96.2 KB
./usr/share/doc/erlang-doc/html/lib/public_key-1.17.1/doc/html/public_key_records.html
    
Offset 125, 428 lines modifiedOffset 125, 428 lines modified
125 ····<span>Public-Key·Records</span>125 ····<span>Public-Key·Records</span>
126 ··</h1>126 ··</h1>
  
127 <p>This·chapter·briefly·describes·Erlang·records·derived·from·ASN.1·specifications127 <p>This·chapter·briefly·describes·Erlang·records·derived·from·ASN.1·specifications
128 used·to·handle·public·key·infrastructure.·The·scope·is·to·describe·the·data128 used·to·handle·public·key·infrastructure.·The·scope·is·to·describe·the·data
129 types·of·each·component,·not·the·semantics.·For·information·on·the·semantics,129 types·of·each·component,·not·the·semantics.·For·information·on·the·semantics,
130 refer·to·the·relevant·standards·and·RFCs·linked·in·the·sections·below.</p><p>Use·the·following·include·directive·to·get·access·to·the·records·and·constant130 refer·to·the·relevant·standards·and·RFCs·linked·in·the·sections·below.</p><p>Use·the·following·include·directive·to·get·access·to·the·records·and·constant
131 macros·described·in·the·following·sections:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4666833424-1">(</span><span·class="s">&quot;public_key/include/public_key.hrl&quot;</span><span·class="p"·data-group-id="4666833424-1">)</span><span·class="p">.</span></code></pre><h2·id="data-types"·class="section-heading">131 macros·described·in·the·following·sections:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1754572029-1">(</span><span·class="s">&quot;public_key/include/public_key.hrl&quot;</span><span·class="p"·data-group-id="1754572029-1">)</span><span·class="p">.</span></code></pre><h2·id="data-types"·class="section-heading">
132 ··<a·href="#data-types"·class="hover-link">132 ··<a·href="#data-types"·class="hover-link">
133 ····<i·class="ri-link-m"·aria-hidden="true"></i>133 ····<i·class="ri-link-m"·aria-hidden="true"></i>
134 ··</a>134 ··</a>
135 ··<span·class="text">Data·Types</span>135 ··<span·class="text">Data·Types</span>
136 </h2>136 </h2>
137 <p>Common·non-standard·Erlang·data·types·used·to·describe·the·record·fields·in·the137 <p>Common·non-standard·Erlang·data·types·used·to·describe·the·record·fields·in·the
138 following·sections·and·which·are·not·defined·in·the·Public·Key138 following·sections·and·which·are·not·defined·in·the·Public·Key
139 <a·href="public_key.html">Reference·Manual</a>·follows·here:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">time</span><span·class="p"·data-group-id="8799071023-1">(</span><span·class="p"·data-group-id="8799071023-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">utc_time</span><span·class="p"·data-group-id="8799071023-2">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·231,·SHA:·9dae97ce50322b2633cf50ad1d4df754c0f6e082d33393ed786821c27c0a8eed·...·]-3">)</span><span·class="w">139 <a·href="public_key.html">Reference·Manual</a>·follows·here:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">time</span><span·class="p"·data-group-id="4226847935-1">(</span><span·class="p"·data-group-id="4226847935-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">utc_time</span><span·class="p"·data-group-id="4226847935-2">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·231,·SHA:·72e65973a27b4de8a5c3baa0d44ea1efa3b567c79ce02134d68f54abb698756e·...·]-3">)</span><span·class="w">
  
140 </span><span·class="nf">utc_time</span><span·class="p"·data-group-id="8799071023-4">(</span><span·class="p"·data-group-id="8799071023-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8799071023-5">{</span><span·class="ss">utcTime</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·113,·SHA:·62e66b661d2c416e7bb01d5b62a0ceabbed19466a8fdc83b4e2001b240882e15·...·]-5">}</span><span·class="w">140 </span><span·class="nf">utc_time</span><span·class="p"·data-group-id="4226847935-4">(</span><span·class="p"·data-group-id="4226847935-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4226847935-5">{</span><span·class="ss">utcTime</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·113,·SHA:·7ef204d748236b6c468c3c23a5070ff1474d31dbbfe25b48525bde0f9c506445·...·]-5">}</span><span·class="w">
  
141 </span><span·class="nf">general_time</span><span·class="p"·data-group-id="8799071023-6">(</span><span·class="p"·data-group-id="8799071023-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8799071023-7">{</span><span·class="ss">generalTime</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·118,·SHA:·e006b85587b8222d377a5c8ef1b2976bc561358158d1f4dce3f7fa306fad6863·...·]-7">}</span><span·class="w">141 </span><span·class="nf">general_time</span><span·class="p"·data-group-id="4226847935-6">(</span><span·class="p"·data-group-id="4226847935-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4226847935-7">{</span><span·class="ss">generalTime</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·118,·SHA:·332ec509fe02d8cf86a13d62b18cf331eb417c1ea65f057ffe4a69e16e98e018·...·]-7">}</span><span·class="w">
  
142 </span><span·class="nf">general_name</span><span·class="p"·data-group-id="8799071023-8">(</span><span·class="p"·data-group-id="8799071023-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8799071023-9">{</span><span·class="ss">rfc822Name</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·205,·SHA:·16a4eed6595c9b2343e3243298a1d3b67ed5443c42cd893438c00f127d5008d9·...·]-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">142 </span><span·class="nf">general_name</span><span·class="p"·data-group-id="4226847935-8">(</span><span·class="p"·data-group-id="4226847935-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4226847935-9">{</span><span·class="ss">rfc822Name</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·205,·SHA:·919eeefb433eff8741838ff1dd7db7b8a4174f563497a5c0b3a1f83da66ab1c5·...·]-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
143 ·················</span><span·class="p"·data-group-id="8799071023-11">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8799071023-12">(</span><span·class="p"·data-group-id="8799071023-12">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·d46f75868362f5eb8a441f0b97ca27db83a46627072b0df465e82d54d61040bb·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">143 ·················</span><span·class="p"·data-group-id="4226847935-11">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="4226847935-12">(</span><span·class="p"·data-group-id="4226847935-12">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·6723102d5dd598b755a1da16f18f07c39a75d156b4d639996a7768cdc99e9a7e·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
144 ·················</span><span·class="p"·data-group-id="8799071023-13">{</span><span·class="ss">x400Address</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8799071023-14">(</span><span·class="p"·data-group-id="8799071023-14">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">144 ·················</span><span·class="p"·data-group-id="4226847935-13">{</span><span·class="ss">x400Address</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="4226847935-14">(</span><span·class="p"·data-group-id="4226847935-14">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
145 ·················</span><span·class="p"·data-group-id="8799071023-15">{</span><span·class="ss">directoryName</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8799071023-16">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·379,·SHA:·11cdacdfb69ef99a33fdd773f3ce79be8eacf3dee074f6086b36c86e3cf78a83·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">145 ·················</span><span·class="p"·data-group-id="4226847935-15">{</span><span·class="ss">directoryName</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4226847935-16">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·379,·SHA:·9738d14023384b29397e5d1d4e552c32e5abec93c52b7fffc3815c529821d926·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
146 ·················</span><span·class="p"·data-group-id="8799071023-19">{</span><span·class="ss">ediPartyName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">special_string</span><span·class="p"·data-group-id="8799071023-20">(</span><span·class="p"·data-group-id="8799071023-20">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d1ac5e6782bb5acb548a980afac82c002be8045ce1fe4a26b37d09ca1223b351·...·]-19">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">146 ·················</span><span·class="p"·data-group-id="4226847935-19">{</span><span·class="ss">ediPartyName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">special_string</span><span·class="p"·data-group-id="4226847935-20">(</span><span·class="p"·data-group-id="4226847935-20">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·ccac23991b3945f568c76049290a67b2f37e3f596acaedc8c71708f223d2d81e·...·]-19">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
147 ·················</span><span·class="p"·data-group-id="8799071023-21">{</span><span·class="ss">ediPartyName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">special_string</span><span·class="p"·data-group-id="8799071023-22">(</span><span·class="p"·data-group-id="8799071023-22">)</span><sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·2a38ba32109fa985f3395b66190a8e1698a94e34998aac61fd316cc5236dfe4f·...·]-21">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">147 ·················</span><span·class="p"·data-group-id="4226847935-21">{</span><span·class="ss">ediPartyName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">special_string</span><span·class="p"·data-group-id="4226847935-22">(</span><span·class="p"·data-group-id="4226847935-22">)</span><sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·1c01c8b95a435c9505262b660ba40396dfb15c86bb40d51bc2df4096959c6170·...·]-21">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
148 ·················</span><span·class="p"·data-group-id="8799071023-24">{</span><span·class="ss">uniformResourceIdentifier</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8799071023-25">(</span><span·class="p"·data-group-id="8799071023-25">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·ac7c72d74be1c826ab8cadec0e8e1138b58d7769431fc94ae182870985c0b28a·...·]-24">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">148 ·················</span><span·class="p"·data-group-id="4226847935-24">{</span><span·class="ss">uniformResourceIdentifier</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="4226847935-25">(</span><span·class="p"·data-group-id="4226847935-25">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·72dce05cafdb7c38271fb937fcc3407b1cdd65d27ccf0e3e349a64238b280359·...·]-24">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
149 ·················</span><span·class="p"·data-group-id="8799071023-26">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8799071023-27">(</span><span·class="p"·data-group-id="8799071023-27">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·761b717f91ed5a7a7fc6ad4f1bc905dca06efcccc9691c792a3e666defd354b9·...·]-26">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">149 ·················</span><span·class="p"·data-group-id="4226847935-26">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="4226847935-27">(</span><span·class="p"·data-group-id="4226847935-27">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·bd2d6f687e445b7e90ca10937e8a819b091994a4192eacef316a4b189b83085d·...·]-26">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
150 ·················</span><span·class="p"·data-group-id="8799071023-28">{</span><span·class="ss">registeredId</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">oid</span><span·class="p"·data-group-id="8799071023-29">(</span><span·class="p"·data-group-id="8799071023-29">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·761b717f91ed5a7a7fc6ad4f1bc905dca06efcccc9691c792a3e666defd354b9·...·]-28">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">150 ·················</span><span·class="p"·data-group-id="4226847935-28">{</span><span·class="ss">registeredId</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">oid</span><span·class="p"·data-group-id="4226847935-29">(</span><span·class="p"·data-group-id="4226847935-29">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·bd2d6f687e445b7e90ca10937e8a819b091994a4192eacef316a4b189b83085d·...·]-28">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
151 ·················</span><span·class="p"·data-group-id="8799071023-30">{</span><span·class="ss">otherName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="8799071023-31">(</span><span·class="p"·data-group-id="8799071023-31">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·d46f75868362f5eb8a441f0b97ca27db83a46627072b0df465e82d54d61040bb·...·]-30">}</span><span·class="w">151 ·················</span><span·class="p"·data-group-id="4226847935-30">{</span><span·class="ss">otherName</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4226847935-31">(</span><span·class="p"·data-group-id="4226847935-31">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·6723102d5dd598b755a1da16f18f07c39a75d156b4d639996a7768cdc99e9a7e·...·]-30">}</span><span·class="w">
  
152 </span><span·class="nf">special_string</span><span·class="p"·data-group-id="8799071023-32">(</span><span·class="p"·data-group-id="8799071023-32">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8799071023-33">{</span><span·class="ss">teletexString</span><span·class="p">[·...·truncated·by·diffoscope;·len:·211,·SHA:·143a93eeac4831c2a482671f7fc199a8eaf3aae991b15f548785cb2050e9e8d1·...·]-33">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">152 </span><span·class="nf">special_string</span><span·class="p"·data-group-id="4226847935-32">(</span><span·class="p"·data-group-id="4226847935-32">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4226847935-33">{</span><span·class="ss">teletexString</span><span·class="p">[·...·truncated·by·diffoscope;·len:·211,·SHA:·51e6a3ee16fc4d186b341214004c16ac9d3e3bd46466827021b29f0469f136c3·...·]-33">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
153 ·153 ·
154 ···················</span><span·class="p"·data-group-id="8799071023-35">{</span><span·class="ss">printableString</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8799071023-36">(</span><span·class="p"·data-group-id="8799071023-36">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·d3680efe12752c4e67166a9974e571c7cc48f4520f0e7ec0404d389e45d750f2·...·]-35">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">154 ···················</span><span·class="p"·data-group-id="4226847935-35">{</span><span·class="ss">printableString</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="4226847935-36">(</span><span·class="p"·data-group-id="4226847935-36">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·c77f81249783129e50fc0ce6c7eb10a59b7a57a889d1e1ba8aefb1cc5e1ae714·...·]-35">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
155 ···················</span><span·class="p"·data-group-id="8799071023-37">{</span><span·class="ss">universalString</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8799071023-38">(</span><span·class="p"·data-group-id="8799071023-38">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·d3680efe12752c4e67166a9974e571c7cc48f4520f0e7ec0404d389e45d750f2·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">155 ···················</span><span·class="p"·data-group-id="4226847935-37">{</span><span·class="ss">universalString</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="4226847935-38">(</span><span·class="p"·data-group-id="4226847935-38">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·c77f81249783129e50fc0ce6c7eb10a59b7a57a889d1e1ba8aefb1cc5e1ae714·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
156 ···················</span><span·class="p"·data-group-id="8799071023-39">{</span><span·class="ss">utf8String</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="8799071023-40">(</span><span·class="p"·data-group-id="8799071023-40">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·965cfcbca5e4489c0daeaf41e289047db46150e9f45bb5e312f011026f05ff39·...·]-39">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">156 ···················</span><span·class="p"·data-group-id="4226847935-39">{</span><span·class="ss">utf8String</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="4226847935-40">(</span><span·class="p"·data-group-id="4226847935-40">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·55309a9a0d446edf54cc25e926f297ba0c1366c8e36e5ae4ae4dbcb3a73dfc9e·...·]-39">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
157 ···················</span><span·class="p"·data-group-id="8799071023-41">{</span><span·class="ss">bmpString</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="8799071023-42">(</span><span·class="p"·data-group-id="8799071023-42">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·761b717f91ed5a7a7fc6ad4f1bc905dca06efcccc9691c792a3e666defd354b9·...·]-41">}</span><span·class="w">157 ···················</span><span·class="p"·data-group-id="4226847935-41">{</span><span·class="ss">bmpString</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="4226847935-42">(</span><span·class="p"·data-group-id="4226847935-42">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·bd2d6f687e445b7e90ca10937e8a819b091994a4192eacef316a4b189b83085d·...·]-41">}</span><span·class="w">
  
158 </span><span·class="nf">dist_reason</span><span·class="p"·data-group-id="8799071023-43">(</span><span·class="p"·data-group-id="8799071023-43">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">unused</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">keyCompromise</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">cACompromise</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">affiliationChanged</span><span·class="w">·</span><span·class="p">|</span><span·class="w">158 </span><span·class="nf">dist_reason</span><span·class="p"·data-group-id="4226847935-43">(</span><span·class="p"·data-group-id="4226847935-43">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">unused</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">keyCompromise</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">cACompromise</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">affiliationChanged</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
159 ················</span><span·class="ss">cessationOfOperation</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">certificateHold</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">privilegeWithdrawn</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">aACompromise</span><span·class="w">159 ················</span><span·class="ss">cessationOfOperation</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">certificateHold</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">privilegeWithdrawn</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">aACompromise</span><span·class="w">
  
160 </span><span·class="n">OID_macro</span><span·class="p"·data-group-id="8799071023-44">(</span><span·class="p"·data-group-id="8799071023-44">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">OID_name</span><span·class="p"·data-group-id="8799071023-45">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·ac7c72d74be1c826ab8cadec0e8e1138b58d7769431fc94ae182870985c0b28a·...·]-45">)</span><span·class="w">160 </span><span·class="n">OID_macro</span><span·class="p"·data-group-id="4226847935-44">(</span><span·class="p"·data-group-id="4226847935-44">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">OID_name</span><span·class="p"·data-group-id="4226847935-45">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·72dce05cafdb7c38271fb937fcc3407b1cdd65d27ccf0e3e349a64238b280359·...·]-45">)</span><span·class="w">
  
161 </span><span·class="n">OID_name</span><span·class="p"·data-group-id="8799071023-46">(</span><span·class="p"·data-group-id="8799071023-46">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="8799071023-47">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·772ec8660a50cfb97b7f9c7a616b2232a9d6d940bdd320ff354a22d739f2a889·...·]-47">)</span></code></pre><h2·id="rsa"·class="section-heading">161 </span><span·class="n">OID_name</span><span·class="p"·data-group-id="4226847935-46">(</span><span·class="p"·data-group-id="4226847935-46">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="4226847935-47">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·60be53aaeb400eabd7c7013bf6d32e5ad756a8cc62d066b9c5c0734e7c2d05b7·...·]-47">)</span></code></pre><h2·id="rsa"·class="section-heading">
162 ··<a·href="#rsa"·class="hover-link">162 ··<a·href="#rsa"·class="hover-link">
163 ····<i·class="ri-link-m"·aria-hidden="true"></i>163 ····<i·class="ri-link-m"·aria-hidden="true"></i>
164 ··</a>164 ··</a>
165 ··<span·class="text">RSA</span>165 ··<span·class="text">RSA</span>
166 </h2>166 </h2>
167 <p>Erlang·representation·of167 <p>Erlang·representation·of
168 <a·href="http://www.ietf.org/rfc/rfc3447.txt">Rivest-Shamir-Adleman·cryptosystem·(RSA)</a>168 <a·href="http://www.ietf.org/rfc/rfc3447.txt">Rivest-Shamir-Adleman·cryptosystem·(RSA)</a>
169 keys·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">&#39;RSAPublicKey&#39;</span><span·class="p"·data-group-id="5197795423-1">{</span><span·class="w">169 keys·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">&#39;RSAPublicKey&#39;</span><span·class="p"·data-group-id="9188012785-1">{</span><span·class="w">
170 ···</span><span·class="ss">modulus</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·pos_integer()</span><span·class="w">170 ···</span><span·class="ss">modulus</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·pos_integer()</span><span·class="w">
171 ···</span><span·class="ss">publicExponent</span><span·class="w">·</span><span·class="c1">%·pos_integer()</span><span·class="w">171 ···</span><span·class="ss">publicExponent</span><span·class="w">·</span><span·class="c1">%·pos_integer()</span><span·class="w">
172 ··</span><span·class="p"·data-group-id="5197795423-1">}</span><span·class="p">.</span><span·class="w">172 ··</span><span·class="p"·data-group-id="9188012785-1">}</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="o">#</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p"·data-group-id="5197795423-2">{</span><span·class="w">173 </span><span·class="o">#</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p"·data-group-id="9188012785-2">{</span><span·class="w">
174 ···</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·two-prime·|·multi</span><span·class="w">174 ···</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·two-prime·|·multi</span><span·class="w">
175 ···</span><span·class="ss">modulus</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·pos_integer()</span><span·class="w">175 ···</span><span·class="ss">modulus</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·pos_integer()</span><span·class="w">
176 ···</span><span·class="ss">publicExponent</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·pos_integer()</span><span·class="w">176 ···</span><span·class="ss">publicExponent</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·pos_integer()</span><span·class="w">
177 ···</span><span·class="ss">privateExponent</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·pos_integer()</span><span·class="w">177 ···</span><span·class="ss">privateExponent</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·pos_integer()</span><span·class="w">
178 ···</span><span·class="ss">prime1</span><span·class="p">,</span><span·class="w">··········</span><span·class="c1">%·pos_integer()</span><span·class="w">178 ···</span><span·class="ss">prime1</span><span·class="p">,</span><span·class="w">··········</span><span·class="c1">%·pos_integer()</span><span·class="w">
179 ···</span><span·class="ss">prime2</span><span·class="p">,</span><span·class="w">··········</span><span·class="c1">%·pos_integer()</span><span·class="w">179 ···</span><span·class="ss">prime2</span><span·class="p">,</span><span·class="w">··········</span><span·class="c1">%·pos_integer()</span><span·class="w">
180 ···</span><span·class="ss">exponent1</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·pos_integer()</span><span·class="w">180 ···</span><span·class="ss">exponent1</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·pos_integer()</span><span·class="w">
181 ···</span><span·class="ss">exponent2</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·pos_integer()</span><span·class="w">181 ···</span><span·class="ss">exponent2</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·pos_integer()</span><span·class="w">
182 ···</span><span·class="ss">coefficient</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%·pos_integer()</span><span·class="w">182 ···</span><span·class="ss">coefficient</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%·pos_integer()</span><span·class="w">
183 ···</span><span·class="ss">otherPrimeInfos</span><span·class="w">··</span><span·class="c1">%·[#OtherPrimeInfo{}]·|·asn1_NOVALUE</span><span·class="w">183 ···</span><span·class="ss">otherPrimeInfos</span><span·class="w">··</span><span·class="c1">%·[#OtherPrimeInfo{}]·|·asn1_NOVALUE</span><span·class="w">
184 ··</span><span·class="p"·data-group-id="5197795423-2">}</span><span·class="p">.</span><span·class="w">184 ··</span><span·class="p"·data-group-id="9188012785-2">}</span><span·class="p">.</span><span·class="w">
  
185 </span><span·class="o">#</span><span·class="ss">&#39;OtherPrimeInfo&#39;</span><span·class="p"·data-group-id="5197795423-3">{</span><span·class="w">185 </span><span·class="o">#</span><span·class="ss">&#39;OtherPrimeInfo&#39;</span><span·class="p"·data-group-id="9188012785-3">{</span><span·class="w">
186 ···</span><span·class="ss">prime</span><span·class="p">,</span><span·class="w">···········</span><span·class="c1">%·pos_integer()</span><span·class="w">186 ···</span><span·class="ss">prime</span><span·class="p">,</span><span·class="w">···········</span><span·class="c1">%·pos_integer()</span><span·class="w">
187 ···</span><span·class="ss">exponent</span><span·class="p">,</span><span·class="w">········</span><span·class="c1">%·pos_integer()</span><span·class="w">187 ···</span><span·class="ss">exponent</span><span·class="p">,</span><span·class="w">········</span><span·class="c1">%·pos_integer()</span><span·class="w">
188 ···</span><span·class="ss">coefficient</span><span·class="w">······</span><span·class="c1">%·pos_integer()</span><span·class="w">188 ···</span><span·class="ss">coefficient</span><span·class="w">······</span><span·class="c1">%·pos_integer()</span><span·class="w">
189 ··</span><span·class="p"·data-group-id="5197795423-3">}</span><span·class="p">.</span><span·class="w">189 ··</span><span·class="p"·data-group-id="9188012785-3">}</span><span·class="p">.</span><span·class="w">
  
190 </span><span·class="o">#</span><span·class="ss">&#39;RSASSA-PSS-params&#39;</span><span·class="p"·data-group-id="5197795423-4">{</span><span·class="w">190 </span><span·class="o">#</span><span·class="ss">&#39;RSASSA-PSS-params&#39;</span><span·class="p"·data-group-id="9188012785-4">{</span><span·class="w">
191 ···</span><span·class="ss">hashAlgorithm</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%·#&#39;HashAlgorithm&#39;{}},</span><span·class="w">191 ···</span><span·class="ss">hashAlgorithm</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%·#&#39;HashAlgorithm&#39;{}},</span><span·class="w">
192 ···</span><span·class="ss">maskGenAlgorithm</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·#&#39;MaskGenAlgorithm&#39;{}},</span><span·class="w">192 ···</span><span·class="ss">maskGenAlgorithm</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·#&#39;MaskGenAlgorithm&#39;{}},</span><span·class="w">
193 ···</span><span·class="ss">saltLength</span><span·class="p">,</span><span·class="w">········</span><span·class="c1">%·pos_integer(),</span><span·class="w">193 ···</span><span·class="ss">saltLength</span><span·class="p">,</span><span·class="w">········</span><span·class="c1">%·pos_integer(),</span><span·class="w">
194 ···</span><span·class="ss">trailerField</span><span·class="p">,</span><span·class="w">······</span><span·class="c1">%·pos_integer()</span><span·class="w">194 ···</span><span·class="ss">trailerField</span><span·class="p">,</span><span·class="w">······</span><span·class="c1">%·pos_integer()</span><span·class="w">
195 ··</span><span·class="p"·data-group-id="5197795423-4">}</span><span·class="p">.</span><span·class="w">195 ··</span><span·class="p"·data-group-id="9188012785-4">}</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="o">#</span><span·class="ss">&#39;HashAlgorithm&#39;</span><span·class="p"·data-group-id="5197795423-5">{</span><span·class="w">196 </span><span·class="o">#</span><span·class="ss">&#39;HashAlgorithm&#39;</span><span·class="p"·data-group-id="9188012785-5">{</span><span·class="w">
197 ···</span><span·class="ss">algorithm</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·oid()</span><span·class="w">197 ···</span><span·class="ss">algorithm</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·oid()</span><span·class="w">
198 ···</span><span·class="ss">parameters</span><span·class="w">··</span><span·class="c1">%·defaults·to·asn1_NOVALUE</span><span·class="w">198 ···</span><span·class="ss">parameters</span><span·class="w">··</span><span·class="c1">%·defaults·to·asn1_NOVALUE</span><span·class="w">
199 ··</span><span·class="p"·data-group-id="5197795423-5">}</span><span·class="p">.</span><span·class="w">199 ··</span><span·class="p"·data-group-id="9188012785-5">}</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="o">#</span><span·class="ss">&#39;MaskGenAlgorithm&#39;</span><span·class="p"·data-group-id="5197795423-6">{</span><span·class="w">200 </span><span·class="o">#</span><span·class="ss">&#39;MaskGenAlgorithm&#39;</span><span·class="p"·data-group-id="9188012785-6">{</span><span·class="w">
201 ···</span><span·class="ss">algorithm</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·oid()</span><span·class="w">201 ···</span><span·class="ss">algorithm</span><span·class="p">,</span><span·class="w">··</span><span·class="c1">%·oid()</span><span·class="w">
202 ···</span><span·class="ss">parameters</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·defaults·to·asn1_NOVALUE</span><span·class="w">202 ···</span><span·class="ss">parameters</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·defaults·to·asn1_NOVALUE</span><span·class="w">
203 ··</span><span·class="p"·data-group-id="5197795423-6">}</span><span·class="p">.</span></code></pre><h2·id="dsa"·class="section-heading">203 ··</span><span·class="p"·data-group-id="9188012785-6">}</span><span·class="p">.</span></code></pre><h2·id="dsa"·class="section-heading">
204 ··<a·href="#dsa"·class="hover-link">204 ··<a·href="#dsa"·class="hover-link">
205 ····<i·class="ri-link-m"·aria-hidden="true"></i>205 ····<i·class="ri-link-m"·aria-hidden="true"></i>
206 ··</a>206 ··</a>
207 ··<span·class="text">DSA</span>207 ··<span·class="text">DSA</span>
208 </h2>208 </h2>
209 <p>Erlang·representation·of209 <p>Erlang·representation·of
210 <a·href="http://www.ietf.org/rfc/rfc6979.txt">Digital·Signature·Algorithm·(DSA)</a>·keys</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p"·data-group-id="8982988083-1">{</span><span·class="w">210 <a·href="http://www.ietf.org/rfc/rfc6979.txt">Digital·Signature·Algorithm·(DSA)</a>·keys</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p"·data-group-id="9266486561-1">{</span><span·class="w">
211 ···</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">······</span><span·class="c1">%·pos_integer()</span><span·class="w">211 ···</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">······</span><span·class="c1">%·pos_integer()</span><span·class="w">
212 ···</span><span·class="ss">p</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">212 ···</span><span·class="ss">p</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">
213 ···</span><span·class="ss">q</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">213 ···</span><span·class="ss">q</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">
214 ···</span><span·class="ss">g</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">214 ···</span><span·class="ss">g</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">
215 ···</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">215 ···</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·pos_integer()</span><span·class="w">
216 ···</span><span·class="ss">x</span><span·class="w">·············</span><span·class="c1">%·pos_integer()</span><span·class="w">216 ···</span><span·class="ss">x</span><span·class="w">·············</span><span·class="c1">%·pos_integer()</span><span·class="w">
217 ··</span><span·class="p"·data-group-id="8982988083-1">}</span><span·class="p">.</span><span·class="w">217 ··</span><span·class="p"·data-group-id="9266486561-1">}</span><span·class="p">.</span><span·class="w">
  
218 </span><span·class="o">#</span><span·class="ss">&#39;Dss-Parms&#39;</span><span·class="p"·data-group-id="8982988083-2">{</span><span·class="w">218 </span><span·class="o">#</span><span·class="ss">&#39;Dss-Parms&#39;</span><span·class="p"·data-group-id="9266486561-2">{</span><span·class="w">
219 ···</span><span·class="ss">p</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·pos_integer()</span><span·class="w">219 ···</span><span·class="ss">p</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·pos_integer()</span><span·class="w">
220 ···</span><span·class="ss">q</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·pos_integer()</span><span·class="w">220 ···</span><span·class="ss">q</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·pos_integer()</span><span·class="w">
221 ···</span><span·class="ss">g</span><span·class="w">··········</span><span·class="c1">%·pos_integer()</span><span·class="w">221 ···</span><span·class="ss">g</span><span·class="w">··········</span><span·class="c1">%·pos_integer()</span><span·class="w">
222 ··</span><span·class="p"·data-group-id="8982988083-2">}</span><span·class="p">.</span></code></pre><h2·id="ecdsa-and-eddsa"·class="section-heading">222 ··</span><span·class="p"·data-group-id="9266486561-2">}</span><span·class="p">.</span></code></pre><h2·id="ecdsa-and-eddsa"·class="section-heading">
223 ··<a·href="#ecdsa-and-eddsa"·class="hover-link">223 ··<a·href="#ecdsa-and-eddsa"·class="hover-link">
224 ····<i·class="ri-link-m"·aria-hidden="true"></i>224 ····<i·class="ri-link-m"·aria-hidden="true"></i>
225 ··</a>225 ··</a>
Max diff block lines reached; 65872/98351 bytes (66.98%) of diff not shown.
207 KB
./usr/share/doc/erlang-doc/html/lib/public_key-1.17.1/doc/html/using_public_key.html
    
Offset 144, 290 lines modifiedOffset 144, 290 lines modified
144 ignored.·Attributes,·if·present,·are·ignored·except·for·<code·class="inline">Proc-Type</code>·and144 ignored.·Attributes,·if·present,·are·ignored·except·for·<code·class="inline">Proc-Type</code>·and
145 <code·class="inline">DEK-Info</code>,·which·are·used·when·<code·class="inline">DER</code>·data·is·encrypted.</p><h3·id="dsa-private-key"·class="section-heading">145 <code·class="inline">DEK-Info</code>,·which·are·used·when·<code·class="inline">DER</code>·data·is·encrypted.</p><h3·id="dsa-private-key"·class="section-heading">
146 ··<a·href="#dsa-private-key"·class="hover-link">146 ··<a·href="#dsa-private-key"·class="hover-link">
147 ····<i·class="ri-link-m"·aria-hidden="true"></i>147 ····<i·class="ri-link-m"·aria-hidden="true"></i>
148 ··</a>148 ··</a>
149 ··<span·class="text">DSA·Private·Key</span>149 ··<span·class="text">DSA·Private·Key</span>
150 </h3>150 </h3>
151 <p>A·DSA·private·key·can·look·as·follows:</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>File·handling·is·not·done·by·the·Public·Key·application.</p></section><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="5363050023-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PemBin</span><span·class="p"·data-group-id="5363050023-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·214,·SHA:·04d5321c530c543838751d7a15154f47c7eab4c02e585e67e3ba00550090bf39·...·]3-2">)</span><span·class="p">.</span><span·class="w">151 <p>A·DSA·private·key·can·look·as·follows:</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>File·handling·is·not·done·by·the·Public·Key·application.</p></section><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="3203726113-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PemBin</span><span·class="p"·data-group-id="3203726113-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·214,·SHA:·4e4c397e9f776894326df9768db12687abec601ea17ece4581ff4a6c2b70a323·...·]3-2">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="p"·data-group-id="5363050023-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5363050023-4">&lt;&lt;</span><span·class="s">&quot;-----BEGIN·DSA·PRIVATE·KEY-----\nMIIBuw&quot;</span><span·class="p">.</span><span·class="p">.</span><s[·...·truncated·by·diffoscope;·len:·741,·SHA:·1a5e0f03b8bf09312a4700ff68012e56743678c932a2d32dec0217339dbea23a·...·]-2">)</span><span·class="p">.</span><span·class="w">152 </span><span·class="p"·data-group-id="3203726113-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3203726113-4">&lt;&lt;</span><span·class="s">&quot;-----BEGIN·DSA·PRIVATE·KEY-----\nMIIBuw&quot;</span><span·class="p">.</span><span·class="p">.</span><s[·...·truncated·by·diffoscope;·len:·741,·SHA:·c5130ff9097fc0c8b1dc7b2f246ec6527de516103bd5ead7bfc7bfb7a9deff8d·...·]-2">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p"·data-group-id="5166557655-3">[</span><span·class="p"·data-group-id="5166557655-4">{</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5166557655-5">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">187</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">183</span><span·class="p">,</span><span·class="w">153 </span><span·class="p"·data-group-id="3907753567-3">[</span><span·class="p"·data-group-id="3907753567-4">{</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3907753567-5">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">187</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">183</span><span·class="p">,</span><span·class="w">
154 ····················</span><span·class="mi">179</span><span·class="p">,</span><span·class="mi">230</span><span·class="p">,</span><span·class="mi">217</span><span·class="p">,</span><span·class="mi">37</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">144</span><span·class="p">,</span><span·class="mi">157</span><span·class="p">,</span><span·class="mi">21</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">204</span><span·class="p">,</span><span·class="w">154 ····················</span><span·class="mi">179</span><span·class="p">,</span><span·class="mi">230</span><span·class="p">,</span><span·class="mi">217</span><span·class="p">,</span><span·class="mi">37</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">144</span><span·class="p">,</span><span·class="mi">157</span><span·class="p">,</span><span·class="mi">21</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">204</span><span·class="p">,</span><span·class="w">
155 ····················</span><span·class="mi">162</span><span·class="p">,</span><span·class="mi">207</span><span·class="p">,</span><span·class="mi">61</span><span·class="p">,</span><span·class="mi">246</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5166557655-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">155 ····················</span><span·class="mi">162</span><span·class="p">,</span><span·class="mi">207</span><span·class="p">,</span><span·class="mi">61</span><span·class="p">,</span><span·class="mi">246</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3907753567-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">
156 ····················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="5166557655-4">}</span><span·class="p"·data-group-id="5166557655-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·243,·SHA:·20a165ecca1e561cacf3e3b5e29b17fb7609fe73263d21a4be8559566bc4cf82·...·]3-1">)</span><span·class="p">.</span><span·class="w">156 ····················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="3907753567-4">}</span><span·class="p"·data-group-id="3907753567-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·243,·SHA:·c84ba97c9d43d43ea4c4976bdd620ba21635154ab19f359effdc93582d7e1916·...·]3-1">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="o">#</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p"·data-group-id="2413285723-2">{</span><span·class="ss">version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">157 </span><span·class="o">#</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p"·data-group-id="1881350113-2">{</span><span·class="ss">version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
158 ·················</span><span·class="ss">p</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">12900045185019966618</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">6593</span><span·class="p">,</span><span·class="w">158 ·················</span><span·class="ss">p</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">12900045185019966618</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">6593</span><span·class="p">,</span><span·class="w">
159 ·················</span><span·class="ss">q</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1216700114794736143432235288305776850295620488937</span><span·class="p">,</span><span·class="w">159 ·················</span><span·class="ss">q</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1216700114794736143432235288305776850295620488937</span><span·class="p">,</span><span·class="w">
160 ·················</span><span·class="ss">g</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">10442040227452349332</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">47213</span><span·class="p">,</span><span·class="w">160 ·················</span><span·class="ss">g</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">10442040227452349332</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">47213</span><span·class="p">,</span><span·class="w">
161 ·················</span><span·class="ss">y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">87256807980030509074</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">403143</span><span·class="p">,</span><span·class="w">161 ·················</span><span·class="ss">y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">87256807980030509074</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">403143</span><span·class="p">,</span><span·class="w">
162 ·················</span><span·class="ss">x</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">510968529856012146351317363807366575075645839654</span><span·class="p"·data-group-id="2413285723-2">}</span></code></pre><h3·id="rsa-private-key-with-password"·class="section-heading">162 ·················</span><span·class="ss">x</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">510968529856012146351317363807366575075645839654</span><span·class="p"·data-group-id="1881350113-2">}</span></code></pre><h3·id="rsa-private-key-with-password"·class="section-heading">
163 ··<a·href="#rsa-private-key-with-password"·class="hover-link">163 ··<a·href="#rsa-private-key-with-password"·class="hover-link">
164 ····<i·class="ri-link-m"·aria-hidden="true"></i>164 ····<i·class="ri-link-m"·aria-hidden="true"></i>
165 ··</a>165 ··</a>
166 ··<span·class="text">RSA·Private·Key·with·Password</span>166 ··<span·class="text">RSA·Private·Key·with·Password</span>
167 </h3>167 </h3>
168 <p>An·RSA·private·key·encrypted·with·a·password·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="1219141188-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PemBin</span><span·class="p"·data-group-id="1219141188-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·214,·SHA:·04643c41191ec19d83e7f3ee38f8b4734c2efaabb741e30b4045cd5df79f5c49·...·]-2">)</span><span·class="p">.</span><span·class="w">168 <p>An·RSA·private·key·encrypted·with·a·password·can·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="1599550256-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PemBin</span><span·class="p"·data-group-id="1599550256-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·214,·SHA:·658ad1e7bb8366bead6f7debd27fbbc52427d67e52cfdb943a696586f169ca32·...·]-2">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="p"·data-group-id="1219141188-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1219141188-4">&lt;&lt;</span><span·class="s">&quot;Bag·Attribute&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span[·...·truncated·by·diffoscope;·len:·713,·SHA:·91ebc18622ccf65800e66ffe0b98ec5bef0ce3dab4ffdddba87e8465623cba57·...·]-2">)</span><span·class="p">.</span><span·class="w">169 </span><span·class="p"·data-group-id="1599550256-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1599550256-4">&lt;&lt;</span><span·class="s">&quot;Bag·Attribute&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span[·...·truncated·by·diffoscope;·len:·713,·SHA:·f20b6beaca22797ba6deef07471d6df8e02961e9ea1a95312ca01efaf5e6e005·...·]-2">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="p"·data-group-id="4061058806-3">[</span><span·class="p"·data-group-id="4061058806-4">{</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4061058806-5">&lt;&lt;</span><span·class="mi">224</span><span·class="p">,</span><span·class="mi">108</span><span·class="p">,</span><span·class="mi">117</span><span·class="p">,</span><span·class="mi">203</span><span·class="p">,</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">40</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">126</span><span·class="p">,</span><span·class="w">170 </span><span·class="p"·data-group-id="0532060407-3">[</span><span·class="p"·data-group-id="0532060407-4">{</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="0532060407-5">&lt;&lt;</span><span·class="mi">224</span><span·class="p">,</span><span·class="mi">108</span><span·class="p">,</span><span·class="mi">117</span><span·class="p">,</span><span·class="mi">203</span><span·class="p">,</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">40</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">126</span><span·class="p">,</span><span·class="w">
171 ····················</span><span·class="mi">221</span><span·class="p">,</span><span·class="mi">195</span><span·class="p">,</span><span·class="mi">154</span><span·class="p">,</span><span·class="mi">249</span><span·class="p">,</span><span·class="mi">85</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">202</span><span·class="p">,</span><span·class="mi">251</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="w">171 ····················</span><span·class="mi">221</span><span·class="p">,</span><span·class="mi">195</span><span·class="p">,</span><span·class="mi">154</span><span·class="p">,</span><span·class="mi">249</span><span·class="p">,</span><span·class="mi">85</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">202</span><span·class="p">,</span><span·class="mi">251</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="w">
172 ····················</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">120</span><span·class="p">,</span><span·class="mi">57</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">89</span><span·class="p">,</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4061058806-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">172 ····················</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">120</span><span·class="p">,</span><span·class="mi">57</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">89</span><span·class="p">,</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0532060407-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">
173 ··················</span><span·class="p"·data-group-id="4061058806-6">{</span><span·class="s">&quot;DES-EDE3-CBC&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4061058806-7">&lt;&lt;</span><span·class="s">&quot;kÙeø¼pµL&quot;</span><span·class="p"·data-group-id="4061058806-7">&gt;&gt;</span>[·...·truncated·by·diffoscope;·len:·774,·SHA:·c37631fb51bacdbf61d26b1b4ecc089a8618c40c1bdbe361e913e59f17153193·...·]-1">)</span><span·class="p">.</span><span·class="w">173 ··················</span><span·class="p"·data-group-id="0532060407-6">{</span><span·class="s">&quot;DES-EDE3-CBC&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0532060407-7">&lt;&lt;</span><span·class="s">&quot;kÙeø¼pµL&quot;</span><span·class="p"·data-group-id="0532060407-7">&gt;&gt;</span>[·...·truncated·by·diffoscope;·len:·774,·SHA:·3573f69bca5f56f93d13aadc3d2f714dc32b3594ee7e80f29f2933c5261ba46e·...·]-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="o">#</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p"·data-group-id="0223844303-2">{</span><span·class="ss">version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;two-prime&#39;</span><span·class="p">,</span><span·class="w">174 </span><span·class="o">#</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p"·data-group-id="0055376510-2">{</span><span·class="ss">version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">&#39;two-prime&#39;</span><span·class="p">,</span><span·class="w">
175 ·················</span><span·class="ss">modulus</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1112355156729921663373</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">2737107</span><span·class="p">,</span><span·class="w">175 ·················</span><span·class="ss">modulus</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1112355156729921663373</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">2737107</span><span·class="p">,</span><span·class="w">
176 ·················</span><span·class="ss">publicExponent</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">65537</span><span·class="p">,</span><span·class="w">176 ·················</span><span·class="ss">publicExponent</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">65537</span><span·class="p">,</span><span·class="w">
177 ·················</span><span·class="ss">privateExponent</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">58064406231183</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">2239766033</span><span·class="p">,</span><span·class="w">177 ·················</span><span·class="ss">privateExponent</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">58064406231183</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">2239766033</span><span·class="p">,</span><span·class="w">
178 ·················</span><span·class="ss">prime1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">11034766614656598484098</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">7326883017</span><span·class="p">,</span><span·class="w">178 ·················</span><span·class="ss">prime1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">11034766614656598484098</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">7326883017</span><span·class="p">,</span><span·class="w">
179 ·················</span><span·class="ss">prime2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">10080459293561036618240</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">77738643771</span><span·class="p">,</span><span·class="w">179 ·················</span><span·class="ss">prime2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">10080459293561036618240</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">77738643771</span><span·class="p">,</span><span·class="w">
180 ·················</span><span·class="ss">exponent1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">77928819327425934607</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">22152984217</span><span·class="p">,</span><span·class="w">180 ·················</span><span·class="ss">exponent1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">77928819327425934607</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">22152984217</span><span·class="p">,</span><span·class="w">
181 ·················</span><span·class="ss">exponent2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">36287623121853605733</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">20588523793</span><span·class="p">,</span><span·class="w">181 ·················</span><span·class="ss">exponent2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">36287623121853605733</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">20588523793</span><span·class="p">,</span><span·class="w">
182 ·················</span><span·class="ss">coefficient</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">924840412626098444</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">41820968343</span><span·class="p">,</span><span·class="w">182 ·················</span><span·class="ss">coefficient</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">924840412626098444</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="mi">41820968343</span><span·class="p">,</span><span·class="w">
183 ·················</span><span·class="ss">otherPrimeInfos</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">asn1_NOVALUE</span><span·class="p"·data-group-id="0223844303-2">}</span></code></pre><h3·id="x509-certificates"·class="section-heading">183 ·················</span><span·class="ss">otherPrimeInfos</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">asn1_NOVALUE</span><span·class="p"·data-group-id="0055376510-2">}</span></code></pre><h3·id="x509-certificates"·class="section-heading">
184 ··<a·href="#x509-certificates"·class="hover-link">184 ··<a·href="#x509-certificates"·class="hover-link">
185 ····<i·class="ri-link-m"·aria-hidden="true"></i>185 ····<i·class="ri-link-m"·aria-hidden="true"></i>
186 ··</a>186 ··</a>
187 ··<span·class="text">X509·Certificates</span>187 ··<span·class="text">X509·Certificates</span>
188 </h3>188 </h3>
189 <p>The·following·is·an·example·of·X509·certificates:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="3017611661-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PemBin</span><span·class="p"·data-group-id="3017611661-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·219,·SHA:·81fc615427ba82731e7e864df3880cb1e72568899b90e8ed485cee24fe1be6b7·...·]-2">)</span><span·class="p">.</span><span·class="w">189 <p>The·following·is·an·example·of·X509·certificates:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="6323660318-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PemBin</span><span·class="p"·data-group-id="6323660318-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·219,·SHA:·747cbb136b7d66292b8eb098747e144b74698af82cb66d4b938460d6091e23b4·...·]-2">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p"·data-group-id="3017611661-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3017611661-4">&lt;&lt;</span><span·class="s">&quot;-----BEGIN·CERTIFICATE-----\nMIIC7jCCAl&quot;</span><span·class="p">.</span><span·class="p">.</span><s[·...·truncated·by·diffoscope;·len:·797,·SHA:·9dcb18c6cc3944d9cbdcc3e1b9b631f97112aac592b45007e004d4060a364490·...·]7-2">)</span><span·class="p">.</span><span·class="w">190 </span><span·class="p"·data-group-id="6323660318-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6323660318-4">&lt;&lt;</span><span·class="s">&quot;-----BEGIN·CERTIFICATE-----\nMIIC7jCCAl&quot;</span><span·class="p">.</span><span·class="p">.</span><s[·...·truncated·by·diffoscope;·len:·797,·SHA:·738ecee6282ff996fa6d6558d62d76d808ef18d32ad9b8ef5e71ce87eba1e8cb·...·]7-2">)</span><span·class="p">.</span><span·class="w">
191 </span><span·class="p"·data-group-id="2200129407-3">[</span><span·class="p"·data-group-id="2200129407-4">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2200129407-5">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">238</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">87</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">191 </span><span·class="p"·data-group-id="7475763717-3">[</span><span·class="p"·data-group-id="7475763717-4">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7475763717-5">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">238</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">87</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
192 ··················</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">230</span><span·class="p">,</span><span·class="mi">145</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">191</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">120</span><span·class="p">,</span><span·class="mi">150</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="w">192 ··················</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">230</span><span·class="p">,</span><span·class="mi">145</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">214</span><span·class="p">,</span><span·class="mi">191</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">120</span><span·class="p">,</span><span·class="mi">150</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="w">
193 ··················</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2200129407-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">193 ··················</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7475763717-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">
194 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="2200129407-4">}</span><span·class="p">,</span><span·class="w">194 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="7475763717-4">}</span><span·class="p">,</span><span·class="w">
195 ·</span><span·class="p"·data-group-id="2200129407-6">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2200129407-7">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">200</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">195 ·</span><span·class="p"·data-group-id="7475763717-6">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7475763717-7">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">200</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">130</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">160</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
196 ··················</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">42</span><span·class="p">,</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">72</span><span·class="p">,</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">247</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2200129407-7">&gt;&gt;</span><span·class="p">,</span><span·class="w">196 ··················</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">13</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">42</span><span·class="p">,</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">72</span><span·class="p">,</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">247</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7475763717-7">&gt;&gt;</span><span·class="p">,</span><span·class="w">
197 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="2200129407-6">}</span><span·class="p"·data-group-id="2200129407-3">]</span></code></pre><p>Certificates·can·be·decoded·as·usual:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Cert</span><span·[·...·truncated·by·diffoscope;·len:·289,·SHA:·11b8bc82a5161b14093534ee3275dd4d6ef81bd5a0b91a579a0f219a5547220f·...·]51-1">)</span><span·class="p">.</span><span·class="w">197 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="7475763717-6">}</span><span·class="p"·data-group-id="7475763717-3">]</span></code></pre><p>Certificates·can·be·decoded·as·usual:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Cert</span><span·[·...·truncated·by·diffoscope;·len:·289,·SHA:·8352e4b0a92c9d53352d379c281e5e4b8c69ad2c047f9bd7bff0772dfba03d88·...·]51-1">)</span><span·class="p">.</span><span·class="w">
198 </span><span·class="o">#</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p"·data-group-id="9384765451-2">{</span><span·class="w">198 </span><span·class="o">#</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p"·data-group-id="3057133651-2">{</span><span·class="w">
199 ····</span><span·class="ss">tbsCertificate</span><span·class="w">·</span><span·class="o">=</span><span·class="w">199 ····</span><span·class="ss">tbsCertificate</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
200 ········</span><span·class="o">#</span><span·class="ss">&#39;TBSCertificate&#39;</span><span·class="p"·data-group-id="9384765451-3">{</span><span·class="w">200 ········</span><span·class="o">#</span><span·class="ss">&#39;TBSCertificate&#39;</span><span·class="p"·data-group-id="3057133651-3">{</span><span·class="w">
201 ············</span><span·class="ss">version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">v3</span><span·class="p">,</span><span·class="ss">serialNumber</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">16614168075301976214</span><span·class="p">,</span><span·class="w">201 ············</span><span·class="ss">version</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">v3</span><span·class="p">,</span><span·class="ss">serialNumber</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">16614168075301976214</span><span·class="p">,</span><span·class="w">
202 ············</span><span·class="ss">signature</span><span·class="w">·</span><span·class="o">=</span><span·class="w">202 ············</span><span·class="ss">signature</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
203 ················</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="9384765451-4">{</span><span·class="w">203 ················</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="3057133651-4">{</span><span·class="w">
204 ····················</span><span·class="ss">algorithm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span·[·...·truncated·by·diffoscope;·len:·131,·SHA:·d284c767b4ef4b734ca2efbcc51d65cd1ea215860ecf0a7723f98a05b0fc7dbf·...·]51-5">}</span><span·class="p">,</span><span·class="w">204 ····················</span><span·class="ss">algorithm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span·[·...·truncated·by·diffoscope;·len:·131,·SHA:·a3f4a7f3743a79a053b4efa47d8deac2f865c48c57ee98a261df6a2402b7c361·...·]51-5">}</span><span·class="p">,</span><span·class="w">
205 ····················</span><span·class="ss">parameters</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-6">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="9384765451-6">&gt;&gt;</span><span·class="p"·data-group-id="9384765451-4">}</span><span·class="p">,</span><span·class="w">205 ····················</span><span·class="ss">parameters</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-6">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3057133651-6">&gt;&gt;</span><span·class="p"·data-group-id="3057133651-4">}</span><span·class="p">,</span><span·class="w">
206 ············</span><span·class="ss">issuer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">206 ············</span><span·class="ss">issuer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
207 ················</span><span·class="p"·data-group-id="9384765451-7">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">207 ················</span><span·class="p"·data-group-id="3057133651-7">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">
208 ····················</span><span·class="p"·data-group-id="9384765451-8">[</span><span·class="p"·data-group-id="9384765451-9">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-10">{</span><span·class="w">208 ····················</span><span·class="p"·data-group-id="3057133651-8">[</span><span·class="p"·data-group-id="3057133651-9">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-10">{</span><span·class="w">
209 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-11">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9384765451-11">}</span><span·class="p">,</span><span·class="w">209 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-11">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3057133651-11">}</span><span·class="p">,</span><span·class="w">
210 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-12">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·92427989032cc809972dea0a99d3580d25e7b625ae03b7b938fe98eb32714234·...·]51-9">]</span><span·class="p">,</span><span·class="w">210 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-12">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·71270be792c6d3dbdaefe750b94c048bde8d8daf53c65c707796f5b3a8571a29·...·]51-9">]</span><span·class="p">,</span><span·class="w">
211 ·····················</span><span·class="p"·data-group-id="9384765451-13">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-14">{</span><span·class="w">211 ·····················</span><span·class="p"·data-group-id="3057133651-13">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-14">{</span><span·class="w">
212 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-15">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">11</span><span·class="p"·data-group-id="9384765451-15">}</span><span·class="p">,</span><span·class="w">212 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-15">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">11</span><span·class="p"·data-group-id="3057133651-15">}</span><span·class="p">,</span><span·class="w">
213 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-16">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·dfbff67d5c4f7c5c92c7e262a1504873b81f510df9a9c12c86fc447fed552664·...·]51-13">]</span><span·class="p">,</span><span·class="w">213 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-16">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·44adf94801f150635bb322f34b7f5ba820fd89ea159c8faa85b91189d0be64ed·...·]51-13">]</span><span·class="p">,</span><span·class="w">
214 ·····················</span><span·class="p"·data-group-id="9384765451-17">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-18">{</span><span·class="w">214 ·····················</span><span·class="p"·data-group-id="3057133651-17">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-18">{</span><span·class="w">
215 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="9384765451-19">}</span><span·class="p">,</span><span·class="w">215 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="3057133651-19">}</span><span·class="p">,</span><span·class="w">
216 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-20">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·560,·SHA:·1a419d251697271304612132ebaf87fc681984fe1b7dafd2e891e61006187cb3·...·]51-17">]</span><span·class="p">,</span><span·class="w">216 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-20">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·560,·SHA:·01cee1e12ebfc4783ad3f95479bd4ae1874030c8af343c94dd11bc11ce73045c·...·]51-17">]</span><span·class="p">,</span><span·class="w">
217 ·····················</span><span·class="p"·data-group-id="9384765451-21">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-22">{</span><span·class="w">217 ·····················</span><span·class="p"·data-group-id="3057133651-21">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-22">{</span><span·class="w">
218 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-23">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="9384765451-23">}</span><span·class="p">,</span><span·class="w">218 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-23">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="3057133651-23">}</span><span·class="p">,</span><span·class="w">
219 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-24">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·460,·SHA:·49d6a73b042b81de1b4e88d81e898ad00a507b592cb39514e45888e0c7ddf31f·...·]51-21">]</span><span·class="p">,</span><span·class="w">219 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-24">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·460,·SHA:·883cecc33c5093207d636e9fc54365c9e00709901db5e9a0ccce19d5d700b911·...·]51-21">]</span><span·class="p">,</span><span·class="w">
220 ·····················</span><span·class="p"·data-group-id="9384765451-25">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-26">{</span><span·class="w">220 ·····················</span><span·class="p"·data-group-id="3057133651-25">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-26">{</span><span·class="w">
221 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-27">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9384765451-27">}</span><span·class="p">,</span><span·class="w">221 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-27">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="3057133651-27">}</span><span·class="p">,</span><span·class="w">
222 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-28">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">69</span><span·class="p"·data-group-id="9384765451-28">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·71d177d4e4fca692cf4c10d0743c462f552a6773c9890adf4476b893e2782ae8·...·]51-25">]</span><span·class="p">,</span><span·class="w">222 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-28">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">69</span><span·class="p"·data-group-id="3057133651-28">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·3960412e037126faad25e87e50d646585e3b59f71a880f110bd66e59df8698b1·...·]51-25">]</span><span·class="p">,</span><span·class="w">
223 ·····················</span><span·class="p"·data-group-id="9384765451-29">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-30">{</span><span·class="w">223 ·····················</span><span·class="p"·data-group-id="3057133651-29">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-30">{</span><span·class="w">
224 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-31">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·323f174c4962a5950db1416e2417cf41eedbe6e13e16cdfb35bed27783874900·...·]51-31">}</span><span·class="p">,</span><span·class="w">224 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-31">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·b36a0b4a5cbffc8687065ce60cddf00dac43d98d07a13f601cebb24373b8d66a·...·]51-31">}</span><span·class="p">,</span><span·class="w">
225 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-32">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·614,·SHA:·06225769ce6f78c85728423f580df39ac2cb1a25d4f6f537e1be8ef9693fe486·...·]51-7">}</span><span·class="p">,</span><span·class="w">225 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-32">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·614,·SHA:·bf32f4e1192cf5ef2158f816264f10774788d21331790caffc3651479088e5a2·...·]51-7">}</span><span·class="p">,</span><span·class="w">
226 ············</span><span·class="ss">validity</span><span·class="w">·</span><span·class="o">=</span><span·class="w">226 ············</span><span·class="ss">validity</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
227 ················</span><span·class="o">#</span><span·class="ss">&#39;Validity&#39;</span><span·class="p"·data-group-id="9384765451-33">{</span><span·class="w">227 ················</span><span·class="o">#</span><span·class="ss">&#39;Validity&#39;</span><span·class="p"·data-group-id="3057133651-33">{</span><span·class="w">
228 ····················</span><span·class="ss">notBefore</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-34">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080109082929Z&quot;</span><span·class="p"·data-group-id="9384765451-34">}</span><span·class="p">,</span><span·class="w">228 ····················</span><span·class="ss">notBefore</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-34">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080109082929Z&quot;</span><span·class="p"·data-group-id="3057133651-34">}</span><span·class="p">,</span><span·class="w">
229 ····················</span><span·class="ss">notAfter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-35">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080208082929Z&quot;</span><span·class="p"·data-group-id="9384765451-35">}</span><span·class="p"·data-group-id="9384765451-33">}</span><span·class="p">,</span><span·class="w">229 ····················</span><span·class="ss">notAfter</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-35">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080208082929Z&quot;</span><span·class="p"·data-group-id="3057133651-35">}</span><span·class="p"·data-group-id="3057133651-33">}</span><span·class="p">,</span><span·class="w">
230 ············</span><span·class="ss">subject</span><span·class="w">·</span><span·class="o">=</span><span·class="w">230 ············</span><span·class="ss">subject</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
231 ················</span><span·class="p"·data-group-id="9384765451-36">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">231 ················</span><span·class="p"·data-group-id="3057133651-36">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">
232 ····················</span><span·class="p"·data-group-id="9384765451-37">[</span><span·class="p"·data-group-id="9384765451-38">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-39">{</span><span·class="w">232 ····················</span><span·class="p"·data-group-id="3057133651-37">[</span><span·class="p"·data-group-id="3057133651-38">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-39">{</span><span·class="w">
233 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-40">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9384765451-40">}</span><span·class="p">,</span><span·class="w">233 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-40">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3057133651-40">}</span><span·class="p">,</span><span·class="w">
234 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-41">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·61b4b56a938a610cccbf1759b0a0b185b9c9de27a4ad90461c5c65443ed0ce37·...·]51-38">]</span><span·class="p">,</span><span·class="w">234 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-41">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·d0bc1d2db4ddf98421a91a60d308d2bfd0dbe66307e84bd15315fa41d5f8c27a·...·]51-38">]</span><span·class="p">,</span><span·class="w">
235 ·····················</span><span·class="p"·data-group-id="9384765451-42">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-43">{</span><span·class="w">235 ·····················</span><span·class="p"·data-group-id="3057133651-42">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-43">{</span><span·class="w">
236 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-44">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">11</span><span·class="p"·data-group-id="9384765451-44">}</span><span·class="p">,</span><span·class="w">236 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-44">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">11</span><span·class="p"·data-group-id="3057133651-44">}</span><span·class="p">,</span><span·class="w">
237 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-45">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·8fb631147fcef0071178e2039e4b45cad5f8a46e8863f6f9b1000f086f0a8e9c·...·]51-42">]</span><span·class="p">,</span><span·class="w">237 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-45">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·695bc4feb8cff3711fe1826a7abd4edefa530e0518875944c13c94dbadf9b8e3·...·]51-42">]</span><span·class="p">,</span><span·class="w">
238 ·····················</span><span·class="p"·data-group-id="9384765451-46">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-47">{</span><span·class="w">238 ·····················</span><span·class="p"·data-group-id="3057133651-46">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-47">{</span><span·class="w">
239 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-48">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="9384765451-48">}</span><span·class="p">,</span><span·class="w">239 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-48">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="3057133651-48">}</span><span·class="p">,</span><span·class="w">
240 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-49">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·556,·SHA:·6fabac90367c7f63960a1402aa41c1994e8b71b36d54d1214b785b33f8e69542·...·]51-46">]</span><span·class="p">,</span><span·class="w">240 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-49">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·556,·SHA:·82c0eed67d2836ae94ff4caa754e8083c0518b9ed5ecfc5033650f79242b0815·...·]51-46">]</span><span·class="p">,</span><span·class="w">
241 ·····················</span><span·class="p"·data-group-id="9384765451-50">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-51">{</span><span·class="w">241 ·····················</span><span·class="p"·data-group-id="3057133651-50">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-51">{</span><span·class="w">
242 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-52">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="9384765451-52">}</span><span·class="p">,</span><span·class="w">242 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-52">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="3057133651-52">}</span><span·class="p">,</span><span·class="w">
243 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-53">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·505,·SHA:·6f29d719e7672c9e57533674f20ef3a322e3e3e5a2032d52909eb0a42aa74085·...·]51-50">]</span><span·class="p">,</span><span·class="w">243 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-53">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·505,·SHA:·6140308920890094425fda43dc4ec1b1ac8f0c04f72504a20d03aa7d300e6118·...·]51-50">]</span><span·class="p">,</span><span·class="w">
244 ·····················</span><span·class="p"·data-group-id="9384765451-54">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-55">{</span><span·class="w">244 ·····················</span><span·class="p"·data-group-id="3057133651-54">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-55">{</span><span·class="w">
245 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-56">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9384765451-56">}</span><span·class="p">,</span><span·class="w">245 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-56">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="3057133651-56">}</span><span·class="p">,</span><span·class="w">
246 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-57">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">69</span><span·class="p"·data-group-id="9384765451-57">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·6e3a69ccd6f9287fbd3500db3359bbd7cdd17aa80499e72fda1721e1b8a12107·...·]51-54">]</span><span·class="p">,</span><span·class="w">246 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-57">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">69</span><span·class="p"·data-group-id="3057133651-57">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·e6e7ba15bb1e64cd7b748b80ce28da40901cb85a319250e9b7c381d20365b149·...·]51-54">]</span><span·class="p">,</span><span·class="w">
247 ·····················</span><span·class="p"·data-group-id="9384765451-58">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="9384765451-59">{</span><span·class="w">247 ·····················</span><span·class="p"·data-group-id="3057133651-58">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="3057133651-59">{</span><span·class="w">
248 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-60">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·323f174c4962a5950db1416e2417cf41eedbe6e13e16cdfb35bed27783874900·...·]51-60">}</span><span·class="p">,</span><span·class="w">248 ··························</span><span·class="ss">type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-60">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·b36a0b4a5cbffc8687065ce60cddf00dac43d98d07a13f601cebb24373b8d66a·...·]51-60">}</span><span·class="p">,</span><span·class="w">
249 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-61">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·513,·SHA:·30deae08d8f095cb04ada0ec8def99b2c6a5c33ecdafe2282a81252fe6c529e2·...·]51-36">}</span><span·class="p">,</span><span·class="w">249 ··························</span><span·class="ss">value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-61">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·513,·SHA:·4eff46b62166f29c6e9cdc438ee0c766419ca408a58074701d60639fd3588aa7·...·]51-36">}</span><span·class="p">,</span><span·class="w">
250 ············</span><span·class="ss">subjectPublicKeyInfo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">250 ············</span><span·class="ss">subjectPublicKeyInfo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
251 ················</span><span·class="o">#</span><span·class="ss">&#39;SubjectPublicKeyInfo&#39;</span><span·class="p"·data-group-id="9384765451-62">{</span><span·class="w">251 ················</span><span·class="o">#</span><span·class="ss">&#39;SubjectPublicKeyInfo&#39;</span><span·class="p"·data-group-id="3057133651-62">{</span><span·class="w">
252 ····················</span><span·class="ss">algorithm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">252 ····················</span><span·class="ss">algorithm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
253 ························</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="9384765451-63">{</span><span·class="w">253 ························</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="3057133651-63">{</span><span·class="w">
254 ····························</span><span·class="ss">algorithm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-64">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·fe067c7e10e76039fe9f510144d7f843a6309f24f14340e5ad72e044f5944d0a·...·]51-64">}</span><span·class="p">,</span><span·class="w">254 ····························</span><span·class="ss">algorithm</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-64">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·d189236935a8e85fa1b86b2d4770f41dc0b1511c416e608668b42bce5a1cb9ad·...·]51-64">}</span><span·class="p">,</span><span·class="w">
255 ····························</span><span·class="ss">parameters</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-65">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="9384765451-65">&gt;&gt;</span><span·class="p"·data-group-id="9384765451-63">}</span><span·class="p">,</span><span·class="w">255 ····························</span><span·class="ss">parameters</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-65">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3057133651-65">&gt;&gt;</span><span·class="p"·data-group-id="3057133651-63">}</span><span·class="p">,</span><span·class="w">
256 ····················</span><span·class="ss">subjectPublicKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">256 ····················</span><span·class="ss">subjectPublicKey</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
257 ························</span><span·class="p"·data-group-id="9384765451-66">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="9384765451-67">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">137</[·...·truncated·by·diffoscope;·len:·809,·SHA:·ee1f9379a58b1a63ffec4aa5519520068e0933790c26748a80f73b069de8db21·...·]51-62">}</span><span·class="p">,</span><span·class="w">257 ························</span><span·class="p"·data-group-id="3057133651-66">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="3057133651-67">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">137</[·...·truncated·by·diffoscope;·len:·809,·SHA:·1f7f3b5e1992ea60bd146133ab685b4f0705592970a9fe729ddaeed06ff06d05·...·]51-62">}</span><span·class="p">,</span><span·class="w">
258 ············</span><span·class="ss">issuerUniqueID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">258 ············</span><span·class="ss">issuerUniqueID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
259 ············</span><span·class="ss">subjectUniqueID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">259 ············</span><span·class="ss">subjectUniqueID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">asn1_NOVALUE</span><span·class="p">,</span><span·class="w">
260 ············</span><span·class="ss">extensions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">260 ············</span><span·class="ss">extensions</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
261 ················</span><span·class="p"·data-group-id="9384765451-68">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="9384765451-69">{</span><span·class="w">261 ················</span><span·class="p"·data-group-id="3057133651-68">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="3057133651-69">{</span><span·class="w">
262 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-70">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">19</span><span·class="p"·data-group-id="9384765451-70">}</span><span·class="p">,</span><span·class="w">262 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-70">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">19</span><span·class="p"·data-group-id="3057133651-70">}</span><span·class="p">,</span><span·class="w">
263 ·····················</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">263 ·····················</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">
264 ·····················</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-71">[</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·cla[·...·truncated·by·diffoscope;·len:·84,·SHA:·38a4b7bf4b8bb7dd20cb089c2e8dd61694fc213314480ace8b00d87b79af869b·...·]51-69">}</span><span·class="p">,</span><span·class="w">264 ·····················</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-71">[</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·cla[·...·truncated·by·diffoscope;·len:·84,·SHA:·bd3c7049acc68ec6a291095e2407b8a0ab317b106423abd229748d709c4ccd8c·...·]51-69">}</span><span·class="p">,</span><span·class="w">
265 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="9384765451-72">{</span><span·class="w">265 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="3057133651-72">{</span><span·class="w">
266 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-73">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">15</span><span·class="p"·data-group-id="9384765451-73">}</span><span·class="p">,</span><span·class="w">266 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-73">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">15</span><span·class="p"·data-group-id="3057133651-73">}</span><span·class="p">,</span><span·class="w">
267 ·····················</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">267 ·····················</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">
268 ·····················</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-74">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9384765451-74">]</span><span·c[·...·truncated·by·diffoscope;·len:·32,·SHA:·1eb6dd313d468227f1c8c4e70347e871596eb4d3eba76d2f7f4190c3645c218a·...·]51-72">}</span><span·class="p">,</span><span·class="w">268 ·····················</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-74">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="3057133651-74">]</span><span·c[·...·truncated·by·diffoscope;·len:·32,·SHA:·256c14b01f7d1f380200b2654a5c943abc88fc5835b98ebf467a847f7998fd6b·...·]51-72">}</span><span·class="p">,</span><span·class="w">
269 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="9384765451-75">{</span><span·class="w">269 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="3057133651-75">{</span><span·class="w">
270 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9384765451-76">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">14</span><span·class="p"·data-group-id="9384765451-76">}</span><span·class="p">,</span><span·class="w">270 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3057133651-76">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">14</span><span·class="p"·data-group-id="3057133651-76">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 117535/211820 bytes (55.49%) of diff not shown.
454 KB
./usr/share/doc/erlang-doc/html/lib/reltool-1.0.1/doc/html/reltool.epub
2.4 KB
zipinfo {}
    
Offset 1, 16 lines modifiedOffset 1, 16 lines modified
1 Zip·file·size:·62896·bytes,·number·of·entries:·141 Zip·file·size:·62887·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:51·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:25·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·10:51·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Feb-13·09:25·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····17091·bx·defN·25-Feb-13·10:51·OEBPS/reltool_usage.xhtml4 ?rw-r--r--··6.1·unx····17091·bx·defN·25-Feb-13·09:25·OEBPS/reltool_usage.xhtml
5 ?rw-r--r--··6.1·unx·····3354·bx·defN·25-Feb-13·10:51·OEBPS/reltool_intro.xhtml5 ?rw-r--r--··6.1·unx·····3354·bx·defN·25-Feb-13·09:25·OEBPS/reltool_intro.xhtml
6 ?rw-r--r--··6.1·unx···193923·bx·defN·25-Feb-13·10:51·OEBPS/reltool_examples.xhtml6 ?rw-r--r--··6.1·unx···193923·bx·defN·25-Feb-13·09:25·OEBPS/reltool_examples.xhtml
7 ?rw-r--r--··6.1·unx····94623·bx·defN·25-Feb-13·10:51·OEBPS/reltool.xhtml7 ?rw-r--r--··6.1·unx····94623·bx·defN·25-Feb-13·09:25·OEBPS/reltool.xhtml
8 ?rw-r--r--··6.1·unx····40198·bx·defN·25-Feb-13·10:51·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····40198·bx·defN·25-Feb-13·09:25·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1198·bx·defN·25-Feb-13·10:51·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1198·bx·defN·25-Feb-13·09:25·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:25·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:51·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:25·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1817·bx·defN·25-Feb-13·10:51·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1817·bx·defN·25-Feb-13·09:25·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:51·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:25·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:51·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:25·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:51·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:25·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·374254·bytes·uncompressed,·60440·bytes·compressed:··83.9%16 14·files,·374254·bytes·uncompressed,·60431·bytes·compressed:··83.9%
77.2 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:51:40,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:25:48,·uncompressed·size·20,·method=store
372 KB
OEBPS/reltool_examples.xhtml
Max HTML report size reached
1.23 KB
OEBPS/content.opf
1.2 KB
OEBPS/content.opf
Max HTML report size reached
372 KB
./usr/share/doc/erlang-doc/html/lib/reltool-1.0.1/doc/html/reltool_examples.html
    
Offset 131, 508 lines modifiedOffset 131, 508 lines modified
131 ··</a>131 ··</a>
132 ··<span·class="text">Start·and·stop·windows·and·servers</span>132 ··<span·class="text">Start·and·stop·windows·and·servers</span>
133 </h2>133 </h2>
134 <p>The·main·process·in·Reltool·is·the·server.·It·can·be·used·as·it·is·or·be·used134 <p>The·main·process·in·Reltool·is·the·server.·It·can·be·used·as·it·is·or·be·used
135 via·the·GUI·frontend·process.·When·the·GUI·is·started,·a·server·process·will135 via·the·GUI·frontend·process.·When·the·GUI·is·started,·a·server·process·will
136 automatically·be·started.·The·GUI·process·is·started·with·<a·href="reltool.html#start/0"><code·class="inline">reltool:start/0</code></a>,136 automatically·be·started.·The·GUI·process·is·started·with·<a·href="reltool.html#start/0"><code·class="inline">reltool:start/0</code></a>,
137 <a·href="reltool.html#start/1"><code·class="inline">reltool:start/1</code></a>·or·<a·href="reltool.html#start_link/1"><code·class="inline">reltool:start_link/1</code></a>.·The·pid·of·its·server·can·be137 <a·href="reltool.html#start/1"><code·class="inline">reltool:start/1</code></a>·or·<a·href="reltool.html#start_link/1"><code·class="inline">reltool:start_link/1</code></a>.·The·pid·of·its·server·can·be
138 obtained·with·<a·href="reltool.html#start_link/1"><code·class="inline">reltool:get_server/1</code></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">20</span><span·class="w">·</span><span·class="p"·data-group-id="7601597183-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="7601597183-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7601597183-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·62ebc555c1cee8660d90e0ba57f4fd64921e6c044bd8ab28d8f94295c8d0577d·...·]-6">]</span><span·class="w">138 obtained·with·<a·href="reltool.html#start_link/1"><code·class="inline">reltool:get_server/1</code></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">20</span><span·class="w">·</span><span·class="p"·data-group-id="2394023751-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="2394023751-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="2394023751-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·a0a4e92ec9f1af98714c6b82f30619147f9bf4096081350642f469d4dccc16b2·...·]-6">]</span><span·class="w">
139 </span><span·class="p"·data-group-id="7601597183-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="7601597183-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="7601597183-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·1e669940630b52581bf4ee15dfe0e60bb6e1fa8448b2889ef0e6200efd74b4d5·...·]-8">]</span><span·class="w">139 </span><span·class="p"·data-group-id="2394023751-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="2394023751-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="2394023751-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·e4298352adacb611ac2a930d60ea2c9aa881d4153729fe85f5097b13cfb4f17a·...·]-8">]</span><span·class="w">
140 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V9</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="7601597183-9">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="7601597183-9">)</span><span·class="w">140 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V9</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="2394023751-9">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="2394023751-9">)</span><span·class="w">
141 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="gp·unselectable">141 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="gp·unselectable">
142 1&gt;·</span><span·class="p"·data-group-id="7601597183-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Win</span><span·class="p"·data-group-id="7601597183-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·280,·SHA:·3cb40141f4e66d300e6af519cdca8819ea60f18c49ada3bad21e236c9f659092·...·]-11">)</span><span·class="p">.</span><span·class="w">142 1&gt;·</span><span·class="p"·data-group-id="2394023751-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Win</span><span·class="p"·data-group-id="2394023751-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·280,·SHA:·07ebcbeb660b03a86e24749f6ee93be393823c8fca3cac9d03c233ba6dc85818·...·]-11">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="p"·data-group-id="7601597183-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.36</span><span·class="p">.</span><span·class="mi">01</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7601597183-13">}</span><span·class="gp·unselectable">143 </span><span·class="p"·data-group-id="2394023751-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.36</span><span·class="p">.</span><span·class="mi">01</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2394023751-13">}</span><span·class="gp·unselectable">
144 2&gt;·</span><span·class="p"·data-group-id="7601597183-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server</span><span·class="p"·data-group-id="7601597183-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·206,·SHA:·13119d7b44b30505b01a9d69389f78531b6ce4eb5a34bb276f78d84040b5e18d·...·]-15">)</span><span·class="p">.</span><span·class="w">144 2&gt;·</span><span·class="p"·data-group-id="2394023751-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server</span><span·class="p"·data-group-id="2394023751-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·206,·SHA:·f21edc096dc9d1f63c60de93adfc030609a2bc0a29593e67db9d8b7c393e2d11·...·]-15">)</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p"·data-group-id="7601597183-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.37</span><span·class="p">.</span><span·class="mi">01</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7601597183-16">}</span><span·class="gp·unselectable">145 </span><span·class="p"·data-group-id="2394023751-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.37</span><span·class="p">.</span><span·class="mi">01</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2394023751-16">}</span><span·class="gp·unselectable">
146 3&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7601597183-17">(</span><span·class="n">Server</span><span·class="p"·data-group-id="7601597183-17">)</span><span·class="p">.</span><span·class="w"> 
147 </span><span·class="p"·data-group-id="7601597183-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7601597183-19">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="760159718[·...·truncated·by·diffoscope;·len:·169,·SHA:·914aebdca71ae486a0d9bd1005566a45eb80ac598b5952da5810ad450c6e56d8·...·]</span><span·class="w">146 3&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="2394023751-17">(</span><span·class="n">Server</span><span·class="p"·data-group-id="2394023751-17">)</span><span·class="p">.</span><span·class="w">
 147 </span><span·class="p"·data-group-id="2394023751-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2394023751-19">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="2394023751-20">[</span><span·class="p"·data-group-id="2394023751-20">]</span><span·class="p"·data-group-id="2394023751-19">}</span><span·class="p"·data-group-id="2394023751-18">}</span><span·class="w">
148 </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="gp·unselectable">148 </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="gp·unselectable">
149 4&gt;·</span><span·class="p"·data-group-id="7601597183-21">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server2</span><span·class="p"·data-group-id="7601597183-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·291,·SHA:·5ebfbd34eee22de11a2e7257770a4d2cee2fd3da305e94d5b7b1c32faaad499f·...·]-22">)</span><span·class="p">.</span><span·class="w">149 4&gt;·</span><span·class="p"·data-group-id="2394023751-21">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server2</span><span·class="p"·data-group-id="2394023751-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·291,·SHA:·930af5d9aab9e0238591c0ad7a99123859913f98b60157487f84c42b7515e548·...·]-22">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="7601597183-24">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.6535</span><span·class="p">.</span><span·class="mi">01</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7601597183-24">}</span><span·class="gp·unselectable">150 </span><span·class="p"·data-group-id="2394023751-24">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.6535</span><span·class="p">.</span><span·class="mi">01</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2394023751-24">}</span><span·class="gp·unselectable">
151 5&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7601597183-25">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="7601597183-25">)</span><span·class="p">.</span><span·class="w"> 
152 </span><span·class="p"·data-group-id="7601597183-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7601597183-27">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="760159718[·...·truncated·by·diffoscope;·len:·204,·SHA:·44de54e9a84fe6ca8723fd61d43518feb2bd4a879ec5edc9ec09f1a14d069210·...·]">151 5&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="2394023751-25">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="2394023751-25">)</span><span·class="p">[·...·truncated·by·diffoscope;·len:·22,·SHA:·e5280ec72a33d941ddb767e9152358107b2476663ca4f611d5a154c3121850a0·...·]">
 152 </span><span·class="p"·data-group-id="2394023751-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2394023751-27">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="2394023751-28">[</span><span·class="p"·data-group-id="2394023751-28">]</span><span·class="p"·data-group-id="2394023751-27">}</span><span·class="p"·data-group-id="2394023751-26">}</span><span·class="gp·unselectable">
153 6&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="7601597183-29">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="7601597183-29">)</span><span·class="p">.</span><span·class="w">153 6&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2394023751-29">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="2394023751-29">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="ss">ok</span></code></pre><h2·id="inspecting-the-configuration"·class="section-heading">154 </span><span·class="ss">ok</span></code></pre><h2·id="inspecting-the-configuration"·class="section-heading">
155 ··<a·href="#inspecting-the-configuration"·class="hover-link">155 ··<a·href="#inspecting-the-configuration"·class="hover-link">
156 ····<i·class="ri-link-m"·aria-hidden="true"></i>156 ····<i·class="ri-link-m"·aria-hidden="true"></i>
157 ··</a>157 ··</a>
158 ··<span·class="text">Inspecting·the·configuration</span>158 ··<span·class="text">Inspecting·the·configuration</span>
159 </h2>159 </h2>
160 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">20</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="5271082113-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·c6eff421b0bf2758c12381230b8e4d05d08a21e1c0847314d1c31d9e269099b1·...·]-6">]</span><span·class="w">160 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">20</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="7572524209-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·f0af9e7172655575463dbf184c6d3d6a402655f72629c88d35230efd24287471·...·]-6">]</span><span·class="w">
161 </span><span·class="p"·data-group-id="5271082113-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="5271082113-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·23dd3111bf15abecd526c9d20301f6eea96d9d8251c1bcaa875bb8573abc3bd9·...·]-8">]</span><span·class="w">161 </span><span·class="p"·data-group-id="7572524209-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="7572524209-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·13beeaab6e613c321ec51e318b9636a69411fa7586a7e12e5e607cb069370fb0·...·]-8">]</span><span·class="w">
162 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V9</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="5271082113-9">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="5271082113-9">)</span><span·class="w">162 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V9</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="7572524209-9">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="7572524209-9">)</span><span·class="w">
163 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="gp·unselectable">163 </span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="gp·unselectable">
164 1&gt;·</span><span·class="n">Config</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-10">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-11">[</span><span·class="p"·data-group-id="5271082113-12">{</span><span·class="ss">escript</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·502,·SHA:·097543ee2c98630f0eadf9fa8de395df96f7f3c9ce2b902d233b3a4773692607·...·]-12">}</span><span·class="p">,</span><span·class="w">164 1&gt;·</span><span·class="n">Config</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-10">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-11">[</span><span·class="p"·data-group-id="7572524209-12">{</span><span·class="ss">escript</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·502,·SHA:·668f801c1d5f4a14ae50e10bb8d929f0b4bfc3cdb544d83594b1208d1cd2e19b·...·]-12">}</span><span·class="p">,</span><span·class="w">
165 »       »       ···</span><span·class="p"·data-group-id="5271082113-15">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-16">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·288,·SHA:·35a75f16cde9b6e45076c7c46e8b046ac68cf19662a100eb598126c4fd82664e·...·]-15">}</span><span·class="p">,</span><span·class="w">165 »       »       ···</span><span·class="p"·data-group-id="7572524209-15">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-16">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·288,·SHA:·07cf56b8bf736eca1601c353a4e81a07105ab800e715d6c39fabfdbde33fe737·...·]-15">}</span><span·class="p">,</span><span·class="w">
166 »       »       ···</span><span·class="p"·data-group-id="5271082113-18">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-19">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·289,·SHA:·f8a17b23aac4631eb133ed59a5f1e8f40a199a424f36fd984a1dfda5e9f08821·...·]-18">}</span><span·class="p">,</span><span·class="w">166 »       »       ···</span><span·class="p"·data-group-id="7572524209-18">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-19">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·289,·SHA:·eb8caadfd0e71700c8683dff37dc9b4992f201f514f3f384b48155487add97d6·...·]-18">}</span><span·class="p">,</span><span·class="w">
167 »       »       ···</span><span·class="p"·data-group-id="5271082113-21">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-22">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·286,·SHA:·539e75e21680c5ee25fe7343067abab8b83b7069f74657a23713ba41d0857a9b·...·]-21">}</span><span·class="p">,</span><span·class="w">167 »       »       ···</span><span·class="p"·data-group-id="7572524209-21">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-22">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·286,·SHA:·8128c24ddb6276e5a2cab6fa03f19ccdff3e21868f9f50fccc73553fc170d1de·...·]-21">}</span><span·class="p">,</span><span·class="w">
168 »       »       ···</span><span·class="p"·data-group-id="5271082113-24">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-25">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·296,·SHA:·54b365b1f421cbc8de3a7c12ae59eb67b9cbecd5ef0bebab9cc3198374c5e0db·...·]-24">}</span><span·class="p">,</span><span·class="w">168 »       »       ···</span><span·class="p"·data-group-id="7572524209-24">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-25">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·296,·SHA:·5f62b6d4a0247cd6e27f1c44986f67a92a4c5ee0d35579d9bcb6424500f6a67f·...·]-24">}</span><span·class="p">,</span><span·class="w">
169 »       »       ···</span><span·class="p"·data-group-id="5271082113-27">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5271082113-28">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·403,·SHA:·c192ccbf64e4bf2e83f296b5644ed51f1ac72083c72b2927fbe7e09615bb82ab·...·]-10">}</span><span·class="p">.</span><span·class="w">169 »       »       ···</span><span·class="p"·data-group-id="7572524209-27">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7572524209-28">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·403,·SHA:·92ac9182c833f0b4b301d170cb8986f623b7530c946a522bbfeccbc4f03ece1b·...·]-10">}</span><span·class="p">.</span><span·class="w">
170 </span><span·class="p"·data-group-id="5271082113-30">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-31">[</span><span·class="p"·data-group-id="5271082113-32">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·406,·SHA:·bf83be844eb4c59cc04a206ebfc0e6d578e027cc578db110038be3b2f26d9d49·...·]-32">}</span><span·class="p">,</span><span·class="w">170 </span><span·class="p"·data-group-id="7572524209-30">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-31">[</span><span·class="p"·data-group-id="7572524209-32">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·406,·SHA:·aed0a08925402fa1d66fcef4f8e3b76dfc5e18d57c2fdcf64ea89e43ab0e2dc5·...·]-32">}</span><span·class="p">,</span><span·class="w">
171 ······</span><span·class="p"·data-group-id="5271082113-35">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-36">[</span><span·class="p"·data-group-id="5271082113-37">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·49b7dae6a3b1c4fe75dd7864e4416302132ca3906b43a5d130228a9538f83681·...·]-35">}</span><span·class="p">,</span><span·class="w">171 ······</span><span·class="p"·data-group-id="7572524209-35">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-36">[</span><span·class="p"·data-group-id="7572524209-37">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·c49cf884728a8970092602f5ed7e5f79e0deb70bee8785c5c8fd9e478a3f2542·...·]-35">}</span><span·class="p">,</span><span·class="w">
172 ······</span><span·class="p"·data-group-id="5271082113-38">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-39">[</span><span·class="p"·data-group-id="5271082113-40">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·189078c26d59c8afe5479dc5bf12b48ccfbda7654b2317c5943609fa0543138f·...·]-38">}</span><span·class="p">,</span><span·class="w">172 ······</span><span·class="p"·data-group-id="7572524209-38">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-39">[</span><span·class="p"·data-group-id="7572524209-40">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·b09876b7864845604e45f3a1d4c82e94fdc42775eb6b7f1b49dc994ec74bfa7f·...·]-38">}</span><span·class="p">,</span><span·class="w">
173 ······</span><span·class="p"·data-group-id="5271082113-41">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-42">[</span><span·class="p"·data-group-id="5271082113-43">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·80104ef6e64f7ec9db3de49e1abadde45dd43e591a13b1c9eb4161865eb74e08·...·]-41">}</span><span·class="p">,</span><span·class="w">173 ······</span><span·class="p"·data-group-id="7572524209-41">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-42">[</span><span·class="p"·data-group-id="7572524209-43">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·8f529d645f73fdb8ba58462ec15d920d1e06618b80133edc49240f1e3a529a53·...·]-41">}</span><span·class="p">,</span><span·class="w">
174 ······</span><span·class="p"·data-group-id="5271082113-44">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-45">[</span><span·class="p"·data-group-id="5271082113-46">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·79f609701445b016ec5e660fe9ead71eb5d5ffe3375eebe57e35e2f4d5807645·...·]-44">}</span><span·class="p">,</span><span·class="w">174 ······</span><span·class="p"·data-group-id="7572524209-44">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-45">[</span><span·class="p"·data-group-id="7572524209-46">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·c38c517c70cdd9518782da654f1ae3ce736d07f53502c67a41888863fa677929·...·]-44">}</span><span·class="p">,</span><span·class="w">
175 ······</span><span·class="p"·data-group-id="5271082113-47">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-48">[</span><span·class="p"·data-group-id="5271082113-49">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·331,·SHA:·7fb5311d4c0dc96cc997fbb3d9dab206680bdea8ebe04c7b4aedeb31fc41ed09·...·]-30">}</span><span·class="w">175 ······</span><span·class="p"·data-group-id="7572524209-47">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-48">[</span><span·class="p"·data-group-id="7572524209-49">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·331,·SHA:·eeb1c20b7bc8cface9488ddd503f2636feb8ed9fb1d72d50841742e2e6bec28e·...·]-30">}</span><span·class="w">
176 </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="gp·unselectable">176 </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="gp·unselectable">
177 2&gt;·</span><span·class="p"·data-group-id="5271082113-50">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server</span><span·class="p"·data-group-id="5271082113-50">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·319,·SHA:·591118ae62267e74df8312cca018252df9b2163465f23e34e953cfef9ef56cd8·...·]-51">)</span><span·class="p">.</span><span·class="w">177 2&gt;·</span><span·class="p"·data-group-id="7572524209-50">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Server</span><span·class="p"·data-group-id="7572524209-50">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·319,·SHA:·210fc863759a232a4a7207e824046900be8449d9ea04bd9985940ef517dd4fe6·...·]-51">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="5271082113-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.66</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5271082113-53">}</span><span·class="w">178 </span><span·class="p"·data-group-id="7572524209-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.66</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7572524209-53">}</span><span·class="w">
179 </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="gp·unselectable">179 </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="gp·unselectable">
180 3&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5271082113-54">(</span><span·class="n">Server</span><span·class="p"·data-group-id="5271082113-54">)</span><span·class="p">.</span><span·class="w">180 3&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7572524209-54">(</span><span·class="n">Server</span><span·class="p"·data-group-id="7572524209-54">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="5271082113-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-56">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-57">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·d871c694a75781ffcab0d0f4143f691fa860da71a40a00390413f9ca8437292e·...·]-58">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">181 </span><span·class="p"·data-group-id="7572524209-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-56">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-57">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·110d0a767e1d5bd03da8dfdce2b2884f708c96b0f3316bb960247e45b2e1236b·...·]-58">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">
182 ···················</span><span·class="p"·data-group-id="5271082113-59">[</span><span·class="p"·data-group-id="5271082113-60">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="5271082113-60">}</span><span·class="p"·data-group-id="527108[·...·truncated·by·diffoscope;·len:·58,·SHA:·caf1ba1e6f502c97d3c12d21726c1bfcdabcde36677f1c3972e956d484830d8f·...·]-58">}</span><span·class="p">,</span><span·class="w">182 ···················</span><span·class="p"·data-group-id="7572524209-59">[</span><span·class="p"·data-group-id="7572524209-60">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="7572524209-60">}</span><span·class="p"·data-group-id="757252[·...·truncated·by·diffoscope;·len:·58,·SHA:·e203422048a875062b05ea988a0b8318f358969cc95a274301050daffc4f6f13·...·]-58">}</span><span·class="p">,</span><span·class="w">
183 ··········</span><span·class="p"·data-group-id="5271082113-61">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-62">[</span><span·class="p"·data-group-id="5271082113-63">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·db32cb71fe79a7f9436f558de58166dfa98092a391b20f04266ab3a9fca6c15a·...·]-61">}</span><span·class="p">,</span><span·class="w">183 ··········</span><span·class="p"·data-group-id="7572524209-61">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-62">[</span><span·class="p"·data-group-id="7572524209-63">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·3e736592050ea6a86902076dad3153cc1e8bb7bbd4a90f534feb0ab392d2b095·...·]-61">}</span><span·class="p">,</span><span·class="w">
184 ··········</span><span·class="p"·data-group-id="5271082113-64">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-65">[</span><span·class="p"·data-group-id="5271082113-66">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·6bca802fb8579d0aacaac75c392a34af4f173624f0e7eb0e69fde8dfacb31c77·...·]-64">}</span><span·class="p">,</span><span·class="w">184 ··········</span><span·class="p"·data-group-id="7572524209-64">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-65">[</span><span·class="p"·data-group-id="7572524209-66">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·fb8c2a6d6f31fe54929bc6ae7a8943947a80c660d1ef9b8e638cf60edb80e542·...·]-64">}</span><span·class="p">,</span><span·class="w">
185 ··········</span><span·class="p"·data-group-id="5271082113-67">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-68">[</span><span·class="p"·data-group-id="5271082113-69">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·a9fe08b6f0a076fb9cfbea15d316cdbddb73ae29ce3ae9b1b3edca86e751cd2d·...·]-67">}</span><span·class="p">,</span><span·class="w">185 ··········</span><span·class="p"·data-group-id="7572524209-67">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-68">[</span><span·class="p"·data-group-id="7572524209-69">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·781c7334883d4fb7e8903a209204f4b7169414c03c5a051a5a60404c400c6b49·...·]-67">}</span><span·class="p">,</span><span·class="w">
186 ··········</span><span·class="p"·data-group-id="5271082113-70">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-71">[</span><span·class="p"·data-group-id="5271082113-72">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·b6cb07bd532beec65be762f64fb3b76ce864a43ec4ac4a83b2a4d7cbf74b479d·...·]-70">}</span><span·class="p">,</span><span·class="w">186 ··········</span><span·class="p"·data-group-id="7572524209-70">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-71">[</span><span·class="p"·data-group-id="7572524209-72">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·de3b0fc8205b4b396bdfb6d28af04ee7ccd4eabd3bb77a4699c6a0784e96bd66·...·]-70">}</span><span·class="p">,</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="5271082113-73">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-74">[</span><span·class="p"·data-group-id="5271082113-75">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·3dc9985c018fa0cd112acf4aa262ddd8da62440db47ff94aa4c8142433070f3e·...·]-55">}</span><span·class="w">187 ··········</span><span·class="p"·data-group-id="7572524209-73">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-74">[</span><span·class="p"·data-group-id="7572524209-75">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·7733d0bdce3610cc21c6d82fcda360c122aeffa881c50cfb21327a86f97efe69·...·]-55">}</span><span·class="w">
188 </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="gp·unselectable">188 </span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="gp·unselectable">
189 4&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5271082113-76">(</span><span·class="n">Server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="5271082113-76">)</span><span·class="p">.</span><span·class="w">189 4&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7572524209-76">(</span><span·class="n">Server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="7572524209-76">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p"·data-group-id="5271082113-77">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-78">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-79">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·d871c694a75781ffcab0d0f4143f691fa860da71a40a00390413f9ca8437292e·...·]-80">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">190 </span><span·class="p"·data-group-id="7572524209-77">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-78">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-79">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·110d0a767e1d5bd03da8dfdce2b2884f708c96b0f3316bb960247e45b2e1236b·...·]-80">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">
191 ···················</span><span·class="p"·data-group-id="5271082113-81">[</span><span·class="p"·data-group-id="5271082113-82">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="5271082113-82">}</span><span·class="p"·data-group-id="527108[·...·truncated·by·diffoscope;·len:·58,·SHA:·ebfc3bac335bab1df35aa02ad0fc6b072ff5f3249ab482c32d638fbabf736ac5·...·]-80">}</span><span·class="p">,</span><span·class="w">191 ···················</span><span·class="p"·data-group-id="7572524209-81">[</span><span·class="p"·data-group-id="7572524209-82">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="7572524209-82">}</span><span·class="p"·data-group-id="757252[·...·truncated·by·diffoscope;·len:·58,·SHA:·053fbdacf5fb0925736dd539d31d7de007beb6c7b63d7da5985d5780fad7fd85·...·]-80">}</span><span·class="p">,</span><span·class="w">
192 ··········</span><span·class="p"·data-group-id="5271082113-83">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-84">[</span><span·class="p"·data-group-id="5271082113-85">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·92848b9cdb616d5e73785a7c4fdb710f0fd806e93fc342e86a983fc49951de0c·...·]-83">}</span><span·class="p">,</span><span·class="w">192 ··········</span><span·class="p"·data-group-id="7572524209-83">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-84">[</span><span·class="p"·data-group-id="7572524209-85">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·4af258b9469dbd113552f6715539daceedb92f4b3913c6819800ea0c4529a6c9·...·]-83">}</span><span·class="p">,</span><span·class="w">
193 ··········</span><span·class="p"·data-group-id="5271082113-86">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-87">[</span><span·class="p"·data-group-id="5271082113-88">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·f749db4ede2beba7349fa68994d243c1362940234dbd5d201f2eb8a7767c6adf·...·]-86">}</span><span·class="p">,</span><span·class="w">193 ··········</span><span·class="p"·data-group-id="7572524209-86">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-87">[</span><span·class="p"·data-group-id="7572524209-88">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·85e296daca83c532ba2517574d4d6ad560d4d6b463cd2d206c7f02d8c275b6e0·...·]-86">}</span><span·class="p">,</span><span·class="w">
194 ··········</span><span·class="p"·data-group-id="5271082113-89">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-90">[</span><span·class="p"·data-group-id="5271082113-91">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·407b2a30bcab31d546689decd03bc2af092d6825fa41682297b7bc64cd84dc1d·...·]-89">}</span><span·class="p">,</span><span·class="w">194 ··········</span><span·class="p"·data-group-id="7572524209-89">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-90">[</span><span·class="p"·data-group-id="7572524209-91">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·eafc278ede47763f7124a19540d702df88fffa72de7e348c65e48b245e306975·...·]-89">}</span><span·class="p">,</span><span·class="w">
195 ··········</span><span·class="p"·data-group-id="5271082113-92">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-93">[</span><span·class="p"·data-group-id="5271082113-94">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·5c37160e7aa9bba20defec9c0eee287be0fa42d9e89eba0e2c085571713e7ac1·...·]-92">}</span><span·class="p">,</span><span·class="w">195 ··········</span><span·class="p"·data-group-id="7572524209-92">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-93">[</span><span·class="p"·data-group-id="7572524209-94">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·4b66471a3c8e225a926775b3d679fa46ee8e18609ea45ab220eb962cb65bd138·...·]-92">}</span><span·class="p">,</span><span·class="w">
196 ··········</span><span·class="p"·data-group-id="5271082113-95">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-96">[</span><span·class="p"·data-group-id="5271082113-97">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·c83fe090974bb1d0633124bd3c2fe0e621b80b3fd9a4db961d1065de560c2cb2·...·]-77">}</span><span·class="w">196 ··········</span><span·class="p"·data-group-id="7572524209-95">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-96">[</span><span·class="p"·data-group-id="7572524209-97">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·ca32adf1ca971d5175f3aa156480e7254b28f34fa789d17396af8f26cb17dd50·...·]-77">}</span><span·class="w">
197 </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="gp·unselectable">197 </span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="gp·unselectable">
198 5&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5271082113-98">(</span><span·class="n">Server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="5271082113-98">)</span><span·class="p">.</span><span·class="w">198 5&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7572524209-98">(</span><span·class="n">Server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="7572524209-98">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="p"·data-group-id="5271082113-99">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-100">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-101">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·186,·SHA:·edf25ecfbbbc7c0e3396eff78d30213be783cd9db3586dfe5b961cea39f3e15b·...·]-102">}</span><span·class="p">,</span><span·class="w">199 </span><span·class="p"·data-group-id="7572524209-99">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-100">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-101">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·186,·SHA:·0de8f0af74760f54257fd0e30177da92464fc83cd29fef36cdd639c8ba66c0ed·...·]-102">}</span><span·class="p">,</span><span·class="w">
200 ··········</span><span·class="p"·data-group-id="5271082113-103">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-104">[</span><span·class="p"·data-group-id="5271082113-104">]</span><span·class="p"·data-group-id="5271082113-103">}</span><span·class="p">,</span><span·class="w">200 ··········</span><span·class="p"·data-group-id="7572524209-103">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-104">[</span><span·class="p"·data-group-id="7572524209-104">]</span><span·class="p"·data-group-id="7572524209-103">}</span><span·class="p">,</span><span·class="w">
201 ··········</span><span·class="p"·data-group-id="5271082113-105">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">201 ··········</span><span·class="p"·data-group-id="7572524209-105">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">
202 ···················</span><span·class="p"·data-group-id="5271082113-106">[</span><span·class="p"·data-group-id="5271082113-107">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="5271082113-107">}</span><span·class="p"·data-group-id="527[·...·truncated·by·diffoscope;·len:·62,·SHA:·fd34b797336165d718fbea3f95265ccd7c46b227b97ff17f0f6b38fbd01ea6a2·...·]-105">}</span><span·class="p">,</span><span·class="w">202 ···················</span><span·class="p"·data-group-id="7572524209-106">[</span><span·class="p"·data-group-id="7572524209-107">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="7572524209-107">}</span><span·class="p"·data-group-id="757[·...·truncated·by·diffoscope;·len:·62,·SHA:·7add7464bb2f5ecb1cfd38e87549aab0e2203df86657c1c8b3bd38a4e588b6d0·...·]-105">}</span><span·class="p">,</span><span·class="w">
203 ··········</span><span·class="p"·data-group-id="5271082113-108">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="5271082113-108">}</span><span·class="p">,</span><span·class="w">203 ··········</span><span·class="p"·data-group-id="7572524209-108">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="7572524209-108">}</span><span·class="p">,</span><span·class="w">
204 ··········</span><span·class="p"·data-group-id="5271082113-109">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="5271082113-109">}</span><span·class="p">,</span><span·class="w">204 ··········</span><span·class="p"·data-group-id="7572524209-109">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="7572524209-109">}</span><span·class="p">,</span><span·class="w">
205 ··········</span><span·class="p"·data-group-id="5271082113-110">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">205 ··········</span><span·class="p"·data-group-id="7572524209-110">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">
206 ···············</span><span·class="p"·data-group-id="5271082113-111">[</span><span·class="p"·data-group-id="5271082113-112">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="5271082113-112">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·502,·SHA:·2efcc4889f55d3a26fa2742859ef79286d63289a910fbd479a8be4c8435c3b94·...·]-110">}</span><span·class="p">,</span><span·class="w">206 ···············</span><span·class="p"·data-group-id="7572524209-111">[</span><span·class="p"·data-group-id="7572524209-112">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="7572524209-112">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·502,·SHA:·daed49d4119987012c7007c7ba7a9ce05aa87d992f7165bdd63692358248e93f·...·]-110">}</span><span·class="p">,</span><span·class="w">
207 ··········</span><span·class="p"·data-group-id="5271082113-115">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-116">[</span><span·class="p"·data-group-id="5271082113-117">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·222,·SHA:·0cfa70adeb2993ebb9023a392383ac2ab6f643e8d126b7eec65d7ee6b680f067·...·]-115">}</span><span·class="p">,</span><span·class="w">207 ··········</span><span·class="p"·data-group-id="7572524209-115">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">mnesia</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-116">[</span><span·class="p"·data-group-id="7572524209-117">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·222,·SHA:·a8a570151efbf4ea67eb5cf12c5cf4dbde7a2a4cffce3ee0fe71fac8270a8ec1·...·]-115">}</span><span·class="p">,</span><span·class="w">
208 ··········</span><span·class="p"·data-group-id="5271082113-118">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-119">[</span><span·class="p"·data-group-id="5271082113-120">{</span><span·clas[·...·truncated·by·diffoscope;·len:·229,·SHA:·751bf451ab04bec2cf565a4c8800ddfd7fe4ce82edb02790d32201f8618a2b7a·...·]-118">}</span><span·class="p">,</span><span·class="w">208 ··········</span><span·class="p"·data-group-id="7572524209-118">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">runtime_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-119">[</span><span·class="p"·data-group-id="7572524209-120">{</span><span·clas[·...·truncated·by·diffoscope;·len:·229,·SHA:·dcd4d76b740c556e3586a0a91627a5133090e26110ea48fd4fa1b972a68d968f·...·]-118">}</span><span·class="p">,</span><span·class="w">
209 ··········</span><span·class="p"·data-group-id="5271082113-121">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-122">[</span><span·class="p"·data-group-id="5271082113-123">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·219,·SHA:·ccdb1a6dc88c2b7f8ea0b4163489e0a0f23d81b9351f499c896b9bd580699075·...·]-121">}</span><span·class="p">,</span><span·class="w">209 ··········</span><span·class="p"·data-group-id="7572524209-121">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-122">[</span><span·class="p"·data-group-id="7572524209-123">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·219,·SHA:·0890e5f91c7198d0353da5464a3d8f61db951a179674a6dedf643fa065caa02c·...·]-121">}</span><span·class="p">,</span><span·class="w">
210 ··········</span><span·class="p"·data-group-id="5271082113-124">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-125">[</span><span·class="p"·data-group-id="5271082113-126">{</span><span·class[·...·truncated·by·diffoscope;·len:·228,·SHA:·ecd573cf9c10f5fd4710f646ac373eb186d33923e04ea8e1f312d06176d43283·...·]-124">}</span><span·class="p">,</span><span·class="w">210 ··········</span><span·class="p"·data-group-id="7572524209-124">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">syntax_tools</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-125">[</span><span·class="p"·data-group-id="7572524209-126">{</span><span·class[·...·truncated·by·diffoscope;·len:·228,·SHA:·7fd7a4acad67da3b55fa7663cc41e318019e75d64d8eafc2ef66e4af63f43c7f·...·]-124">}</span><span·class="p">,</span><span·class="w">
211 ··········</span><span·class="p"·data-group-id="5271082113-127">{</span><span·class="ss">boot_rel</span><span·class="p">,</span><span·class="s">&quot;start_clean&quot;</span><span·class="p"·data-group-id="5271082113-127">}</span><span·class="p">,</span><span·class="w">211 ··········</span><span·class="p"·data-group-id="7572524209-127">{</span><span·class="ss">boot_rel</span><span·class="p">,</span><span·class="s">&quot;start_clean&quot;</span><span·class="p"·data-group-id="7572524209-127">}</span><span·class="p">,</span><span·class="w">
212 ··········</span><span·class="p"·data-group-id="5271082113-128">{</span><span·class="ss">rel</span><span·class="p">,</span><span·class="s">&quot;start_clean&quot;</span><span·class="p">,</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-129">[<[·...·truncated·by·diffoscope;·len:·102,·SHA:·f288f751d6fc88b0cd5718964b9b5c1d7c619de351c4913bf14c5ee1e51765b9·...·]-128">}</span><span·class="p">,</span><span·class="w">212 ··········</span><span·class="p"·data-group-id="7572524209-128">{</span><span·class="ss">rel</span><span·class="p">,</span><span·class="s">&quot;start_clean&quot;</span><span·class="p">,</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-129">[<[·...·truncated·by·diffoscope;·len:·102,·SHA:·b4f3ad23c094d606d3ffb1e912542ab04804b0b927b941f1ec35fa797e4418ba·...·]-128">}</span><span·class="p">,</span><span·class="w">
213 ··········</span><span·class="p"·data-group-id="5271082113-130">{</span><span·class="ss">rel</span><span·class="p">,</span><span·class="s">&quot;start_sasl&quot;</span><span·class="p">,</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-131">[</[·...·truncated·by·diffoscope;·len:·129,·SHA:·1fcc9bb84aff356a26d45a310d0c7b0a522072d9420a1819e1ca426b766a2eaf·...·]-130">}</span><span·class="p">,</span><span·class="w">213 ··········</span><span·class="p"·data-group-id="7572524209-130">{</span><span·class="ss">rel</span><span·class="p">,</span><span·class="s">&quot;start_sasl&quot;</span><span·class="p">,</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-131">[</[·...·truncated·by·diffoscope;·len:·129,·SHA:·05527bd520bec5fd0d4fce6c16c064031858f8e130ee9aea8e08497e0bf3b338·...·]-130">}</span><span·class="p">,</span><span·class="w">
214 ··········</span><span·class="p"·data-group-id="5271082113-132">{</span><span·class="ss">emu_name</span><span·class="p">,</span><span·class="s">&quot;beam&quot;</span><span·class="p"·data-group-id="5271082113-132">}</span><span·class="p">,</span><span·class="w">214 ··········</span><span·class="p"·data-group-id="7572524209-132">{</span><span·class="ss">emu_name</span><span·class="p">,</span><span·class="s">&quot;beam&quot;</span><span·class="p"·data-group-id="7572524209-132">}</span><span·class="p">,</span><span·class="w">
215 ··········</span><span·class="p"·data-group-id="5271082113-133">{</span><span·class="ss">relocatable</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="5271082113-133">}</span><span·class="p">,</span><span·class="w">215 ··········</span><span·class="p"·data-group-id="7572524209-133">{</span><span·class="ss">relocatable</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="7572524209-133">}</span><span·class="p">,</span><span·class="w">
216 ··········</span><span·class="p"·data-group-id="5271082113-134">{</span><span·class="ss">profile</span><span·class="p">,</span><span·class="ss">development</span><span·class="p"·data-group-id="5271082113-134">}</span><span·class="p">,</span><span·class="w">216 ··········</span><span·class="p"·data-group-id="7572524209-134">{</span><span·class="ss">profile</span><span·class="p">,</span><span·class="ss">development</span><span·class="p"·data-group-id="7572524209-134">}</span><span·class="p">,</span><span·class="w">
217 ··········</span><span·class="p"·data-group-id="5271082113-135">{</span><span·class="ss">incl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-136">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="5271082113-136">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·c307ec4a1d01dc9dddfefcd39ca9103b93792b759f27bbdbeba5c663cdbcae56·...·]-135">}</span><span·class="p">,</span><span·class="w">217 ··········</span><span·class="p"·data-group-id="7572524209-135">{</span><span·class="ss">incl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-136">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="7572524209-136">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·02b4d1540598bda52ef9b0c0edd1ab8a173ec85783b67f0121571a02139fcb63·...·]-135">}</span><span·class="p">,</span><span·class="w">
218 ··········</span><span·class="p"·data-group-id="5271082113-137">{</span><span·class="ss">excl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-138">[</span><span·class="p"·data-group-id="5271082113-138">]</span><span·class="p"·data-group-id="5271082113-137">}</span><span·class="p">,</span><span·class="w">218 ··········</span><span·class="p"·data-group-id="7572524209-137">{</span><span·class="ss">excl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-138">[</span><span·class="p"·data-group-id="7572524209-138">]</span><span·class="p"·data-group-id="7572524209-137">}</span><span·class="p">,</span><span·class="w">
219 ··········</span><span·class="p"·data-group-id="5271082113-139">{</span><span·class="ss">incl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-140">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="5271082113-140">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·c307ec4a1d01dc9dddfefcd39ca9103b93792b759f27bbdbeba5c663cdbcae56·...·]-139">}</span><span·class="p">,</span><span·class="w">219 ··········</span><span·class="p"·data-group-id="7572524209-139">{</span><span·class="ss">incl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-140">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="7572524209-140">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·02b4d1540598bda52ef9b0c0edd1ab8a173ec85783b67f0121571a02139fcb63·...·]-139">}</span><span·class="p">,</span><span·class="w">
220 ··········</span><span·class="p"·data-group-id="5271082113-141">{</span><span·class="ss">excl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-142">[</span><span·class="p"·data-group-id="5271082113-142">]</span><span·class="p"·data-group-id="5271082113-141">}</span><span·class="p">,</span><span·class="w">220 ··········</span><span·class="p"·data-group-id="7572524209-141">{</span><span·class="ss">excl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-142">[</span><span·class="p"·data-group-id="7572524209-142">]</span><span·class="p"·data-group-id="7572524209-141">}</span><span·class="p">,</span><span·class="w">
221 ··········</span><span·class="p"·data-group-id="5271082113-143">{</span><span·class="ss">rel_app_type</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5271082113-143">}</span><span·class="p">,</span><span·class="w">221 ··········</span><span·class="p"·data-group-id="7572524209-143">{</span><span·class="ss">rel_app_type</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7572524209-143">}</span><span·class="p">,</span><span·class="w">
222 ··········</span><span·class="p"·data-group-id="5271082113-144">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5271082113-144">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·142,·SHA:·f0dc4481e4ba6355c37abad1996608900dee26e1d561f1145bb212617e9cbbca·...·]-99">}</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="7572524209-144">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7572524209-144">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·142,·SHA:·e75aab7889505f7ad95c0ccbc979efedb02f7807a15ee3fa09ac69334cd531eb·...·]-99">}</span><span·class="w">
223 </span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="gp·unselectable">223 </span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="gp·unselectable">
224 6&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="5271082113-145">(</span><span·class="n">Server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="5271082113-145">)</span><span·class="p">.</span><span·class="w">224 6&gt;·</span><span·class="nc">reltool</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7572524209-145">(</span><span·class="n">Server</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="7572524209-145">)</span><span·class="p">.</span><span·class="w">
225 </span><span·class="p"·data-group-id="5271082113-146">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-147">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-148">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·187,·SHA:·1cf8a6af5626d45386cfb24ae7f541b91e9a2e0a70632c0a246ff0d2b978ccc7·...·]-149">}</span><span·class="p">,</span><span·class="w">225 </span><span·class="p"·data-group-id="7572524209-146">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-147">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-148">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·187,·SHA:·8c06095518a259d239c354afcbedb0404684b703c9326ef87e165204a6e0cb1e·...·]-149">}</span><span·class="p">,</span><span·class="w">
226 ··········</span><span·class="p"·data-group-id="5271082113-150">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-151">[</span><span·class="p"·data-group-id="5271082113-151">]</span><span·class="p"·data-group-id="5271082113-150">}</span><span·class="p">,</span><span·class="w">226 ··········</span><span·class="p"·data-group-id="7572524209-150">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-151">[</span><span·class="p"·data-group-id="7572524209-151">]</span><span·class="p"·data-group-id="7572524209-150">}</span><span·class="p">,</span><span·class="w">
227 ··········</span><span·class="p"·data-group-id="5271082113-152">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">227 ··········</span><span·class="p"·data-group-id="7572524209-152">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/reltool-0.7.3/examples/display_args&quot;</span><span·class="p">,</span><span·class="w">
228 ···················</span><span·class="p"·data-group-id="5271082113-153">[</span><span·class="p"·data-group-id="5271082113-154">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="5271082113-154">}</span><span·class="p"·data-group-id="527[·...·truncated·by·diffoscope;·len:·62,·SHA:·a4622723ae674fa88dfe212cc9bc50b998dca4bf458a22dda05a6f95dd30af1a·...·]-152">}</span><span·class="p">,</span><span·class="w">228 ···················</span><span·class="p"·data-group-id="7572524209-153">[</span><span·class="p"·data-group-id="7572524209-154">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="7572524209-154">}</span><span·class="p"·data-group-id="757[·...·truncated·by·diffoscope;·len:·62,·SHA:·58ed49bff7cb3f46d0fda54b7484f3703d883ecc1698cac7bd7aa6f8747ab894·...·]-152">}</span><span·class="p">,</span><span·class="w">
229 ··········</span><span·class="p"·data-group-id="5271082113-155">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="5271082113-155">}</span><span·class="p">,</span><span·class="w">229 ··········</span><span·class="p"·data-group-id="7572524209-155">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="7572524209-155">}</span><span·class="p">,</span><span·class="w">
230 ··········</span><span·class="p"·data-group-id="5271082113-156">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="5271082113-156">}</span><span·class="p">,</span><span·class="w">230 ··········</span><span·class="p"·data-group-id="7572524209-156">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="7572524209-156">}</span><span·class="p">,</span><span·class="w">
231 ··········</span><span·class="p"·data-group-id="5271082113-157">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-158">[</span><span·class="p"·data-group-id="5271082113-159">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">231 ··········</span><span·class="p"·data-group-id="7572524209-157">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-158">[</span><span·class="p"·data-group-id="7572524209-159">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">
232 ······················</span><span·class="p"·data-group-id="5271082113-160">[</span><span·class="p"·data-group-id="5271082113-161">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="s">&quot;10.0&quot;</span><span·class="p"·data-group-id="5271082113-161">}</span><span·class="p">,</span><span·class="w">232 ······················</span><span·class="p"·data-group-id="7572524209-160">[</span><span·class="p"·data-group-id="7572524209-161">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="s">&quot;10.0&quot;</span><span·class="p"·data-group-id="7572524209-161">}</span><span·class="p">,</span><span·class="w">
233 ·······················</span><span·class="p"·data-group-id="5271082113-162">{</span><span·class="ss">lib_dir</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/erts-10.0&quot;</span><span·class="p"·data-group-id="5271082113-162">}</span><span·class="p">,</span><span·class="w">233 ·······················</span><span·class="p"·data-group-id="7572524209-162">{</span><span·class="ss">lib_dir</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/erts-10.0&quot;</span><span·class="p"·data-group-id="7572524209-162">}</span><span·class="p">,</span><span·class="w">
234 ·······················</span><span·class="p"·data-group-id="5271082113-163">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erl_prim_loader</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-164">[</span><span·class="p"·data-group-id="5271082113-164">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·49e47dff9f15dfffc83e9c2fbbd9c67a46e46f971dc7f86ec8527fc318a79eac·...·]-163">}</span><span·class="p">,</span><span·class="w">234 ·······················</span><span·class="p"·data-group-id="7572524209-163">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erl_prim_loader</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-164">[</span><span·class="p"·data-group-id="7572524209-164">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·c024314fbee5653447a9187f465b26140ffb50f3649c8e6e8299e3e50c805d56·...·]-163">}</span><span·class="p">,</span><span·class="w">
235 ·······················</span><span·class="p"·data-group-id="5271082113-165">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erl_tracer</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-166">[</span><span·class="p"·data-group-id="5271082113-166">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·c39b43f8e33d3a9a990db5fca8aa84cb17339d4cd8e6c52e5a3a79d034d8a0fe·...·]-165">}</span><span·class="p">,</span><span·class="w">235 ·······················</span><span·class="p"·data-group-id="7572524209-165">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erl_tracer</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-166">[</span><span·class="p"·data-group-id="7572524209-166">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·d28224094a9e08fd5cce1b77779535f21179311afa1b3f2821c975165439ab84·...·]-165">}</span><span·class="p">,</span><span·class="w">
236 ·······················</span><span·class="p"·data-group-id="5271082113-167">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-168">[</span><span·class="p"·data-group-id="5271082113-168">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·3e2bac9860eea07c3e7ac1c23f6f748e378ff893375f58813c1ca325478bd660·...·]-167">}</span><span·class="p">,</span><span·class="w">236 ·······················</span><span·class="p"·data-group-id="7572524209-167">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-168">[</span><span·class="p"·data-group-id="7572524209-168">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·c6ba63b45791ce50ef6058d529f06fb72380be8bc457ca9e844f8a5935f383d8·...·]-167">}</span><span·class="p">,</span><span·class="w">
237 ·······················</span><span·class="p"·data-group-id="5271082113-169">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_code_purger</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-170">[</span><span·class="p"·data-group-id="5271082113-170">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·874f42f02faab58a1b7a7269ed27770531da3114ba4da02dd9593250f1e75841·...·]-169">}</span><span·class="p">,</span><span·class="w">237 ·······················</span><span·class="p"·data-group-id="7572524209-169">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_code_purger</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-170">[</span><span·class="p"·data-group-id="7572524209-170">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·223381051c9ecdf3796b6348df6d79554438b134b35345c12454464d4435091e·...·]-169">}</span><span·class="p">,</span><span·class="w">
238 ·······················</span><span·class="p"·data-group-id="5271082113-171">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_dirty_process_signal_handler</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-172">[</span><span·class="p"·data-group-id="5271082113-172[·...·truncated·by·diffoscope;·len:·51,·SHA:·55db82ad6d9d4c50538f3bb9de37b50696bff81149e921c4961999611661b1ad·...·]-171">}</span><span·class="p">,</span><span·class="w">238 ·······················</span><span·class="p"·data-group-id="7572524209-171">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_dirty_process_signal_handler</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-172">[</span><span·class="p"·data-group-id="7572524209-172[·...·truncated·by·diffoscope;·len:·51,·SHA:·a3ad809a4ac7b1e68faff7832333f821256859fc06b1598a13f018859c4ff048·...·]-171">}</span><span·class="p">,</span><span·class="w">
239 ·······················</span><span·class="p"·data-group-id="5271082113-173">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_internal</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-174">[</span><span·class="p"·data-group-id="5271082113-174">]</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·a65133a96fd8ad93c17afe2b5c5a67a0635678f3b0a0d55126bd7e91175585ff·...·]-173">}</span><span·class="p">,</span><span·class="w">239 ·······················</span><span·class="p"·data-group-id="7572524209-173">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_internal</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-174">[</span><span·class="p"·data-group-id="7572524209-174">]</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·ea765da77e22f8edc594fd6992517c6eebf006818f3f75b01a3211b7a83eed0f·...·]-173">}</span><span·class="p">,</span><span·class="w">
240 ·······················</span><span·class="p"·data-group-id="5271082113-175">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_literal_area_collector</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-176">[</span><span·class="p"·data-group-id="5271082113-176">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·98b1cb23c32b4bfbd3a0f0710bebfc516f6e4e581aa8c7c2ec5d397ea7303851·...·]-175">}</span><span·class="p">,</span><span·class="w">240 ·······················</span><span·class="p"·data-group-id="7572524209-175">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erts_literal_area_collector</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-176">[</span><span·class="p"·data-group-id="7572524209-176">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·61d8978c703951b6854da2a169592683cc33751a51422465a0777676733643e9·...·]-175">}</span><span·class="p">,</span><span·class="w">
241 ·······················</span><span·class="p"·data-group-id="5271082113-177">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">init</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-178">[</span><span·class="p"·data-group-id="5271082113-178">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·175f8de0eec2d55998bc65d59bc08d1cf93a6c63d917a3f41935aa9909fbfa22·...·]-177">}</span><span·class="p">,</span><span·class="w">241 ·······················</span><span·class="p"·data-group-id="7572524209-177">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">init</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-178">[</span><span·class="p"·data-group-id="7572524209-178">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·d16a8960fe0edf05becabfd587aab797897642d60ab7b25250225b3ad9bd2773·...·]-177">}</span><span·class="p">,</span><span·class="w">
242 ·······················</span><span·class="p"·data-group-id="5271082113-179">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erl_init</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5271082113-179">}</span><span·class="p">,</span><span·class="w">242 ·······················</span><span·class="p"·data-group-id="7572524209-179">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">erl_init</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7572524209-179">}</span><span·class="p">,</span><span·class="w">
243 ·······················</span><span·class="p"·data-group-id="5271082113-180">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5271082113-180">}</span><span·class="p">,</span><span·class="w">243 ·······················</span><span·class="p"·data-group-id="7572524209-180">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7572524209-180">}</span><span·class="p">,</span><span·class="w">
244 ·······················</span><span·class="p"·data-group-id="5271082113-181">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5271082113-181">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·197,·SHA:·ff14d2e4a5d8456e0deb67d38086a29ca5d10f183f1516f5330ccbdaf3331a6e·...·]-157">}</span><span·class="p">,</span><span·class="w">244 ·······················</span><span·class="p"·data-group-id="7572524209-181">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7572524209-181">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·cla[·...·truncated·by·diffoscope;·len:·197,·SHA:·53f003a63334e60dbbcd73e363a556a676e5bc1f63680271e17444c162a219ff·...·]-157">}</span><span·class="p">,</span><span·class="w">
245 ··········</span><span·class="p"·data-group-id="5271082113-182">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">compiler</span><span·class="p">,</span><span·class="w">245 ··········</span><span·class="p"·data-group-id="7572524209-182">{</span><span·class="ss">app</span><span·class="p">,</span><span·class="ss">compiler</span><span·class="p">,</span><span·class="w">
246 ···············</span><span·class="p"·data-group-id="5271082113-183">[</span><span·class="p"·data-group-id="5271082113-184">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="s">&quot;7.0.4&quot;</span><span·class="p"·data-group-id="5271082113-184">}</span><span·class="p">,</span><span·class="w">246 ···············</span><span·class="p"·data-group-id="7572524209-183">[</span><span·class="p"·data-group-id="7572524209-184">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="s">&quot;7.0.4&quot;</span><span·class="p"·data-group-id="7572524209-184">}</span><span·class="p">,</span><span·class="w">
247 ················</span><span·class="p"·data-group-id="5271082113-185">{</span><span·class="ss">lib_dir</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/compiler-7.0.4&quot;</span><span·class="p"·data-group-id="5271082113-185">}</span><span·class="p">,</span><span·class="w">247 ················</span><span·class="p"·data-group-id="7572524209-185">{</span><span·class="ss">lib_dir</span><span·class="p">,</span><span·class="s">&quot;/usr/local/lib/erlang/lib/compiler-7.0.4&quot;</span><span·class="p"·data-group-id="7572524209-185">}</span><span·class="p">,</span><span·class="w">
248 ················</span><span·class="p"·data-group-id="5271082113-186">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_a</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-187">[</span><span·class="p"·data-group-id="5271082113-187">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·3e2bac9860eea07c3e7ac1c23f6f748e378ff893375f58813c1ca325478bd660·...·]-186">}</span><span·class="p">,</span><span·class="w">248 ················</span><span·class="p"·data-group-id="7572524209-186">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_a</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-187">[</span><span·class="p"·data-group-id="7572524209-187">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·c6ba63b45791ce50ef6058d529f06fb72380be8bc457ca9e844f8a5935f383d8·...·]-186">}</span><span·class="p">,</span><span·class="w">
249 ················</span><span·class="p"·data-group-id="5271082113-188">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_asm</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-189">[</span><span·class="p"·data-group-id="5271082113-189">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·84d0c4d0f9dbbbcd136cdb69e78c21bfa2b4e46f1f765fc6ca72c53bd214d98e·...·]-188">}</span><span·class="p">,</span><span·class="w">249 ················</span><span·class="p"·data-group-id="7572524209-188">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_asm</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-189">[</span><span·class="p"·data-group-id="7572524209-189">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·d3f77e770d2fb8014acfe0c51d1768eb2f4dc599fb79b394f913180bf06acb2b·...·]-188">}</span><span·class="p">,</span><span·class="w">
250 ················</span><span·class="p"·data-group-id="5271082113-190">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_block</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-191">[</span><span·class="p"·data-group-id="5271082113-191">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·c39b43f8e33d3a9a990db5fca8aa84cb17339d4cd8e6c52e5a3a79d034d8a0fe·...·]-190">}</span><span·class="p">,</span><span·class="w">250 ················</span><span·class="p"·data-group-id="7572524209-190">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_block</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-191">[</span><span·class="p"·data-group-id="7572524209-191">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·d28224094a9e08fd5cce1b77779535f21179311afa1b3f2821c975165439ab84·...·]-190">}</span><span·class="p">,</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="5271082113-192">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_bs</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-193">[</span><span·class="p"·data-group-id="5271082113-193">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·5d74202dda22de63ec75b71b8cca037dd369d02933f6f054f8b527b3866178fa·...·]-192">}</span><span·class="p">,</span><span·class="w">251 ················</span><span·class="p"·data-group-id="7572524209-192">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_bs</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-193">[</span><span·class="p"·data-group-id="7572524209-193">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·7ac1d0f2e5bba14cf16a2b5ac096812eb8dee62f9b6f472c267abe758801dae9·...·]-192">}</span><span·class="p">,</span><span·class="w">
252 ················</span><span·class="p"·data-group-id="5271082113-194">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_bsm</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-195">[</span><span·class="p"·data-group-id="5271082113-195">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·84d0c4d0f9dbbbcd136cdb69e78c21bfa2b4e46f1f765fc6ca72c53bd214d98e·...·]-194">}</span><span·class="p">,</span><span·class="w">252 ················</span><span·class="p"·data-group-id="7572524209-194">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_bsm</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-195">[</span><span·class="p"·data-group-id="7572524209-195">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·d3f77e770d2fb8014acfe0c51d1768eb2f4dc599fb79b394f913180bf06acb2b·...·]-194">}</span><span·class="p">,</span><span·class="w">
253 ················</span><span·class="p"·data-group-id="5271082113-196">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_clean</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-197">[</span><span·class="p"·data-group-id="5271082113-197">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·c39b43f8e33d3a9a990db5fca8aa84cb17339d4cd8e6c52e5a3a79d034d8a0fe·...·]-196">}</span><span·class="p">,</span><span·class="w">253 ················</span><span·class="p"·data-group-id="7572524209-196">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_clean</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-197">[</span><span·class="p"·data-group-id="7572524209-197">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·d28224094a9e08fd5cce1b77779535f21179311afa1b3f2821c975165439ab84·...·]-196">}</span><span·class="p">,</span><span·class="w">
254 ················</span><span·class="p"·data-group-id="5271082113-198">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_dead</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-199">[</span><span·class="p"·data-group-id="5271082113-199">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4e080f396d2daa89bc635311e871fa2802cd75487624b64787443dc2c08afe5a·...·]-198">}</span><span·class="p">,</span><span·class="w">254 ················</span><span·class="p"·data-group-id="7572524209-198">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_dead</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-199">[</span><span·class="p"·data-group-id="7572524209-199">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·e73501fb286cfb928454449a95c32d5ea6f151aa52dceb61f4014badb2cdbe24·...·]-198">}</span><span·class="p">,</span><span·class="w">
255 ················</span><span·class="p"·data-group-id="5271082113-200">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_dict</span><span·class="p">,</span><span·class="p"·data-group-id="5271082113-201">[</span><span·class="p"·data-group-id="5271082113-201">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4e080f396d2daa89bc635311e871fa2802cd75487624b64787443dc2c08afe5a·...·]-200">}</span><span·class="p">,</span><span·class="w">255 ················</span><span·class="p"·data-group-id="7572524209-200">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="ss">beam_dict</span><span·class="p">,</span><span·class="p"·data-group-id="7572524209-201">[</span><span·class="p"·data-group-id="7572524209-201">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·e73501fb286cfb928454449a95c32d5ea6f151aa52dceb61f4014badb2cdbe24·...·]-200">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 221783/381226 bytes (58.18%) of diff not shown.
215 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/dbg.html
    
Offset 127, 129 lines modifiedOffset 127, 129 lines modified
127 ··</h1>127 ··</h1>
  
  
128 ····<section·id="moduledoc">128 ····<section·id="moduledoc">
129 <p>The·Text·Based·Trace·Facility</p><p>This·module·implements·a·text·based·interface·to·the129 <p>The·Text·Based·Trace·Facility</p><p>This·module·implements·a·text·based·interface·to·the
130 <a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>,·<a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#port/4"><code·class="inline">trace:port/4</code></a>,·and·<a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#function/4"><code·class="inline">trace:function/4</code></a>·BIFs,130 <a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>,·<a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#port/4"><code·class="inline">trace:port/4</code></a>,·and·<a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#function/4"><code·class="inline">trace:function/4</code></a>·BIFs,
131 simplifying·tracing·of·functions,·processes,·ports,·and·messages.</p><p>To·quickly·get·started·on·tracing·function·calls·you·can·use·the131 simplifying·tracing·of·functions,·processes,·ports,·and·messages.</p><p>To·quickly·get·started·on·tracing·function·calls·you·can·use·the
132 following·code·in·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="3393657677-1">(</span><span·class="p"·data-group-id="3393657677-1">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Start·the·default·trace·message·receiver</span><span·class="w">132 following·code·in·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="0756987787-1">(</span><span·class="p"·data-group-id="0756987787-1">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Start·the·default·trace·message·receiver</span><span·class="w">
133 </span><span·class="p"·data-group-id="3393657677-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3393657677-2">}</span><span·class="gp·unselectable">133 </span><span·class="p"·data-group-id="0756987787-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0756987787-2">}</span><span·class="gp·unselectable">
134 2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="3393657677-3">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id="3393657677-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Set·upp·call·tracing·on·all·processes</span><span·class="w">134 2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="0756987787-3">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id="0756987787-3">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Set·upp·call·tracing·on·all·processes</span><span·class="w">
135 </span><span·class="p"·data-group-id="3393657677-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3393657677-5">[</span><span·class="p"·data-group-id="3393657677-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·210,·SHA:·b59257dcd93db365a5d38ec8df37d2fe8deef08307f50c889bb3ef6a3dd83253·...·]7-4">}</span><span·class="gp·unselectable">135 </span><span·class="p"·data-group-id="0756987787-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0756987787-5">[</span><span·class="p"·data-group-id="0756987787-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·210,·SHA:·7decac02faa855b247604093e291fc117d31763be8dfe9bab1c8ada92983d946·...·]7-4">}</span><span·class="gp·unselectable">
136 3&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="3393657677-7">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">seq</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cx</span><span·class="p"·data-group-id="3393657677-7">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%··Set·up·call·and·exception·tracing·on·lists:seq/2,3</span><span·class="w">136 3&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="0756987787-7">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">seq</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cx</span><span·class="p"·data-group-id="0756987787-7">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%··Set·up·call·and·exception·tracing·on·lists:seq/2,3</span><span·class="w">
137 </span><span·class="p"·data-group-id="3393657677-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3393657677-9">[</span><span·class="p"·data-group-id="3393657677-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·422,·SHA:·955beeac1d74738ae299f3d9ab97add6e475c1f107570bbcc9e0e6bdb56508a0·...·]7-8">}</span><span·class="gp·unselectable">137 </span><span·class="p"·data-group-id="0756987787-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0756987787-9">[</span><span·class="p"·data-group-id="0756987787-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·422,·SHA:·b0cda3298ec4edd1abe1634cb1f7ddb346d68d32f62a5029210a1043c3c7f3ee·...·]7-8">}</span><span·class="gp·unselectable">
138 4&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="3393657677-12">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p"·data-group-id="3393657677-12">)</span><span·class="p">.</span><span·class="w">138 4&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="0756987787-12">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p"·data-group-id="0756987787-12">)</span><span·class="p">.</span><span·class="w">
139 </span><span·class="p"·data-group-id="3393657677-13">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3393657677-13">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·884,·SHA:·797bb0e4d76ee30c3d99098794686b334020d083d641192967dce960e0d62425·...·]7-15">)</span><span·class="w">139 </span><span·class="p"·data-group-id="0756987787-13">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0756987787-13">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·884,·SHA:·07a895779c7fec449f6215b7bd3f3521f282284b296343244dceaad47231fa69·...·]7-15">)</span><span·class="w">
140 </span><span·class="p"·data-group-id="3393657677-18">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class=[·...·truncated·by·diffoscope;·len:·274,·SHA:·414b0b45b35952cbd3ba6919218217eeb60af889e94b292a5266be8e0d67c010·...·]7-18">]</span><span·class="w">140 </span><span·class="p"·data-group-id="0756987787-18">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class=[·...·truncated·by·diffoscope;·len:·274,·SHA:·1c713f8d9f5056a5e77bcdcb99f5c0fa069e487b29d9954a71568b45b3aac1be·...·]7-18">]</span><span·class="w">
141 </span><span·class="p"·data-group-id="3393657677-19">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3393657677-19">)</span><span·class="w">·</span><span·class="ss">returne[·...·truncated·by·diffoscope;·len:·850,·SHA:·642a22608ebed51593caf53037031481d3e3c74c9de11eef43ff1d4a6ce51b8b·...·]7-20">]</span></code></pre><p>The·utilities·are·also·suitable·to·use·in·system·testing·on·large·systems,·where141 </span><span·class="p"·data-group-id="0756987787-19">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0756987787-19">)</span><span·class="w">·</span><span·class="ss">returne[·...·truncated·by·diffoscope;·len:·850,·SHA:·366712f556ca6ce9cad01188a0469135632de662dac17d539d612137256a8126·...·]7-20">]</span></code></pre><p>The·utilities·are·also·suitable·to·use·in·system·testing·on·large·systems,·where
142 other·tools·have·too·severe·impact·on·the·system·performance.·Some·primitive142 other·tools·have·too·severe·impact·on·the·system·performance.·Some·primitive
143 support·for·sequential·tracing·is·also·included;·see·the143 support·for·sequential·tracing·is·also·included;·see·the
144 <a·href="dbg.html#advanced">advanced·topics</a>·section.</p><h2·id="module-simple-tracing-from-the-shell-with-no-prior-set-up"·class="section-heading">144 <a·href="dbg.html#advanced">advanced·topics</a>·section.</p><h2·id="module-simple-tracing-from-the-shell-with-no-prior-set-up"·class="section-heading">
145 ··<a·href="#module-simple-tracing-from-the-shell-with-no-prior-set-up"·class="hover-link">145 ··<a·href="#module-simple-tracing-from-the-shell-with-no-prior-set-up"·class="hover-link">
146 ····<i·class="ri-link-m"·aria-hidden="true"></i>146 ····<i·class="ri-link-m"·aria-hidden="true"></i>
147 ··</a>147 ··</a>
148 ··<span·class="text">Simple·tracing·from·the·shell·with·no·prior·set·up</span>148 ··<span·class="text">Simple·tracing·from·the·shell·with·no·prior·set·up</span>
149 </h2>149 </h2>
150 <p>To·trace·a·call·to·a·function·with·minimal·fuss,·call·<a·href="#c/3"><code·class="inline">dbg:c(Module,·Name,·Arguments)</code></a>.·<a·href="#c/3"><code·class="inline">dbg:c/3</code></a>·starts·a·temporary·trace150 <p>To·trace·a·call·to·a·function·with·minimal·fuss,·call·<a·href="#c/3"><code·class="inline">dbg:c(Module,·Name,·Arguments)</code></a>.·<a·href="#c/3"><code·class="inline">dbg:c/3</code></a>·starts·a·temporary·trace
151 receiver,·enables·all·trace·flags,·and·calls·the·designated·function151 receiver,·enables·all·trace·flags,·and·calls·the·designated·function
152 from·a·temporary·process.·For·example,·here·is·how·to·trace·a·call152 from·a·temporary·process.·For·example,·here·is·how·to·trace·a·call
153 to·<a·href="../../../../lib/kernel-10.2.2/doc/html/application.html#which_applications/0"><code·class="inline">application:which_applications/0</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">c</span><span·class="p"·data-group-id="5381021519-1">(</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">which_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5381021519-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·f9474227ea9ca6b5eb7fc17c078ce6c1fce3168c8be4ccd96e3a7f61ca368cc4·...·]-1">)</span><span·class="p">.</span><span·class="w">153 to·<a·href="../../../../lib/kernel-10.2.2/doc/html/application.html#which_applications/0"><code·class="inline">application:which_applications/0</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">c</span><span·class="p"·data-group-id="6772542783-1">(</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">which_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6772542783-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·0d17ae855bccecafe07847f375a8eeeaaa8827a3b7e3201d729867adc9f24106·...·]-1">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="5381021519-3">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5381021519-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·be833e795a09d28c73ff01efa73901305ce09a51ba0f28bd95c2abf67ce47813·...·]-5">{</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">154 </span><span·class="p"·data-group-id="6772542783-3">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6772542783-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·37c6db43a70a77b9219b8823d5c8e579c4cce40dcd81cd6273c64244bf739297·...·]-5">{</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">
155 ····································</span><span·class="p"·data-group-id="5381021519-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">155 ····································</span><span·class="p"·data-group-id="6772542783-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">
156 ·····································</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.0</span><span·class="p">.</span><span·class="mf">11779.270031856</span><span·class="p">.</span><span·class="mf">1478295555.230456</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5381021519-6">]</span><span·class="p"·data-group-id="5381021519-5">}</span><span·class="p">,</span><span·class="w">156 ·····································</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.0</span><span·class="p">.</span><span·class="mf">11779.270031856</span><span·class="p">.</span><span·class="mf">1478295555.230456</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6772542783-6">]</span><span·class="p"·data-group-id="6772542783-5">}</span><span·class="p">,</span><span·class="w">
157 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="5381021519-4">}</span><span·class="w">·</span><span·class="p"·data-group-id="5381021519-7">(</span><span·class="n">Timestamp</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5381021519-8">{</span><span·class="mi">1710</span><span·class="p">,</span><span·class="w">157 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="6772542783-4">}</span><span·class="w">·</span><span·class="p"·data-group-id="6772542783-7">(</span><span·class="n">Timestamp</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="6772542783-8">{</span><span·class="mi">1710</span><span·class="p">,</span><span·class="w">
158 ····································································</span><span·class="mi">847802</span><span·class="p">,</span><span·class="w">158 ····································································</span><span·class="mi">847802</span><span·class="p">,</span><span·class="w">
159 ····································································</span><span·class="mi">479222</span><span·class="p"·data-group-id="5381021519-8">}</span><span·class="p"·data-group-id="5381021519-7">)</span><span·class="w">159 ····································································</span><span·class="mi">479222</span><span·class="p"·data-group-id="6772542783-8">}</span><span·class="p"·data-group-id="6772542783-7">)</span><span·class="w">
160 </span><span·class="p"·data-group-id="5381021519-9">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5381021519-9">)</span><span·class="w">·</span><span·class="ss">out</span[·...·truncated·by·diffoscope;·len:·707,·SHA:·904ee9dfca6f320b52b09db34a6bd6e1f4cb4f34cd7991e8dfb94fc217714514·...·]-11">)</span><span·class="w">160 </span><span·class="p"·data-group-id="6772542783-9">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6772542783-9">)</span><span·class="w">·</span><span·class="ss">out</span[·...·truncated·by·diffoscope;·len:·707,·SHA:·107914bc4d3d918496136c998e0f0ffef2e278393766139a40762b010fc83fed·...·]-11">)</span><span·class="w">
161 </span><span·class="p"·data-group-id="5381021519-13">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5381021519-13">)</span><span·class="w">·</span><span·class="ss">in</spa[·...·truncated·by·diffoscope;·len:·708,·SHA:·8fabf0f9709fbdffa70a10b8d98ef104bbf940553796cbea507beb6de4063c1c·...·]-15">)</span><span·class="w">161 </span><span·class="p"·data-group-id="6772542783-13">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6772542783-13">)</span><span·class="w">·</span><span·class="ss">in</spa[·...·truncated·by·diffoscope;·len:·708,·SHA:·a9ededd1c9aa896227e0da9eedb158d1d30d62a6ef8d8c5e0e6a2ae427169610·...·]-15">)</span><span·class="w">
162 </span><span·class="p"·data-group-id="5381021519-17">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5381021519-17">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·522,·SHA:·6418ff0c0826695954dc9176951af263ac2c6b3b88555bc15f61c1ed1fb5f6a4·...·]-20">]</span><span·class="p">,</span><span·class="w">162 </span><span·class="p"·data-group-id="6772542783-17">(</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6772542783-17">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·522,·SHA:·afd3bcdb9fb172eac40d825431fc9054aa2e5ff9642ddaefa5352fd3a4711b5c·...·]-20">]</span><span·class="p">,</span><span·class="w">
163 ···············</span><span·class="p"·data-group-id="5381021519-21">[</span><span·class="p"·data-group-id="5381021519-22">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·9d3f8bc8fe1aa7197de11fd1049a648fd1c0e405a165b43201615032e302d0d2·...·]-22">}</span><span·class="p">,</span><span·class="w">163 ···············</span><span·class="p"·data-group-id="6772542783-21">[</span><span·class="p"·data-group-id="6772542783-22">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·48530dff8eaa0ff3312eed1dc0c9a07d99eb713046a2db06d5af1aca5c3562dc·...·]-22">}</span><span·class="p">,</span><span·class="w">
164 ················</span><span·class="p"·data-group-id="5381021519-23">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="5381021519-23">}</span><span·clas[·...·truncated·by·diffoscope;·len:·297,·SHA:·f7baf9e3e1d47b7a3427c16b082e455e24112c739de45ced06e64a34758de74a·...·]-25">{</span><span·class="mi">1710</span><span·class="p">,</span><span·class="w">164 ················</span><span·class="p"·data-group-id="6772542783-23">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="6772542783-23">}</span><span·clas[·...·truncated·by·diffoscope;·len:·297,·SHA:·d56beef9c0cc287c1d3bfd27dd9343ceb302df83e7ed651480164ff7dd9803fe·...·]-25">{</span><span·class="mi">1710</span><span·class="p">,</span><span·class="w">
165 ···································································</span><span·class="mi">847802</span><span·class="p">,</span><span·class="w">165 ···································································</span><span·class="mi">847802</span><span·class="p">,</span><span·class="w">
166 ···································································</span><span·class="mi">479274</span><span·class="p"·data-group-id="5381021519-25">}</span><span·class="p"·data-group-id="5381021519-24">)</span><span·class="w">166 ···································································</span><span·class="mi">479274</span><span·class="p"·data-group-id="6772542783-25">}</span><span·class="p"·data-group-id="6772542783-24">)</span><span·class="w">
167 </span><span·class="p"·data-group-id="5381021519-26">[</span><span·class="p"·data-group-id="5381021519-27">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·9d3f8bc8fe1aa7197de11fd1049a648fd1c0e405a165b43201615032e302d0d2·...·]-27">}</span><span·class="p">,</span><span·class="w">167 </span><span·class="p"·data-group-id="6772542783-26">[</span><span·class="p"·data-group-id="6772542783-27">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·48530dff8eaa0ff3312eed1dc0c9a07d99eb713046a2db06d5af1aca5c3562dc·...·]-27">}</span><span·class="p">,</span><span·class="w">
168 ·</span><span·class="p"·data-group-id="5381021519-28">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="5381021519-28">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·9d3f8bc8fe1aa7197de11fd1049a648fd1c0e405a165b43201615032e302d0d2·...·]-26">]</span></code></pre><p>Four·trace·events·are·generated:</p><ul><li>A·send·event·(<code·class="inline">!</code>)·for·the·sending·of·a·request·from·the·current·process168 ·</span><span·class="p"·data-group-id="6772542783-28">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="6772542783-28">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·48530dff8eaa0ff3312eed1dc0c9a07d99eb713046a2db06d5af1aca5c3562dc·...·]-26">]</span></code></pre><p>Four·trace·events·are·generated:</p><ul><li>A·send·event·(<code·class="inline">!</code>)·for·the·sending·of·a·request·from·the·current·process
169 to·the·<code·class="inline">application_controller</code>·process.</li><li>A·schedule-out·event·(<code·class="inline">out</code>)·when·the·current·process·schedules·out·while169 to·the·<code·class="inline">application_controller</code>·process.</li><li>A·schedule-out·event·(<code·class="inline">out</code>)·when·the·current·process·schedules·out·while
170 waiting·in·a·<code·class="inline">receive</code>·for·the·reply·to·arrive.</li><li>A·schedule-in·event·(<code·class="inline">in</code>)·when·the·current·process·is·scheduled·in·when170 waiting·in·a·<code·class="inline">receive</code>·for·the·reply·to·arrive.</li><li>A·schedule-in·event·(<code·class="inline">in</code>)·when·the·current·process·is·scheduled·in·when
171 reply·has·arrived.</li><li>A·<code·class="inline">receive</code>·event·(<code·class="inline">&lt;&lt;</code>)·when·the·current·process·retrieves·the·reply·from171 reply·has·arrived.</li><li>A·<code·class="inline">receive</code>·event·(<code·class="inline">&lt;&lt;</code>)·when·the·current·process·retrieves·the·reply·from
172 the·<code·class="inline">application_controller</code>·process.</li></ul><p>The·<a·href="#c/4"><code·class="inline">dbg:c/4</code></a>·function·has·a·fourth·argument·for·specifying·the·trace·flags.172 the·<code·class="inline">application_controller</code>·process.</li></ul><p>The·<a·href="#c/4"><code·class="inline">dbg:c/4</code></a>·function·has·a·fourth·argument·for·specifying·the·trace·flags.
173 Here·is·how·to·only·show·message·sending·and·receiving:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">c</span><span·class="p"·data-group-id="1503622212-1">(</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">which_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1503622212-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·159,·SHA:·eadc05bfe8a8536f307b4a311e269c5b0f776d6f9a77a53d5b54b462e5ac8922·...·]-1">)</span><span·class="p">.</span><span·class="w">173 Here·is·how·to·only·show·message·sending·and·receiving:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">c</span><span·class="p"·data-group-id="3487636614-1">(</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">which_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3487636614-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·159,·SHA:·438288ff4d7ddbe9c0739681dbae13a018cdf4ae8775c227a34beacb149a7067·...·]-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="1503622212-3">(</span><span·class="o">&lt;</span><span·class="mf">0.96</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1503622212-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·6ef49b6876e315e634afb141af14802c513ce59cf990966c9986f97883fb0580·...·]-5">{</span><span·class="o">&lt;</span><span·class="mf">0.96</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">174 </span><span·class="p"·data-group-id="3487636614-3">(</span><span·class="o">&lt;</span><span·class="mf">0.96</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3487636614-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·397cb4df255f52b25232b772988f34198141034fa78053d71955833d5b9ff657·...·]-5">{</span><span·class="o">&lt;</span><span·class="mf">0.96</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">
175 ····································</span><span·class="p"·data-group-id="1503622212-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">175 ····································</span><span·class="p"·data-group-id="3487636614-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">
176 ·····································</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.0</span><span·class="p">.</span><span·class="mf">12291.270031856</span><span·class="p">.</span><span·class="mf">1478295555.230496</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1503622212-6">]</span><span·class="p"·data-group-id="1503622212-5">}</span><span·class="p">,</span><span·class="w">176 ·····································</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span><span·class="mf">0.0</span><span·class="p">.</span><span·class="mf">12291.270031856</span><span·class="p">.</span><span·class="mf">1478295555.230496</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3487636614-6">]</span><span·class="p"·data-group-id="3487636614-5">}</span><span·class="p">,</span><span·class="w">
177 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="1503622212-4">}</span><span·class="w">177 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="3487636614-4">}</span><span·class="w">
178 </span><span·class="p"·data-group-id="1503622212-7">(</span><span·class="o">&lt;</span><span·class="mf">0.96</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1503622212-7">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·518,·SHA:·cf395e6b0e6794d3e2217238134257e7f87621613242493df30b8d919c0f9cac·...·]-10">]</span><span·class="p">,</span><span·class="w">178 </span><span·class="p"·data-group-id="3487636614-7">(</span><span·class="o">&lt;</span><span·class="mf">0.96</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3487636614-7">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·518,·SHA:·8e8a3e164ccef79d9fe62b3d30e1f0ca69c3e0108c9919ba6dc45eff60e8442e·...·]-10">]</span><span·class="p">,</span><span·class="w">
179 ···············</span><span·class="p"·data-group-id="1503622212-11">[</span><span·class="p"·data-group-id="1503622212-12">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·118c5ed844f56f95503cdfb8ae3f6a3590f60aeeed7d1ae1c6761411b196e31c·...·]-12">}</span><span·class="p">,</span><span·class="w">179 ···············</span><span·class="p"·data-group-id="3487636614-11">[</span><span·class="p"·data-group-id="3487636614-12">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·616ea62209dadba8f092170cae469cef82f292de12913edad93e0da62c8d71f3·...·]-12">}</span><span·class="p">,</span><span·class="w">
180 ················</span><span·class="p"·data-group-id="1503622212-13">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="1503622212-13">}</span><span·clas[·...·truncated·by·diffoscope;·len:·85,·SHA:·f147f14887e06fc7eb2d4aa456b0b519cf8d5d984919be8cc2de628a12eb87a6·...·]-9">}</span><span·class="w">180 ················</span><span·class="p"·data-group-id="3487636614-13">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="3487636614-13">}</span><span·clas[·...·truncated·by·diffoscope;·len:·85,·SHA:·e79e4bd89095dea0c06c969f5965be4ec2b24e7163b2d391cd38136a4a8f45f3·...·]-9">}</span><span·class="w">
181 </span><span·class="p"·data-group-id="1503622212-14">[</span><span·class="p"·data-group-id="1503622212-15">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·118c5ed844f56f95503cdfb8ae3f6a3590f60aeeed7d1ae1c6761411b196e31c·...·]-15">}</span><span·class="p">,</span><span·class="w">181 </span><span·class="p"·data-group-id="3487636614-14">[</span><span·class="p"·data-group-id="3487636614-15">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;5.2.1&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·616ea62209dadba8f092170cae469cef82f292de12913edad93e0da62c8d71f3·...·]-15">}</span><span·class="p">,</span><span·class="w">
182 ·</span><span·class="p"·data-group-id="1503622212-16">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="1503622212-16">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·118c5ed844f56f95503cdfb8ae3f6a3590f60aeeed7d1ae1c6761411b196e31c·...·]-14">]</span></code></pre><h2·id="module-tracing-from-the-shell"·class="section-heading">182 ·</span><span·class="p"·data-group-id="3487636614-16">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;ERTS··CXC·138·10&quot;</span><span·class="p">,</span><span·class="s">&quot;9.2.2&quot;</span><span·class="p"·data-group-id="3487636614-16">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·616ea62209dadba8f092170cae469cef82f292de12913edad93e0da62c8d71f3·...·]-14">]</span></code></pre><h2·id="module-tracing-from-the-shell"·class="section-heading">
183 ··<a·href="#module-tracing-from-the-shell"·class="hover-link">183 ··<a·href="#module-tracing-from-the-shell"·class="hover-link">
184 ····<i·class="ri-link-m"·aria-hidden="true"></i>184 ····<i·class="ri-link-m"·aria-hidden="true"></i>
185 ··</a>185 ··</a>
186 ··<span·class="text">Tracing·from·the·shell</span>186 ··<span·class="text">Tracing·from·the·shell</span>
187 </h2>187 </h2>
188 <p>Another·way·of·tracing·from·the·shell·is·to·explicitly·start·a·<em>tracer</em>·and188 <p>Another·way·of·tracing·from·the·shell·is·to·explicitly·start·a·<em>tracer</em>·and
189 set·the·<em>trace·flags</em>·of·your·choice·on·the·processes·you·want·to·trace.189 set·the·<em>trace·flags</em>·of·your·choice·on·the·processes·you·want·to·trace.
190 For·example,·here·is·how·to·trace·messages·and·process·events:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6939801325-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6939801325-2">(</span><span·class="p"·data-group-id="6939801325-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">receive</[·...·truncated·by·diffoscope;·len:·554,·SHA:·8c3945bddcd4e03f8d29c9a4e8e22708e8eba91067079e310ca58b923003e788·...·]-1">)</span><span·class="p">.</span><span·class="w">190 For·example,·here·is·how·to·trace·messages·and·process·events:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8055901804-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8055901804-2">(</span><span·class="p"·data-group-id="8055901804-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">receive</[·...·truncated·by·diffoscope;·len:·554,·SHA:·a6ace67ebacaf967d5e99ad9f583e5ba394d96d37dec601a183dce0ea2569ae3·...·]-1">)</span><span·class="p">.</span><span·class="w">
191 </span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">191 </span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
192 2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="6939801325-4">(</span><span·class="p"·data-group-id="6939801325-4">)</span><span·class="p">.</span><span·class="w">192 2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="8055901804-4">(</span><span·class="p"·data-group-id="8055901804-4">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p"·data-group-id="6939801325-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6939801325-5">}</span><span·class="gp·unselectable">193 </span><span·class="p"·data-group-id="8055901804-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8055901804-5">}</span><span·class="gp·unselectable">
194 3&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="6939801325-6">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6939801325-7">[</span><span·class="ss">m</span><span·class="p">,</span><span·class="ss">procs</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·88647b0a6b219fd6c26cccff24c9664da675316ab2d2618dd64ea7ba72b37334·...·]-6">)</span><span·class="p">.</span><span·class="w">194 3&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="8055901804-6">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8055901804-7">[</span><span·class="ss">m</span><span·class="p">,</span><span·class="ss">procs</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·d10c635f1d1170c8ff4ec078fed708a81adf44c0a79e6dd36e5cf6ec454736c3·...·]-6">)</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p"·data-group-id="6939801325-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6939801325-9">[</span><span·class="p"·data-group-id="6939801325-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·212,·SHA:·904ff78ed6af1aec119e3b5b0f5561a75cf5f750f2884f9906d31b659536ee97·...·]-8">}</span><span·class="gp·unselectable">195 </span><span·class="p"·data-group-id="8055901804-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8055901804-9">[</span><span·class="p"·data-group-id="8055901804-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·212,·SHA:·7c95cc58c9a0c3d07bcf58ca1da8f71a04ea2fb06e485da8230ef15aa169cafa·...·]-8">}</span><span·class="gp·unselectable">
196 4&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="6939801325-11">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6939801325-12">(</span><span·class="p"·data-group-id="6939801325-12">)</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="6939801325-11">}</span><span·class="p">.</span><span·class="w">196 4&gt;·</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="8055901804-11">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8055901804-12">(</span><span·class="p"·data-group-id="8055901804-12">)</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="8055901804-11">}</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="6939801325-13">(</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6939801325-13">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·340,·SHA:·a2db1757b8c6d2ea25242527bde7f163a7c9b2f161fba3c2dbb07511cf6bcda2·...·]-15">}</span><span·class="w">197 </span><span·class="p"·data-group-id="8055901804-13">(</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8055901804-13">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·340,·SHA:·acc9fffa58ac035d491ebeac351bff63e4713d837262b0187ca30909f8be678e·...·]-15">}</span><span·class="w">
198 </span><span·class="p"·data-group-id="6939801325-16">{</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="6939801325-16">}</span><span·class="w">198 </span><span·class="p"·data-group-id="8055901804-16">{</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="8055901804-16">}</span><span·class="w">
199 </span><span·class="p"·data-group-id="6939801325-17">(</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6939801325-17">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="nf">hello</span><span·class="w">199 </span><span·class="p"·data-group-id="8055901804-17">(</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8055901804-17">)</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="nf">hello</span><span·class="w">
200 </span><span·class="p"·data-group-id="6939801325-18">(</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6939801325-18">)</span><span·class="w">·</span><span·class="nb">exit</span><span·class="w">·</span><span·class="ss">normal</span><span·class="gp·unselectable">200 </span><span·class="p"·data-group-id="8055901804-18">(</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8055901804-18">)</span><span·class="w">·</span><span·class="nb">exit</span><span·class="w">·</span><span·class="ss">normal</span><span·class="gp·unselectable">
201 5&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="6939801325-19">(</span><span·class="p"·data-group-id="6939801325-19">)</span><span·class="p">.</span><span·class="w">201 5&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="8055901804-19">(</span><span·class="p"·data-group-id="8055901804-19">)</span><span·class="p">.</span><span·class="w">
202 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">202 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">
203 </span><span·class="ss">ok</span></code></pre><p>In·order·to·trace·functions·call,·in·addition·to·enabling·the·<code·class="inline">call</code>·trace·flag203 </span><span·class="ss">ok</span></code></pre><p>In·order·to·trace·functions·call,·in·addition·to·enabling·the·<code·class="inline">call</code>·trace·flag
204 for·the·process,·it·is·also·necessary·to·set·a·<em>trace·pattern</em>·for·the·functions204 for·the·process,·it·is·also·necessary·to·set·a·<em>trace·pattern</em>·for·the·functions
205 to·trace.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="3486971320-1">(</span><span·class="p"·data-group-id="3486971320-1">)</span><span·class="p">.</span><span·class="w">205 to·trace.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="8736812330-1">(</span><span·class="p"·data-group-id="8736812330-1">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="3486971320-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3486971320-2">}</span><span·class="gp·unselectable">206 </span><span·class="p"·data-group-id="8736812330-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8736812330-2">}</span><span·class="gp·unselectable">
207 2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="3486971320-3">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">call</span><span·class="p"·data-group-id="3486971320-3">)</span><span·class="p">.</span><span·class="w">207 2&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="8736812330-3">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">call</span><span·class="p"·data-group-id="8736812330-3">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="3486971320-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3486971320-5">[</span><span·class="p"·data-group-id="3486971320-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·210,·SHA:·7e9e5d981b11cc7e30d75cf46a09a362e546c0a14833284b886e294c521b1e86·...·]0-4">}</span><span·class="gp·unselectable">208 </span><span·class="p"·data-group-id="8736812330-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8736812330-5">[</span><span·class="p"·data-group-id="8736812330-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·210,·SHA:·f3b870ba172bcc2f8cdceacdb81822908046e6448e077310de4047ab6f16934f·...·]0-4">}</span><span·class="gp·unselectable">
209 3&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="3486971320-7">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">last</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·138,·SHA:·d09e869bbee0f72318aac30a495a8344814a3b7f1854eeb7043426e29b20caa9·...·]0-7">)</span><span·class="p">.</span><span·class="w">209 3&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="8736812330-7">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">last</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·138,·SHA:·c7ea4d6e9bce6027afe080945e9434f19204ead573a92e592af48beb4a9a87a5·...·]0-7">)</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="3486971320-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3486971320-10">[</span><span·class="p"·data-group-id="3486971320-11">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nono[·...·truncated·by·diffoscope;·len:·213,·SHA:·8c0630909aed6cdc949a9daef116c5cb04d0001f87dddedd3d792d9bfc145248·...·]0-9">}</span><span·class="gp·unselectable">210 </span><span·class="p"·data-group-id="8736812330-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8736812330-10">[</span><span·class="p"·data-group-id="8736812330-11">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nono[·...·truncated·by·diffoscope;·len:·213,·SHA:·d42f670c6c8f00ba65f8967b2707544c602d954253c8c7582357a11bd556fac2·...·]0-9">}</span><span·class="gp·unselectable">
211 4&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">last</span><span·class="p"·data-group-id="3486971320-12">(</span><span·class="p"·data-group-id="3486971320-13">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">d</span><span·c[·...·truncated·by·diffoscope;·len:·136,·SHA:·12ae7a87132c75fe3e71e50d99d9a61142a9e37d4f3e81a69b3b38f5bb7bc9ee·...·]0-12">)</span><span·class="p">.</span><span·class="w">211 4&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">last</span><span·class="p"·data-group-id="8736812330-12">(</span><span·class="p"·data-group-id="8736812330-13">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">d</span><span·c[·...·truncated·by·diffoscope;·len:·136,·SHA:·834db9e5a733ad19542dbcb9ee1df106a028f4b93b358db2b7657d9571081085·...·]0-12">)</span><span·class="p">.</span><span·class="w">
212 </span><span·class="p"·data-group-id="3486971320-14">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3486971320-14">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·532,·SHA:·789ca541cadc642f80c2d4490a243e9a8fff8b2ed3bf0dc7100e2828534071cc·...·]0-15">)</span><span·class="w">212 </span><span·class="p"·data-group-id="8736812330-14">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8736812330-14">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·532,·SHA:·40a73e6446e3cb9b78b86aa7d5d34726d3b1ef5320e5596006af8585aa34c535·...·]0-15">)</span><span·class="w">
213 </span><span·class="ss">e</span><span·class="gp·unselectable">213 </span><span·class="ss">e</span><span·class="gp·unselectable">
214 5&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="3486971320-17">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">last</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3486971320-18">[</span><span·class="p"·data-group-id="3486971320-19">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3486971320-20">[</span><span·class="p"·data-group-id="3486971320-20">]</span><span·class="p">,</span><span·class="p"·data-group-id="3486971320-21">[</span><span·class="p"·data-group-id="3486971320-22">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="3486971320-22">}</span><span·class="p"·data-group-id="3486971320-21">]</span><span·class="p"·data-group-id="3486971320-19">}</span><span·class="p"·data-group-id="3486971320-18">]</span><span·class="p"·data-group-id="3486971320-17">)</span><span·class="p">.</span><span·class="w"> 
215 </span><span·class="p"·data-group-id="3486971320-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3486971320-24">[</span><span·class="p"·data-group-id="3486971320-25">{</span><span·class="ss">matched</span><span·[·...·truncated·by·diffoscope;·len:·504,·SHA:·2a0f637d6cc556714497833eb888f3ab012233c8bd1c4fa3cafc4ca45f78840d·...·]">214 5&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="8736812330-17">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">last</span><span·c[·...·truncated·by·diffoscope;·len:·865,·SHA:·07c14c68846e130466ff3573a6aaa384dc2939a9e8a8d57ddf875224358b0fcf·...·]">
 215 </span><span·class="p"·data-group-id="8736812330-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8736812330-24">[</span><span·class="p"·data-group-id="8736812330-25">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8736812330-25">}</span><span·class="p">,</span><span·class="p"·data-group-id="8736812330-26">{</span><span·class="ss">saved</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8736812330-26">}</span><span·class="p"·data-group-id="8736812330-24">]</span><span·class="p"·data-group-id="8736812330-23">}</span><span·class="gp·unselectable">
216 6&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">last</span><span·class="p"·data-group-id="3486971320-27">(</span><span·class="p"·data-group-id="3486971320-28">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">d</span><span·c[·...·truncated·by·diffoscope;·len:·136,·SHA:·6dfb877a361a1f57313c96ee9085ba6958c73e0498b9ccbf1e83c1509aca96c7·...·]0-27">)</span><span·class="p">.</span><span·class="w">216 6&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">last</span><span·class="p"·data-group-id="8736812330-27">(</span><span·class="p"·data-group-id="8736812330-28">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">d</span><span·c[·...·truncated·by·diffoscope;·len:·136,·SHA:·91b6d6371f267e6778cb05551dceafcf59cf7f73991b2b161008f43110a4664d·...·]0-27">)</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="3486971320-29">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3486971320-29">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·532,·SHA:·27c443147d12d2180f2eb34f144d4a41edc304aa260cc7e6ee85882c636e1962·...·]0-30">)</span><span·class="w">217 </span><span·class="p"·data-group-id="8736812330-29">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8736812330-29">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·532,·SHA:·07a186033b4f7985beaabbfdf1316088e699b9c40fc6e65f8a7e2b5b7e0d5760·...·]0-30">)</span><span·class="w">
218 </span><span·class="p"·data-group-id="3486971320-32">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3486971320-32">)</span><span·class="w">·</span><span·class="ss">returned</span><span·class="w">·</span><span·class="ss">from</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">last</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">e</span><span·class="w">218 </span><span·class="p"·data-group-id="8736812330-32">(</span><span·class="o">&lt;</span><span·class="mf">0.88</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8736812330-32">)</span><span·class="w">·</span><span·class="ss">returned</span><span·class="w">·</span><span·class="ss">from</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">last</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">e</span><span·class="w">
219 </span><span·class="ss">e</span></code></pre><p><a·href=""·id="advanced"></a></p><h2·id="module-advanced-topics-combining-with-seq_trace"·class="section-heading">219 </span><span·class="ss">e</span></code></pre><p><a·href=""·id="advanced"></a></p><h2·id="module-advanced-topics-combining-with-seq_trace"·class="section-heading">
220 ··<a·href="#module-advanced-topics-combining-with-seq_trace"·class="hover-link">220 ··<a·href="#module-advanced-topics-combining-with-seq_trace"·class="hover-link">
221 ····<i·class="ri-link-m"·aria-hidden="true"></i>221 ····<i·class="ri-link-m"·aria-hidden="true"></i>
222 ··</a>222 ··</a>
223 ··<span·class="text">Advanced·topics·-·combining·with·seq_trace</span>223 ··<span·class="text">Advanced·topics·-·combining·with·seq_trace</span>
224 </h2>224 </h2>
225 <p>The·<code·class="inline">dbg</code>·module·is·primarily·targeted·towards·tracing·through·the225 <p>The·<code·class="inline">dbg</code>·module·is·primarily·targeted·towards·tracing·through·the
226 <a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>·function.·It·is·sometimes·desired·to·trace·messages·in·a·more226 <a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>·function.·It·is·sometimes·desired·to·trace·messages·in·a·more
227 delicate·way,·which·can·be·done·with·the·help·of·the·<a·href="../../../../lib/kernel-10.2.2/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·module.</p><p><a·href="../../../../lib/kernel-10.2.2/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·implements·sequential·tracing·(known·in·the·AXE10·world,·and227 delicate·way,·which·can·be·done·with·the·help·of·the·<a·href="../../../../lib/kernel-10.2.2/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·module.</p><p><a·href="../../../../lib/kernel-10.2.2/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·implements·sequential·tracing·(known·in·the·AXE10·world,·and
228 sometimes·called·&quot;forlopp·tracing&quot;).·<code·class="inline">dbg</code>·can·interpret·messages·generated·from228 sometimes·called·&quot;forlopp·tracing&quot;).·<code·class="inline">dbg</code>·can·interpret·messages·generated·from
229 <code·class="inline">seq_trace</code>·and·the·same·tracer·function·for·both·types·of·tracing·can·be·used.229 <code·class="inline">seq_trace</code>·and·the·same·tracer·function·for·both·types·of·tracing·can·be·used.
230 The·<code·class="inline">seq_trace</code>·messages·can·also·be·sent·to·a·trace·port·for·further·analysis.</p><p>As·a·match·specification·can·turn·on·sequential·tracing,·the·combination·of230 The·<code·class="inline">seq_trace</code>·messages·can·also·be·sent·to·a·trace·port·for·further·analysis.</p><p>As·a·match·specification·can·turn·on·sequential·tracing,·the·combination·of
231 <code·class="inline">dbg</code>·and·<code·class="inline">seq_trace</code>·can·be·powerful.·This·brief·example·shows·a·session231 <code·class="inline">dbg</code>·and·<code·class="inline">seq_trace</code>·can·be·powerful.·This·brief·example·shows·a·session
232 where·sequential·tracing·is·used·to·trace·the·<code·class="inline">dbg</code>·module·and·the·trace·itself:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="8923247631-1">(</span><span·class="p"·data-group-id="8923247631-1">)</span><span·class="p">.</span><span·class="w">232 where·sequential·tracing·is·used·to·trace·the·<code·class="inline">dbg</code>·module·and·the·trace·itself:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tracer</span><span·class="p"·data-group-id="2790198786-1">(</span><span·class="p"·data-group-id="2790198786-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="8923247631-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8923247631-2">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="2790198786-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2790198786-2">}</span><span·class="gp·unselectable">
234 2&gt;·</span><span·class="p"·data-group-id="8923247631-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p"·data-group-id="8923247631-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·3d09939ddb7443040eaf4675736044d2a4800689ada84d2b07731d924aaf8edb·...·]-4">)</span><span·class="p">.</span><span·class="w">234 2&gt;·</span><span·class="p"·data-group-id="2790198786-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p"·data-group-id="2790198786-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·629ba21326b1c24987b3e0c0f757ea0fbf88893bc8b54efb901475c65cf6fee2·...·]-4">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p"·data-group-id="8923247631-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8923247631-5">}</span><span·class="gp·unselectable">235 </span><span·class="p"·data-group-id="2790198786-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.31</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2790198786-5">}</span><span·class="gp·unselectable">
236 3&gt;·</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_system_tracer</span><span·class="p"·data-group-id="8923247631-6">(</span><span·class="n">Tracer</span><span·class="p"·data-group-id="8923247631-6">)</span><span·class="p">.</span><span·class="w">236 3&gt;·</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_system_tracer</span><span·class="p"·data-group-id="2790198786-6">(</span><span·class="n">Tracer</span><span·class="p"·data-group-id="2790198786-6">)</span><span·class="p">.</span><span·class="w">
237 </span><span·class="ss">false</span><span·class="gp·unselectable">237 </span><span·class="ss">false</span><span·class="gp·unselectable">
238 4&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="8923247631-7">(</span><span·class="ss">dbg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_tracer</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·918,·SHA:·af7db46943d6af7e690528c7c832405937a33aac91088e351a56415e76229228·...·]-7">)</span><span·class="p">.</span><span·class="w">238 4&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="2790198786-7">(</span><span·class="ss">dbg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_tracer</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·918,·SHA:·223fd9e8e938548e3abae312f88aa56f39753478c3863655c013aa59af52f1f2·...·]-7">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="8923247631-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8923247631-15">[</span><span·class="p"·data-group-id="8923247631-16">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·425,·SHA:·98c1fde40f6d79992d26c67cc615861d2f1d2a0ff10094fd38d10391ee3cc0e9·...·]-14">}</span><span·class="gp·unselectable">239 </span><span·class="p"·data-group-id="2790198786-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2790198786-15">[</span><span·class="p"·data-group-id="2790198786-16">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·425,·SHA:·e68db8d96a0d5ee8975de99f2005d063eab36b7c533ea92b27a288b1cd5abf5b·...·]-14">}</span><span·class="gp·unselectable">
240 5&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="8923247631-18">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="8923247631-18">)</span><span·class="p">.</span><span·class="w">240 5&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">p</span><span·class="p"·data-group-id="2790198786-18">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="2790198786-18">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p"·data-group-id="8923247631-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8923247631-20">[</span><span·class="p"·data-group-id="8923247631-21">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·216,·SHA:·ffd172ab5bc320870bf002e86352e342a6f51ff32574dbb7344cd6905e155b79·...·]-19">}</span><span·class="gp·unselectable">241 </span><span·class="p"·data-group-id="2790198786-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2790198786-20">[</span><span·class="p"·data-group-id="2790198786-21">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·216,·SHA:·5a230f994235fde65032a3a3b83d5f4482f9744b00774b15afaf0220d7eb5f31·...·]-19">}</span><span·class="gp·unselectable">
242 6&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">get_tracer</span><span·class="p"·data-group-id="8923247631-22">(</span><span·class="p"·data-group-id="8923247631-22">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="8923247631[·...·truncated·by·diffoscope;·len:·162,·SHA:·ec7022e8b38e7ee713454028db2052e9405cf53b800a5321e2ae37c5e89b3c66·...·]-23">)</span><span·class="p">.</span><span·class="w">242 6&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">get_tracer</span><span·class="p"·data-group-id="2790198786-22">(</span><span·class="p"·data-group-id="2790198786-22">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">seq_trace</span><span·class="p">:</span><span·class="nf">set_token</span><span·class="p"·data-group-id="2790198786[·...·truncated·by·diffoscope;·len:·162,·SHA:·bce42a21c918543b8c0a6932fd409b4ad101d0ff41c60cc715dd1f56d99ba438·...·]-23">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="p"·data-group-id="8923247631-25">(</span><span·class="o">&lt;</span><span·class="mf">0.25</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8923247631-25">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·208,·SHA:·1b1d2eed3038089b2f262f60b09ceeee00b6d7743123ee431364b154b37e1526·...·]-26">)</span><span·class="w">243 </span><span·class="p"·data-group-id="2790198786-25">(</span><span·class="o">&lt;</span><span·class="mf">0.25</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2790198786-25">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·208,·SHA:·a3a1d45ee9dbbe0d4487af4093439a787d8fd6570e3574ab39a958faf11381cb·...·]-26">)</span><span·class="w">
244 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="8923247631-27">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8923247631-27">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8923247631-28">(</span><span·class="o">&lt;</span><span·class="mf">0.25</sp[·...·truncated·by·diffoscope;·len:·1035,·SHA:·d1c9a152195c52417f3c273992a35b25014e86aeed118cc0a78ec65fddeddb62·...·]-30">]</span><span·class="w">244 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="2790198786-27">[</span><span·class="mi">0</span><span·class="p"·data-group-id="2790198786-27">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2790198786-28">(</span><span·class="o">&lt;</span><span·class="mf">0.25</sp[·...·truncated·by·diffoscope;·len:·1035,·SHA:·1ff823b4a96282f4fef5e6dfefcf3cc91ac7f11c26214dc26f507f099df29809·...·]-30">]</span><span·class="w">
245 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="8923247631-32">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8923247631-32">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8923247631-33">(</span><span·class="o">&lt;</span><span·class="mf">0.30</sp[·...·truncated·by·diffoscope;·len:·1186,·SHA:·da46acaac85bf71ff03299a59a007406a62afe13e2fc07ce877164420dacfe0a·...·]-36">]</span><span·class="w">245 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="2790198786-32">[</span><span·class="mi">0</span><span·class="p"·data-group-id="2790198786-32">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2790198786-33">(</span><span·class="o">&lt;</span><span·class="mf">0.30</sp[·...·truncated·by·diffoscope;·len:·1186,·SHA:·252cdaef978578e2bf3df574a0fe8a4cf8c749cd6421ad9a9ba534a1834c5779·...·]-36">]</span><span·class="w">
246 </span><span·class="p"·data-group-id="8923247631-38">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·c[·...·truncated·by·diffoscope;·len:·135,·SHA:·8c9b5dfbc5456353b3b9b6682963214143a7cc89653888f4dda19f61fc2f0535·...·]-38">}</span></code></pre><p>This·session·sets·the·system_tracer·to·the·same·process·as·the246 </span><span·class="p"·data-group-id="2790198786-38">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.30</span><span·class="p">.</span><span·c[·...·truncated·by·diffoscope;·len:·135,·SHA:·b778da3d0e2693744038be74998c003d853df99cf62d70a135b8418e3dcb0af0·...·]-38">}</span></code></pre><p>This·session·sets·the·system_tracer·to·the·same·process·as·the
247 ordinary·tracer·process·(i.·e.·&lt;0.31.0&gt;)·and·sets·the·trace·pattern247 ordinary·tracer·process·(i.·e.·&lt;0.31.0&gt;)·and·sets·the·trace·pattern
248 for·the·function·<code·class="inline">dbg:get_tracer</code>·to·one·that·has·the·action·of248 for·the·function·<code·class="inline">dbg:get_tracer</code>·to·one·that·has·the·action·of
249 setting·a·sequential·token.·When·the·function·is·called·by·a·traced249 setting·a·sequential·token.·When·the·function·is·called·by·a·traced
250 process·(all·processes·are·traced·in·this·case),·the·process·gets250 process·(all·processes·are·traced·in·this·case),·the·process·gets
Max diff block lines reached; 130042/219825 bytes (59.16%) of diff not shown.
11.4 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/dyntrace.html
    
Offset 825, 22 lines modifiedOffset 825, 22 lines modified
825 ··········<pre·translate="no"><span·class="attribute">-spec</span>·restore_tag(true·|·{<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()·|·[]})·->·true.</pre>825 ··········<pre·translate="no"><span·class="attribute">-spec</span>·restore_tag(true·|·{<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()·|·[]})·->·true.</pre>
  
826 ······</div>826 ······</div>
  
827 <p>Restores·the·previous·state·of·user·tags·and·their·spreading·as·it·was·before·a827 <p>Restores·the·previous·state·of·user·tags·and·their·spreading·as·it·was·before·a
828 call·to·<a·href="#spread_tag/1"><code·class="inline">spread_tag/1</code></a>.</p><p>Note·that·the·restoring·is·not·limited·to·the·same·process;·one·can828 call·to·<a·href="#spread_tag/1"><code·class="inline">spread_tag/1</code></a>.</p><p>Note·that·the·restoring·is·not·limited·to·the·same·process;·one·can
829 utilize·this·to·turn·off·spreding·in·one·process·and·restore·it·in·a829 utilize·this·to·turn·off·spreding·in·one·process·and·restore·it·in·a
830 newly·created·process·that·is·is·actually·going·to·send·messages:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="8300870918-1">(</span><span·class="p"·data-group-id="8300870918-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">830 newly·created·process·that·is·is·actually·going·to·send·messages:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="3866096836-1">(</span><span·class="p"·data-group-id="3866096836-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
831 ····</span><span·class="n">TagData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">spread_tag</span><span·class="p"·data-group-id="8300870918-2">(</span><span·class="ss">false</span><span·class="p"·data-group-id="8300870918-2">)</span><span·class="p">,</span><span·class="w">831 ····</span><span·class="n">TagData</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">spread_tag</span><span·class="p"·data-group-id="3866096836-2">(</span><span·class="ss">false</span><span·class="p"·data-group-id="3866096836-2">)</span><span·class="p">,</span><span·class="w">
832 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8300870918-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8300870918-4">(</span><span·class="p"·data-group-id="8300870918-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">832 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="3866096836-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3866096836-4">(</span><span·class="p"·data-group-id="3866096836-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
833 ·············</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">restore_tag</span><span·class="p"·data-group-id="8300870918-5">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="8300870918-5">)</span><span·class="p">,</span><span·class="w">833 ·············</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">restore_tag</span><span·class="p"·data-group-id="3866096836-5">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="3866096836-5">)</span><span·class="p">,</span><span·class="w">
834 ·············</span><span·class="nf">do_something</span><span·class="p"·data-group-id="8300870918-6">(</span><span·class="p"·data-group-id="8300870918-6">)</span><span·class="w">834 ·············</span><span·class="nf">do_something</span><span·class="p"·data-group-id="3866096836-6">(</span><span·class="p"·data-group-id="3866096836-6">)</span><span·class="w">
835 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="8300870918-3">)</span><span·class="p">,</span><span·class="w">835 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="3866096836-3">)</span><span·class="p">,</span><span·class="w">
836 ····</span><span·class="nf">do_something_else</span><span·class="p"·data-group-id="8300870918-7">(</span><span·class="p"·data-group-id="8300870918-7">)</span><span·class="p">,</span><span·class="w">836 ····</span><span·class="nf">do_something_else</span><span·class="p"·data-group-id="3866096836-7">(</span><span·class="p"·data-group-id="3866096836-7">)</span><span·class="p">,</span><span·class="w">
837 ····</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">restore_tag</span><span·class="p"·data-group-id="8300870918-8">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="8300870918-8">)</span><span·class="p">.</span></code></pre><p>Correctly·handling·user·tags·and·their·spreading·might·take·some·effort,·as837 ····</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">restore_tag</span><span·class="p"·data-group-id="3866096836-8">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="3866096836-8">)</span><span·class="p">.</span></code></pre><p>Correctly·handling·user·tags·and·their·spreading·might·take·some·effort,·as
838 Erlang·programs·tend·to·send·and·receive·messages·so·that·sometimes·the·user·tag838 Erlang·programs·tend·to·send·and·receive·messages·so·that·sometimes·the·user·tag
839 gets·lost·due·to·various·things,·like·double·receives·or·communication·with·a839 gets·lost·due·to·various·things,·like·double·receives·or·communication·with·a
840 port·(ports·do·not·handle·user·tags,·in·the·same·way·as·they·do·not·handle840 port·(ports·do·not·handle·user·tags,·in·the·same·way·as·they·do·not·handle
841 regular·sequential·trace·tokens).</p>841 regular·sequential·trace·tokens).</p>
842 ··</section>842 ··</section>
843 </section>843 </section>
844 <section·class="detail"·id="spread_tag/1">844 <section·class="detail"·id="spread_tag/1">
Offset 877, 20 lines modifiedOffset 877, 20 lines modified
877 <a·href="#restore_tag/1"><code·class="inline">restore_tag/1</code></a>,·one·can·enable·or·disable·spreading·of·user877 <a·href="#restore_tag/1"><code·class="inline">restore_tag/1</code></a>,·one·can·enable·or·disable·spreading·of·user
878 tags·to·other·processes·and·then·restore·the·previous·state·of·the·user·tag.·The878 tags·to·other·processes·and·then·restore·the·previous·state·of·the·user·tag.·The
879 TagData·returned·from·this·call·contains·all·previous·information·so·the·state879 TagData·returned·from·this·call·contains·all·previous·information·so·the·state
880 (including·any·previously·spread·user·tags)·will·be·completely·restored·by·a880 (including·any·previously·spread·user·tags)·will·be·completely·restored·by·a
881 later·call·to·<a·href="#restore_tag/1"><code·class="inline">restore_tag/1</code></a>.</p><p>The·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>·module·already·spreads·tags,·so·there·is·no·need·to·manually·call881 later·call·to·<a·href="#restore_tag/1"><code·class="inline">restore_tag/1</code></a>.</p><p>The·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>·module·already·spreads·tags,·so·there·is·no·need·to·manually·call
882 this·function·to·get·user·tags·spread·to·the·<code·class="inline">efile</code>·driver·through·that·module.</p><p>The·most·use·of·this·function·would·be·if·one,·for·example,·uses·the·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html"><code·class="inline">io</code></a>·module882 this·function·to·get·user·tags·spread·to·the·<code·class="inline">efile</code>·driver·through·that·module.</p><p>The·most·use·of·this·function·would·be·if·one,·for·example,·uses·the·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html"><code·class="inline">io</code></a>·module
883 to·communicate·with·an·I/O-server·for·a·regular·file,·such·as·in·the·following883 to·communicate·with·an·I/O-server·for·a·regular·file,·such·as·in·the·following
884 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="1421522630-1">(</span><span·class="p"·data-group-id="1421522630-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">884 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="0600625962-1">(</span><span·class="p"·data-group-id="0600625962-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
885 ···</span><span·class="p"·data-group-id="1421522630-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="1421522630-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·389,·SHA:·b518244b603d268e210be708deb2b38ad9575374e55eb1cb34ae96c878353015·...·]-3">)</span><span·class="p">,</span><span·class="w">885 ···</span><span·class="p"·data-group-id="0600625962-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="0600625962-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·389,·SHA:·351239308c7d5479c7669cf18f67c8035a5c815dcb3b5ebaf87c821eb6c348ab·...·]-3">)</span><span·class="p">,</span><span·class="w">
886 ···</span><span·class="n">Saved</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">spread_tag</span><span·class="p"·data-group-id="1421522630-5">(</span><span·class="ss">true</span><span·class="p"·data-group-id="1421522630-5">)</span><span·class="p">,</span><span·class="w">886 ···</span><span·class="n">Saved</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">spread_tag</span><span·class="p"·data-group-id="0600625962-5">(</span><span·class="ss">true</span><span·class="p"·data-group-id="0600625962-5">)</span><span·class="p">,</span><span·class="w">
887 ···</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1421522630-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Hello·world!&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1421522630-7">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·5abe62c1b0fda6e916f6eb6ddb283a9c2436c1616518e7fc1a1af36270578af3·...·]-6">)</span><span·class="p">,</span><span·class="w">887 ···</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0600625962-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Hello·world!&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0600625962-7">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·42c06ae27d004211042ca0df974e7e2d4e2f86d1c9a71ec1fc28192ca9ade91e·...·]-6">)</span><span·class="p">,</span><span·class="w">
888 ···</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">restore_tag</span><span·class="p"·data-group-id="1421522630-8">(</span><span·class="n">Saved</span><span·class="p"·data-group-id="1421522630-8">)</span><span·class="p">,</span><span·class="w">888 ···</span><span·class="nc">dyntrace</span><span·class="p">:</span><span·class="nf">restore_tag</span><span·class="p"·data-group-id="0600625962-8">(</span><span·class="n">Saved</span><span·class="p"·data-group-id="0600625962-8">)</span><span·class="p">,</span><span·class="w">
889 ···</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="1421522630-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="1421522630-9">)</span><span·class="p">.</span></code></pre><p>In·this·example,·any·user·tag·set·in·the·calling·process·will·be·spread·to·the889 ···</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="0600625962-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="0600625962-9">)</span><span·class="p">.</span></code></pre><p>In·this·example,·any·user·tag·set·in·the·calling·process·will·be·spread·to·the
890 I/O-server·when·the·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>·call·is·done.</p>890 I/O-server·when·the·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>·call·is·done.</p>
891 ··</section>891 ··</section>
892 </section>892 </section>
  
893 ····</div>893 ····</div>
894 ··</section>894 ··</section>
  
50.6 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/instrument.html
    
Offset 345, 16 lines modifiedOffset 345, 16 lines modified
  
345 ······</div>345 ······</div>
  
346 <p>A·histogram·of·block·sizes·where·each·interval's·upper·bound·is·twice·as·high·as346 <p>A·histogram·of·block·sizes·where·each·interval's·upper·bound·is·twice·as·high·as
347 the·one·before·it.</p><p>The·upper·bound·of·the·first·interval·is·provided·by·the·function·that·returned347 the·one·before·it.</p><p>The·upper·bound·of·the·first·interval·is·provided·by·the·function·that·returned
348 the·histogram,·and·the·last·interval·has·no·upper·bound.</p><p>For·example,·the·histogram·below·has·40·(<code·class="inline">message</code>)·blocks·between·128-256·bytes348 the·histogram,·and·the·last·interval·has·no·upper·bound.</p><p>For·example,·the·histogram·below·has·40·(<code·class="inline">message</code>)·blocks·between·128-256·bytes
349 in·size,·78·blocks·between·256-512·bytes,2·blocks·between·512-1024·bytes,·and·2349 in·size,·78·blocks·between·256-512·bytes,2·blocks·between·512-1024·bytes,·and·2
350 blocks·between·1-2KB.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">instrument</span><span·class="p">:</span><span·class="nf">allocations</span><span·class="p"·data-group-id="5096476724-1">(</span><span·class="p"·data-group-id="5096476724-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">128</span><span·class="p[·...·truncated·by·diffoscope;·len:·293,·SHA:·3f8491d2d5192c2ed854b28e07e8ceeb0ac0fcf189a6068e27527299fffc5fb9·...·]-1">)</span><span·class="p">.</span><span·class="w">350 blocks·between·1-2KB.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">instrument</span><span·class="p">:</span><span·class="nf">allocations</span><span·class="p"·data-group-id="9933001058-1">(</span><span·class="p"·data-group-id="9933001058-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">128</span><span·class="p[·...·truncated·by·diffoscope;·len:·293,·SHA:·9632edc46a6e6bd74e21129ddcfc98ebcf3388450d3c9655da1cc885f3008e0e·...·]-1">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="p"·data-group-id="5096476724-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5096476724-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·1360,·SHA:·a7f75fd7676ce376439f4f1278ae3c825018916eb0171e85beccb0367891f403·...·]-3">}</span></code></pre>351 </span><span·class="p"·data-group-id="9933001058-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9933001058-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·1360,·SHA:·fb3876f56f99f265a67efd6db7906ad7ef12b9e049170c5f99d7da420cef9bde·...·]-3">}</span></code></pre>
352 ··</section>352 ··</section>
353 </section>353 </section>
354 <section·class="detail"·id="t:carrier_info_list/0">354 <section·class="detail"·id="t:carrier_info_list/0">
  
355 ··<div·class="detail-header">355 ··<div·class="detail-header">
356 ····<a·href="#t:carrier_info_list/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">356 ····<a·href="#t:carrier_info_list/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
357 ······<i·class="ri-link-m"·aria-hidden="true"></i>357 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 480, 38 lines modifiedOffset 480, 38 lines modified
480 to·an·allocator·of·a·different·type.</p><p>Defaults·to·all·<code·class="inline">alloc_util</code>·allocators.</p></li><li><p><strong><code·class="inline">scheduler_ids</code></strong>·-·The·scheduler·ids·whose·allocator·instances·will·be480 to·an·allocator·of·a·different·type.</p><p>Defaults·to·all·<code·class="inline">alloc_util</code>·allocators.</p></li><li><p><strong><code·class="inline">scheduler_ids</code></strong>·-·The·scheduler·ids·whose·allocator·instances·will·be
481 searched.·A·scheduler·id·of·0·will·refer·to·the·global·instance·that·is·not481 searched.·A·scheduler·id·of·0·will·refer·to·the·global·instance·that·is·not
482 tied·to·any·particular·scheduler.·Defaults·to·all·schedulers·and·the·global482 tied·to·any·particular·scheduler.·Defaults·to·all·schedulers·and·the·global
483 instance.</p></li><li><p><strong><code·class="inline">histogram_start</code></strong>·-·The·upper·bound·of·the·first·interval·in·the·allocated483 instance.</p></li><li><p><strong><code·class="inline">histogram_start</code></strong>·-·The·upper·bound·of·the·first·interval·in·the·allocated
484 block·size·histograms.·Defaults·to·128.</p></li><li><p><strong><code·class="inline">histogram_width</code></strong>·-·The·number·of·intervals·in·the·allocated·block·size484 block·size·histograms.·Defaults·to·128.</p></li><li><p><strong><code·class="inline">histogram_width</code></strong>·-·The·number·of·intervals·in·the·allocated·block·size
485 histograms.·Defaults·to·18.</p></li><li><p><strong><code·class="inline">flags</code></strong>·-·Controls·how·to·group·the·output,·for·example·showing485 histograms.·Defaults·to·18.</p></li><li><p><strong><code·class="inline">flags</code></strong>·-·Controls·how·to·group·the·output,·for·example·showing
486 allocations·on·a·per-process·basis·(when·possible)·rather·than·only·a486 allocations·on·a·per-process·basis·(when·possible)·rather·than·only·a
487 NIF/driver-basis.·Defaults·to·<code·class="inline">[]</code>.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">instrument</span><span·class="p">:</span><span·class="nf">allocations</span><span·class="p"·data-group-id="5691558206-1">(</span><span·class="p"·data-group-id="5691558206-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">128</span><span·class="p[·...·truncated·by·diffoscope;·len:·293,·SHA:·80990dfe0af90d358617d6e98719b5fcfe6a3846214dbc048345fe1af974e164·...·]-1">)</span><span·class="p">.</span><span·class="w">487 NIF/driver-basis.·Defaults·to·<code·class="inline">[]</code>.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">instrument</span><span·class="p">:</span><span·class="nf">allocations</span><span·class="p"·data-group-id="2058891959-1">(</span><span·class="p"·data-group-id="2058891959-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">128</span><span·class="p[·...·truncated·by·diffoscope;·len:·293,·SHA:·6491f6f5fd74272cdbfe9be7e9eb35cff613c66275d5298e8ad4d0d5922196e7·...·]-1">)</span><span·class="p">.</span><span·class="w">
488 </span><span·class="p"·data-group-id="5691558206-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5691558206-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">488 </span><span·class="p"·data-group-id="2058891959-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2058891959-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
489 ·····</span><span·class="p"·data-group-id="5691558206-5">#{</span><span·class="ss">udp_inet</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">489 ·····</span><span·class="p"·data-group-id="2058891959-5">#{</span><span·class="ss">udp_inet</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
490 ···········</span><span·class="p"·data-group-id="5691558206-6">#{</span><span·class="ss">driver_event_state</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·743,·SHA:·8a87938d2173dac9531c2cb80378c5ed8a35cd5a422dd3f91308e7e6279151b4·...·]-6">}</span><span·class="p">,</span><span·class="w">490 ···········</span><span·class="p"·data-group-id="2058891959-6">#{</span><span·class="ss">driver_event_state</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·743,·SHA:·6d0426917cd2fa8335a19fe300df07b9bbf8323c2a2bee397ae1d7eea7a4687a·...·]-6">}</span><span·class="p">,</span><span·class="w">
491 ·······</span><span·class="ss">system</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">491 ·······</span><span·class="ss">system</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
492 ···········</span><span·class="p"·data-group-id="5691558206-8">#{</span><span·class="ss">heap</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><s[·...·truncated·by·diffoscope;·len:·677,·SHA:·3fdcbce9bcf5fde86b46f5e731ec3828b2e332d1b0ccb2a4f1521fd8b829ed1b·...·]-9">}</span><span·class="p">,</span><span·class="w">492 ···········</span><span·class="p"·data-group-id="2058891959-8">#{</span><span·class="ss">heap</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><s[·...·truncated·by·diffoscope;·len:·677,·SHA:·a500d8ff794eb3f870bdeb0a7a5656deccf5a97bfe90284a54b91b33cb178cf3·...·]-9">}</span><span·class="p">,</span><span·class="w">
493 ·············</span><span·class="ss">db_term</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-10">{</span><span·class="mi">271</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">52</span><span·class="p">,</span><span·class="mi">80</span><span·cl[·...·truncated·by·diffoscope;·len:·523,·SHA:·18b18263216c6de606c40a76e40cdf93dc2226b5b50910194ff6c6e41a49aa3d·...·]-10">}</span><span·class="p">,</span><span·class="w">493 ·············</span><span·class="ss">db_term</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-10">{</span><span·class="mi">271</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">52</span><span·class="p">,</span><span·class="mi">80</span><span·cl[·...·truncated·by·diffoscope;·len:·523,·SHA:·0e0ea4fbe974933e3602ec0a227805e25a06d3f8a8753a58be8bd802272706e2·...·]-10">}</span><span·class="p">,</span><span·class="w">
494 ·············</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-11">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">3</span><span·class=[·...·truncated·by·diffoscope;·len:·524,·SHA:·15b444781f6a63cc2d11e9b34ca50cdf3185b7de8118248ced610582750c6e80·...·]-11">}</span><span·class="p">,</span><span·class="w">494 ·············</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-11">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">3</span><span·class=[·...·truncated·by·diffoscope;·len:·524,·SHA:·7dd57a6d275cb0b8cf13aa4ab68d5c7488a8889d524c22c4c3ed6ee6368a63d6·...·]-11">}</span><span·class="p">,</span><span·class="w">
495 ·············</span><span·class="ss">binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-12">{</span><span·class="mi">18</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">7</span><span·class[·...·truncated·by·diffoscope;·len:·520,·SHA:·289133699dde3ba38754dd8d9630820fdb20d74546bd3265966b98bab7435ed0·...·]-12">}</span><span·class="p">,</span><span·class="w">495 ·············</span><span·class="ss">binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-12">{</span><span·class="mi">18</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">7</span><span·class[·...·truncated·by·diffoscope;·len:·520,·SHA:·4d4eed5f8dc885762a6150fa72ec269ed1fcaac7adb97170730a829d88f472ee·...·]-12">}</span><span·class="p">,</span><span·class="w">
496 ·············</span><span·class="ss">message</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-13">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">40</span><span·class="p">,</span><span·class="mi">78</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">2</span><span·clas[·...·truncated·by·diffoscope;·len:·521,·SHA:·f413ddfa89561741a8bc80eadc959a7ba9680e182eecc1a0802e4c943a230c73·...·]-13">}</span><span·class="p">,</span><span·class="w">496 ·············</span><span·class="ss">message</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-13">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">40</span><span·class="p">,</span><span·class="mi">78</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">2</span><span·clas[·...·truncated·by·diffoscope;·len:·521,·SHA:·e226583bceb379f23cf2c6995d7a7e5f2ac0f1a25b10063841c6a6c3f55d5fd9·...·]-13">}</span><span·class="p">,</span><span·class="w">
497 ·············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-8">}</span><span·class="w">497 ·············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-8">}</span><span·class="w">
498 ·······</span><span·class="ss">spawn_forker</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">498 ·······</span><span·class="ss">spawn_forker</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
499 ···········</span><span·class="p"·data-group-id="5691558206-14">#{</span><span·class="ss">driver_select_data_state</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">499 ···········</span><span·class="p"·data-group-id="2058891959-14">#{</span><span·class="ss">driver_select_data_state</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
500 ·················</span><span·class="p"·data-group-id="5691558206-15">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·573,·SHA:·1817f55951cda83968cdd8d931f455ec6dcba4634fd2da34ff82a9e4fea67b13·...·]-14">}</span><span·class="p">,</span><span·class="w">500 ·················</span><span·class="p"·data-group-id="2058891959-15">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·573,·SHA:·e4680699607856f324bf3d809df763e87c2cc0a1522ac9e337ccddf28a994228·...·]-14">}</span><span·class="p">,</span><span·class="w">
501 ·······</span><span·class="ss">ram_file_drv</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-16">#{</span><span·class="ss">drv_binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-17">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·738,·SHA:·43689061c21ef34b79d8ab267c8277ab9a4e33a102c74c50c6d55995d44d2809·...·]-16">}</span><span·class="p">,</span><span·class="w">501 ·······</span><span·class="ss">ram_file_drv</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-16">#{</span><span·class="ss">drv_binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-17">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·738,·SHA:·640a4141299c924917420377c0911431c46e666009ea0edef1ddbc1ac2ba924b·...·]-16">}</span><span·class="p">,</span><span·class="w">
502 ·······</span><span·class="ss">prim_file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">502 ·······</span><span·class="ss">prim_file</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
503 ···········</span><span·class="p"·data-group-id="5691558206-18">#{</span><span·class="ss">process_specific_data</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·695,·SHA:·3a215d945f2590481c3bd2b9ddba582687248d1e42ebe3055156132f890d39e7·...·]-19">}</span><span·class="p">,</span><span·class="w">503 ···········</span><span·class="p"·data-group-id="2058891959-18">#{</span><span·class="ss">process_specific_data</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·695,·SHA:·359f8eae0f00f4595b75f084c80bf59333b5f3573ef2192a113f68f0ea8fcce6·...·]-19">}</span><span·class="p">,</span><span·class="w">
504 ·············</span><span·class="ss">nif_trap_export_entry</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-20">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·519,·SHA:·3192a348002994a78f1607a48525b2f3502cf9ff8a766188e8e955777feca372·...·]-20">}</span><span·class="p">,</span><span·class="w">504 ·············</span><span·class="ss">nif_trap_export_entry</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-20">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·519,·SHA:·a8fa6fcf556c4f2b995b615ef7eb51621ae232741c2190d31313aceea0311c85·...·]-20">}</span><span·class="p">,</span><span·class="w">
505 ·············</span><span·class="ss">monitor_extended</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-21">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·519,·SHA:·3192a348002994a78f1607a48525b2f3502cf9ff8a766188e8e955777feca372·...·]-21">}</span><span·class="p">,</span><span·class="w">505 ·············</span><span·class="ss">monitor_extended</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-21">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·519,·SHA:·a8fa6fcf556c4f2b995b615ef7eb51621ae232741c2190d31313aceea0311c85·...·]-21">}</span><span·class="p">,</span><span·class="w">
506 ·············</span><span·class="ss">drv_binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·519,·SHA:·8896e5f742eba91e87ee66c862b4be32a659aabde07162790e771c5e16d7fd8b·...·]-22">}</span><span·class="p">,</span><span·class="w">506 ·············</span><span·class="ss">drv_binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·519,·SHA:·c245e7d685a154c48f63800be34f4218c3b775474b1d6448e67d09a3ba9e29f3·...·]-22">}</span><span·class="p">,</span><span·class="w">
507 ·············</span><span·class="ss">binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-23">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·573,·SHA:·abdf211441e794913ab31bcc85dbd5bed2f6eaf153fa3081ebff881a69b21dcb·...·]-18">}</span><span·class="p">,</span><span·class="w">507 ·············</span><span·class="ss">binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-23">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·573,·SHA:·e622e3b69c7dc8dfa0dad9ef6a53bf37fd31176bd389841b1598d936771e954a·...·]-18">}</span><span·class="p">,</span><span·class="w">
508 ·······</span><span·class="ss">prim_buffer</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">508 ·······</span><span·class="ss">prim_buffer</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
509 ···········</span><span·class="p"·data-group-id="5691558206-24">#{</span><span·class="ss">nif_internal</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-25">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·686,·SHA:·c08a5e78e20a68a52b394a7821f1d02ccb3c750544a25db9347fff1653aa2af0·...·]-25">}</span><span·class="p">,</span><span·class="w">509 ···········</span><span·class="p"·data-group-id="2058891959-24">#{</span><span·class="ss">nif_internal</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-25">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·686,·SHA:·ed3d90930985b999c0cf1e9cb8f811e8b6e4aa86fab64d86c2451bf900bf6e69·...·]-25">}</span><span·class="p">,</span><span·class="w">
510 ·············</span><span·class="ss">binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5691558206-26">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·733,·SHA:·107389642788643e9d4e70a413f53206b7ebe22adc5a46d989b5d8726ebcf0de·...·]-3">}</span></code></pre>510 ·············</span><span·class="ss">binary</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2058891959-26">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·733,·SHA:·39b8c6bb492a3b97fea770f3036fa4fe5307e9a62d14132c5d55cdaff8fa6191·...·]-3">}</span></code></pre>
511 ··</section>511 ··</section>
512 </section>512 </section>
513 <section·class="detail"·id="carriers/0">513 <section·class="detail"·id="carriers/0">
  
514 ··<div·class="detail-header">514 ··<div·class="detail-header">
515 ····<a·href="#carriers/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">515 ····<a·href="#carriers/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
516 ······<i·class="ri-link-m"·aria-hidden="true"></i>516 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 576, 23 lines modifiedOffset 576, 23 lines modified
576 allocator·type·and·scheduler·id.</p><p>If·the·specified·allocator·types·are·not·enabled,·the·call·will·fail·with576 allocator·type·and·scheduler·id.</p><p>If·the·specified·allocator·types·are·not·enabled,·the·call·will·fail·with
577 <code·class="inline">{error,·not_enabled}</code>.</p><p>The·following·options·can·be·used:</p><ul><li><p><strong><code·class="inline">allocator_types</code></strong>·-·The·allocator·types·that·will·be·searched.·Defaults·to577 <code·class="inline">{error,·not_enabled}</code>.</p><p>The·following·options·can·be·used:</p><ul><li><p><strong><code·class="inline">allocator_types</code></strong>·-·The·allocator·types·that·will·be·searched.·Defaults·to
578 all·<code·class="inline">alloc_util</code>·allocators.</p></li><li><p><strong><code·class="inline">scheduler_ids</code></strong>·-·The·scheduler·ids·whose·allocator·instances·will·be578 all·<code·class="inline">alloc_util</code>·allocators.</p></li><li><p><strong><code·class="inline">scheduler_ids</code></strong>·-·The·scheduler·ids·whose·allocator·instances·will·be
579 searched.·A·scheduler·id·of·0·will·refer·to·the·global·instance·that·is·not579 searched.·A·scheduler·id·of·0·will·refer·to·the·global·instance·that·is·not
580 tied·to·any·particular·scheduler.·Defaults·to·all·schedulers·and·the·global580 tied·to·any·particular·scheduler.·Defaults·to·all·schedulers·and·the·global
581 instance.</p></li><li><p><strong><code·class="inline">histogram_start</code></strong>·-·The·upper·bound·of·the·first·interval·in·the·free581 instance.</p></li><li><p><strong><code·class="inline">histogram_start</code></strong>·-·The·upper·bound·of·the·first·interval·in·the·free
582 block·size·histograms.·Defaults·to·512.</p></li><li><p><strong><code·class="inline">histogram_width</code></strong>·-·The·number·of·intervals·in·the·free·block·size582 block·size·histograms.·Defaults·to·512.</p></li><li><p><strong><code·class="inline">histogram_width</code></strong>·-·The·number·of·intervals·in·the·free·block·size
583 histograms.·Defaults·to·14.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">instrument</span><span·class="p">:</span><span·class="nf">carriers</span><span·class="p"·data-group-id="7508242803-1">(</span><span·class="p"·data-group-id="7508242803-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">512</span><span·class="p[·...·truncated·by·diffoscope;·len:·292,·SHA:·d476363e094af94650c940a605e9c09207ce6c24babd185ce59563599cbdb3c3·...·]-1">)</span><span·class="p">.</span><span·class="w">583 histograms.·Defaults·to·14.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">instrument</span><span·class="p">:</span><span·class="nf">carriers</span><span·class="p"·data-group-id="3684316764-1">(</span><span·class="p"·data-group-id="3684316764-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">512</span><span·class="p[·...·truncated·by·diffoscope;·len:·292,·SHA:·76bd48ee25ee6c0f3012bd489958e87167b3ee1dcc9d7a81b17efefaf7f3b276·...·]-1">)</span><span·class="p">.</span><span·class="w">
584 </span><span·class="p"·data-group-id="7508242803-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7508242803-4">{</span><span·class="mi">512</span><span·class="p">,</span><span·class="w">584 </span><span·class="p"·data-group-id="3684316764-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3684316764-4">{</span><span·class="mi">512</span><span·class="p">,</span><span·class="w">
585 ·····</span><span·class="p"·data-group-id="7508242803-5">[</span><span·class="p"·data-group-id="7508242803-6">{</span><span·class="ss">driver_alloc</span><span·class="p">,</span><span·class="ss">false</span><span·class="p">,</span><span·class="mi">262144</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">585 ·····</span><span·class="p"·data-group-id="3684316764-5">[</span><span·class="p"·data-group-id="3684316764-6">{</span><span·class="ss">driver_alloc</span><span·class="p">,</span><span·class="ss">false</span><span·class="p">,</span><span·class="mi">262144</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
586 ····················</span><span·class="p"·data-group-id="7508242803-7">[</span><span·class="p"·data-group-id="7508242803-8">{</span><span·class="ss">driver_alloc</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">32784</span><span·class="p"·data-group-id="7508242803-8[·...·truncated·by·diffoscope;·len:·51,·SHA:·45ab4feba188c77abab9add5a527161baf894247d91e1bd5d83e83feb2b7b2cf·...·]-7">]</span><span·class="p">,</span><span·class="w">586 ····················</span><span·class="p"·data-group-id="3684316764-7">[</span><span·class="p"·data-group-id="3684316764-8">{</span><span·class="ss">driver_alloc</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">32784</span><span·class="p"·data-group-id="3684316764-8[·...·truncated·by·diffoscope;·len:·51,·SHA:·1b06807f00d0c92b81fe92dad8aab89d77ee504ec53b041d9de557a7fb5dcd68·...·]-7">]</span><span·class="p">,</span><span·class="w">
587 ····················</span><span·class="p"·data-group-id="7508242803-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·228,·SHA:·85fd47d72b68b29f2c90ed9b43947ce28b89a845bf0cbb4d03c6036175b14b09·...·]-6">}</span><span·class="p">,</span><span·class="w">587 ····················</span><span·class="p"·data-group-id="3684316764-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·228,·SHA:·f9c81a7d3a620d9c360ba14549bcd9f8dcfcdb8b7654a6af9b9f8002bcb716d9·...·]-6">}</span><span·class="p">,</span><span·class="w">
588 ······</span><span·class="p"·data-group-id="7508242803-10">{</span><span·class="ss">binary_alloc</span><span·class="p">,</span><span·class="ss">false</span><span·class="p">,</span><span·class="mi">32768</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">588 ······</span><span·class="p"·data-group-id="3684316764-10">{</span><span·class="ss">binary_alloc</span><span·class="p">,</span><span·class="ss">false</span><span·class="p">,</span><span·class="mi">32768</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
589 ····················</span><span·class="p"·data-group-id="7508242803-11">[</span><span·class="p"·data-group-id="7508242803-12">{</span><span·class="ss">binary_alloc</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">4304</span><span·class="p"·data-group-id="7508242803[·...·truncated·by·diffoscope;·len:·54,·SHA:·754b1dec8f0bb0b4c391e10ed90cc2d7c93e68a793e326a1350c73db7d0913ef·...·]-11">]</span><span·class="p">,</span><span·class="w">589 ····················</span><span·class="p"·data-group-id="3684316764-11">[</span><span·class="p"·data-group-id="3684316764-12">{</span><span·class="ss">binary_alloc</span><span·class="p">,</span><span·class="mi">15</span><span·class="p">,</span><span·class="mi">4304</span><span·class="p"·data-group-id="3684316764[·...·truncated·by·diffoscope;·len:·54,·SHA:·36e4a58383a744baac6c72d7f0a13f9efee66b21080608cdada72ba5e3a6b9ac·...·]-11">]</span><span·class="p">,</span><span·class="w">
590 ····················</span><span·class="p"·data-group-id="7508242803-13">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class=[·...·truncated·by·diffoscope;·len:·230,·SHA:·b3ead93a5841dcf7fffbba8d65c98c28dad55908cf0c92a0deac6e4669c2452a·...·]-10">}</span><span·class="p">,</span><span·class="w">590 ····················</span><span·class="p"·data-group-id="3684316764-13">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class=[·...·truncated·by·diffoscope;·len:·230,·SHA:·859e49fd65e181af90b3e209115120cc1fe67cac0345a3251f5eacab51399511·...·]-10">}</span><span·class="p">,</span><span·class="w">
591 ······</span><span·class="p"·data-group-id="7508242803-14">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7508242803-14">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·136,·SHA:·f6886372ebc84575684c2575064af8e5432ed770dee88de2b63fc7e04fd8bde2·...·]-3">}</span></code></pre>591 ······</span><span·class="p"·data-group-id="3684316764-14">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3684316764-14">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·136,·SHA:·e49be1e17d2a8f19996fdb46cb1fb853d2043ce269b0b416e87ce1731a386d09·...·]-3">}</span></code></pre>
592 ··</section>592 ··</section>
593 </section>593 </section>
  
594 ····</div>594 ····</div>
595 ··</section>595 ··</section>
  
596 ····<footer·class="footer">596 ····<footer·class="footer">
92.3 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/lttng.html
    
Offset 146, 40 lines modifiedOffset 146, 40 lines modified
146 $·make</code></pre><h2·id="dyntrace-tracepoints"·class="section-heading">146 $·make</code></pre><h2·id="dyntrace-tracepoints"·class="section-heading">
147 ··<a·href="#dyntrace-tracepoints"·class="hover-link">147 ··<a·href="#dyntrace-tracepoints"·class="hover-link">
148 ····<i·class="ri-link-m"·aria-hidden="true"></i>148 ····<i·class="ri-link-m"·aria-hidden="true"></i>
149 ··</a>149 ··</a>
150 ··<span·class="text">Dyntrace·Tracepoints</span>150 ··<span·class="text">Dyntrace·Tracepoints</span>
151 </h2>151 </h2>
152 <p>All·tracepoints·are·in·the·domain·of·<code·class="inline">org_erlang_dyntrace</code></p><p>All·Erlang·types·are·the·string·equivalent·in·LTTng.</p><p><em>process_spawn</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">parent·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">procs</code>·and152 <p>All·tracepoints·are·in·the·domain·of·<code·class="inline">org_erlang_dyntrace</code></p><p>All·Erlang·types·are·the·string·equivalent·in·LTTng.</p><p><em>process_spawn</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">parent·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">procs</code>·and
153 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">process_spawn</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3097580923-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="p"·data-group-id="3097580923-1">}</span><span·[·...·truncated·by·diffoscope;·len:·731,·SHA:·8ca6e1383097b3b48491ab7357856e1fb77939977d6862c0f811c95f966184b2·...·]-2">}</span></code></pre><p><em>process_link</em></p><ul><li><code·class="inline">to·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">from·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><p><code·class="inline">type·:·string</code>·::·<code·class="inline">&quot;link&quot;·|·&quot;unlink&quot;</code></p></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">procs</code>·and153 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">process_spawn</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0776447297-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="p"·data-group-id="0776447297-1">}</span><span·[·...·truncated·by·diffoscope;·len:·731,·SHA:·78ea129fa4a3a90bab9074995180a45b5a20d9398954d70a3e5a5e6750087510·...·]-2">}</span></code></pre><p><em>process_link</em></p><ul><li><code·class="inline">to·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">from·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><p><code·class="inline">type·:·string</code>·::·<code·class="inline">&quot;link&quot;·|·&quot;unlink&quot;</code></p></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">procs</code>·and
154 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">process_link:·{·cpu_id·=·3·},·{·from·=·&quot;&lt;0.130.0&gt;&quot;,·to·=·&quot;&lt;0.131.0&gt;&quot;,·type·=·&quot;link&quot;·}</code></pre><p><em>process_exit</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">reason·:·string</code>·::·Exit·reason.·Ex.·<code·class="inline">&quot;normal&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">procs</code>·and154 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">process_link:·{·cpu_id·=·3·},·{·from·=·&quot;&lt;0.130.0&gt;&quot;,·to·=·&quot;&lt;0.131.0&gt;&quot;,·type·=·&quot;link&quot;·}</code></pre><p><em>process_exit</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">reason·:·string</code>·::·Exit·reason.·Ex.·<code·class="inline">&quot;normal&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">procs</code>·and
155 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">process_exit:·{·cpu_id·=·3·},·{·pid·=·&quot;&lt;0.130.0&gt;&quot;,·reason·=·&quot;normal&quot;·}</code></pre><p><em>process_register</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">name·:·string</code>·::·Registered·name.·Ex.·<code·class="inline">&quot;logger&quot;</code></li><li><p><code·class="inline">type·:·string</code>·::·<code·class="inline">&quot;register&quot;·|·&quot;unregister&quot;</code></p></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">process_register</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8376481143-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="8376481143-1">}</span><span·[·...·truncated·by·diffoscope;·len:·703,·SHA:·f25013936ab462b03083c8142e1007a5429659d81e60c008945edf7787b94328·...·]-2">}</span></code></pre><p><em>process_scheduled</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">type·:·string</code>·::155 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">process_exit:·{·cpu_id·=·3·},·{·pid·=·&quot;&lt;0.130.0&gt;&quot;,·reason·=·&quot;normal&quot;·}</code></pre><p><em>process_register</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">name·:·string</code>·::·Registered·name.·Ex.·<code·class="inline">&quot;logger&quot;</code></li><li><p><code·class="inline">type·:·string</code>·::·<code·class="inline">&quot;register&quot;·|·&quot;unregister&quot;</code></p></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">process_register</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3822294938-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="3822294938-1">}</span><span·[·...·truncated·by·diffoscope;·len:·703,·SHA:·a9132f18bb65f9a88ef6b360d9f5c2df646a6b62b71b665b7f079584e5cb60e3·...·]-2">}</span></code></pre><p><em>process_scheduled</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">type·:·string</code>·::
156 <code·class="inline">&quot;in&quot;·|·&quot;out&quot;·|·&quot;in_exiting&quot;·|·&quot;out_exiting&quot;·|·&quot;out_exited&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">running</code>·and156 <code·class="inline">&quot;in&quot;·|·&quot;out&quot;·|·&quot;in_exiting&quot;·|·&quot;out_exiting&quot;·|·&quot;out_exited&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">running</code>·and
157 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">process_scheduled</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9123326200-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="9123326200-1">}</span><span·[·...·truncated·by·diffoscope;·len:·716,·SHA:·84b717bcea16f89391c54a4287fc65414c16bbf09dc5c26f780ab7cfc2060d94·...·]-2">}</span></code></pre><p><em>port_open</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">driver·:·string</code>·::·Driver·name.·Ex.·<code·class="inline">&quot;tcp_inet&quot;</code></li><li><code·class="inline">port·:·string</code>·::·Port·ID.·Ex.·<code·class="inline">&quot;#Port&lt;0.1031&gt;&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">ports</code>·and157 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">process_scheduled</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5022038767-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="5022038767-1">}</span><span·[·...·truncated·by·diffoscope;·len:·716,·SHA:·f2f5de5f0abf9e3cf88ce0471c1b4f2bd0e3ba87814f1070b9cb12ea955fb761·...·]-2">}</span></code></pre><p><em>port_open</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">driver·:·string</code>·::·Driver·name.·Ex.·<code·class="inline">&quot;tcp_inet&quot;</code></li><li><code·class="inline">port·:·string</code>·::·Port·ID.·Ex.·<code·class="inline">&quot;#Port&lt;0.1031&gt;&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">ports</code>·and
158 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">port_open:·{·cpu_id·=·5·},·{·pid·=·&quot;&lt;0.131.0&gt;&quot;,·driver·=·&quot;'/bin/sh·-s·unix:cmd'&quot;,·port·=·&quot;#Port&lt;0.1887&gt;&quot;·}</code></pre><p><em>port_exit</em></p><ul><li><code·class="inline">port·:·string</code>·::·Port·ID.·Ex.·<code·class="inline">&quot;#Port&lt;0.1031&gt;&quot;</code></li><li><code·class="inline">reason·:·string</code>·::·Exit·reason.·Ex.·<code·class="inline">&quot;normal&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">ports</code>·and158 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">port_open:·{·cpu_id·=·5·},·{·pid·=·&quot;&lt;0.131.0&gt;&quot;,·driver·=·&quot;'/bin/sh·-s·unix:cmd'&quot;,·port·=·&quot;#Port&lt;0.1887&gt;&quot;·}</code></pre><p><em>port_exit</em></p><ul><li><code·class="inline">port·:·string</code>·::·Port·ID.·Ex.·<code·class="inline">&quot;#Port&lt;0.1031&gt;&quot;</code></li><li><code·class="inline">reason·:·string</code>·::·Exit·reason.·Ex.·<code·class="inline">&quot;normal&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">ports</code>·and
159 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">port_exit:·{·cpu_id·=·5·},·{·port·=·&quot;#Port&lt;0.1887&gt;&quot;,·reason·=·&quot;normal&quot;·}</code></pre><p><em>port_link</em></p><ul><li><code·class="inline">to·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">from·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><p><code·class="inline">type·:·string</code>·::·<code·class="inline">&quot;link&quot;·|·&quot;unlink&quot;</code></p></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">ports</code>·and159 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">port_exit:·{·cpu_id·=·5·},·{·port·=·&quot;#Port&lt;0.1887&gt;&quot;,·reason·=·&quot;normal&quot;·}</code></pre><p><em>port_link</em></p><ul><li><code·class="inline">to·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">from·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><p><code·class="inline">type·:·string</code>·::·<code·class="inline">&quot;link&quot;·|·&quot;unlink&quot;</code></p></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">ports</code>·and
160 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">port_link</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="6611561404-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="6611561404-1">}</span><span·c[·...·truncated·by·diffoscope;·len:·722,·SHA:·9bfb320d356a1fa573b92a05cdbce738bfcdc154f429875de9d700893507988a·...·]-2">}</span></code></pre><p><em>port_scheduled</em></p><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">running</code>·and160 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">port_link</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="6450732850-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="6450732850-1">}</span><span·c[·...·truncated·by·diffoscope;·len:·722,·SHA:·e877de08a214b5cfa6942b34f1bc391510e4ac5d02898a4e645cb7232e222247·...·]-2">}</span></code></pre><p><em>port_scheduled</em></p><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">running</code>·and
161 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><ul><li><code·class="inline">port·:·string</code>·::·Port·ID.·Ex.·<code·class="inline">&quot;#Port&lt;0.1031&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Callback.·Ex.·<code·class="inline">&quot;open&quot;</code></li><li><code·class="inline">type·:·string</code>·::161 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><ul><li><code·class="inline">port·:·string</code>·::·Port·ID.·Ex.·<code·class="inline">&quot;#Port&lt;0.1031&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Callback.·Ex.·<code·class="inline">&quot;open&quot;</code></li><li><code·class="inline">type·:·string</code>·::
162 <code·class="inline">&quot;in&quot;·|·&quot;out&quot;·|·&quot;in_exiting&quot;·|·&quot;out_exiting&quot;·|·&quot;out_exited&quot;</code></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">port_scheduled</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9559322128-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="9559322128-1">}</span><span·[·...·truncated·by·diffoscope;·len:·712,·SHA:·00fad8304582a669d16764fff1181fdf6a89828cc42327ba6027e77a3e3b0ca6·...·]-2">}</span></code></pre><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">running</code>·and162 <code·class="inline">&quot;in&quot;·|·&quot;out&quot;·|·&quot;in_exiting&quot;·|·&quot;out_exiting&quot;·|·&quot;out_exited&quot;</code></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">port_scheduled</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8860394267-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="8860394267-1">}</span><span·[·...·truncated·by·diffoscope;·len:·712,·SHA:·12bc4c606abafcb58c7c8ba2f491ae0640e78b7e999e1acf0ef5fe65582e5311·...·]-2">}</span></code></pre><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">running</code>·and
163 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p><em>function_call</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">depth·:·integer</code>·::·Stack·depth.·Ex.·<code·class="inline">0</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">call</code>·and163 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p><em>function_call</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">depth·:·integer</code>·::·Stack·depth.·Ex.·<code·class="inline">0</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">call</code>·and
164 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">function_call</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3629444106-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="3629444106-1">}</span><span·[·...·truncated·by·diffoscope;·len:·740,·SHA:·fe4daf5a017fa7739b8b45713ca14811b5506a69f8fda9b6d14ab51b5bd46a62·...·]-2">}</span></code></pre><p><em>function_return</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">depth·:·integer</code>·::·Stack·depth.·Ex.·<code·class="inline">0</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">call</code>·or·<code·class="inline">return_to</code>·and164 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">function_call</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2258126444-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="2258126444-1">}</span><span·[·...·truncated·by·diffoscope;·len:·740,·SHA:·fff1d1a7e2bba61485631405c07674e88b703654e544d95232ff6e1a70277142·...·]-2">}</span></code></pre><p><em>function_return</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">depth·:·integer</code>·::·Stack·depth.·Ex.·<code·class="inline">0</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">call</code>·or·<code·class="inline">return_to</code>·and
165 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">function_return</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="0080188596-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="0080188596-1">}</span><span·[·...·truncated·by·diffoscope;·len:·720,·SHA:·9b408a30991c7114272770637333f645d803a16d45cb698c601518698b457514·...·]-2">}</span></code></pre><p><em>function_exception</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">class·:·string</code>·::·Error·reason.·Ex.·<code·class="inline">&quot;error&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">call</code>·and165 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">function_return</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4817331670-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="4817331670-1">}</span><span·[·...·truncated·by·diffoscope;·len:·720,·SHA:·bb924fa582b04f03345e6dc9ace7e4812a59a0aba4f946f8a69bc577fc285ca9·...·]-2">}</span></code></pre><p><em>function_exception</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">entry·:·string</code>·::·Code·Location.·Ex.·<code·class="inline">&quot;lists:sort/1&quot;</code></li><li><code·class="inline">class·:·string</code>·::·Error·reason.·Ex.·<code·class="inline">&quot;error&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">call</code>·and
166 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">function_exception</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="1205976495-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="1205976495-1">}</span><span·[·...·truncated·by·diffoscope;·len:·718,·SHA:·04b0d0dcec8e441c919d1c32c778c7be6b6267e83277df5cc04c01071b4efdc4·...·]-2">}</span></code></pre><p><em>message_send</em></p><ul><li><code·class="inline">from·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">to·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">message·:·string</code>·::·Message·sent.·Ex.·<code·class="inline">&quot;{&lt;0.162.0&gt;,ok}&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">send</code>·and166 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">function_exception</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5329355670-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5</span><span·class="w">·</span><span·class="p"·data-group-id="5329355670-1">}</span><span·[·...·truncated·by·diffoscope;·len:·718,·SHA:·aecbfb2339bd84185ce4e17fc8552b2760aa5cb2f9d3fd6f4ac0b9552de02bc8·...·]-2">}</span></code></pre><p><em>message_send</em></p><ul><li><code·class="inline">from·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">to·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">message·:·string</code>·::·Message·sent.·Ex.·<code·class="inline">&quot;{&lt;0.162.0&gt;,ok}&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">send</code>·and
167 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">message_send:·{·cpu_id·=·3·},·{·from·=·&quot;#Port&lt;0.1938&gt;&quot;,·to·=·&quot;&lt;0.160.0&gt;&quot;,·message·=·&quot;{#Port&lt;0.1938&gt;,eof}&quot;·}</code></pre><p><em>message_receive</em></p><ul><li><code·class="inline">to·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">message·:·string</code>·::·Message·received.·Ex.·<code·class="inline">&quot;{&lt;0.162.0&gt;,ok}&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">'receive'</code>·and167 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">message_send:·{·cpu_id·=·3·},·{·from·=·&quot;#Port&lt;0.1938&gt;&quot;,·to·=·&quot;&lt;0.160.0&gt;&quot;,·message·=·&quot;{#Port&lt;0.1938&gt;,eof}&quot;·}</code></pre><p><em>message_receive</em></p><ul><li><code·class="inline">to·:·string</code>·::·Process·ID·or·Port·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">message·:·string</code>·::·Message·received.·Ex.·<code·class="inline">&quot;{&lt;0.162.0&gt;,ok}&quot;</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">'receive'</code>·and
168 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">message_receive:·{·cpu_id·=·7·},·{·to·=·&quot;&lt;0.167.0&gt;&quot;,·message·=·&quot;{&lt;0.165.0&gt;,ok}&quot;·}</code></pre><p><em>gc_minor_start</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">need·:·integer</code>·::·Heap·need.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and168 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">message_receive:·{·cpu_id·=·7·},·{·to·=·&quot;&lt;0.167.0&gt;&quot;,·message·=·&quot;{&lt;0.165.0&gt;,ok}&quot;·}</code></pre><p><em>gc_minor_start</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">need·:·integer</code>·::·Heap·need.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and
169 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gc_minor_start</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7326694392-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="7326694392-1">}</span><span·[·...·truncated·by·diffoscope;·len:·858,·SHA:·db669f962788c59d388d4f727ca83a581ee2999a53b7adb038fc671233bd2b59·...·]-2">}</span></code></pre><p><em>gc_minor_end</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">reclaimed·:·integer</code>·::·Heap·reclaimed.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and169 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gc_minor_start</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5493073476-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="5493073476-1">}</span><span·[·...·truncated·by·diffoscope;·len:·858,·SHA:·b5d6ecd0d6267856d02eb42ee5c2bd707a6f381058c32c726884be651338f45a·...·]-2">}</span></code></pre><p><em>gc_minor_end</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">reclaimed·:·integer</code>·::·Heap·reclaimed.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and
170 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="c">gc_minor_end:·{·cpu_id·=·0·},·{·pid·=·&quot;&lt;0.172.0&gt;&quot;,·reclaimed·=·120,·heap·=·1598,·old_heap·=·1598·}</code></pre><p><em>gc_major_start</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">need·:·integer</code>·::·Heap·need.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and170 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="c">gc_minor_end:·{·cpu_id·=·0·},·{·pid·=·&quot;&lt;0.172.0&gt;&quot;,·reclaimed·=·120,·heap·=·1598,·old_heap·=·1598·}</code></pre><p><em>gc_major_start</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">need·:·integer</code>·::·Heap·need.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and
171 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gc_major_start</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9590356950-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="9590356950-1">}</span><span·[·...·truncated·by·diffoscope;·len:·862,·SHA:·ae47604672ab1b5909c3a1da10084e988e18868fd5f052790f55b4fd4f4d7962·...·]-2">}</span></code></pre><p><em>gc_major_end</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">reclaimed·:·integer</code>·::·Heap·reclaimed.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and171 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">gc_major_start</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7543839697-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="7543839697-1">}</span><span·[·...·truncated·by·diffoscope;·len:·862,·SHA:·4d7795a805933504aba66df1fea4f2b907fd76a568381585cce0e0a00d99d357·...·]-2">}</span></code></pre><p><em>gc_major_end</em></p><ul><li><code·class="inline">pid·:·string</code>·::·Process·ID.·Ex.·<code·class="inline">&quot;&lt;0.131.0&gt;&quot;</code></li><li><code·class="inline">reclaimed·:·integer</code>·::·Heap·reclaimed.·Ex.·<code·class="inline">2</code></li><li><code·class="inline">heap·:·integer</code>·::·Young·heap·word·size.·Ex.·<code·class="inline">233</code></li><li><code·class="inline">old_heap·:·integer</code>·::·Old·heap·word·size.·Ex.·<code·class="inline">233</code></li></ul><p>Available·through·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#trace/3"><code·class="inline">erlang:trace/3</code></a>·with·trace·flag·<code·class="inline">garbage_collection</code>·and
172 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">gc_major_end:·{·cpu_id·=·0·},·{·pid·=·&quot;&lt;0.172.0&gt;&quot;,·reclaimed·=·240,·heap·=·4185,·old_heap·=·0·}</code></pre><h2·id="beam-tracepoints"·class="section-heading">172 <code·class="inline">{tracer,dyntrace,[]}</code>·as·tracer·module.</p><p>Example:</p><pre><code·class="text">gc_major_end:·{·cpu_id·=·0·},·{·pid·=·&quot;&lt;0.172.0&gt;&quot;,·reclaimed·=·240,·heap·=·4185,·old_heap·=·0·}</code></pre><h2·id="beam-tracepoints"·class="section-heading">
173 ··<a·href="#beam-tracepoints"·class="hover-link">173 ··<a·href="#beam-tracepoints"·class="hover-link">
174 ····<i·class="ri-link-m"·aria-hidden="true"></i>174 ····<i·class="ri-link-m"·aria-hidden="true"></i>
175 ··</a>175 ··</a>
176 ··<span·class="text">BEAM·Tracepoints</span>176 ··<span·class="text">BEAM·Tracepoints</span>
177 </h2>177 </h2>
178 <p>All·tracepoints·are·in·the·domain·of·<code·class="inline">org_erlang_otp</code></p><p>All·Erlang·types·are·the·string·equivalent·in·LTTng.</p><p><em>driver_init</em></p><ul><li><code·class="inline">driver·:·string</code>·::·Driver·name.·Ex.·<code·class="inline">&quot;tcp_inet&quot;</code></li><li><code·class="inline">major·:·integer</code>·::·Major·version.·Ex.·<code·class="inline">3</code></li><li><code·class="inline">minor·:·integer</code>·::·Minor·version.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">flags·:·integer</code>·::·Flags.·Ex.·<code·class="inline">1</code></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">driver_init</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2641848804-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="p"·data-group-id="2641848804-1">}</span><span·[·...·truncated·by·diffoscope;·len:·19389,·SHA:·34acb1bd3f4a9c680158281e139fb659fcdbde521732cfefb0d7d055b8b3b0cc·...·]-2">}</span></code></pre><p><em>carrier_create</em></p><ul><li><code·class="inline">type·:·string</code>·::·Carrier·type.·Ex.·<code·class="inline">&quot;ets_alloc&quot;</code></li><li><code·class="inline">instance·:·integer</code>·::·Allocator·instance.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">size·:·integer</code>·::·Carrier·size.·Ex.·<code·class="inline">262144</code></li><li><code·class="inline">mbc_carriers·:·integer</code>·::·Number·of·multiblock·carriers·in·instance.·Ex.·<code·class="inline">3</code></li><li><code·class="inline">mbc_carriers_size·:·integer</code>·::·Total·size·of·multiblock·blocks·carriers·in178 <p>All·tracepoints·are·in·the·domain·of·<code·class="inline">org_erlang_otp</code></p><p>All·Erlang·types·are·the·string·equivalent·in·LTTng.</p><p><em>driver_init</em></p><ul><li><code·class="inline">driver·:·string</code>·::·Driver·name.·Ex.·<code·class="inline">&quot;tcp_inet&quot;</code></li><li><code·class="inline">major·:·integer</code>·::·Major·version.·Ex.·<code·class="inline">3</code></li><li><code·class="inline">minor·:·integer</code>·::·Minor·version.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">flags·:·integer</code>·::·Flags.·Ex.·<code·class="inline">1</code></li></ul><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">driver_init</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3712405807-1">{</span><span·class="w">·</span><span·class="ss">cpu_id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">2</span><span·class="w">·</span><span·class="p"·data-group-id="3712405807-1">}</span><span·[·...·truncated·by·diffoscope;·len:·19389,·SHA:·15edf6f402d7cc2e40f7d13cb9f9d16b762b88d18893d36aee0163561ee5a756·...·]-2">}</span></code></pre><p><em>carrier_create</em></p><ul><li><code·class="inline">type·:·string</code>·::·Carrier·type.·Ex.·<code·class="inline">&quot;ets_alloc&quot;</code></li><li><code·class="inline">instance·:·integer</code>·::·Allocator·instance.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">size·:·integer</code>·::·Carrier·size.·Ex.·<code·class="inline">262144</code></li><li><code·class="inline">mbc_carriers·:·integer</code>·::·Number·of·multiblock·carriers·in·instance.·Ex.·<code·class="inline">3</code></li><li><code·class="inline">mbc_carriers_size·:·integer</code>·::·Total·size·of·multiblock·blocks·carriers·in
179 instance.·Ex.·<code·class="inline">1343488</code></li><li><code·class="inline">mbc_blocks·:·integer</code>·::·Number·of·multiblock·blocks·in·instance.·Ex.·<code·class="inline">122</code></li><li><code·class="inline">mbc_blocks_size·:·integer</code>·::·Total·size·of·all·multiblock·blocks·in179 instance.·Ex.·<code·class="inline">1343488</code></li><li><code·class="inline">mbc_blocks·:·integer</code>·::·Number·of·multiblock·blocks·in·instance.·Ex.·<code·class="inline">122</code></li><li><code·class="inline">mbc_blocks_size·:·integer</code>·::·Total·size·of·all·multiblock·blocks·in
180 instance.·Ex.·<code·class="inline">285296</code></li><li><code·class="inline">sbc_carriers·:·integer</code>·::·Number·of·singleblock·carriers·in·instance.·Ex.180 instance.·Ex.·<code·class="inline">285296</code></li><li><code·class="inline">sbc_carriers·:·integer</code>·::·Number·of·singleblock·carriers·in·instance.·Ex.
181 <code·class="inline">1</code></li><li><code·class="inline">sbc_carriers_size·:·integer</code>·::·Total·size·of·singleblock·blocks·carriers·in181 <code·class="inline">1</code></li><li><code·class="inline">sbc_carriers_size·:·integer</code>·::·Total·size·of·singleblock·blocks·carriers·in
182 instance.·Ex.·<code·class="inline">1343488</code></li><li><code·class="inline">sbc_blocks·:·integer</code>·::·Number·of·singleblocks·in·instance.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">sbc_blocks_size·:·integer</code>·::·Total·size·of·all·singleblock·blocks·in182 instance.·Ex.·<code·class="inline">1343488</code></li><li><code·class="inline">sbc_blocks·:·integer</code>·::·Number·of·singleblocks·in·instance.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">sbc_blocks_size·:·integer</code>·::·Total·size·of·all·singleblock·blocks·in
183 instance.·Ex.·<code·class="inline">285296</code></li></ul><p>Example:</p><pre><code·class="c">carrier_create:·{·cpu_id·=·2·},·{·type·=·&quot;ets_alloc&quot;,·instance·=·7,·size·=·2097152,·mbc_carriers·=·4,·mbc_carriers_size·=·3440640,·mbc_blocks·=·526,·mbc_blocks_size·=·1278576,·sbc_carriers·=·0,·sbc_carriers_size·=·0,·sbc_blocks·=·0,·sbc_blocks_size·=·0·}</code></pre><p><em>carrier_destroy</em></p><ul><li><code·class="inline">type·:·string</code>·::·Carrier·type.·Ex.·<code·class="inline">&quot;ets_alloc&quot;</code></li><li><code·class="inline">instance·:·integer</code>·::·Allocator·instance.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">size·:·integer</code>·::·Carrier·size.·Ex.·<code·class="inline">262144</code></li><li><code·class="inline">mbc_carriers·:·integer</code>·::·Number·of·multiblock·carriers·in·instance.·Ex.·<code·class="inline">3</code></li><li><code·class="inline">mbc_carriers_size·:·integer</code>·::·Total·size·of·multiblock·blocks·carriers·in183 instance.·Ex.·<code·class="inline">285296</code></li></ul><p>Example:</p><pre><code·class="c">carrier_create:·{·cpu_id·=·2·},·{·type·=·&quot;ets_alloc&quot;,·instance·=·7,·size·=·2097152,·mbc_carriers·=·4,·mbc_carriers_size·=·3440640,·mbc_blocks·=·526,·mbc_blocks_size·=·1278576,·sbc_carriers·=·0,·sbc_carriers_size·=·0,·sbc_blocks·=·0,·sbc_blocks_size·=·0·}</code></pre><p><em>carrier_destroy</em></p><ul><li><code·class="inline">type·:·string</code>·::·Carrier·type.·Ex.·<code·class="inline">&quot;ets_alloc&quot;</code></li><li><code·class="inline">instance·:·integer</code>·::·Allocator·instance.·Ex.·<code·class="inline">1</code></li><li><code·class="inline">size·:·integer</code>·::·Carrier·size.·Ex.·<code·class="inline">262144</code></li><li><code·class="inline">mbc_carriers·:·integer</code>·::·Number·of·multiblock·carriers·in·instance.·Ex.·<code·class="inline">3</code></li><li><code·class="inline">mbc_carriers_size·:·integer</code>·::·Total·size·of·multiblock·blocks·carriers·in
184 instance.·Ex.·<code·class="inline">1343488</code></li><li><code·class="inline">mbc_blocks·:·integer</code>·::·Number·of·multiblock·blocks·in·instance.·Ex.·<code·class="inline">122</code></li><li><code·class="inline">mbc_blocks_size·:·integer</code>·::·Total·size·of·all·multiblock·blocks·in184 instance.·Ex.·<code·class="inline">1343488</code></li><li><code·class="inline">mbc_blocks·:·integer</code>·::·Number·of·multiblock·blocks·in·instance.·Ex.·<code·class="inline">122</code></li><li><code·class="inline">mbc_blocks_size·:·integer</code>·::·Total·size·of·all·multiblock·blocks·in
185 instance.·Ex.·<code·class="inline">285296</code></li><li><code·class="inline">sbc_carriers·:·integer</code>·::·Number·of·singleblock·carriers·in·instance.·Ex.185 instance.·Ex.·<code·class="inline">285296</code></li><li><code·class="inline">sbc_carriers·:·integer</code>·::·Number·of·singleblock·carriers·in·instance.·Ex.
Offset 194, 18 lines modifiedOffset 194, 18 lines modified
194 <p>An·example·of·process·tracing·of·<code·class="inline">os_mon</code>·and·friends.</p><p>Clean·start·of·lttng·in·a·bash·shell.</p><pre><code·class="text">$·lttng·create·erlang-demo194 <p>An·example·of·process·tracing·of·<code·class="inline">os_mon</code>·and·friends.</p><p>Clean·start·of·lttng·in·a·bash·shell.</p><pre><code·class="text">$·lttng·create·erlang-demo
195 Spawning·a·session·daemon195 Spawning·a·session·daemon
196 Session·erlang-demo·created.196 Session·erlang-demo·created.
197 Traces·will·be·written·in·/home/egil/lttng-traces/erlang-demo-20160526-165920</code></pre><p>Start·an·Erlang·node·with·lttng·enabled.</p><pre><code·class="text">$·erl197 Traces·will·be·written·in·/home/egil/lttng-traces/erlang-demo-20160526-165920</code></pre><p>Start·an·Erlang·node·with·lttng·enabled.</p><pre><code·class="text">$·erl
198 Erlang/OTP·19·[erts-8.0]·[source-4d7b24d]·[64-bit]·[smp:8:8]·[async-threads:10]·[hipe]·[kernel-poll:false]·[lttng]198 Erlang/OTP·19·[erts-8.0]·[source-4d7b24d]·[64-bit]·[smp:8:8]·[async-threads:10]·[hipe]·[kernel-poll:false]·[lttng]
  
199 Eshell·V8.0··(abort·with·^G)199 Eshell·V8.0··(abort·with·^G)
200 1&gt;</code></pre><p>Load·the·<code·class="inline">dyntrace</code>·module.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">l</span><span·class="p"·data-group-id="0221586615-1">(</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="0221586615-1">)</span><span·class="p">.</span><span·class="w">200 1&gt;</code></pre><p>Load·the·<code·class="inline">dyntrace</code>·module.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">l</span><span·class="p"·data-group-id="1662033824-1">(</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="1662033824-1">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="0221586615-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="0221586615-2">}</span></code></pre><p>All·tracepoints·via·dyntrace·are·now·visible·and·can·be·listed·through201 </span><span·class="p"·data-group-id="1662033824-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="1662033824-2">}</span></code></pre><p>All·tracepoints·via·dyntrace·are·now·visible·and·can·be·listed·through
202 <code·class="inline">lttng·list·-u</code>.</p><p>Enable·the·process_register·LTTng·tracepoint·for·Erlang.</p><pre><code·class="text">$·lttng·enable-event·-u·org_erlang_dyntrace:process_register202 <code·class="inline">lttng·list·-u</code>.</p><p>Enable·the·process_register·LTTng·tracepoint·for·Erlang.</p><pre><code·class="text">$·lttng·enable-event·-u·org_erlang_dyntrace:process_register
203 UST·event·org_erlang_dyntrace:process_register·created·in·channel·channel0</code></pre><p>Enable·process·tracing·for·new·processes·and·use·<code·class="inline">dyntrace</code>·as·tracer·backend.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="6126934417-1">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="ss">true</span><span·class="p">,</span><span·class="p"·data-group-id="6126934417-2">[</span><span·class="ss">procs</span><span·class="p">,</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·390,·SHA:·4b4ccf7bac0766a4fb81af1612f225c4208255928e2d3a4ad676a2719c4dee60·...·]7-1">)</span><span·class="p">.</span><span·class="w">203 UST·event·org_erlang_dyntrace:process_register·created·in·channel·channel0</code></pre><p>Enable·process·tracing·for·new·processes·and·use·<code·class="inline">dyntrace</code>·as·tracer·backend.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="1148993647-1">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="ss">true</span><span·class="p">,</span><span·class="p"·data-group-id="1148993647-2">[</span><span·class="ss">procs</span><span·class="p">,</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·390,·SHA:·f12a3fc83a8802d1ca60d2d553dd38ba8a4c3bb5ab83ff34869e2eb56ae6f3ba·...·]7-1">)</span><span·class="p">.</span><span·class="w">
204 </span><span·class="mi">0</span></code></pre><p>Start·LTTng·tracing.</p><pre><code·class="text">$·lttng·start204 </span><span·class="mi">0</span></code></pre><p>Start·LTTng·tracing.</p><pre><code·class="text">$·lttng·start
205 Tracing·started·for·session·erlang-demo</code></pre><p>Start·the·<code·class="inline">os_mon</code>·application·in·Erlang.</p><pre><code·class="text">3&gt;·application:ensure_all_started(os_mon).205 Tracing·started·for·session·erlang-demo</code></pre><p>Start·the·<code·class="inline">os_mon</code>·application·in·Erlang.</p><pre><code·class="text">3&gt;·application:ensure_all_started(os_mon).
206 {ok,[sasl,os_mon]}</code></pre><p>Stop·LTTng·tracing·and·view·the·result.</p><pre><code·class="text">$·lttng·stop206 {ok,[sasl,os_mon]}</code></pre><p>Stop·LTTng·tracing·and·view·the·result.</p><pre><code·class="text">$·lttng·stop
207 Tracing·stopped·for·session·erlang-demo207 Tracing·stopped·for·session·erlang-demo
208 $·lttng·view208 $·lttng·view
209 [17:20:42.561168759]·(+?.?????????)·elxd1168lx9·org_erlang_dyntrace:process_register:·\209 [17:20:42.561168759]·(+?.?????????)·elxd1168lx9·org_erlang_dyntrace:process_register:·\
210 ····{·cpu_id·=·5·},·{·pid·=·&quot;&lt;0.66.0&gt;&quot;,·name·=·&quot;sasl_sup&quot;,·type·=·&quot;register&quot;·}210 ····{·cpu_id·=·5·},·{·pid·=·&quot;&lt;0.66.0&gt;&quot;,·name·=·&quot;sasl_sup&quot;,·type·=·&quot;register&quot;·}
13.0 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/msacc.html
    
Offset 127, 29 lines modifiedOffset 127, 29 lines modified
127 ··</h1>127 ··</h1>
  
  
128 ····<section·id="moduledoc">128 ····<section·id="moduledoc">
129 <p>Convenience·functions·for·microstate·accounting</p><p>This·module·implements·some·convenience·functions·for·analyzing·microstate129 <p>Convenience·functions·for·microstate·accounting</p><p>This·module·implements·some·convenience·functions·for·analyzing·microstate
130 accounting·data.·For·details·about·how·to·use·the·basic·API·and·what·the130 accounting·data.·For·details·about·how·to·use·the·basic·API·and·what·the
131 different·states·represent,·see131 different·states·represent,·see
132 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#statistics_microstate_accounting"><code·class="inline">erlang:statistics(microstate_accounting)</code></a>.</p><p><a·href=""·id="msacc_print_example"></a></p><p><em>Basic·Scenario</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4886458908-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="4886458908-1">)</span><span·class="p">.</span><span·class="w">132 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#statistics_microstate_accounting"><code·class="inline">erlang:statistics(microstate_accounting)</code></a>.</p><p><a·href=""·id="msacc_print_example"></a></p><p><em>Basic·Scenario</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4656939734-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="4656939734-1">)</span><span·class="p">.</span><span·class="w">
133 </span><span·class="ss">ok</span><span·class="gp·unselectable">133 </span><span·class="ss">ok</span><span·class="gp·unselectable">
134 2&gt;·</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="4886458908-2">(</span><span·class="p"·data-group-id="4886458908-2">)</span><span·class="p">.</span><span·class="w">134 2&gt;·</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="4656939734-2">(</span><span·class="p"·data-group-id="4656939734-2">)</span><span·class="p">.</span><span·class="w">
135 </span><span·class="n">Average</span><span·class="w">·</span><span·class="ss">thread</span><span·class="w">·</span><span·class="ss">real</span><span·class="o">-</span><span·class="ss">time</span><span·class="w">····</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">1000513</span><span·class="w">·</span><span·class="ss">us</span><span·class="w">135 </span><span·class="n">Average</span><span·class="w">·</span><span·class="ss">thread</span><span·class="w">·</span><span·class="ss">real</span><span·class="o">-</span><span·class="ss">time</span><span·class="w">····</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">1000513</span><span·class="w">·</span><span·class="ss">us</span><span·class="w">
136 </span><span·class="n">Accumulated</span><span·class="w">·</span><span·class="ss">system</span><span·class="w">·</span><span·class="ss">run</span><span·class="o">-</span><span·class="ss">time</span><span·class="w">·</span><span·class="p">:</span><span·class="w">····</span><span·class="mi">2213</span><span·class="w">·</span><span·class="ss">us</span><span·class="w">136 </span><span·class="n">Accumulated</span><span·class="w">·</span><span·class="ss">system</span><span·class="w">·</span><span·class="ss">run</span><span·class="o">-</span><span·class="ss">time</span><span·class="w">·</span><span·class="p">:</span><span·class="w">····</span><span·class="mi">2213</span><span·class="w">·</span><span·class="ss">us</span><span·class="w">
137 </span><span·class="n">Average</span><span·class="w">·</span><span·class="ss">scheduler</span><span·class="w">·</span><span·class="ss">run</span><span·class="o">-</span><span·class="ss">time</span><span·class="w">··</span><span·class="p">:</span><span·class="w">····</span><span·class="mi">1076</span><span·class="w">·</span><span·class="ss">us</span><span·class="w">137 </span><span·class="n">Average</span><span·class="w">·</span><span·class="ss">scheduler</span><span·class="w">·</span><span·class="ss">run</span><span·class="o">-</span><span·class="ss">time</span><span·class="w">··</span><span·class="p">:</span><span·class="w">····</span><span·class="mi">1076</span><span·class="w">·</span><span·class="ss">us</span><span·class="w">
  
138 ········</span><span·class="n">Thread</span><span·class="w">······</span><span·class="ss">aux</span><span·class="w">·</span><span·class="ss">check_io</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·······</span><span·class="ss">gc</span><span·class="w">····</span><span·class="ss">other</span><span·class="w">·····</span><span·class="ss">port</span><span·class="w">····</span><span·class="ss">sleep</span><span·class="w">138 ········</span><span·class="n">Thread</span><span·class="w">······</span><span·class="ss">aux</span><span·class="w">·</span><span·class="ss">check_io</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·······</span><span·class="ss">gc</span><span·class="w">····</span><span·class="ss">other</span><span·class="w">·····</span><span·class="ss">port</span><span·class="w">····</span><span·class="ss">sleep</span><span·class="w">
  
139 </span><span·class="n">Stats</span><span·class="w">·</span><span·class="ss">per</span><span·class="w">·</span><span·class="nc">thread</span><span·class="p">:</span><span·class="w">139 </span><span·class="n">Stats</span><span·class="w">·</span><span·class="ss">per</span><span·class="w">·</span><span·class="nc">thread</span><span·class="p">:</span><span·class="w">
140 ·····</span><span·class="nf">async</span><span·class="p"·data-group-id="4886458908-3">(</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="4886458908-3">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%··100.00%</span><span·class="w">140 ·····</span><span·class="nf">async</span><span·class="p"·data-group-id="4656939734-3">(</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="4656939734-3">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%··100.00%</span><span·class="w">
141 ·····</span><span·class="nf">async</span><span·class="p"·data-group-id="4886458908-4">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4886458908-4">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%··100.00%</span><span·class="w">141 ·····</span><span·class="nf">async</span><span·class="p"·data-group-id="4656939734-4">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4656939734-4">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%··100.00%</span><span·class="w">
142 ·······</span><span·class="nf">aux</span><span·class="p"·data-group-id="4886458908-5">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4886458908-5">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%···99.99%</span><span·class="w">142 ·······</span><span·class="nf">aux</span><span·class="p"·data-group-id="4656939734-5">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4656939734-5">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%···99.99%</span><span·class="w">
143 ·</span><span·class="nf">scheduler</span><span·class="p"·data-group-id="4886458908-6">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4886458908-6">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.03%····0.13%····0.00%····0.01%····0.00%···99.82%</span><span·class="w">143 ·</span><span·class="nf">scheduler</span><span·class="p"·data-group-id="4656939734-6">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4656939734-6">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.03%····0.13%····0.00%····0.01%····0.00%···99.82%</span><span·class="w">
144 ·</span><span·class="nf">scheduler</span><span·class="p"·data-group-id="4886458908-7">(</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4886458908-7">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.03%····0.00%···99.97%</span><span·class="w">144 ·</span><span·class="nf">scheduler</span><span·class="p"·data-group-id="4656939734-7">(</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4656939734-7">)</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.03%····0.00%···99.97%</span><span·class="w">
  
145 </span><span·class="n">Stats</span><span·class="w">·</span><span·class="ss">per</span><span·class="w">·</span><span·class="nc">type</span><span·class="p">:</span><span·class="w">145 </span><span·class="n">Stats</span><span·class="w">·</span><span·class="ss">per</span><span·class="w">·</span><span·class="nc">type</span><span·class="p">:</span><span·class="w">
146 ·········</span><span·class="ss">async</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%··100.00%</span><span·class="w">146 ·········</span><span·class="ss">async</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%··100.00%</span><span·class="w">
147 ···········</span><span·class="ss">aux</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%···99.99%</span><span·class="w">147 ···········</span><span·class="ss">aux</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.00%····0.00%····0.00%····0.00%····0.00%···99.99%</span><span·class="w">
148 ·····</span><span·class="ss">scheduler</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.02%····0.06%····0.00%····0.02%····0.00%···99.89%</span><span·class="w">148 ·····</span><span·class="ss">scheduler</span><span·class="w">····</span><span·class="mf">0.00</span><span·class="c1">%····0.02%····0.06%····0.00%····0.02%····0.00%···99.89%</span><span·class="w">
149 </span><span·class="ss">ok</span></code></pre><p>This·first·command·enables·microstate·accounting·for·1000·milliseconds.·See149 </span><span·class="ss">ok</span></code></pre><p>This·first·command·enables·microstate·accounting·for·1000·milliseconds.·See
150 <a·href="#start/0"><code·class="inline">start/0</code></a>,·<a·href="#stop/0"><code·class="inline">stop/0</code></a>,·<a·href="#reset/0"><code·class="inline">reset/0</code></a>,·and·<a·href="#start/1"><code·class="inline">start/1</code></a>·for·more·details.·The·second150 <a·href="#start/0"><code·class="inline">start/0</code></a>,·<a·href="#stop/0"><code·class="inline">stop/0</code></a>,·<a·href="#reset/0"><code·class="inline">reset/0</code></a>,·and·<a·href="#start/1"><code·class="inline">start/1</code></a>·for·more·details.·The·second
Offset 911, 15 lines modifiedOffset 911, 15 lines modified
  
911 ······</div>911 ······</div>
  
912 <p>Print·the·given·microstate·statistics·values·to·standard·out.·With·many·states912 <p>Print·the·given·microstate·statistics·values·to·standard·out.·With·many·states
913 this·can·be·verbose.·See·the·top·of·this·reference·manual·for·a·brief913 this·can·be·verbose.·See·the·top·of·this·reference·manual·for·a·brief
914 description·of·what·the·fields·mean.</p><p>It·is·possible·to·print·more·specific·types·of·statistics·by·first·manipulating914 description·of·what·the·fields·mean.</p><p>It·is·possible·to·print·more·specific·types·of·statistics·by·first·manipulating
915 the·<code·class="inline">DataOrStats</code>·using·<a·href="#stats/2"><code·class="inline">stats/2</code></a>.·For·instance·if·you·want·to·print·the915 the·<code·class="inline">DataOrStats</code>·using·<a·href="#stats/2"><code·class="inline">stats/2</code></a>.·For·instance·if·you·want·to·print·the
916 percentage·of·run-time·for·each·thread·you·can·do:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="3675685746-1">(</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">stats</span><span·class="p"·data-group-id="3675685746-2">(</span><span·class="ss">runtime</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">msa[·...·truncated·by·diffoscope;·len:·1323,·SHA:·9eab6325682db8857eab307f6bd63b463c60884b67202e27e457ddf9234f3577·...·]-1">)</span><span·class="p">.</span></code></pre><p><em>Options</em></p><ul><li><strong><code·class="inline">system</code></strong>·-·Print·percentage·of·time·spent·in·each·state·out·of·system·time916 percentage·of·run-time·for·each·thread·you·can·do:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">print</span><span·class="p"·data-group-id="7758086858-1">(</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">stats</span><span·class="p"·data-group-id="7758086858-2">(</span><span·class="ss">runtime</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">msa[·...·truncated·by·diffoscope;·len:·1323,·SHA:·944727733e975af1372c615d02f76375aa7b3a0bd94a8afed9537de1bad3136a·...·]-1">)</span><span·class="p">.</span></code></pre><p><em>Options</em></p><ul><li><strong><code·class="inline">system</code></strong>·-·Print·percentage·of·time·spent·in·each·state·out·of·system·time
917 as·well·as·thread·time.·Default:·false.</li></ul>917 as·well·as·thread·time.·Default:·false.</li></ul>
918 ··</section>918 ··</section>
919 </section>919 </section>
920 <section·class="detail"·id="print/3">920 <section·class="detail"·id="print/3">
  
921 ··<div·class="detail-header">921 ··<div·class="detail-header">
922 ····<a·href="#print/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">922 ····<a·href="#print/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
499 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/runtime_tools.epub
3.27 KB
zipinfo {}
    
Offset 1, 22 lines modifiedOffset 1, 22 lines modified
1 Zip·file·size:·118760·bytes,·number·of·entries:·201 Zip·file·size:·118748·bytes,·number·of·entries:·20
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:47·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:06·mimetype
3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Feb-13·10:47·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Feb-13·09:06·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx·····4130·bx·defN·25-Feb-13·10:47·OEBPS/systemtap.xhtml4 ?rw-r--r--··6.1·unx·····4130·bx·defN·25-Feb-13·09:06·OEBPS/systemtap.xhtml
5 ?rw-r--r--··6.1·unx·····7084·bx·defN·25-Feb-13·10:47·OEBPS/system_information.xhtml5 ?rw-r--r--··6.1·unx·····7084·bx·defN·25-Feb-13·09:06·OEBPS/system_information.xhtml
6 ?rw-r--r--··6.1·unx····23126·bx·defN·25-Feb-13·10:47·OEBPS/scheduler.xhtml6 ?rw-r--r--··6.1·unx····23126·bx·defN·25-Feb-13·09:06·OEBPS/scheduler.xhtml
7 ?rw-r--r--··6.1·unx·····1494·bx·defN·25-Feb-13·10:47·OEBPS/runtime_tools_app.xhtml7 ?rw-r--r--··6.1·unx·····1494·bx·defN·25-Feb-13·09:06·OEBPS/runtime_tools_app.xhtml
8 ?rw-r--r--··6.1·unx····72570·bx·defN·25-Feb-13·10:47·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····72570·bx·defN·25-Feb-13·09:06·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1590·bx·defN·25-Feb-13·10:47·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1590·bx·defN·25-Feb-13·09:06·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····44036·bx·defN·25-Feb-13·10:47·OEBPS/msacc.xhtml10 ?rw-r--r--··6.1·unx····44036·bx·defN·25-Feb-13·09:06·OEBPS/msacc.xhtml
11 ?rw-r--r--··6.1·unx····58689·bx·defN·25-Feb-13·10:47·OEBPS/lttng.xhtml11 ?rw-r--r--··6.1·unx····58689·bx·defN·25-Feb-13·09:06·OEBPS/lttng.xhtml
12 ?rw-r--r--··6.1·unx····44876·bx·defN·25-Feb-13·10:47·OEBPS/instrument.xhtml12 ?rw-r--r--··6.1·unx····44876·bx·defN·25-Feb-13·09:06·OEBPS/instrument.xhtml
13 ?rw-r--r--··6.1·unx····41781·bx·defN·25-Feb-13·10:47·OEBPS/dyntrace.xhtml13 ?rw-r--r--··6.1·unx····41781·bx·defN·25-Feb-13·09:06·OEBPS/dyntrace.xhtml
14 ?rw-r--r--··6.1·unx·····3689·bx·defN·25-Feb-13·10:47·OEBPS/dtrace.xhtml14 ?rw-r--r--··6.1·unx·····3689·bx·defN·25-Feb-13·09:06·OEBPS/dtrace.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:47·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:06·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:47·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:06·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx···244898·bx·defN·25-Feb-13·10:47·OEBPS/dbg.xhtml17 ?rw-r--r--··6.1·unx···244898·bx·defN·25-Feb-13·09:06·OEBPS/dbg.xhtml
18 ?rw-r--r--··6.1·unx·····2672·bx·defN·25-Feb-13·10:47·OEBPS/content.opf18 ?rw-r--r--··6.1·unx·····2672·bx·defN·25-Feb-13·09:06·OEBPS/content.opf
19 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:47·OEBPS/assets/logo.png19 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:06·OEBPS/assets/logo.png
20 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:47·META-INF/container.xml20 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:06·META-INF/container.xml
21 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:47·META-INF/com.apple.ibooks.display-options.xml21 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:06·META-INF/com.apple.ibooks.display-options.xml
22 20·files,·572697·bytes·uncompressed,·115310·bytes·compressed:··79.9%22 20·files,·572697·bytes·uncompressed,·115298·bytes·compressed:··79.9%
110 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:47:48,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:06:30,·uncompressed·size·20,·method=store
2.53 KB
OEBPS/scheduler.xhtml
    
Offset 470, 15 lines modifiedOffset 470, 15 lines modified
470 ······</div>470 ······</div>
  
471 <p>Measure·utilization·for·normal·and·dirty-cpu·schedulers·during·<code·class="inline">Seconds</code>471 <p>Measure·utilization·for·normal·and·dirty-cpu·schedulers·during·<code·class="inline">Seconds</code>
472 seconds,·and·then·return·the·result.</p><p>Will·automatically·first·enable·and·then·disable472 seconds,·and·then·return·the·result.</p><p>Will·automatically·first·enable·and·then·disable
473 <a·href="../../../../lib/../erts/doc/html/erlang.html#system_flag_scheduler_wall_time"><code·class="inline">scheduler_wall_time</code></a>.</p><p>Calculate·scheduler·utilizations·for·the·time·interval·from·when·<code·class="inline">Sample</code>·was473 <a·href="../../../../lib/../erts/doc/html/erlang.html#system_flag_scheduler_wall_time"><code·class="inline">scheduler_wall_time</code></a>.</p><p>Calculate·scheduler·utilizations·for·the·time·interval·from·when·<code·class="inline">Sample</code>·was
474 taken·and·&quot;now&quot;.·The·same·as·calling474 taken·and·&quot;now&quot;.·The·same·as·calling
475 <code·class="inline">scheduler:utilization(Sample,·scheduler:sample_all())</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·is·<em>not·recommended</em>·as·it's·so·easy·to·get·invalid·results475 <code·class="inline">scheduler:utilization(Sample,·scheduler:sample_all())</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·is·<em>not·recommended</em>·as·it's·so·easy·to·get·invalid·results
476 without·noticing.·In·particular·do·not·do·this:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">utilization</samp><samp·class="p"·data-group-id="7135066566-1">(</samp><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">sample</samp><samp·class="p"·data-group-id="7135066566-2">(</samp><samp·class="p"·data-group-id="7135066566-2">)</samp><samp·class="p"·data-group-id="7135066566-1">)</samp><samp·class="p">.</samp><samp·class="w">·</samp><samp·class="c1">%·DO·NOT·DO·THIS!</samp></code></pre><p>The·above·example·takes·two·samples·in·rapid·succession·and·calculates·the476 without·noticing.·In·particular·do·not·do·this:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">utilization</samp><samp·class="p"·data-group-id="9332657101-1">(</samp><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">sample</samp><samp·class="p"·data-group-id="9332657101-2">(</samp><samp·class="p"·data-group-id="9332657101-2">)</samp><samp·class="p"·data-group-id="9332657101-1">)</samp><samp·class="p">.</samp><samp·class="w">·</samp><samp·class="c1">%·DO·NOT·DO·THIS!</samp></code></pre><p>The·above·example·takes·two·samples·in·rapid·succession·and·calculates·the
477 scheduler·utilization·between·them.·The·resulting·values·will·probably·be·more477 scheduler·utilization·between·them.·The·resulting·values·will·probably·be·more
478 misleading·than·informative.</p><p>Instead·use·<a·href="#utilization/2"><code·class="inline">scheduler:utilization/2</code></a>·and·call478 misleading·than·informative.</p><p>Instead·use·<a·href="#utilization/2"><code·class="inline">scheduler:utilization/2</code></a>·and·call
479 <a·href="#get_sample/0"><code·class="inline">get_sample/0</code></a>·to·get·samples·with·some·time·in·between.</p></section>479 <a·href="#get_sample/0"><code·class="inline">get_sample/0</code></a>·to·get·samples·with·some·time·in·between.</p></section>
480 ··</section>480 ··</section>
481 </section>481 </section>
482 <section·class="detail"·id="utilization/2">482 <section·class="detail"·id="utilization/2">
  
12.9 KB
OEBPS/msacc.xhtml
Max HTML report size reached
92.2 KB
OEBPS/lttng.xhtml
Max HTML report size reached
50.5 KB
OEBPS/instrument.xhtml
Max HTML report size reached
11.3 KB
OEBPS/dyntrace.xhtml
Max HTML report size reached
215 KB
OEBPS/dbg.xhtml
Max HTML report size reached
1.25 KB
OEBPS/content.opf
1.21 KB
OEBPS/content.opf
Max HTML report size reached
2.65 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/scheduler.html
    
Offset 591, 15 lines modifiedOffset 591, 15 lines modified
591 ······</div>591 ······</div>
  
592 <p>Measure·utilization·for·normal·and·dirty-cpu·schedulers·during·<code·class="inline">Seconds</code>592 <p>Measure·utilization·for·normal·and·dirty-cpu·schedulers·during·<code·class="inline">Seconds</code>
593 seconds,·and·then·return·the·result.</p><p>Will·automatically·first·enable·and·then·disable593 seconds,·and·then·return·the·result.</p><p>Will·automatically·first·enable·and·then·disable
594 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#system_flag_scheduler_wall_time"><code·class="inline">scheduler_wall_time</code></a>.</p><p>Calculate·scheduler·utilizations·for·the·time·interval·from·when·<code·class="inline">Sample</code>·was594 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#system_flag_scheduler_wall_time"><code·class="inline">scheduler_wall_time</code></a>.</p><p>Calculate·scheduler·utilizations·for·the·time·interval·from·when·<code·class="inline">Sample</code>·was
595 taken·and·&quot;now&quot;.·The·same·as·calling595 taken·and·&quot;now&quot;.·The·same·as·calling
596 <code·class="inline">scheduler:utilization(Sample,·scheduler:sample_all())</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·is·<em>not·recommended</em>·as·it's·so·easy·to·get·invalid·results596 <code·class="inline">scheduler:utilization(Sample,·scheduler:sample_all())</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·is·<em>not·recommended</em>·as·it's·so·easy·to·get·invalid·results
597 without·noticing.·In·particular·do·not·do·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">utilization</span><span·class="p"·data-group-id="2935355201-1">(</span><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">sample</span><span·class="p"·data-group-id="2935355201-2">(</span><span·class="p"·data-group-id="2935355201-2">)</span><span·class="p"·data-group-id="2935355201-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·DO·NOT·DO·THIS!</span></code></pre><p>The·above·example·takes·two·samples·in·rapid·succession·and·calculates·the597 without·noticing.·In·particular·do·not·do·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">utilization</span><span·class="p"·data-group-id="4950438621-1">(</span><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">sample</span><span·class="p"·data-group-id="4950438621-2">(</span><span·class="p"·data-group-id="4950438621-2">)</span><span·class="p"·data-group-id="4950438621-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·DO·NOT·DO·THIS!</span></code></pre><p>The·above·example·takes·two·samples·in·rapid·succession·and·calculates·the
598 scheduler·utilization·between·them.·The·resulting·values·will·probably·be·more598 scheduler·utilization·between·them.·The·resulting·values·will·probably·be·more
599 misleading·than·informative.</p><p>Instead·use·<a·href="#utilization/2"><code·class="inline">scheduler:utilization/2</code></a>·and·call599 misleading·than·informative.</p><p>Instead·use·<a·href="#utilization/2"><code·class="inline">scheduler:utilization/2</code></a>·and·call
600 <a·href="#get_sample/0"><code·class="inline">get_sample/0</code></a>·to·get·samples·with·some·time·in·between.</p></section>600 <a·href="#get_sample/0"><code·class="inline">get_sample/0</code></a>·to·get·samples·with·some·time·in·between.</p></section>
601 ··</section>601 ··</section>
602 </section>602 </section>
603 <section·class="detail"·id="utilization/2">603 <section·class="detail"·id="utilization/2">
  
35.1 KB
./usr/share/doc/erlang-doc/html/lib/sasl-4.2.2/doc/html/appup.html
    
Offset 217, 29 lines modifiedOffset 217, 29 lines modified
217 that·is,·if·a·process·using·the·module·spontaneously·switches·to·new·code,·or217 that·is,·if·a·process·using·the·module·spontaneously·switches·to·new·code,·or
218 if·it·is·&quot;static&quot;.·When·doing·an·advanced·update·and·upgrade,·the·new·version218 if·it·is·&quot;static&quot;.·When·doing·an·advanced·update·and·upgrade,·the·new·version
219 of·a·dynamic·module·is·loaded·before·the·process·is·asked·to·change·code.·When219 of·a·dynamic·module·is·loaded·before·the·process·is·asked·to·change·code.·When
220 downgrading,·the·process·is·asked·to·change·code·before·loading·the·new220 downgrading,·the·process·is·asked·to·change·code·before·loading·the·new
221 version.·For·static·modules,·the·new·version·is·loaded·before·the·process·is221 version.·For·static·modules,·the·new·version·is·loaded·before·the·process·is
222 asked·to·change·code,·both·in·the·case·of·upgrading·and·downgrading.·Callback222 asked·to·change·code,·both·in·the·case·of·upgrading·and·downgrading.·Callback
223 modules·are·dynamic.</p></li></ul><p><code·class="inline">update</code>·with·argument·<code·class="inline">supervisor</code>·is·used·when·changing·the·start223 modules·are·dynamic.</p></li></ul><p><code·class="inline">update</code>·with·argument·<code·class="inline">supervisor</code>·is·used·when·changing·the·start
224 specification·of·a·supervisor.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3580489959-1">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="3580489959-1">}</span><span·class="w">224 specification·of·a·supervisor.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7778461564-1">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="7778461564-1">}</span><span·class="w">
225 </span><span·class="p"·data-group-id="3580489959-2">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="3580489959-2">}</span><span·class="w">225 </span><span·class="p"·data-group-id="7778461564-2">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="7778461564-2">}</span><span·class="w">
226 </span><span·class="p"·data-group-id="3580489959-3">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrePurge</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·153,·SHA:·2fa7df4fb0cb0fdcd4a971afa6a97b53bdfb26e2d7ecb7e8df822ad8a5b61ee8·...·]-3">}</span><span·class="w">226 </span><span·class="p"·data-group-id="7778461564-3">{</span><span·class="nb">load_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">PrePurge</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·153,·SHA:·603d8f62d5e484724a307225f4246bc674ec15acc786927c45809b69fa484156·...·]-3">}</span><span·class="w">
227 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3580489959-4">(</span><span·class="p"·data-group-id="3580489959-4">)</span><span·class="w">227 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7778461564-4">(</span><span·class="p"·data-group-id="7778461564-4">)</span><span·class="w">
228 ··</span><span·class="n">PrePurge</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PostPurge</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">soft_purge</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">brutal_purge</span><span·class="w">228 ··</span><span·class="n">PrePurge</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">PostPurge</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">soft_purge</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">brutal_purge</span><span·class="w">
229 ··</span><span·class="n">DepMods</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3580489959-5">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="3580489959-5">]</span></code></pre><p>Simple·code·replacement·of·the·module·<code·class="inline">Mod</code>.</p><p>For·a·description·of·<code·class="inline">PrePurge</code>·and·<code·class="inline">PostPurge</code>,·see·<code·class="inline">update</code>·above.</p><p><code·class="inline">DepMods</code>·defaults·to·<code·class="inline">[]</code>·and·defines·which·other·modules·<code·class="inline">Mod</code>·is·dependent229 ··</span><span·class="n">DepMods</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7778461564-5">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="7778461564-5">]</span></code></pre><p>Simple·code·replacement·of·the·module·<code·class="inline">Mod</code>.</p><p>For·a·description·of·<code·class="inline">PrePurge</code>·and·<code·class="inline">PostPurge</code>,·see·<code·class="inline">update</code>·above.</p><p><code·class="inline">DepMods</code>·defaults·to·<code·class="inline">[]</code>·and·defines·which·other·modules·<code·class="inline">Mod</code>·is·dependent
230 on.·In·the·<code·class="inline">relup</code>·file,·instructions·for·loading·these·modules·come·before·the230 on.·In·the·<code·class="inline">relup</code>·file,·instructions·for·loading·these·modules·come·before·the
231 instruction·for·loading·<code·class="inline">Mod</code>·when·upgrading,·and·conversely·when·downgrading.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8267375718-1">{</span><span·class="ss">add_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="8267375718-1">}</span><span·class="w">231 instruction·for·loading·<code·class="inline">Mod</code>·when·upgrading,·and·conversely·when·downgrading.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5815728800-1">{</span><span·class="ss">add_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="5815728800-1">}</span><span·class="w">
232 </span><span·class="p"·data-group-id="8267375718-2">{</span><span·class="ss">add_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="8267375718-2">}</span><span·class="w">232 </span><span·class="p"·data-group-id="5815728800-2">{</span><span·class="ss">add_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="5815728800-2">}</span><span·class="w">
233 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="8267375718-3">(</span><span·class="p"·data-group-id="8267375718-3">)</span><span·class="w">233 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="5815728800-3">(</span><span·class="p"·data-group-id="5815728800-3">)</span><span·class="w">
234 ··</span><span·class="n">DepMods</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8267375718-4">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="8267375718-4">]</span></code></pre><p>Loads·a·new·module·<code·class="inline">Mod</code>.</p><p><code·class="inline">DepMods</code>·defaults·to·<code·class="inline">[]</code>·and·defines·which·other·modules·<code·class="inline">Mod</code>·is·dependent234 ··</span><span·class="n">DepMods</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5815728800-4">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="5815728800-4">]</span></code></pre><p>Loads·a·new·module·<code·class="inline">Mod</code>.</p><p><code·class="inline">DepMods</code>·defaults·to·<code·class="inline">[]</code>·and·defines·which·other·modules·<code·class="inline">Mod</code>·is·dependent
235 on.·In·the·<code·class="inline">relup</code>·file,·instructions·related·to·these·modules·come·before·the235 on.·In·the·<code·class="inline">relup</code>·file,·instructions·related·to·these·modules·come·before·the
236 instruction·for·loading·<code·class="inline">Mod</code>·when·upgrading,·and·conversely·when·downgrading.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9463582251-1">{</span><span·class="nb">delete_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="9463582251-1">}</span><span·class="w">236 instruction·for·loading·<code·class="inline">Mod</code>·when·upgrading,·and·conversely·when·downgrading.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3524660763-1">{</span><span·class="nb">delete_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p"·data-group-id="3524660763-1">}</span><span·class="w">
237 </span><span·class="p"·data-group-id="9463582251-2">{</span><span·class="nb">delete_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="9463582251-2">}</span><span·class="w">237 </span><span·class="p"·data-group-id="3524660763-2">{</span><span·class="nb">delete_module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DepMods</span><span·class="p"·data-group-id="3524660763-2">}</span><span·class="w">
238 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9463582251-3">(</span><span·class="p"·data-group-id="9463582251-3">)</span></code></pre><p>Deletes·a·module·<code·class="inline">Mod</code>·using·the·low-level·instructions·<code·class="inline">remove</code>·and·<code·class="inline">purge</code>.</p><p><code·class="inline">DepMods</code>·defaults·to·<code·class="inline">[]</code>·and·defines·which·other·modules·<code·class="inline">Mod</code>·is·dependent238 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3524660763-3">(</span><span·class="p"·data-group-id="3524660763-3">)</span></code></pre><p>Deletes·a·module·<code·class="inline">Mod</code>·using·the·low-level·instructions·<code·class="inline">remove</code>·and·<code·class="inline">purge</code>.</p><p><code·class="inline">DepMods</code>·defaults·to·<code·class="inline">[]</code>·and·defines·which·other·modules·<code·class="inline">Mod</code>·is·dependent
239 on.·In·the·<code·class="inline">relup</code>·file,·instructions·related·to·these·modules·come·before·the239 on.·In·the·<code·class="inline">relup</code>·file,·instructions·related·to·these·modules·come·before·the
240 instruction·for·removing·<code·class="inline">Mod</code>·when·upgrading,·and·conversely·when·downgrading.</p><pre><code·class="text">{add_application,·Application}240 instruction·for·removing·<code·class="inline">Mod</code>·when·upgrading,·and·conversely·when·downgrading.</p><pre><code·class="text">{add_application,·Application}
241 {add_application,·Application,·Type}241 {add_application,·Application,·Type}
242 ··Application·=·atom()242 ··Application·=·atom()
243 ··Type·=·permanent·|·transient·|·temporary·|·load·|·none</code></pre><p>Adding·an·application·means·that·the·modules·defined·by·the·<code·class="inline">modules</code>·key·in·the243 ··Type·=·permanent·|·transient·|·temporary·|·load·|·none</code></pre><p>Adding·an·application·means·that·the·modules·defined·by·the·<code·class="inline">modules</code>·key·in·the
244 <code·class="inline">.app</code>·file·are·loaded·using·<code·class="inline">add_module</code>.</p><p><code·class="inline">Type</code>·defaults·to·<code·class="inline">permanent</code>·and·specifies·the·start·type·of·the·application.244 <code·class="inline">.app</code>·file·are·loaded·using·<code·class="inline">add_module</code>.</p><p><code·class="inline">Type</code>·defaults·to·<code·class="inline">permanent</code>·and·specifies·the·start·type·of·the·application.
245 If·<code·class="inline">Type·=·permanent·|·transient·|·temporary</code>,·the·application·is·loaded·and245 If·<code·class="inline">Type·=·permanent·|·transient·|·temporary</code>,·the·application·is·loaded·and
Offset 258, 62 lines modifiedOffset 258, 62 lines modified
258 application·is·not·loaded·and·not·started,·although·the·code·for·its·modules·is258 application·is·not·loaded·and·not·started,·although·the·code·for·its·modules·is
259 loaded.</p><h3·id="low-level-instructions"·class="section-heading">259 loaded.</p><h3·id="low-level-instructions"·class="section-heading">
260 ··<a·href="#low-level-instructions"·class="hover-link">260 ··<a·href="#low-level-instructions"·class="hover-link">
261 ····<i·class="ri-link-m"·aria-hidden="true"></i>261 ····<i·class="ri-link-m"·aria-hidden="true"></i>
262 ··</a>262 ··</a>
263 ··<span·class="text">Low-Level·Instructions</span>263 ··<span·class="text">Low-Level·Instructions</span>
264 </h3>264 </h3>
265 <pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7180311656-1">{</span><span·class="ss">load_object_code</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7180311656-2">{</span><span·class="n">App</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Vsn[·...·truncated·by·diffoscope;·len:·281,·SHA:·447116d197786ffe500c881e8990d08d1379fc0c09434dd03101a72a80559c41·...·]-1">}</span><span·class="w">265 <pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9468562983-1">{</span><span·class="ss">load_object_code</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9468562983-2">{</span><span·class="n">App</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Vsn[·...·truncated·by·diffoscope;·len:·281,·SHA:·64e41d7fc73a98959cf95e950afb8e4b36e5e0b0a8e28c90861a1fbeede75054·...·]-1">}</span><span·class="w">
266 ··</span><span·class="n">App</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7180311656-4">(</span><span·class="p"·data-group-id="7180311656-4">)</span><span·class="w">266 ··</span><span·class="n">App</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9468562983-4">(</span><span·class="p"·data-group-id="9468562983-4">)</span><span·class="w">
267 ··</span><span·class="n">Vsn</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="7180311656-5">(</span><span·class="p"·data-group-id="7180311656-5">)</span></code></pre><p>Reads·each·<code·class="inline">Mod</code>·from·directory·<code·class="inline">App-Vsn/ebin</code>·as·a·binary.·It·does·not·load·the267 ··</span><span·class="n">Vsn</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="9468562983-5">(</span><span·class="p"·data-group-id="9468562983-5">)</span></code></pre><p>Reads·each·<code·class="inline">Mod</code>·from·directory·<code·class="inline">App-Vsn/ebin</code>·as·a·binary.·It·does·not·load·the
268 modules.·The·instruction·is·to·be·placed·first·in·the·script·to·read·all·new268 modules.·The·instruction·is·to·be·placed·first·in·the·script·to·read·all·new
269 code·from·the·file·to·make·the·suspend-load-resume·cycle·less·time-consuming.</p><pre><code·class="text">point_of_no_return</code></pre><p>If·a·crash·occurs·after·this·instruction,·the·system·cannot·recover·and·is269 code·from·the·file·to·make·the·suspend-load-resume·cycle·less·time-consuming.</p><pre><code·class="text">point_of_no_return</code></pre><p>If·a·crash·occurs·after·this·instruction,·the·system·cannot·recover·and·is
270 restarted·from·the·old·release·version.·The·instruction·must·only·occur·once·in270 restarted·from·the·old·release·version.·The·instruction·must·only·occur·once·in
271 a·script.·It·is·to·be·placed·after·all·<code·class="inline">load_object_code</code>·instructions.</p><pre><code·class="text">{load,·{Mod,·PrePurge,·PostPurge}}271 a·script.·It·is·to·be·placed·after·all·<code·class="inline">load_object_code</code>·instructions.</p><pre><code·class="text">{load,·{Mod,·PrePurge,·PostPurge}}
272 ··Mod·=·atom()272 ··Mod·=·atom()
273 ··PrePurge·=·PostPurge·=·soft_purge·|·brutal_purge</code></pre><p>Before·this·instruction·occurs,·<code·class="inline">Mod</code>·must·have·been·loaded·using273 ··PrePurge·=·PostPurge·=·soft_purge·|·brutal_purge</code></pre><p>Before·this·instruction·occurs,·<code·class="inline">Mod</code>·must·have·been·loaded·using
274 <code·class="inline">load_object_code</code>.·This·instruction·loads·the·module.·<code·class="inline">PrePurge</code>·is·ignored.274 <code·class="inline">load_object_code</code>.·This·instruction·loads·the·module.·<code·class="inline">PrePurge</code>·is·ignored.
275 For·a·description·of·<code·class="inline">PostPurge</code>,·see·the·high-level·instruction·<code·class="inline">update</code>275 For·a·description·of·<code·class="inline">PostPurge</code>,·see·the·high-level·instruction·<code·class="inline">update</code>
276 earlier.</p><pre><code·class="text">{remove,·{Mod,·PrePurge,·PostPurge}}276 earlier.</p><pre><code·class="text">{remove,·{Mod,·PrePurge,·PostPurge}}
277 ··Mod·=·atom()277 ··Mod·=·atom()
278 ··PrePurge·=·PostPurge·=·soft_purge·|·brutal_purge</code></pre><p>Makes·the·current·version·of·<code·class="inline">Mod</code>·old.·<code·class="inline">PrePurge</code>·is·ignored.·For·a·description278 ··PrePurge·=·PostPurge·=·soft_purge·|·brutal_purge</code></pre><p>Makes·the·current·version·of·<code·class="inline">Mod</code>·old.·<code·class="inline">PrePurge</code>·is·ignored.·For·a·description
279 of·<code·class="inline">PostPurge</code>,·see·the·high-level·instruction·<code·class="inline">update</code>·earlier.</p><pre><code·class="text">{purge,·[Mod]}279 of·<code·class="inline">PostPurge</code>,·see·the·high-level·instruction·<code·class="inline">update</code>·earlier.</p><pre><code·class="text">{purge,·[Mod]}
280 ··Mod·=·atom()</code></pre><p>Purges·each·module·<code·class="inline">Mod</code>,·that·is,·removes·the·old·code.·Notice·that·any·process280 ··Mod·=·atom()</code></pre><p>Purges·each·module·<code·class="inline">Mod</code>,·that·is,·removes·the·old·code.·Notice·that·any·process
281 executing·purged·code·is·killed.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0270663831-1">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0270663831-2">[</span><span·class="n">Mod</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·300,·SHA:·fcaf22c342a4871e6fb337ca2ff368cd1da0088658341e211dac0595ef668ba9·...·]-1">}</span><span·class="w">281 executing·purged·code·is·killed.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3669758262-1">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3669758262-2">[</span><span·class="n">Mod</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·300,·SHA:·a658460ed8081cc7bf878f3dfeb067908b881a57db2cc686a3d2c27feb04b082·...·]-1">}</span><span·class="w">
282 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="0270663831-4">(</span><span·class="p"·data-group-id="0270663831-4">)</span><span·class="w">282 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3669758262-4">(</span><span·class="p"·data-group-id="3669758262-4">)</span><span·class="w">
283 ··</span><span·class="n">Timeout</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="0270663831-5">(</span><span·class="p"·data-group-id="0270663831-5">)</span><span·class="o">&gt;</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">default</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">infinity</span></code></pre><p>Tries·to·suspend·all·processes·using·a·module·<code·class="inline">Mod</code>.·If·a·process·does·not283 ··</span><span·class="n">Timeout</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="3669758262-5">(</span><span·class="p"·data-group-id="3669758262-5">)</span><span·class="o">&gt;</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">default</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">infinity</span></code></pre><p>Tries·to·suspend·all·processes·using·a·module·<code·class="inline">Mod</code>.·If·a·process·does·not
284 respond,·it·is·ignored.·This·can·cause·the·process·to·die,·either·because·it284 respond,·it·is·ignored.·This·can·cause·the·process·to·die,·either·because·it
285 crashes·when·it·spontaneously·switches·to·new·code,·or·as·a·result·of·a·purge285 crashes·when·it·spontaneously·switches·to·new·code,·or·as·a·result·of·a·purge
286 operation.·If·no·<code·class="inline">Timeout</code>·is·specified·or·<code·class="inline">default</code>·is·specified,·the·default286 operation.·If·no·<code·class="inline">Timeout</code>·is·specified·or·<code·class="inline">default</code>·is·specified,·the·default
287 value·for·<a·href="../../../../lib/stdlib-6.2/doc/html/sys.html#suspend/1"><code·class="inline">sys:suspend</code></a>·is·used.</p><pre><code·class="text">{resume,·[Mod]}287 value·for·<a·href="../../../../lib/stdlib-6.2/doc/html/sys.html#suspend/1"><code·class="inline">sys:suspend</code></a>·is·used.</p><pre><code·class="text">{resume,·[Mod]}
288 ··Mod·=·atom()</code></pre><p>Resumes·all·suspended·processes·using·a·module·<code·class="inline">Mod</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4628640299-1">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4628640299-2">[</span><span·class="p"·data-group-id="4628640299-3">{</span><span·class="n">Mod</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·d4bb10a2081f41fd13f4a64f0d648878b558160ff130cb984e4865ddbfefeff7·...·]-1">}</span><span·class="w">288 ··Mod·=·atom()</code></pre><p>Resumes·all·suspended·processes·using·a·module·<code·class="inline">Mod</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6860679555-1">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6860679555-2">[</span><span·class="p"·data-group-id="6860679555-3">{</span><span·class="n">Mod</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·de7332a70278baec02f9b186d4071a6fbbb988f019cb61c8b1d9a2fd0be69496·...·]-1">}</span><span·class="w">
289 </span><span·class="p"·data-group-id="4628640299-4">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4628640299-5">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·279,·SHA:·4f3e7d806bd129e5bcb776bc857af34981311e7fbf46bad26b750ae1ecafbe0e·...·]-4">}</span><span·class="w">289 </span><span·class="p"·data-group-id="6860679555-4">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6860679555-5">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·279,·SHA:·1627935c010a8f56211e1c97d359a7e5f5720dd88c6207973686470a6828d821·...·]-4">}</span><span·class="w">
290 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="4628640299-7">(</span><span·class="p"·data-group-id="4628640299-7">)</span><span·class="w">290 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="6860679555-7">(</span><span·class="p"·data-group-id="6860679555-7">)</span><span·class="w">
291 ··</span><span·class="n">Mode</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">up</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">down</span><span·class="w">291 ··</span><span·class="n">Mode</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">up</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">down</span><span·class="w">
292 ··</span><span·class="n">Extra</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4628640299-8">(</span><span·class="p"·data-group-id="4628640299-8">)</span></code></pre><p><code·class="inline">Mode</code>·defaults·to·<code·class="inline">up</code>·and·specifies·if·it·is·an·upgrade·or·downgrade.·This292 ··</span><span·class="n">Extra</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="6860679555-8">(</span><span·class="p"·data-group-id="6860679555-8">)</span></code></pre><p><code·class="inline">Mode</code>·defaults·to·<code·class="inline">up</code>·and·specifies·if·it·is·an·upgrade·or·downgrade.·This
293 instruction·sends·a·<code·class="inline">code_change</code>·system·message·to·all·processes·using·a·module293 instruction·sends·a·<code·class="inline">code_change</code>·system·message·to·all·processes·using·a·module
294 <code·class="inline">Mod</code>·by·calling·function·<a·href="../../../../lib/stdlib-6.2/doc/html/sys.html#change_code/4"><code·class="inline">sys:change_code</code></a>,·passing·term294 <code·class="inline">Mod</code>·by·calling·function·<a·href="../../../../lib/stdlib-6.2/doc/html/sys.html#change_code/4"><code·class="inline">sys:change_code</code></a>,·passing·term
295 <code·class="inline">Extra</code>·as·argument.</p><pre><code·class="text">{stop,·[Mod]}295 <code·class="inline">Extra</code>·as·argument.</p><pre><code·class="text">{stop,·[Mod]}
296 ··Mod·=·atom()</code></pre><p>Stops·all·processes·using·a·module·<code·class="inline">Mod</code>·by·calling296 ··Mod·=·atom()</code></pre><p>Stops·all·processes·using·a·module·<code·class="inline">Mod</code>·by·calling
297 <a·href="../../../../lib/stdlib-6.2/doc/html/supervisor.html#terminate_child/2"><code·class="inline">supervisor:terminate_child/2</code></a>.·This·instruction·is·useful·when·the·simplest·way297 <a·href="../../../../lib/stdlib-6.2/doc/html/supervisor.html#terminate_child/2"><code·class="inline">supervisor:terminate_child/2</code></a>.·This·instruction·is·useful·when·the·simplest·way
298 to·change·code·is·to·stop·and·restart·the·processes·that·run·the·code.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0485748922-1">{</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0485748922-2">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="0485748922-2">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·128b280f769f7634c21c9d0cda1038a82fe9693e80a075efd9e4892e8c91e278·...·]-1">}</span><span·class="w">298 to·change·code·is·to·stop·and·restart·the·processes·that·run·the·code.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3900583179-1">{</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3900583179-2">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="3900583179-2">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·aaefa73e12ffb08e13f2b6b1a6d873ea9983aece1226300ab18f295fe91f79a8·...·]-1">}</span><span·class="w">
299 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="0485748922-3">(</span><span·class="p"·data-group-id="0485748922-3">)</span></code></pre><p>Starts·all·stopped·processes·using·a·module·<code·class="inline">Mod</code>·by·calling299 ··</span><span·class="n">Mod</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="3900583179-3">(</span><span·class="p"·data-group-id="3900583179-3">)</span></code></pre><p>Starts·all·stopped·processes·using·a·module·<code·class="inline">Mod</code>·by·calling
300 <a·href="../../../../lib/stdlib-6.2/doc/html/supervisor.html#restart_child/2"><code·class="inline">supervisor:restart_child/2</code></a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8411757284-1">{</span><span·class="ss">sync_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8411757284-2">[</span><span·class="n">Node</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·920b91ce93131ba95b081d97b49e1f8d0f7eb5f109a934cf9164beb0f0ea41b9·...·]-1">}</span><span·class="w">300 <a·href="../../../../lib/stdlib-6.2/doc/html/supervisor.html#restart_child/2"><code·class="inline">supervisor:restart_child/2</code></a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9159201602-1">{</span><span·class="ss">sync_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9159201602-2">[</span><span·class="n">Node</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·950ef1000f8b482c5fd1fa3375b2d5f5169d78cde9072b10141741173f852164·...·]-1">}</span><span·class="w">
301 </span><span·class="p"·data-group-id="8411757284-3">{</span><span·class="ss">sync_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8411757284-4">{</span><span·class="n">M</span><s[·...·truncated·by·diffoscope;·len:·236,·SHA:·1fdd19637494dabfc0b2c4aa62d4736ad9ef071c85dddb35b619f4c8d4f4608e·...·]-3">}</span><span·class="w">301 </span><span·class="p"·data-group-id="9159201602-3">{</span><span·class="ss">sync_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9159201602-4">{</span><span·class="n">M</span><s[·...·truncated·by·diffoscope;·len:·236,·SHA:·14554eec41c136e1de97a321b4ff0c407b1571f862aa65dbb038b8e1e8fe96d7·...·]-3">}</span><span·class="w">
302 ··</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="8411757284-5">(</span><span·class="p"·data-group-id="8411757284-5">)</span><span·class="w">302 ··</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="9159201602-5">(</span><span·class="p"·data-group-id="9159201602-5">)</span><span·class="w">
303 ··</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="8411757284-6">(</span><span·class="p"·data-group-id="8411757284-6">)</span><span·class="w">303 ··</span><span·class="n">Node</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">node</span><span·class="p"·data-group-id="9159201602-6">(</span><span·class="p"·data-group-id="9159201602-6">)</span><span·class="w">
304 ··</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="8411757284-7">(</span><span·class="p"·data-group-id="8411757284-7">)</span><span·class="w">304 ··</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="9159201602-7">(</span><span·class="p"·data-group-id="9159201602-7">)</span><span·class="w">
305 ··</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8411757284-8">[</span><span·class="nf">term</span><span·class="p"·data-group-id="8411757284-9">(</span><span·class="p"·data-group-id="8411757284-9">)</span><span·class="p"·data-group-id="8411757284-8">]</span></code></pre><p><a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,·F,·A)</code></a>·must·return·a·list·of·nodes.</p><p>This·instruction·synchronizes·the·release·installation·with·other·nodes.·Each305 ··</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9159201602-8">[</span><span·class="nf">term</span><span·class="p"·data-group-id="9159201602-9">(</span><span·class="p"·data-group-id="9159201602-9">)</span><span·class="p"·data-group-id="9159201602-8">]</span></code></pre><p><a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,·F,·A)</code></a>·must·return·a·list·of·nodes.</p><p>This·instruction·synchronizes·the·release·installation·with·other·nodes.·Each
306 <code·class="inline">Node</code>·must·evaluate·this·command·with·the·same·<code·class="inline">Id</code>.·The·local·node·waits·for306 <code·class="inline">Node</code>·must·evaluate·this·command·with·the·same·<code·class="inline">Id</code>.·The·local·node·waits·for
307 all·other·nodes·to·evaluate·the·instruction·before·execution·continues.·If·a307 all·other·nodes·to·evaluate·the·instruction·before·execution·continues.·If·a
308 node·goes·down,·it·is·considered·to·be·an·unrecoverable·error,·and·the·local308 node·goes·down,·it·is·considered·to·be·an·unrecoverable·error,·and·the·local
309 node·is·restarted·from·the·old·release.·There·is·no·time-out·for·this309 node·is·restarted·from·the·old·release.·There·is·no·time-out·for·this
310 instruction,·which·means·that·it·can·hang·forever.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2934878442-1">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2934878442-2">{</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cl[·...·truncated·by·diffoscope;·len:·158,·SHA:·880120e661b047965c13dd69614e38482d2e79d10aa23d4c25716bea7b6e4aa3·...·]-1">}</span><span·class="w">310 instruction,·which·means·that·it·can·hang·forever.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1182813206-1">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1182813206-2">{</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cl[·...·truncated·by·diffoscope;·len:·158,·SHA:·7295740d977a1b4a89f39b67c67f52ca2462e1ca121d35ab118310a72c84a49a·...·]-1">}</span><span·class="w">
311 ··</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="2934878442-3">(</span><span·class="p"·data-group-id="2934878442-3">)</span><span·class="w">311 ··</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="1182813206-3">(</span><span·class="p"·data-group-id="1182813206-3">)</span><span·class="w">
312 ··</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2934878442-4">[</span><span·class="nf">term</span><span·class="p"·data-group-id="2934878442-5">(</span><span·class="p"·data-group-id="2934878442-5">)</span><span·class="p"·data-group-id="2934878442-4">]</span></code></pre><p>Evaluates·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,·F,·A)</code></a>.</p><p>If·the·instruction·appears·before·instruction·<code·class="inline">point_of_no_return</code>,·a·failure·is312 ··</span><span·class="n">A</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1182813206-4">[</span><span·class="nf">term</span><span·class="p"·data-group-id="1182813206-5">(</span><span·class="p"·data-group-id="1182813206-5">)</span><span·class="p"·data-group-id="1182813206-4">]</span></code></pre><p>Evaluates·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,·F,·A)</code></a>.</p><p>If·the·instruction·appears·before·instruction·<code·class="inline">point_of_no_return</code>,·a·failure·is
313 caught.·<a·href="release_handler.html#install_release/1"><code·class="inline">release_handler:install_release/1</code></a>·then·returns313 caught.·<a·href="release_handler.html#install_release/1"><code·class="inline">release_handler:install_release/1</code></a>·then·returns
314 <code·class="inline">{error,{'EXIT',Reason}}</code>,·unless·<code·class="inline">{error,Error}</code>·is·thrown·or·returned.·Then·it314 <code·class="inline">{error,{'EXIT',Reason}}</code>,·unless·<code·class="inline">{error,Error}</code>·is·thrown·or·returned.·Then·it
315 returns·<code·class="inline">{error,Error}</code>.</p><p>If·the·instruction·appears·after·instruction·<code·class="inline">point_of_no_return</code>·and·the315 returns·<code·class="inline">{error,Error}</code>.</p><p>If·the·instruction·appears·after·instruction·<code·class="inline">point_of_no_return</code>·and·the
316 function·call·fails,·the·system·is·restarted.</p><pre><code·class="text">restart_new_emulator</code></pre><p>This·instruction·is·used·when·the·application·ERTS,·Kernel,·STDLIB,·or·SASL·is316 function·call·fails,·the·system·is·restarted.</p><pre><code·class="text">restart_new_emulator</code></pre><p>This·instruction·is·used·when·the·application·ERTS,·Kernel,·STDLIB,·or·SASL·is
317 upgraded.·It·shuts·down·the·current·emulator·and·starts·a·new·one.·All·processes317 upgraded.·It·shuts·down·the·current·emulator·and·starts·a·new·one.·All·processes
318 are·terminated·gracefully,·and·the·new·version·of·ERTS,·Kernel,·STDLIB,·and·SASL318 are·terminated·gracefully,·and·the·new·version·of·ERTS,·Kernel,·STDLIB,·and·SASL
319 are·used·when·the·emulator·restarts.·Only·one·<code·class="inline">restart_new_emulator</code>·instruction319 are·used·when·the·emulator·restarts.·Only·one·<code·class="inline">restart_new_emulator</code>·instruction
17.4 KB
./usr/share/doc/erlang-doc/html/lib/sasl-4.2.2/doc/html/error_logging.html
    
Offset 304, 50 lines modifiedOffset 304, 50 lines modified
304 ········ok</code></pre><h3·id="show-reports"·class="section-heading">304 ········ok</code></pre><h3·id="show-reports"·class="section-heading">
305 ··<a·href="#show-reports"·class="hover-link">305 ··<a·href="#show-reports"·class="hover-link">
306 ····<i·class="ri-link-m"·aria-hidden="true"></i>306 ····<i·class="ri-link-m"·aria-hidden="true"></i>
307 ··</a>307 ··</a>
308 ··<span·class="text">Show·Reports</span>308 ··<span·class="text">Show·Reports</span>
309 </h3>309 </h3>
310 <p>Use·function·<a·href="rb.html#show/1"><code·class="inline">rb:show(Number)</code></a>·to·show·details·of·a·specific310 <p>Use·function·<a·href="rb.html#show/1"><code·class="inline">rb:show(Number)</code></a>·to·show·details·of·a·specific
311 report:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nc">rb</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="0989084382-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="0989084382-1">)</span><span·class="p">.</span><span·class="w">311 report:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nc">rb</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="2724470214-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="2724470214-1">)</span><span·class="p">.</span><span·class="w">
  
312 </span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="w">··</span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">···································</span><span·class="mi">1996</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">16</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">36</span><span·class="w">312 </span><span·class="n">PROGRESS</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="w">··</span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">···································</span><span·class="mi">1996</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">16</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">36</span><span·class="w">
313 </span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">=</span><span·class="w">313 </span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
314 </span><span·class="ss">supervisor</span><span·class="w">·····················································</span><span·class="p"·data-group-id="0989084382-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">sasl_sup</span><span·class="p"·data-group-id="0989084382-2">}</span><span·class="w">314 </span><span·class="ss">supervisor</span><span·class="w">·····················································</span><span·class="p"·data-group-id="2724470214-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">sasl_sup</span><span·class="p"·data-group-id="2724470214-2">}</span><span·class="w">
315 </span><span·class="ss">started</span><span·class="w">315 </span><span·class="ss">started</span><span·class="w">
316 </span><span·class="p"·data-group-id="0989084382-3">[</span><span·class="p"·data-group-id="0989084382-4">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.24</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·c5a8877d7fa19c1cff8d6b58305a57d721111fd19c354d09d74f6391277af370·...·]-4">}</span><span·class="p">,</span><span·class="w">316 </span><span·class="p"·data-group-id="2724470214-3">[</span><span·class="p"·data-group-id="2724470214-4">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.24</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·b1507afc81cb858b1f4f19fad1dd27a009f719d7f9d1f1eb14d7d0c506476890·...·]-4">}</span><span·class="p">,</span><span·class="w">
317 </span><span·class="p"·data-group-id="0989084382-5">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">release_handler</span><span·class="p"·data-group-id="0989084382-5">}</span><span·class="p">,</span><span·class="w">317 </span><span·class="p"·data-group-id="2724470214-5">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">release_handler</span><span·class="p"·data-group-id="2724470214-5">}</span><span·class="p">,</span><span·class="w">
318 </span><span·class="p"·data-group-id="0989084382-6">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="p"·data-group-id="0989084382-7">{</span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·191,·SHA:·c6b5e662eda85d23bf67e89c3248564ec06ef80faf8f7e4ec7c71cbb68cdc0eb·...·]-6">}</span><span·class="p">,</span><span·class="w">318 </span><span·class="p"·data-group-id="2724470214-6">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="p"·data-group-id="2724470214-7">{</span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·191,·SHA:·a44be1bd9f80d1587d0e0f7344681976267c8e04617bb742a4df49256c1dfa7e·...·]-6">}</span><span·class="p">,</span><span·class="w">
319 </span><span·class="p"·data-group-id="0989084382-9">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="0989084382-9">}</span><span·class="p">,</span><span·class="w">319 </span><span·class="p"·data-group-id="2724470214-9">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="2724470214-9">}</span><span·class="p">,</span><span·class="w">
320 </span><span·class="p"·data-group-id="0989084382-10">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="0989084382-10">}</span><span·class="p">,</span><span·class="w">320 </span><span·class="p"·data-group-id="2724470214-10">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="2724470214-10">}</span><span·class="p">,</span><span·class="w">
321 </span><span·class="p"·data-group-id="0989084382-11">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="0989084382-11">}</span><span·class="p"·data-group-id="0989084382-3">]</span><span·class="w">321 </span><span·class="p"·data-group-id="2724470214-11">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="2724470214-11">}</span><span·class="p"·data-group-id="2724470214-3">]</span><span·class="w">
  
322 </span><span·class="ss">ok</span><span·class="gp·unselectable">322 </span><span·class="ss">ok</span><span·class="gp·unselectable">
323 8&gt;·</span><span·class="nc">rb</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="0989084382-12">(</span><span·class="mi">9</span><span·class="p"·data-group-id="0989084382-12">)</span><span·class="p">.</span><span·class="w">323 8&gt;·</span><span·class="nc">rb</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="2724470214-12">(</span><span·class="mi">9</span><span·class="p"·data-group-id="2724470214-12">)</span><span·class="p">.</span><span·class="w">
  
324 </span><span·class="n">CRASH</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="w">··</span><span·class="o">&lt;</span><span·class="mf">0.24</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">······································</span><span·class="mi">1996</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">16</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">21</span><span·class="w">324 </span><span·class="n">CRASH</span><span·class="w">·</span><span·class="n">REPORT</span><span·class="w">··</span><span·class="o">&lt;</span><span·class="mf">0.24</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">······································</span><span·class="mi">1996</span><span·class="o">-</span><span·class="mi">10</span><span·class="o">-</span><span·class="mi">16</span><span·class="w">·</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">16</span><span·class="p">:</span><span·class="mi">21</span><span·class="w">
325 </span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">=</span><span·class="w">325 </span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">==</span><span·class="o">=</span><span·class="w">
326 </span><span·class="n">Crashing</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">326 </span><span·class="n">Crashing</span><span·class="w">·</span><span·class="ss">process</span><span·class="w">
327 </span><span·class="ss">pid</span><span·class="w">·································································</span><span·class="o">&lt;</span><span·class="mf">0.24</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">327 </span><span·class="ss">pid</span><span·class="w">·································································</span><span·class="o">&lt;</span><span·class="mf">0.24</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">
328 </span><span·class="ss">registered_name</span><span·class="w">··············································</span><span·class="ss">release_handler</span><span·class="w">328 </span><span·class="ss">registered_name</span><span·class="w">··············································</span><span·class="ss">release_handler</span><span·class="w">
329 </span><span·class="ss">error_info</span><span·class="w">·····························</span><span·class="p"·data-group-id="0989084382-13">{</span><span·class="ss">undef</span><span·class="p">,</span><span·class="p"·data-group-id="0989084382-14">{</span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="ss">mbj_func</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·77c5dec27d31c8f7061f588770294202d2e636fc7b017246c97d9b09442a313d·...·]-13">}</span><span·class="w">329 </span><span·class="ss">error_info</span><span·class="w">·····························</span><span·class="p"·data-group-id="2724470214-13">{</span><span·class="ss">undef</span><span·class="p">,</span><span·class="p"·data-group-id="2724470214-14">{</span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="ss">mbj_func</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·3b0040a56cb062fdfabd366ca7fa1ae3493b03c4e866b2f95754e4268fa85fbc·...·]-13">}</span><span·class="w">
330 </span><span·class="ss">initial_call</span><span·class="w">330 </span><span·class="ss">initial_call</span><span·class="w">
331 </span><span·class="p"·data-group-id="0989084382-16">{</span><span·class="ss">gen</span><span·class="p">,</span><span·class="ss">init_it</span><span·class="p">,</span><span·class="w">331 </span><span·class="p"·data-group-id="2724470214-16">{</span><span·class="ss">gen</span><span·class="p">,</span><span·class="ss">init_it</span><span·class="p">,</span><span·class="w">
332 </span><span·class="p"·data-group-id="0989084382-17">[</span><span·class="ss">gen_server</span><span·class="p">,</span><span·class="w">332 </span><span·class="p"·data-group-id="2724470214-17">[</span><span·class="ss">gen_server</span><span·class="p">,</span><span·class="w">
333 </span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">333 </span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">
334 </span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">334 </span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="w">
335 </span><span·class="p"·data-group-id="0989084382-18">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">register</span><span·class="p"·data-group-id="0989084382-18">}</span><span·class="p">,</span><span·class="w">335 </span><span·class="p"·data-group-id="2724470214-18">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">register</span><span·class="p"·data-group-id="2724470214-18">}</span><span·class="p">,</span><span·class="w">
336 </span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="w">336 </span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="w">
337 </span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="w">337 </span><span·class="ss">release_handler</span><span·class="p">,</span><span·class="w">
338 </span><span·class="p"·data-group-id="0989084382-19">[</span><span·class="p"·data-group-id="0989084382-19">]</span><span·class="p">,</span><span·class="w">338 </span><span·class="p"·data-group-id="2724470214-19">[</span><span·class="p"·data-group-id="2724470214-19">]</span><span·class="p">,</span><span·class="w">
339 </span><span·class="p"·data-group-id="0989084382-20">[</span><span·class="p"·data-group-id="0989084382-20">]</span><span·class="p"·data-group-id="0989084382-17">]</span><span·class="p"·data-group-id="0989084382-16">}</span><span·class="w">339 </span><span·class="p"·data-group-id="2724470214-20">[</span><span·class="p"·data-group-id="2724470214-20">]</span><span·class="p"·data-group-id="2724470214-17">]</span><span·class="p"·data-group-id="2724470214-16">}</span><span·class="w">
340 </span><span·class="ss">ancestors</span><span·class="w">················································</span><span·class="p"·data-group-id="0989084382-21">[</span><span·class="ss">sasl_sup</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.18</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0989084382-21">]</span><span·class="w">340 </span><span·class="ss">ancestors</span><span·class="w">················································</span><span·class="p"·data-group-id="2724470214-21">[</span><span·class="ss">sasl_sup</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.18</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2724470214-21">]</span><span·class="w">
341 </span><span·class="ss">messages</span><span·class="w">··································································</span><span·class="p"·data-group-id="0989084382-22">[</span><span·class="p"·data-group-id="0989084382-22">]</span><span·class="w">341 </span><span·class="ss">messages</span><span·class="w">··································································</span><span·class="p"·data-group-id="2724470214-22">[</span><span·class="p"·data-group-id="2724470214-22">]</span><span·class="w">
342 </span><span·class="ss">links</span><span·class="w">····················································</span><span·class="p"·data-group-id="0989084382-23">[</span><span·class="o">&lt;</span><span·class="mf">0.23</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·94,·SHA:·f1f534e1f5b5b498e4b807b400d60dea5ab064e516b7848170eb5c6cf7b9fa69·...·]-23">]</span><span·class="w">342 </span><span·class="ss">links</span><span·class="w">····················································</span><span·class="p"·data-group-id="2724470214-23">[</span><span·class="o">&lt;</span><span·class="mf">0.23</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.20</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·94,·SHA:·ad0f2d23dd7110f9e90d54fef287a9906f7a255d311450d879c36d002de18da4·...·]-23">]</span><span·class="w">
343 </span><span·class="ss">dictionary</span><span·class="w">································································</span><span·class="p"·data-group-id="0989084382-24">[</span><span·class="p"·data-group-id="0989084382-24">]</span><span·class="w">343 </span><span·class="ss">dictionary</span><span·class="w">································································</span><span·class="p"·data-group-id="2724470214-24">[</span><span·class="p"·data-group-id="2724470214-24">]</span><span·class="w">
344 </span><span·class="ss">trap_exit</span><span·class="w">······························································</span><span·class="ss">false</span><span·class="w">344 </span><span·class="ss">trap_exit</span><span·class="w">······························································</span><span·class="ss">false</span><span·class="w">
345 </span><span·class="ss">status</span><span·class="w">·······························································</span><span·class="ss">running</span><span·class="w">345 </span><span·class="ss">status</span><span·class="w">·······························································</span><span·class="ss">running</span><span·class="w">
346 </span><span·class="ss">heap_size</span><span·class="w">································································</span><span·class="mi">610</span><span·class="w">346 </span><span·class="ss">heap_size</span><span·class="w">································································</span><span·class="mi">610</span><span·class="w">
347 </span><span·class="ss">stack_size</span><span·class="w">·······························································</span><span·class="mi">142</span><span·class="w">347 </span><span·class="ss">stack_size</span><span·class="w">·······························································</span><span·class="mi">142</span><span·class="w">
348 </span><span·class="ss">reductions</span><span·class="w">································································</span><span·class="mi">54</span><span·class="w">348 </span><span·class="ss">reductions</span><span·class="w">································································</span><span·class="mi">54</span><span·class="w">
  
349 </span><span·class="ss">ok</span></code></pre><h3·id="search-reports"·class="section-heading">349 </span><span·class="ss">ok</span></code></pre><h3·id="search-reports"·class="section-heading">
7.77 KB
./usr/share/doc/erlang-doc/html/lib/sasl-4.2.2/doc/html/rel.html
    
Offset 136, 19 lines modifiedOffset 136, 19 lines modified
136 (<code·class="inline">.script</code>,·<code·class="inline">.boot</code>)·and·release·upgrade·files·(<code·class="inline">relup</code>).</p><h2·id="file-syntax"·class="section-heading">136 (<code·class="inline">.script</code>,·<code·class="inline">.boot</code>)·and·release·upgrade·files·(<code·class="inline">relup</code>).</p><h2·id="file-syntax"·class="section-heading">
137 ··<a·href="#file-syntax"·class="hover-link">137 ··<a·href="#file-syntax"·class="hover-link">
138 ····<i·class="ri-link-m"·aria-hidden="true"></i>138 ····<i·class="ri-link-m"·aria-hidden="true"></i>
139 ··</a>139 ··</a>
140 ··<span·class="text">File·Syntax</span>140 ··<span·class="text">File·Syntax</span>
141 </h2>141 </h2>
142 <p>The·release·resource·file·is·to·be·called·<code·class="inline">Name.rel</code>.</p><p>The·<code·class="inline">.rel</code>·file·contains·one·single·Erlang·term,·which·is·called·a·<em>release142 <p>The·release·resource·file·is·to·be·called·<code·class="inline">Name.rel</code>.</p><p>The·<code·class="inline">.rel</code>·file·contains·one·single·Erlang·term,·which·is·called·a·<em>release
143 specification</em>.·The·file·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2836481492-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2836481492-2">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="n">Vsn</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·276,·SHA:·f8b028d59ebde3bece138cb9cb9d023784d5288a151cc8a8a4875f55a61c0382·...·]-3">}</span><span·class="p">,</span><span·class="w">143 specification</em>.·The·file·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5178321004-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5178321004-2">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="n">Vsn</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·276,·SHA:·7375b28f468e7e12e48ada8c446cb02373d7dc9befd9b1d50c8da98eb9513082·...·]-3">}</span><span·class="p">,</span><span·class="w">
144 ··</span><span·class="p"·data-group-id="2836481492-4">[</span><span·class="p"·data-group-id="2836481492-5">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p"·data-group-id="2836481492-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">144 ··</span><span·class="p"·data-group-id="5178321004-4">[</span><span·class="p"·data-group-id="5178321004-5">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p"·data-group-id="5178321004-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
145 ···</span><span·class="p"·data-group-id="2836481492-6">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="2836481492-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">145 ···</span><span·class="p"·data-group-id="5178321004-6">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p"·data-group-id="5178321004-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
146 ···</span><span·class="p"·data-group-id="2836481492-7">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IncApps</span><span·class="p"·data-group-id="2836481492-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">146 ···</span><span·class="p"·data-group-id="5178321004-7">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IncApps</span><span·class="p"·data-group-id="5178321004-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
147 ···</span><span·class="p"·data-group-id="2836481492-8">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·be44f0c63b0f763b20f819dad69c71682ff953eeac3953a6d24e5f4e46a2d24f·...·]-1">}</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">RelName·=·string()</code></strong>·-·Release·name.</p></li><li><p><strong><code·class="inline">Vsn·=·string()</code></strong>·-·Release·version.</p></li><li><p><strong><code·class="inline">EVsn·=·string()</code></strong>·-·ERTS·version·the·release·is·intended·for.</p></li><li><p><strong><code·class="inline">Application·=·atom()</code></strong>·-·Name·of·an·application·included·in·the·release.</p></li><li><p><strong><code·class="inline">AppVsn·=·string()</code></strong>·-·Version·of·an·application·included·in·the·release.</p></li><li><p><strong><code·class="inline">Type·=·permanent·|·transient·|·temporary·|·load·|·none</code></strong>·-·Start·type·of147 ···</span><span·class="p"·data-group-id="5178321004-8">{</span><span·class="n">Application</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AppVsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·34e485e2ee7ddb153d5e96decf192e75732f15347524083f967050dba4671820·...·]-1">}</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">RelName·=·string()</code></strong>·-·Release·name.</p></li><li><p><strong><code·class="inline">Vsn·=·string()</code></strong>·-·Release·version.</p></li><li><p><strong><code·class="inline">EVsn·=·string()</code></strong>·-·ERTS·version·the·release·is·intended·for.</p></li><li><p><strong><code·class="inline">Application·=·atom()</code></strong>·-·Name·of·an·application·included·in·the·release.</p></li><li><p><strong><code·class="inline">AppVsn·=·string()</code></strong>·-·Version·of·an·application·included·in·the·release.</p></li><li><p><strong><code·class="inline">Type·=·permanent·|·transient·|·temporary·|·load·|·none</code></strong>·-·Start·type·of
148 an·application·included·in·the·release.</p><p>If·<code·class="inline">Type·=·permanent·|·transient·|·temporary</code>,·the·application·is·loaded·and148 an·application·included·in·the·release.</p><p>If·<code·class="inline">Type·=·permanent·|·transient·|·temporary</code>,·the·application·is·loaded·and
149 started·in·the·corresponding·way,·see·<a·href="../../../../lib/kernel-10.2.2/doc/html/application.html"><code·class="inline">application</code></a>.</p><p>If·<code·class="inline">Type·=·load</code>,·the·application·is·only·loaded.</p><p>If·<code·class="inline">Type·=·none</code>,·the·application·is·not·loaded·and·not·started,·although·the149 started·in·the·corresponding·way,·see·<a·href="../../../../lib/kernel-10.2.2/doc/html/application.html"><code·class="inline">application</code></a>.</p><p>If·<code·class="inline">Type·=·load</code>,·the·application·is·only·loaded.</p><p>If·<code·class="inline">Type·=·none</code>,·the·application·is·not·loaded·and·not·started,·although·the
150 code·for·its·modules·is·loaded.</p><p>Defaults·to·<code·class="inline">permanent</code></p></li><li><p><strong><code·class="inline">IncApps·=·[atom()]</code></strong>·-·A·list·of·applications·that·are·included·by·an150 code·for·its·modules·is·loaded.</p><p>Defaults·to·<code·class="inline">permanent</code></p></li><li><p><strong><code·class="inline">IncApps·=·[atom()]</code></strong>·-·A·list·of·applications·that·are·included·by·an
151 application·included·in·the·release.·The·list·must·be·a·subset·of·the·included151 application·included·in·the·release.·The·list·must·be·a·subset·of·the·included
152 applications·specified·in·the·application·resource·file·(<code·class="inline">Application.app</code>)152 applications·specified·in·the·application·resource·file·(<code·class="inline">Application.app</code>)
153 and·overrides·this·value.·Defaults·to·the·same·value·as·in·the·application153 and·overrides·this·value.·Defaults·to·the·same·value·as·in·the·application
154 resource·file.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·list·of·applications·must·contain·the·Kernel·and·STDLIB·applications.</p></section><h2·id="see-also"·class="section-heading">154 resource·file.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·list·of·applications·must·contain·the·Kernel·and·STDLIB·applications.</p></section><h2·id="see-also"·class="section-heading">
4.42 KB
./usr/share/doc/erlang-doc/html/lib/sasl-4.2.2/doc/html/release_handler.html
    
Offset 1054, 16 lines modifiedOffset 1054, 16 lines modified
1054 updated·(<code·class="inline">Bool==true</code>)·or·if·only·code·paths·for·modified·applications·are·to1054 updated·(<code·class="inline">Bool==true</code>)·or·if·only·code·paths·for·modified·applications·are·to
1055 be·updated·(<code·class="inline">Bool==false</code>,·default).·This·option·has·only·effect·for·other1055 be·updated·(<code·class="inline">Bool==false</code>,·default).·This·option·has·only·effect·for·other
1056 application·directories·than·the·default·<code·class="inline">$ROOT/lib/App-Vsn</code>,·that·is,1056 application·directories·than·the·default·<code·class="inline">$ROOT/lib/App-Vsn</code>,·that·is,
1057 application·directories·specified·in·argument·<code·class="inline">AppDirs</code>·in·a·call·to1057 application·directories·specified·in·argument·<code·class="inline">AppDirs</code>·in·a·call·to
1058 <a·href="#create_RELEASES/4"><code·class="inline">create_RELEASES/4</code></a>·or·<a·href="#set_unpacked/2"><code·class="inline">set_unpacked/2</code></a>.</p><p><em>Example:</em></p><p>In·the·current·version·<code·class="inline">CurVsn</code>·of·a·release,·the·application·directory·of1058 <a·href="#create_RELEASES/4"><code·class="inline">create_RELEASES/4</code></a>·or·<a·href="#set_unpacked/2"><code·class="inline">set_unpacked/2</code></a>.</p><p><em>Example:</em></p><p>In·the·current·version·<code·class="inline">CurVsn</code>·of·a·release,·the·application·directory·of
1059 <code·class="inline">myapp</code>·is·<code·class="inline">$ROOT/lib/myapp-1.0</code>.·A·new·version·<code·class="inline">NewVsn</code>·is·unpacked·outside1059 <code·class="inline">myapp</code>·is·<code·class="inline">$ROOT/lib/myapp-1.0</code>.·A·new·version·<code·class="inline">NewVsn</code>·is·unpacked·outside
1060 the·release·handler·and·the·release·handler·is·informed·about·this·with·a·call1060 the·release·handler·and·the·release·handler·is·informed·about·this·with·a·call
1061 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">release_handler</span><span·class="p">:</span><span·class="nf">set_unpacked</span><span·class="p"·data-group-id="9074091471-1">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9074091471-2">[</span><span·class="p"·data-group-id="9074091471-3">{</span><span·class="ss">myapp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·ca9154fe51d43fc3f07bb3ab04d3c18d132062741391475ad2922cff9ef96d72·...·]-1">)</span><span·class="p">.</span><span·class="w">1061 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">release_handler</span><span·class="p">:</span><span·class="nf">set_unpacked</span><span·class="p"·data-group-id="0004798346-1">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0004798346-2">[</span><span·class="p"·data-group-id="0004798346-3">{</span><span·class="ss">myapp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·ec301a8ec856fd596ec7f7d944ae2fa67d38af2aab909c26edb2e875c7bc1c40·...·]-1">)</span><span·class="p">.</span><span·class="w">
1062 </span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9074091471-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">NewVsn</span><span·class="p"·data-group-id="9074091471-4">}</span></code></pre><p>If·<code·class="inline">NewVsn</code>·is·installed·with·option·<code·class="inline">{update_paths,true}</code>,·then1062 </span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0004798346-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">NewVsn</span><span·class="p"·data-group-id="0004798346-4">}</span></code></pre><p>If·<code·class="inline">NewVsn</code>·is·installed·with·option·<code·class="inline">{update_paths,true}</code>,·then
1063 <a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#lib_dir/1"><code·class="inline">code:lib_dir(myapp)</code></a>·returns·<code·class="inline">/home/user/myapp-1.0</code>.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Installing·a·new·release·can·be·time·consuming·if·there·are·many·processes·in1063 <a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#lib_dir/1"><code·class="inline">code:lib_dir(myapp)</code></a>·returns·<code·class="inline">/home/user/myapp-1.0</code>.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Installing·a·new·release·can·be·time·consuming·if·there·are·many·processes·in
1064 the·system.·The·reason·is·that·each·process·must·be·checked·for·references·to1064 the·system.·The·reason·is·that·each·process·must·be·checked·for·references·to
1065 old·code·before·a·module·can·be·purged.·This·check·can·lead·to·garbage1065 old·code·before·a·module·can·be·purged.·This·check·can·lead·to·garbage
1066 collections·and·copying·of·data.</p><p>To·speed·up·the·execution·of·<a·href="#install_release/1"><code·class="inline">install_release</code></a>,·first1066 collections·and·copying·of·data.</p><p>To·speed·up·the·execution·of·<a·href="#install_release/1"><code·class="inline">install_release</code></a>,·first
1067 call·<a·href="#check_install_release/1"><code·class="inline">check_install_release</code></a>,·using·option1067 call·<a·href="#check_install_release/1"><code·class="inline">check_install_release</code></a>,·using·option
1068 <code·class="inline">purge</code>.·This·does·the·same·check·for·old·code.·Then·purges·all·modules·that1068 <code·class="inline">purge</code>.·This·does·the·same·check·for·old·code.·Then·purges·all·modules·that
1069 can·be·soft-purged.·The·purged·modules·do·then·no·longer·have·any·old·code,1069 can·be·soft-purged.·The·purged·modules·do·then·no·longer·have·any·old·code,
154 KB
./usr/share/doc/erlang-doc/html/lib/sasl-4.2.2/doc/html/sasl.epub
3.28 KB
zipinfo {}
    
Offset 1, 23 lines modifiedOffset 1, 23 lines modified
1 Zip·file·size:·92278·bytes,·number·of·entries:·211 Zip·file·size:·92278·bytes,·number·of·entries:·21
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:46·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:00·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·10:46·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·09:00·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····34842·bx·defN·25-Feb-13·10:46·OEBPS/systools.xhtml4 ?rw-r--r--··6.1·unx····34842·bx·defN·25-Feb-13·09:00·OEBPS/systools.xhtml
5 ?rw-r--r--··6.1·unx····11459·bx·defN·25-Feb-13·10:46·OEBPS/script.xhtml5 ?rw-r--r--··6.1·unx····11459·bx·defN·25-Feb-13·09:00·OEBPS/script.xhtml
6 ?rw-r--r--··6.1·unx·····1680·bx·defN·25-Feb-13·10:46·OEBPS/sasl_intro.xhtml6 ?rw-r--r--··6.1·unx·····1680·bx·defN·25-Feb-13·09:00·OEBPS/sasl_intro.xhtml
7 ?rw-r--r--··6.1·unx····11100·bx·defN·25-Feb-13·10:46·OEBPS/sasl_app.xhtml7 ?rw-r--r--··6.1·unx····11100·bx·defN·25-Feb-13·09:00·OEBPS/sasl_app.xhtml
8 ?rw-r--r--··6.1·unx·····3582·bx·defN·25-Feb-13·10:46·OEBPS/relup.xhtml8 ?rw-r--r--··6.1·unx·····3582·bx·defN·25-Feb-13·09:00·OEBPS/relup.xhtml
9 ?rw-r--r--··6.1·unx····74396·bx·defN·25-Feb-13·10:46·OEBPS/release_handler.xhtml9 ?rw-r--r--··6.1·unx····74396·bx·defN·25-Feb-13·09:00·OEBPS/release_handler.xhtml
10 ?rw-r--r--··6.1·unx·····6210·bx·defN·25-Feb-13·10:46·OEBPS/rel.xhtml10 ?rw-r--r--··6.1·unx·····6210·bx·defN·25-Feb-13·09:00·OEBPS/rel.xhtml
11 ?rw-r--r--··6.1·unx····36502·bx·defN·25-Feb-13·10:46·OEBPS/rb.xhtml11 ?rw-r--r--··6.1·unx····36502·bx·defN·25-Feb-13·09:00·OEBPS/rb.xhtml
12 ?rw-r--r--··6.1·unx····64019·bx·defN·25-Feb-13·10:46·OEBPS/notes.xhtml12 ?rw-r--r--··6.1·unx····64019·bx·defN·25-Feb-13·09:00·OEBPS/notes.xhtml
13 ?rw-r--r--··6.1·unx·····1639·bx·defN·25-Feb-13·10:46·OEBPS/nav.xhtml13 ?rw-r--r--··6.1·unx·····1639·bx·defN·25-Feb-13·09:00·OEBPS/nav.xhtml
14 ?rw-r--r--··6.1·unx····28563·bx·defN·25-Feb-13·10:46·OEBPS/error_logging.xhtml14 ?rw-r--r--··6.1·unx····28563·bx·defN·25-Feb-13·09:00·OEBPS/error_logging.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:46·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:00·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:46·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:00·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx·····2758·bx·defN·25-Feb-13·10:46·OEBPS/content.opf17 ?rw-r--r--··6.1·unx·····2758·bx·defN·25-Feb-13·09:00·OEBPS/content.opf
18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:46·OEBPS/assets/logo.png18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:00·OEBPS/assets/logo.png
19 ?rw-r--r--··6.1·unx····34558·bx·defN·25-Feb-13·10:46·OEBPS/appup.xhtml19 ?rw-r--r--··6.1·unx····34558·bx·defN·25-Feb-13·09:00·OEBPS/appup.xhtml
20 ?rw-r--r--··6.1·unx·····9998·bx·defN·25-Feb-13·10:46·OEBPS/alarm_handler.xhtml20 ?rw-r--r--··6.1·unx·····9998·bx·defN·25-Feb-13·09:00·OEBPS/alarm_handler.xhtml
21 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:46·META-INF/container.xml21 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:00·META-INF/container.xml
22 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:46·META-INF/com.apple.ibooks.display-options.xml22 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:00·META-INF/com.apple.ibooks.display-options.xml
23 21·files,·343350·bytes·uncompressed,·88680·bytes·compressed:··74.2%23 21·files,·343350·bytes·uncompressed,·88680·bytes·compressed:··74.2%
73.4 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:46:10,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:00:36,·uncompressed·size·20,·method=store
11.0 KB
OEBPS/script.xhtml
Max HTML report size reached
4.31 KB
OEBPS/release_handler.xhtml
    
Offset 933, 16 lines modifiedOffset 933, 16 lines modified
933 updated·(<code·class="inline">Bool==true</code>)·or·if·only·code·paths·for·modified·applications·are·to933 updated·(<code·class="inline">Bool==true</code>)·or·if·only·code·paths·for·modified·applications·are·to
934 be·updated·(<code·class="inline">Bool==false</code>,·default).·This·option·has·only·effect·for·other934 be·updated·(<code·class="inline">Bool==false</code>,·default).·This·option·has·only·effect·for·other
935 application·directories·than·the·default·<code·class="inline">$ROOT/lib/App-Vsn</code>,·that·is,935 application·directories·than·the·default·<code·class="inline">$ROOT/lib/App-Vsn</code>,·that·is,
936 application·directories·specified·in·argument·<code·class="inline">AppDirs</code>·in·a·call·to936 application·directories·specified·in·argument·<code·class="inline">AppDirs</code>·in·a·call·to
937 <a·href="#create_RELEASES/4"><code·class="inline">create_RELEASES/4</code></a>·or·<a·href="#set_unpacked/2"><code·class="inline">set_unpacked/2</code></a>.</p><p><em>Example:</em></p><p>In·the·current·version·<code·class="inline">CurVsn</code>·of·a·release,·the·application·directory·of937 <a·href="#create_RELEASES/4"><code·class="inline">create_RELEASES/4</code></a>·or·<a·href="#set_unpacked/2"><code·class="inline">set_unpacked/2</code></a>.</p><p><em>Example:</em></p><p>In·the·current·version·<code·class="inline">CurVsn</code>·of·a·release,·the·application·directory·of
938 <code·class="inline">myapp</code>·is·<code·class="inline">$ROOT/lib/myapp-1.0</code>.·A·new·version·<code·class="inline">NewVsn</code>·is·unpacked·outside938 <code·class="inline">myapp</code>·is·<code·class="inline">$ROOT/lib/myapp-1.0</code>.·A·new·version·<code·class="inline">NewVsn</code>·is·unpacked·outside
939 the·release·handler·and·the·release·handler·is·informed·about·this·with·a·call939 the·release·handler·and·the·release·handler·is·informed·about·this·with·a·call
940 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">release_handler</samp><samp·class="p">:</samp><samp·class="nf">set_unpacked</samp><samp·class="p"·data-group-id="4825849281-1">(</samp><samp·class="n">RelFile</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4825849281-2">[</samp><samp·class="p"·data-group-id="4825849281-3">{</samp><samp·class="ss">myapp</samp><samp·class="p">,</sa[·...·truncated·by·diffoscope;·len:·353,·SHA:·a85ff9b8101acba546bebe207529e8b189d0a4db4310f3b7bb85484eeeee1bbe·...·]-1">)</samp><samp·class="p">.</samp><samp·class="w">940 as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">release_handler</samp><samp·class="p">:</samp><samp·class="nf">set_unpacked</samp><samp·class="p"·data-group-id="5131253884-1">(</samp><samp·class="n">RelFile</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="5131253884-2">[</samp><samp·class="p"·data-group-id="5131253884-3">{</samp><samp·class="ss">myapp</samp><samp·class="p">,</sa[·...·truncated·by·diffoscope;·len:·353,·SHA:·bf3ab1a3ae7aac05aae12bed1e519c10987c21b2c9a3fdb3872dd41a7651da82·...·]-1">)</samp><samp·class="p">.</samp><samp·class="w">
941 </samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4825849281-4">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="n">NewVsn</samp><samp·class="p"·data-group-id="4825849281-4">}</samp></code></pre><p>If·<code·class="inline">NewVsn</code>·is·installed·with·option·<code·class="inline">{update_paths,true}</code>,·then941 </samp><samp·class="p">=&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="5131253884-4">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="n">NewVsn</samp><samp·class="p"·data-group-id="5131253884-4">}</samp></code></pre><p>If·<code·class="inline">NewVsn</code>·is·installed·with·option·<code·class="inline">{update_paths,true}</code>,·then
942 <a·href="../../../../lib/kernel/doc/html/code.html#lib_dir/1"><code·class="inline">code:lib_dir(myapp)</code></a>·returns·<code·class="inline">/home/user/myapp-1.0</code>.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Installing·a·new·release·can·be·time·consuming·if·there·are·many·processes·in942 <a·href="../../../../lib/kernel/doc/html/code.html#lib_dir/1"><code·class="inline">code:lib_dir(myapp)</code></a>·returns·<code·class="inline">/home/user/myapp-1.0</code>.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Installing·a·new·release·can·be·time·consuming·if·there·are·many·processes·in
943 the·system.·The·reason·is·that·each·process·must·be·checked·for·references·to943 the·system.·The·reason·is·that·each·process·must·be·checked·for·references·to
944 old·code·before·a·module·can·be·purged.·This·check·can·lead·to·garbage944 old·code·before·a·module·can·be·purged.·This·check·can·lead·to·garbage
945 collections·and·copying·of·data.</p><p>To·speed·up·the·execution·of·<a·href="#install_release/1"><code·class="inline">install_release</code></a>,·first945 collections·and·copying·of·data.</p><p>To·speed·up·the·execution·of·<a·href="#install_release/1"><code·class="inline">install_release</code></a>,·first
946 call·<a·href="#check_install_release/1"><code·class="inline">check_install_release</code></a>,·using·option946 call·<a·href="#check_install_release/1"><code·class="inline">check_install_release</code></a>,·using·option
947 <code·class="inline">purge</code>.·This·does·the·same·check·for·old·code.·Then·purges·all·modules·that947 <code·class="inline">purge</code>.·This·does·the·same·check·for·old·code.·Then·purges·all·modules·that
948 can·be·soft-purged.·The·purged·modules·do·then·no·longer·have·any·old·code,948 can·be·soft-purged.·The·purged·modules·do·then·no·longer·have·any·old·code,
7.67 KB
OEBPS/rel.xhtml
Max HTML report size reached
17.3 KB
OEBPS/error_logging.xhtml
Max HTML report size reached
1.2 KB
OEBPS/content.opf
1.17 KB
OEBPS/content.opf
Max HTML report size reached
35.0 KB
OEBPS/appup.xhtml
Max HTML report size reached
11.1 KB
./usr/share/doc/erlang-doc/html/lib/sasl-4.2.2/doc/html/script.html
    
Offset 138, 28 lines modifiedOffset 138, 28 lines modified
138 files.</p><h2·id="file-syntax"·class="section-heading">138 files.</p><h2·id="file-syntax"·class="section-heading">
139 ··<a·href="#file-syntax"·class="hover-link">139 ··<a·href="#file-syntax"·class="hover-link">
140 ····<i·class="ri-link-m"·aria-hidden="true"></i>140 ····<i·class="ri-link-m"·aria-hidden="true"></i>
141 ··</a>141 ··</a>
142 ··<span·class="text">File·Syntax</span>142 ··<span·class="text">File·Syntax</span>
143 </h2>143 </h2>
144 <p>The·boot·script·is·stored·in·a·file·with·extension·<code·class="inline">.script</code>.·The·file·has·the144 <p>The·boot·script·is·stored·in·a·file·with·extension·<code·class="inline">.script</code>.·The·file·has·the
145 following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2276217410-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2276217410-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Vsn</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·84ab3547259bff1e4c67b4ceebb2ba4b2f3f70e6f180dd7c7564a99e74f5ec02·...·]-2">}</span><span·class="p">,</span><span·class="w">145 following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0576747081-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0576747081-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Vsn</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·68f878b5ed3232299ac0f7809ee28734e7170eb4e6a7b14291c5b804dfdd59d0·...·]-2">}</span><span·class="p">,</span><span·class="w">
146 ·</span><span·class="p"·data-group-id="2276217410-3">[</span><span·class="w">146 ·</span><span·class="p"·data-group-id="0576747081-3">[</span><span·class="w">
147 ··</span><span·class="p"·data-group-id="2276217410-4">{</span><span·class="ss">progress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loading</span><span·class="p"·data-group-id="2276217410-4">}</span><span·class="p">,</span><span·class="w">147 ··</span><span·class="p"·data-group-id="0576747081-4">{</span><span·class="ss">progress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loading</span><span·class="p"·data-group-id="0576747081-4">}</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="2276217410-5">{</span><span·class="ss">preLoaded</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2276217410-6">[</span><span·class="n">Mod1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod2</spa[·...·truncated·by·diffoscope;·len:·216,·SHA:·179739fccffcc4f4f94e14cc8eff71df5e034ae6dae9d1d3fd2529912f6d01d5·...·]-5">}</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="0576747081-5">{</span><span·class="ss">preLoaded</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0576747081-6">[</span><span·class="n">Mod1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod2</spa[·...·truncated·by·diffoscope;·len:·216,·SHA:·66ced6c4a680d06081841e464d2fb0bcba56f4cff65df5241594ab1d46cb2d53·...·]-5">}</span><span·class="p">,</span><span·class="w">
149 ··</span><span·class="p"·data-group-id="2276217410-7">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2276217410-8">[</span><span·class="n">Dir1</span><span·class="p">,</span><span·class="s">&quot;$ROOT/Dir&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·180,·SHA:·65fefccb7563287a670871d32dc55f0870f03412c62782d37d7d4a05bd3c8eaf·...·]-7">}</span><span·class="p">.</span><span·class="w">149 ··</span><span·class="p"·data-group-id="0576747081-7">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0576747081-8">[</span><span·class="n">Dir1</span><span·class="p">,</span><span·class="s">&quot;$ROOT/Dir&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·180,·SHA:·bb9d89791208284c4629dd8f9da81f440cc51af4f06d3175c4a51fad2e60ab68·...·]-7">}</span><span·class="p">.</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="2276217410-9">{</span><span·class="ss">primLoad</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2276217410-10">[</span><span·class="n">Mod1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod2</spa[·...·truncated·by·diffoscope;·len:·217,·SHA:·a5436e556a652beb7189ec57d77aa2ba6a179ff35bc0b1c0a7b65fda50c927a8·...·]-9">}</span><span·class="p">,</span><span·class="w">150 ··</span><span·class="p"·data-group-id="0576747081-9">{</span><span·class="ss">primLoad</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0576747081-10">[</span><span·class="n">Mod1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod2</spa[·...·truncated·by·diffoscope;·len:·217,·SHA:·0089ece298e6bff9374fdcec5650414e38ffc1c1a4ff560234c3c09e2367d36b·...·]-9">}</span><span·class="p">,</span><span·class="w">
151 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">151 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="2276217410-11">{</span><span·class="ss">kernel_load_completed</span><span·class="p"·data-group-id="2276217410-11">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="0576747081-11">{</span><span·class="ss">kernel_load_completed</span><span·class="p"·data-group-id="0576747081-11">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="2276217410-12">{</span><span·class="ss">progress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loaded</span><span·class="p"·data-group-id="2276217410-12">}</span><span·class="p">,</span><span·class="w">153 ··</span><span·class="p"·data-group-id="0576747081-12">{</span><span·class="ss">progress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">loaded</span><span·class="p"·data-group-id="0576747081-12">}</span><span·class="p">,</span><span·class="w">
154 ··</span><span·class="p"·data-group-id="2276217410-13">{</span><span·class="ss">kernelProcess</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2276217410-14">{</span><span·class="n">Mod[·...·truncated·by·diffoscope;·len:·252,·SHA:·6ad07e02465befae8fd2276aa19d108c7247e2da75cac763140ac6da7eefd4d1·...·]-13">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="0576747081-13">{</span><span·class="ss">kernelProcess</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0576747081-14">{</span><span·class="n">Mod[·...·truncated·by·diffoscope;·len:·252,·SHA:·127e26c974be910005c4edda27119f576b91695974b8350fa771f9a704677f47·...·]-13">}</span><span·class="p">,</span><span·class="w">
155 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">155 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
156 ··</span><span·class="p"·data-group-id="2276217410-15">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2276217410-16">{</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Func</span><[·...·truncated·by·diffoscope;·len:·169,·SHA:·53c8f2b361a81793edc4ecdfb29a93ee02797c8b7872ffa89989a922380ff897·...·]-15">}</span><span·class="p">,</span><span·class="w">156 ··</span><span·class="p"·data-group-id="0576747081-15">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0576747081-16">{</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Func</span><[·...·truncated·by·diffoscope;·len:·169,·SHA:·714cd602726601d220757aa096062cd313f089860e023de774b307eddd8dc61a·...·]-15">}</span><span·class="p">,</span><span·class="w">
157 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">157 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
158 ··</span><span·class="p"·data-group-id="2276217410-17">{</span><span·class="ss">progress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·data-group-id="2276217410-17">}</span><span·class="p"·data-group-id="2276217410-3">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·46a7527fe05acc84356184999c6eb63cc7d376ca0a3f6e080f40c2291431b7a0·...·]-1">}</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">Name·=·string()</code></strong>·-·Defines·the·system·name.</p></li><li><p><strong><code·class="inline">Vsn·=·string()</code></strong>·-·Defines·the·system·version.</p></li><li><p><strong><code·class="inline">{progress,·Term}</code></strong>·-·Sets·the·&quot;progress&quot;·of·the·initialization·program.158 ··</span><span·class="p"·data-group-id="0576747081-17">{</span><span·class="ss">progress</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·data-group-id="0576747081-17">}</span><span·class="p"·data-group-id="0576747081-3">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·7144eaa881341b7639e29a3df156e2d15182013e1946a1e8ef2555a2578c44cc·...·]-1">}</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">Name·=·string()</code></strong>·-·Defines·the·system·name.</p></li><li><p><strong><code·class="inline">Vsn·=·string()</code></strong>·-·Defines·the·system·version.</p></li><li><p><strong><code·class="inline">{progress,·Term}</code></strong>·-·Sets·the·&quot;progress&quot;·of·the·initialization·program.
159 The·<a·href="../../../../erts-15.2.2/doc/html/init.html#get_status/0"><code·class="inline">init:get_status/0</code></a>·function·returns·the·current·value·of·the·progress,159 The·<a·href="../../../../erts-15.2.2/doc/html/init.html#get_status/0"><code·class="inline">init:get_status/0</code></a>·function·returns·the·current·value·of·the·progress,
160 which·is·<code·class="inline">{InternalStatus,Term}</code>.</p></li><li><p><strong><code·class="inline">{path,·[Dir]}</code></strong>·-·<code·class="inline">Dir</code>·is·a·string.·This·argument·sets·the·load·path·of160 which·is·<code·class="inline">{InternalStatus,Term}</code>.</p></li><li><p><strong><code·class="inline">{path,·[Dir]}</code></strong>·-·<code·class="inline">Dir</code>·is·a·string.·This·argument·sets·the·load·path·of
161 the·system·to·<code·class="inline">[Dir]</code>.·The·load·path·used·to·load·modules·is·obtained·from·the161 the·system·to·<code·class="inline">[Dir]</code>.·The·load·path·used·to·load·modules·is·obtained·from·the
162 initial·load·path,·which·is·given·in·the·script·file,·together·with·any·path162 initial·load·path,·which·is·given·in·the·script·file,·together·with·any·path
163 flags·that·were·supplied·in·the·command-line·arguments.·The·command-line163 flags·that·were·supplied·in·the·command-line·arguments.·The·command-line
164 arguments·modify·the·path·as·follows:</p><ul><li><code·class="inline">-pa·Dir1·Dir2·...·DirN</code>·adds·the·directories164 arguments·modify·the·path·as·follows:</p><ul><li><code·class="inline">-pa·Dir1·Dir2·...·DirN</code>·adds·the·directories
165 <code·class="inline">DirN,·DirN-1,·...,·Dir2,·Dir1</code>·to·the·front·of·the·initial·load·path.</li><li><code·class="inline">-pz·Dir1·Dir2·...·DirN</code>·adds·the·directories·<code·class="inline">Dir1,·Dir2,·...,·DirN</code>·to·the165 <code·class="inline">DirN,·DirN-1,·...,·Dir2,·Dir1</code>·to·the·front·of·the·initial·load·path.</li><li><code·class="inline">-pz·Dir1·Dir2·...·DirN</code>·adds·the·directories·<code·class="inline">Dir1,·Dir2,·...,·DirN</code>·to·the
866 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp.epub
12.3 KB
zipinfo {}
Max HTML report size reached
432 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:49:04,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:11:02,·uncompressed·size·20,·method=store
5.4 KB
OEBPS/snmpm.xhtml
    
Offset 1823, 16 lines modifiedOffset 1823, 16 lines modified
1823 ······<div·class="specs">1823 ······<div·class="specs">
  
1824 ··········<pre·translate="no"><span·class="attribute">-spec</span>·load_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.xhtml#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>1824 ··········<pre·translate="no"><span·class="attribute">-spec</span>·load_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.xhtml#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1825 ······</div>1825 ······</div>
  
1826 <p>Load·a·<code·class="inline">Mib</code>·into·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including1826 <p>Load·a·<code·class="inline">Mib</code>·into·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including
1827 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">··········</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nc">code</samp><samp·class="p">:</samp><samp·class="nf">priv_dir</samp><samp·class="p"·data-group-id="4354861425-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="4354861425-1">)</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;/mibs/&quot;</samp><samp·class="p">,</samp><samp·class="w">1827 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">··········</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nc">code</samp><samp·class="p">:</samp><samp·class="nf">priv_dir</samp><samp·class="p"·data-group-id="1031547931-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="1031547931-1">)</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;/mibs/&quot;</samp><samp·class="p">,</samp><samp·class="w">
1828 ··········</samp><samp·class="nc">snmpm</samp><samp·class="p">:</samp><samp·class="nf">load_mib</samp><samp·class="p"·data-group-id="4354861425-2">(</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;MY-MIB&quot;</samp><samp·class="p"·data-group-id="4354861425-2">)</samp><samp·class="p">.</samp></code></pre>1828 ··········</samp><samp·class="nc">snmpm</samp><samp·class="p">:</samp><samp·class="nf">load_mib</samp><samp·class="p"·data-group-id="1031547931-2">(</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;MY-MIB&quot;</samp><samp·class="p"·data-group-id="1031547931-2">)</samp><samp·class="p">.</samp></code></pre>
1829 ··</section>1829 ··</section>
1830 </section>1830 </section>
1831 <section·class="detail"·id="log_to_io/1">1831 <section·class="detail"·id="log_to_io/1">
  
1832 ··<div·class="detail-header">1832 ··<div·class="detail-header">
1833 ····<a·href="#log_to_io/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1833 ····<a·href="#log_to_io/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1834 ······<i·class="ri-link-m"·aria-hidden="true"></i>1834 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3329, 16 lines modifiedOffset 3329, 16 lines modified
3329 ······<div·class="specs">3329 ······<div·class="specs">
  
3330 ··········<pre·translate="no"><span·class="attribute">-spec</span>·unload_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.xhtml#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>3330 ··········<pre·translate="no"><span·class="attribute">-spec</span>·unload_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.xhtml#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3331 ······</div>3331 ······</div>
  
3332 <p>Unload·a·<code·class="inline">Mib</code>·from·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including3332 <p>Unload·a·<code·class="inline">Mib</code>·from·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including
3333 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">··········</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nc">code</samp><samp·class="p">:</samp><samp·class="nf">priv_dir</samp><samp·class="p"·data-group-id="6281150977-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="6281150977-1">)</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;/mibs/&quot;</samp><samp·class="p">,</samp><samp·class="w">3333 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">··········</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nc">code</samp><samp·class="p">:</samp><samp·class="nf">priv_dir</samp><samp·class="p"·data-group-id="2429349451-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="2429349451-1">)</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;/mibs/&quot;</samp><samp·class="p">,</samp><samp·class="w">
3334 ··········</samp><samp·class="nc">snmpm</samp><samp·class="p">:</samp><samp·class="nf">unload_mib</samp><samp·class="p"·data-group-id="6281150977-2">(</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;MY-MIB&quot;</samp><samp·class="p"·data-group-id="6281150977-2">)</samp><samp·class="p">.</samp></code></pre>3334 ··········</samp><samp·class="nc">snmpm</samp><samp·class="p">:</samp><samp·class="nf">unload_mib</samp><samp·class="p"·data-group-id="2429349451-2">(</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;MY-MIB&quot;</samp><samp·class="p"·data-group-id="2429349451-2">)</samp><samp·class="p">.</samp></code></pre>
3335 ··</section>3335 ··</section>
3336 </section>3336 </section>
3337 <section·class="detail"·id="unregister_agent/2">3337 <section·class="detail"·id="unregister_agent/2">
  
3338 ··<div·class="detail-header">3338 ··<div·class="detail-header">
3339 ····<a·href="#unregister_agent/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3339 ····<a·href="#unregister_agent/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3340 ······<i·class="ri-link-m"·aria-hidden="true"></i>3340 ······<i·class="ri-link-m"·aria-hidden="true"></i>
1.75 KB
OEBPS/snmpc_cmd.xhtml
    
Offset 22, 15 lines modifiedOffset 22, 15 lines modified
22 ····</h1>22 ····</h1>
23 <p>SNMP·MIB·compiler·frontend</p><h2·id="synopsis"·class="section-heading">23 <p>SNMP·MIB·compiler·frontend</p><h2·id="synopsis"·class="section-heading">
24 ··<a·href="#synopsis"·class="hover-link">24 ··<a·href="#synopsis"·class="hover-link">
25 ····<i·class="ri-link-m"·aria-hidden="true"></i>25 ····<i·class="ri-link-m"·aria-hidden="true"></i>
26 ··</a>26 ··</a>
27 ··<span·class="text">Synopsis</span>27 ··<span·class="text">Synopsis</span>
28 </h2>28 </h2>
29 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">snmpc</span><span·class="w">·</span><span·class="p"·data-group-id="8829641462-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="8829641462-1">]</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">mib</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">bin</span></code></pre><h2·id="description"·class="section-heading">29 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">snmpc</span><span·class="w">·</span><span·class="p"·data-group-id="4177975608-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="4177975608-1">]</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">mib</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">bin</span></code></pre><h2·id="description"·class="section-heading">
30 ··<a·href="#description"·class="hover-link">30 ··<a·href="#description"·class="hover-link">
31 ····<i·class="ri-link-m"·aria-hidden="true"></i>31 ····<i·class="ri-link-m"·aria-hidden="true"></i>
32 ··</a>32 ··</a>
33 ··<span·class="text">Description</span>33 ··<span·class="text">Description</span>
34 </h2>34 </h2>
35 <p>The·<code·class="inline">snmpc</code>·program·provides·a·way·to·run·the·SNMP·MIB·compiler·of·the·Erlang35 <p>The·<code·class="inline">snmpc</code>·program·provides·a·way·to·run·the·SNMP·MIB·compiler·of·the·Erlang
36 system.</p><p><code·class="inline">snmpc</code>·compiles·an·SNMP·MIB·file.·See·<a·href="snmpc.xhtml#compile/1">compile/1,2</a>·for·more36 system.</p><p><code·class="inline">snmpc</code>·compiles·an·SNMP·MIB·file.·See·<a·href="snmpc.xhtml#compile/1">compile/1,2</a>·for·more
28.5 KB
OEBPS/snmpa.xhtml
Max HTML report size reached
2.4 KB
OEBPS/snmp_pdus.xhtml
    
Offset 25, 16 lines modifiedOffset 25, 16 lines modified
25 ······<section·id="moduledoc"·class="docstring">25 ······<section·id="moduledoc"·class="docstring">
26 <p>Encode·and·Decode·Functions·for·SNMP·PDUs</p><p>RFC1157,·RFC1905·and/or·RFC2272·should·be·studied·carefully·before·using·this26 <p>Encode·and·Decode·Functions·for·SNMP·PDUs</p><p>RFC1157,·RFC1905·and/or·RFC2272·should·be·studied·carefully·before·using·this
27 module,·<code·class="inline">snmp_pdus</code>.</p><p>The·module·<code·class="inline">snmp_pdus</code>·contains·functions·for·encoding·and·decoding·of·SNMP27 module,·<code·class="inline">snmp_pdus</code>.</p><p>The·module·<code·class="inline">snmp_pdus</code>·contains·functions·for·encoding·and·decoding·of·SNMP
28 protocol·data·units·(PDUs).·In·short,·this·module·converts·a·list·of·bytes·to28 protocol·data·units·(PDUs).·In·short,·this·module·converts·a·list·of·bytes·to
29 Erlang·record·representations·and·vice·versa.·The·record·definitions·can·be29 Erlang·record·representations·and·vice·versa.·The·record·definitions·can·be
30 found·in·the·file·<code·class="inline">snmp/include/snmp_types.hrl</code>.·If·snmpv3·is·used,·the·module30 found·in·the·file·<code·class="inline">snmp/include/snmp_types.hrl</code>.·If·snmpv3·is·used,·the·module
31 that·includes·<code·class="inline">snmp_types.hrl</code>·must·define·the·constant·<code·class="inline">SNMP_USE_V3</code>·before·the31 that·includes·<code·class="inline">snmp_types.hrl</code>·must·define·the·constant·<code·class="inline">SNMP_USE_V3</code>·before·the
32 header·file·is·included.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p">-</samp><samp·class="na">define</samp><samp·class="p"·data-group-id="3622123428-1">(</samp><samp·class="n">SNMP_USE_V3</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">true</samp><samp·class="p"·data-group-id="3622123428-1">)</samp><samp·class="p">.</samp><samp·class="w">32 header·file·is·included.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p">-</samp><samp·class="na">define</samp><samp·class="p"·data-group-id="6075991796-1">(</samp><samp·class="n">SNMP_USE_V3</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">true</samp><samp·class="p"·data-group-id="6075991796-1">)</samp><samp·class="p">.</samp><samp·class="w">
33 </samp><samp·class="p">-</samp><samp·class="na">include_lib</samp><samp·class="p"·data-group-id="3622123428-2">(</samp><samp·class="s">&quot;snmp/include/snmp_types.hrl&quot;</samp><samp·class="p"·data-group-id="3622123428-2">)</samp><samp·class="p">.</samp></code></pre><p>Encoding·and·decoding·must·be·done·explicitly·when·writing·your·own·Net·if33 </samp><samp·class="p">-</samp><samp·class="na">include_lib</samp><samp·class="p"·data-group-id="6075991796-2">(</samp><samp·class="s">&quot;snmp/include/snmp_types.hrl&quot;</samp><samp·class="p"·data-group-id="6075991796-2">)</samp><samp·class="p">.</samp></code></pre><p>Encoding·and·decoding·must·be·done·explicitly·when·writing·your·own·Net·if
34 process.</p>34 process.</p>
35 ······</section>35 ······</section>
  
  
36 ······<section·id="summary"·class="details-list">36 ······<section·id="summary"·class="details-list">
37 ········<h1·class="section-heading">Summary</h1>37 ········<h1·class="section-heading">Summary</h1>
38 <div·class="summary-types·summary">38 <div·class="summary-types·summary">
7.26 KB
OEBPS/snmp_mib_compiler.xhtml
Max HTML report size reached
7.0 KB
OEBPS/snmp_manager_config_files.xhtml
Max HTML report size reached
19.9 KB
OEBPS/snmp_instr_functions.xhtml
Max HTML report size reached
6.55 KB
OEBPS/snmp_index.xhtml
Max HTML report size reached
174 KB
OEBPS/snmp_impl_example_agent.xhtml
Max HTML report size reached
18.8 KB
OEBPS/snmp_generic.xhtml
Max HTML report size reached
34.8 KB
OEBPS/snmp_config.xhtml
Max HTML report size reached
43.5 KB
OEBPS/snmp_app.xhtml
Max HTML report size reached
6.77 KB
OEBPS/snmp_agent_funct_descr.xhtml
Max HTML report size reached
20.6 KB
OEBPS/snmp_agent_config_files.xhtml
Max HTML report size reached
30.1 KB
OEBPS/snmp_advanced_agent.xhtml
Max HTML report size reached
10.2 KB
OEBPS/snmp.xhtml
Max HTML report size reached
3.74 KB
OEBPS/content.opf
3.7 KB
OEBPS/content.opf
Max HTML report size reached
10.3 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp.html
    
Offset 3195, 16 lines modifiedOffset 3195, 16 lines modified
3195 ······<div·class="specs">3195 ······<div·class="specs">
  
3196 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Prefix)·->·<a·href="#t:void/0">void</a>()·when·Prefix·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>3196 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Prefix)·->·<a·href="#t:void/0">void</a>()·when·Prefix·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>
  
3197 ······</div>3197 ······</div>
  
3198 <p>Utility·function(s)·to·produce·a·formatted·printout·of·the·versions·info3198 <p>Utility·function(s)·to·produce·a·formatted·printout·of·the·versions·info
3199 generated·by·the·<code·class="inline">versions1</code>·function</p><p>This·is·the·same·as·doing,·e.g.:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="9793911895-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="9793911895-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·167,·SHA:·ad033f56d73e664731cfb91bfd2831a84e0a8d76290f132843645ffd6cb18375·...·]5-2">)</span><span·class="p">,</span><span·class="w">3199 generated·by·the·<code·class="inline">versions1</code>·function</p><p>This·is·the·same·as·doing,·e.g.:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="4543684685-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="4543684685-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·167,·SHA:·a895ad2c1e4b0bd3aaf727f9415ea91eddf454225f7f8cd8052dd337f90c558f·...·]5-2">)</span><span·class="p">,</span><span·class="w">
3200 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="9793911895-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="9793911895-3">)</span><span·class="p">.</span></code></pre>3200 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="4543684685-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="4543684685-3">)</span><span·class="p">.</span></code></pre>
3201 ··</section>3201 ··</section>
3202 </section>3202 </section>
3203 <section·class="detail"·id="print_versions/1">3203 <section·class="detail"·id="print_versions/1">
  
3204 ··<div·class="detail-header">3204 ··<div·class="detail-header">
3205 ····<a·href="#print_versions/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3205 ····<a·href="#print_versions/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3206 ······<i·class="ri-link-m"·aria-hidden="true"></i>3206 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3253, 16 lines modifiedOffset 3253, 16 lines modified
3253 ····························Prefix·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),3253 ····························Prefix·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),
3254 ····························Versions·::·[VersionInfo],3254 ····························Versions·::·[VersionInfo],
3255 ····························VersionInfo·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>3255 ····························VersionInfo·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3256 ······</div>3256 ······</div>
  
3257 <p>Utility·function·to·produce·a·formatted·printout·of·the·versions·info·generated3257 <p>Utility·function·to·produce·a·formatted·printout·of·the·versions·info·generated
3258 by·the·<code·class="inline">versions1</code>·and·<code·class="inline">versions2</code>·functions</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="2300445791-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="2300445791-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·166,·SHA:·2167128754f6a2c9c1d800c7322d5accaabe210208be332c9d42d8cf10e1069e·...·]91-2">)</span><span·class="p">,</span><span·class="w">3258 by·the·<code·class="inline">versions1</code>·and·<code·class="inline">versions2</code>·functions</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="3965442591-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="3965442591-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·166,·SHA:·2c890658792f961281d3c642f959704b87a9a815ef53c30e9963b728fb9d7c02·...·]91-2">)</span><span·class="p">,</span><span·class="w">
3259 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="2300445791-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="2300445791-3">)</span><span·class="p">.</span></code></pre>3259 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="3965442591-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="3965442591-3">)</span><span·class="p">.</span></code></pre>
3260 ··</section>3260 ··</section>
3261 </section>3261 </section>
3262 <section·class="detail"·id="read_mib/1">3262 <section·class="detail"·id="read_mib/1">
  
3263 ··<div·class="detail-header">3263 ··<div·class="detail-header">
3264 ····<a·href="#read_mib/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3264 ····<a·href="#read_mib/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3265 ······<i·class="ri-link-m"·aria-hidden="true"></i>3265 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3382, 25 lines modifiedOffset 3382, 25 lines modified
3382 ·······················TraceOpt·::·{timestamp,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()}·|·TargetOpt.</pre>3382 ·······················TraceOpt·::·{timestamp,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()}·|·TargetOpt.</pre>
  
3383 ······</div>3383 ······</div>
  
3384 <p>This·function·is·used·to·set·up·trace·on·function(s)·for·the·given·module·or3384 <p>This·function·is·used·to·set·up·trace·on·function(s)·for·the·given·module·or
3385 modules.</p><p>The·example·below·sets·up·trace·on·the·exported·functions·(default)·of·module3385 modules.</p><p>The·example·below·sets·up·trace·on·the·exported·functions·(default)·of·module
3386 <code·class="inline">snmp_generic</code>·and·all·functions·of·module·<code·class="inline">snmp_generic_mnesia</code>.·With·return3386 <code·class="inline">snmp_generic</code>·and·all·functions·of·module·<code·class="inline">snmp_generic_mnesia</code>.·With·return
3387 values·(which·is·default)·and·timestamps·in·both·cases·(which·is·also·default):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»    ··</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">enable_trace</span><span·class="p"·data-group-id="8428590913-1">(</span><span·class="p"·data-group-id="8428590913-1">)</span><span·class="p">,</span><span·class="w">3387 values·(which·is·default)·and·timestamps·in·both·cases·(which·is·also·default):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»    ··</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">enable_trace</span><span·class="p"·data-group-id="4720161802-1">(</span><span·class="p"·data-group-id="4720161802-1">)</span><span·class="p">,</span><span·class="w">
3388 »       ··</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">set_trace</span><span·class="p"·data-group-id="8428590913-2">(</span><span·class="p"·data-group-id="8428590913-3">[</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">3388 »       ··</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">set_trace</span><span·class="p"·data-group-id="4720161802-2">(</span><span·class="p"·data-group-id="4720161802-3">[</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">
3389 ··························</span><span·class="p"·data-group-id="8428590913-4">{</span><span·class="ss">snmp_generic_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8428590913-5">[</span><span·class="p"·data-group-id="8428590913-6">{</span><span·class="ss">scope</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·31e0ed0b09bf589be63fd0028a81e3c3be72002d45bd9058fdb209b8888fbd96·...·]-2">)</span><span·class="p">,</span><span·class="w">3389 ··························</span><span·class="p"·data-group-id="4720161802-4">{</span><span·class="ss">snmp_generic_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4720161802-5">[</span><span·class="p"·data-group-id="4720161802-6">{</span><span·class="ss">scope</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·79b9e62e18ece0cdf0e84988fa6bfef256a9ea85a74ce3d2a786b7226f2e45a7·...·]-2">)</span><span·class="p">,</span><span·class="w">
3390 »       ··</span><span·class="p">.</span><span·class="w">3390 »       ··</span><span·class="p">.</span><span·class="w">
3391 »       ··</span><span·class="p">.</span><span·class="w">3391 »       ··</span><span·class="p">.</span><span·class="w">
3392 »       ··</span><span·class="p">.</span><span·class="w">3392 »       ··</span><span·class="p">.</span><span·class="w">
3393 ··········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">set_trace</span><span·class="p"·data-group-id="8428590913-7">(</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disable</span><span·class="p"·data-group-id="8428590913-7">)</span><span·class="p">,</span><span·class="w">3393 ··········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">set_trace</span><span·class="p"·data-group-id="4720161802-7">(</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disable</span><span·class="p"·data-group-id="4720161802-7">)</span><span·class="p">,</span><span·class="w">
3394 »       ··</span><span·class="p">.</span><span·class="w">3394 »       ··</span><span·class="p">.</span><span·class="w">
3395 »       ··</span><span·class="p">.</span><span·class="w">3395 »       ··</span><span·class="p">.</span><span·class="w">
3396 »       ··</span><span·class="p">.</span><span·class="w">3396 »       ··</span><span·class="p">.</span><span·class="w">
3397 »       ··</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">disable_trace</span><span·class="p"·data-group-id="8428590913-8">(</span><span·class="p"·data-group-id="8428590913-8">)</span><span·class="p">,</span></code></pre>3397 »       ··</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">disable_trace</span><span·class="p"·data-group-id="4720161802-8">(</span><span·class="p"·data-group-id="4720161802-8">)</span><span·class="p">,</span></code></pre>
3398 ··</section>3398 ··</section>
3399 </section>3399 </section>
3400 <section·class="detail"·id="start/0">3400 <section·class="detail"·id="start/0">
  
3401 ··<div·class="detail-header">3401 ··<div·class="detail-header">
3402 ····<a·href="#start/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3402 ····<a·href="#start/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3403 ······<i·class="ri-link-m"·aria-hidden="true"></i>3403 ······<i·class="ri-link-m"·aria-hidden="true"></i>
30.2 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_advanced_agent.html
    
Offset 325, 74 lines modifiedOffset 325, 74 lines modified
325 ·······::=·{·empTable·1·}325 ·······::=·{·empTable·1·}
326 ·······EmpEntry·::=326 ·······EmpEntry·::=
327 ··············SEQUENCE·{327 ··············SEQUENCE·{
328 ··················empDepNo·········INTEGER,328 ··················empDepNo·········INTEGER,
329 ··················empName··········DisplayString,329 ··················empName··········DisplayString,
330 ··················empTelNo·········DisplayString,330 ··················empTelNo·········DisplayString,
331 ··················empStatus········RowStatus331 ··················empStatus········RowStatus
332 ··············}</code></pre><p>The·corresponding·Mnesia·table·is·specified·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="6957764512-1">(</span><span·class="p"·data-group-id="6957764512-2">[</span><span·class="p"·data-group-id="6957764512-3">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">employees</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1d82c410aa334538acc0fb94df065df775d2b3cadec836c3cf0395d3b7047304·...·]-3">}</span><span·class="p">,</span><span·class="w">332 ··············}</code></pre><p>The·corresponding·Mnesia·table·is·specified·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2256202883-1">(</span><span·class="p"·data-group-id="2256202883-2">[</span><span·class="p"·data-group-id="2256202883-3">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">employees</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·03d93fbadc8ca6e6cf2d58b7c7ce49f24b6759a2026fd41d385464539b6c7c09·...·]-3">}</span><span·class="p">,</span><span·class="w">
333 ·····················</span><span·class="p"·data-group-id="6957764512-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6957764512-5">[</span><span·class="p"·data-group-id="6957764512-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·6c8b47992d6a04f72a34a75ea4254127adad61196d3a96557045808590f2d808·...·]-4">}</span><span·class="p">,</span><span·class="w">333 ·····················</span><span·class="p"·data-group-id="2256202883-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2256202883-5">[</span><span·class="p"·data-group-id="2256202883-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·de776104e654f54a3889b43682504f5a95200088555337eb9ecee20fde517ac8·...·]-4">}</span><span·class="p">,</span><span·class="w">
334 ·····················</span><span·class="p"·data-group-id="6957764512-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6957764512-9">[</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">telno</[·...·truncated·by·diffoscope;·len:·287,·SHA:·f3c6a300de8538fb46ff71b1a3ad153dd634878674f2b9e21adf088b6a8abd39·...·]-1">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>In·the·Mnesia·tables,·the·two·key·columns·are·stored·as·a·tuple·with·two334 ·····················</span><span·class="p"·data-group-id="2256202883-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2256202883-9">[</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">telno</[·...·truncated·by·diffoscope;·len:·287,·SHA:·c8e82524bef388d41295ddb7af81e3f24bf7441b5e563912ce984ec7807b99fb·...·]-1">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>In·the·Mnesia·tables,·the·two·key·columns·are·stored·as·a·tuple·with·two
335 elements.·Therefore,·the·arity·of·the·table·is·3.</p></section><h3·id="instrumentation-functions"·class="section-heading">335 elements.·Therefore,·the·arity·of·the·table·is·3.</p></section><h3·id="instrumentation-functions"·class="section-heading">
336 ··<a·href="#instrumentation-functions"·class="hover-link">336 ··<a·href="#instrumentation-functions"·class="hover-link">
337 ····<i·class="ri-link-m"·aria-hidden="true"></i>337 ····<i·class="ri-link-m"·aria-hidden="true"></i>
338 ··</a>338 ··</a>
339 ··<span·class="text">Instrumentation·Functions</span>339 ··<span·class="text">Instrumentation·Functions</span>
340 </h3>340 </h3>
341 <p>The·MIB·table·shown·in·the·previous·section·can·be·compiled·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="7947204178-1">(</span><span·class="s">&quot;EmpMIB&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7947204178-2">[</span><span·class="p"·data-group-id="7947204178-3">{</span><span·class="ss">db</span><span·class="[·...·truncated·by·diffoscope;·len:·212,·SHA:·f6633ae01ca4fe2b94f04bc98a26e4ee01d9dc8b2c90e77017468d0318ac9fd6·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·is·all·that·has·to·be·done!·Now·the·manager·can·read,·add,·and·modify341 <p>The·MIB·table·shown·in·the·previous·section·can·be·compiled·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="1068402327-1">(</span><span·class="s">&quot;EmpMIB&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1068402327-2">[</span><span·class="p"·data-group-id="1068402327-3">{</span><span·class="ss">db</span><span·class="[·...·truncated·by·diffoscope;·len:·212,·SHA:·f4751adcbd86a6b67d0193aae8bfc3dcb40121054eecb16487f1c1367256f91a·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·is·all·that·has·to·be·done!·Now·the·manager·can·read,·add,·and·modify
342 rows.·Also,·you·can·use·the·ordinary·Mnesia·API·to·access·the·table·from·your342 rows.·Also,·you·can·use·the·ordinary·Mnesia·API·to·access·the·table·from·your
343 programs.·The·only·explicit·action·is·to·create·the·Mnesia·table,·an·action·the343 programs.·The·only·explicit·action·is·to·create·the·Mnesia·table,·an·action·the
344 user·has·to·perform·in·order·to·create·the·required·table·schemas.</p><h3·id="adding-own-actions"·class="section-heading">344 user·has·to·perform·in·order·to·create·the·required·table·schemas.</p><h3·id="adding-own-actions"·class="section-heading">
345 ··<a·href="#adding-own-actions"·class="hover-link">345 ··<a·href="#adding-own-actions"·class="hover-link">
346 ····<i·class="ri-link-m"·aria-hidden="true"></i>346 ····<i·class="ri-link-m"·aria-hidden="true"></i>
347 ··</a>347 ··</a>
348 ··<span·class="text">Adding·Own·Actions</span>348 ··<span·class="text">Adding·Own·Actions</span>
349 </h3>349 </h3>
350 <p>It·is·often·necessary·to·take·some·specific·action·when·a·table·is·modified.350 <p>It·is·often·necessary·to·take·some·specific·action·when·a·table·is·modified.
351 This·is·accomplished·with·an·instrumentation·function.·It·executes·some·specific351 This·is·accomplished·with·an·instrumentation·function.·It·executes·some·specific
352 code·when·the·table·is·set,·and·passes·all·other·requests·down·to·the352 code·when·the·table·is·set,·and·passes·all·other·requests·down·to·the
353 pre-defined·function.</p><p>The·following·example·illustrates·this·idea:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">emp_table</span><span·class="p"·data-group-id="9950997533-1">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="9950997533-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">353 pre-defined·function.</p><p>The·following·example·illustrates·this·idea:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">emp_table</span><span·class="p"·data-group-id="6099298647-1">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6099298647-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
354 ····</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="9950997533-2">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="9950997533-2">)</span><span·class="p">,</span><span·class="w">354 ····</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="6099298647-2">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6099298647-2">)</span><span·class="p">,</span><span·class="w">
355 ····</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="9950997533-3">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·252,·SHA:·ba80b6e8e24a8d871cc69f64328593edd7342fad266034cb24c32b6962ddd9f6·...·]-3">)</span><span·class="p">;</span><span·class="w">355 ····</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="6099298647-3">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·252,·SHA:·1799fbe2ddad9393996da8596db9e60a120d46500bbf1fb7e5e420b7211ba732·...·]-3">)</span><span·class="p">;</span><span·class="w">
356 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="9950997533-5">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="9950997533-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">356 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="6099298647-5">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6099298647-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
357 ····</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="9950997533-6">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·250,·SHA:·01530455b4196fc6ceaf9fc34ebf3c41694a31a4e0e8a9144aacb28bdb00d127·...·]-6">)</span><span·class="p">.</span></code></pre><p>The·default·instrumentation·functions·are·defined·in·the·module·<code·class="inline">snmp_generic</code>.357 ····</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="6099298647-6">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·250,·SHA:·1c67b55e28073ffc29a54ad798115a73a06088313a01bc13b314a9c71ac255a0·...·]-6">)</span><span·class="p">.</span></code></pre><p>The·default·instrumentation·functions·are·defined·in·the·module·<code·class="inline">snmp_generic</code>.
358 Refer·to·the·Reference·Manual,·section·SNMP,·module·<code·class="inline">snmp_generic</code>·for·details.</p><h3·id="extending-the-mnesia-table"·class="section-heading">358 Refer·to·the·Reference·Manual,·section·SNMP,·module·<code·class="inline">snmp_generic</code>·for·details.</p><h3·id="extending-the-mnesia-table"·class="section-heading">
359 ··<a·href="#extending-the-mnesia-table"·class="hover-link">359 ··<a·href="#extending-the-mnesia-table"·class="hover-link">
360 ····<i·class="ri-link-m"·aria-hidden="true"></i>360 ····<i·class="ri-link-m"·aria-hidden="true"></i>
361 ··</a>361 ··</a>
362 ··<span·class="text">Extending·the·Mnesia·Table</span>362 ··<span·class="text">Extending·the·Mnesia·Table</span>
363 </h3>363 </h3>
364 <p>A·table·may·contain·columns·that·are·used·internally,·but·should·not·be·visible364 <p>A·table·may·contain·columns·that·are·used·internally,·but·should·not·be·visible
365 to·a·manager.·These·internal·columns·must·be·the·last·columns·in·the·table.·The365 to·a·manager.·These·internal·columns·must·be·the·last·columns·in·the·table.·The
366 <code·class="inline">set</code>·operation·will·not·work·with·this·arrangement,·because·there·are·columns366 <code·class="inline">set</code>·operation·will·not·work·with·this·arrangement,·because·there·are·columns
367 that·the·agent·does·not·know·about.·This·situation·is·handled·by·adding·values367 that·the·agent·does·not·know·about.·This·situation·is·handled·by·adding·values
368 for·the·internal·columns·in·the·<code·class="inline">set</code>·function.</p><p>To·illustrate·this,·suppose·we·extend·our·Mnesia·<code·class="inline">empTable</code>·with·one·internal368 for·the·internal·columns·in·the·<code·class="inline">set</code>·function.</p><p>To·illustrate·this,·suppose·we·extend·our·Mnesia·<code·class="inline">empTable</code>·with·one·internal
369 column.·We·create·it·as·before,·but·with·an·arity·of·4,·by·adding·another369 column.·We·create·it·as·before,·but·with·an·arity·of·4,·by·adding·another
370 attribute.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="0943795061-1">(</span><span·class="p"·data-group-id="0943795061-2">[</span><span·class="p"·data-group-id="0943795061-3">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">employees</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·41eb8aba108ae548191ae8d015251b77e0249793502db3b95ab1e606dc1f0ee4·...·]-3">}</span><span·class="p">,</span><span·class="w">370 attribute.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="7923558674-1">(</span><span·class="p"·data-group-id="7923558674-2">[</span><span·class="p"·data-group-id="7923558674-3">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">employees</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·81f4b45efbd7f4a6273196aac0387378ee781fb50c902a5e3f6fe22ac01ebdd6·...·]-3">}</span><span·class="p">,</span><span·class="w">
371 ·····················</span><span·class="p"·data-group-id="0943795061-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0943795061-5">[</span><span·class="p"·data-group-id="0943795061-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·2ec5e68a3835d2a4320b9a5d23eb301d22dc22058a0603e1270edf4fba6b2a1f·...·]-4">}</span><span·class="p">,</span><span·class="w">371 ·····················</span><span·class="p"·data-group-id="7923558674-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7923558674-5">[</span><span·class="p"·data-group-id="7923558674-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·6af526d82cf8bb9942efa31d8e2088666f8758210ddb9cc233a850c8655b92f3·...·]-4">}</span><span·class="p">,</span><span·class="w">
372 ·····················</span><span·class="p"·data-group-id="0943795061-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0943795061-9">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">telno</[·...·truncated·by·diffoscope;·len:·371,·SHA:·510358c1290fc5074a89aa824165c0c47ac006979075352737decaba28d7aee5·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·last·column·is·the·internal·column.·When·performing·a·<code·class="inline">set</code>·operation,·which372 ·····················</span><span·class="p"·data-group-id="7923558674-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7923558674-9">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">telno</[·...·truncated·by·diffoscope;·len:·371,·SHA:·ab1aa2fb7f5eae3a7cb78679da0090c6fad1a356aa918c3a55de19baf8b56e54·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·last·column·is·the·internal·column.·When·performing·a·<code·class="inline">set</code>·operation,·which
373 creates·a·row,·we·must·give·a·value·to·the·internal·column.·The·instrumentation373 creates·a·row,·we·must·give·a·value·to·the·internal·column.·The·instrumentation
374 functions·will·now·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="8296286750-1">(</span><span·class="ss">createAndGo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="8296286750-1">)</span><span·class="p">.</span><span·class="w">374 functions·will·now·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="6197036601-1">(</span><span·class="ss">createAndGo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="6197036601-1">)</span><span·class="p">.</span><span·class="w">
375 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="8296286750-2">(</span><span·class="ss">createAndWait</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="8296286750-2">)</span><span·class="p">.</span><span·class="w">375 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="6197036601-2">(</span><span·class="ss">createAndWait</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="6197036601-2">)</span><span·class="p">.</span><span·class="w">
  
376 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="8296286750-3">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8296286750-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">376 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="6197036601-3">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6197036601-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
377 ··</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="8296286750-4">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8296286750-4">)</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="6197036601-4">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6197036601-4">)</span><span·class="p">,</span><span·class="w">
378 ··</span><span·class="n">NewCols</span><span·class="w">·</span><span·class="o">=</span><span·class="w">378 ··</span><span·class="n">NewCols</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
379 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">is_row_created</span><span·class="p"·data-group-id="8296286750-5">(</span><span·class="ss">empTable</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8296286750-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">379 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">is_row_created</span><span·class="p"·data-group-id="6197036601-5">(</span><span·class="ss">empTable</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6197036601-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
380 ······</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Cols</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="8296286750-6">[</span><span·class="p"·data-group-id="8296286750-7">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;internal&quot;</span><span·class="p"·data-group-id="8296286750-7">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·1872b84d38deb6b68349abaeca9ec7ef1be54428ae739696a6e64b2e1b6c6d72·...·]-6">]</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·add·internal·column</span><span·class="w">380 ······</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Cols</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="6197036601-6">[</span><span·class="p"·data-group-id="6197036601-7">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;internal&quot;</span><span·class="p"·data-group-id="6197036601-7">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·2bf2ce7cc202d08ad1a3757b6c41f3e2a195f8c9da8e7439f46ad73d9da2c803·...·]-6">]</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·add·internal·column</span><span·class="w">
381 ······</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Cols</span><span·class="w">······················</span><span·class="c1">%·keep·original·cols</span><span·class="w">381 ······</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Cols</span><span·class="w">······················</span><span·class="c1">%·keep·original·cols</span><span·class="w">
382 ··</span><span·class="k">end</span><span·class="p">,</span><span·class="w">382 ··</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
383 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8296286750-8">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewCols</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·255,·SHA:·5d28fbaed73230e42f573ff897fe14c6a5f892bb6e48a4900488a5b47e173ef7·...·]-8">)</span><span·class="p">;</span><span·class="w">383 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="6197036601-8">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewCols</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·255,·SHA:·7394e36a5257f58dd8443a49ab7b266536271503e7861f0ac3d0ee2c96cea65c·...·]-8">)</span><span·class="p">;</span><span·class="w">
384 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="8296286750-10">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8296286750-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">384 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="6197036601-10">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6197036601-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
385 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8296286750-11">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·253,·SHA:·543dccb6669c9c072abc567e27088b91037b5da2710e90b1a0fa14de89ae3c68·...·]-11">)</span><span·class="p">.</span><span·class="w">385 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="6197036601-11">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·253,·SHA:·07765b368d2d094160efe5374650378a9390196f660a7390dbcf5b40015dc673·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
386 </span><span·class="nf">is_row_created</span><span·class="p"·data-group-id="8296286750-13">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8296286750-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">386 </span><span·class="nf">is_row_created</span><span·class="p"·data-group-id="6197036601-13">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6197036601-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
387 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">get_status_col</span><span·class="p"·data-group-id="8296286750-14">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8296286750-14">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">387 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">get_status_col</span><span·class="p"·data-group-id="6197036601-14">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="6197036601-14">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
388 ····</span><span·class="p"·data-group-id="8296286750-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">createAndGo</span><span·class="p"·data-group-id="8296286750-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">388 ····</span><span·class="p"·data-group-id="6197036601-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">createAndGo</span><span·class="p"·data-group-id="6197036601-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
389 ····</span><span·class="p"·data-group-id="8296286750-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">createAndWait</span><span·class="p"·data-group-id="8296286750-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">389 ····</span><span·class="p"·data-group-id="6197036601-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">createAndWait</span><span·class="p"·data-group-id="6197036601-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
390 ····</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">390 ····</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">
391 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>If·a·row·is·created,·we·always·set·the·internal·column·to·<code·class="inline">&quot;internal&quot;</code>.</p><h2·id="deviations-from-the-standard"·class="section-heading">391 ··</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>If·a·row·is·created,·we·always·set·the·internal·column·to·<code·class="inline">&quot;internal&quot;</code>.</p><h2·id="deviations-from-the-standard"·class="section-heading">
392 ··<a·href="#deviations-from-the-standard"·class="hover-link">392 ··<a·href="#deviations-from-the-standard"·class="hover-link">
393 ····<i·class="ri-link-m"·aria-hidden="true"></i>393 ····<i·class="ri-link-m"·aria-hidden="true"></i>
394 ··</a>394 ··</a>
395 ··<span·class="text">Deviations·from·the·Standard</span>395 ··<span·class="text">Deviations·from·the·Standard</span>
396 </h2>396 </h2>
20.7 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_agent_config_files.html
    
Offset 146, 27 lines modifiedOffset 146, 27 lines modified
146 ····<i·class="ri-link-m"·aria-hidden="true"></i>146 ····<i·class="ri-link-m"·aria-hidden="true"></i>
147 ··</a>147 ··</a>
148 ··<span·class="text">Agent·Information</span>148 ··<span·class="text">Agent·Information</span>
149 </h2>149 </h2>
150 <p>The·agent·information·should·be·stored·in·a·file·called·<code·class="inline">agent.conf</code>.</p><p>Each·entry·is·a·tuple·of·size·two:</p><p><code·class="inline">{AgentVariable,·Value}.</code></p><ul><li><code·class="inline">AgentVariable</code>·is·one·of·the·variables·in·SNMP-FRAMEWORK-MIB·or·one·of·the150 <p>The·agent·information·should·be·stored·in·a·file·called·<code·class="inline">agent.conf</code>.</p><p>Each·entry·is·a·tuple·of·size·two:</p><p><code·class="inline">{AgentVariable,·Value}.</code></p><ul><li><code·class="inline">AgentVariable</code>·is·one·of·the·variables·in·SNMP-FRAMEWORK-MIB·or·one·of·the
151 internal·variables·<code·class="inline">intAgentUDPPort</code>,·which·defines·which·UDP·port·the·agent151 internal·variables·<code·class="inline">intAgentUDPPort</code>,·which·defines·which·UDP·port·the·agent
152 listens·to,·or·<code·class="inline">intAgentTransports</code>,·which·defines·the·transport·domains·and152 listens·to,·or·<code·class="inline">intAgentTransports</code>,·which·defines·the·transport·domains·and
153 addresses·of·the·agent.</li><li><code·class="inline">Value</code>·is·the·value·for·the·variable.</li></ul><p>The·following·example·shows·an·<code·class="inline">agent.conf</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3273763122-1">{</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4000</span><span·class="p"·data-group-id="3273763122-1">}</span><span·class="p">.</span><span·class="w">153 addresses·of·the·agent.</li><li><code·class="inline">Value</code>·is·the·value·for·the·variable.</li></ul><p>The·following·example·shows·an·<code·class="inline">agent.conf</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4147043023-1">{</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4000</span><span·class="p"·data-group-id="4147043023-1">}</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="3273763122-2">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">154 </span><span·class="p"·data-group-id="4147043023-2">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">
155 ·</span><span·class="p"·data-group-id="3273763122-3">[</span><span·class="p"·data-group-id="3273763122-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3273763122-5">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·f71446987323e342fb6f7dda256f64505d7deb1c0db66fc5032ca8e0d650ce38·...·]-4">}</span><span·class="p">,</span><span·class="w">155 ·</span><span·class="p"·data-group-id="4147043023-3">[</span><span·class="p"·data-group-id="4147043023-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4147043023-5">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·9cd0832ddb09b60831320234ba1b8f05a2526151db31cccbbb29112a5a78aa76·...·]-4">}</span><span·class="p">,</span><span·class="w">
156 ··</span><span·class="p"·data-group-id="3273763122-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3273763122-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·481,·SHA:·19d391ba96ca20fc7c1a7e78fb9d8bc759ecf3c81251d952998e8c5b7d86ce72·...·]-2">}</span><span·class="p">.</span><span·class="w">156 ··</span><span·class="p"·data-group-id="4147043023-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4147043023-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·481,·SHA:·1fcba1f1c155cd8d0d9457a0124b1f070fe624afb25bd6dae49c59b010566f1b·...·]-2">}</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="3273763122-8">{</span><span·class="ss">snmpEngineID</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;mbj&#39;s·engine&quot;</span><span·class="p"·data-group-id="3273763122-8">}</span><span·class="p">.</span><span·class="w">157 </span><span·class="p"·data-group-id="4147043023-8">{</span><span·class="ss">snmpEngineID</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;mbj&#39;s·engine&quot;</span><span·class="p"·data-group-id="4147043023-8">}</span><span·class="p">.</span><span·class="w">
158 </span><span·class="p"·data-group-id="3273763122-9">{</span><span·class="ss">snmpEngineMaxMessageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">484</span><span·class="p"·data-group-id="3273763122-9">}</span><span·class="p">.</span></code></pre><p>These·are·the·supp[·...·truncated·by·diffoscope;·len:·443,·SHA:·b26528538414f88198b6a8da8680bb441dd6d8ec9f16c55a8849253598eaf4fb·...·]-1">}</span><span·class="p">.</span><span·class="w">·····················</span><span·class="c1">%·Mandatory</span><span·class="w">158 </span><span·class="p"·data-group-id="4147043023-9">{</span><span·class="ss">snmpEngineMaxMessageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">484</span><span·class="p"·data-group-id="4147043023-9">}</span><span·class="p">.</span></code></pre><p>These·are·the·supp[·...·truncated·by·diffoscope;·len:·443,·SHA:·1450562ee4e7e516da518e2743bce3e7705e2199b6ec069da711740cebef3be5·...·]-1">}</span><span·class="p">.</span><span·class="w">·····················</span><span·class="c1">%·Mandatory</span><span·class="w">
159 ······</span><span·class="p"·data-group-id="3673467199-3">{</span><span·class="ss">snmpEngineMaxMessageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">snmp_framework_mib</span><span·class="p">:</span><span·class="nf">max_message_size</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·115,·SHA:·5733d6c4cdc109888ff7aca301f4fdfce06fe6b1f02569c35f040999d80a436b·...·]-3">}</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Mandatory</span><span·class="w">159 ······</span><span·class="p"·data-group-id="9274965810-3">{</span><span·class="ss">snmpEngineMaxMessageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">snmp_framework_mib</span><span·class="p">:</span><span·class="nf">max_message_size</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·115,·SHA:·e74583bec8a87f92eff3f0ef06c798de7bf403b20524a2860a2c0d927dce2155·...·]-3">}</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Mandatory</span><span·class="w">
160 ······</span><span·class="p"·data-group-id="3673467199-5">{</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">··········</span><span·class="nc">inet</span><span·class="p">:</span><span·class="nf">port_number</span><span·class="p"·data-group-id="3673467199-6">(</span><span·class="p"·data-group-id="3673467199-6">)</span><span·class="p"·data-group-id="3673467199-5">}</span><span·class="p">.</span><span·class="w">······················</span><span·class="c1">%·Optional</span><span·class="w"> 
161 ······</span><span·class="p"·data-group-id="3673467199-7">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="3673467199-8">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">intAgentTr[·...·truncated·by·diffoscope;·len:·439,·SHA:·afde6d9ba5fc86e1375ed0139a304459c2d0bf8a62f0006166d4799387ae9c21·...·]160 ······</span><span·class="p"·data-group-id="9274965810-5">{</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">··········</span><span·class="nc">inet</span><span·class="p">:</span><span·class="nf">port_number</span><span·class="p"·data-group-id="9274965810-6">(</spa[·...·truncated·by·diffoscope;·len:·227,·SHA:·b188ee2470927831c10416efdf1a7738249d1842a198f851776991096cc926c3·...·]
 161 ······</span><span·class="p"·data-group-id="9274965810-7">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="9274965810-8">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">intAgentTransport</span><span·class="p"·data-group-id="9274965810-9">(</span><span·class="p"·data-group-id="9274965810-9">)</span><span·class="p"·data-group-id="9274965810-8">]</span><span·class="p"·data-group-id="9274965810-7">}</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·Mandatory</span></code></pre><p>If·a·&quot;traditional&quot;·transport·is·specified·(without·explicit·<code·class="inline">Kind</code>,·handling
162 both·requests·and·traps)·for·a·transport·domain,·its·<em>not</em>·possible·to·also162 both·requests·and·traps)·for·a·transport·domain,·its·<em>not</em>·possible·to·also
163 specify·a·transport·(for·that·domain)·with·a·specific·<code·class="inline">Kind</code>.·This·is·for163 specify·a·transport·(for·that·domain)·with·a·specific·<code·class="inline">Kind</code>.·This·is·for
164 example,·<em>not</em>·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p"·data-group-id="2804902274-1">[</span><span·class="p"·data-group-id="2804902274-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2804902274-3">{</span><span·class="p"·data-group-id="2804902274-4">{</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">213</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">24</span><span·class="p"·data-group-id="2804902274-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4000</span><span·class="p"·data-group-id="2804902274-3">}</span><span·class="p"·data-group-id="2804902274-2">}</span><span·class="p">,</span><span·class="w"> 
165 ··</span><span·class="p"·data-group-id="2804902274-5">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2804902274-6">{</span><span·class="p"·data-group-id="2804902274-7">{<[·...·truncated·by·diffoscope;·len:·665,·SHA:·953885f996f6b60ab68028f9d63389a717c05bc0166a0f13436813077e2cefa0·...·]164 example,·<em>not</em>·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p"·data-group-id="5906918634-1">[</span><span·class="p"·data-group-id="5906918634-2">{</span><span·class="ss">transportDomainUdpIpv4</spa[·...·truncated·by·diffoscope;·len:·609,·SHA:·539181cb57ecade07bd7a33a3c6adaa0902dcccae9a4ce05c1119c1842690c00·...·]
 165 ··</span><span·class="p"·data-group-id="5906918634-5">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5906918634-6">{</span><span·class="p"·data-group-id="5906918634-7">{</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">213</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">24</span><span·class="p"·data-group-id="5906918634-7">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4001</span><span·class="p"·data-group-id="5906918634-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">trap_sender</span><span·class="p"·data-group-id="5906918634-5">}</span><span·class="p"·data-group-id="5906918634-1">]</span><span·class="p">.</span></code></pre><p>Note·that·only·one·transport·per·kind·for·each·transport·domain·can·be
166 configured.</p><p><code·class="inline">PortInfo</code>·<code·class="inline">system</code>·is·used·to·indicate·that·the·'system'·should·choose·(the·way166 configured.</p><p><code·class="inline">PortInfo</code>·<code·class="inline">system</code>·is·used·to·indicate·that·the·'system'·should·choose·(the·way
167 port·number·'0'·(zero)·is·normally·used).·Port·info·'0'·(zero)·cannot·be·used167 port·number·'0'·(zero)·is·normally·used).·Port·info·'0'·(zero)·cannot·be·used
168 for·this,·since·it·is·(internally)·used·to·represent·the·'default'·port·number.</p><p>In·the·traditional·transport·entries,·when·the·<code·class="inline">Addr</code>·value·does·not·contain·a168 for·this,·since·it·is·(internally)·used·to·represent·the·'default'·port·number.</p><p>In·the·traditional·transport·entries,·when·the·<code·class="inline">Addr</code>·value·does·not·contain·a
169 port·number,·the·value·of·<code·class="inline">intAgentUDPPort</code>·is·used.</p><p>Note·that·the·(new)·extended·transport·entries·(including·<code·class="inline">Kind</code>·and·<code·class="inline">Opts</code>)169 port·number,·the·value·of·<code·class="inline">intAgentUDPPort</code>·is·used.</p><p>Note·that·the·(new)·extended·transport·entries·(including·<code·class="inline">Kind</code>·and·<code·class="inline">Opts</code>)
170 <em>must</em>·specify·port-info·as·they·ignore·any·value·specified·by170 <em>must</em>·specify·port-info·as·they·ignore·any·value·specified·by
171 <code·class="inline">intAgentUDPPort</code>.</p><p><code·class="inline">Opts</code>·is·the·same·as·for·the·<a·href="snmp_config.html#agent_ni_opts">net-if</a>·process171 <code·class="inline">intAgentUDPPort</code>.</p><p><code·class="inline">Opts</code>·is·the·same·as·for·the·<a·href="snmp_config.html#agent_ni_opts">net-if</a>·process
172 <em>and</em>·takes·precedence·(for·that·transport)·if·present.·The·point·is·that·each172 <em>and</em>·takes·precedence·(for·that·transport)·if·present.·The·point·is·that·each
Offset 184, 20 lines modifiedOffset 184, 20 lines modified
184 <code·class="inline">vacmContextTable</code>·in·the·SNMP-VIEW-BASED-ACM-MIB.</p><p>Each·entry·is·a·term:</p><p><code·class="inline">ContextName.</code></p><ul><li><code·class="inline">ContextName</code>·is·a·string.</li></ul><p><a·href=""·id="system_information"></a></p><h2·id="system-information"·class="section-heading">184 <code·class="inline">vacmContextTable</code>·in·the·SNMP-VIEW-BASED-ACM-MIB.</p><p>Each·entry·is·a·term:</p><p><code·class="inline">ContextName.</code></p><ul><li><code·class="inline">ContextName</code>·is·a·string.</li></ul><p><a·href=""·id="system_information"></a></p><h2·id="system-information"·class="section-heading">
185 ··<a·href="#system-information"·class="hover-link">185 ··<a·href="#system-information"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">System·Information</span>188 ··<span·class="text">System·Information</span>
189 </h2>189 </h2>
190 <p>The·system·information·should·be·stored·in·a·file·called·<code·class="inline">standard.conf</code>.</p><p>Each·entry·is·a·tuple·of·size·two:</p><p><code·class="inline">{SystemVariable,·Value}.</code></p><ul><li><code·class="inline">SystemVariable</code>·is·one·of·the·variables·in·the·system·group,·or190 <p>The·system·information·should·be·stored·in·a·file·called·<code·class="inline">standard.conf</code>.</p><p>Each·entry·is·a·tuple·of·size·two:</p><p><code·class="inline">{SystemVariable,·Value}.</code></p><ul><li><code·class="inline">SystemVariable</code>·is·one·of·the·variables·in·the·system·group,·or
191 <code·class="inline">snmpEnableAuthenTraps</code>.</li><li><code·class="inline">Value</code>·is·the·value·for·the·variable.</li></ul><p>The·following·example·shows·a·valid·<code·class="inline">standard.conf</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6505194964-1">{</span><span·class="ss">sysDescr</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Erlang·SNMP·agent&quot;</span><span·class="p"·data-group-id="6505194964-1">}</span><span·class="p">.</span><span·class="w">191 <code·class="inline">snmpEnableAuthenTraps</code>.</li><li><code·class="inline">Value</code>·is·the·value·for·the·variable.</li></ul><p>The·following·example·shows·a·valid·<code·class="inline">standard.conf</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1298696333-1">{</span><span·class="ss">sysDescr</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Erlang·SNMP·agent&quot;</span><span·class="p"·data-group-id="1298696333-1">}</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p"·data-group-id="6505194964-2">{</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6505194964-3">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·119,·SHA:·0d5efd1c0d6051f558fd8c3e3107d801c1f093cafd71cf4d2e60ecccb7599418·...·]-2">}</span><span·class="p">.</span><span·class="w">192 </span><span·class="p"·data-group-id="1298696333-2">{</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1298696333-3">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·119,·SHA:·5cfa9c2739a83fb21da2b82a2a3e4b61960b332d30cc6e4befb43def7b86f260·...·]-2">}</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p"·data-group-id="6505194964-4">{</span><span·class="ss">sysContact</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;(mbj,eklas)@erlang.ericsson.se&quot;</span><span·class="p"·data-group-id="6505194964-4">}</span><span·class="p">.</span><span·class="w">193 </span><span·class="p"·data-group-id="1298696333-4">{</span><span·class="ss">sysContact</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;(mbj,eklas)@erlang.ericsson.se&quot;</span><span·class="p"·data-group-id="1298696333-4">}</span><span·class="p">.</span><span·class="w">
194 </span><span·class="p"·data-group-id="6505194964-5">{</span><span·class="ss">sysName</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;test&quot;</span><span·class="p"·data-group-id="6505194964-5">}</span><span·class="p">.</span><span·class="w">194 </span><span·class="p"·data-group-id="1298696333-5">{</span><span·class="ss">sysName</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;test&quot;</span><span·class="p"·data-group-id="1298696333-5">}</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p"·data-group-id="6505194964-6">{</span><span·class="ss">sysServices</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">72</span><span·class="p"·data-group-id="6505194964-6">}</span><span·class="p">.</span><span·class="w">195 </span><span·class="p"·data-group-id="1298696333-6">{</span><span·class="ss">sysServices</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">72</span><span·class="p"·data-group-id="1298696333-6">}</span><span·class="p">.</span><span·class="w">
196 </span><span·class="p"·data-group-id="6505194964-7">{</span><span·class="ss">snmpEnableAuthenTraps</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">enabled</span><span·class="p"·data-group-id="6505194964-7">}</span><span·class="p">.</span></code></pre><p>A·value·must·be·provided·for·all·variables,·which·lack·default·values·in·the196 </span><span·class="p"·data-group-id="1298696333-7">{</span><span·class="ss">snmpEnableAuthenTraps</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">enabled</span><span·class="p"·data-group-id="1298696333-7">}</span><span·class="p">.</span></code></pre><p>A·value·must·be·provided·for·all·variables,·which·lack·default·values·in·the
197 MIB.</p><p><a·href=""·id="community"></a></p><h2·id="communities"·class="section-heading">197 MIB.</p><p><a·href=""·id="community"></a></p><h2·id="communities"·class="section-heading">
198 ··<a·href="#communities"·class="hover-link">198 ··<a·href="#communities"·class="hover-link">
199 ····<i·class="ri-link-m"·aria-hidden="true"></i>199 ····<i·class="ri-link-m"·aria-hidden="true"></i>
200 ··</a>200 ··</a>
201 ··<span·class="text">Communities</span>201 ··<span·class="text">Communities</span>
202 </h2>202 </h2>
203 <p>The·community·information·should·be·stored·in·a·file·called·<code·class="inline">community.conf</code>.·It203 <p>The·community·information·should·be·stored·in·a·file·called·<code·class="inline">community.conf</code>.·It
6.86 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_agent_funct_descr.html
    
Offset 304, 15 lines modifiedOffset 304, 15 lines modified
304 This·MIB·can·be·used·with·any·SNMP·version.</li><li>SNMP-COMMUNITY-MIB,·which·defines·managed·objects·for·coexistence·of·SNMPv1304 This·MIB·can·be·used·with·any·SNMP·version.</li><li>SNMP-COMMUNITY-MIB,·which·defines·managed·objects·for·coexistence·of·SNMPv1
305 and·SNMPv2c·with·SNMPv3.·This·MIB·is·only·useful·if·SNMPv1·or·SNMPv2c·is·used,305 and·SNMPv2c·with·SNMPv3.·This·MIB·is·only·useful·if·SNMPv1·or·SNMPv2c·is·used,
306 possibly·in·combination·with·SNMPv3.</li><li>SNMP-USER-BASED-SM-MIB,·which·defines·managed·objects·for·authentication·and306 possibly·in·combination·with·SNMPv3.</li><li>SNMP-USER-BASED-SM-MIB,·which·defines·managed·objects·for·authentication·and
307 privacy.·This·MIB·is·only·useful·with·SNMPv3.</li></ul><p>All·of·these·MIBs·should·be·loaded·into·the·Master·Agent.·Once·loaded,·these307 privacy.·This·MIB·is·only·useful·with·SNMPv3.</li></ul><p>All·of·these·MIBs·should·be·loaded·into·the·Master·Agent.·Once·loaded,·these
308 MIBs·are·always·available·in·all·contexts.</p><p>The·ASN.1·code,·the·Erlang·source·code,·and·the·generated·<code·class="inline">.hrl</code>·files·for·them308 MIBs·are·always·available·in·all·contexts.</p><p>The·ASN.1·code,·the·Erlang·source·code,·and·the·generated·<code·class="inline">.hrl</code>·files·for·them
309 are·provided·in·the·distribution·and·are·placed·in·the·directories·<code·class="inline">mibs</code>,309 are·provided·in·the·distribution·and·are·placed·in·the·directories·<code·class="inline">mibs</code>,
310 <code·class="inline">src</code>,·and·<code·class="inline">include</code>,·respectively,·in·the·<code·class="inline">snmp</code>·application.</p><p>The·<code·class="inline">.hrl</code>·files·are·generated·with·<a·href="snmpc.html#mib_to_hrl/1"><code·class="inline">snmpc:mib_to_hrl/1</code></a>.·Include·these·files·in310 <code·class="inline">src</code>,·and·<code·class="inline">include</code>,·respectively,·in·the·<code·class="inline">snmp</code>·application.</p><p>The·<code·class="inline">.hrl</code>·files·are·generated·with·<a·href="snmpc.html#mib_to_hrl/1"><code·class="inline">snmpc:mib_to_hrl/1</code></a>.·Include·these·files·in
311 your·code·as·in·the·following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0572780110-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="0572780110-1">)</span><span·class="p">.</span></code></pre><p>The·initial·values·for·the·managed·objects·defined·in·these·tables,·are·read·at311 your·code·as·in·the·following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8002145156-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="8002145156-1">)</span><span·class="p">.</span></code></pre><p>The·initial·values·for·the·managed·objects·defined·in·these·tables,·are·read·at
312 start-up·from·a·set·of·configuration·files.·These·are·described·in312 start-up·from·a·set·of·configuration·files.·These·are·described·in
313 <a·href="snmp_config.html">Configuration·Files</a>.</p><h3·id="standard-mib-and-snmpv2-mib"·class="section-heading">313 <a·href="snmp_config.html">Configuration·Files</a>.</p><h3·id="standard-mib-and-snmpv2-mib"·class="section-heading">
314 ··<a·href="#standard-mib-and-snmpv2-mib"·class="hover-link">314 ··<a·href="#standard-mib-and-snmpv2-mib"·class="hover-link">
315 ····<i·class="ri-link-m"·aria-hidden="true"></i>315 ····<i·class="ri-link-m"·aria-hidden="true"></i>
316 ··</a>316 ··</a>
317 ··<span·class="text">STANDARD-MIB·and·SNMPv2-MIB</span>317 ··<span·class="text">STANDARD-MIB·and·SNMPv2-MIB</span>
318 </h3>318 </h3>
Offset 465, 17 lines modifiedOffset 465, 17 lines modified
465 ····<i·class="ri-link-m"·aria-hidden="true"></i>465 ····<i·class="ri-link-m"·aria-hidden="true"></i>
466 ··</a>466 ··</a>
467 ··<span·class="text">Notifications</span>467 ··<span·class="text">Notifications</span>
468 </h2>468 </h2>
469 <p>Notifications·are·defined·in·SMIv1·with·the·TRAP-TYPE·macro·in·the·definition·of469 <p>Notifications·are·defined·in·SMIv1·with·the·TRAP-TYPE·macro·in·the·definition·of
470 an·MIB·(see·RFC1215).·The·corresponding·macro·in·SMIv2·is·NOTIFICATION-TYPE.470 an·MIB·(see·RFC1215).·The·corresponding·macro·in·SMIv2·is·NOTIFICATION-TYPE.
471 When·an·application·decides·to·send·a·notification,·it·calls·one·of·the471 When·an·application·decides·to·send·a·notification,·it·calls·one·of·the
472 following·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">send_notification</span><span·class="p"·data-group-id="6206245760-1">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Notification</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Receiver</span><span·class="w">472 following·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">send_notification</span><span·class="p"·data-group-id="8214986891-1">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Notification</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Receiver</span><span·class="w">
473 ·······················</span><span·class="p"·data-group-id="6206245760-2">[</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NotifyName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContextName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Varbind[·...·truncated·by·diffoscope;·len:·102,·SHA:·8c9e9093433e973554d89a29fc23dd85428030578ca285f50d992d1ead22031f·...·]-1">)</span><span·class="w">473 ·······················</span><span·class="p"·data-group-id="8214986891-2">[</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NotifyName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContextName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Varbind[·...·truncated·by·diffoscope;·len:·102,·SHA:·c03b2b6225b2dfd0c838c17f52a60d23d0435e1da8c262569a5afee84ffaa8e3·...·]-1">)</span><span·class="w">
474 </span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">send_trap</span><span·class="p"·data-group-id="6206245760-3">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Notification</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Community</span><span·class="w">·</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·286,·SHA:·8a5865b973f308becddddfd6d55e1e2985d5618652761b30ea48a277f49f45b7·...·]-3">)</span></code></pre><p>providing·the·registered·name·or·process·identifier·of·the·agent·where·the·MIB,474 </span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">send_trap</span><span·class="p"·data-group-id="8214986891-3">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Notification</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Community</span><span·class="w">·</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·286,·SHA:·406ad7bee67636573d853354f79585999a0ea95cb894c54e093534318cbf3fb3·...·]-3">)</span></code></pre><p>providing·the·registered·name·or·process·identifier·of·the·agent·where·the·MIB,
475 which·defines·the·notification·is·loaded·and·the·symbolic·name·of·the475 which·defines·the·notification·is·loaded·and·the·symbolic·name·of·the
476 notification.</p><p>If·the·<code·class="inline">send_notification/3,4</code>·function·is·used,·all·management·targets·are476 notification.</p><p>If·the·<code·class="inline">send_notification/3,4</code>·function·is·used,·all·management·targets·are
477 selected,·as·defined·in·RFC2273.·The·<code·class="inline">Receiver</code>·parameter·defines·where·the477 selected,·as·defined·in·RFC2273.·The·<code·class="inline">Receiver</code>·parameter·defines·where·the
478 agent·should·send·information·about·the·delivery·of·inform·requests.</p><p>If·the·<code·class="inline">send_notification/5</code>·function·is·used,·an·<code·class="inline">NotifyName</code>·must·be·provided.478 agent·should·send·information·about·the·delivery·of·inform·requests.</p><p>If·the·<code·class="inline">send_notification/5</code>·function·is·used,·an·<code·class="inline">NotifyName</code>·must·be·provided.
479 This·parameter·is·used·as·an·index·in·the·<code·class="inline">snmpNotifyTable</code>,·and·the·management479 This·parameter·is·used·as·an·index·in·the·<code·class="inline">snmpNotifyTable</code>,·and·the·management
480 targets·defined·by·that·single·entry·is·used.</p><p>The·<code·class="inline">send_notification/6</code>·function·is·the·most·general·version·of·the·function.480 targets·defined·by·that·single·entry·is·used.</p><p>The·<code·class="inline">send_notification/6</code>·function·is·the·most·general·version·of·the·function.
481 A·<code·class="inline">ContextName</code>·must·be·specified,·from·which·the·notification·will·be·sent.·If481 A·<code·class="inline">ContextName</code>·must·be·specified,·from·which·the·notification·will·be·sent.·If
43.6 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_app.html
    
Offset 136, 59 lines modifiedOffset 136, 59 lines modified
136 ··<a·href="#configuration"·class="hover-link">136 ··<a·href="#configuration"·class="hover-link">
137 ····<i·class="ri-link-m"·aria-hidden="true"></i>137 ····<i·class="ri-link-m"·aria-hidden="true"></i>
138 ··</a>138 ··</a>
139 ··<span·class="text">Configuration</span>139 ··<span·class="text">Configuration</span>
140 </h2>140 </h2>
141 <p>The·following·configuration·parameters·are·defined·for·the·SNMP·application.141 <p>The·following·configuration·parameters·are·defined·for·the·SNMP·application.
142 Refer·to·application(3)·for·more·information·about·configuration·parameters.</p><p>The·snmp·part·of·the·config·file·specifying·the·configuration·parameters·is142 Refer·to·application(3)·for·more·information·about·configuration·parameters.</p><p>The·snmp·part·of·the·config·file·specifying·the·configuration·parameters·is
143 basically·the·following·tuple:</p><pre><code·class="text">······{snmp,·snmp_components_config()}</code></pre><p>A·minimal·config·file·for·starting·a·node·with·both·a·manager·and·an·agent:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="6902695471-1">[</span><span·class="p"·data-group-id="6902695471-2">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">143 basically·the·following·tuple:</p><pre><code·class="text">······{snmp,·snmp_components_config()}</code></pre><p>A·minimal·config·file·for·starting·a·node·with·both·a·manager·and·an·agent:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="6603480300-1">[</span><span·class="p"·data-group-id="6603480300-2">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">
144 ········</span><span·class="p"·data-group-id="6902695471-3">[</span><span·class="p"·data-group-id="6902695471-4">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6902695471-5">[</span><span·class="p"·data-group-id="6902695471-6">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/agent/db&quot;</span><span·class="p"·data-group-id="6902695471-6">}</span><span·class="p">,</span><span·class="w"> 
145 ··················</span><span·class="p"·data-group-id="6902695471-7">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6902695471-8">[</span><span·class="p"·data-group-id="6902695471-9">{</span><s[·...·truncated·by·diffoscope;·len:·383,·SHA:·7a675976e51445a64d1167335750613005331c2025379be878df8ee2387c0728·...·]">}</span><span·class="p">,</span><span·class="w">144 ········</span><span·class="p"·data-group-id="6603480300-3">[</span><span·class="p"·data-group-id="6603480300-4">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6603480300-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·214,·SHA:·0a45d94d768a3e1d950946a6ad15cef257526f3013a1560ae8ffc551c417a6b4·...·]">}</span><span·class="p">,</span><span·class="w">
 145 ··················</span><span·class="p"·data-group-id="6603480300-7">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6603480300-8">[</span><span·class="p"·data-group-id="6603480300-9">{</span><span·class="ss">dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/agent/conf&quot;</span><span·class="p"·data-group-id="6603480300-9">}</span><span·class="p"·data-group-id="6603480300-8">]</span><span·class="p"·data-group-id="6603480300-7">}</span><span·class="p"·data-group-id="6603480300-5">]</span><span·class="p"·data-group-id="6603480300-4">}</span><span·class="p">,</span><span·class="w">
146 ·········</span><span·class="p"·data-group-id="6902695471-10">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6902695471-11">[</span><span·class="p"·data-group-id="6902695471-12">{</span><span·class="ss">config</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·312,·SHA:·a80183fb30cf4e27b0b92eb66055918b53c0bd52e96650fb5648f090672eac56·...·]-14">}</span><span·class="p">,</span><span·class="w">146 ·········</span><span·class="p"·data-group-id="6603480300-10">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6603480300-11">[</span><span·class="p"·data-group-id="6603480300-12">{</span><span·class="ss">config</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·312,·SHA:·f1a4e94718358be0ec873b980eb7975807847e58fe5d86b474dcfe670c946e2d·...·]-14">}</span><span·class="p">,</span><span·class="w">
147 ······························</span><span·class="p"·data-group-id="6902695471-15">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/manager/db&quot;</span><span·class="p"·data-group-id="6902695471-15">}</span><span·class="p"·data-group-id="6902695471-13">][·...·truncated·by·diffoscope;·len:·263,·SHA:·b3c56567cc7153a60577bb824e41c108a10bde9b81e81c9687e28d74560d589b·...·]-2">}</span><span·class="w">147 ······························</span><span·class="p"·data-group-id="6603480300-15">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/manager/db&quot;</span><span·class="p"·data-group-id="6603480300-15">}</span><span·class="p"·data-group-id="6603480300-13">][·...·truncated·by·diffoscope;·len:·263,·SHA:·3c67c4e67ce1f81608c52a8d3552da4a8d2e3f1061aca06188bd0e1214bc9c92·...·]-2">}</span><span·class="w">
148 ········</span><span·class="p"·data-group-id="6902695471-1">]</span><span·class="w">148 ········</span><span·class="p"·data-group-id="6603480300-1">]</span><span·class="w">
149 ·······</span><span·class="p">}</span><span·class="w">149 ·······</span><span·class="p">}</span><span·class="w">
150 ······</span><span·class="p">]</span><span·class="p">.</span></code></pre><p>Each·snmp·component·has·its·own·set·of·configuration·parameters,·even·though150 ······</span><span·class="p">]</span><span·class="p">.</span></code></pre><p>Each·snmp·component·has·its·own·set·of·configuration·parameters,·even·though
151 some·of·the·types·are·common·to·both·components.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nf">snmp_components_config</span><span·class="p"·data-group-id="4206607276-1">(</span><span·class="p"·data-group-id="4206607276-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4206607276-2">[</span><span·class="nf">snmp_component_config</span><span·c[·...·truncated·by·diffoscope;·len:·140,·SHA:·e825fcf7125a90389258689548a15c1596e3ccc688f0f4d190ddfd3850bc954f·...·]-2">]</span><span·class="w">151 some·of·the·types·are·common·to·both·components.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nf">snmp_components_config</span><span·class="p"·data-group-id="8349064897-1">(</span><span·class="p"·data-group-id="8349064897-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8349064897-2">[</span><span·class="nf">snmp_component_config</span><span·c[·...·truncated·by·diffoscope;·len:·140,·SHA:·238273175938eb4901e764d27c4813183fa3e8c577c69dce9791f3d1e77a9b09·...·]-2">]</span><span·class="w">
152 ······</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="4206607276-4">(</span><span·class="p"·data-group-id="4206607276-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4206607276-5">{</span><span·class="ss">agent</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·611,·SHA:·766a2d5fa71f8d44e21a00fea5ce87539f95ac85dc4b5a757a19e185aedc4ecc·...·]-7">}</span><span·class="w">152 ······</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="8349064897-4">(</span><span·class="p"·data-group-id="8349064897-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8349064897-5">{</span><span·class="ss">agent</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·611,·SHA:·2f0b04722764c558a7bbc19e95d753432abfa1c876019781b0a7fcc6d8ed6310·...·]-7">}</span><span·class="w">
153 ······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="4206607276-9">(</span><span·class="p"·data-group-id="4206607276-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4206607276-10">[</span><span·class="nf">agent_option</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·c8a2bee81d60c036d8860c2d7e48bda4ce177febc5f2780364556b51cf9f5511·...·]-10">]</span><span·class="w">153 ······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="8349064897-9">(</span><span·class="p"·data-group-id="8349064897-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8349064897-10">[</span><span·class="nf">agent_option</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·3c510b4fc717dfc5e694fc1dd766c26c6aabe19f91550590c93d8337c0142117·...·]-10">]</span><span·class="w">
154 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="4206607276-12">(</span><span·class="p"·data-group-id="4206607276-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4206607276-13">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·220,·SHA:·4152db1a9e7e5836699ac78577429723e5bb54b9758d7b33939febf5d1551c32·...·]-13">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">154 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="8349064897-12">(</span><span·class="p"·data-group-id="8349064897-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8349064897-13">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·220,·SHA:·12d67a966bd180546f1a6e9802cf1ba8b68d688b2f23c35b083c950cde88c0c8·...·]-13">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
155 ·······················</span><span·class="p"·data-group-id="4206607276-15">{</span><span·class="ss">agent_type</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">agent_type</span><span·class="p"·data-group-id="4206607276-16">(</span><span·class="p"·data-group-id="4206607276-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·495bd8c3defa97f67403e9e97f317cdadb85369da1f8afa1783060165712587d·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">155 ·······················</span><span·class="p"·data-group-id="8349064897-15">{</span><span·class="ss">agent_type</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">agent_type</span><span·class="p"·data-group-id="8349064897-16">(</span><span·class="p"·data-group-id="8349064897-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d35f1adf48e2d7acc77511c93b447237f07f4aa0f66fa3a0779b706cddaa9a77·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
156 ·······················</span><span·class="p"·data-group-id="4206607276-17">{</span><span·class="ss">agent_verbosity</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">verbosity</span><span·class="p"·data-group-id="4206607276-18">(</span><span·class="p"·data-group-id="4206607276-18">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·9c001973fbdcd2275ab25c0f0864f876cc5bf0990ef00e9608fad9d964bfaabc·...·]-17">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">156 ·······················</span><span·class="p"·data-group-id="8349064897-17">{</span><span·class="ss">agent_verbosity</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">verbosity</span><span·class="p"·data-group-id="8349064897-18">(</span><span·class="p"·data-group-id="8349064897-18">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·972f13c6cad717d1f13a1b53d9a334eebfb5e3890d03bf3bf7bd5505a2395683·...·]-17">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
157 ·······················</span><span·class="p"·data-group-id="4206607276-19">{</span><span·class="ss">discovery</span><span·class="p">,</span><span·class="w">········</span><span·class="nf">agent_discovery</span><span·class="p"·data-group-id="4206607276-20">(</span><span·class="p"·data-group-id="4206607276-20">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·b3c053b7da866532d9f0b696d84248fc29f8ba6274ed9838f98782ad2205e334·...·]-19">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">157 ·······················</span><span·class="p"·data-group-id="8349064897-19">{</span><span·class="ss">discovery</span><span·class="p">,</span><span·class="w">········</span><span·class="nf">agent_discovery</span><span·class="p"·data-group-id="8349064897-20">(</span><span·class="p"·data-group-id="8349064897-20">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·15ab9d75a61b855becb49cdf0c52efe6c415cf9e845e1ca68dbebf719e332355·...·]-19">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
158 ·······················</span><span·class="p"·data-group-id="4206607276-21">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">versions</span><span·class="p"·data-group-id="4206607276-22">(</span><span·class="p"·data-group-id="4206607276-22">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·8bde4a61a43d2e445a7d577124bc78e6004aeba86cdfcf5c5e4f67427a70e61a·...·]-21">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">158 ·······················</span><span·class="p"·data-group-id="8349064897-21">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">versions</span><span·class="p"·data-group-id="8349064897-22">(</span><span·class="p"·data-group-id="8349064897-22">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·ccb8fa3a4527000262162e783bb2fbfaa306c891cb63ad88a78571f93b4c8441·...·]-21">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
159 ·······················</span><span·class="p"·data-group-id="4206607276-23">{</span><span·class="ss">gb_max_vbs</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">gb_max_vbs</span><span·class="p"·data-group-id="4206607276-24">(</span><span·class="p"·data-group-id="4206607276-24">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·495bd8c3defa97f67403e9e97f317cdadb85369da1f8afa1783060165712587d·...·]-23">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">159 ·······················</span><span·class="p"·data-group-id="8349064897-23">{</span><span·class="ss">gb_max_vbs</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">gb_max_vbs</span><span·class="p"·data-group-id="8349064897-24">(</span><span·class="p"·data-group-id="8349064897-24">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d35f1adf48e2d7acc77511c93b447237f07f4aa0f66fa3a0779b706cddaa9a77·...·]-23">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
160 ·······················</span><span·class="p"·data-group-id="4206607276-25">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">priority</span><span·class="p"·data-group-id="4206607276-26">(</span><span·class="p"·data-group-id="4206607276-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·8bde4a61a43d2e445a7d577124bc78e6004aeba86cdfcf5c5e4f67427a70e61a·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">160 ·······················</span><span·class="p"·data-group-id="8349064897-25">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">priority</span><span·class="p"·data-group-id="8349064897-26">(</span><span·class="p"·data-group-id="8349064897-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·ccb8fa3a4527000262162e783bb2fbfaa306c891cb63ad88a78571f93b4c8441·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
161 ·······················</span><span·class="p"·data-group-id="4206607276-27">{</span><span·class="ss">multi_threaded</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">multi_threaded</span><span·class="p"·data-group-id="4206607276-28">(</span><span·class="p"·data-group-id="4206607276-28">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·2f228a13fa115f669d007f9bff1cc04323054abfbe93be48b2cf056a3ecca82c·...·]-27">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">161 ·······················</span><span·class="p"·data-group-id="8349064897-27">{</span><span·class="ss">multi_threaded</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">multi_threaded</span><span·class="p"·data-group-id="8349064897-28">(</span><span·class="p"·data-group-id="8349064897-28">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·0f9ae43cede8806a0c467dc83bf23880225ead6d9789914414ba92c59cfa0063·...·]-27">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
162 ·······················</span><span·class="p"·data-group-id="4206607276-29">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">db_dir</span><span·class="p"·data-group-id="4206607276-30">(</span><span·class="p"·data-group-id="4206607276-30">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·5d75db6bd73903a2b3a301915f2b183abad2a9588b9d53afcf42eece9ef02d2d·...·]-29">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">162 ·······················</span><span·class="p"·data-group-id="8349064897-29">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">db_dir</span><span·class="p"·data-group-id="8349064897-30">(</span><span·class="p"·data-group-id="8349064897-30">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·21893a7367d0e5bd48764c11f64d57a2a7df2a8693c7324cf70d901f63b17d40·...·]-29">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">
163 ·······················</span><span·class="p"·data-group-id="4206607276-31">{</span><span·class="ss">db_init_error</span><span·class="p">,</span><span·class="w">····</span><span·class="nf">db_init_error</span><span·class="p"·data-group-id="4206607276-32">(</span><span·class="p"·data-group-id="4206607276-32">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·c639e765d8c1d16d4ab9d114f186177a39c2e913595fccc921be076f26053b5d·...·]-31">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">163 ·······················</span><span·class="p"·data-group-id="8349064897-31">{</span><span·class="ss">db_init_error</span><span·class="p">,</span><span·class="w">····</span><span·class="nf">db_init_error</span><span·class="p"·data-group-id="8349064897-32">(</span><span·class="p"·data-group-id="8349064897-32">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·4d7c781cc987be0d4ee971667bf9eaa90a46c5840448747b07bec1c5f924fb35·...·]-31">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
164 ·······················</span><span·class="p"·data-group-id="4206607276-33">{</span><span·class="ss">local_db</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">local_db</span><span·class="p"·data-group-id="4206607276-34">(</span><span·class="p"·data-group-id="4206607276-34">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·8bde4a61a43d2e445a7d577124bc78e6004aeba86cdfcf5c5e4f67427a70e61a·...·]-33">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">164 ·······················</span><span·class="p"·data-group-id="8349064897-33">{</span><span·class="ss">local_db</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">local_db</span><span·class="p"·data-group-id="8349064897-34">(</span><span·class="p"·data-group-id="8349064897-34">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·ccb8fa3a4527000262162e783bb2fbfaa306c891cb63ad88a78571f93b4c8441·...·]-33">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
165 ·······················</span><span·class="p"·data-group-id="4206607276-35">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_net_if</span><span·class="p"·data-group-id="4206607276-36">(</span><span·class="p"·data-group-id="4206607276-36">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·c38c6dd38f4d668360cddd5afb2f225f21f6b37887bcc9c3c01ad78b729352ab·...·]-35">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">165 ·······················</span><span·class="p"·data-group-id="8349064897-35">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_net_if</span><span·class="p"·data-group-id="8349064897-36">(</span><span·class="p"·data-group-id="8349064897-36">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·72be02d8f7587a94a6cb59530276832c25aa34c24dcd0a736656811c0dae567c·...·]-35">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
166 ·······················</span><span·class="p"·data-group-id="4206607276-37">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">mibs</span><span·class="p"·data-group-id="4206607276-38">(</span><span·class="p"·data-group-id="4206607276-38">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·d5b362c1829e30ead035ace8b892c67b61505d8a907cce7dffad4a16331ffebf·...·]-37">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">166 ·······················</span><span·class="p"·data-group-id="8349064897-37">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">mibs</span><span·class="p"·data-group-id="8349064897-38">(</span><span·class="p"·data-group-id="8349064897-38">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·649776a3936858559823475ea019de0ee17511ea0af57e4fd3aaa2735e73d8e1·...·]-37">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">
167 ·······················</span><span·class="p"·data-group-id="4206607276-39">{</span><span·class="ss">mib_storage</span><span·class="p">,</span><span·class="w">······</span><span·class="nf">mib_storage</span><span·class="p"·data-group-id="4206607276-40">(</span><span·class="p"·data-group-id="4206607276-40">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·3a0a53e3987848c8ca1c198dfd87310a6a891851562414b20069bf21e8044479·...·]-39">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">167 ·······················</span><span·class="p"·data-group-id="8349064897-39">{</span><span·class="ss">mib_storage</span><span·class="p">,</span><span·class="w">······</span><span·class="nf">mib_storage</span><span·class="p"·data-group-id="8349064897-40">(</span><span·class="p"·data-group-id="8349064897-40">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·516045a688f306237a1c98e0f5799e1b80df8b8c3abae728c6e614b64e962258·...·]-39">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
168 ·······················</span><span·class="p"·data-group-id="4206607276-41">{</span><span·class="ss">mib_server</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">mib_server</span><span·class="p"·data-group-id="4206607276-42">(</span><span·class="p"·data-group-id="4206607276-42">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·495bd8c3defa97f67403e9e97f317cdadb85369da1f8afa1783060165712587d·...·]-41">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">168 ·······················</span><span·class="p"·data-group-id="8349064897-41">{</span><span·class="ss">mib_server</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">mib_server</span><span·class="p"·data-group-id="8349064897-42">(</span><span·class="p"·data-group-id="8349064897-42">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d35f1adf48e2d7acc77511c93b447237f07f4aa0f66fa3a0779b706cddaa9a77·...·]-41">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
169 ·······················</span><span·class="p"·data-group-id="4206607276-43">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="4206607276-44">(</span><span·class="p"·data-group-id="4206607276-44">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·b3c053b7da866532d9f0b696d84248fc29f8ba6274ed9838f98782ad2205e334·...·]-43">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">169 ·······················</span><span·class="p"·data-group-id="8349064897-43">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="8349064897-44">(</span><span·class="p"·data-group-id="8349064897-44">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·15ab9d75a61b855becb49cdf0c52efe6c415cf9e845e1ca68dbebf719e332355·...·]-43">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
170 ·······················</span><span·class="p"·data-group-id="4206607276-45">{</span><span·class="ss">error_report_mod</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">error_report_mod</span><span·class="p"·data-group-id="4206607276-46">(</span><span·class="p"·data-group-id="4206607276-46">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·b10bc4b5c1abce1d7e0aba1fcbf0ac12700c443ee337fd03929c3ee12e279b2d·...·]-45">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">170 ·······················</span><span·class="p"·data-group-id="8349064897-45">{</span><span·class="ss">error_report_mod</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">error_report_mod</span><span·class="p"·data-group-id="8349064897-46">(</span><span·class="p"·data-group-id="8349064897-46">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·f8d79d7a27c8dcb00d8f1a326e706ec8621158a16d53cb2a75a1b43ffa7534e5·...·]-45">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
171 ·······················</span><span·class="p"·data-group-id="4206607276-47">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">note_store</span><span·class="p"·data-group-id="4206607276-48">(</span><span·class="p"·data-group-id="4206607276-48">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·495bd8c3defa97f67403e9e97f317cdadb85369da1f8afa1783060165712587d·...·]-47">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">171 ·······················</span><span·class="p"·data-group-id="8349064897-47">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">note_store</span><span·class="p"·data-group-id="8349064897-48">(</span><span·class="p"·data-group-id="8349064897-48">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d35f1adf48e2d7acc77511c93b447237f07f4aa0f66fa3a0779b706cddaa9a77·...·]-47">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
172 ·······················</span><span·class="p"·data-group-id="4206607276-49">{</span><span·class="ss">symbolic_store</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">symbolic_store</span><span·class="p"·data-group-id="4206607276-50">(</span><span·class="p"·data-group-id="4206607276-50">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·2f228a13fa115f669d007f9bff1cc04323054abfbe93be48b2cf056a3ecca82c·...·]-49">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">172 ·······················</span><span·class="p"·data-group-id="8349064897-49">{</span><span·class="ss">symbolic_store</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">symbolic_store</span><span·class="p"·data-group-id="8349064897-50">(</span><span·class="p"·data-group-id="8349064897-50">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·0f9ae43cede8806a0c467dc83bf23880225ead6d9789914414ba92c59cfa0063·...·]-49">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
173 ·······················</span><span·class="p"·data-group-id="4206607276-51">{</span><span·class="ss">target_cache</span><span·class="p">,</span><span·class="w">·····</span><span·class="nf">target_cache</span><span·class="p"·data-group-id="4206607276-52">(</span><span·class="p"·data-group-id="4206607276-52">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·c38c6dd38f4d668360cddd5afb2f225f21f6b37887bcc9c3c01ad78b729352ab·...·]-51">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">173 ·······················</span><span·class="p"·data-group-id="8349064897-51">{</span><span·class="ss">target_cache</span><span·class="p">,</span><span·class="w">·····</span><span·class="nf">target_cache</span><span·class="p"·data-group-id="8349064897-52">(</span><span·class="p"·data-group-id="8349064897-52">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·72be02d8f7587a94a6cb59530276832c25aa34c24dcd0a736656811c0dae567c·...·]-51">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
174 ·······················</span><span·class="p"·data-group-id="4206607276-53">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_config</span><span·class="p"·data-group-id="4206607276-54">(</span><span·class="p"·data-group-id="4206607276-54">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·c38c6dd38f4d668360cddd5afb2f225f21f6b37887bcc9c3c01ad78b729352ab·...·]-53">}</span><span·class="w">174 ·······················</span><span·class="p"·data-group-id="8349064897-53">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_config</span><span·class="p"·data-group-id="8349064897-54">(</span><span·class="p"·data-group-id="8349064897-54">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·72be02d8f7587a94a6cb59530276832c25aa34c24dcd0a736656811c0dae567c·...·]-53">}</span><span·class="w">
175 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="4206607276-55">(</span><span·class="p"·data-group-id="4206607276-55">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4206607276-56">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="4206607276-57">(</span><span·class="p"·data-group-id="4206607276-57">)</span><span·class="p"·data-group-id="4206607276-56">]</span><span·class="w"> 
176 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="4206607276-58">(</span><span·class="p"·data-group-id="4206607276-58">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4206607276-59">{</span><span·class="ss[·...·truncated·by·diffoscope;·len:·323,·SHA:·2f3b514b763035daea39f79083aac84d98b66558046d28c106a16ca705e5a08e·...·]</span><span·class="w">175 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="8349064897-55">(</span><span·class="p"·data-group-id="8349064897-55">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8349064897-56">[</span><span·class="n[·...·truncated·by·diffoscope;·len:·179,·SHA:·87e14e09f0fb76f4e28b2e92960957abc248b48ab6fb26ac5dcfdb9282916147·...·]</span><span·class="w">
 176 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="8349064897-58">(</span><span·class="p"·data-group-id="8349064897-58">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8349064897-59">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">restart_type</span><span·class="p"·data-group-id="8349064897-60">(</span><span·class="p"·data-group-id="8349064897-60">)</span><span·class="p"·data-group-id="8349064897-59">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
177 ·························</span><span·class="p"·data-group-id="4206607276-61">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_net_if</span><span·class="p"·data-group-id="4206607276-62">(</span><span·class="p"·data-group-id="4206607276-62"[·...·truncated·by·diffoscope;·len:·50,·SHA:·6220d9feb309c0796f73dc37f3562194a0c40022508f4b55308cdde2354c8b91·...·]-61">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">177 ·························</span><span·class="p"·data-group-id="8349064897-61">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_net_if</span><span·class="p"·data-group-id="8349064897-62">(</span><span·class="p"·data-group-id="8349064897-62"[·...·truncated·by·diffoscope;·len:·50,·SHA:·3b1cf0158523049c84c924047fe0e4c2249993a9094da8bd328689d9172bcc13·...·]-61">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
178 ·························</span><span·class="p"·data-group-id="4206607276-63">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">server</span><span·class="p"·data-group-id="4206607276-64">(</span><span·class="p"·data-group-id="4206607276-64">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·2f228a13fa115f669d007f9bff1cc04323054abfbe93be48b2cf056a3ecca82c·...·]-63">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">178 ·························</span><span·class="p"·data-group-id="8349064897-63">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">server</span><span·class="p"·data-group-id="8349064897-64">(</span><span·class="p"·data-group-id="8349064897-64">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·0f9ae43cede8806a0c467dc83bf23880225ead6d9789914414ba92c59cfa0063·...·]-63">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">
179 ·························</span><span·class="p"·data-group-id="4206607276-65">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">···············</span><span·class="nf">note_store</span><span·class="p"·data-group-id="4206607276-66">(</span><span·class="p"·data-group-id="4206607276-66">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·14dc0a888b11606f9cd9a091e786ffb95b231d50d8ea0bafd034ebb9340f0a28·...·]-65">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">179 ·························</span><span·class="p"·data-group-id="8349064897-65">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">···············</span><span·class="nf">note_store</span><span·class="p"·data-group-id="8349064897-66">(</span><span·class="p"·data-group-id="8349064897-66">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·21e0aff683982b9bc4b039cfb87a2283dd9c85ea9ccc903bb700c8c08e61d905·...·]-65">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
180 ·························</span><span·class="p"·data-group-id="4206607276-67">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_config</span><span·class="p"·data-group-id="4206607276-68">(</span><span·class="p"·data-group-id="4206607276-68"[·...·truncated·by·diffoscope;·len:·50,·SHA:·6220d9feb309c0796f73dc37f3562194a0c40022508f4b55308cdde2354c8b91·...·]-67">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">180 ·························</span><span·class="p"·data-group-id="8349064897-67">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_config</span><span·class="p"·data-group-id="8349064897-68">(</span><span·class="p"·data-group-id="8349064897-68"[·...·truncated·by·diffoscope;·len:·50,·SHA:·3b1cf0158523049c84c924047fe0e4c2249993a9094da8bd328689d9172bcc13·...·]-67">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
181 ·························</span><span·class="p"·data-group-id="4206607276-69">{</span><span·class="ss">inform_request_behaviour</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">manager_irb</span><span·class="p"·data-group-id="4206607276-70">(</span><span·class="p"·data-group-id="4206607276-70">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·e4fe455de06941d3894cbd71d8ba0b34551f9d7bcb5d002272797e85a4b04f41·...·]-69">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">181 ·························</span><span·class="p"·data-group-id="8349064897-69">{</span><span·class="ss">inform_request_behaviour</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">manager_irb</span><span·class="p"·data-group-id="8349064897-70">(</span><span·class="p"·data-group-id="8349064897-70">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·89076ade667d21b2a28dd153edbeb1f9b253d5cad52cd91c6fb12dd76baadb93·...·]-69">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
182 ·························</span><span·class="p"·data-group-id="4206607276-71">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·····················</span><span·class="nf">manager_mibs</span><span·class="p"·data-group-id="4206607276-72">(</span><span·class="p"·data-group-id="4206607276-72">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·af2270d5ff8ce5ada7bc0f10498dd31053ce156f17188e924f278e9af347c033·...·]-71">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">182 ·························</span><span·class="p"·data-group-id="8349064897-71">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·····················</span><span·class="nf">manager_mibs</span><span·class="p"·data-group-id="8349064897-72">(</span><span·class="p"·data-group-id="8349064897-72">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·e60ad9550989c32b27c607690224caf9b5a55c191f2c19501ca9687d1035350c·...·]-71">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
183 ·························</span><span·class="p"·data-group-id="4206607276-73">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">priority</span><span·class="p"·data-group-id="4206607276-74">(</span><span·class="p"·data-group-id="4206607276-74">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·b10bc4b5c1abce1d7e0aba1fcbf0ac12700c443ee337fd03929c3ee12e279b2d·...·]-73">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">183 ·························</span><span·class="p"·data-group-id="8349064897-73">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">priority</span><span·class="p"·data-group-id="8349064897-74">(</span><span·class="p"·data-group-id="8349064897-74">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·f8d79d7a27c8dcb00d8f1a326e706ec8621158a16d53cb2a75a1b43ffa7534e5·...·]-73">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
184 ·························</span><span·class="p"·data-group-id="4206607276-75">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··········</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="4206607276-76">(</span><span·class="p"·data-group-id="4206607276-76[·...·truncated·by·diffoscope;·len:·51,·SHA:·d715c2ef543a6003f0591775b9499f371a431700e7eedd2ccbfab3b1a49a9c16·...·]-75">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">184 ·························</span><span·class="p"·data-group-id="8349064897-75">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··········</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="8349064897-76">(</span><span·class="p"·data-group-id="8349064897-76[·...·truncated·by·diffoscope;·len:·51,·SHA:·e626329070ef9dcae22852d0d159761270a0abe6d03b1fbd3ee140509e3597c6·...·]-75">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
185 ·························</span><span·class="p"·data-group-id="4206607276-77">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">versions</span><span·class="p"·data-group-id="4206607276-78">(</span><span·class="p"·data-group-id="4206607276-78">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·b10bc4b5c1abce1d7e0aba1fcbf0ac12700c443ee337fd03929c3ee12e279b2d·...·]-77">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">185 ·························</span><span·class="p"·data-group-id="8349064897-77">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">versions</span><span·class="p"·data-group-id="8349064897-78">(</span><span·class="p"·data-group-id="8349064897-78">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·f8d79d7a27c8dcb00d8f1a326e706ec8621158a16d53cb2a75a1b43ffa7534e5·...·]-77">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
186 ·························</span><span·class="p"·data-group-id="4206607276-79">{</span><span·class="ss">def_user_mod</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">def_user_module</span><span·class="p"·data-group-id="4206607276-80">(</span><span·class="p"·data-group-id="4206607276-80">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">186 ·························</span><span·class="p"·data-group-id="8349064897-79">{</span><span·class="ss">def_user_mod</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">def_user_module</span><span·class="p"·data-group-id="8349064897-80">(</span><span·class="p"·data-group-id="8349064897-80">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
187 ·························</span><span·class="p"·data-group-id="4206607276-81">{</span><span·class="ss">def_user_data</span><span·class="p">,</span><span·class="w">············</span><span·class="nf">def_user_data</span><span·class="p"·data-group-id="4206607276-82">(</span><span·class="p"·data-group-id="4206607276-82">[·...·truncated·by·diffoscope;·len:·49,·SHA:·4452d9d38727e8b358c11fbe117539d9a678a489edf910e651b404a14e1b14e2·...·]-81">}</span></code></pre><p><a·href=""·id="agent_opts_and_types"></a></p><p>Agent·specific·config·options·and·types:</p><ul><li><p><strong><code·class="inline"·id="agent_type">agent_type()·=·master·|·sub·&lt;optional&gt;</code></strong>·-·If·<code·class="inline">master</code>,187 ·························</span><span·class="p"·data-group-id="8349064897-81">{</span><span·class="ss">def_user_data</span><span·class="p">,</span><span·class="w">············</span><span·class="nf">def_user_data</span><span·class="p"·data-group-id="8349064897-82">(</span><span·class="p"·data-group-id="8349064897-82">[·...·truncated·by·diffoscope;·len:·49,·SHA:·9fe56f94957f906b89957f808ee3f7eeb821950fe5123914b0e09a4053aea59f·...·]-81">}</span></code></pre><p><a·href=""·id="agent_opts_and_types"></a></p><p>Agent·specific·config·options·and·types:</p><ul><li><p><strong><code·class="inline"·id="agent_type">agent_type()·=·master·|·sub·&lt;optional&gt;</code></strong>·-·If·<code·class="inline">master</code>,
188 one·master·agent·is·started.·Otherwise,·no·agents·are·started.</p><p>Default·is·<code·class="inline">master</code>.</p></li><li><p><strong><code·class="inline"·id="agent_disco">agent_discovery()·=·[agent_discovery_opt()]·&lt;optional&gt;</code></strong>·-188 one·master·agent·is·started.·Otherwise,·no·agents·are·started.</p><p>Default·is·<code·class="inline">master</code>.</p></li><li><p><strong><code·class="inline"·id="agent_disco">agent_discovery()·=·[agent_discovery_opt()]·&lt;optional&gt;</code></strong>·-
189 <code·class="inline">agent_discovery_opt()·=·{terminating,·agent_terminating_discovery_opts()}·|·{originating,·agent_originating_discovery_opts()}</code></p><p>The·<code·class="inline">terminating</code>·options·effects·discovery·initiated·by·a·manager.</p><p>The·<code·class="inline">originating</code>·options·effects·discovery·initiated·by·this·agent.</p><p>For·defaults·see·the·options·in·<code·class="inline">agent_discovery_opt()</code>.</p></li><li><p><strong><code·class="inline"·id="agent_term_disco_opts">agent_terminating_discovery_opts()·=·[agent_terminating_discovery_opt()]·&lt;optional&gt;</code></strong>·-189 <code·class="inline">agent_discovery_opt()·=·{terminating,·agent_terminating_discovery_opts()}·|·{originating,·agent_originating_discovery_opts()}</code></p><p>The·<code·class="inline">terminating</code>·options·effects·discovery·initiated·by·a·manager.</p><p>The·<code·class="inline">originating</code>·options·effects·discovery·initiated·by·this·agent.</p><p>For·defaults·see·the·options·in·<code·class="inline">agent_discovery_opt()</code>.</p></li><li><p><strong><code·class="inline"·id="agent_term_disco_opts">agent_terminating_discovery_opts()·=·[agent_terminating_discovery_opt()]·&lt;optional&gt;</code></strong>·-
190 <code·class="inline">agent_terminating_discovery_opt()·=·{enable,·boolean()}·|·{stage2,·discovery·|·plain}·|·{trigger_username,·string()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">terminating</code>·in·this·agent·(i.e.190 <code·class="inline">agent_terminating_discovery_opt()·=·{enable,·boolean()}·|·{stage2,·discovery·|·plain}·|·{trigger_username,·string()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">terminating</code>·in·this·agent·(i.e.
191 initiated·by·a·manager).</p><p>The·default·values·for·the·<code·class="inline">terminating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li><li>stage2:·<code·class="inline">discovery</code></li><li>trigger_username:·<code·class="inline">&quot;&quot;</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_orig_disco_opts">agent_originating_discovery_opts()·=·[agent_originating_discovery_opt()]·&lt;optional&gt;</code></strong>·-191 initiated·by·a·manager).</p><p>The·default·values·for·the·<code·class="inline">terminating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li><li>stage2:·<code·class="inline">discovery</code></li><li>trigger_username:·<code·class="inline">&quot;&quot;</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_orig_disco_opts">agent_originating_discovery_opts()·=·[agent_originating_discovery_opt()]·&lt;optional&gt;</code></strong>·-
192 <code·class="inline">agent_originating_discovery_opt()·=·{enable,·boolean()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">originating</code>·in·this·agent.</p><p>The·default·values·for·the·<code·class="inline">originating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_mt">multi_threaded()·=·bool()·|·extended·&lt;optional&gt;</code></strong>·-·If192 <code·class="inline">agent_originating_discovery_opt()·=·{enable,·boolean()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">originating</code>·in·this·agent.</p><p>The·default·values·for·the·<code·class="inline">originating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_mt">multi_threaded()·=·bool()·|·extended·&lt;optional&gt;</code></strong>·-·If
193 <code·class="inline">true</code>·(or·<code·class="inline">extended</code>),·the·agent·is·multi-threaded,·with·one·thread·for·each193 <code·class="inline">true</code>·(or·<code·class="inline">extended</code>),·the·agent·is·multi-threaded,·with·one·thread·for·each
194 get·request.</p><p>The·value·<code·class="inline">extended</code>·means·that·a·special·'process'·is·also·created·intended194 get·request.</p><p>The·value·<code·class="inline">extended</code>·means·that·a·special·'process'·is·also·created·intended
34.9 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_config.html
    
Offset 141, 49 lines modifiedOffset 141, 49 lines modified
141 <a·href="snmp_agent_config_files.html">Definition·of·Agent·Configuration·Files</a>·for·more141 <a·href="snmp_agent_config_files.html">Definition·of·Agent·Configuration·Files</a>·for·more
142 information).</li><li>the·<em>database·directory</em>·stores·the·internal·database·files.</li></ul><p>The·following·directory·must·exist·in·the·system·to·run·the·manager:</p><ul><li>the·<em>configuration·directory</em>·stores·all·configuration·files·used·by·the142 information).</li><li>the·<em>database·directory</em>·stores·the·internal·database·files.</li></ul><p>The·following·directory·must·exist·in·the·system·to·run·the·manager:</p><ul><li>the·<em>configuration·directory</em>·stores·all·configuration·files·used·by·the
143 manager·(refer·to·the·chapter143 manager·(refer·to·the·chapter
144 <a·href="snmp_manager_config_files.html">Definition·of·Manager·Configuration·Files</a>·for144 <a·href="snmp_manager_config_files.html">Definition·of·Manager·Configuration·Files</a>·for
145 more·information).</li><li>the·<em>database·directory</em>·stores·the·internal·database·files.</li></ul><p>The·agent·and·manager·uses·(application)·configuration·parameters·to·find·out145 more·information).</li><li>the·<em>database·directory</em>·stores·the·internal·database·files.</li></ul><p>The·agent·and·manager·uses·(application)·configuration·parameters·to·find·out
146 where·these·directories·are·located.·The·parameters·should·be·defined·in·an146 where·these·directories·are·located.·The·parameters·should·be·defined·in·an
147 Erlang·system·configuration·file.·The·following·configuration·parameters·are147 Erlang·system·configuration·file.·The·following·configuration·parameters·are
148 defined·for·the·SNMP·application:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="6819439411-1">(</span><span·class="p"·data-group-id="6819439411-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6819439411-2">[</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="6819439411-3">(</span><span·class="p"·data-group-id="6819439411-3">)</span><span·class="p"·data-group-id="6819439411-2">]</span><span·class="w"> 
149 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="6819439411-4">(</span><span·class="p"·data-group-id="6819439411-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·352,·SHA:·ae040add7149fe9ee22dcdbb8c80c1ea9d639b211bc79f9a7fa946e61e98f15a·...·]</span><span·class="w">148 defined·for·the·SNMP·application:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="5277529762-1">(</span><span·class="p"·data-group-id="5277529762-1">)</span[·...·truncated·by·diffoscope;·len:·314,·SHA:·f8a35cb41162037c3e3088a54083b602063a97133a49cdc8ac3292dc2cbbadaf·...·]</span><span·class="w">
 149 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="5277529762-4">(</span><span·class="p"·data-group-id="5277529762-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5277529762-5">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="w">·····</span><span·class="nf">restart_type</span><span·class="p"·data-group-id="5277529762-6">(</span><span·class="p"·data-group-id="5277529762-6">)</span><span·class="p"·data-group-id="5277529762-5">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
150 ·······················</span><span·class="p"·data-group-id="6819439411-7">{</span><span·class="ss">agent_type</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">agent_type</span><span·class="p"·data-group-id="6819439411-8">(</span><span·class="p"·data-group-id="6819439411-8">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·9ddbb3d906b52080a8bc6e50ce2ea79bceb651f2000cda8852c73a286308b2ea·...·]-7">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">150 ·······················</span><span·class="p"·data-group-id="5277529762-7">{</span><span·class="ss">agent_type</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">agent_type</span><span·class="p"·data-group-id="5277529762-8">(</span><span·class="p"·data-group-id="5277529762-8">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·73986503a9486214d3668000e754fe14a29bf3c02534248aa5522680b8549b54·...·]-7">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
151 ·······················</span><span·class="p"·data-group-id="6819439411-9">{</span><span·class="ss">agent_verbosity</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">verbosity</span><span·class="p"·data-group-id="6819439411-10">(</span><span·class="p"·data-group-id="6819439411-10">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·1a3b01dfdb549383f255976a4acb9e3c6a184fb63e8f010faed9cd5813930401·...·]-9">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">151 ·······················</span><span·class="p"·data-group-id="5277529762-9">{</span><span·class="ss">agent_verbosity</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">verbosity</span><span·class="p"·data-group-id="5277529762-10">(</span><span·class="p"·data-group-id="5277529762-10">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·eacc181b4152dfd6962e80827358ecd00402c9e756f669e3363c7f991c399a7e·...·]-9">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
152 ·······················</span><span·class="p"·data-group-id="6819439411-11">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">versions</span><span·class="p"·data-group-id="6819439411-12">(</span><span·class="p"·data-group-id="6819439411-12">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·1a3b01dfdb549383f255976a4acb9e3c6a184fb63e8f010faed9cd5813930401·...·]-11">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">152 ·······················</span><span·class="p"·data-group-id="5277529762-11">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">versions</span><span·class="p"·data-group-id="5277529762-12">(</span><span·class="p"·data-group-id="5277529762-12">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·eacc181b4152dfd6962e80827358ecd00402c9e756f669e3363c7f991c399a7e·...·]-11">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
153 ·······················</span><span·class="p"·data-group-id="6819439411-13">{</span><span·class="ss">discovery</span><span·class="p">,</span><span·class="w">········</span><span·class="nf">agent_discovery</span><span·class="p"·data-group-id="6819439411-14">(</span><span·class="p"·data-group-id="6819439411-14">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·380e486a276872ffd42e2dcaa0f120a599e1aa8c4e5ed60ed74d88d202204611·...·]-13">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">153 ·······················</span><span·class="p"·data-group-id="5277529762-13">{</span><span·class="ss">discovery</span><span·class="p">,</span><span·class="w">········</span><span·class="nf">agent_discovery</span><span·class="p"·data-group-id="5277529762-14">(</span><span·class="p"·data-group-id="5277529762-14">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·e2efd63881b70d250aa578c5cc251b0347460042998c0d92d6f05a74ba792356·...·]-13">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
154 ·······················</span><span·class="p"·data-group-id="6819439411-15">{</span><span·class="ss">gb_max_vbs</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">gb_max_vbs</span><span·class="p"·data-group-id="6819439411-16">(</span><span·class="p"·data-group-id="6819439411-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·f5acab6a77ce064b299bdac26f360c81039624a1f32b4afe37589524caf3fb63·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">154 ·······················</span><span·class="p"·data-group-id="5277529762-15">{</span><span·class="ss">gb_max_vbs</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">gb_max_vbs</span><span·class="p"·data-group-id="5277529762-16">(</span><span·class="p"·data-group-id="5277529762-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·232bdd1d13594bf1b766d4f46eed0af833abb2bdce54b132dff4fa858200ad27·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
155 ·······················</span><span·class="p"·data-group-id="6819439411-17">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">priority</span><span·class="p"·data-group-id="6819439411-18">(</span><span·class="p"·data-group-id="6819439411-18">)</span><span·class="p"·data-group-id="6819439411-17">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w"> 
156 ·······················</span><span·class="p"·data-group-id="6819439411-19">{</span><span·class="ss">multi_threaded</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">multi_threaded</span><span·class="p"·data-group-id="6819439411-20">(</span><span·class="p"·data-group-id="6819439411-20">)</span[·...·truncated·by·diffoscope;·len:·71,·SHA:·8112e540550ba81af8d577eac5e06f28746865830a97df2028494f5788a6a779·...·]···</span><span·class="p">|</span><span·class="w">155 ·······················</span><span·class="p"·data-group-id="5277529762-17">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">priority</span><span·class="p"·data-group-id="5277529762-18">(</span><span·class="p"·data-group-id="5277529762-18">)</span><span[·...·truncated·by·diffoscope;·len:·71,·SHA:·a6cbd5e2f6ed5d517ecd0e6080c92cd12d2fea8a18d6c2cef926a66436643d1b·...·]···</span><span·class="p">|</span><span·class="w">
 156 ·······················</span><span·class="p"·data-group-id="5277529762-19">{</span><span·class="ss">multi_threaded</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">multi_threaded</span><span·class="p"·data-group-id="5277529762-20">(</span><span·class="p"·data-group-id="5277529762-20">)</span><span·class="p"·data-group-id="5277529762-19">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
157 ·······················</span><span·class="p"·data-group-id="6819439411-21">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">db_dir</span><span·class="p"·data-group-id="6819439411-22">(</span><span·class="p"·data-group-id="6819439411-22">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·8995fe3cfa15a9a8c16a7a8995c904f021d6add7fd03b4fa35f58229206b7a2f·...·]-21">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">157 ·······················</span><span·class="p"·data-group-id="5277529762-21">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">db_dir</span><span·class="p"·data-group-id="5277529762-22">(</span><span·class="p"·data-group-id="5277529762-22">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·b54262f1916220559f59cdd608d715be2d8a8df3713435a479bc0aa05804dac3·...·]-21">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">
158 ·······················</span><span·class="p"·data-group-id="6819439411-23">{</span><span·class="ss">db_init_error</span><span·class="p">,</span><span·class="w">····</span><span·class="nf">db_init_error</span><span·class="p"·data-group-id="6819439411-24">(</span><span·class="p"·data-group-id="6819439411-24">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·fa0d63ccb9f49515c3b637a985445840c84df7c2f4bf357ac7674c627615b46d·...·]-23">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">158 ·······················</span><span·class="p"·data-group-id="5277529762-23">{</span><span·class="ss">db_init_error</span><span·class="p">,</span><span·class="w">····</span><span·class="nf">db_init_error</span><span·class="p"·data-group-id="5277529762-24">(</span><span·class="p"·data-group-id="5277529762-24">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·ad83b644cae5ec1922012636c761fc1f99a79cfc17cf1d29bd5ad7b83afdff5f·...·]-23">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
159 ·······················</span><span·class="p"·data-group-id="6819439411-25">{</span><span·class="ss">local_db</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">local_db</span><span·class="p"·data-group-id="6819439411-26">(</span><span·class="p"·data-group-id="6819439411-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·1a3b01dfdb549383f255976a4acb9e3c6a184fb63e8f010faed9cd5813930401·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">159 ·······················</span><span·class="p"·data-group-id="5277529762-25">{</span><span·class="ss">local_db</span><span·class="p">,</span><span·class="w">·········</span><span·class="nf">local_db</span><span·class="p"·data-group-id="5277529762-26">(</span><span·class="p"·data-group-id="5277529762-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·eacc181b4152dfd6962e80827358ecd00402c9e756f669e3363c7f991c399a7e·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
160 ·······················</span><span·class="p"·data-group-id="6819439411-27">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_net_if</span><span·class="p"·data-group-id="6819439411-28">(</span><span·class="p"·data-group-id="6819439411-28">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·e3f800fb9e3fce8efb02b4cb887260c0ad6b0831f56a1c16f925cfe3bd81ea8d·...·]-27">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">160 ·······················</span><span·class="p"·data-group-id="5277529762-27">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_net_if</span><span·class="p"·data-group-id="5277529762-28">(</span><span·class="p"·data-group-id="5277529762-28">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·909bd37b80956b1d4edfa16ae32166b932416e6b996373e4f5e7b7fb710cc9e1·...·]-27">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
161 ·······················</span><span·class="p"·data-group-id="6819439411-29">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">mibs</span><span·class="p"·data-group-id="6819439411-30">(</span><span·class="p"·data-group-id="6819439411-30">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·e671e9ca2641bc83690aa65e446246cb7b17f14d6717a6e317cd1864b5471c59·...·]-29">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">161 ·······················</span><span·class="p"·data-group-id="5277529762-29">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">mibs</span><span·class="p"·data-group-id="5277529762-30">(</span><span·class="p"·data-group-id="5277529762-30">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·96e99b08e3f43f6afbdc13ae63914a0a4523fe801e028693020d6eaa20821d2e·...·]-29">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">
162 ·······················</span><span·class="p"·data-group-id="6819439411-31">{</span><span·class="ss">mib_storage</span><span·class="p">,</span><span·class="w">······</span><span·class="nf">mib_storage</span><span·class="p"·data-group-id="6819439411-32">(</span><span·class="p"·data-group-id="6819439411-32">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·fc92f114b9d953283e5f2f2f09491f29aba48c1e1dbabf367057c000292bad8f·...·]-31">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">162 ·······················</span><span·class="p"·data-group-id="5277529762-31">{</span><span·class="ss">mib_storage</span><span·class="p">,</span><span·class="w">······</span><span·class="nf">mib_storage</span><span·class="p"·data-group-id="5277529762-32">(</span><span·class="p"·data-group-id="5277529762-32">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·ada498ea8077c565e5a909c7abbe522db63ae583ce2b2455fe368483e6034af3·...·]-31">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
163 ·······················</span><span·class="p"·data-group-id="6819439411-33">{</span><span·class="ss">mib_server</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">mib_server</span><span·class="p"·data-group-id="6819439411-34">(</span><span·class="p"·data-group-id="6819439411-34">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·f5acab6a77ce064b299bdac26f360c81039624a1f32b4afe37589524caf3fb63·...·]-33">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">163 ·······················</span><span·class="p"·data-group-id="5277529762-33">{</span><span·class="ss">mib_server</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">mib_server</span><span·class="p"·data-group-id="5277529762-34">(</span><span·class="p"·data-group-id="5277529762-34">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·232bdd1d13594bf1b766d4f46eed0af833abb2bdce54b132dff4fa858200ad27·...·]-33">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
164 ·······················</span><span·class="p"·data-group-id="6819439411-35">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="6819439411-36">(</span><span·class="p"·data-group-id="6819439411-36">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·380e486a276872ffd42e2dcaa0f120a599e1aa8c4e5ed60ed74d88d202204611·...·]-35">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">164 ·······················</span><span·class="p"·data-group-id="5277529762-35">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="5277529762-36">(</span><span·class="p"·data-group-id="5277529762-36">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·e2efd63881b70d250aa578c5cc251b0347460042998c0d92d6f05a74ba792356·...·]-35">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
165 ·······················</span><span·class="p"·data-group-id="6819439411-37">{</span><span·class="ss">error_report_mod</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">error_report_mod</span><span·class="p"·data-group-id="6819439411-38">(</span><span·class="p"·data-group-id="6819439411-38">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·d0b5303509591b4cfbee70a4968352a33ef7514a30c5e6605ea44176dfaf74f3·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">165 ·······················</span><span·class="p"·data-group-id="5277529762-37">{</span><span·class="ss">error_report_mod</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">error_report_mod</span><span·class="p"·data-group-id="5277529762-38">(</span><span·class="p"·data-group-id="5277529762-38">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·77cd43d1014de3543aaf5b4540afeda2b9e86a2f7b3daf89ff55cf205178ecd0·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
166 ·······················</span><span·class="p"·data-group-id="6819439411-39">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">note_store</span><span·class="p"·data-group-id="6819439411-40">(</span><span·class="p"·data-group-id="6819439411-40">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·f5acab6a77ce064b299bdac26f360c81039624a1f32b4afe37589524caf3fb63·...·]-39">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">166 ·······················</span><span·class="p"·data-group-id="5277529762-39">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">·······</span><span·class="nf">note_store</span><span·class="p"·data-group-id="5277529762-40">(</span><span·class="p"·data-group-id="5277529762-40">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·232bdd1d13594bf1b766d4f46eed0af833abb2bdce54b132dff4fa858200ad27·...·]-39">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
167 ·······················</span><span·class="p"·data-group-id="6819439411-41">{</span><span·class="ss">symbolic_store</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">symbolic_store</span><span·class="p"·data-group-id="6819439411-42">(</span><span·class="p"·data-group-id="6819439411-42">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·cb9692c0988b6df8bf56ea673d156ba1fef7f4ff2fbdeb4069a485d38c954125·...·]-41">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">167 ·······················</span><span·class="p"·data-group-id="5277529762-41">{</span><span·class="ss">symbolic_store</span><span·class="p">,</span><span·class="w">···</span><span·class="nf">symbolic_store</span><span·class="p"·data-group-id="5277529762-42">(</span><span·class="p"·data-group-id="5277529762-42">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·e874c3a5f25518769cb2a1b74e06c23320329931edaa88e499965fc202dd8dba·...·]-41">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
168 ·······················</span><span·class="p"·data-group-id="6819439411-43">{</span><span·class="ss">target_cache</span><span·class="p">,</span><span·class="w">·····</span><span·class="nf">target_cache</span><span·class="p"·data-group-id="6819439411-44">(</span><span·class="p"·data-group-id="6819439411-44">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·e3f800fb9e3fce8efb02b4cb887260c0ad6b0831f56a1c16f925cfe3bd81ea8d·...·]-43">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">168 ·······················</span><span·class="p"·data-group-id="5277529762-43">{</span><span·class="ss">target_cache</span><span·class="p">,</span><span·class="w">·····</span><span·class="nf">target_cache</span><span·class="p"·data-group-id="5277529762-44">(</span><span·class="p"·data-group-id="5277529762-44">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·909bd37b80956b1d4edfa16ae32166b932416e6b996373e4f5e7b7fb710cc9e1·...·]-43">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
169 ·······················</span><span·class="p"·data-group-id="6819439411-45">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_config</span><span·class="p"·data-group-id="6819439411-46">(</span><span·class="p"·data-group-id="6819439411-46">)</span><span·class="p"·data-group-id="6819439411-45">}</span><span·class="w"> 
170 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="6819439411-47">(</span><span·class="p"·data-group-id="6819439411-47">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6819439411-48">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="6819439411-49">(</span><span·class="p"·data-group-id="6819439411-49">)</span><span·class="p"·data-group-id="6819439411-48">]</span><span·class="w"> 
171 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="6819439411-50">(</span><span·class="p"·data-group-id="6819439411-50">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·361,·SHA:·b225089fd8fdbe3c1b4373132be90aaf6ebfb5d8faf47f7aecf09367321a85bb·...·]</span><span·class="w">169 ·······················</span><span·class="p"·data-group-id="5277529762-45">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···········</span><span·class="nf">agent_config</span><span·class="p"·data-group-id="5277529762-46">(</span>[·...·truncated·by·diffoscope;·len:·101,·SHA:·9b012e498541ca409e72aa50e8eb3955077f2ca42de11c016a386482101317be·...·]</span><span·class="w">
 170 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="5277529762-47">(</span><span·class="p"·data-group-id="5277529762-47">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5277529762-48">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="5277529762-49">(</span><span·class="p"·data-group-id="5277529762-49">)</span><span·class="p"·data-group-id="5277529762-48">]</span><span·class="w">
 171 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="5277529762-50">(</span><span·class="p"·data-group-id="5277529762-50">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5277529762-51">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">restart_type</span><span·class="p"·data-group-id="5277529762-52">(</span><span·class="p"·data-group-id="5277529762-52">)</span><span·class="p"·data-group-id="5277529762-51">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
172 ·························</span><span·class="p"·data-group-id="6819439411-53">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_net_if</span><span·class="p"·data-group-id="6819439411-54">(</span><span·class="p"·data-group-id="6819439411-54"[·...·truncated·by·diffoscope;·len:·50,·SHA:·10397cd6abc47f1b316f574aad43242b1ec1b2acf66817d805d8e75f95e38c3d·...·]-53">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">172 ·························</span><span·class="p"·data-group-id="5277529762-53">{</span><span·class="ss">net_if</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_net_if</span><span·class="p"·data-group-id="5277529762-54">(</span><span·class="p"·data-group-id="5277529762-54"[·...·truncated·by·diffoscope;·len:·50,·SHA:·9e9f0c4025bb5ba25f35c419226f311ed2687021c7a5b7e707c591d22408a02d·...·]-53">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
173 ·························</span><span·class="p"·data-group-id="6819439411-55">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">server</span><span·class="p"·data-group-id="6819439411-56">(</span><span·class="p"·data-group-id="6819439411-56">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·cb9692c0988b6df8bf56ea673d156ba1fef7f4ff2fbdeb4069a485d38c954125·...·]-55">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">173 ·························</span><span·class="p"·data-group-id="5277529762-55">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">server</span><span·class="p"·data-group-id="5277529762-56">(</span><span·class="p"·data-group-id="5277529762-56">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·e874c3a5f25518769cb2a1b74e06c23320329931edaa88e499965fc202dd8dba·...·]-55">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">
174 ·························</span><span·class="p"·data-group-id="6819439411-57">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">···············</span><span·class="nf">note_store</span><span·class="p"·data-group-id="6819439411-58">(</span><span·class="p"·data-group-id="6819439411-58">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·e4a7ed671ce715fc950fe4c2db9a5a2b7ec2b6324b3d43f1eec300b7261f2766·...·]-57">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">174 ·························</span><span·class="p"·data-group-id="5277529762-57">{</span><span·class="ss">note_store</span><span·class="p">,</span><span·class="w">···············</span><span·class="nf">note_store</span><span·class="p"·data-group-id="5277529762-58">(</span><span·class="p"·data-group-id="5277529762-58">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·53908b5444f53e52aadda979615ab6913adaf0bad99dee9cd15352c3a9eef8a9·...·]-57">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
175 ·························</span><span·class="p"·data-group-id="6819439411-59">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_config</span><span·class="p"·data-group-id="6819439411-60">(</span><span·class="p"·data-group-id="6819439411-60"[·...·truncated·by·diffoscope;·len:·50,·SHA:·10397cd6abc47f1b316f574aad43242b1ec1b2acf66817d805d8e75f95e38c3d·...·]-59">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">175 ·························</span><span·class="p"·data-group-id="5277529762-59">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">···················</span><span·class="nf">manager_config</span><span·class="p"·data-group-id="5277529762-60">(</span><span·class="p"·data-group-id="5277529762-60"[·...·truncated·by·diffoscope;·len:·50,·SHA:·9e9f0c4025bb5ba25f35c419226f311ed2687021c7a5b7e707c591d22408a02d·...·]-59">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
176 ·························</span><span·class="p"·data-group-id="6819439411-61">{</span><span·class="ss">inform_request_behaviour</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">manager_irb</span><span·class="p"·data-group-id="6819439411-62">(</span><span·class="p"·data-group-id="6819439411-62">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·d02aa46514436a02764951c9ef669d6979b8ac5201369b9f56f23d791b73ed8c·...·]-61">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">176 ·························</span><span·class="p"·data-group-id="5277529762-61">{</span><span·class="ss">inform_request_behaviour</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">manager_irb</span><span·class="p"·data-group-id="5277529762-62">(</span><span·class="p"·data-group-id="5277529762-62">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·a0796b2ccd8a717af113c75c1e35c557d3143b0e9d1074724ff4525ed3d333ef·...·]-61">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
177 ·························</span><span·class="p"·data-group-id="6819439411-63">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·····················</span><span·class="nf">manager_mibs</span><span·class="p"·data-group-id="6819439411-64">(</span><span·class="p"·data-group-id="6819439411-64">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·b77924eb4588ec62639dbe846f5a446d54f6c7f816adf7d5d5ac6d22cab6b7dc·...·]-63">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">177 ·························</span><span·class="p"·data-group-id="5277529762-63">{</span><span·class="ss">mibs</span><span·class="p">,</span><span·class="w">·····················</span><span·class="nf">manager_mibs</span><span·class="p"·data-group-id="5277529762-64">(</span><span·class="p"·data-group-id="5277529762-64">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·ae150b41ecd604215edb563c4e434d8bdb7f6384402cbdb7012ad2b75559699e·...·]-63">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
178 ·························</span><span·class="p"·data-group-id="6819439411-65">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">priority</span><span·class="p"·data-group-id="6819439411-66">(</span><span·class="p"·data-group-id="6819439411-66">)</span><span·class="p"·data-group-id="6819439411-65">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w"> 
179 ·························</span><span·class="p"·data-group-id="6819439411-67">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··········</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="6819439411-68">(</span><span·class="p"·data-group-id="6819439411-68[·...·truncated·by·diffoscope;·len:·80,·SHA:·29a08ae46edd45c6e3213a250eb5a8b791ed68e3091557ca3111e8ef32ca7bb1·...·]·</span><span·class="p">|</span><span·class="w">178 ·························</span><span·class="p"·data-group-id="5277529762-65">{</span><span·class="ss">priority</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">priority</span><span·class="p"·data-group-id="5277529762-66">(</span><span·class="p"·data-group-id="5277529762-66">)</sp[·...·truncated·by·diffoscope;·len:·80,·SHA:·29db6444de8f417f1cc993ddb3d095614f4aa24a9e42b37debdd28950cf52504·...·]·</span><span·class="p">|</span><span·class="w">
 179 ·························</span><span·class="p"·data-group-id="5277529762-67">{</span><span·class="ss">audit_trail_log</span><span·class="p">,</span><span·class="w">··········</span><span·class="nf">audit_trail_log</span><span·class="p"·data-group-id="5277529762-68">(</span><span·class="p"·data-group-id="5277529762-68">)</span><span·class="p"·data-group-id="5277529762-67">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
180 ·························</span><span·class="p"·data-group-id="6819439411-69">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">versions</span><span·class="p"·data-group-id="6819439411-70">(</span><span·class="p"·data-group-id="6819439411-70">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·d0b5303509591b4cfbee70a4968352a33ef7514a30c5e6605ea44176dfaf74f3·...·]-69">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">180 ·························</span><span·class="p"·data-group-id="5277529762-69">{</span><span·class="ss">versions</span><span·class="p">,</span><span·class="w">·················</span><span·class="nf">versions</span><span·class="p"·data-group-id="5277529762-70">(</span><span·class="p"·data-group-id="5277529762-70">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·77cd43d1014de3543aaf5b4540afeda2b9e86a2f7b3daf89ff55cf205178ecd0·...·]-69">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
181 ·························</span><span·class="p"·data-group-id="6819439411-71">{</span><span·class="ss">def_user_mod</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">def_user_module</span><span·class="p"·data-group-id="6819439411-72">(</span><span·class="p"·data-group-id="6819439411-72">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">181 ·························</span><span·class="p"·data-group-id="5277529762-71">{</span><span·class="ss">def_user_mod</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">def_user_module</span><span·class="p"·data-group-id="5277529762-72">(</span><span·class="p"·data-group-id="5277529762-72">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
182 ·························</span><span·class="p"·data-group-id="6819439411-73">{</span><span·class="ss">def_user_data</span><span·class="p">,</span><span·class="w">············</span><span·class="nf">def_user_data</span><span·class="p"·data-group-id="6819439411-74">(</span><span·class="p"·data-group-id="6819439411-74">[·...·truncated·by·diffoscope;·len:·49,·SHA:·c5fdf5b51f5f9fe58014b4b54838384d3891724a251e2b17a0c911e053b08d66·...·]-73">}</span></code></pre><p><a·href=""·id="agent_opts_and_types"></a></p><p>Agent·specific·config·options·and·types:</p><ul><li><p><strong><code·class="inline"·id="agent_type">agent_type()·=·master·|·sub·&lt;optional&gt;</code></strong>·-·If·<code·class="inline">master</code>,182 ·························</span><span·class="p"·data-group-id="5277529762-73">{</span><span·class="ss">def_user_data</span><span·class="p">,</span><span·class="w">············</span><span·class="nf">def_user_data</span><span·class="p"·data-group-id="5277529762-74">(</span><span·class="p"·data-group-id="5277529762-74">[·...·truncated·by·diffoscope;·len:·49,·SHA:·34bcb7e00a7188d02b15a28948276745be573f607d99c3b9f7b1d5bfd20ab4d9·...·]-73">}</span></code></pre><p><a·href=""·id="agent_opts_and_types"></a></p><p>Agent·specific·config·options·and·types:</p><ul><li><p><strong><code·class="inline"·id="agent_type">agent_type()·=·master·|·sub·&lt;optional&gt;</code></strong>·-·If·<code·class="inline">master</code>,
183 one·master·agent·is·started.·Otherwise,·no·agents·are·started.</p><p>Default·is·<code·class="inline">master</code>.</p></li><li><p><strong><code·class="inline"·id="agent_disco">agent_discovery()·=·[agent_discovery_opt()]·&lt;optional&gt;</code></strong>·-183 one·master·agent·is·started.·Otherwise,·no·agents·are·started.</p><p>Default·is·<code·class="inline">master</code>.</p></li><li><p><strong><code·class="inline"·id="agent_disco">agent_discovery()·=·[agent_discovery_opt()]·&lt;optional&gt;</code></strong>·-
184 <code·class="inline">agent_discovery_opt()·=·{terminating,·agent_terminating_discovery_opts()}·|·{originating,·agent_originating_discovery_opts()}</code></p><p>The·<code·class="inline">terminating</code>·options·effects·discovery·initiated·by·a·manager.</p><p>The·<code·class="inline">originating</code>·options·effects·discovery·initiated·by·this·agent.</p><p>For·defaults·see·the·options·in·<code·class="inline">agent_discovery_opt()</code>.</p></li><li><p><strong><code·class="inline"·id="agent_term_disco_opts">agent_terminating_discovery_opts()·=·[agent_terminating_discovery_opt()]·&lt;optional&gt;</code></strong>·-184 <code·class="inline">agent_discovery_opt()·=·{terminating,·agent_terminating_discovery_opts()}·|·{originating,·agent_originating_discovery_opts()}</code></p><p>The·<code·class="inline">terminating</code>·options·effects·discovery·initiated·by·a·manager.</p><p>The·<code·class="inline">originating</code>·options·effects·discovery·initiated·by·this·agent.</p><p>For·defaults·see·the·options·in·<code·class="inline">agent_discovery_opt()</code>.</p></li><li><p><strong><code·class="inline"·id="agent_term_disco_opts">agent_terminating_discovery_opts()·=·[agent_terminating_discovery_opt()]·&lt;optional&gt;</code></strong>·-
185 <code·class="inline">agent_terminating_discovery_opt()·=·{enable,·boolean()}·|·{stage2,·discovery·|·plain}·|·{trigger_username,·string()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">terminating</code>·in·this·agent·(i.e.185 <code·class="inline">agent_terminating_discovery_opt()·=·{enable,·boolean()}·|·{stage2,·discovery·|·plain}·|·{trigger_username,·string()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">terminating</code>·in·this·agent·(i.e.
186 initiated·by·a·manager).</p><p>The·default·values·for·the·<code·class="inline">terminating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li><li>stage2:·<code·class="inline">discovery</code></li><li>trigger_username:·<code·class="inline">&quot;&quot;</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_orig_disco_opts">agent_originating_discovery_opts()·=·[agent_originating_discovery_opt()]·&lt;optional&gt;</code></strong>·-186 initiated·by·a·manager).</p><p>The·default·values·for·the·<code·class="inline">terminating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li><li>stage2:·<code·class="inline">discovery</code></li><li>trigger_username:·<code·class="inline">&quot;&quot;</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_orig_disco_opts">agent_originating_discovery_opts()·=·[agent_originating_discovery_opt()]·&lt;optional&gt;</code></strong>·-
187 <code·class="inline">agent_originating_discovery_opt()·=·{enable,·boolean()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">originating</code>·in·this·agent.</p><p>The·default·values·for·the·<code·class="inline">originating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_mt">multi_threaded()·=·bool()·|·extended&lt;optional&gt;</code></strong>·-·If·<code·class="inline">true</code>187 <code·class="inline">agent_originating_discovery_opt()·=·{enable,·boolean()}</code></p><p>These·are·options·effecting·discovery·<code·class="inline">originating</code>·in·this·agent.</p><p>The·default·values·for·the·<code·class="inline">originating</code>·discovery·options·are:</p><ul><li>enable:·<code·class="inline">true</code></li></ul></li><li><p><strong><code·class="inline"·id="agent_mt">multi_threaded()·=·bool()·|·extended&lt;optional&gt;</code></strong>·-·If·<code·class="inline">true</code>
188 (or·<code·class="inline">extended</code>),·the·agent·is·multi-threaded,·with·one·thread·for·each·get188 (or·<code·class="inline">extended</code>),·the·agent·is·multi-threaded,·with·one·thread·for·each·get
189 request.</p><p>The·value·<code·class="inline">extended</code>·means·that·a·special·'process'·is·also·created·intended189 request.</p><p>The·value·<code·class="inline">extended</code>·means·that·a·special·'process'·is·also·created·intended
18.9 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_generic.html
    
Offset 158, 49 lines modifiedOffset 158, 49 lines modified
158 Mnesia·table·<code·class="inline">snmp_variables</code>·which·must·be·a·table·with·two·attributes·(not·a158 Mnesia·table·<code·class="inline">snmp_variables</code>·which·must·be·a·table·with·two·attributes·(not·a
159 Mnesia·SNMP·table).·The·SNMP·tables·are·stored·in·Mnesia·tables·with·the·same159 Mnesia·SNMP·table).·The·SNMP·tables·are·stored·in·Mnesia·tables·with·the·same
160 names·as·the·SNMP·tables.·All·functions·assume·that·a·Mnesia·table·exists·with160 names·as·the·SNMP·tables.·All·functions·assume·that·a·Mnesia·table·exists·with
161 the·correct·name·and·attributes.·It·is·the·programmer's·responsibility·to·ensure161 the·correct·name·and·attributes.·It·is·the·programmer's·responsibility·to·ensure
162 this.·Specifically,·if·variables·are·stored·in·Mnesia,·the·table162 this.·Specifically,·if·variables·are·stored·in·Mnesia,·the·table
163 <code·class="inline">snmp_variables</code>·must·be·created·by·the·programmer.·The·record·definition·for163 <code·class="inline">snmp_variables</code>·must·be·created·by·the·programmer.·The·record·definition·for
164 this·table·is·defined·in·the·file·<code·class="inline">snmp/include/snmp_types.hrl</code>.</p><p>If·an·instrumentation·function·in·the·association·file·for·a·variable·<code·class="inline">myVar</code>164 this·table·is·defined·in·the·file·<code·class="inline">snmp/include/snmp_types.hrl</code>.</p><p>If·an·instrumentation·function·in·the·association·file·for·a·variable·<code·class="inline">myVar</code>
165 does·not·have·a·name·when·compiling·an·MIB,·the·compiler·generates·an·entry.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4992572599-1">{</span><span·class="ss">myVar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4992572599-2">{</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">var[·...·truncated·by·diffoscope;·len:·1107,·SHA:·4a27b9c5dae803811a5d2178c6af445cd0b83ab609f8e076085b03833066af69·...·]4-4">}</span><span·class="p">}</span><span·class="p">.</span></code></pre><h2·id="module-example"·class="section-heading">165 does·not·have·a·name·when·compiling·an·MIB,·the·compiler·generates·an·entry.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9951052680-1">{</span><span·class="ss">myVar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9951052680-2">{</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">var[·...·truncated·by·diffoscope;·len:·1107,·SHA:·e4555160335d8c380c7f6720a987b2b3be6a2b04ccbc7d4e597f715fcff972c2·...·]4-4">}</span><span·class="p">}</span><span·class="p">.</span></code></pre><h2·id="module-example"·class="section-heading">
166 ··<a·href="#module-example"·class="hover-link">166 ··<a·href="#module-example"·class="hover-link">
167 ····<i·class="ri-link-m"·aria-hidden="true"></i>167 ····<i·class="ri-link-m"·aria-hidden="true"></i>
168 ··</a>168 ··</a>
169 ··<span·class="text">Example</span>169 ··<span·class="text">Example</span>
170 </h2>170 </h2>
171 <p>The·following·example·shows·an·implementation·of·a·table·which·is·stored·in171 <p>The·following·example·shows·an·implementation·of·a·table·which·is·stored·in
172 Mnesia,·but·with·some·checks·performed·at·set-request·operations.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8612653250-1">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8612653250-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···</span><span·class="c1">%·pass·unchanged</span><span·class="w">172 Mnesia,·but·with·some·checks·performed·at·set-request·operations.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8991394789-1">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8991394789-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···</span><span·class="c1">%·pass·unchanged</span><span·class="w">
173 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8612653250-2">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8612653250-2">)</span><span·class="p">.</span><span·class="w">173 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8991394789-2">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8991394789-2">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8612653250-3">(</span><span·class="ss">delete</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8612653250-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···</span><span·class="c1">%·pass·unchanged</span><span·class="w">174 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8991394789-3">(</span><span·class="ss">delete</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8991394789-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···</span><span·class="c1">%·pass·unchanged</span><span·class="w">
175 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8612653250-4">(</span><span·class="ss">delete</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8612653250-4">)</span><span·class="p">.</span><span·class="w">175 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8991394789-4">(</span><span·class="ss">delete</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8991394789-4">)</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="c1">%%·change·row</span><span·class="w">176 </span><span·class="c1">%%·change·row</span><span·class="w">
177 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8612653250-5">(</span><span·class="ss">is_set_ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·70,·SHA:·e7cec7fefda62dc75787804485c87d3d89172953215622242b09753aa4283ce9·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">177 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8991394789-5">(</span><span·class="ss">is_set_ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·70,·SHA:·b4038be997a0961a121e1192213c234a0ac47ed006d5da4624ae1bc52ca4ccb4·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8612653250-6">(</span><span·class="ss">is_set_ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">178 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8991394789-6">(</span><span·class="ss">is_set_ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">
179 ·······························</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8612653250-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">179 ·······························</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8991394789-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="8612653250-7">{</span><span·class="ss">noError</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="8612653250-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 ····</span><span·class="p"·data-group-id="8991394789-7">{</span><span·class="ss">noError</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="8991394789-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ······</span><span·class="nc">myApplication</span><span·class="p">:</span><span·class="nf">is_set_ok</span><span·class="p"·data-group-id="8612653250-8">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8612653250-8">)</span><span·class="p">;</span><span·class="w">181 ······</span><span·class="nc">myApplication</span><span·class="p">:</span><span·class="nf">is_set_ok</span><span·class="p"·data-group-id="8991394789-8">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8991394789-8">)</span><span·class="p">;</span><span·class="w">
182 ····</span><span·class="n">Err</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 ····</span><span·class="n">Err</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ······</span><span·class="n">Err</span><span·class="w">183 ······</span><span·class="n">Err</span><span·class="w">
184 ··</span><span·class="k">end</span><span·class="p">;</span><span·class="w">184 ··</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
  
185 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8612653250-9">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·64,·SHA:·758ae24fef4e365ba8f52af34f8fb4a77ada6f4dfe3553cb2c2b18d39686b971·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">185 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8991394789-9">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·64,·SHA:·7ba2e2303ee67aafa11f31f46a283f5242cc7c0d05eb099207961b302b574114·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
186 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8612653250-10">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">186 ··</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8991394789-10">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">
187 ·······························</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8612653250-10">)</span><span·class="p">,</span><span·class="w">187 ·······························</span><span·class="n">NameDb</span><span·class="p"·data-group-id="8991394789-10">)</span><span·class="p">,</span><span·class="w">
188 ····</span><span·class="p"·data-group-id="8612653250-11">{</span><span·class="ss">noError</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="8612653250-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 ····</span><span·class="p"·data-group-id="8991394789-11">{</span><span·class="ss">noError</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="8991394789-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
189 ······</span><span·class="c1">%·Now·the·row·is·updated,·tell·the·application</span><span·class="w">189 ······</span><span·class="c1">%·Now·the·row·is·updated,·tell·the·application</span><span·class="w">
190 ······</span><span·class="nc">myApplication</span><span·class="p">:</span><span·class="nf">update</span><span·class="p"·data-group-id="8612653250-12">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8612653250-12">)</span><span·class="p">;</span><span·class="w">190 ······</span><span·class="nc">myApplication</span><span·class="p">:</span><span·class="nf">update</span><span·class="p"·data-group-id="8991394789-12">(</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="8991394789-12">)</span><span·class="p">;</span><span·class="w">
191 ····</span><span·class="n">Err</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 ····</span><span·class="n">Err</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ······</span><span·class="n">Err</span><span·class="w">192 ······</span><span·class="n">Err</span><span·class="w">
193 ··</span><span·class="k">end</span><span·class="p">;</span><span·class="w">193 ··</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
  
194 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8612653250-13">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·63,·SHA:·93146280a2ea8fd45823ed4ddec4f5142ed3b24fdebd43df70657a7f20e8788e·...·]-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···</span><span·class="c1">%·pass·unchanged</span><span·class="w">194 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="8991394789-13">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·63,·SHA:·420eac4552f2967a3fd964ca430ea031e9071ee00338537e20d112f94bf99395·...·]-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">···</span><span·class="c1">%·pass·unchanged</span><span·class="w">
195 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8612653250-14">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·992,·SHA:·89e8eb7d21626f916d02ea8ec1dbfbb5a264d834bec6bba4f188c01c1114f9de·...·]-1">}</span><span·class="p">.</span></code></pre>195 ··</span><span·class="nc">snmp_generic</span><span·class="p">:</span><span·class="nf">table_func</span><span·class="p"·data-group-id="8991394789-14">(</span><span·class="n">Op</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·992,·SHA:·71304589807d554db7a27fbdb1bb7fa715af57a7292a604097522901ddfb2060·...·]-1">}</span><span·class="p">.</span></code></pre>
196 ····</section>196 ····</section>
  
197 </div>197 </div>
  
198 ··<section·id="summary"·class="details-list">198 ··<section·id="summary"·class="details-list">
199 ····<h1·class="section-heading">199 ····<h1·class="section-heading">
200 ······<a·class="hover-link"·href="#summary">200 ······<a·class="hover-link"·href="#summary">
174 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_impl_example_agent.html
    
Offset 226, 62 lines modifiedOffset 226, 62 lines modified
226 ··</a>226 ··</a>
227 ··<span·class="text">Default·Implementation</span>227 ··<span·class="text">Default·Implementation</span>
228 </h2>228 </h2>
229 <p>Without·writing·any·instrumentation·functions,·we·can·compile·the·MIB·and·use229 <p>Without·writing·any·instrumentation·functions,·we·can·compile·the·MIB·and·use
230 the·default·implementation·of·it.·Recall·that·MIBs·imported·by·&quot;EX1-MIB.mib&quot;230 the·default·implementation·of·it.·Recall·that·MIBs·imported·by·&quot;EX1-MIB.mib&quot;
231 must·be·present·and·compiled·in·the·current·directory231 must·be·present·and·compiled·in·the·current·directory
232 (&quot;./STANDARD-MIB.bin&quot;,&quot;./RFC1213-MIB.bin&quot;)·when·compiling.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">unix</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">.</span><span·class="o">/</span><span·class="ss">sys</span><span·class="gp·unselectable">232 (&quot;./STANDARD-MIB.bin&quot;,&quot;./RFC1213-MIB.bin&quot;)·when·compiling.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">unix</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">config</span><span·class="w">·</span><span·class="p">.</span><span·class="o">/</span><span·class="ss">sys</span><span·class="gp·unselectable">
233 1&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8419625108-1">(</span><span·class="ss">snmp</span><span·class="p"·data-group-id="8419625108-1">)</span><span·class="p">.</span><span·class="w">233 1&gt;·</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3781274773-1">(</span><span·class="ss">snmp</span><span·class="p"·data-group-id="3781274773-1">)</span><span·class="p">.</span><span·class="w">
234 </span><span·class="ss">ok</span><span·class="gp·unselectable">234 </span><span·class="ss">ok</span><span·class="gp·unselectable">
235 2&gt;·</span><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="8419625108-2">(</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="8419625108-2">)</span><span·class="p">.</span><span·class="w">235 2&gt;·</span><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="3781274773-2">(</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="3781274773-2">)</span><span·class="p">.</span><span·class="w">
236 </span><span·class="n">No</span><span·class="w">·</span><span·class="ss">accessfunction</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">&#39;friendsTable&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">using</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">.</span><span·class="w">236 </span><span·class="n">No</span><span·class="w">·</span><span·class="ss">accessfunction</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">&#39;friendsTable&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">using</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">.</span><span·class="w">
237 </span><span·class="n">No</span><span·class="w">·</span><span·class="ss">accessfunction</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">&#39;myName&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">using</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">.</span><span·class="w">237 </span><span·class="n">No</span><span·class="w">·</span><span·class="ss">accessfunction</span><span·class="w">·</span><span·class="ss">for</span><span·class="w">·</span><span·class="ss">&#39;myName&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">using</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="8419625108-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;EX1-MIB.bin&quot;</span><span·class="p"·data-group-id="8419625108-3">}</span><span·class="gp·unselectable">238 </span><span·class="p"·data-group-id="3781274773-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;EX1-MIB.bin&quot;</span><span·class="p"·data-group-id="3781274773-3">}</span><span·class="gp·unselectable">
239 3&gt;·</span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">load_mibs</span><span·class="p"·data-group-id="8419625108-4">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8419625108-5">[</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="8419625108-5">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·2835fca52117b38b93289c0788a0a29cd2226eb4e612866f7d255ee0292ee29a·...·]-4">)</span><span·class="p">.</span><span·class="w">239 3&gt;·</span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">load_mibs</span><span·class="p"·data-group-id="3781274773-4">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3781274773-5">[</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="3781274773-5">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·6669aeb61f1705069cbb607d8fefc37815bde94fd67c1dc45384d057118dd491·...·]-4">)</span><span·class="p">.</span><span·class="w">
240 </span><span·class="ss">ok</span></code></pre><p>This·MIB·is·now·loaded·into·the·agent,·and·a·manager·can·ask·questions.·As·an240 </span><span·class="ss">ok</span></code></pre><p>This·MIB·is·now·loaded·into·the·agent,·and·a·manager·can·ask·questions.·As·an
241 example·of·this,·we·start·another·Erlang·system·and·the·simple·Erlang·manager·in241 example·of·this,·we·start·another·Erlang·system·and·the·simple·Erlang·manager·in
242 the·toolkit:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="5519348148-1">(</span><span·class="p"·data-group-id="5519348148-2">[</span><span·class="p"·data-group-id="5519348148-3">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="s">&quot;dront.ericsson.se&quot;</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·250,·SHA:·1128632650d43956182f8addce9bfa7c667559942c0adefdd56dbc5e5744c64e·...·]-4">}</span><span·class="p">,</span><span·class="w">242 the·toolkit:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="7954586075-1">(</span><span·class="p"·data-group-id="7954586075-2">[</span><span·class="p"·data-group-id="7954586075-3">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="s">&quot;dront.ericsson.se&quot;</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·250,·SHA:·9dd0ce0749900bad481cae9dbc61e05a6c8afb68391ff158dd4fef68d418b4f6·...·]-4">}</span><span·class="p">,</span><span·class="w">
243 ·</span><span·class="c1">%%·making·it·understand·symbolic·names:·{mibs,[&quot;EX1-MIB&quot;,&quot;STANDARD-MIB&quot;]}]).</span><span·class="w">243 ·</span><span·class="c1">%%·making·it·understand·symbolic·names:·{mibs,[&quot;EX1-MIB&quot;,&quot;STANDARD-MIB&quot;]}]).</span><span·class="w">
244 </span><span·class="p"·data-group-id="5519348148-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.89</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·1b2537b1b26c6e731c3187bb17af97b0a5512ce8a109edabdf14ed34a72df35b·...·]-5">}</span><span·class="w">244 </span><span·class="p"·data-group-id="7954586075-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.89</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·4bc90758caf1290f0febb4e610a6594a7beff91f22b7248223483ff50c49fa37·...·]-5">}</span><span·class="w">
245 </span><span·class="c1">%%·a·get-next·request·with·one·OID.</span><span·class="gp·unselectable">245 </span><span·class="c1">%%·a·get-next·request·with·one·OID.</span><span·class="gp·unselectable">
246 2&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="5519348148-6">(</span><span·class="p"·data-group-id="5519348148-7">[</span><span·class="p"·data-group-id="5519348148-8">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">6</span><span[·...·truncated·by·diffoscope;·len:·289,·SHA:·da65599581d9363d3841da10689a32eeb6e9e00ba709951bbeed8022a762e7a1·...·]-6">)</span><span·class="p">.</span><span·class="w">246 2&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="7954586075-6">(</span><span·class="p"·data-group-id="7954586075-7">[</span><span·class="p"·data-group-id="7954586075-8">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">6</span><span[·...·truncated·by·diffoscope;·len:·289,·SHA:·a91dc60909692703d2f4edcf15f422d535109563c4351f4f45f4f381226e350b·...·]-6">)</span><span·class="p">.</span><span·class="w">
247 </span><span·class="ss">ok</span><span·class="w">247 </span><span·class="ss">ok</span><span·class="w">
248 </span><span·class="gt">*·Got·PDU:</span><span·class="w">248 </span><span·class="gt">*·Got·PDU:</span><span·class="w">
249 </span><span·class="p"·data-group-id="5519348148-9">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-9">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·65,·SHA:·40eb9282ed7f5ed3b25318ee348280f8ae59451791782f2bcd461cfbe927ba78·...·]-10">]</span><span·class="w">249 </span><span·class="p"·data-group-id="7954586075-9">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-9">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·65,·SHA:·ca6e789062c9347b18fde1e07042c90be42540f5960caf92940d45f35d8d0b85·...·]-10">]</span><span·class="w">
250 </span><span·class="c1">%%·A·set-request·(now·using·symbolic·names·for·convenience)</span><span·class="gp·unselectable">250 </span><span·class="c1">%%·A·set-request·(now·using·symbolic·names·for·convenience)</span><span·class="gp·unselectable">
251 3&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">s</span><span·class="p"·data-group-id="5519348148-11">(</span><span·class="p"·data-group-id="5519348148-12">[</span><span·class="p"·data-group-id="5519348148-13">{</span><span·class="p"·data-group-id="5519348148-14">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·300,·SHA:·8d56cb238f4ed72906d745db725408f9a833e24643f4e0fe5ea043946c4f4333·...·]-11">)</span><span·class="p">.</span><span·class="w">251 3&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">s</span><span·class="p"·data-group-id="7954586075-11">(</span><span·class="p"·data-group-id="7954586075-12">[</span><span·class="p"·data-group-id="7954586075-13">{</span><span·class="p"·data-group-id="7954586075-14">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·300,·SHA:·f467a150cb5e56cfc80fdb8d974190339af1ea7019583910a4a76d574de80dca·...·]-11">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="ss">ok</span><span·class="w">252 </span><span·class="ss">ok</span><span·class="w">
253 </span><span·class="gt">*·Got·PDU:</span><span·class="w">253 </span><span·class="gt">*·Got·PDU:</span><span·class="w">
254 </span><span·class="p"·data-group-id="5519348148-15">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-15">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="w">254 </span><span·class="p"·data-group-id="7954586075-15">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-15">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="w">
255 </span><span·class="c1">%%·Try·the·same·get-next·request·again</span><span·class="gp·unselectable">255 </span><span·class="c1">%%·Try·the·same·get-next·request·again</span><span·class="gp·unselectable">
256 4&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="5519348148-16">(</span><span·class="p"·data-group-id="5519348148-17">[</span><span·class="p"·data-group-id="5519348148-18">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">6</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·33b3f444b776607978cfd1dede2535ea886d80f6da4c594f74ba86a78a6c2741·...·]-16">)</span><span·class="p">.</span><span·class="w">256 4&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="7954586075-16">(</span><span·class="p"·data-group-id="7954586075-17">[</span><span·class="p"·data-group-id="7954586075-18">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">6</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·e1cd458da0155aceda760566a126075370d9e6b695e67fd07fb412cd03f633b6·...·]-16">)</span><span·class="p">.</span><span·class="w">
257 </span><span·class="ss">ok</span><span·class="w">257 </span><span·class="ss">ok</span><span·class="w">
258 </span><span·class="gt">*·Got·PDU:</span><span·class="w">258 </span><span·class="gt">*·Got·PDU:</span><span·class="w">
259 </span><span·class="p"·data-group-id="5519348148-19">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-19">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="w">259 </span><span·class="p"·data-group-id="7954586075-19">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-19">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="w">
260 </span><span·class="c1">%%·...·and·we·got·the·new·value.</span><span·class="w">260 </span><span·class="c1">%%·...·and·we·got·the·new·value.</span><span·class="w">
261 </span><span·class="c1">%%·you·can·event·do·row·operations.·How·to·add·a·row:</span><span·class="gp·unselectable">261 </span><span·class="c1">%%·you·can·event·do·row·operations.·How·to·add·a·row:</span><span·class="gp·unselectable">
262 5&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">s</span><span·class="p"·data-group-id="5519348148-20">(</span><span·class="p"·data-group-id="5519348148-21">[</span><span·class="p"·data-group-id="5519348148-22">{</span><span·class="p"·data-group-id="5519348148-23">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0[·...·truncated·by·diffoscope;·len:·1100,·SHA:·0a6b0a93d1ad3f8ae40af2663bb3c3bf9f1a34538f2c133237ce9677a6a63abb·...·]-20">)</span><span·class="p">.</span><span·class="w">262 5&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">s</span><span·class="p"·data-group-id="7954586075-20">(</span><span·class="p"·data-group-id="7954586075-21">[</span><span·class="p"·data-group-id="7954586075-22">{</span><span·class="p"·data-group-id="7954586075-23">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0[·...·truncated·by·diffoscope;·len:·1100,·SHA:·69b5c58b736f574da46c711347d114abee27a5997a25f2ce7b1fc5e507f79f38·...·]-20">)</span><span·class="p">.</span><span·class="w">
263 ·</span><span·class="c1">%%·createAndGo</span><span·class="w">263 ·</span><span·class="c1">%%·createAndGo</span><span·class="w">
264 </span><span·class="ss">ok</span><span·class="w">264 </span><span·class="ss">ok</span><span·class="w">
265 </span><span·class="gt">*·Got·PDU:</span><span·class="w">265 </span><span·class="gt">*·Got·PDU:</span><span·class="w">
266 </span><span·class="p"·data-group-id="5519348148-28">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-28">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="w">266 </span><span·class="p"·data-group-id="7954586075-28">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-28">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="w">
267 </span><span·class="p"·data-group-id="5519348148-29">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-29">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;home&quot;</span><span·class="w">267 </span><span·class="p"·data-group-id="7954586075-29">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-29">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;home&quot;</span><span·class="w">
268 </span><span·class="p"·data-group-id="5519348148-30">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-30">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="gp·unselectable">268 </span><span·class="p"·data-group-id="7954586075-30">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-30">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="gp·unselectable">
269 6&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="5519348148-31">(</span><span·class="p"·data-group-id="5519348148-32">[</span><span·class="p"·data-group-id="5519348148-33">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-33">[·...·truncated·by·diffoscope;·len:·103,·SHA:·1fefb58c0b520a2e2749c3fddeeab3129477100b0925f2fbc6ab839d1e5d86bf·...·]-31">)</span><span·class="p">.</span><span·class="w">269 6&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="7954586075-31">(</span><span·class="p"·data-group-id="7954586075-32">[</span><span·class="p"·data-group-id="7954586075-33">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-33">[·...·truncated·by·diffoscope;·len:·103,·SHA:·8b8cee5ed9e1f422616cf6a2d780b616b443c4851c9a66039b92dc65719a40ba·...·]-31">)</span><span·class="p">.</span><span·class="w">
270 </span><span·class="ss">ok</span><span·class="w">270 </span><span·class="ss">ok</span><span·class="w">
271 </span><span·class="gt">*·Got·PDU:</span><span·class="w">271 </span><span·class="gt">*·Got·PDU:</span><span·class="w">
272 </span><span·class="p"·data-group-id="5519348148-34">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-34">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="gp·unselectable">272 </span><span·class="p"·data-group-id="7954586075-34">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-34">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Martin&quot;</span><span·class="gp·unselectable">
273 7&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="5519348148-35">(</span><span·class="p"·data-group-id="5519348148-35">)</span><span·class="p">.</span><span·class="w">273 7&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="7954586075-35">(</span><span·class="p"·data-group-id="7954586075-35">)</span><span·class="p">.</span><span·class="w">
274 </span><span·class="ss">ok</span><span·class="w">274 </span><span·class="ss">ok</span><span·class="w">
275 </span><span·class="gt">*·Got·PDU:</span><span·class="w">275 </span><span·class="gt">*·Got·PDU:</span><span·class="w">
276 </span><span·class="p"·data-group-id="5519348148-36">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-36">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;home&quot;</span><span·class="gp·unselectable">276 </span><span·class="p"·data-group-id="7954586075-36">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-36">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;home&quot;</span><span·class="gp·unselectable">
277 8&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="5519348148-37">(</span><span·class="p"·data-group-id="5519348148-37">)</span><span·class="p">.</span><span·class="w">277 8&gt;·</span><span·class="nc">snmp_test_mgr</span><span·class="p">:</span><span·class="nf">gn</span><span·class="p"·data-group-id="7954586075-37">(</span><span·class="p"·data-group-id="7954586075-37">)</span><span·class="p">.</span><span·class="w">
278 </span><span·class="ss">ok</span><span·class="w">278 </span><span·class="ss">ok</span><span·class="w">
279 </span><span·class="gt">*·Got·PDU:</span><span·class="w">279 </span><span·class="gt">*·Got·PDU:</span><span·class="w">
280 </span><span·class="p"·data-group-id="5519348148-38">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5519348148-38">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">280 </span><span·class="p"·data-group-id="7954586075-38">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7954586075-38">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">
281 </span><span·class="mi">9</span><span·class="o">&gt;</span></code></pre><h2·id="manual-implementation"·class="section-heading">281 </span><span·class="mi">9</span><span·class="o">&gt;</span></code></pre><h2·id="manual-implementation"·class="section-heading">
282 ··<a·href="#manual-implementation"·class="hover-link">282 ··<a·href="#manual-implementation"·class="hover-link">
283 ····<i·class="ri-link-m"·aria-hidden="true"></i>283 ····<i·class="ri-link-m"·aria-hidden="true"></i>
284 ··</a>284 ··</a>
285 ··<span·class="text">Manual·Implementation</span>285 ··<span·class="text">Manual·Implementation</span>
286 </h2>286 </h2>
287 <p>The·following·example·shows·a·&quot;manual&quot;·implementation·of·the·EX1-MIB·in·Erlang.287 <p>The·following·example·shows·a·&quot;manual&quot;·implementation·of·the·EX1-MIB·in·Erlang.
Offset 291, 247 lines modifiedOffset 291, 247 lines modified
291 <code·class="inline">friendsTable</code>.·Each·row·is·a·4-tuple.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>There·are·more·efficient·ways·to·create·tables·manually,·i.e.·to·use·the291 <code·class="inline">friendsTable</code>.·Each·row·is·a·4-tuple.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>There·are·more·efficient·ways·to·create·tables·manually,·i.e.·to·use·the
292 module·<code·class="inline">snmp_index</code>.</p></section><h3·id="code"·class="section-heading">292 module·<code·class="inline">snmp_index</code>.</p></section><h3·id="code"·class="section-heading">
293 ··<a·href="#code"·class="hover-link">293 ··<a·href="#code"·class="hover-link">
294 ····<i·class="ri-link-m"·aria-hidden="true"></i>294 ····<i·class="ri-link-m"·aria-hidden="true"></i>
295 ··</a>295 ··</a>
296 ··<span·class="text">Code</span>296 ··<span·class="text">Code</span>
297 </h3>297 </h3>
298 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4545856875-1">(</span><span·class="ss">ex1</span><span·class="p"·data-group-id="4545856875-1">)</span><span·class="p">.</span><span·class="w">298 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4108563161-1">(</span><span·class="ss">ex1</span><span·class="p"·data-group-id="4108563161-1">)</span><span·class="p">.</span><span·class="w">
299 </span><span·class="p">-</span><span·class="na">author</span><span·class="p"·data-group-id="4545856875-2">(</span><span·class="ss">&#39;dummy@flop.org&#39;</span><span·class="p"·data-group-id="4545856875-2">)</span><span·class="p">.</span><span·class="w">299 </span><span·class="p">-</span><span·class="na">author</span><span·class="p"·data-group-id="4108563161-2">(</span><span·class="ss">&#39;dummy@flop.org&#39;</span><span·class="p"·data-group-id="4108563161-2">)</span><span·class="p">.</span><span·class="w">
300 </span><span·class="c1">%%·External·exports</span><span·class="w">300 </span><span·class="c1">%%·External·exports</span><span·class="w">
301 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4545856875-3">(</span><span·class="p"·data-group-id="4545856875-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_name</span><span·class="p">/</span><[·...·truncated·by·diffoscope;·len:·380,·SHA:·56186ce5ae4b9b09a5fedaf870f9db09c3ab51b6e8b9d14bd0b06c70032d86f0·...·]-3">)</span><span·class="p">.</span><span·class="w">301 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4108563161-3">(</span><span·class="p"·data-group-id="4108563161-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_name</span><span·class="p">/</span><[·...·truncated·by·diffoscope;·len:·380,·SHA:·032c6b31a21e729cc6bf8856e234d2567d07662f391b665b29f71d6f6cfcf736·...·]-3">)</span><span·class="p">.</span><span·class="w">
302 </span><span·class="c1">%%·Internal·exports</span><span·class="w">302 </span><span·class="c1">%%·Internal·exports</span><span·class="w">
303 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4545856875-5">(</span><span·class="p"·data-group-id="4545856875-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4545856875-6">]</span><span·class="p"·data-group-id="4545856875-5">)</span><span·class="p">.</span><span·class="w">303 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4108563161-5">(</span><span·class="p"·data-group-id="4108563161-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4108563161-6">]</span><span·class="p"·data-group-id="4108563161-5">)</span><span·class="p">.</span><span·class="w">
304 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4545856875-7">(</span><span·class="ss">status_col</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="4545856875-7">)</span><span·class="p">.</span><span·class="w">304 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4108563161-7">(</span><span·class="ss">status_col</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="4108563161-7">)</span><span·class="p">.</span><span·class="w">
305 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4545856875-8">(</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4545856875-8">)</span><span·class="p">.</span><span·class="w">305 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4108563161-8">(</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="4108563161-8">)</span><span·class="p">.</span><span·class="w">
306 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4545856875-9">(</span><span·class="ss">notInService</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4545856875-9">)</span><span·class="p">.</span><span·class="w">306 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4108563161-9">(</span><span·class="ss">notInService</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4108563161-9">)</span><span·class="p">.</span><span·class="w">
307 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4545856875-10">(</span><span·class="ss">notReady</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="4545856875-10">)</span><span·class="p">.</span><span·class="w">307 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4108563161-10">(</span><span·class="ss">notReady</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="4108563161-10">)</span><span·class="p">.</span><span·class="w">
308 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4545856875-11">(</span><span·class="ss">createAndGo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="4545856875-11">)</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">308 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4108563161-11">(</span><span·class="ss">createAndGo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="4108563161-11">)</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">
309 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4545856875-12">(</span><span·class="ss">createAndWait</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="4545856875-12">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">309 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4108563161-12">(</span><span·class="ss">createAndWait</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="4108563161-12">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">
310 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4545856875-13">(</span><span·class="ss">destroy</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">6</span><span·class="p"·data-group-id="4545856875-13">)</span><span·class="p">.</span><span·class="w">·······</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">310 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4108563161-13">(</span><span·class="ss">destroy</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">6</span><span·class="p"·data-group-id="4108563161-13">)</span><span·class="p">.</span><span·class="w">·······</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">
311 </span><span·class="nf">start</span><span·class="p"·data-group-id="4545856875-14">(</span><span·class="p"·data-group-id="4545856875-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">311 </span><span·class="nf">start</span><span·class="p"·data-group-id="4108563161-14">(</span><span·class="p"·data-group-id="4108563161-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
312 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4545856875-15">(</span><span·class="ss">ex1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4545856875-16">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·c3b06703c5a4f439f3bf083ad4e0a8ceff66cc398feb780f233a76f23b232009·...·]-15">)</span><span·class="p">.</span><span·class="w">312 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4108563161-15">(</span><span·class="ss">ex1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4108563161-16">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·9d38d69dc858326f45d46de2bdbf852717a473dfbd3593f1f6e22a8ec7086fa1·...·]-15">)</span><span·class="p">.</span><span·class="w">
313 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">313 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">
314 </span><span·class="c1">%%·Instrumentation·function·for·variable·myName.</span><span·class="w">314 </span><span·class="c1">%%·Instrumentation·function·for·variable·myName.</span><span·class="w">
315 </span><span·class="c1">%%·Returns:·(get)·{value,·Name}</span><span·class="w">315 </span><span·class="c1">%%·Returns:·(get)·{value,·Name}</span><span·class="w">
316 </span><span·class="c1">%%··········(set)·noError</span><span·class="w">316 </span><span·class="c1">%%··········(set)·noError</span><span·class="w">
317 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">317 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">
318 </span><span·class="nf">my_name</span><span·class="p"·data-group-id="4545856875-17">(</span><span·class="nb">get</span><span·class="p"·data-group-id="4545856875-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">318 </span><span·class="nf">my_name</span><span·class="p"·data-group-id="4108563161-17">(</span><span·class="nb">get</span><span·class="p"·data-group-id="4108563161-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
319 ····</span><span·class="ss">ex1_server</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4545856875-18">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4545856875-19">(</span><span·class="p"·data-group-id="4545856875-19">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_my_name</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·a262a91420676bde1806b2d523802c19259f999a77e7c0bf05374a1e7cc3b9b1·...·]-18">}</span><span·class="p">,</span><span·class="w">319 ····</span><span·class="ss">ex1_server</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4108563161-18">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4108563161-19">(</span><span·class="p"·data-group-id="4108563161-19">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_my_name</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·a1830441d11a3d91737fff43026bf82d1e6577962ca521c60b76349da03e9065·...·]-18">}</span><span·class="p">,</span><span·class="w">
320 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">wait_answer</span><span·class="p"·data-group-id="4545856875-20">(</span><span·class="p"·data-group-id="4545856875-20">)</span><span·class="p">,</span><span·class="w">320 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">wait_answer</span><span·class="p"·data-group-id="4108563161-20">(</span><span·class="p"·data-group-id="4108563161-20">)</span><span·class="p">,</span><span·class="w">
321 ····</span><span·class="p"·data-group-id="4545856875-21">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="4545856875-21">}</span><span·class="p">.</span><span·class="w">321 ····</span><span·class="p"·data-group-id="4108563161-21">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="4108563161-21">}</span><span·class="p">.</span><span·class="w">
322 </span><span·class="nf">my_name</span><span·class="p"·data-group-id="4545856875-22">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewName</span><span·class="p"·data-group-id="4545856875-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">322 </span><span·class="nf">my_name</span><span·class="p"·data-group-id="4108563161-22">(</span><span·class="ss">set</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewName</span><span·class="p"·data-group-id="4108563161-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
323 ····</span><span·class="ss">ex1_server</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4545856875-23">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4545856875-24">(</span><span·class="p"·data-group-id="4545856875-24">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4545856875-25">{</s[·...·truncated·by·diffoscope;·len:·212,·SHA:·8f41dc94f64a942e0f3531141aac4fc6715e6eb6c9183ca1b3d8d6b95ee22fc7·...·]-23">}</span><span·class="p">,</span><span·class="w">323 ····</span><span·class="ss">ex1_server</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4108563161-23">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4108563161-24">(</span><span·class="p"·data-group-id="4108563161-24">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4108563161-25">{</s[·...·truncated·by·diffoscope;·len:·212,·SHA:·36fa3f01d7005425fc3a8f98797f5f9c13c2e421a7a1753918897dc0f09eea38·...·]-23">}</span><span·class="p">,</span><span·class="w">
324 ····</span><span·class="ss">noError</span><span·class="p">.</span><span·class="w">324 ····</span><span·class="ss">noError</span><span·class="p">.</span><span·class="w">
325 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">325 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">
326 </span><span·class="c1">%%·Instrumentation·function·for·table·friendsTable.</span><span·class="w">326 </span><span·class="c1">%%·Instrumentation·function·for·table·friendsTable.</span><span·class="w">
327 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">327 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">
328 </span><span·class="nf">friends_table</span><span·class="p"·data-group-id="4545856875-26">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="4545856875-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">328 </span><span·class="nf">friends_table</span><span·class="p"·data-group-id="4108563161-26">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="4108563161-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
329 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_row</span><span·class="p"·data-group-id="4545856875-27">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4545856875-27">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">329 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_row</span><span·class="p"·data-group-id="4108563161-27">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4108563161-27">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
330 ···</span><span·class="p"·data-group-id="4545856875-28">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4545856875-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">330 ···</span><span·class="p"·data-group-id="4108563161-28">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4108563161-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
331 ········</span><span·class="nf">get_cols</span><span·class="p"·data-group-id="4545856875-29">(</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4545856875-29">)</span><span·class="p">;</span><span·class="w">331 ········</span><span·class="nf">get_cols</span><span·class="p"·data-group-id="4108563161-29">(</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4108563161-29">)</span><span·class="p">;</span><span·class="w">
332 ···</span><span·class="p">_</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">332 ···</span><span·class="p">_</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">
333 ········</span><span·class="p"·data-group-id="4545856875-30">{</span><span·class="ss">noValue</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">noSuchInstance</span><span·class="p"·data-group-id="4545856875-30">}</span><span·class="w">333 ········</span><span·class="p"·data-group-id="4108563161-30">{</span><span·class="ss">noValue</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">noSuchInstance</span><span·class="p"·data-group-id="4108563161-30">}</span><span·class="w">
334 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">334 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
335 </span><span·class="nf">friends_table</span><span·class="p"·data-group-id="4545856875-31">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="4545856875-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">335 </span><span·class="nf">friends_table</span><span·class="p"·data-group-id="4108563161-31">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RowIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cols</span><span·class="p"·data-group-id="4108563161-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
336 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_next_row</span><span·class="p"·data-group-id="4545856875-32">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4545856875-32">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">336 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_next_row</span><span·class="p"·data-group-id="4108563161-32">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4108563161-32">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
337 ···</span><span·class="p"·data-group-id="4545856875-33">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4545856875-33">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">337 ···</span><span·class="p"·data-group-id="4108563161-33">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4108563161-33">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
338 ········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="4545856875-34">(</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4545856875-34">)</span><span·class="p">;</span><span·class="w">338 ········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="4108563161-34">(</span><span·class="n">Cols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4108563161-34">)</span><span·class="p">;</span><span·class="w">
339 ···</span><span·class="p">_</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">339 ···</span><span·class="p">_</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">
340 ·······</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_next_row</span><span·class="p"·data-group-id="4545856875-35">(</span><span·class="p"·data-group-id="4545856875-36">[</span><span·class="p"·data-group-id="4545856875-36">]</span><span·class="p"·data-group-id="4545856875-35">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">340 ·······</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">get_next_row</span><span·class="p"·data-group-id="4108563161-35">(</span><span·class="p"·data-group-id="4108563161-36">[</span><span·class="p"·data-group-id="4108563161-36">]</span><span·class="p"·data-group-id="4108563161-35">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
341 ·····</span><span·class="p"·data-group-id="4545856875-37">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4545856875-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">341 ·····</span><span·class="p"·data-group-id="4108563161-37">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4108563161-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
342 ·········</span><span·class="c1">%·Get·next·cols·from·first·row.</span><span·class="w">342 ·········</span><span·class="c1">%·Get·next·cols·from·first·row.</span><span·class="w">
343 ·········</span><span·class="n">NewCols</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">add_one_to_cols</span><span·class="p"·data-group-id="4545856875-38">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4545856875-38">)</span><span·class="p">,</span><span·class="w">343 ·········</span><span·class="n">NewCols</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">add_one_to_cols</span><span·class="p"·data-group-id="4108563161-38">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4108563161-38">)</span><span·class="p">,</span><span·class="w">
344 ·········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="4545856875-39">(</span><span·class="n">NewCols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4545856875-39">)</span><span·class="p">;</span><span·class="w">344 ·········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="4108563161-39">(</span><span·class="n">NewCols</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Row</span><span·class="p"·data-group-id="4108563161-39">)</span><span·class="p">;</span><span·class="w">
345 ·····</span><span·class="p">_</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">345 ·····</span><span·class="p">_</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">
346 ········</span><span·class="nf">end_of_table</span><span·class="p"·data-group-id="4545856875-40">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4545856875-40">)</span><span·class="w">346 ········</span><span·class="nf">end_of_table</span><span·class="p"·data-group-id="4108563161-40">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4108563161-40">)</span><span·class="w">
347 ········</span><span·class="k">end</span><span·class="w">347 ········</span><span·class="k">end</span><span·class="w">
348 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">348 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
349 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">349 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">
350 </span><span·class="c1">%%·If·RowStatus·is·set,·then:</span><span·class="w">350 </span><span·class="c1">%%·If·RowStatus·is·set,·then:</span><span·class="w">
351 </span><span·class="c1">%%····*)·If·set·to·destroy,·check·that·row·does·exist</span><span·class="w">351 </span><span·class="c1">%%····*)·If·set·to·destroy,·check·that·row·does·exist</span><span·class="w">
352 </span><span·class="c1">%%····*)·If·set·to·createAndGo,·check·that·row·does·not·exist·AND</span><span·class="w">352 </span><span·class="c1">%%····*)·If·set·to·createAndGo,·check·that·row·does·not·exist·AND</span><span·class="w">
353 </span><span·class="c1">%%·········that·all·columns·are·given·values.</span><span·class="w">353 </span><span·class="c1">%%·········that·all·columns·are·given·values.</span><span·class="w">
354 </span><span·class="c1">%%····*)·Otherwise,·error·(for·simplicity).</span><span·class="w">354 </span><span·class="c1">%%····*)·Otherwise,·error·(for·simplicity).</span><span·class="w">
Max diff block lines reached; 127865/177824 bytes (71.91%) of diff not shown.
6.65 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_index.html
    
Offset 131, 21 lines modifiedOffset 131, 21 lines modified
131 <p>Abstract·Data·Type·for·SNMP·Indexing</p><p>The·module·<code·class="inline">snmp_index</code>·implements·an·Abstract·Data·Type·(ADT)·for·an·SNMP·index131 <p>Abstract·Data·Type·for·SNMP·Indexing</p><p>The·module·<code·class="inline">snmp_index</code>·implements·an·Abstract·Data·Type·(ADT)·for·an·SNMP·index
132 structure·for·SNMP·tables.·It·is·implemented·as·an·ets·table·of·the·ordered_set132 structure·for·SNMP·tables.·It·is·implemented·as·an·ets·table·of·the·ordered_set
133 data-type,·which·means·that·all·operations·are·O(log·n).·In·the·table,·the·key133 data-type,·which·means·that·all·operations·are·O(log·n).·In·the·table,·the·key
134 is·an·ASN.1·OBJECT·IDENTIFIER.</p><p>This·index·is·used·to·separate·the·implementation·of·the·SNMP·ordering·from·the134 is·an·ASN.1·OBJECT·IDENTIFIER.</p><p>This·index·is·used·to·separate·the·implementation·of·the·SNMP·ordering·from·the
135 actual·implementation·of·the·table.·The·SNMP·ordering,·that·is·implementation·of135 actual·implementation·of·the·table.·The·SNMP·ordering,·that·is·implementation·of
136 GET·NEXT,·is·implemented·in·this·module.</p><p>For·example,·suppose·there·is·an·SNMP·table,·which·is·best·implemented·in·Erlang136 GET·NEXT,·is·implemented·in·this·module.</p><p>For·example,·suppose·there·is·an·SNMP·table,·which·is·best·implemented·in·Erlang
137 as·one·process·per·SNMP·table·row.·Suppose·further·that·the·INDEX·in·the·SNMP137 as·one·process·per·SNMP·table·row.·Suppose·further·that·the·INDEX·in·the·SNMP
138 table·is·an·OCTET·STRING.·The·index·structure·would·be·created·as·follows:</p><pre><code·class="text">snmp_index:new(string)</code></pre><p>For·each·new·process·we·create,·we·insert·an·item·in·an·<code·class="inline">snmp_index</code>·structure:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">new_process</span><span·class="p"·data-group-id="9635607485-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SnmpIndex</span><span·class="p"·data-group-id="9635607485-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 table·is·an·OCTET·STRING.·The·index·structure·would·be·created·as·follows:</p><pre><code·class="text">snmp_index:new(string)</code></pre><p>For·each·new·process·we·create,·we·insert·an·item·in·an·<code·class="inline">snmp_index</code>·structure:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">new_process</span><span·class="p"·data-group-id="2532945670-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SnmpIndex</span><span·class="p"·data-group-id="2532945670-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ··</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_process</span><span·class="p"·data-group-id="9635607485-2">(</span><span·class="p"·data-group-id="9635607485-2">)</span><span·class="p">,</span><span·class="w">139 ··</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_process</span><span·class="p"·data-group-id="2532945670-2">(</span><span·class="p"·data-group-id="2532945670-2">)</span><span·class="p">,</span><span·class="w">
140 ··</span><span·class="n">NewSnmpIndex</span><span·class="w">·</span><span·class="o">=</span><span·class="w">140 ··</span><span·class="n">NewSnmpIndex</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
141 ····</span><span·class="nc">snmp_index</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="9635607485-3">(</span><span·class="n">SnmpIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="9635607485-3">)</span><span·class="p">,</span><span·class="w">141 ····</span><span·class="nc">snmp_index</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="2532945670-3">(</span><span·class="n">SnmpIndex</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="2532945670-3">)</span><span·class="p">,</span><span·class="w">
142 ··</span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="o">&gt;</span></code></pre><p>With·this·structure,·we·can·now·map·an·OBJECT·IDENTIFIER·in·e.g.·a·GET·NEXT142 ··</span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="o">&gt;</span></code></pre><p>With·this·structure,·we·can·now·map·an·OBJECT·IDENTIFIER·in·e.g.·a·GET·NEXT
143 request,·to·the·correct·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">get_next_pid</span><span·class="p"·data-group-id="9462001062-1">(</span><span·class="n">Oid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SnmpIndex</span><span·class="p"·data-group-id="9462001062-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">143 request,·to·the·correct·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">get_next_pid</span><span·class="p"·data-group-id="4055764923-1">(</span><span·class="n">Oid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SnmpIndex</span><span·class="p"·data-group-id="4055764923-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ··</span><span·class="p"·data-group-id="9462001062-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9462001062-3">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·cla[·...·truncated·by·diffoscope;·len:·459,·SHA:·01b9c7bf4c595162becb085b8e90ae00eeb124f4e32aea7a89ad840b97c2dde8·...·]-4">)</span><span·class="p">,</span><span·class="w">144 ··</span><span·class="p"·data-group-id="4055764923-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4055764923-3">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·cla[·...·truncated·by·diffoscope;·len:·459,·SHA:·8c081c418ca450f24735f21b2383415e9412dff4dd6a9d05b967b1eae3960d18·...·]-4">)</span><span·class="p">,</span><span·class="w">
145 ··</span><span·class="n">Pid</span><span·class="p">.</span></code></pre><h2·id="module-warnings"·class="section-heading">145 ··</span><span·class="n">Pid</span><span·class="p">.</span></code></pre><h2·id="module-warnings"·class="section-heading">
146 ··<a·href="#module-warnings"·class="hover-link">146 ··<a·href="#module-warnings"·class="hover-link">
147 ····<i·class="ri-link-m"·aria-hidden="true"></i>147 ····<i·class="ri-link-m"·aria-hidden="true"></i>
148 ··</a>148 ··</a>
149 ··<span·class="text">Warnings</span>149 ··<span·class="text">Warnings</span>
150 </h2>150 </h2>
151 <section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p><a·href=""·id="1"></a>·All·API·functions·that·update·the·index·return·a·<code·class="inline">NewIndex</code>·term.151 <section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p><a·href=""·id="1"></a>·All·API·functions·that·update·the·index·return·a·<code·class="inline">NewIndex</code>·term.
20.0 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_instr_functions.html
    
Offset 210, 17 lines modifiedOffset 210, 17 lines modified
210 accessible),·and·the·table·has·three·rows.·The·instrumentation·function·for·this210 accessible),·and·the·table·has·three·rows.·The·instrumentation·function·for·this
211 table·is·called·<code·class="inline">my_table</code>.</p><p><a·href=""·id="getnext1"></a></p><p><img·src="assets/getnext1.gif"·alt="Contents·of·my_table"·title="Contents·of·my_table"/></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>N/A·means·not·accessible.</p></section><p>The·manager·issues·the·following·<code·class="inline">getNext</code>·request:</p><pre><code·class="text">getNext{·myTable.myTableEntry.3.1.1,211 table·is·called·<code·class="inline">my_table</code>.</p><p><a·href=""·id="getnext1"></a></p><p><img·src="assets/getnext1.gif"·alt="Contents·of·my_table"·title="Contents·of·my_table"/></p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>N/A·means·not·accessible.</p></section><p>The·manager·issues·the·following·<code·class="inline">getNext</code>·request:</p><pre><code·class="text">getNext{·myTable.myTableEntry.3.1.1,
212 ·········myTable.myTableEntry.5.1.1·}</code></pre><p>Since·both·operations·involve·the·1.1·index,·this·is·transformed·into·one·call212 ·········myTable.myTableEntry.5.1.1·}</code></pre><p>Since·both·operations·involve·the·1.1·index,·this·is·transformed·into·one·call
213 to·<code·class="inline">my_table</code>:</p><pre><code·class="text">my_table(get_next,·[1,·1],·[3,·5])</code></pre><p>In·this·call,·<code·class="inline">[1,·1]</code>·is·the·<code·class="inline">RowIndex</code>,·where·key·1·has·value·1,·and·key·2·has213 to·<code·class="inline">my_table</code>:</p><pre><code·class="text">my_table(get_next,·[1,·1],·[3,·5])</code></pre><p>In·this·call,·<code·class="inline">[1,·1]</code>·is·the·<code·class="inline">RowIndex</code>,·where·key·1·has·value·1,·and·key·2·has
214 value·1,·and·<code·class="inline">[3,·5]</code>·is·the·list·of·requested·columns.·The·function·should·now214 value·1,·and·<code·class="inline">[3,·5]</code>·is·the·list·of·requested·columns.·The·function·should·now
215 return·the·lexicographically·next·elements:</p><pre><code·class="text">[{[3,·1,·2],·d},·{[5,·1,·2],·f}]</code></pre><p>This·is·illustrated·in·the·following·table:</p><p><a·href=""·id="getnext2"></a></p><p><img·src="assets/getnext2.gif"·alt="GetNext·from·[3,1,1]·and·[5,1,1]."·title="GetNext·from·[3,1,1]·and·[5,1,1]."/></p><p>The·manager·now·issues·the·following·<code·class="inline">getNext</code>·request:</p><pre><code·class="text">getNext{·myTable.myTableEntry.3.2.1,215 return·the·lexicographically·next·elements:</p><pre><code·class="text">[{[3,·1,·2],·d},·{[5,·1,·2],·f}]</code></pre><p>This·is·illustrated·in·the·following·table:</p><p><a·href=""·id="getnext2"></a></p><p><img·src="assets/getnext2.gif"·alt="GetNext·from·[3,1,1]·and·[5,1,1]."·title="GetNext·from·[3,1,1]·and·[5,1,1]."/></p><p>The·manager·now·issues·the·following·<code·class="inline">getNext</code>·request:</p><pre><code·class="text">getNext{·myTable.myTableEntry.3.2.1,
216 ·········myTable.myTableEntry.5.2.1·}</code></pre><p>This·is·transformed·into·one·call·to·<code·class="inline">my_table</code>:</p><pre><code·class="text">my_table(get_next,·[2,·1],·[3,·5])</code></pre><p>The·function·should·now·return:</p><pre><code·class="text">[{[4,·1,·1],·b},·endOfTable]</code></pre><p>This·is·illustrated·in·the·following·table:</p><p><a·href=""·id="getnext3"></a></p><p><img·src="assets/getnext3.gif"·alt="GetNext·from·[3,2,1]·and·[5,2,1]."·title="GetNext·from·[3,2,1]·and·[5,2,1]."/></p><p>The·manager·now·issues·the·following·<code·class="inline">getNext</code>·request:</p><pre><code·class="text">getNext{·myTable.myTableEntry.3.1.2,216 ·········myTable.myTableEntry.5.2.1·}</code></pre><p>This·is·transformed·into·one·call·to·<code·class="inline">my_table</code>:</p><pre><code·class="text">my_table(get_next,·[2,·1],·[3,·5])</code></pre><p>The·function·should·now·return:</p><pre><code·class="text">[{[4,·1,·1],·b},·endOfTable]</code></pre><p>This·is·illustrated·in·the·following·table:</p><p><a·href=""·id="getnext3"></a></p><p><img·src="assets/getnext3.gif"·alt="GetNext·from·[3,2,1]·and·[5,2,1]."·title="GetNext·from·[3,2,1]·and·[5,2,1]."/></p><p>The·manager·now·issues·the·following·<code·class="inline">getNext</code>·request:</p><pre><code·class="text">getNext{·myTable.myTableEntry.3.1.2,
217 ·········myTable.myTableEntry.4.1.2·}</code></pre><p>This·will·be·transform·into·one·call·to·<code·class="inline">my_table</code>:</p><pre><code·class="text">my_table(get_next,·[1,·2],·[3,·4])</code></pre><p>The·function·should·now·return:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1378937279-1">[</span><span·class="p"·data-group-id="1378937279-2">{</span><span·class="p"·data-group-id="1378937279-3">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1378937279-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">g</span><span·class="p"·data-group-id="1378937279-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1378937279-4">{</span><span·class="p"·data-group-id="1378937279-5">[</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1378937279-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id="1378937279-4">}</span><span·class="p"·data-group-id="1378937279-1">]</span></code></pre><p>This·is·illustrated·in·the·following·table:</p><p><a·href=""·id="getnext4"></a></p><p><img·src="assets/getnext4.gif"·alt="GetNext·from·[3,1,2]·and·[4,1,2]."·title="GetNext·from·[3,1,2]·and·[4,1,2]."/></p><p>The·manager·now·issues·the·following·<code·class="inline">getNext</code>·request:</p><pre><code·class="text">getNext{·myTable.myTableEntry, 
218 ·········myTable.myTableEntry.1.3.2·}</code></pre><p>This·will·be·transform·into·two·calls·to·<code·class="inline">my_table</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_table</span><span·class="p"·data-group-id="2117234709-1">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2117234709-2">[</span><span·class="p"·data-group-id="2117234709-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2117234709-3">[</span><span·class="mi">0</span><span·class="p"·data-group-id="2117234709-3">]</span><span·class="p"·data-group-id="2117234709-1">)</span><span·class="w">·</span><span·class="ow">and</span><span·class="w"> 
219 </span><span·class="nf">my_table</span><span·class="p"·data-group-id="2117234709-4">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2117234709-5">[</span><span·class="mi">3</span><span·[·...·truncated·by·diffoscope;·len:·447,·SHA:·889b06400bf5f50bdaca3b80baf1b040e1f705173a33e764ce3da6bb372620b2·...·]217 ·········myTable.myTableEntry.4.1.2·}</code></pre><p>This·will·be·transform·into·one·call·to·<code·class="inline">my_table</code>:</p><pre><code·class="text">my_table(get_next,·[1,·2],·[3,·4])</code></pre><p>The·function·should·now·return:</p><pre><code·cl[·...·truncated·by·diffoscope;·len:·1463,·SHA:·e321ad0ef2d558bd4588bdd9ca98a121de1c1feae3b4416bb37431fb0f0a1c7b·...·]
 218 ·········myTable.myTableEntry.1.3.2·}</code></pre><p>This·will·be·transform·into·two·calls·to·<code·class="inline">my_table</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_table</span><span·class="p"·data-group-id="9430423870-1">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9430423870-2">[</span><span·class="p"·data-group-id="9430423870-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9430423870-3">[</span><span·class="mi">0</span><span·class="p"·data-group-id="9430423870-3">]</span><span·class="p"·data-group-id="9430423870-1">)</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">
 219 </span><span·class="nf">my_table</span><span·class="p"·data-group-id="9430423870-4">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9430423870-5">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="9430423870-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9430423870-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="9430423870-6">]</span><span·class="p"·data-group-id="9430423870-4">)</span></code></pre><p>The·function·should·now·return:</p><pre><code·class="text">[{[3,·1,·1],·a}]·and
220 [{[3,·1,·1],·a}]</code></pre><p>In·both·cases,·the·first·accessible·element·in·the·table·should·be·returned.·As220 [{[3,·1,·1],·a}]</code></pre><p>In·both·cases,·the·first·accessible·element·in·the·table·should·be·returned.·As
221 the·key·columns·are·not·accessible,·this·means·that·the·third·column·is·the221 the·key·columns·are·not·accessible,·this·means·that·the·third·column·is·the
222 first·row.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Normally,·the·functions·described·above·behave·exactly·as·shown,·but·they·are222 first·row.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Normally,·the·functions·described·above·behave·exactly·as·shown,·but·they·are
223 free·to·perform·other·actions.·For·example,·a·get-request·may·have·side223 free·to·perform·other·actions.·For·example,·a·get-request·may·have·side
224 effects·such·as·setting·some·other·variable,·perhaps·a·global·<code·class="inline">lastAccessed</code>224 effects·such·as·setting·some·other·variable,·perhaps·a·global·<code·class="inline">lastAccessed</code>
225 variable.</p></section><h2·id="using-the-extraargument"·class="section-heading">225 variable.</p></section><h2·id="using-the-extraargument"·class="section-heading">
226 ··<a·href="#using-the-extraargument"·class="hover-link">226 ··<a·href="#using-the-extraargument"·class="hover-link">
Offset 229, 25 lines modifiedOffset 229, 25 lines modified
229 ··<span·class="text">Using·the·ExtraArgument</span>229 ··<span·class="text">Using·the·ExtraArgument</span>
230 </h2>230 </h2>
231 <p>The·<code·class="inline">ListOfExtraArguments</code>·can·be·used·to·write·generic·functions.·This·list·is231 <p>The·<code·class="inline">ListOfExtraArguments</code>·can·be·used·to·write·generic·functions.·This·list·is
232 appended·to·the·standard·arguments·for·each·function.·Consider·two·read-only232 appended·to·the·standard·arguments·for·each·function.·Consider·two·read-only
233 variables·for·a·device,·<code·class="inline">ipAdr</code>·and·<code·class="inline">name</code>·with·object·identifiers·1.1.23.4·and233 variables·for·a·device,·<code·class="inline">ipAdr</code>·and·<code·class="inline">name</code>·with·object·identifiers·1.1.23.4·and
234 1.1.7·respectively.·To·access·these·variables,·one·could·implement·the·two234 1.1.7·respectively.·To·access·these·variables,·one·could·implement·the·two
235 Erlang·functions·<code·class="inline">ip_access</code>·and·<code·class="inline">name_access</code>,·which·will·be·in·the·MIB.·The235 Erlang·functions·<code·class="inline">ip_access</code>·and·<code·class="inline">name_access</code>,·which·will·be·in·the·MIB.·The
236 functions·could·be·specified·in·a·text·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2938599501-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2938599501-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ip_acc[·...·truncated·by·diffoscope;·len:·258,·SHA:·61a0bdefea0a925dc5893a8ba9467527d1521b053f8462f27b619e8801f4992c·...·]-1">}</span><span·class="p">.</span><span·class="w">236 functions·could·be·specified·in·a·text·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1325173488-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1325173488-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ip_acc[·...·truncated·by·diffoscope;·len:·258,·SHA:·62d5d5900412d7cf10e14c4620487f8fa500c504731e7d96a5dd952b59c66ca2·...·]-1">}</span><span·class="p">.</span><span·class="w">
237 </span><span·class="c1">%·Or·using·the·oid·syntax·for·&#39;name&#39;</span><span·class="w">237 </span><span·class="c1">%·Or·using·the·oid·syntax·for·&#39;name&#39;</span><span·class="w">
238 </span><span·class="p"·data-group-id="2938599501-4">{</span><span·class="p"·data-group-id="2938599501-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="2938599501-5">]</span><span[·...·truncated·by·diffoscope;·len:·460,·SHA:·b802549521b1e4a68e1fac916e1203f5abcd3c65890dc87a3ffae69604c8d22b·...·]-4">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">ExtraArgument</code>·parameter·is·the·empty·list.·For·example,·when·the·agent238 </span><span·class="p"·data-group-id="1325173488-4">{</span><span·class="p"·data-group-id="1325173488-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1325173488-5">]</span><span[·...·truncated·by·diffoscope;·len:·460,·SHA:·250fe383092f008b7be4f8e6c0183fba2b8aa5bce18e6cefacd79e3403542509·...·]-4">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">ExtraArgument</code>·parameter·is·the·empty·list.·For·example,·when·the·agent
239 receives·a·get-request·for·the·<code·class="inline">ipAdr</code>·variable,·a·call·will·be·made·to239 receives·a·get-request·for·the·<code·class="inline">ipAdr</code>·variable,·a·call·will·be·made·to
240 <code·class="inline">ip_access(get)</code>.·The·value·returned·by·this·function·is·the·answer·to·the240 <code·class="inline">ip_access(get)</code>.·The·value·returned·by·this·function·is·the·answer·to·the
241 get-request.</p><p>If·<code·class="inline">ip_access</code>·and·<code·class="inline">name_access</code>·are·implemented·similarly,·we·could·write·a241 get-request.</p><p>If·<code·class="inline">ip_access</code>·and·<code·class="inline">name_access</code>·are·implemented·similarly,·we·could·write·a
242 <code·class="inline">generic_access</code>·function·using·the·<code·class="inline">ListOfExtraArguments</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0160842839-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0160842839-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·302,·SHA:·1cca198276b645ac1142d01d6592b6f366ae04a5746338c4c16ad8bf1de34adc·...·]-1">}</span><span·class="p">.</span><span·class="w">242 <code·class="inline">generic_access</code>·function·using·the·<code·class="inline">ListOfExtraArguments</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9215557230-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9215557230-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·302,·SHA:·fe780c191bc703c4ba6ceee15c87278154ff9471aac9870bff78f3679b6cf595·...·]-1">}</span><span·class="p">.</span><span·class="w">
243 </span><span·class="c1">%·The·mnemonic·&#39;name&#39;·is·more·convenient·than·1.1.7</span><span·class="w">243 </span><span·class="c1">%·The·mnemonic·&#39;name&#39;·is·more·convenient·than·1.1.7</span><span·class="w">
244 </span><span·class="p"·data-group-id="0160842839-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0160842839-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·300,·SHA:·6870a783df7ef5ee3e6bf31c74bb40feb9415e1063a42893a578a7653b613bb2·...·]-4">}</span><span·class="p">.</span></code></pre><p>When·the·agent·receives·the·same·get-request·as·above,·a·call·will·be·made·to244 </span><span·class="p"·data-group-id="9215557230-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9215557230-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·300,·SHA:·91e59fd07e417291821f40c30246a7cedf0e38450075f80a0492723be19ed1d6·...·]-4">}</span><span·class="p">.</span></code></pre><p>When·the·agent·receives·the·same·get-request·as·above,·a·call·will·be·made·to
245 <code·class="inline">generic_access(get,</code>'<code·class="inline">IPADR')</code>.</p><p>Yet·another·possibility,·closer·to·the·hardware,·could·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0977605407-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0977605407-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·294,·SHA:·3393798a2554cba3480469f4cde25665f0a9b8ba62cd1ca006c8453f94e8606f·...·]-1">}</span><span·class="p">.</span><span·class="w">245 <code·class="inline">generic_access(get,</code>'<code·class="inline">IPADR')</code>.</p><p>Yet·another·possibility,·closer·to·the·hardware,·could·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3844897103-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3844897103-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·294,·SHA:·e688c8efcaae3c8a634873a4749aba23e1af63b7b8cad1ccfa57319696918a5b·...·]-1">}</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="0977605407-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0977605407-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·293,·SHA:·2c2e1ef188842ecef59870de4e9d448e00fbac416986561aa80ae16f68ac4f99·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="default-instrumentation"·class="section-heading">246 </span><span·class="p"·data-group-id="3844897103-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3844897103-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·293,·SHA:·6e17c5bdb6165645244b28358639268a0aadd6acd3ec0458751dd1f42aac6a67·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="default-instrumentation"·class="section-heading">
247 ··<a·href="#default-instrumentation"·class="hover-link">247 ··<a·href="#default-instrumentation"·class="hover-link">
248 ····<i·class="ri-link-m"·aria-hidden="true"></i>248 ····<i·class="ri-link-m"·aria-hidden="true"></i>
249 ··</a>249 ··</a>
250 ··<span·class="text">Default·Instrumentation</span>250 ··<span·class="text">Default·Instrumentation</span>
251 </h2>251 </h2>
252 <p><a·href=""·id="snmp_3"></a></p><p>When·the·MIB·definition·work·is·finished,·there·are·two·major·issues·left.</p><ul><li>Implementing·the·MIB</li><li>Implementing·a·Manager·Application.</li></ul><p>Implementing·an·MIB·can·be·a·tedious·task.·Most·probably,·there·is·a·need·to252 <p><a·href=""·id="snmp_3"></a></p><p>When·the·MIB·definition·work·is·finished,·there·are·two·major·issues·left.</p><ul><li>Implementing·the·MIB</li><li>Implementing·a·Manager·Application.</li></ul><p>Implementing·an·MIB·can·be·a·tedious·task.·Most·probably,·there·is·a·need·to
253 test·the·agent·before·all·tables·and·variables·are·implemented.·In·this·case,253 test·the·agent·before·all·tables·and·variables·are·implemented.·In·this·case,
7.09 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_manager_config_files.html
    
Offset 145, 18 lines modifiedOffset 145, 18 lines modified
145 and·<code·class="inline">IpPort</code>·is·an·integer.</p><p>When·<code·class="inline">Addr</code>·does·not·contain·a·port·number,·the·value·of·<code·class="inline">port</code>·is·used.</p><p>When·a·<code·class="inline">Addr</code>·is·not·specified·i.e·by·using·only·a·<code·class="inline">Domain</code>·atom,·the145 and·<code·class="inline">IpPort</code>·is·an·integer.</p><p>When·<code·class="inline">Addr</code>·does·not·contain·a·port·number,·the·value·of·<code·class="inline">port</code>·is·used.</p><p>When·a·<code·class="inline">Addr</code>·is·not·specified·i.e·by·using·only·a·<code·class="inline">Domain</code>·atom,·the
146 host's·name·is·resolved·to·find·the·IP·address,·and·the·value·of·<code·class="inline">port</code>·is146 host's·name·is·resolved·to·find·the·IP·address,·and·the·value·of·<code·class="inline">port</code>·is
147 used.</p></li></ul></li><li><p><code·class="inline">port</code>·-·which·defines·which·UDP·port·the·manager·uses·for·communicating147 used.</p></li></ul></li><li><p><code·class="inline">port</code>·-·which·defines·which·UDP·port·the·manager·uses·for·communicating
148 with·agents.·<em>Mandatory</em>·if·<code·class="inline">transports</code>·does·not·define·a·port·number·for148 with·agents.·<em>Mandatory</em>·if·<code·class="inline">transports</code>·does·not·define·a·port·number·for
149 every·transport.</p></li><li><p><code·class="inline">engine_id</code>·-·The·<code·class="inline">SnmpEngineID</code>·as·defined·in·SNMP-FRAMEWORK-MIB.149 every·transport.</p></li><li><p><code·class="inline">engine_id</code>·-·The·<code·class="inline">SnmpEngineID</code>·as·defined·in·SNMP-FRAMEWORK-MIB.
150 <em>Mandatory</em>.</p></li><li><p><code·class="inline">max_message_size</code>·-·The·<code·class="inline">snmpEngineMaxMessageSize</code>·as·defined·in150 <em>Mandatory</em>.</p></li><li><p><code·class="inline">max_message_size</code>·-·The·<code·class="inline">snmpEngineMaxMessageSize</code>·as·defined·in
151 SNMP-FRAMEWORK-MIB.·<em>Mandatory</em>.</p></li></ul></li><li><p><code·class="inline">Value</code>·is·the·value·for·the·variable.</p></li></ul><p>The·legacy·and·intermediate·variables·<code·class="inline">address</code>·and·<code·class="inline">domain</code>·are·still·supported151 SNMP-FRAMEWORK-MIB.·<em>Mandatory</em>.</p></li></ul></li><li><p><code·class="inline">Value</code>·is·the·value·for·the·variable.</p></li></ul><p>The·legacy·and·intermediate·variables·<code·class="inline">address</code>·and·<code·class="inline">domain</code>·are·still·supported
152 so·old·configurations·will·work.</p><p>The·following·example·shows·a·<code·class="inline">manager.conf</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6725466708-1">{</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="6725466708-2">[</span><span·class="p"·data-group-id="6725466708-3">{</span><span·class="ss">transportDomainUdpIpv4<[·...·truncated·by·diffoscope;·len:·561,·SHA:·6cff3c041afdc460e7849cd04a9019337b8ffea0585290a4db2a5b33a8182945·...·]-3">}</span><span·class="p">,</span><span·class="w">152 so·old·configurations·will·work.</p><p>The·following·example·shows·a·<code·class="inline">manager.conf</code>·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2342278855-1">{</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="2342278855-2">[</span><span·class="p"·data-group-id="2342278855-3">{</span><span·class="ss">transportDomainUdpIpv4<[·...·truncated·by·diffoscope;·len:·561,·SHA:·35e99846482238f6c975b91e95f566a2f2ea5e540b27f1bef88a36ef079168d6·...·]-3">}</span><span·class="p">,</span><span·class="w">
153 ····················</span><span·class="p"·data-group-id="6725466708-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6725466708-7">{</span><span·class="p"·data-group-id="6725466708-8">{</span><span·class="mi">0</span><span·cla[·...·truncated·by·diffoscope;·len:·663,·SHA:·e18f9bd3eda218864421c042c210d1a9e3c62ab9dea660bcafada48e1b2c7b2b·...·]-1">}</span><span·class="p">.</span><span·class="w">153 ····················</span><span·class="p"·data-group-id="2342278855-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2342278855-7">{</span><span·class="p"·data-group-id="2342278855-8">{</span><span·class="mi">0</span><span·cla[·...·truncated·by·diffoscope;·len:·663,·SHA:·d993a42b02b5f20f46c7d692cf965f4beedb25ebc756b21ca23ed738a2c07bad·...·]-1">}</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="6725466708-9">{</span><span·class="ss">engine_id</span><span·class="p">,</span><span·class="w">········</span><span·class="s">&quot;mgrEngine&quot;</span><span·class="p"·data-group-id="6725466708-9">}</span><span·class="p">.</span><span·class="w">154 </span><span·class="p"·data-group-id="2342278855-9">{</span><span·class="ss">engine_id</span><span·class="p">,</span><span·class="w">········</span><span·class="s">&quot;mgrEngine&quot;</span><span·class="p"·data-group-id="2342278855-9">}</span><span·class="p">.</span><span·class="w">
155 </span><span·class="p"·data-group-id="6725466708-10">{</span><span·class="ss">max_message_size</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">484</span><span·class="p"·data-group-id="6725466708-10">}</span><span·class="p">.</span></code></pre><p>The·value·of·<code·class="inline">engine_id</code>·is·a·string,·which·should·have·a·very·specific155 </span><span·class="p"·data-group-id="2342278855-10">{</span><span·class="ss">max_message_size</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">484</span><span·class="p"·data-group-id="2342278855-10">}</span><span·class="p">.</span></code></pre><p>The·value·of·<code·class="inline">engine_id</code>·is·a·string,·which·should·have·a·very·specific
156 structure.·See·RFC·2271/2571·for·details.</p><h2·id="users"·class="section-heading">156 structure.·See·RFC·2271/2571·for·details.</p><h2·id="users"·class="section-heading">
157 ··<a·href="#users"·class="hover-link">157 ··<a·href="#users"·class="hover-link">
158 ····<i·class="ri-link-m"·aria-hidden="true"></i>158 ····<i·class="ri-link-m"·aria-hidden="true"></i>
159 ··</a>159 ··</a>
160 ··<span·class="text">Users</span>160 ··<span·class="text">Users</span>
161 </h2>161 </h2>
162 <p>For·each·<em>manager·user</em>,·the·manager·needs·some·information.·This·information·is162 <p>For·each·<em>manager·user</em>,·the·manager·needs·some·information.·This·information·is
7.35 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_mib_compiler.html
    
Offset 137, 30 lines modifiedOffset 137, 30 lines modified
137 before·it·will·be·compiled.·This·text·file·must·have·the·same·name·as·the·MIB,137 before·it·will·be·compiled.·This·text·file·must·have·the·same·name·as·the·MIB,
138 but·with·the·suffix·<code·class="inline">.mib</code>.·This·is·necessary·for·handling·the·<code·class="inline">IMPORT</code>138 but·with·the·suffix·<code·class="inline">.mib</code>.·This·is·necessary·for·handling·the·<code·class="inline">IMPORT</code>
139 statement.</p><p>The·association·file,·which·contains·the·names·of·instrumentation·functions·for139 statement.</p><p>The·association·file,·which·contains·the·names·of·instrumentation·functions·for
140 the·MIB,·should·have·the·suffix·<code·class="inline">.funcs</code>.·If·the·compiler·does·not·find·the140 the·MIB,·should·have·the·suffix·<code·class="inline">.funcs</code>.·If·the·compiler·does·not·find·the
141 association·file,·it·gives·a·warning·message·and·uses·default·instrumentation141 association·file,·it·gives·a·warning·message·and·uses·default·instrumentation
142 functions.·(See·<a·href="snmp_instr_functions.html#snmp_3">Default·Instrumentation</a>·for142 functions.·(See·<a·href="snmp_instr_functions.html#snmp_3">Default·Instrumentation</a>·for
143 more·details).</p><p>The·MIB·compiler·is·started·with·a·call·to·<code·class="inline">snmpc:compile(&lt;mibname&gt;).</code>·For143 more·details).</p><p>The·MIB·compiler·is·started·with·a·call·to·<code·class="inline">snmpc:compile(&lt;mibname&gt;).</code>·For
144 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="2354081523-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="2354081523-1">)</span><span·class="p">.</span></code></pre><p>The·output·is·a·new·file·which·is·called·<code·class="inline">&lt;mibname&gt;.bin</code>.</p><p>The·MIB·compiler·understands·both·SMIv1·and·SMIv2·MIBs.·It·uses·the144 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="6731678123-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="6731678123-1">)</span><span·class="p">.</span></code></pre><p>The·output·is·a·new·file·which·is·called·<code·class="inline">&lt;mibname&gt;.bin</code>.</p><p>The·MIB·compiler·understands·both·SMIv1·and·SMIv2·MIBs.·It·uses·the
145 MODULE-IDENTITY·statement·to·determinate·if·the·MIB·is·written·in·SMI·version·1145 MODULE-IDENTITY·statement·to·determinate·if·the·MIB·is·written·in·SMI·version·1
146 or·2.</p><h2·id="importing-mibs"·class="section-heading">146 or·2.</p><h2·id="importing-mibs"·class="section-heading">
147 ··<a·href="#importing-mibs"·class="hover-link">147 ··<a·href="#importing-mibs"·class="hover-link">
148 ····<i·class="ri-link-m"·aria-hidden="true"></i>148 ····<i·class="ri-link-m"·aria-hidden="true"></i>
149 ··</a>149 ··</a>
150 ··<span·class="text">Importing·MIBs</span>150 ··<span·class="text">Importing·MIBs</span>
151 </h2>151 </h2>
152 <p>The·compiler·handles·the·<code·class="inline">IMPORT</code>·statement.·It·is·important·to·import·the152 <p>The·compiler·handles·the·<code·class="inline">IMPORT</code>·statement.·It·is·important·to·import·the
153 compiled·file·and·not·the·ASN.1·(source)·file.·A·MIB·must·be·recompiled·to·make153 compiled·file·and·not·the·ASN.1·(source)·file.·A·MIB·must·be·recompiled·to·make
154 changes·visible·to·other·MIBs·importing·it.</p><p>The·compiled·files·of·the·imported·MIBs·must·be·present·in·the·current154 changes·visible·to·other·MIBs·importing·it.</p><p>The·compiled·files·of·the·imported·MIBs·must·be·present·in·the·current
155 directory,·or·a·directory·in·the·current·path.·The·path·is·supplied·with·the155 directory,·or·a·directory·in·the·current·path.·The·path·is·supplied·with·the
156 <code·class="inline">{i,·Path}</code>·option,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="1722604402-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">156 <code·class="inline">{i,·Path}</code>·option,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="7675620410-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">
157 ·······</span><span·class="p"·data-group-id="1722604402-2">[</span><span·class="p"·data-group-id="1722604402-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1722604402-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·59e32a56ce4181396304ac3775ba945b4bbdcc2075b57dd4dbf50fb7225e6da8·...·]-1">)</span><span·class="p">.</span></code></pre><p>It·is·also·possible·to·import·MIBs·from·OTP·applications·in·an·<code·class="inline">&quot;include_lib&quot;</code>157 ·······</span><span·class="p"·data-group-id="7675620410-2">[</span><span·class="p"·data-group-id="7675620410-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7675620410-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·46c6dd6d222102e5788665c1ef0eff28118fea978151d3f6297857f58e9b5bdf·...·]-1">)</span><span·class="p">.</span></code></pre><p>It·is·also·possible·to·import·MIBs·from·OTP·applications·in·an·<code·class="inline">&quot;include_lib&quot;</code>
158 like·fashion·with·the·<code·class="inline">il</code>·option.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="3568375151-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">158 like·fashion·with·the·<code·class="inline">il</code>·option.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmpc</span><span·class="p">:</span><span·class="nf">compile</span><span·class="p"·data-group-id="2348755435-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">
159 ·······</span><span·class="p"·data-group-id="3568375151-2">[</span><span·class="p"·data-group-id="3568375151-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3568375151-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·a911451e24192c1eefe93acb4184442646445de2a5087508cbaa5311236be485·...·]-1">)</span><span·class="p">.</span></code></pre><p>finds·the·latest·version·of·the·<code·class="inline">snmp</code>·and·<code·class="inline">myapp</code>·applications·in·the·OTP159 ·······</span><span·class="p"·data-group-id="2348755435-2">[</span><span·class="p"·data-group-id="2348755435-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2348755435-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·d82ac0ae41dbdc4610fb46de43344c672f778b7625e2aada7d47422e75d9af18·...·]-1">)</span><span·class="p">.</span></code></pre><p>finds·the·latest·version·of·the·<code·class="inline">snmp</code>·and·<code·class="inline">myapp</code>·applications·in·the·OTP
160 system·and·uses·the·expanded·paths·as·include·paths.</p><p>Note·that·an·SMIv2·MIB·can·import·an·SMIv1·MIB·and·vice·versa.</p><p>The·following·MIBs·are·built-ins·of·the·Erlang·SNMP·compiler:·SNMPv2-SMI,160 system·and·uses·the·expanded·paths·as·include·paths.</p><p>Note·that·an·SMIv2·MIB·can·import·an·SMIv1·MIB·and·vice·versa.</p><p>The·following·MIBs·are·built-ins·of·the·Erlang·SNMP·compiler:·SNMPv2-SMI,
161 RFC-1215,·RFC-1212,·SNMPv2-TC,·SNMPv2-CONF,·and·RFC1155-SMI.·They·cannot161 RFC-1215,·RFC-1212,·SNMPv2-TC,·SNMPv2-CONF,·and·RFC1155-SMI.·They·cannot
162 therefore·be·compiled·separately.</p><h2·id="mib-consistency-checking"·class="section-heading">162 therefore·be·compiled·separately.</p><h2·id="mib-consistency-checking"·class="section-heading">
163 ··<a·href="#mib-consistency-checking"·class="hover-link">163 ··<a·href="#mib-consistency-checking"·class="hover-link">
164 ····<i·class="ri-link-m"·aria-hidden="true"></i>164 ····<i·class="ri-link-m"·aria-hidden="true"></i>
165 ··</a>165 ··</a>
166 ··<span·class="text">MIB·Consistency·Checking</span>166 ··<span·class="text">MIB·Consistency·Checking</span>
2.43 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmp_pdus.html
    
Offset 130, 16 lines modifiedOffset 130, 16 lines modified
130 ····<section·id="moduledoc">130 ····<section·id="moduledoc">
131 <p>Encode·and·Decode·Functions·for·SNMP·PDUs</p><p>RFC1157,·RFC1905·and/or·RFC2272·should·be·studied·carefully·before·using·this131 <p>Encode·and·Decode·Functions·for·SNMP·PDUs</p><p>RFC1157,·RFC1905·and/or·RFC2272·should·be·studied·carefully·before·using·this
132 module,·<code·class="inline">snmp_pdus</code>.</p><p>The·module·<code·class="inline">snmp_pdus</code>·contains·functions·for·encoding·and·decoding·of·SNMP132 module,·<code·class="inline">snmp_pdus</code>.</p><p>The·module·<code·class="inline">snmp_pdus</code>·contains·functions·for·encoding·and·decoding·of·SNMP
133 protocol·data·units·(PDUs).·In·short,·this·module·converts·a·list·of·bytes·to133 protocol·data·units·(PDUs).·In·short,·this·module·converts·a·list·of·bytes·to
134 Erlang·record·representations·and·vice·versa.·The·record·definitions·can·be134 Erlang·record·representations·and·vice·versa.·The·record·definitions·can·be
135 found·in·the·file·<code·class="inline">snmp/include/snmp_types.hrl</code>.·If·snmpv3·is·used,·the·module135 found·in·the·file·<code·class="inline">snmp/include/snmp_types.hrl</code>.·If·snmpv3·is·used,·the·module
136 that·includes·<code·class="inline">snmp_types.hrl</code>·must·define·the·constant·<code·class="inline">SNMP_USE_V3</code>·before·the136 that·includes·<code·class="inline">snmp_types.hrl</code>·must·define·the·constant·<code·class="inline">SNMP_USE_V3</code>·before·the
137 header·file·is·included.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="8842329711-1">(</span><span·class="n">SNMP_USE_V3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="8842329711-1">)</span><span·class="p">.</span><span·class="w">137 header·file·is·included.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3221498684-1">(</span><span·class="n">SNMP_USE_V3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="3221498684-1">)</span><span·class="p">.</span><span·class="w">
138 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8842329711-2">(</span><span·class="s">&quot;snmp/include/snmp_types.hrl&quot;</span><span·class="p"·data-group-id="8842329711-2">)</span><span·class="p">.</span></code></pre><p>Encoding·and·decoding·must·be·done·explicitly·when·writing·your·own·Net·if138 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3221498684-2">(</span><span·class="s">&quot;snmp/include/snmp_types.hrl&quot;</span><span·class="p"·data-group-id="3221498684-2">)</span><span·class="p">.</span></code></pre><p>Encoding·and·decoding·must·be·done·explicitly·when·writing·your·own·Net·if
139 process.</p>139 process.</p>
140 ····</section>140 ····</section>
  
141 </div>141 </div>
  
142 ··<section·id="summary"·class="details-list">142 ··<section·id="summary"·class="details-list">
143 ····<h1·class="section-heading">143 ····<h1·class="section-heading">
28.6 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmpa.html
    
Offset 3215, 16 lines modifiedOffset 3215, 16 lines modified
3215 ······················AgentName·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),3215 ······················AgentName·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>(),
3216 ······················Mib·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),3216 ······················Mib·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>(),
3217 ······················Reason·::·already_loaded·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>3217 ······················Reason·::·already_loaded·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3218 ······</div>3218 ······</div>
  
3219 <p>Load·a·single·<code·class="inline">Mib</code>·into·an·agent.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,3219 <p>Load·a·single·<code·class="inline">Mib</code>·into·an·agent.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,
3220 including·the·path·to·where·the·compiled·mib·is·found.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="1905563457-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="1905563457-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">3220 including·the·path·to·where·the·compiled·mib·is·found.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="3483727319-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3483727319-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">
3221 ··········</span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">load_mib</span><span·class="p"·data-group-id="1905563457-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;MY-MIB&quot;</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·a70ec5e23b20aeae2307b9dc1841fc6046b41e98e2b01771b43a5564c25d2faa·...·]-2">)</span><span·class="p">.</span></code></pre>3221 ··········</span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">load_mib</span><span·class="p"·data-group-id="3483727319-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;MY-MIB&quot;</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·198a540ce84266d364b680090e61af455e94d37cdd51ab8df999a07a78fbd21a·...·]-2">)</span><span·class="p">.</span></code></pre>
3222 ··</section>3222 ··</section>
3223 </section>3223 </section>
3224 <section·class="detail"·id="load_mibs/1">3224 <section·class="detail"·id="load_mibs/1">
  
3225 ··<div·class="detail-header">3225 ··<div·class="detail-header">
3226 ····<a·href="#load_mibs/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3226 ····<a·href="#load_mibs/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3227 ······<i·class="ri-link-m"·aria-hidden="true"></i>3227 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3326, 16 lines modifiedOffset 3326, 16 lines modified
3326 ·······················InternalReason·::·already_loaded·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>3326 ·······················InternalReason·::·already_loaded·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3327 ······</div>3327 ······</div>
  
3328 <p>Load·<code·class="inline">Mibs</code>·into·an·agent.·If·the·agent·cannot·load·all·MIBs·(the·default·value3328 <p>Load·<code·class="inline">Mibs</code>·into·an·agent.·If·the·agent·cannot·load·all·MIBs·(the·default·value
3329 of·the·<code·class="inline">Force</code>·argument·is·<code·class="inline">false</code>),·it·will·indicate·where·loading·was·aborted.3329 of·the·<code·class="inline">Force</code>·argument·is·<code·class="inline">false</code>),·it·will·indicate·where·loading·was·aborted.
3330 The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including·the·path·to·where·the·compiled3330 The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including·the·path·to·where·the·compiled
3331 mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="3522408470-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3522408470-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">3331 mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="2838744815-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="2838744815-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">
3332 ··········</span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">load_mibs</span><span·class="p"·data-group-id="3522408470-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3522408470-3">[</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·142,·SHA:·4bd2fa97420a5545cbff61443119cf0f7432e40afe71e37817cf57c84586d7db·...·]-2">)</span><span·class="p">.</span></code></pre><p>If·<code·class="inline">Force·=·true</code>·then·the·agent·will·continue·attempting·to·load·each·mib·even3332 ··········</span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">load_mibs</span><span·class="p"·data-group-id="2838744815-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2838744815-3">[</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·142,·SHA:·e1114a7f262ef5cfaae7c9cdb8e4d7fb92d50f801a2a0bd64f96c24d056b8457·...·]-2">)</span><span·class="p">.</span></code></pre><p>If·<code·class="inline">Force·=·true</code>·then·the·agent·will·continue·attempting·to·load·each·mib·even
3333 after·failing·to·load·a·previous·mib.·Use·with·care.</p>3333 after·failing·to·load·a·previous·mib.·Use·with·care.</p>
3334 ··</section>3334 ··</section>
3335 </section>3335 </section>
3336 <section·class="detail"·id="log_to_io/1">3336 <section·class="detail"·id="log_to_io/1">
  
3337 ··<div·class="detail-header">3337 ··<div·class="detail-header">
3338 ····<a·href="#log_to_io/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3338 ····<a·href="#log_to_io/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 4297, 16 lines modifiedOffset 4297, 16 lines modified
4297 ··········································Mod·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:module/0">module</a>(),4297 ··········································Mod·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:module/0">module</a>(),
4298 ··········································Data·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),4298 ··········································Data·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),
4299 ··········································Where·::·<a·href="#t:nfilter_position/0">nfilter_position</a>(),4299 ··········································Where·::·<a·href="#t:nfilter_position/0">nfilter_position</a>(),
4300 ··········································Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>4300 ··········································Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
4301 ······</div>4301 ······</div>
  
4302 <p>Accepted·type·specifications·are:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">register_notification_filter</span><span·class="p"·data-group-id="9247881987-1">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·443,·SHA:·0aa196154a9ab273e9eaa5f77aa668ba6fb63877fba8453e23a9b5ea7746a8a2·...·]-2">}</span><span·class="p">.</span><span·class="w">4302 <p>Accepted·type·specifications·are:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">register_notification_filter</span><span·class="p"·data-group-id="0690128059-1">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·443,·SHA:·fcb7dd18b529e849f3aeba4dc48a84462ebe666431e1677ce256acc5d70658ef·...·]-2">}</span><span·class="p">.</span><span·class="w">
4303 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">register_notification_filter</span><span·class="p"·data-group-id="9247881987-3">(</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·443,·SHA:·03c178cd1215676181b96d172f17a368f544544920eb67aad38762014def3dfa·...·]-4">}</span><span·class="p">.</span></code></pre>4303 </span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">register_notification_filter</span><span·class="p"·data-group-id="0690128059-3">(</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·443,·SHA:·adc756ca8a11a8c36c3848112f1f91133aa12fb858f7808b8aaf8c85d9d1c94e·...·]-4">}</span><span·class="p">.</span></code></pre>
4304 ··</section>4304 ··</section>
4305 </section>4305 </section>
4306 <section·class="detail"·id="register_notification_filter/5">4306 <section·class="detail"·id="register_notification_filter/5">
  
4307 ··<div·class="detail-header">4307 ··<div·class="detail-header">
4308 ····<a·href="#register_notification_filter/5"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4308 ····<a·href="#register_notification_filter/5"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
4309 ······<i·class="ri-link-m"·aria-hidden="true"></i>4309 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 4367, 16 lines modifiedOffset 4367, 16 lines modified
4367 ·······························SubAgent·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0">pid</a>(),4367 ·······························SubAgent·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0">pid</a>(),
4368 ·······························Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>4368 ·······························Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
4369 ······</div>4369 ······</div>
  
4370 <p>Registers·a·sub-agent·under·a·sub-tree·of·another·agent.</p><p>It·is·easy·to·make·mistakes·when·registering·sub-agents·and·this·activity·should4370 <p>Registers·a·sub-agent·under·a·sub-tree·of·another·agent.</p><p>It·is·easy·to·make·mistakes·when·registering·sub-agents·and·this·activity·should
4371 be·done·carefully.·For·example,·a·strange·behaviour·would·result·from·the4371 be·done·carefully.·For·example,·a·strange·behaviour·would·result·from·the
4372 following·configuration:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmp_agent</span><span·class="p">:</span><span·class="nf">register_subagent</span><span·class="p"·data-group-id="6810465195-1">(</span><span·class="n">MAPid</span><span·class="p">,</span><span·class="p"·data-group-id="6810465195-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="6810465195-2">]</span><span·class="p">,</span><span·class="n">SA1</span><span·class="p"·data-group-id="6810465195-1">)</span><span·class="p">,</span><span·class="w"> 
4373 </span><span·class="nc">snmp_agent</span><span·class="p">:</span><span·class="nf">register_subagent</span><span·class="p"·data-group-id="6810465195-3">(</span><span·class="n">SA1</span><span·class="p">,</span><span·class="p"·data-group-id="6810465195-4">[<[·...·truncated·by·diffoscope;·len:·476,·SHA:·09acee98ca953e911d3c7edb11b89ab4497c599a68670a9b46b8cbb06a29a2ee·...·]4372 following·configuration:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">snmp_agent</span><span·class="p">:</span><span·class="nf">register_subagent</span><span·class="p"·data-group-id="4123237136-1">(</span><span·class="n">MAPid</span>[·...·truncated·by·diffoscope;·len:·445,·SHA:·8f10d8301e4eb6733b02fb6349fcc32114d4b0b47ecc039b962be4f234768630·...·]
 4373 </span><span·class="nc">snmp_agent</span><span·class="p">:</span><span·class="nf">register_subagent</span><span·class="p"·data-group-id="4123237136-3">(</span><span·class="n">SA1</span><span·class="p">,</span><span·class="p"·data-group-id="4123237136-4">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4123237136-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SA2</span><span·class="p"·data-group-id="4123237136-3">)</span><span·class="p">.</span></code></pre><p><code·class="inline">SA2</code>·will·not·get·requests·starting·with·object·identifier·<code·class="inline">[1,2,3]</code>·since
4374 <code·class="inline">SA1</code>·does·not.</p>4374 <code·class="inline">SA1</code>·does·not.</p>
4375 ··</section>4375 ··</section>
4376 </section>4376 </section>
4377 <section·class="detail"·id="restart_set_worker/0">4377 <section·class="detail"·id="restart_set_worker/0">
  
4378 ··<div·class="detail-header">4378 ··<div·class="detail-header">
4379 ····<a·href="#restart_set_worker/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4379 ····<a·href="#restart_set_worker/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 4793, 28 lines modifiedOffset 4793, 28 lines modified
4793 function·call·according·to·the·value·of·<code·class="inline">Recv</code>.</li></ul><p>If·<code·class="inline">Receiver</code>·has·the·value·<code·class="inline">{Tag,·Recv}</code>,·the·delivery·is·done·according·to4793 function·call·according·to·the·value·of·<code·class="inline">Recv</code>.</li></ul><p>If·<code·class="inline">Receiver</code>·has·the·value·<code·class="inline">{Tag,·Recv}</code>,·the·delivery·is·done·according·to
4794 <code·class="inline">Recv</code>:</p><ul><li><p><code·class="inline">pid()·|·atom()</code>·-·The·info·will·be·delivered·in·the·following·messages:</p><ul><li><p><code·class="inline">{snmp_targets,·Tag,·Addresses}</code></p><p>This·inform·the·user·which·target·addresses·the·notification·was·sent·to.</p></li><li><p><code·class="inline">{snmp_notification,·Tag,·{got_response,·Address}}</code></p><p>This·informs·the·user·that·this·target·address·acknowledged·the4794 <code·class="inline">Recv</code>:</p><ul><li><p><code·class="inline">pid()·|·atom()</code>·-·The·info·will·be·delivered·in·the·following·messages:</p><ul><li><p><code·class="inline">{snmp_targets,·Tag,·Addresses}</code></p><p>This·inform·the·user·which·target·addresses·the·notification·was·sent·to.</p></li><li><p><code·class="inline">{snmp_notification,·Tag,·{got_response,·Address}}</code></p><p>This·informs·the·user·that·this·target·address·acknowledged·the
4795 notification.</p></li><li><p><code·class="inline">{snmp_notification,·Tag,·{no_response,·Address}}</code></p><p>This·informs·the·user·that·this·target·address·did·not·acknowledge4795 notification.</p></li><li><p><code·class="inline">{snmp_notification,·Tag,·{no_response,·Address}}</code></p><p>This·informs·the·user·that·this·target·address·did·not·acknowledge
4796 notification.</p></li></ul><p>The·notification·is·sent·as·an·Inform-Request·to·each·target·address·in4796 notification.</p></li></ul><p>The·notification·is·sent·as·an·Inform-Request·to·each·target·address·in
4797 <code·class="inline">Addresses</code>·and·if·there·are·no·targets·for·which·an·Inform-Request·is·sent,4797 <code·class="inline">Addresses</code>·and·if·there·are·no·targets·for·which·an·Inform-Request·is·sent,
4798 <code·class="inline">Addresses</code>·is·the·empty·list·<code·class="inline">[]</code>.</p><p>The·<code·class="inline">receiver</code>·will·first·be·sent·the·<code·class="inline">snmp_targets</code>·message,·and·then·for4798 <code·class="inline">Addresses</code>·is·the·empty·list·<code·class="inline">[]</code>.</p><p>The·<code·class="inline">receiver</code>·will·first·be·sent·the·<code·class="inline">snmp_targets</code>·message,·and·then·for
4799 each·address·in·<code·class="inline">Addresses</code>·list,·one·of·the·two·<code·class="inline">snmp_notification</code>·messages.</p></li><li><p><code·class="inline">{Mod,·Func,·Args}</code>·-·The·info·will·be·delivered·via·the·function·call:</p><p><code·class="inline">Mod:Func([Msg·|·Args])</code></p><p>where·<code·class="inline">Msg</code>·has·the·same·content·and·purpose·as·the·messages·descrived·above.</p></li></ul><p><code·class="inline">Address</code>·is·a·management·target·address·and·<code·class="inline">Addresses</code>·is·a·list·of·management4799 each·address·in·<code·class="inline">Addresses</code>·list,·one·of·the·two·<code·class="inline">snmp_notification</code>·messages.</p></li><li><p><code·class="inline">{Mod,·Func,·Args}</code>·-·The·info·will·be·delivered·via·the·function·call:</p><p><code·class="inline">Mod:Func([Msg·|·Args])</code></p><p>where·<code·class="inline">Msg</code>·has·the·same·content·and·purpose·as·the·messages·descrived·above.</p></li></ul><p><code·class="inline">Address</code>·is·a·management·target·address·and·<code·class="inline">Addresses</code>·is·a·list·of·management
4800 target·addresses.·They·are·defined·as·followes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="n">Addresses</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9437853358-1">[</span><span·class="nf">address</span><span·class="p"·data-group-id="9437853358-2">(</span><span·class="p"·data-group-id="9437853358-2">)</span><span·class="p"·data-group-id="9437853358-1">]</span><span·class="w">4800 target·addresses.·They·are·defined·as·followes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">········</span><span·class="n">Addresses</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0037463917-1">[</span><span·class="nf">address</span><span·class="p"·data-group-id="0037463917-2">(</span><span·class="p"·data-group-id="0037463917-2">)</span><span·class="p"·data-group-id="0037463917-1">]</span><span·class="w">
4801 ········</span><span·class="n">Address</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">address</span><span·class="p"·data-group-id="9437853358-3">(</span><span·class="p"·data-group-id="9437853358-3">)</span><span·class="w">4801 ········</span><span·class="n">Address</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">address</span><span·class="p"·data-group-id="0037463917-3">(</span><span·class="p"·data-group-id="0037463917-3">)</span><span·class="w">
4802 ········</span><span·class="nf">address</span><span·class="p"·data-group-id="9437853358-4">(</span><span·class="p"·data-group-id="9437853358-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">v1_address</span><span·class="p"·data-group-id="9437853358-5">(</span><span·class="p"·data-group-id="9437853358-5">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="9437853358-6">(</span><span·class="p"·data-group-id="9437853358-6">)</span><span·class="w"> 
4803 ········</span><span·class="nf">v1_address</span><span·class="p"·data-group-id="9437853358-7">(</span><span·class="p"·data-group-id="9437853358-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9437853358-8">{</span><span·cl[·...·truncated·by·diffoscope;·len:·147,·SHA:·72714ed77d584b108782a1cbbc3a67d69973baf9ff719c3876dbe678dd6b1638·...·]</span><span·class="w">4802 ········</span><span·class="nf">address</span><span·class="p"·data-group-id="0037463917-4">(</span><span·class="p"·data-group-id="0037463917-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">v1_address</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·282,·SHA:·482074a3a7ffe977ae714076992b3af11bfec26fc949611f6ba2d19641ec64a5·...·]</span><span·class="w">
 4803 ········</span><span·class="nf">v1_address</span><span·class="p"·data-group-id="0037463917-7">(</span><span·class="p"·data-group-id="0037463917-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0037463917-8">{</span><span·class="n">TDomain</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TAddress</span><span·class="p"·data-group-id="0037463917-8">}</span><span·class="w">
4804 ········</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="9437853358-9">(</span><span·class="p"·data-group-id="9437853358-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9437853358-10">{</span><span·class="p"·data-group-id="9437853358-11">{</span><[·...·truncated·by·diffoscope;·len:·283,·SHA:·bcc657a470ae8e27aac05e894ffd46a00bfb4f8f2fe730e63c6fdc987a55ec3b·...·]-10">}</span><span·class="w">4804 ········</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="0037463917-9">(</span><span·class="p"·data-group-id="0037463917-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0037463917-10">{</span><span·class="p"·data-group-id="0037463917-11">{</span><[·...·truncated·by·diffoscope;·len:·283,·SHA:·474c6f15883db5e678f3089df11256a016b69ed240bd035bf752730f64c96857·...·]-10">}</span><span·class="w">
4805 ········</span><span·class="n">TDomain</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tdoamin</span><span·class="p"·data-group-id="9437853358-12">(</span><span·class="p"·data-group-id="9437853358-12">)</span><span·class="w">4805 ········</span><span·class="n">TDomain</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">tdoamin</span><span·class="p"·data-group-id="0037463917-12">(</span><span·class="p"·data-group-id="0037463917-12">)</span><span·class="w">
4806 ········</span><span·class="n">TAddress</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">taddress</span><span·class="p"·data-group-id="9437853358-13">(</span><span·class="p"·data-group-id="9437853358-13">)</span><span·class="w">4806 ········</span><span·class="n">TAddress</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">taddress</span><span·class="p"·data-group-id="0037463917-13">(</span><span·class="p"·data-group-id="0037463917-13">)</span><span·class="w">
4807 ········</span><span·class="nf">tdomain</span><span·class="p"·data-group-id="9437853358-14">(</span><span·class="p"·data-group-id="9437853358-14">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">oid</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">snmpUDPDomain</span><span·class="w">4807 ········</span><span·class="nf">tdomain</span><span·class="p"·data-group-id="0037463917-14">(</span><span·class="p"·data-group-id="0037463917-14">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="n">The</span><span·class="w">·</span><span·class="ss">oid</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">snmpUDPDomain</span><span·class="w">
4808 ·····················</span><span·class="n">This</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">only</span><span·class="w">·</span><span·class="ss">supported</span><span·class="w">·</span><span·class="ss">transport</span><span·class="w">·</span><span·class="ss">domain</span><span·class="p">.</span><span·class="w">4808 ·····················</span><span·class="n">This</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">only</span><span·class="w">·</span><span·class="ss">supported</span><span·class="w">·</span><span·class="ss">transport</span><span·class="w">·</span><span·class="ss">domain</span><span·class="p">.</span><span·class="w">
4809 ········</span><span·class="nf">taddress</span><span·class="p"·data-group-id="9437853358-15">(</span><span·class="p"·data-group-id="9437853358-15">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9437853358-16">[</span><span·class="n">A1</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·378,·SHA:·2044e5e110502773d079b79c953eec42399f3c66696abf88f39310e20c720b90·...·]-16">]</span><span·class="w">4809 ········</span><span·class="nf">taddress</span><span·class="p"·data-group-id="0037463917-15">(</span><span·class="p"·data-group-id="0037463917-15">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0037463917-16">[</span><span·class="n">A1</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·378,·SHA:·7428b8fc233c8eb021bf33a80418261bf0def58580094c2dac3f7a80b17a0016·...·]-16">]</span><span·class="w">
4810 ·····················</span><span·class="n">The</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">·</span><span·class="ss">first</span><span·class="w">·</span><span·class="ss">bytes</span><span·class="w">·</span><span·class="ss">makes</span><span·class="w">·</span><span·class="ss">up</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">IP</span><span·class="o">-</span><span·class="ss">address</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">last</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">4810 ·····················</span><span·class="n">The</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">·</span><span·class="ss">first</span><span·class="w">·</span><span·class="ss">bytes</span><span·class="w">·</span><span·class="ss">makes</span><span·class="w">·</span><span·class="ss">up</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">IP</span><span·class="o">-</span><span·class="ss">address</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">last</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
4811 ·····················</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">UDP</span><span·class="o">-</span><span·class="ss">port</span><span·class="w">·</span><span·class="ss">number</span><span·class="p">.</span><span·class="w">4811 ·····················</span><span·class="ss">the</span><span·class="w">·</span><span·class="n">UDP</span><span·class="o">-</span><span·class="ss">port</span><span·class="w">·</span><span·class="ss">number</span><span·class="p">.</span><span·class="w">
4812 ········</span><span·class="n">V3MsgData</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">v3_msg_data</span><span·class="p"·data-group-id="9437853358-17">(</span><span·class="p"·data-group-id="9437853358-17">)</span><span·class="w">4812 ········</span><span·class="n">V3MsgData</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">v3_msg_data</span><span·class="p"·data-group-id="0037463917-17">(</span><span·class="p"·data-group-id="0037463917-17">)</span><span·class="w">
4813 ········</span><span·class="nf">v3_msg_data</span><span·class="p"·data-group-id="9437853358-18">(</span><span·class="p"·data-group-id="9437853358-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="9437853358-19">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·2138a1e5d824884a3b95c252ce8b21574e19e7d1e4d4b26a28f0fa348ad555b7·...·]-19">)</span></code></pre><p>If·<code·class="inline">Receiver</code>·is·a·<a·href="#t:notification_delivery_info/0"><code·class="inline">notification_delivery_info/0</code></a>·record,·then·the·information4813 ········</span><span·class="nf">v3_msg_data</span><span·class="p"·data-group-id="0037463917-18">(</span><span·class="p"·data-group-id="0037463917-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0037463917-19">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·444f36b22e52e34211cd809297902d559654d3badc9e1418b452abfb40634fee·...·]-19">)</span></code></pre><p>If·<code·class="inline">Receiver</code>·is·a·<a·href="#t:notification_delivery_info/0"><code·class="inline">notification_delivery_info/0</code></a>·record,·then·the·information
4814 about·the·notification·delivery·will·be·delivered·to·the·<code·class="inline">receiver</code>·via·the4814 about·the·notification·delivery·will·be·delivered·to·the·<code·class="inline">receiver</code>·via·the
4815 callback·functions·defined·by·the·<a·href="snmpa_notification_delivery_info_receiver.html"><code·class="inline">snmpa_notification_delivery_info_receiver</code></a>4815 callback·functions·defined·by·the·<a·href="snmpa_notification_delivery_info_receiver.html"><code·class="inline">snmpa_notification_delivery_info_receiver</code></a>
4816 behaviour·according·to·the·content·of·the·<a·href="#t:notification_delivery_info/0"><code·class="inline">notification_delivery_info/0</code></a>4816 behaviour·according·to·the·content·of·the·<a·href="#t:notification_delivery_info/0"><code·class="inline">notification_delivery_info/0</code></a>
4817 record.</p><p>The·optional·argument·<code·class="inline">Varbinds</code>·defines·values·for·the·objects·in·the4817 record.</p><p>The·optional·argument·<code·class="inline">Varbinds</code>·defines·values·for·the·objects·in·the
4818 notification.·If·no·value·is·given·for·an·object,·the·<code·class="inline">Agent</code>·performs·a4818 notification.·If·no·value·is·given·for·an·object,·the·<code·class="inline">Agent</code>·performs·a
4819 get-operation·to·retrieve·the·value.</p><p><code·class="inline">Varbinds</code>·is·a·list·of·<code·class="inline">Varbind</code>,·where·each·<code·class="inline">Varbind</code>·is·one·of:</p><ul><li><code·class="inline">{Variable,·Value}</code>,·where·<code·class="inline">Variable</code>·is·the·symbolic·name·of·a·scalar4819 get-operation·to·retrieve·the·value.</p><p><code·class="inline">Varbinds</code>·is·a·list·of·<code·class="inline">Varbind</code>,·where·each·<code·class="inline">Varbind</code>·is·one·of:</p><ul><li><code·class="inline">{Variable,·Value}</code>,·where·<code·class="inline">Variable</code>·is·the·symbolic·name·of·a·scalar
4820 variable·referred·to·in·the·notification·specification.</li><li><code·class="inline">{Column,·RowIndex,·Value}</code>,·where·<code·class="inline">Column</code>·is·the·symbolic·name·of·a·column4820 variable·referred·to·in·the·notification·specification.</li><li><code·class="inline">{Column,·RowIndex,·Value}</code>,·where·<code·class="inline">Column</code>·is·the·symbolic·name·of·a·column
1.84 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmpc_cmd.html
    
Offset 127, 15 lines modifiedOffset 127, 15 lines modified
  
127 <p>SNMP·MIB·compiler·frontend</p><h2·id="synopsis"·class="section-heading">127 <p>SNMP·MIB·compiler·frontend</p><h2·id="synopsis"·class="section-heading">
128 ··<a·href="#synopsis"·class="hover-link">128 ··<a·href="#synopsis"·class="hover-link">
129 ····<i·class="ri-link-m"·aria-hidden="true"></i>129 ····<i·class="ri-link-m"·aria-hidden="true"></i>
130 ··</a>130 ··</a>
131 ··<span·class="text">Synopsis</span>131 ··<span·class="text">Synopsis</span>
132 </h2>132 </h2>
133 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">snmpc</span><span·class="w">·</span><span·class="p"·data-group-id="5076640234-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="5076640234-1">]</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">mib</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">bin</span></code></pre><h2·id="description"·class="section-heading">133 <pre><code·class="makeup·erlang"·translate="no"><span·class="ss">snmpc</span><span·class="w">·</span><span·class="p"·data-group-id="1600613437-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="1600613437-1">]</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">mib</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">file</span><span·class="p">.</span><span·class="ss">bin</span></code></pre><h2·id="description"·class="section-heading">
134 ··<a·href="#description"·class="hover-link">134 ··<a·href="#description"·class="hover-link">
135 ····<i·class="ri-link-m"·aria-hidden="true"></i>135 ····<i·class="ri-link-m"·aria-hidden="true"></i>
136 ··</a>136 ··</a>
137 ··<span·class="text">Description</span>137 ··<span·class="text">Description</span>
138 </h2>138 </h2>
139 <p>The·<code·class="inline">snmpc</code>·program·provides·a·way·to·run·the·SNMP·MIB·compiler·of·the·Erlang139 <p>The·<code·class="inline">snmpc</code>·program·provides·a·way·to·run·the·SNMP·MIB·compiler·of·the·Erlang
140 system.</p><p><code·class="inline">snmpc</code>·compiles·an·SNMP·MIB·file.·See·<a·href="snmpc.html#compile/1">compile/1,2</a>·for·more140 system.</p><p><code·class="inline">snmpc</code>·compiles·an·SNMP·MIB·file.·See·<a·href="snmpc.html#compile/1">compile/1,2</a>·for·more
5.5 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18/doc/html/snmpm.html
    
Offset 1944, 16 lines modifiedOffset 1944, 16 lines modified
1944 ······<div·class="specs">1944 ······<div·class="specs">
  
1945 ··········<pre·translate="no"><span·class="attribute">-spec</span>·load_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.html#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1945 ··········<pre·translate="no"><span·class="attribute">-spec</span>·load_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.html#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1946 ······</div>1946 ······</div>
  
1947 <p>Load·a·<code·class="inline">Mib</code>·into·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including1947 <p>Load·a·<code·class="inline">Mib</code>·into·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including
1948 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="8485862293-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="8485862293-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">1948 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="3210673469-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3210673469-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">
1949 ··········</span><span·class="nc">snmpm</span><span·class="p">:</span><span·class="nf">load_mib</span><span·class="p"·data-group-id="8485862293-2">(</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p"·data-group-id="8485862293-2">)</span><span·class="p">.</span></code></pre>1949 ··········</span><span·class="nc">snmpm</span><span·class="p">:</span><span·class="nf">load_mib</span><span·class="p"·data-group-id="3210673469-2">(</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p"·data-group-id="3210673469-2">)</span><span·class="p">.</span></code></pre>
1950 ··</section>1950 ··</section>
1951 </section>1951 </section>
1952 <section·class="detail"·id="log_to_io/1">1952 <section·class="detail"·id="log_to_io/1">
  
1953 ··<div·class="detail-header">1953 ··<div·class="detail-header">
1954 ····<a·href="#log_to_io/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1954 ····<a·href="#log_to_io/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1955 ······<i·class="ri-link-m"·aria-hidden="true"></i>1955 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3450, 16 lines modifiedOffset 3450, 16 lines modified
3450 ······<div·class="specs">3450 ······<div·class="specs">
  
3451 ··········<pre·translate="no"><span·class="attribute">-spec</span>·unload_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.html#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>3451 ··········<pre·translate="no"><span·class="attribute">-spec</span>·unload_mib(MibName)·->·ok·|·{error,·Reason}·when·MibName·::·<a·href="snmp.html#t:mib_name/0">snmp:mib_name</a>(),·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3452 ······</div>3452 ······</div>
  
3453 <p>Unload·a·<code·class="inline">Mib</code>·from·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including3453 <p>Unload·a·<code·class="inline">Mib</code>·from·the·manager.·The·<code·class="inline">MibName</code>·is·the·name·of·the·Mib,·including
3454 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="8892834174-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="8892834174-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">3454 the·path·to·where·the·compiled·mib·is·found.·For·example,</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··········</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">priv_dir</span><span·class="p"·data-group-id="6646682747-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="6646682747-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;/mibs/&quot;</span><span·class="p">,</span><span·class="w">
3455 ··········</span><span·class="nc">snmpm</span><span·class="p">:</span><span·class="nf">unload_mib</span><span·class="p"·data-group-id="8892834174-2">(</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p"·data-group-id="8892834174-2">)</span><span·class="p">.</span></code></pre>3455 ··········</span><span·class="nc">snmpm</span><span·class="p">:</span><span·class="nf">unload_mib</span><span·class="p"·data-group-id="6646682747-2">(</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p"·data-group-id="6646682747-2">)</span><span·class="p">.</span></code></pre>
3456 ··</section>3456 ··</section>
3457 </section>3457 </section>
3458 <section·class="detail"·id="unregister_agent/2">3458 <section·class="detail"·id="unregister_agent/2">
  
3459 ··<div·class="detail-header">3459 ··<div·class="detail-header">
3460 ····<a·href="#unregister_agent/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3460 ····<a·href="#unregister_agent/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3461 ······<i·class="ri-link-m"·aria-hidden="true"></i>3461 ······<i·class="ri-link-m"·aria-hidden="true"></i>
61.3 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.6/doc/html/configurations.html
    
Offset 138, 31 lines modifiedOffset 138, 31 lines modified
138 the·<a·href="configure_algos.html">Configuring·algorithms·in·SSH</a>·chapter.</p><h2·id="options-configuration"·class="section-heading">138 the·<a·href="configure_algos.html">Configuring·algorithms·in·SSH</a>·chapter.</p><h2·id="options-configuration"·class="section-heading">
139 ··<a·href="#options-configuration"·class="hover-link">139 ··<a·href="#options-configuration"·class="hover-link">
140 ····<i·class="ri-link-m"·aria-hidden="true"></i>140 ····<i·class="ri-link-m"·aria-hidden="true"></i>
141 ··</a>141 ··</a>
142 ··<span·class="text">Options·configuration</span>142 ··<span·class="text">Options·configuration</span>
143 </h2>143 </h2>
144 <p>There·are·from·OTP-23.0·two·main·ways·to·set·an·option:</p><ul><li><p>Like·before,·in·the·<code·class="inline">Options</code>·parameter·in·the·Erlang·code·in·a·call·to·for144 <p>There·are·from·OTP-23.0·two·main·ways·to·set·an·option:</p><ul><li><p>Like·before,·in·the·<code·class="inline">Options</code>·parameter·in·the·Erlang·code·in·a·call·to·for
145 example·<a·href="ssh.html#daemon/3"><code·class="inline">ssh:daemon/3</code></a>·or·<a·href="ssh.html#connect/3"><code·class="inline">ssh:connect/3</code></a>·or·any·of·their·variants.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="1456248567-1">(</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1456248567-2">[</span><span·class="p"·data-group-id="1456248567-3">{</span><span·class="ss">user</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·625,·SHA:·62a7a743659583a15d498f6adb06a4df1ee01a47ee31c00392ec16441b612435·...·]-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">145 example·<a·href="ssh.html#daemon/3"><code·class="inline">ssh:daemon/3</code></a>·or·<a·href="ssh.html#connect/3"><code·class="inline">ssh:connect/3</code></a>·or·any·of·their·variants.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="7608072978-1">(</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7608072978-2">[</span><span·class="p"·data-group-id="7608072978-3">{</span><span·class="ss">user</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·625,·SHA:·0f2757b46588a5f49e16e4e18d3e87d4f323660f832bd4a15ff80a9e34603e3e·...·]-1">{</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">
146 ·</span><span·class="p"·data-group-id="8469401586-2">[</span><span·class="p"·data-group-id="8469401586-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SSH-2·for·Erlang/OTP&quot;</span><span·class="p"·data-group-id="8469401586-3">}</span><span·class="p">,</span><span·class="w">146 ·</span><span·class="p"·data-group-id="6447924875-2">[</span><span·class="p"·data-group-id="6447924875-3">{</span><span·class="ss">description</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;SSH-2·for·Erlang/OTP&quot;</span><span·class="p"·data-group-id="6447924875-3">}</span><span·class="p">,</span><span·class="w">
147 ··</span><span·class="p"·data-group-id="8469401586-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.9&quot;</span><span·class="p"·data-group-id="8469401586-4">}</span><span·class="p">,</span><span·class="w">147 ··</span><span·class="p"·data-group-id="6447924875-4">{</span><span·class="ss">vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.9&quot;</span><span·class="p"·data-group-id="6447924875-4">}</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="8469401586-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8469401586-6">[</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="6447924875-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6447924875-6">[</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">
149 ········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">149 ········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
150 ·········</span><span·class="ss">ssh_xfer</span><span·class="p"·data-group-id="8469401586-6">]</span><span·class="p"·data-group-id="8469401586-5">}</span><span·class="p">,</span><span·class="w">150 ·········</span><span·class="ss">ssh_xfer</span><span·class="p"·data-group-id="6447924875-6">]</span><span·class="p"·data-group-id="6447924875-5">}</span><span·class="p">,</span><span·class="w">
151 ··</span><span·class="p"·data-group-id="8469401586-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8469401586-8">[</span><span·class="p"·data-group-id="8469401586-8">]</span><span·class="p"·data-group-id="8469401586-7">}</span><span·class="p">,</span><span·class="w">151 ··</span><span·class="p"·data-group-id="6447924875-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6447924875-8">[</span><span·class="p"·data-group-id="6447924875-8">]</span><span·class="p"·data-group-id="6447924875-7">}</span><span·class="p">,</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="8469401586-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8469401586-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·267,·SHA:·3b45aca46650a49db309c68c63903e7762fff343ce6a1c5a477a7c4f1307654e·...·]-9">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="6447924875-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6447924875-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·267,·SHA:·2a4c53afc1892a842e09b5293943b8179b2398f287c6d0ef4096206d9fead23e·...·]-9">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="8469401586-11">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8469401586-12">[</span><span·class="p"·data-group-id="8469401586-13">{</span><span·class="ss">user</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·129,·SHA:·c92399485a04db50ee5b918e6c3ea6314f81ed3f6cd1870210ebef4c923bca4d·...·]-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;·HERE</span><span·class="w">153 ··</span><span·class="p"·data-group-id="6447924875-11">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6447924875-12">[</span><span·class="p"·data-group-id="6447924875-13">{</span><span·class="ss">user</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·129,·SHA:·be9ea3afbb93ba65139b47f16e257ec332051e7e44d62dd122c743568ade707c·...·]-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;·HERE</span><span·class="w">
154 ··</span><span·class="p"·data-group-id="8469401586-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8469401586-15">{</span><span·class="ss">ssh_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·178,·SHA:·c675e53e186c5d0ad30d50fe98a50157ee2e9344cf0feb9cd76c0c2f603fd9d7·...·]-14">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="6447924875-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6447924875-15">{</span><span·class="ss">ssh_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·178,·SHA:·3e96e9e6a0302b41771d7c1c16223f3dc2c5e7229735c715524fc20768d28100·...·]-14">}</span><span·class="p">,</span><span·class="w">
155 ·······</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre></li><li><p>In·a·.config·file:</p><pre><code·class="text">erl·-config·ex1</code></pre><p>where·<code·class="inline">ex1.config</code>·contains:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1339989824-1">[</span><span·class="w">155 ·······</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre></li><li><p>In·a·.config·file:</p><pre><code·class="text">erl·-config·ex1</code></pre><p>where·<code·class="inline">ex1.config</code>·contains:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9506113433-1">[</span><span·class="w">
156 </span><span·class="p"·data-group-id="1339989824-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1339989824-3">[</span><span·class="p"·data-group-id="1339989824-4">{</span><span·class="ss">user</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·208,·SHA:·69ed29ebc491cb183671cacbc694f34676d42bc3e34c0700cff60d89366ca45e·...·]-2">}</span><span·class="w">156 </span><span·class="p"·data-group-id="9506113433-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9506113433-3">[</span><span·class="p"·data-group-id="9506113433-4">{</span><span·class="ss">user</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·208,·SHA:·da82e781b2bf04975e0e0135c7e6e21c10eb23f4ed0d41d2fbad286d2beb9254·...·]-2">}</span><span·class="w">
157 </span><span·class="p"·data-group-id="1339989824-1">]</span><span·class="p">.</span></code></pre></li></ul><p>If·the·option·is·intended·only·for·a·server·or·for·a·client,·it·may·be·set·in157 </span><span·class="p"·data-group-id="9506113433-1">]</span><span·class="p">.</span></code></pre></li></ul><p>If·the·option·is·intended·only·for·a·server·or·for·a·client,·it·may·be·set·in
158 this·way:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3543117712-1">[</span><span·class="w">158 this·way:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7999344366-1">[</span><span·class="w">
159 </span><span·class="p"·data-group-id="3543117712-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3543117712-3">[</span><span·class="p"·data-group-id="3543117712-4">{</span><span·class="ss">server_options</span><span·class="p"[·...·truncated·by·diffoscope;·len:·376,·SHA:·6203061db1ae842c5bab19e4e3f7eca074c3e1e57a29291ca9e7f3a0d6144ff0·...·]-4">}</span><span·class="p">,</span><span·class="w">159 </span><span·class="p"·data-group-id="7999344366-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7999344366-3">[</span><span·class="p"·data-group-id="7999344366-4">{</span><span·class="ss">server_options</span><span·class="p"[·...·truncated·by·diffoscope;·len:·376,·SHA:·3800f1646dc0cd006ab52a7acaf1ace946eb31d01dfdcd29a3900cd4f61f8278·...·]-4">}</span><span·class="p">,</span><span·class="w">
160 ·······</span><span·class="p"·data-group-id="3543117712-7">{</span><span·class="ss">client_options</span><span·class="p">,</span><span·class="p"·data-group-id="3543117712-8">[</span><span·class="p"·data-group-id="3543117712-9">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·195,·SHA:·7e790ee0e4a4cfb58dc005b367b6837631394a82c273c7988f29aa6d2a575ef6·...·]-7">}</span><span·class="w">160 ·······</span><span·class="p"·data-group-id="7999344366-7">{</span><span·class="ss">client_options</span><span·class="p">,</span><span·class="p"·data-group-id="7999344366-8">[</span><span·class="p"·data-group-id="7999344366-9">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·195,·SHA:·894e9b0c412764a8515d50f2a77813789ad99be963c5300edaefb654ec40945c·...·]-7">}</span><span·class="w">
161 </span><span·class="p"·data-group-id="3543117712-3">]</span><span·class="p">.</span></code></pre><p>A·server·(daemon)·will·use·the·user·name·<code·class="inline">foo</code>,·and·a·client·will·use·the·name161 </span><span·class="p"·data-group-id="7999344366-3">]</span><span·class="p">.</span></code></pre><p>A·server·(daemon)·will·use·the·user·name·<code·class="inline">foo</code>,·and·a·client·will·use·the·name
162 <code·class="inline">bar</code>.</p></li></ul><h2·id="precedence"·class="section-heading">162 <code·class="inline">bar</code>.</p></li></ul><h2·id="precedence"·class="section-heading">
163 ··<a·href="#precedence"·class="hover-link">163 ··<a·href="#precedence"·class="hover-link">
164 ····<i·class="ri-link-m"·aria-hidden="true"></i>164 ····<i·class="ri-link-m"·aria-hidden="true"></i>
165 ··</a>165 ··</a>
166 ··<span·class="text">Precedence</span>166 ··<span·class="text">Precedence</span>
167 </h2>167 </h2>
168 <p>If·an·option·is·set·in·more·than·one·way,·what·happens?</p><p>There·is·an·ordering,·which·is:</p><ul><li>Level·0:·Hard-coded·default·values·in·the·OTP·SSH·source·code</li><li>Level·1:·<a·href="../../../../lib/kernel-10.2.2/doc/html/config.html">OTP·Configuration·Parameters</a></li><li>Level·2:·Options·in·the·<a·href="../../../../lib/kernel-10.2.2/doc/html/config.html">OTP·Configuration·Parameters</a>168 <p>If·an·option·is·set·in·more·than·one·way,·what·happens?</p><p>There·is·an·ordering,·which·is:</p><ul><li>Level·0:·Hard-coded·default·values·in·the·OTP·SSH·source·code</li><li>Level·1:·<a·href="../../../../lib/kernel-10.2.2/doc/html/config.html">OTP·Configuration·Parameters</a></li><li>Level·2:·Options·in·the·<a·href="../../../../lib/kernel-10.2.2/doc/html/config.html">OTP·Configuration·Parameters</a>
Offset 225, 96 lines modifiedOffset 225, 96 lines modified
225 ··························'aes192-cbc','aes128-cbc','3des-cbc']}]},225 ··························'aes192-cbc','aes128-cbc','3des-cbc']}]},
226 ·{mac,[{client2server,['hmac-sha2-256','hmac-sha2-512',226 ·{mac,[{client2server,['hmac-sha2-256','hmac-sha2-512',
227 ·······················'hmac-sha1']},227 ·······················'hmac-sha1']},
228 ·······{server2client,['hmac-sha2-256','hmac-sha2-512',228 ·······{server2client,['hmac-sha2-256','hmac-sha2-512',
229 ·······················'hmac-sha1']}]},229 ·······················'hmac-sha1']}]},
230 ·{compression,[{client2server,[none,'zlib@openssh.com',zlib]},230 ·{compression,[{client2server,[none,'zlib@openssh.com',zlib]},
231 ···············{server2client,[none,'zlib@openssh.com',zlib]}]}]</code></pre><p>Note·that·the·algorithms·in·the·file·<code·class="inline">ex2.config</code>·is·not·yet·applied.·They·will231 ···············{server2client,[none,'zlib@openssh.com',zlib]}]}]</code></pre><p>Note·that·the·algorithms·in·the·file·<code·class="inline">ex2.config</code>·is·not·yet·applied.·They·will
232 be·when·we·start·ssh:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2196830909-1">(</span><span·class="p"·data-group-id="2196830909-1">)</span><span·class="p">.</span><span·class="w">232 be·when·we·start·ssh:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2594649256-1">(</span><span·class="p"·data-group-id="2594649256-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="ss">ok</span><span·class="gp·unselectable">233 </span><span·class="ss">ok</span><span·class="gp·unselectable">
234 3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">default_algorithms</span><span·class="p"·data-group-id="2196830909-2">(</span><span·class="p"·data-group-id="2196830909-2">)</span><span·class="p">.</span><span·class="w">234 3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">default_algorithms</span><span·class="p"·data-group-id="2594649256-2">(</span><span·class="p"·data-group-id="2594649256-2">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p"·data-group-id="2196830909-3">[</span><span·class="p"·data-group-id="2196830909-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-5">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·929e4cfd5d4b5d1598b37b6383b81f5f3dc713267d073bda20451e717adcf614·...·]-4">}</span><span·class="p">,</span><span·class="w">235 </span><span·class="p"·data-group-id="2594649256-3">[</span><span·class="p"·data-group-id="2594649256-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-5">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·ef87da083e53c79e95e0882ba48d0070e323ace6aeac6a4d7bec174d96736555·...·]-4">}</span><span·class="p">,</span><span·class="w">
236 ·</span><span·class="p"·data-group-id="2196830909-6">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-7">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="2196830909-7">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·4c4fd3911eadc0b5855e8ed4536028ddba10327e231459b8085c85fe10185ba5·...·]-6">}</span><span·class="p">,</span><span·class="w">236 ·</span><span·class="p"·data-group-id="2594649256-6">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-7">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="2594649256-7">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·0dee6466a272c272bfa11624b131e25b044f2b09cc5c7cf0e90afa635f457f0f·...·]-6">}</span><span·class="p">,</span><span·class="w">
237 ·</span><span·class="p"·data-group-id="2196830909-8">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-9">[</span><span·class="p"·data-group-id="2196830909-10">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·180,·SHA:·c27c2a35581799ff35e0a6b2b8bc75ba62ad27f20374754fe8d2c289af3802f2·...·]-10">}</span><span·class="p">,</span><span·class="w">237 ·</span><span·class="p"·data-group-id="2594649256-8">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-9">[</span><span·class="p"·data-group-id="2594649256-10">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·180,·SHA:·ca8d572fe1ea9ea206a2d47693cbc6b90ae7a5f65d7506ae86fef315fe7786b5·...·]-10">}</span><span·class="p">,</span><span·class="w">
238 ··········</span><span·class="p"·data-group-id="2196830909-12">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-13">[</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="2196830909-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·127,·SHA:·976c4c708cb9e248656673df6b568a337fa4fee5b2702c073a254263f310fb1d·...·]-8">}</span><span·class="p">,</span><span·class="w">238 ··········</span><span·class="p"·data-group-id="2594649256-12">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-13">[</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="2594649256-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·127,·SHA:·fa8e20e09f2d2baca66eb6e606079232e0127205c795291d4c027b5653572b22·...·]-8">}</span><span·class="p">,</span><span·class="w">
239 ·</span><span·class="p"·data-group-id="2196830909-14">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-15">[</span><span·class="p"·data-group-id="2196830909-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·178,·SHA:·02a95545157a5c4ce8f051e398399d10c72dd7a3e17f20b2bdda715ea0197e6f·...·]-16">}</span><span·class="p">,</span><span·class="w">239 ·</span><span·class="p"·data-group-id="2594649256-14">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-15">[</span><span·class="p"·data-group-id="2594649256-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·178,·SHA:·f2ca3acacbe78da158b127e7dd42e9c370d1c03dfa76cd59793401a4aab57bec·...·]-16">}</span><span·class="p">,</span><span·class="w">
240 ·······</span><span·class="p"·data-group-id="2196830909-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-19">[</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="2196830909-19">]</span><span·class="p"·data-group-id="2196830909-18">}</span><span·class="p"·data-group-id="2196830909-15">]</span><span·class="p"·data-group-id="2196830909-14">}</span><span·class="p">,</span><span·class="w"> 
241 ·</span><span·class="p"·data-group-id="2196830909-20">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-21">[</span><span·class="p"·data-group-id="2196830909-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-23">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="2196830909-23">]</span><span·class="p"·data-group-id="2196830909-22">}</span><span·class="p">,</span><span·class="w"> 
242 ···············</span><span·class="p"·data-group-id="2196830909-24">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2196830909-25">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#3[·...·truncated·by·diffoscope;·len:·344,·SHA:·e1dcaadd310a6c76ae94fb2357887909ae1c5c78b8990a09b05f23caeffa439a·...·]</span><span·class="w">240 ·······</span><span·class="p"·data-group-id="2594649256-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-19">[</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="259464[·...·truncated·by·diffoscope;·len:·196,·SHA:·c24177d27a58a7ec07badf387f23fe868590db5341cf638e0a39a86a9c0f0994·...·]</span><span·class="w">
 241 ·</span><span·class="p"·data-group-id="2594649256-20">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-21">[</span><span·class="p"·data-group-id="2594649256-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-23">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="2594649256-23">]</span><span·class="p"·data-group-id="2594649256-22">}</span><span·class="p">,</span><span·class="w">
 242 ···············</span><span·class="p"·data-group-id="2594649256-24">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2594649256-25">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="2594649256-25">]</span><span·class="p"·data-group-id="2594649256-24">}</span><span·class="p"·data-group-id="2594649256-21">]</span><span·class="p"·data-group-id="2594649256-20">}</span><span·class="p"·data-group-id="2594649256-3">]</span><span·class="w">
243 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><p>We·see·that·the·algorithm·set·is·changed·to·the·one·in·the·<code·class="inline">ex2.config</code>.·Since243 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><p>We·see·that·the·algorithm·set·is·changed·to·the·one·in·the·<code·class="inline">ex2.config</code>.·Since
244 <code·class="inline">compression</code>·is·not·specified·in·the·file,·the·hard-coded·default·is·still·used244 <code·class="inline">compression</code>·is·not·specified·in·the·file,·the·hard-coded·default·is·still·used
245 for·that·entry.</p><h4>Establishing·a·connection·(ssh:connect·et·al)·or·starting·a·daemon·(ssh:daemon)</h4><p>Both·when·the·client·establishes·a·connection·with·ssh:connect·or·other245 for·that·entry.</p><h4>Establishing·a·connection·(ssh:connect·et·al)·or·starting·a·daemon·(ssh:daemon)</h4><p>Both·when·the·client·establishes·a·connection·with·ssh:connect·or·other
246 functions,·or·a·daemon·is·started·with·ssh:daemon,·the·option·lists·in·the246 functions,·or·a·daemon·is·started·with·ssh:daemon,·the·option·lists·in·the
247 function·calls·are·also·used.</p><p>If·a·client·is·started·(ssh:connect·et·al),·the·environment·variable247 function·calls·are·also·used.</p><p>If·a·client·is·started·(ssh:connect·et·al),·the·environment·variable
248 <code·class="inline">client_options</code>·is·used.·Similarly·for·a·daemon·the·<code·class="inline">server_options</code>·variable248 <code·class="inline">client_options</code>·is·used.·Similarly·for·a·daemon·the·<code·class="inline">server_options</code>·variable
249 is·handled.</p><p>If·any·<a·href="ssh.html#t:preferred_algorithms_common_option/0">preferred_algorithms</a>·is249 is·handled.</p><p>If·any·<a·href="ssh.html#t:preferred_algorithms_common_option/0">preferred_algorithms</a>·is
250 present,·the·one·with·the·highest·level·is·used,·that·is,·the·<code·class="inline">Option</code>·list250 present,·the·one·with·the·highest·level·is·used,·that·is,·the·<code·class="inline">Option</code>·list
251 parameter·has·the·highest·priority.·Then·the251 parameter·has·the·highest·priority.·Then·the
252 <a·href="ssh.html#t:modify_algorithms_common_option/0">modify_algorithms</a>·on·all·levels·in252 <a·href="ssh.html#t:modify_algorithms_common_option/0">modify_algorithms</a>·on·all·levels·in
253 order·starting·with·level·0·are·applied.</p><p>We·continue·the·example·above·by·connecting·to·a·server·and·modifying·the·<code·class="inline">kex</code>253 order·starting·with·level·0·are·applied.</p><p>We·continue·the·example·above·by·connecting·to·a·server·and·modifying·the·<code·class="inline">kex</code>
254 algorithm·set.·We·remove·the·only·one·(<code·class="inline">'ecdh-sha2-nistp384'</code>)·and·add254 algorithm·set.·We·remove·the·only·one·(<code·class="inline">'ecdh-sha2-nistp384'</code>)·and·add
255 <code·class="inline">'curve25519-sha256@libssh.org'</code>·by·appending·it·to·the·now·empty·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="p"·data-group-id="2714558238-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="2714558238-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cl[·...·truncated·by·diffoscope;·len:·88,·SHA:·e8de087af6e11c48abfa359ebb1cb6ca0a989427ee904c67d347a4451a305fa6·...·]-2">(</span><span·class="ss">loopback</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">255 <code·class="inline">'curve25519-sha256@libssh.org'</code>·by·appending·it·to·the·now·empty·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="p"·data-group-id="3362134466-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="3362134466-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cl[·...·truncated·by·diffoscope;·len:·88,·SHA:·3e3d4840cca8b5ea8de344492db8e9a5b8b57ecc6c2c8b96a2b19d796c4e4459·...·]-2">(</span><span·class="ss">loopback</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">
256 ························</span><span·class="p"·data-group-id="2714558238-3">[</span><span·class="p"·data-group-id="2714558238-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">256 ························</span><span·class="p"·data-group-id="3362134466-3">[</span><span·class="p"·data-group-id="3362134466-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">
257 ·································</span><span·class="p"·data-group-id="2714558238-5">[</span><span·class="p"·data-group-id="2714558238-6">{</span><span·class="ss">rm</span><span·class="p">,</span><span·class="w">257 ·································</span><span·class="p"·data-group-id="3362134466-5">[</span><span·class="p"·data-group-id="3362134466-6">{</span><span·class="ss">rm</span><span·class="p">,</span><span·class="w">
258 ·····································</span><span·class="p"·data-group-id="2714558238-7">[</span><span·class="w">·</span><span·class="p"·data-group-id="2714558238-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="2714558238-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><[·...·truncated·by·diffoscope;·len:·170,·SHA:·7acc175aa499f9749ed12214c07eecdf9183c2f54e98296fd61896a0aeb4efc3·...·]-7">]</span><span·class="w">258 ·····································</span><span·class="p"·data-group-id="3362134466-7">[</span><span·class="w">·</span><span·class="p"·data-group-id="3362134466-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="3362134466-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><[·...·truncated·by·diffoscope;·len:·170,·SHA:·059114975bc65df5950762b9b75fc1f3ff85ef490327419dc44b859b09c529c1·...·]-7">]</span><span·class="w">
259 »       »       »       »       ··</span><span·class="p"·data-group-id="2714558238-6">}</span><span·class="p">,</span><span·class="w">259 »       »       »       »       ··</span><span·class="p"·data-group-id="3362134466-6">}</span><span·class="p">,</span><span·class="w">
260 ··································</span><span·class="p"·data-group-id="2714558238-10">{</span><span·class="ss">append</span><span·class="p">,</span><span·class="w">260 ··································</span><span·class="p"·data-group-id="3362134466-10">{</span><span·class="ss">append</span><span·class="p">,</span><span·class="w">
261 »       »       »       ·············</span><span·class="p"·data-group-id="2714558238-11">[</span><span·class="w">·</span><span·class="p"·data-group-id="2714558238-12">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="2714558238-13">[</span><span·class="ss">&#39;curve25519-sha256@libssh.org[·...·truncated·by·diffoscope;·len:·185,·SHA:·184225382258808e7a93e1d02e801f32b8d2c4c4af1371c41ac3e218c89d16ce·...·]-11">]</span><span·class="w">261 »       »       »       ·············</span><span·class="p"·data-group-id="3362134466-11">[</span><span·class="w">·</span><span·class="p"·data-group-id="3362134466-12">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="3362134466-13">[</span><span·class="ss">&#39;curve25519-sha256@libssh.org[·...·truncated·by·diffoscope;·len:·185,·SHA:·2d88b16af76a00b87ef3b526186fff5e28f4cda6fb5449eaeb1f2dab9f626cd1·...·]-11">]</span><span·class="w">
262 »       »       »       »       ··</span><span·class="p"·data-group-id="2714558238-10">}</span><span·class="w">262 »       »       »       »       ··</span><span·class="p"·data-group-id="3362134466-10">}</span><span·class="w">
263 »       »       »       »       ·</span><span·class="p"·data-group-id="2714558238-5">]</span><span·class="w">263 »       »       »       »       ·</span><span·class="p"·data-group-id="3362134466-5">]</span><span·class="w">
264 »       ·················</span><span·class="p"·data-group-id="2714558238-4">}</span><span·class="w">264 »       ·················</span><span·class="p"·data-group-id="3362134466-4">}</span><span·class="w">
265 ························</span><span·class="p"·data-group-id="2714558238-3">]</span><span·class="p"·data-group-id="2714558238-2">)</span><span·class="p">.</span><span·class="w">265 ························</span><span·class="p"·data-group-id="3362134466-3">]</span><span·class="p"·data-group-id="3362134466-2">)</span><span·class="p">.</span><span·class="w">
266 </span><span·class="p"·data-group-id="2714558238-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&gt;</span><span·class="mf">0.118</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2714558238-14">}</span></code></pre><p>We·check·which·algorithms·are·negotiated·by·the·client·and·the·server,·and·note266 </span><span·class="p"·data-group-id="3362134466-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&gt;</span><span·class="mf">0.118</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3362134466-14">}</span></code></pre><p>We·check·which·algorithms·are·negotiated·by·the·client·and·the·server,·and·note
267 that·the·(only)·<code·class="inline">kex</code>·algorithm·<code·class="inline">'curve25519-sha256@libssh.org'</code>·was·selected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="6693616459-1">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="6693616459-1">)</span><span·class="p">.</span><span·class="w">267 that·the·(only)·<code·class="inline">kex</code>·algorithm·<code·class="inline">'curve25519-sha256@libssh.org'</code>·was·selected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="5729910070-1">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="5729910070-1">)</span><span·class="p">.</span><span·class="w">
268 </span><span·class="p"·data-group-id="6693616459-2">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="6693616459-3">[</span><span·class="p"·data-group-id="6693616459-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">&#[·...·truncated·by·diffoscope;·len:·84,·SHA:·67a6676db4cbd31156d72ff34b105b0b3c853755277474a0fa2faddb2d908351·...·]-4">}</span><span·class="p">,</span><span·class="w">268 </span><span·class="p"·data-group-id="5729910070-2">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="5729910070-3">[</span><span·class="p"·data-group-id="5729910070-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">&#[·...·truncated·by·diffoscope;·len:·84,·SHA:·d569e6b0cae79f9f363010262a5bab4762ec7de7b87e51a48bb1ac5c381e3f89·...·]-4">}</span><span·class="p">,</span><span·class="w">
269 ·············</span><span·class="p"·data-group-id="6693616459-5">{</span><span·class="ss">hkey</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="6693616459-5">}</span><span·class="p">,</span><span·class="w">269 ·············</span><span·class="p"·data-group-id="5729910070-5">{</span><span·class="ss">hkey</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="5729910070-5">}</span><span·class="p">,</span><span·class="w">
270 ·············</span><span·class="p"·data-group-id="6693616459-6">{</span><span·class="ss">send_mac</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="6693616459-6">}</span><span·class="p">,</span><span·class="w">270 ·············</span><span·class="p"·data-group-id="5729910070-6">{</span><span·class="ss">send_mac</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="5729910070-6">}</span><span·class="p">,</span><span·class="w">
271 ·············</span><span·class="p"·data-group-id="6693616459-7">{</span><span·class="ss">recv_mac</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="6693616459-7">}</span><span·class="p">,</span><span·class="w">271 ·············</span><span·class="p"·data-group-id="5729910070-7">{</span><span·class="ss">recv_mac</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="5729910070-7">}</span><span·class="p">,</span><span·class="w">
272 ·············</span><span·class="p"·data-group-id="6693616459-8">{</span><span·class="ss">encrypt</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="6693616459-8">}</span><span·class="p">,</span><span·class="w">272 ·············</span><span·class="p"·data-group-id="5729910070-8">{</span><span·class="ss">encrypt</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="5729910070-8">}</span><span·class="p">,</span><span·class="w">
273 ·············</span><span·class="p"·data-group-id="6693616459-9">{</span><span·class="ss">decrypt</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="6693616459-9">}</span><span·class="p">,</span><span·class="w">273 ·············</span><span·class="p"·data-group-id="5729910070-9">{</span><span·class="ss">decrypt</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="5729910070-9">}</span><span·class="p">,</span><span·class="w">
274 ·············</span><span·class="p"·data-group-id="6693616459-10">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="6693616459-10">}</span><span·class="p">,</span><span·class="w">274 ·············</span><span·class="p"·data-group-id="5729910070-10">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="5729910070-10">}</span><span·class="p">,</span><span·class="w">
275 ·············</span><span·class="p"·data-group-id="6693616459-11">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="6693616459-11">}</span><span·class="p">,</span><span·class="w">275 ·············</span><span·class="p"·data-group-id="5729910070-11">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="5729910070-11">}</span><span·class="p">,</span><span·class="w">
276 ·············</span><span·class="p"·data-group-id="6693616459-12">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="6693616459-12">}</span><span·class="p">,</span><span·class="w">276 ·············</span><span·class="p"·data-group-id="5729910070-12">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="5729910070-12">}</span><span·class="p">,</span><span·class="w">
277 ·············</span><span·class="p"·data-group-id="6693616459-13">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6693616459-13">}</span><span·class="p"·data-group-id="6693616459-3">]</span><span·class="p"·data-group-id="669361[·...·truncated·by·diffoscope;·len:·4,·SHA:·b4659ba19064b95e052239db97885c7c20e8a6491db14deef197cd69224cbae6·...·]-2">}</span></code></pre><h4>Example·of·modify_algorithms·handling</h4><p>We·will·now·check·if·the277 ·············</span><span·class="p"·data-group-id="5729910070-13">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="5729910070-13">}</span><span·class="p"·data-group-id="5729910070-3">]</span><span·class="p"·data-group-id="572991[·...·truncated·by·diffoscope;·len:·4,·SHA:·71ffe84afd528a0365d6ec95c89a64cd6979b4a15730649feddf2dc390db9e3c·...·]-2">}</span></code></pre><h4>Example·of·modify_algorithms·handling</h4><p>We·will·now·check·if·the
278 <a·href="ssh.html#t:modify_algorithms_common_option/0">modify_algorithms</a>·on·a·lower·level278 <a·href="ssh.html#t:modify_algorithms_common_option/0">modify_algorithms</a>·on·a·lower·level
279 is·applied·to·a279 is·applied·to·a
280 <a·href="ssh.html#t:preferred_algorithms_common_option/0">preferred_algorithms</a>·on·a·higher280 <a·href="ssh.html#t:preferred_algorithms_common_option/0">preferred_algorithms</a>·on·a·higher
281 level.·We·will·do·that·by·enabling·the·<code·class="inline">ssh-dss</code>·algorithm·that·is·supported,281 level.·We·will·do·that·by·enabling·the·<code·class="inline">ssh-dss</code>·algorithm·that·is·supported,
282 but·not·in·the·default·set.</p><p>The·config·file·<code·class="inline">ex3.config</code>·has·the·contents:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8371394243-1">[</span><span·class="w">282 but·not·in·the·default·set.</p><p>The·config·file·<code·class="inline">ex3.config</code>·has·the·contents:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9543903790-1">[</span><span·class="w">
283 ·</span><span·class="p"·data-group-id="8371394243-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8371394243-3">[</span><span·class="p"·data-group-id="8371394243-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">283 ·</span><span·class="p"·data-group-id="9543903790-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9543903790-3">[</span><span·class="p"·data-group-id="9543903790-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">
284 ·········</span><span·class="p"·data-group-id="8371394243-5">[</span><span·class="w">·</span><span·class="p"·data-group-id="8371394243-6">{</span><span·class="ss">prepend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8371394243-7">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·481,·SHA:·d2188902ac41ba07ebf4361fb209bc9c093c1f3201bf2835ee50def053a3646f·...·]-5">]</span><span·class="w">284 ·········</span><span·class="p"·data-group-id="9543903790-5">[</span><span·class="w">·</span><span·class="p"·data-group-id="9543903790-6">{</span><span·class="ss">prepend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9543903790-7">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·481,·SHA:·25b2bfbb20ecc5497334ff147b4891c284f43505b55401c67c5616d6c3f0f6c6·...·]-5">]</span><span·class="w">
285 ········</span><span·class="p"·data-group-id="8371394243-4">}</span><span·class="p"·data-group-id="8371394243-3">]</span><span·class="p"·data-group-id="8371394243-2">}</span><span·class="w">285 ········</span><span·class="p"·data-group-id="9543903790-4">}</span><span·class="p"·data-group-id="9543903790-3">]</span><span·class="p"·data-group-id="9543903790-2">}</span><span·class="w">
286 </span><span·class="p"·data-group-id="8371394243-1">]</span><span·class="p">.</span></code></pre><p>A·newly·started·erlang·shell·shows·that·no·<code·class="inline">'ssh-dss'</code>·is·present·in·the286 </span><span·class="p"·data-group-id="9543903790-1">]</span><span·class="p">.</span></code></pre><p>A·newly·started·erlang·shell·shows·that·no·<code·class="inline">'ssh-dss'</code>·is·present·in·the
287 <code·class="inline">public_key</code>·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3658086991-1">(</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">default_algorithms</span><span·class="p"·data-group-id="3658086991-2">(</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·4989dd08de228fa49e07634cf6726c5353f198c9ae4b5b9d4acaf97f5a2b184f·...·]-1">)</span><span·class="p">.</span><span·class="w">287 <code·class="inline">public_key</code>·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="7107782199-1">(</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">default_algorithms</span><span·class="p"·data-group-id="7107782199-2">(</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·66e31126d81396a435c42597944fbafef8a4d8fb98c40396bbc7c6cfe5445ad6·...·]-1">)</span><span·class="p">.</span><span·class="w">
288 </span><span·class="p"·data-group-id="3658086991-3">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">288 </span><span·class="p"·data-group-id="7107782199-3">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
289 ·</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-ed25519&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-ed448&#39;</span><span·class="p">,</span><span·class="w">289 ·</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-ed25519&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-ed448&#39;</span><span·class="p">,</span><span·class="w">
290 ·</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="3658086991-3">]</span><span·class="w">290 ·</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="7107782199-3">]</span><span·class="w">
291 </span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre><p>A·call·to·<a·href="ssh.html#connect/3"><code·class="inline">ssh:connect/3</code></a>·removes·all·algorithms·but·one·of·each·type:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5117400744-1">(</span><span·class="p"·data-group-id="5117400744-1">)</span><span·class="p">.</span><span·class="w">291 </span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre><p>A·call·to·<a·href="ssh.html#connect/3"><code·class="inline">ssh:connect/3</code></a>·removes·all·algorithms·but·one·of·each·type:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="0732771672-1">(</span><span·class="p"·data-group-id="0732771672-1">)</span><span·class="p">.</span><span·class="w">
292 </span><span·class="ss">ok</span><span·class="gp·unselectable">292 </span><span·class="ss">ok</span><span·class="gp·unselectable">
293 3&gt;·</span><span·class="p"·data-group-id="5117400744-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="5117400744-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cl[·...·truncated·by·diffoscope;·len:·88,·SHA:·13a98b84439bd0eeb7741504b4b136cbdcb9c1037a4f87a42645396f5d3606af·...·]-3">(</span><span·class="ss">loopback</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">293 3&gt;·</span><span·class="p"·data-group-id="0732771672-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="0732771672-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cl[·...·truncated·by·diffoscope;·len:·88,·SHA:·91565df0d78b73965171c86890a5f71bd7182790e5ccf4ea562c955ac4b601f1·...·]-3">(</span><span·class="ss">loopback</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">
294 ························</span><span·class="p"·data-group-id="5117400744-4">[</span><span·class="p"·data-group-id="5117400744-5">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">294 ························</span><span·class="p"·data-group-id="0732771672-4">[</span><span·class="p"·data-group-id="0732771672-5">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
295 ·························</span><span·class="p"·data-group-id="5117400744-6">[</span><span·class="p"·data-group-id="5117400744-7">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5117400744-8">[</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;[·...·truncated·by·diffoscope;·len:·101,·SHA:·7d466d3562632db7c13d36bb9e49df250f82d36fa5efb51c5751e297d2db2bda·...·]-7">}</span><span·class="p">,</span><span·class="w">295 ·························</span><span·class="p"·data-group-id="0732771672-6">[</span><span·class="p"·data-group-id="0732771672-7">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0732771672-8">[</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;[·...·truncated·by·diffoscope;·len:·101,·SHA:·f2539cd24bfad61d80b02b92e3748caf9f50f2dbd712e3b5a98a94c4600dddf5·...·]-7">}</span><span·class="p">,</span><span·class="w">
296 »       »       »       ··</span><span·class="p"·data-group-id="5117400744-9">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5117400744-10">[</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p"·data-group-id="5117400744-10">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·752db61cab5ac6720ba049a3194465ac46930b8e8467777cf3c8154cded14b20·...·]-9">}</span><span·class="p">,</span><span·class="w">296 »       »       »       ··</span><span·class="p"·data-group-id="0732771672-9">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0732771672-10">[</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p"·data-group-id="0732771672-10">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·d13e40992946af9cdde3305b433dd7cd4f31fb638236d87d2af48a711e047bb4·...·]-9">}</span><span·class="p">,</span><span·class="w">
297 »       »       ··········</span><span·class="p"·data-group-id="5117400744-11">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5117400744-12">[</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="5117400[·...·truncated·by·diffoscope;·len:·57,·SHA:·70bc22b0660be4f4aa2b6d4969fbb39f6931c5dddc437174a19b1ab70284f06f·...·]-11">}</span><span·class="p">,</span><span·class="w">297 »       »       ··········</span><span·class="p"·data-group-id="0732771672-11">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0732771672-12">[</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="0732771[·...·truncated·by·diffoscope;·len:·57,·SHA:·cb5f2457a32a3f51036fb5cffbc8fc32edf7d8e466e6bad0348d52d96873e220·...·]-11">}</span><span·class="p">,</span><span·class="w">
298 »       »       »       ··</span><span·class="p"·data-group-id="5117400744-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5117400744-14">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p"·data-group-id="5117400744-14">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·c8e546e61ceb1facb16899d28acc5961605820832f6dfcdba57da7cca4bc4f7a·...·]-13">}</span><span·class="p">,</span><span·class="w">298 »       »       »       ··</span><span·class="p"·data-group-id="0732771672-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0732771672-14">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p"·data-group-id="0732771672-14">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·924ef525d824602eb1a9b756db8304e655bef594ddc0fe62b36e53d5d1d70be4·...·]-13">}</span><span·class="p">,</span><span·class="w">
299 »       »       »       ··</span><span·class="p"·data-group-id="5117400744-15">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5117400744-16">[</span><span·class="ss">none</span><span·class="p"·data-group-id="5117400744-16">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·9405f8433bf42409aa289c36e2bbacfa1e05815bdca8c6e5fe5f58d0fa972f08·...·]-15">}</span><span·class="w">299 »       »       »       ··</span><span·class="p"·data-group-id="0732771672-15">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0732771672-16">[</span><span·class="ss">none</span><span·class="p"·data-group-id="0732771672-16">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·c812329a1b7c1e03ab3cd0d7b727828391ef1c56375aa1f634df7f3514fc6176·...·]-15">}</span><span·class="w">
300 »       »       »       ··</span><span·class="p"·data-group-id="5117400744-6">]</span><span·class="p"·data-group-id="5117400744-5">}</span><span·class="w">300 »       »       »       ··</span><span·class="p"·data-group-id="0732771672-6">]</span><span·class="p"·data-group-id="0732771672-5">}</span><span·class="w">
301 »       »       »       ·</span><span·class="p"·data-group-id="5117400744-4">]</span><span·class="p"·data-group-id="5117400744-3">)</span><span·class="p">.</span><span·class="w">301 »       »       »       ·</span><span·class="p"·data-group-id="0732771672-4">]</span><span·class="p"·data-group-id="0732771672-3">)</span><span·class="p">.</span><span·class="w">
302 </span><span·class="p"·data-group-id="5117400744-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.101</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5117400744-17">}</span><span·class="gp·unselectable">302 </span><span·class="p"·data-group-id="0732771672-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.101</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0732771672-17">}</span><span·class="gp·unselectable">
303 4&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="5117400744-18">(</span><span·class="n">C</span><span·class="p">,</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="5117400744-18">)</span><span·class="p">.</span><span·class="w">303 4&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="0732771672-18">(</span><span·class="n">C</span><span·class="p">,</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="0732771672-18">)</span><span·class="p">.</span><span·class="w">
304 </span><span·class="p"·data-group-id="5117400744-19">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="5117400744-20">[</span><span·class="p"·data-group-id="5117400744-21">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·77,·SHA:·d4ad3c412915e6a0544a87c91bbefcf81d8be56dc6332a64a633f736a92012ce·...·]-21">}</span><span·class="p">,</span><span·class="w">304 </span><span·class="p"·data-group-id="0732771672-19">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="0732771672-20">[</span><span·class="p"·data-group-id="0732771672-21">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·77,·SHA:·f43c4f2efc168cd4303f838363c2b9ded5bdb88beb9bc79793264c3e08da24ec·...·]-21">}</span><span·class="p">,</span><span·class="w">
305 ·············</span><span·class="p"·data-group-id="5117400744-22">{</span><span·class="ss">hkey</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="5117400744-22">}</span><span·class="p">,</span><span·class="w">305 ·············</span><span·class="p"·data-group-id="0732771672-22">{</span><span·class="ss">hkey</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="0732771672-22">}</span><span·class="p">,</span><span·class="w">
306 ·············</span><span·class="p"·data-group-id="5117400744-23">{</span><span·class="ss">send_mac</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="5117400744-23">}</span><span·class="p">,</span><span·class="w">306 ·············</span><span·class="p"·data-group-id="0732771672-23">{</span><span·class="ss">send_mac</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="0732771672-23">}</span><span·class="p">,</span><span·class="w">
307 ·············</span><span·class="p"·data-group-id="5117400744-24">{</span><span·class="ss">recv_mac</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="5117400744-24">}</span><span·class="p">,</span><span·class="w">307 ·············</span><span·class="p"·data-group-id="0732771672-24">{</span><span·class="ss">recv_mac</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="0732771672-24">}</span><span·class="p">,</span><span·class="w">
308 ·············</span><span·class="p"·data-group-id="5117400744-25">{</span><span·class="ss">encrypt</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="5117400744-25">}</span><span·class="p">,</span><span·class="w">308 ·············</span><span·class="p"·data-group-id="0732771672-25">{</span><span·class="ss">encrypt</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="0732771672-25">}</span><span·class="p">,</span><span·class="w">
309 ·············</span><span·class="p"·data-group-id="5117400744-26">{</span><span·class="ss">decrypt</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="5117400744-26">}</span><span·class="p">,</span><span·class="w">309 ·············</span><span·class="p"·data-group-id="0732771672-26">{</span><span·class="ss">decrypt</span><span·class="p">,</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="0732771672-26">}</span><span·class="p">,</span><span·class="w">
310 ·············</span><span·class="p"·data-group-id="5117400744-27">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="5117400744-27">}</span><span·class="p">,</span><span·class="w">310 ·············</span><span·class="p"·data-group-id="0732771672-27">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="0732771672-27">}</span><span·class="p">,</span><span·class="w">
311 ·············</span><span·class="p"·data-group-id="5117400744-28">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="5117400744-28">}</span><span·class="p">,</span><span·class="w">311 ·············</span><span·class="p"·data-group-id="0732771672-28">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="0732771672-28">}</span><span·class="p">,</span><span·class="w">
312 ·············</span><span·class="p"·data-group-id="5117400744-29">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="5117400744-29">}</span><span·class="p">,</span><span·class="w">312 ·············</span><span·class="p"·data-group-id="0732771672-29">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="0732771672-29">}</span><span·class="p">,</span><span·class="w">
313 ·············</span><span·class="p"·data-group-id="5117400744-30">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="5117400744-30">}</span><span·class="p"·data-group-id="5117400744-20">]</span><span·class="p"·data-group-id="51174[·...·truncated·by·diffoscope;·len:·5,·SHA:·43c554d0dc7c5108837dd448bd17f4ebc5baba9f19ef26c3483d9360f97b7627·...·]-19">}</span><span·class="w">313 ·············</span><span·class="p"·data-group-id="0732771672-30">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="0732771672-30">}</span><span·class="p"·data-group-id="0732771672-20">]</span><span·class="p"·data-group-id="07327[·...·truncated·by·diffoscope;·len:·5,·SHA:·dd6340b97f1dbf24a64fab10f61c4da21ea86b1d640245c6daf8d0c33f3df788·...·]-19">}</span><span·class="w">
314 </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p>But·<code·class="inline">'ssh-dss'</code>·is·selected·although·the·call·inserted·<em>only</em>314 </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p>But·<code·class="inline">'ssh-dss'</code>·is·selected·although·the·call·inserted·<em>only</em>
315 <code·class="inline">'ecdsa-sha2-nistp256'</code>·as·acceptable.</p><p>This·example·showed·that·we·could·augment·the·set·of·algorithms·with·a315 <code·class="inline">'ecdsa-sha2-nistp256'</code>·as·acceptable.</p><p>This·example·showed·that·we·could·augment·the·set·of·algorithms·with·a
316 config-file·without·the·need·to·change·the·actual·call.</p><p>For·demonstration·purposes·we·used·<code·class="inline">prepend</code>·instead·of·<code·class="inline">append</code>.·This·forces316 config-file·without·the·need·to·change·the·actual·call.</p><p>For·demonstration·purposes·we·used·<code·class="inline">prepend</code>·instead·of·<code·class="inline">append</code>.·This·forces
317 the·negotiation·to·select·<code·class="inline">ssh-dss</code>·since·the·the·full·list·of·public·key317 the·negotiation·to·select·<code·class="inline">ssh-dss</code>·since·the·the·full·list·of·public·key
Max diff block lines reached; 45/62603 bytes (0.07%) of diff not shown.
124 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.6/doc/html/configure_algos.html
    
Offset 166, 37 lines modifiedOffset 166, 37 lines modified
166 ··</a>166 ··</a>
167 ··<span·class="text">The·SSH·app's·mechanism</span>167 ··<span·class="text">The·SSH·app's·mechanism</span>
168 </h3>168 </h3>
169 <p>The·set·of·algorithms·that·the·SSH·app·uses·by·default·depends·on·the·algorithms169 <p>The·set·of·algorithms·that·the·SSH·app·uses·by·default·depends·on·the·algorithms
170 supported·by·the:</p><ul><li><a·href="../../../../lib/crypto-5.5.2/doc/html/crypto.html"><code·class="inline">crypto</code></a>·app,</li><li>The·cryptolib·OTP·is·linked·with,·usually·the·one·the·OS·uses,·probably170 supported·by·the:</p><ul><li><a·href="../../../../lib/crypto-5.5.2/doc/html/crypto.html"><code·class="inline">crypto</code></a>·app,</li><li>The·cryptolib·OTP·is·linked·with,·usually·the·one·the·OS·uses,·probably
171 OpenSSL,</li><li>and·finally·what·the·SSH·app·implements</li></ul><p>Due·to·this,·it·impossible·to·list·in·documentation·what·algorithms·that·are171 OpenSSL,</li><li>and·finally·what·the·SSH·app·implements</li></ul><p>Due·to·this,·it·impossible·to·list·in·documentation·what·algorithms·that·are
172 available·in·a·certain·installation.</p><p>There·is·an·important·command·to·list·the·actual·algorithms·and·their·ordering:172 available·in·a·certain·installation.</p><p>There·is·an·important·command·to·list·the·actual·algorithms·and·their·ordering:
173 <a·href="ssh.html#default_algorithms/0"><code·class="inline">ssh:default_algorithms/0</code></a>.</p><pre·id="example_default_algorithms"><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">0&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">default_algorithms</span><span·class="p"·data-group-id="4310060290-1">(</span><span·class="p"·data-group-id="4310060290-1">)</span><span·class="p">.</span><span·class="w">173 <a·href="ssh.html#default_algorithms/0"><code·class="inline">ssh:default_algorithms/0</code></a>.</p><pre·id="example_default_algorithms"><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">0&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">default_algorithms</span><span·class="p"·data-group-id="5599085827-1">(</span><span·class="p"·data-group-id="5599085827-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="4310060290-2">[</span><span·class="p"·data-group-id="4310060290-3">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-4">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdh-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">174 </span><span·class="p"·data-group-id="5599085827-2">[</span><span·class="p"·data-group-id="5599085827-3">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-4">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdh-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
175 ·······</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha256&#39;</span><span·class="p">,</span><span·class="w">175 ·······</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha256&#39;</span><span·class="p">,</span><span·class="w">
176 ·······</span><span·class="ss">&#39;diffie-hellman-group16-sha512&#39;</span><span·class="p">,</span><span·class="w">176 ·······</span><span·class="ss">&#39;diffie-hellman-group16-sha512&#39;</span><span·class="p">,</span><span·class="w">
177 ·······</span><span·class="ss">&#39;diffie-hellman-group18-sha512&#39;</span><span·class="p">,</span><span·class="w">177 ·······</span><span·class="ss">&#39;diffie-hellman-group18-sha512&#39;</span><span·class="p">,</span><span·class="w">
178 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p">,</span><span·class="w">178 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p">,</span><span·class="w">
179 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha1&#39;</span><span·class="p">,</span><span·class="w">179 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha1&#39;</span><span·class="p">,</span><span·class="w">
180 ·······</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha1&#39;</span><span·class="p"·data-group-id="4310060290-4">]</span><span·class="p"·data-group-id="4310060290-3">}</span><span·class="p">,</span><span·class="w">180 ·······</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha1&#39;</span><span·class="p"·data-group-id="5599085827-4">]</span><span·class="p"·data-group-id="5599085827-3">}</span><span·class="p">,</span><span·class="w">
181 ·</span><span·class="p"·data-group-id="4310060290-5">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-6">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">181 ·</span><span·class="p"·data-group-id="5599085827-5">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-6">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
182 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">182 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">
183 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="4310060290-6">]</span><span·class="p"·data-group-id="4310060290-5">}</span><span·class="p">,</span><span·class="w">183 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="5599085827-6">]</span><span·class="p"·data-group-id="5599085827-5">}</span><span·class="p">,</span><span·class="w">
184 ·</span><span·class="p"·data-group-id="4310060290-7">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-8">[</span><span·class="p"·data-group-id="4310060290-9">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·a42eae186e15f90675dabd7236941ac996ce60552685a7405dc349faa40decd0·...·]-10">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">184 ·</span><span·class="p"·data-group-id="5599085827-7">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-8">[</span><span·class="p"·data-group-id="5599085827-9">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·9f9343dc0327588f5e13942f7337446e1fecd79b9bc69c4c14d7c41cdfcc5c4f·...·]-10">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">
185 ··························</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">185 ··························</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">
186 ··························</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="4310060290-10">]</span><span·class="p"·data-group-id="4310060290-9">}</span><span·class="p">,</span><span·class="w">186 ··························</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="5599085827-10">]</span><span·class="p"·data-group-id="5599085827-9">}</span><span·class="p">,</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="4310060290-11">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-12">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="w">187 ··········</span><span·class="p"·data-group-id="5599085827-11">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-12">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="w">
188 ··························</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="w">188 ··························</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="w">
189 ··························</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="4310060290-12">]</span><span·class="p"·data-group-id="4310060290-11">}</span><span·class="p"·data-group-id="4310060290-8">]</span><span·class="p"·data-group-id="4310060290-7">}</span><span·class="p">,</span><span·class="w">189 ··························</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="5599085827-12">]</span><span·class="p"·data-group-id="5599085827-11">}</span><span·class="p"·data-group-id="5599085827-8">]</span><span·class="p"·data-group-id="5599085827-7">}</span><span·class="p">,</span><span·class="w">
190 ·</span><span·class="p"·data-group-id="4310060290-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-14">[</span><span·class="p"·data-group-id="4310060290-15">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·a42eae186e15f90675dabd7236941ac996ce60552685a7405dc349faa40decd0·...·]-16">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">190 ·</span><span·class="p"·data-group-id="5599085827-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-14">[</span><span·class="p"·data-group-id="5599085827-15">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·9f9343dc0327588f5e13942f7337446e1fecd79b9bc69c4c14d7c41cdfcc5c4f·...·]-16">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
191 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="4310060290-16">]</span><span·class="p"·data-group-id="4310060290-15">}</span><span·class="p">,</span><span·class="w">191 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="5599085827-16">]</span><span·class="p"·data-group-id="5599085827-15">}</span><span·class="p">,</span><span·class="w">
192 ·······</span><span·class="p"·data-group-id="4310060290-17">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-18">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">192 ·······</span><span·class="p"·data-group-id="5599085827-17">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-18">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
193 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="4310060290-18">]</span><span·class="p"·data-group-id="4310060290-17">}</span><span·class="p"·data-group-id="4310060290-14">]</span><span·class="p"·data-group-id="4310060290-13">}</span><span·class="p">,</span><span·class="w">193 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="5599085827-18">]</span><span·class="p"·data-group-id="5599085827-17">}</span><span·class="p"·data-group-id="5599085827-14">]</span><span·class="p"·data-group-id="5599085827-13">}</span><span·class="p">,</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="4310060290-19">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-20">[</span><span·class="p"·data-group-id="4310060290-21">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-22">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="4310060290-22">]</span><span·class="p"·data-group-id="4310060290-21">}</span><span·class="p">,</span><span·class="w"> 
195 ···············</span><span·class="p"·data-group-id="4310060290-23">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4310060290-24">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·445,·SHA:·22c049705e3c093f518b01ee94f8a618acc59751f807514ef04d08355976e089·...·]194 ·</span><span·class="p"·data-group-id="5599085827-19">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-20">[</span><span·class="p"·data-group-id="5599085827-21">{</span><span·class="ss">client2serv[·...·truncated·by·diffoscope;·len:·389,·SHA:·33f71e07759588204d3afe10597241e4b001ea3369fc55740375cbb791ffe297·...·]
 195 ···············</span><span·class="p"·data-group-id="5599085827-23">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5599085827-24">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="5599085827-24">]</span><span·class="p"·data-group-id="5599085827-23">}</span><span·class="p"·data-group-id="5599085827-20">]</span><span·class="p"·data-group-id="5599085827-19">}</span><span·class="p"·data-group-id="5599085827-2">]</span></code></pre><p>To·change·the·algorithm·list,·there·are·two·options·which·can·be·used·in
196 <a·href="ssh.html#connect/3">ssh:connect/2,3,4</a>·and·<a·href="ssh.html#daemon/2">ssh:daemon/2,3</a>.·The196 <a·href="ssh.html#connect/3">ssh:connect/2,3,4</a>·and·<a·href="ssh.html#daemon/2">ssh:daemon/2,3</a>.·The
197 options·could·of·course·be·used·in·all·other·functions·that·initiates197 options·could·of·course·be·used·in·all·other·functions·that·initiates
198 connections.</p><p>The·options·are198 connections.</p><p>The·options·are
199 <a·href="ssh.html#t:preferred_algorithms_common_option/0">preferred_algorithms</a>·and199 <a·href="ssh.html#t:preferred_algorithms_common_option/0">preferred_algorithms</a>·and
200 <a·href="ssh.html#t:modify_algorithms_common_option/0">modify_algorithms</a>.·The·first·one200 <a·href="ssh.html#t:modify_algorithms_common_option/0">modify_algorithms</a>.·The·first·one
201 replaces·the·default·set,·while·the·latter·modifies·the·default·set.</p><h2·id="replacing-the-default-set-preferred_algorithms"·class="section-heading">201 replaces·the·default·set,·while·the·latter·modifies·the·default·set.</p><h2·id="replacing-the-default-set-preferred_algorithms"·class="section-heading">
202 ··<a·href="#replacing-the-default-set-preferred_algorithms"·class="hover-link">202 ··<a·href="#replacing-the-default-set-preferred_algorithms"·class="hover-link">
Offset 211, 264 lines modifiedOffset 211, 264 lines modified
211 friends·does.</p><h3·id="example-1"·class="section-heading">211 friends·does.</p><h3·id="example-1"·class="section-heading">
212 ··<a·href="#example-1"·class="hover-link">212 ··<a·href="#example-1"·class="hover-link">
213 ····<i·class="ri-link-m"·aria-hidden="true"></i>213 ····<i·class="ri-link-m"·aria-hidden="true"></i>
214 ··</a>214 ··</a>
215 ··<span·class="text">Example·1</span>215 ··<span·class="text">Example·1</span>
216 </h3>216 </h3>
217 <p>Replace·the·kex·algorithms·list·with·the·single·algorithm217 <p>Replace·the·kex·algorithms·list·with·the·single·algorithm
218 <code·class="inline">'diffie-hellman-group14-sha256'</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">chk_algos_opts</span><span·class="p"·data-group-id="6359287020-1">(</span><span·class="w">218 <code·class="inline">'diffie-hellman-group14-sha256'</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">chk_algos_opts</span><span·class="p"·data-group-id="7734569369-1">(</span><span·class="w">
219 ···············</span><span·class="p"·data-group-id="6359287020-2">[</span><span·class="p"·data-group-id="6359287020-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">219 ···············</span><span·class="p"·data-group-id="7734569369-2">[</span><span·class="p"·data-group-id="7734569369-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
220 ·····················</span><span·class="p"·data-group-id="6359287020-4">[</span><span·class="p"·data-group-id="6359287020-5">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6359287020-6">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#[·...·truncated·by·diffoscope;·len:·104,·SHA:·e7a21e9fc2c9bd2a364888b3e61f4e3af95b6c89852ea15b3f71389d9dfa7ab8·...·]-5">}</span><span·class="w">220 ·····················</span><span·class="p"·data-group-id="7734569369-4">[</span><span·class="p"·data-group-id="7734569369-5">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7734569369-6">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#[·...·truncated·by·diffoscope;·len:·104,·SHA:·c5baf89ebe8ad74e3c8f75e57a7134292271fe49dccb69da37fc27947e8d6588·...·]-5">}</span><span·class="w">
221 ·····················</span><span·class="p"·data-group-id="6359287020-4">]</span><span·class="w">221 ·····················</span><span·class="p"·data-group-id="7734569369-4">]</span><span·class="w">
222 ················</span><span·class="p"·data-group-id="6359287020-3">}</span><span·class="w">222 ················</span><span·class="p"·data-group-id="7734569369-3">}</span><span·class="w">
223 ··············</span><span·class="p"·data-group-id="6359287020-2">]</span><span·class="p"·data-group-id="6359287020-1">)</span><span·class="p">.</span><span·class="w">223 ··············</span><span·class="p"·data-group-id="7734569369-2">]</span><span·class="p"·data-group-id="7734569369-1">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="p"·data-group-id="6359287020-7">[</span><span·class="p"·data-group-id="6359287020-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-9">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·7f9823185c481d005fc72644e08641f28a151c8e8dbfebb3636daaef21c8d98d·...·]-8">}</span><span·class="p">,</span><span·class="w">224 </span><span·class="p"·data-group-id="7734569369-7">[</span><span·class="p"·data-group-id="7734569369-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-9">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·68b3ed662febcb65ff0922d3073f6c87e0d30019a9bdb5858bc6812446ac4955·...·]-8">}</span><span·class="p">,</span><span·class="w">
225 ·</span><span·class="p"·data-group-id="6359287020-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-11">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">225 ·</span><span·class="p"·data-group-id="7734569369-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-11">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
226 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">226 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">
227 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="6359287020-11">]</span><span·class="p"·data-group-id="6359287020-10">}</span><span·class="p">,</span><span·class="w">227 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="7734569369-11">]</span><span·class="p"·data-group-id="7734569369-10">}</span><span·class="p">,</span><span·class="w">
228 ·</span><span·class="p"·data-group-id="6359287020-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-13">[</span><span·class="p"·data-group-id="6359287020-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·d03c6991a07c7461fe11b48ecb9998cf1f21a750fb97bab360439887467d37ad·...·]-15">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">228 ·</span><span·class="p"·data-group-id="7734569369-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-13">[</span><span·class="p"·data-group-id="7734569369-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·9dd71fd82c94f805450b0e0aae65023a0d30db02e3d2ed256fb94f0539ed6a07·...·]-15">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">
229 ··························</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">229 ··························</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="w">
230 ··························</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="6359287020-15">]</span><span·class="p"·data-group-id="6359287020-14">}</span><span·class="p">,</span><span·class="w">230 ··························</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="7734569369-15">]</span><span·class="p"·data-group-id="7734569369-14">}</span><span·class="p">,</span><span·class="w">
231 ··········</span><span·class="p"·data-group-id="6359287020-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-17">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="w">231 ··········</span><span·class="p"·data-group-id="7734569369-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-17">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="w">
232 ··························</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="w">232 ··························</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="w">
233 ··························</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="6359287020-17">]</span><span·class="p"·data-group-id="6359287020-16">}</span><span·class="p"·data-group-id="6359287020-13">]</span><span·class="p"·data-group-id="6359287020-12">}</span><span·class="p">,</span><span·class="w">233 ··························</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="7734569369-17">]</span><span·class="p"·data-group-id="7734569369-16">}</span><span·class="p"·data-group-id="7734569369-13">]</span><span·class="p"·data-group-id="7734569369-12">}</span><span·class="p">,</span><span·class="w">
234 ·</span><span·class="p"·data-group-id="6359287020-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-19">[</span><span·class="p"·data-group-id="6359287020-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·04335525b042c6131bf351c80d00184012ef8e5dbab12e01093a525537388bc3·...·]-21">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">234 ·</span><span·class="p"·data-group-id="7734569369-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-19">[</span><span·class="p"·data-group-id="7734569369-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·200b84b8dd0d5b6e320d4fb256419b5e19f427c4ce87c4636670383af89dbb6c·...·]-21">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
235 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="6359287020-21">]</span><span·class="p"·data-group-id="6359287020-20">}</span><span·class="p">,</span><span·class="w">235 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="7734569369-21">]</span><span·class="p"·data-group-id="7734569369-20">}</span><span·class="p">,</span><span·class="w">
236 ·······</span><span·class="p"·data-group-id="6359287020-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-23">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">236 ·······</span><span·class="p"·data-group-id="7734569369-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-23">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
237 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="6359287020-23">]</span><span·class="p"·data-group-id="6359287020-22">}</span><span·class="p"·data-group-id="6359287020-19">]</span><span·class="p"·data-group-id="6359287020-18">}</span><span·class="p">,</span><span·class="w">237 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="7734569369-23">]</span><span·class="p"·data-group-id="7734569369-22">}</span><span·class="p"·data-group-id="7734569369-19">]</span><span·class="p"·data-group-id="7734569369-18">}</span><span·class="p">,</span><span·class="w">
238 ·</span><span·class="p"·data-group-id="6359287020-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-25">[</span><span·class="p"·data-group-id="6359287020-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·75922aa54f77c5ea55f63ea7f8d150c99d827aeaac0d824fe0bd05ee77331a28·...·]-26">}</span><span·class="p">,</span><span·class="w">238 ·</span><span·class="p"·data-group-id="7734569369-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-25">[</span><span·class="p"·data-group-id="7734569369-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·ce2e54b7ec2037d6e0a0bf75484dc9722bdbdd699cb59722c559c581525c85b1·...·]-26">}</span><span·class="p">,</span><span·class="w">
239 ···············</span><span·class="p"·data-group-id="6359287020-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6359287020-29">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">[·...·truncated·by·diffoscope;·len:·293,·SHA:·f6ef515a94f5e56eae7e2584d920e71a35b424386cfa2622a61786b708eeb37c·...·]-7">]</span></code></pre><p>Note·that·the·unmentioned·lists·(<code·class="inline">public_key</code>,·<code·class="inline">cipher</code>,·<code·class="inline">mac</code>·and239 ···············</span><span·class="p"·data-group-id="7734569369-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="7734569369-29">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">[·...·truncated·by·diffoscope;·len:·293,·SHA:·ececdf927db68b94f920560be345c53b2f501d03a8dc572e5dea32eb2c4ff4de·...·]-7">]</span></code></pre><p>Note·that·the·unmentioned·lists·(<code·class="inline">public_key</code>,·<code·class="inline">cipher</code>,·<code·class="inline">mac</code>·and
240 <code·class="inline">compression</code>)·are·unchanged.</p><h3·id="example-2"·class="section-heading">240 <code·class="inline">compression</code>)·are·unchanged.</p><h3·id="example-2"·class="section-heading">
241 ··<a·href="#example-2"·class="hover-link">241 ··<a·href="#example-2"·class="hover-link">
242 ····<i·class="ri-link-m"·aria-hidden="true"></i>242 ····<i·class="ri-link-m"·aria-hidden="true"></i>
243 ··</a>243 ··</a>
244 ··<span·class="text">Example·2</span>244 ··<span·class="text">Example·2</span>
245 </h3>245 </h3>
246 <p>In·the·lists·that·are·divided·in·two·for·the·two·directions·(for·example·<code·class="inline">cipher</code>)·it·is246 <p>In·the·lists·that·are·divided·in·two·for·the·two·directions·(for·example·<code·class="inline">cipher</code>)·it·is
247 possible·to·change·both·directions·at·once:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">chk_algos_opts</span><span·class="p"·data-group-id="9330645586-1">(</span><span·class="w">247 possible·to·change·both·directions·at·once:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">chk_algos_opts</span><span·class="p"·data-group-id="3456114989-1">(</span><span·class="w">
248 ···············</span><span·class="p"·data-group-id="9330645586-2">[</span><span·class="p"·data-group-id="9330645586-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">248 ···············</span><span·class="p"·data-group-id="3456114989-2">[</span><span·class="p"·data-group-id="3456114989-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
249 ·····················</span><span·class="p"·data-group-id="9330645586-4">[</span><span·class="p"·data-group-id="9330645586-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-6">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·8c1c54fe136505d1c0d2db591f84cb566b5732d7b54ab3b925f1f895b45705c2·...·]-5">}</span><span·class="w">249 ·····················</span><span·class="p"·data-group-id="3456114989-4">[</span><span·class="p"·data-group-id="3456114989-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-6">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·84ec8f13ee691e95bdefb216c2262547da5091f8e6a4ec9e8f0473975de3b56f·...·]-5">}</span><span·class="w">
250 ·····················</span><span·class="p"·data-group-id="9330645586-4">]</span><span·class="w">250 ·····················</span><span·class="p"·data-group-id="3456114989-4">]</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="9330645586-3">}</span><span·class="w">251 ················</span><span·class="p"·data-group-id="3456114989-3">}</span><span·class="w">
252 ··············</span><span·class="p"·data-group-id="9330645586-2">]</span><span·class="p"·data-group-id="9330645586-1">)</span><span·class="p">.</span><span·class="w">252 ··············</span><span·class="p"·data-group-id="3456114989-2">]</span><span·class="p"·data-group-id="3456114989-1">)</span><span·class="p">.</span><span·class="w">
253 </span><span·class="p"·data-group-id="9330645586-7">[</span><span·class="p"·data-group-id="9330645586-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdh-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">253 </span><span·class="p"·data-group-id="3456114989-7">[</span><span·class="p"·data-group-id="3456114989-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdh-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
254 ·······</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha256&#39;</span><span·class="p">,</span><span·class="w">254 ·······</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha256&#39;</span><span·class="p">,</span><span·class="w">
255 ·······</span><span·class="ss">&#39;diffie-hellman-group16-sha512&#39;</span><span·class="p">,</span><span·class="w">255 ·······</span><span·class="ss">&#39;diffie-hellman-group16-sha512&#39;</span><span·class="p">,</span><span·class="w">
256 ·······</span><span·class="ss">&#39;diffie-hellman-group18-sha512&#39;</span><span·class="p">,</span><span·class="w">256 ·······</span><span·class="ss">&#39;diffie-hellman-group18-sha512&#39;</span><span·class="p">,</span><span·class="w">
257 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p">,</span><span·class="w">257 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p">,</span><span·class="w">
258 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha1&#39;</span><span·class="p">,</span><span·class="w">258 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha1&#39;</span><span·class="p">,</span><span·class="w">
259 ·······</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha1&#39;</span><span·class="p"·data-group-id="9330645586-9">]</span><span·class="p"·data-group-id="9330645586-8">}</span><span·class="p">,</span><span·class="w">259 ·······</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha1&#39;</span><span·class="p"·data-group-id="3456114989-9">]</span><span·class="p"·data-group-id="3456114989-8">}</span><span·class="p">,</span><span·class="w">
260 ·</span><span·class="p"·data-group-id="9330645586-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-11">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">260 ·</span><span·class="p"·data-group-id="3456114989-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-11">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
261 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">261 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">
262 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="9330645586-11">]</span><span·class="p"·data-group-id="9330645586-10">}</span><span·class="p">,</span><span·class="w">262 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="3456114989-11">]</span><span·class="p"·data-group-id="3456114989-10">}</span><span·class="p">,</span><span·class="w">
263 ·</span><span·class="p"·data-group-id="9330645586-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-13">[</span><span·class="p"·data-group-id="9330645586-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·0f78fd4ecf92176796754466f1b46c0f5f7193a7fc89a13c6a16f40e45888ddc·...·]-14">}</span><span·class="p">,</span><span·class="w">263 ·</span><span·class="p"·data-group-id="3456114989-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-13">[</span><span·class="p"·data-group-id="3456114989-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·5c55ebae384b95773bbc486fb53f696a13dbcfb633bb2705ed74e3b9485e897b·...·]-14">}</span><span·class="p">,</span><span·class="w">
264 ··········</span><span·class="p"·data-group-id="9330645586-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-17">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id="9330645586-17">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·e650549a53a939ef6d6b563275ce58756a471014e6a054c5322263f0e2ce5299·...·]-12">}</span><span·class="p">,</span><span·class="w">264 ··········</span><span·class="p"·data-group-id="3456114989-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-17">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id="3456114989-17">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·6eb734037ad617b2eaef571452f2f7228101a81ee4d42f0e2148f196aa417dec·...·]-12">}</span><span·class="p">,</span><span·class="w">
265 ·</span><span·class="p"·data-group-id="9330645586-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-19">[</span><span·class="p"·data-group-id="9330645586-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·b8ab653e42b9de1eedc3713ba9c3081e9108923c1e81726c1d968e770035d0e7·...·]-21">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">265 ·</span><span·class="p"·data-group-id="3456114989-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-19">[</span><span·class="p"·data-group-id="3456114989-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·436038b8aade24c46ddbfa675ca92967bb148a6804de29feec7f140c7eee178e·...·]-21">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
266 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="9330645586-21">]</span><span·class="p"·data-group-id="9330645586-20">}</span><span·class="p">,</span><span·class="w">266 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="3456114989-21">]</span><span·class="p"·data-group-id="3456114989-20">}</span><span·class="p">,</span><span·class="w">
267 ·······</span><span·class="p"·data-group-id="9330645586-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-23">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">267 ·······</span><span·class="p"·data-group-id="3456114989-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-23">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
268 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="9330645586-23">]</span><span·class="p"·data-group-id="9330645586-22">}</span><span·class="p"·data-group-id="9330645586-19">]</span><span·class="p"·data-group-id="9330645586-18">}</span><span·class="p">,</span><span·class="w">268 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="3456114989-23">]</span><span·class="p"·data-group-id="3456114989-22">}</span><span·class="p"·data-group-id="3456114989-19">]</span><span·class="p"·data-group-id="3456114989-18">}</span><span·class="p">,</span><span·class="w">
269 ·</span><span·class="p"·data-group-id="9330645586-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-25">[</span><span·class="p"·data-group-id="9330645586-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·bf3df072e6ebf3a54680d1f3d29ca234e90f5b808e44bddf7c0025d6b40a6161·...·]-26">}</span><span·class="p">,</span><span·class="w">269 ·</span><span·class="p"·data-group-id="3456114989-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-25">[</span><span·class="p"·data-group-id="3456114989-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·e3dd4006fb2d975101a3f62b95335ede5399466fd03507b43e53b501f7eda509·...·]-26">}</span><span·class="p">,</span><span·class="w">
270 ···············</span><span·class="p"·data-group-id="9330645586-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9330645586-29">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">[·...·truncated·by·diffoscope;·len:·293,·SHA:·bf3d326545dffe55ab0415e5fe2258c5ce0bd348c225bcd06386c3eb3a9d15fb·...·]-7">]</span></code></pre><p>Note·that·both·lists·in·<code·class="inline">cipher</code>·has·been·changed·to·the·provided·value270 ···············</span><span·class="p"·data-group-id="3456114989-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3456114989-29">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#39;zlib@openssh.com&#39;</span><span·class="p">[·...·truncated·by·diffoscope;·len:·293,·SHA:·96bcde63fabd9e0c6506b6c45beb914b18fe8062a9cdf46ed258218251b7e671·...·]-7">]</span></code></pre><p>Note·that·both·lists·in·<code·class="inline">cipher</code>·has·been·changed·to·the·provided·value
271 (<code·class="inline">'aes128-ctr'</code>).</p><h3·id="example-3"·class="section-heading">271 (<code·class="inline">'aes128-ctr'</code>).</p><h3·id="example-3"·class="section-heading">
272 ··<a·href="#example-3"·class="hover-link">272 ··<a·href="#example-3"·class="hover-link">
273 ····<i·class="ri-link-m"·aria-hidden="true"></i>273 ····<i·class="ri-link-m"·aria-hidden="true"></i>
274 ··</a>274 ··</a>
275 ··<span·class="text">Example·3</span>275 ··<span·class="text">Example·3</span>
276 </h3>276 </h3>
277 <p>In·the·lists·that·are·divided·in·two·for·the·two·directions·(for·example·<code·class="inline">cipher</code>)·it·is277 <p>In·the·lists·that·are·divided·in·two·for·the·two·directions·(for·example·<code·class="inline">cipher</code>)·it·is
278 possible·to·change·only·one·of·the·directions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">chk_algos_opts</span><span·class="p"·data-group-id="9121351649-1">(</span><span·class="w">278 possible·to·change·only·one·of·the·directions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">chk_algos_opts</span><span·class="p"·data-group-id="9122264239-1">(</span><span·class="w">
279 ···············</span><span·class="p"·data-group-id="9121351649-2">[</span><span·class="p"·data-group-id="9121351649-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">279 ···············</span><span·class="p"·data-group-id="9122264239-2">[</span><span·class="p"·data-group-id="9122264239-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
280 ·····················</span><span·class="p"·data-group-id="9121351649-4">[</span><span·class="p"·data-group-id="9121351649-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9121351649-6">[</span><span·class="p"·data-group-id="9121351649-7">{</span><span·class="ss">client2[·...·truncated·by·diffoscope;·len:·333,·SHA:·a4807b7139ab09b069f517a6c7754ef83851f89b99fbe51bdf2621ed43366367·...·]9-5">}</span><span·class="w">280 ·····················</span><span·class="p"·data-group-id="9122264239-4">[</span><span·class="p"·data-group-id="9122264239-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9122264239-6">[</span><span·class="p"·data-group-id="9122264239-7">{</span><span·class="ss">client2[·...·truncated·by·diffoscope;·len:·333,·SHA:·8e2fb23d63f6647d9cdb01c9dcea325122b91e848354ba5187c7283a3e98de75·...·]9-5">}</span><span·class="w">
281 ·····················</span><span·class="p"·data-group-id="9121351649-4">]</span><span·class="w">281 ·····················</span><span·class="p"·data-group-id="9122264239-4">]</span><span·class="w">
282 ················</span><span·class="p"·data-group-id="9121351649-3">}</span><span·class="w">282 ················</span><span·class="p"·data-group-id="9122264239-3">}</span><span·class="w">
283 ··············</span><span·class="p"·data-group-id="9121351649-2">]</span><span·class="p"·data-group-id="9121351649-1">)</span><span·class="p">.</span><span·class="w">283 ··············</span><span·class="p"·data-group-id="9122264239-2">]</span><span·class="p"·data-group-id="9122264239-1">)</span><span·class="p">.</span><span·class="w">
284 </span><span·class="p"·data-group-id="9121351649-9">[</span><span·class="p"·data-group-id="9121351649-10">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="9121351649-11">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdh-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">284 </span><span·class="p"·data-group-id="9122264239-9">[</span><span·class="p"·data-group-id="9122264239-10">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="9122264239-11">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdh-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
285 ·······</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha256&#39;</span><span·class="p">,</span><span·class="w">285 ·······</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha256&#39;</span><span·class="p">,</span><span·class="w">
286 ·······</span><span·class="ss">&#39;diffie-hellman-group16-sha512&#39;</span><span·class="p">,</span><span·class="w">286 ·······</span><span·class="ss">&#39;diffie-hellman-group16-sha512&#39;</span><span·class="p">,</span><span·class="w">
287 ·······</span><span·class="ss">&#39;diffie-hellman-group18-sha512&#39;</span><span·class="p">,</span><span·class="w">287 ·······</span><span·class="ss">&#39;diffie-hellman-group18-sha512&#39;</span><span·class="p">,</span><span·class="w">
288 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p">,</span><span·class="w">288 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p">,</span><span·class="w">
289 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha1&#39;</span><span·class="p">,</span><span·class="w">289 ·······</span><span·class="ss">&#39;diffie-hellman-group14-sha1&#39;</span><span·class="p">,</span><span·class="w">
290 ·······</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha1&#39;</span><span·class="p"·data-group-id="9121351649-11">]</span><span·class="p"·data-group-id="9121351649-10">}</span><span·class="p">,</span><span·class="w">290 ·······</span><span·class="ss">&#39;diffie-hellman-group-exchange-sha1&#39;</span><span·class="p"·data-group-id="9122264239-11">]</span><span·class="p"·data-group-id="9122264239-10">}</span><span·class="p">,</span><span·class="w">
291 ·</span><span·class="p"·data-group-id="9121351649-12">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="9121351649-13">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">291 ·</span><span·class="p"·data-group-id="9122264239-12">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="9122264239-13">[</span><span·class="ss">&#39;ecdsa-sha2-nistp384&#39;</span><span·class="p">,</span><span·class="ss">&#39;ecdsa-sha2-nistp521&#39;</span><span·class="p">,</span><span·class="w">
292 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">292 ··············</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span·class="ss">&#39;rsa-sha2-256&#39;</span><span·class="p">,</span><span·class="w">
293 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="9121351649-13">]</span><span·class="p"·data-group-id="9121351649-12">}</span><span·class="p">,</span><span·class="w">293 ··············</span><span·class="ss">&#39;rsa-sha2-512&#39;</span><span·class="p">,</span><span·class="ss">&#39;ssh-dss&#39;</span><span·class="p"·data-group-id="9122264239-13">]</span><span·class="p"·data-group-id="9122264239-12">}</span><span·class="p">,</span><span·class="w">
294 ·</span><span·class="p"·data-group-id="9121351649-14">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9121351649-15">[</span><span·class="p"·data-group-id="9121351649-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·444123caa454e4acdc2448929d92989fd842acd514bc78dccc78b9e8f12ade23·...·]9-16">}</span><span·class="p">,</span><span·class="w">294 ·</span><span·class="p"·data-group-id="9122264239-14">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9122264239-15">[</span><span·class="p"·data-group-id="9122264239-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·84fd6c3ae6cc44d3b8c4cf83c81b92863972e6ac852b1de9ce52c7141c1c62ed·...·]9-16">}</span><span·class="p">,</span><span·class="w">
295 ··········</span><span·class="p"·data-group-id="9121351649-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9121351649-19">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="w">295 ··········</span><span·class="p"·data-group-id="9122264239-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9122264239-19">[</span><span·class="ss">&#39;aes256-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes256-ctr&#39;</span><span·class="p">,</span><span·class="w">
296 ··························</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="w">296 ··························</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-gcm@openssh.com&#39;</span><span·class="p">,</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p">,</span><span·class="w">
297 ··························</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="9121351649-19">]</span><span·class="p"·data-group-id="9121351649-18">}</span><span·class="p"·data-group-id="9121351649-15">]</span><span·class="p"·data-group-id="9121351649-14">}</span><span·class="p">,</span><span·class="w">297 ··························</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·class="p"·data-group-id="9122264239-19">]</span><span·class="p"·data-group-id="9122264239-18">}</span><span·class="p"·data-group-id="9122264239-15">]</span><span·class="p"·data-group-id="9122264239-14">}</span><span·class="p">,</span><span·class="w">
298 ·</span><span·class="p"·data-group-id="9121351649-20">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="9121351649-21">[</span><span·class="p"·data-group-id="9121351649-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·a28949db4f84d6562e429f66c71c9ce76415f4d504627c30774896e8ce37de9d·...·]9-23">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">298 ·</span><span·class="p"·data-group-id="9122264239-20">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="9122264239-21">[</span><span·class="p"·data-group-id="9122264239-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·4f6bad6ff57ecbc59c7bc38b032094db40fc4dcc4e35257de5ddffe3ae34084e·...·]9-23">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 68817/127317 bytes (54.05%) of diff not shown.
11.2 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.6/doc/html/hardening.html
    
Offset 210, 24 lines modifiedOffset 210, 24 lines modified
210 ··<span·class="text">Verifying·the·remote·client·in·a·daemon·(server)</span>210 ··<span·class="text">Verifying·the·remote·client·in·a·daemon·(server)</span>
211 </h2>211 </h2>
212 <ul><li><p><strong>Password·checking</strong>·-·The·default·password·checking·is·with·the·list·in·the212 <ul><li><p><strong>Password·checking</strong>·-·The·default·password·checking·is·with·the·list·in·the
213 <a·href="ssh.html#option-user_passwords">user_passwords</a>·option·in·the·SSH·daemon.·It213 <a·href="ssh.html#option-user_passwords">user_passwords</a>·option·in·the·SSH·daemon.·It
214 could·be·replaced·with·a·<a·href="ssh.html#option-pwdfun">pwdfun</a>·plugin.·The·arity214 could·be·replaced·with·a·<a·href="ssh.html#option-pwdfun">pwdfun</a>·plugin.·The·arity
215 four·variant·(<a·href="ssh.html#t:pwdfun_4/0"><code·class="inline">pwdfun_4()</code></a>)·can·also·be·used·for215 four·variant·(<a·href="ssh.html#t:pwdfun_4/0"><code·class="inline">pwdfun_4()</code></a>)·can·also·be·used·for
216 introducing·delays·after·failed·password·checking·attempts.·Here·is·a·simple216 introducing·delays·after·failed·password·checking·attempts.·Here·is·a·simple
217 example·of·such·a·pwdfun:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="3658264720-1">(</span><span·class="n">User</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">PeerAddress</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·95,·SHA:·77fcc0bf7a0e120e0ca51d056720ea06909aa772b1070e365acc40bfb6ea6d7b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 example·of·such·a·pwdfun:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="5099293868-1">(</span><span·class="n">User</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">PeerAddress</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·95,·SHA:·746376581903e2cdf865e84f4f6fd964770208d77f7ea529ed12b6f0f8be50ec·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 ········</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="3658264720-2">(</span><span·class="p"·data-group-id="3658264720-3">{</span><span·class="n">User</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="3658264720-3">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·185,·SHA:·53770e455823d3291aa6f48212b184cf7a75570af46105a7d7145e774b6260c8·...·]-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">218 ········</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="5099293868-2">(</span><span·class="p"·data-group-id="5099293868-3">{</span><span·class="n">User</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="5099293868-3">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·185,·SHA:·a197faacb4cf34d0945a17661199837cfc45a862d5c2df672e73f26f24f9d182·...·]-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
219 ············</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 ············</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ················</span><span·class="p"·data-group-id="3658264720-5">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="3658264720-5">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·Reset·delay·time</span><span·class="w">220 ················</span><span·class="p"·data-group-id="5099293868-5">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="5099293868-5">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·Reset·delay·time</span><span·class="w">
221 ············</span><span·class="ss">false</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">State</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 ············</span><span·class="ss">false</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">State</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 ················</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">sleep</span><span·class="p"·data-group-id="3658264720-6">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="3658264720-6">)</span><span·class="p">,</span><span·class="w">222 ················</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">sleep</span><span·class="p"·data-group-id="5099293868-6">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="5099293868-6">)</span><span·class="p">,</span><span·class="w">
223 ················</span><span·class="p"·data-group-id="3658264720-7">{</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2000</span><span·class="p"·data-group-id="3658264720-7">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·Next·delay·is·2000·ms</span><span·class="w">223 ················</span><span·class="p"·data-group-id="5099293868-7">{</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2000</span><span·class="p"·data-group-id="5099293868-7">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·Next·delay·is·2000·ms</span><span·class="w">
224 ············</span><span·class="ss">false</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="3658264720-8">(</span><span·class="n">State</span><span·class="p"·data-group-id="3658264720-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 ············</span><span·class="ss">false</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="5099293868-8">(</span><span·class="n">State</span><span·class="p"·data-group-id="5099293868-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ················</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">sleep</span><span·class="p"·data-group-id="3658264720-9">(</span><span·class="n">State</span><span·class="p"·data-group-id="3658264720-9">)</span><span·class="p">,</span><span·class="w">225 ················</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">sleep</span><span·class="p"·data-group-id="5099293868-9">(</span><span·class="n">State</span><span·class="p"·data-group-id="5099293868-9">)</span><span·class="p">,</span><span·class="w">
226 ················</span><span·class="p"·data-group-id="3658264720-10">{</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="o">*</span><span·class="n">State</span><span·class="p"·data-group-id="3658264720-10">}</span><span·class="w">·</span><span·class="c1">%·Double·the·delay·for·each·failure</span><span·class="w">226 ················</span><span·class="p"·data-group-id="5099293868-10">{</span><span·class="ss">false</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="o">*</span><span·class="n">State</span><span·class="p"·data-group-id="5099293868-10">}</span><span·class="w">·</span><span·class="c1">%·Double·the·delay·for·each·failure</span><span·class="w">
227 ········</span><span·class="k">end</span><span·class="w">227 ········</span><span·class="k">end</span><span·class="w">
228 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>If·a·public·key·is·used·for·logging·in,·there·is·normally·no·checking·of·the228 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>If·a·public·key·is·used·for·logging·in,·there·is·normally·no·checking·of·the
229 user·name.·It·could·be·enabled·by·setting·the·option229 user·name.·It·could·be·enabled·by·setting·the·option
230 <a·href="ssh.html#option-pk_check_user"><code·class="inline">pk_check_user</code></a>·to·<code·class="inline">true</code>.·In·that·case·the230 <a·href="ssh.html#option-pk_check_user"><code·class="inline">pk_check_user</code></a>·to·<code·class="inline">true</code>.·In·that·case·the
231 pwdfun·will·get·the·atom·<code·class="inline">pubkey</code>·in·the·password·argument.</p></li></ul><h2·id="hardening-in-the-cryptographic-area"·class="section-heading">231 pwdfun·will·get·the·atom·<code·class="inline">pubkey</code>·in·the·password·argument.</p></li></ul><h2·id="hardening-in-the-cryptographic-area"·class="section-heading">
232 ··<a·href="#hardening-in-the-cryptographic-area"·class="hover-link">232 ··<a·href="#hardening-in-the-cryptographic-area"·class="hover-link">
233 ····<i·class="ri-link-m"·aria-hidden="true"></i>233 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 288, 15 lines modifiedOffset 288, 15 lines modified
288 ··<span·class="text">The·id·string</span>288 ··<span·class="text">The·id·string</span>
289 </h3>289 </h3>
290 <p>One·way·to·reduce·the·risk·of·intrusion·is·to·not·convey·which·software·and290 <p>One·way·to·reduce·the·risk·of·intrusion·is·to·not·convey·which·software·and
291 which·version·the·intruder·is·connected·to.·This·limits·the·risk·of·an·intruder291 which·version·the·intruder·is·connected·to.·This·limits·the·risk·of·an·intruder
292 exploiting·known·faults·or·peculiarities·learned·by·reading·the·public·code.</p><p>Each·SSH·client·or·daemon·presents·themselves·to·each·other·with·brand·and292 exploiting·known·faults·or·peculiarities·learned·by·reading·the·public·code.</p><p>Each·SSH·client·or·daemon·presents·themselves·to·each·other·with·brand·and
293 version.·This·may·look·like</p><pre><code·class="text">SSH-2.0-Erlang/4.10</code></pre><p>or</p><pre><code·class="text">SSH-2.0-OpenSSH_7.6p1·Ubuntu-4ubuntu0.3</code></pre><p>This·brand·and·version·may·be·changed·with·the·option293 version.·This·may·look·like</p><pre><code·class="text">SSH-2.0-Erlang/4.10</code></pre><p>or</p><pre><code·class="text">SSH-2.0-OpenSSH_7.6p1·Ubuntu-4ubuntu0.3</code></pre><p>This·brand·and·version·may·be·changed·with·the·option
294 <a·href="ssh.html#t:id_string_common_option/0">id_string</a>.·We·start·a·daemon·with·that294 <a·href="ssh.html#t:id_string_common_option/0">id_string</a>.·We·start·a·daemon·with·that
295 option:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">daemon</span><span·class="p"·data-group-id="5518628042-1">(</span><span·class="mi">1234</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5518628042-2">[</span><span·class="p"·data-group-id="5518628042-3">{</span><span·class="ss">id_string</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·339,·SHA:·a8074619ed4ffbab5e5fccb00f36df6662fadad43a844201dfba1164aab114cd·...·]-1">)</span><span·class="p">.</span></code></pre><p>and·the·daemon·will·present·itself·as:</p><pre><code·class="text">SSH-2.0-hi·there</code></pre><p>It·is·possible·to·replace·the·string·with·one·randomly·generated·for·each295 option:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">daemon</span><span·class="p"·data-group-id="4652493008-1">(</span><span·class="mi">1234</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4652493008-2">[</span><span·class="p"·data-group-id="4652493008-3">{</span><span·class="ss">id_string</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·339,·SHA:·95688adfa49edb3a0db8fb69330e0b7141cebc7d36352cc9749fce5b2f0c5cfb·...·]-1">)</span><span·class="p">.</span></code></pre><p>and·the·daemon·will·present·itself·as:</p><pre><code·class="text">SSH-2.0-hi·there</code></pre><p>It·is·possible·to·replace·the·string·with·one·randomly·generated·for·each
296 connection·attempt.·See·the·reference·manual·for296 connection·attempt.·See·the·reference·manual·for
297 <a·href="ssh.html#t:id_string_common_option/0">id_string</a>.</p><h2·id="client-connection-options"·class="section-heading">297 <a·href="ssh.html#t:id_string_common_option/0">id_string</a>.</p><h2·id="client-connection-options"·class="section-heading">
298 ··<a·href="#client-connection-options"·class="hover-link">298 ··<a·href="#client-connection-options"·class="hover-link">
299 ····<i·class="ri-link-m"·aria-hidden="true"></i>299 ····<i·class="ri-link-m"·aria-hidden="true"></i>
300 ··</a>300 ··</a>
301 ··<span·class="text">Client·connection·options</span>301 ··<span·class="text">Client·connection·options</span>
302 </h2>302 </h2>
588 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.6/doc/html/ssh.epub
4.57 KB
zipinfo {}
    
Offset 1, 30 lines modifiedOffset 1, 30 lines modified
1 Zip·file·size:·269612·bytes,·number·of·entries:·281 Zip·file·size:·269605·bytes,·number·of·entries:·28
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:33·mimetype
3 ?rw-r--r--··6.1·unx···115972·bx·defN·25-Feb-13·10:52·OEBPS/using_ssh.xhtml3 ?rw-r--r--··6.1·unx···115972·bx·defN·25-Feb-13·09:33·OEBPS/using_ssh.xhtml
4 ?rw-r--r--··6.1·unx······710·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······710·bx·defN·25-Feb-13·09:33·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx·····7853·bx·defN·25-Feb-13·10:52·OEBPS/terminology.xhtml5 ?rw-r--r--··6.1·unx·····7853·bx·defN·25-Feb-13·09:33·OEBPS/terminology.xhtml
6 ?rw-r--r--··6.1·unx·····5270·bx·defN·25-Feb-13·10:52·OEBPS/ssh_sftpd.xhtml6 ?rw-r--r--··6.1·unx·····5270·bx·defN·25-Feb-13·09:33·OEBPS/ssh_sftpd.xhtml
7 ?rw-r--r--··6.1·unx···116502·bx·defN·25-Feb-13·10:52·OEBPS/ssh_sftp.xhtml7 ?rw-r--r--··6.1·unx···116502·bx·defN·25-Feb-13·09:33·OEBPS/ssh_sftp.xhtml
8 ?rw-r--r--··6.1·unx·····6495·bx·defN·25-Feb-13·10:52·OEBPS/ssh_server_key_api.xhtml8 ?rw-r--r--··6.1·unx·····6495·bx·defN·25-Feb-13·09:33·OEBPS/ssh_server_key_api.xhtml
9 ?rw-r--r--··6.1·unx····11494·bx·defN·25-Feb-13·10:52·OEBPS/ssh_server_channel.xhtml9 ?rw-r--r--··6.1·unx····11494·bx·defN·25-Feb-13·09:33·OEBPS/ssh_server_channel.xhtml
10 ?rw-r--r--··6.1·unx····42907·bx·defN·25-Feb-13·10:52·OEBPS/ssh_file.xhtml10 ?rw-r--r--··6.1·unx····42907·bx·defN·25-Feb-13·09:33·OEBPS/ssh_file.xhtml
11 ?rw-r--r--··6.1·unx····71207·bx·defN·25-Feb-13·10:52·OEBPS/ssh_connection.xhtml11 ?rw-r--r--··6.1·unx····71207·bx·defN·25-Feb-13·09:33·OEBPS/ssh_connection.xhtml
12 ?rw-r--r--··6.1·unx····17279·bx·defN·25-Feb-13·10:52·OEBPS/ssh_client_key_api.xhtml12 ?rw-r--r--··6.1·unx····17279·bx·defN·25-Feb-13·09:33·OEBPS/ssh_client_key_api.xhtml
13 ?rw-r--r--··6.1·unx····38219·bx·defN·25-Feb-13·10:52·OEBPS/ssh_client_channel.xhtml13 ?rw-r--r--··6.1·unx····38219·bx·defN·25-Feb-13·09:33·OEBPS/ssh_client_channel.xhtml
14 ?rw-r--r--··6.1·unx····19443·bx·defN·25-Feb-13·10:52·OEBPS/ssh_app.xhtml14 ?rw-r--r--··6.1·unx····19443·bx·defN·25-Feb-13·09:33·OEBPS/ssh_app.xhtml
15 ?rw-r--r--··6.1·unx····18835·bx·defN·25-Feb-13·10:52·OEBPS/ssh_agent.xhtml15 ?rw-r--r--··6.1·unx····18835·bx·defN·25-Feb-13·09:33·OEBPS/ssh_agent.xhtml
16 ?rw-r--r--··6.1·unx···242908·bx·defN·25-Feb-13·10:52·OEBPS/ssh.xhtml16 ?rw-r--r--··6.1·unx···242908·bx·defN·25-Feb-13·09:33·OEBPS/ssh.xhtml
17 ?rw-r--r--··6.1·unx···213717·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml17 ?rw-r--r--··6.1·unx···213717·bx·defN·25-Feb-13·09:33·OEBPS/notes.xhtml
18 ?rw-r--r--··6.1·unx·····2043·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml18 ?rw-r--r--··6.1·unx·····2043·bx·defN·25-Feb-13·09:33·OEBPS/nav.xhtml
19 ?rw-r--r--··6.1·unx·····8195·bx·defN·25-Feb-13·10:52·OEBPS/introduction.xhtml19 ?rw-r--r--··6.1·unx·····8195·bx·defN·25-Feb-13·09:33·OEBPS/introduction.xhtml
20 ?rw-r--r--··6.1·unx····18130·bx·defN·25-Feb-13·10:52·OEBPS/hardening.xhtml20 ?rw-r--r--··6.1·unx····18130·bx·defN·25-Feb-13·09:33·OEBPS/hardening.xhtml
21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:33·OEBPS/dist/epub-erlang-ESPT6BQV.css
22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:33·OEBPS/dist/epub-LSJCIYTM.js
23 ?rw-r--r--··6.1·unx·····3897·bx·defN·25-Feb-13·10:52·OEBPS/content.opf23 ?rw-r--r--··6.1·unx·····3897·bx·defN·25-Feb-13·09:33·OEBPS/content.opf
24 ?rw-r--r--··6.1·unx····74880·bx·defN·25-Feb-13·10:52·OEBPS/configure_algos.xhtml24 ?rw-r--r--··6.1·unx····74880·bx·defN·25-Feb-13·09:33·OEBPS/configure_algos.xhtml
25 ?rw-r--r--··6.1·unx····38891·bx·defN·25-Feb-13·10:52·OEBPS/configurations.xhtml25 ?rw-r--r--··6.1·unx····38891·bx·defN·25-Feb-13·09:33·OEBPS/configurations.xhtml
26 ?rw-r--r--··6.1·unx····40281·bx·defN·25-Feb-13·10:52·OEBPS/assets/ssh_timeouts.jpg26 ?rw-r--r--··6.1·unx····40281·bx·defN·25-Feb-13·09:33·OEBPS/assets/ssh_timeouts.jpg
27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:33·OEBPS/assets/logo.png
28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:33·META-INF/container.xml
29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:33·META-INF/com.apple.ibooks.display-options.xml
30 28·files,·1136460·bytes·uncompressed,·264692·bytes·compressed:··76.7%30 28·files,·1136460·bytes·uncompressed,·264685·bytes·compressed:··76.7%
162 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:48,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:33:36,·uncompressed·size·20,·method=store
205 KB
OEBPS/using_ssh.xhtml
Max HTML report size reached
4.64 KB
OEBPS/ssh_agent.xhtml
    
Offset 26, 19 lines modifiedOffset 26, 19 lines modified
26 <p>Callback·module·for·using·an·SSH·agent·instead·of·the·default·ssh_file·callback.</p><p>This·module·defines·a·callback·handler·for·the·communication·with·an26 <p>Callback·module·for·using·an·SSH·agent·instead·of·the·default·ssh_file·callback.</p><p>This·module·defines·a·callback·handler·for·the·communication·with·an
27 <a·href="https://tools.ietf.org/html/draft-miller-ssh-agent-02">SSH·Agent</a>·and·can·be27 <a·href="https://tools.ietf.org/html/draft-miller-ssh-agent-02">SSH·Agent</a>·and·can·be
28 used·to·replace·the·<a·href="ssh_file.xhtml">default·callback</a>.·This·allows·to·issue28 used·to·replace·the·<a·href="ssh_file.xhtml">default·callback</a>.·This·allows·to·issue
29 signing·requests·to·an·agent·that·stores·SSH·private·keys·to·perform29 signing·requests·to·an·agent·that·stores·SSH·private·keys·to·perform
30 authentication.</p><p>Ssh_agent·implements·the·<a·href="ssh_client_key_api.xhtml"><code·class="inline">ssh_client_key_api</code></a>,·to·allow·it·to·be·used·by30 authentication.</p><p>Ssh_agent·implements·the·<a·href="ssh_client_key_api.xhtml"><code·class="inline">ssh_client_key_api</code></a>,·to·allow·it·to·be·used·by
31 setting·the·option·<a·href="ssh.xhtml#t:key_cb_common_option/0"><code·class="inline">key_cb</code></a>·when·starting·a31 setting·the·option·<a·href="ssh.xhtml#t:key_cb_common_option/0"><code·class="inline">key_cb</code></a>·when·starting·a
32 client·(with·for·example·<a·href="ssh.xhtml#connect/3">ssh:connect</a>,32 client·(with·for·example·<a·href="ssh.xhtml#connect/3">ssh:connect</a>,
33 <a·href="ssh.xhtml#shell/1">ssh:shell</a>·).</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">······</samp><samp·class="p"·data-group-id="8395277209-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8395277209-2">{</samp><samp·class="ss">ssh_agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·178,·SHA:·b4599c2f2f5ae351c6db95b29ab1b29c29d738a691de240bbc9be732f4771185·...·]-1">}</samp></code></pre><p>The·agent·communication·is·established·through·a·UNIX·domain·socket.·By·default,33 <a·href="ssh.xhtml#shell/1">ssh:shell</a>·).</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">······</samp><samp·class="p"·data-group-id="6473454076-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6473454076-2">{</samp><samp·class="ss">ssh_agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·178,·SHA:·c9f11149e74cadb1e1557a05f48cf0d65af6f66f1a23ff04967ebb1c2e811901·...·]-1">}</samp></code></pre><p>The·agent·communication·is·established·through·a·UNIX·domain·socket.·By·default,
34 the·socket·path·will·be·fetched·from·the·<code·class="inline">SSH_AUTH_SOCK</code>·environment·variable,34 the·socket·path·will·be·fetched·from·the·<code·class="inline">SSH_AUTH_SOCK</code>·environment·variable,
35 which·is·the·default·socket·path·in·the·agent·implementation·of35 which·is·the·default·socket·path·in·the·agent·implementation·of
36 <a·href="http://www.openssh.com">OpenSSH</a>.</p><p><a·href=""·id="SOCKET_PATH"></a>·In·order·to·set·a·different·socket·path·the·<code·class="inline">socket_path</code>36 <a·href="http://www.openssh.com">OpenSSH</a>.</p><p><a·href=""·id="SOCKET_PATH"></a>·In·order·to·set·a·different·socket·path·the·<code·class="inline">socket_path</code>
37 option·can·be·set.</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">······</samp><samp·class="p"·data-group-id="6177185447-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6177185447-2">{</samp><samp·class="ss">ssh_agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·400,·SHA:·12e93790ddb6832f02d2cb59bfc96b114d77fde62d3d9991b477dcc0d20ae348·...·]-1">}</samp></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·functions·are·<em>Callbacks</em>·for·the·SSH·app.·They·are·not·intended·to·be37 option·can·be·set.</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">······</samp><samp·class="p"·data-group-id="9050600286-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9050600286-2">{</samp><samp·class="ss">ssh_agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·400,·SHA:·3abf3f611d3d2658660d7014d4b0ab22b2b6240676be6aadce7d9c8c4247a05a·...·]-1">}</samp></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·functions·are·<em>Callbacks</em>·for·the·SSH·app.·They·are·not·intended·to·be
38 called·from·the·user's·code!</p></section>38 called·from·the·user's·code!</p></section>
39 ······</section>39 ······</section>
  
  
40 ······<section·id="summary"·class="details-list">40 ······<section·id="summary"·class="details-list">
41 ········<h1·class="section-heading">Summary</h1>41 ········<h1·class="section-heading">Summary</h1>
42 <div·class="summary-types-options·summary">42 <div·class="summary-types-options·summary">
13.3 KB
OEBPS/ssh.xhtml
Max HTML report size reached
11.1 KB
OEBPS/hardening.xhtml
Max HTML report size reached
1.2 KB
OEBPS/content.opf
1.17 KB
OEBPS/content.opf
Max HTML report size reached
124 KB
OEBPS/configure_algos.xhtml
Max HTML report size reached
61.2 KB
OEBPS/configurations.xhtml
Max HTML report size reached
13.4 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.6/doc/html/ssh.html
    
Offset 3366, 22 lines modifiedOffset 3366, 22 lines modified
  
3366 ··········<pre·translate="no"><span·class="attribute">-type</span>·double_algs(AlgType)·::·[{client2server,·[AlgType]}·|·{server2client,·[AlgType]}]·|·[AlgType].</pre>3366 ··········<pre·translate="no"><span·class="attribute">-type</span>·double_algs(AlgType)·::·[{client2server,·[AlgType]}·|·{server2client,·[AlgType]}]·|·[AlgType].</pre>
  
3367 ······</div>3367 ······</div>
  
3368 <p>List·of·algorithms·to·use·in·the·algorithm·negotiation.·The·default3368 <p>List·of·algorithms·to·use·in·the·algorithm·negotiation.·The·default
3369 <a·href="#t:algs_list/0"><code·class="inline">algs_list/0</code></a>·can·be·obtained·from·<a·href="#default_algorithms/0"><code·class="inline">default_algorithms/0</code></a>.</p><p>If·an·alg_entry()·is·missing·in·the·algs_list(),·the·default·value·is·used·for3369 <a·href="#t:algs_list/0"><code·class="inline">algs_list/0</code></a>·can·be·obtained·from·<a·href="#default_algorithms/0"><code·class="inline">default_algorithms/0</code></a>.</p><p>If·an·alg_entry()·is·missing·in·the·algs_list(),·the·default·value·is·used·for
3370 that·entry.</p><p>Here·is·an·example·of·this·option:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»  ··</span><span·class="p"·data-group-id="8014349982-1">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">3370 that·entry.</p><p>Here·is·an·example·of·this·option:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»  ··</span><span·class="p"·data-group-id="4548664228-1">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
3371 »       ··</span><span·class="p"·data-group-id="8014349982-2">[</span><span·class="p"·data-group-id="8014349982-3">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="8014349982-4">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·130,·SHA:·c954a1d80e5614a0f5dec0e6ed21e98ae92d25c07ee3672bf768086386e7872e·...·]-3">}</span><span·class="p">,</span><span·class="w">3371 »       ··</span><span·class="p"·data-group-id="4548664228-2">[</span><span·class="p"·data-group-id="4548664228-3">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="4548664228-4">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·130,·SHA:·13e7aed218bb36e1e15d5298cf84a2310a154f24b375a62e865c3b32c3c0bd48·...·]-3">}</span><span·class="p">,</span><span·class="w">
3372 »       ··</span><span·class="p"·data-group-id="8014349982-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="8014349982-6">[</span><span·class="p"·data-group-id="8014349982-7">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·66f54b1904b5a868b091988bcc84be902671824b4a1902963e2b7bdc7de11da0·...·]-7">}</span><span·class="p">,</span><span·class="w">3372 »       ··</span><span·class="p"·data-group-id="4548664228-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4548664228-6">[</span><span·class="p"·data-group-id="4548664228-7">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·bbe739c2ac50cbc9e51c27c176a55c0406b587ce272dc1a03bc0c6637f314d32·...·]-7">}</span><span·class="p">,</span><span·class="w">
3373 ··········</span><span·class="p"·data-group-id="8014349982-9">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8014349982-10">[</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·cla[·...·truncated·by·diffoscope;·len:·192,·SHA:·1b241e21aef442454c4da936710c3c300dc59b1e0ddf91ab20db0b594378e585·...·]-5">}</span><span·class="p">,</span><span·class="w">3373 ··········</span><span·class="p"·data-group-id="4548664228-9">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4548664228-10">[</span><span·class="ss">&#39;aes128-cbc&#39;</span><span·class="p">,</span><span·class="ss">&#39;3des-cbc&#39;</span><span·cla[·...·truncated·by·diffoscope;·len:·192,·SHA:·aaad3a631561c4d37a89377a977471189eb59f5fc9a5a74f9e692d3dc82bd68b·...·]-5">}</span><span·class="p">,</span><span·class="w">
3374 »       ··</span><span·class="p"·data-group-id="8014349982-11">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="8014349982-12">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p[·...·truncated·by·diffoscope;·len:·81,·SHA:·bced630cf2ffc99bdd15032abb1c24c13e38e9cf87bcea523eea1503e32acc23·...·]-11">}</span><span·class="p">,</span><span·class="w">3374 »       ··</span><span·class="p"·data-group-id="4548664228-11">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="4548664228-12">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p[·...·truncated·by·diffoscope;·len:·81,·SHA:·d88b56b4bb51a116d101ea0f3b86d862e1464e9cb7f8e01fe3f065f5a7c7c75b·...·]-11">}</span><span·class="p">,</span><span·class="w">
3375 »       ··</span><span·class="p"·data-group-id="8014349982-13">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="8014349982-14">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="801434998[·...·truncated·by·diffoscope;·len:·55,·SHA:·38b323052f1016b467e8ab956d5919f2eeb645ff3e2a85ba889173eacb86ad5d·...·]-13">}</span><span·class="w">3375 »       ··</span><span·class="p"·data-group-id="4548664228-13">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="4548664228-14">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="454866422[·...·truncated·by·diffoscope;·len:·55,·SHA:·9ed444d0b550637a5826caa41f3e14708300a18637ea4d14fc1148b3384062f0·...·]-13">}</span><span·class="w">
3376 »       ··</span><span·class="p"·data-group-id="8014349982-2">]</span><span·class="w">3376 »       ··</span><span·class="p"·data-group-id="4548664228-2">]</span><span·class="w">
3377 »       ··</span><span·class="p"·data-group-id="8014349982-1">}</span></code></pre><p>The·example·specifies·different·algorithms·in·the·two·directions·(client2server3377 »       ··</span><span·class="p"·data-group-id="4548664228-1">}</span></code></pre><p>The·example·specifies·different·algorithms·in·the·two·directions·(client2server
3378 and·server2client),·for·cipher·but·specifies·the·same·algorithms·for·mac·and3378 and·server2client),·for·cipher·but·specifies·the·same·algorithms·for·mac·and
3379 compression·in·both·directions.·The·kex·(key·exchange)·is·implicit·but3379 compression·in·both·directions.·The·kex·(key·exchange)·is·implicit·but
3380 public_key·is·set·explicitly.</p><p>For·background·and·more·examples·see·the3380 public_key·is·set·explicitly.</p><p>For·background·and·more·examples·see·the
3381 <a·href="configure_algos.html#introduction">User's·Guide</a>.</p><p>If·an·algorithm·name·occurs·more·than·once·in·a·list,·the·behaviour·is3381 <a·href="configure_algos.html#introduction">User's·Guide</a>.</p><p>If·an·algorithm·name·occurs·more·than·once·in·a·list,·the·behaviour·is
3382 undefined.·The·tags·in·the·property·lists·are·also·assumed·to·occur·at·most·one3382 undefined.·The·tags·in·the·property·lists·are·also·assumed·to·occur·at·most·one
3383 time.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Changing·the·values·can·make·a·connection·less·secure.·Do·not·change·unless3383 time.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Changing·the·values·can·make·a·connection·less·secure.·Do·not·change·unless
3384 you·know·exactly·what·you·are·doing.·If·you·do·not·understand·the·values·then3384 you·know·exactly·what·you·are·doing.·If·you·do·not·understand·the·values·then
Offset 5102, 29 lines modifiedOffset 5102, 29 lines modified
5102 ·································StringOrString·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()].</pre>5102 ·································StringOrString·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()·|·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()].</pre>
  
5103 ······</div>5103 ······</div>
  
5104 <p>hostkey_fingerprint([DigestType],·HostKey)·-&gt;5104 <p>hostkey_fingerprint([DigestType],·HostKey)·-&gt;
5105 [string()]hostkey_fingerprint(DigestType,·HostKey)·-&gt;·string()</p><p>Calculates·a·ssh·fingerprint·from·a·public·host·key·as·openssh·does.</p><p>The·algorithm·in·<a·href="#hostkey_fingerprint/1"><code·class="inline">hostkey_fingerprint/1</code></a>·is·md5·to·be5105 [string()]hostkey_fingerprint(DigestType,·HostKey)·-&gt;·string()</p><p>Calculates·a·ssh·fingerprint·from·a·public·host·key·as·openssh·does.</p><p>The·algorithm·in·<a·href="#hostkey_fingerprint/1"><code·class="inline">hostkey_fingerprint/1</code></a>·is·md5·to·be
5106 compatible·with·older·ssh-keygen·commands.·The·string·from·the·second·variant·is5106 compatible·with·older·ssh-keygen·commands.·The·string·from·the·second·variant·is
5107 prepended·by·the·algorithm·name·in·uppercase·as·in·newer·ssh-keygen·commands.</p><p>Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="8008542045-1">(</span><span·class="n">Key</span><span·class="p"·data-group-id="8008542045-1">)</span><span·class="p">.</span><span·class="w">5107 prepended·by·the·algorithm·name·in·uppercase·as·in·newer·ssh-keygen·commands.</p><p>Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="9590992404-1">(</span><span·class="n">Key</span><span·class="p"·data-group-id="9590992404-1">)</span><span·class="p">.</span><span·class="w">
5108 ·</span><span·class="s">&quot;f5:64:a6:c1:5a:cb:9f:0a:10:46:a2:5c:3e:2f:57:84&quot;</span><span·class="w">5108 ·</span><span·class="s">&quot;f5:64:a6:c1:5a:cb:9f:0a:10:46:a2:5c:3e:2f:57:84&quot;</span><span·class="w">
  
5109 ·</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="8008542045-2">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="8008542045-2">)</span><span·class="p">.</span><span·class="w">5109 ·</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="9590992404-2">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="9590992404-2">)</span><span·class="p">.</span><span·class="w">
5110 ·</span><span·class="s">&quot;MD5:f5:64:a6:c1:5a:cb:9f:0a:10:46:a2:5c:3e:2f:57:84&quot;</span><span·class="w">5110 ·</span><span·class="s">&quot;MD5:f5:64:a6:c1:5a:cb:9f:0a:10:46:a2:5c:3e:2f:57:84&quot;</span><span·class="w">
  
5111 ·</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="8008542045-3">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="8008542045-3">)</span><span·class="p">.</span><span·class="w">5111 ·</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="9590992404-3">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="9590992404-3">)</span><span·class="p">.</span><span·class="w">
5112 ·</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="w">5112 ·</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="w">
  
5113 ·</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="8008542045-4">(</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="8008542045-4">)</span><span·class="p">.</span><span·class="w">5113 ·</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="9590992404-4">(</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="9590992404-4">)</span><span·class="p">.</span><span·class="w">
5114 ·</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="w">5114 ·</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="w">
  
5115 ·</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="8008542045-5">(</span><span·class="p"·data-group-id="8008542045-6">[</span><span·class="ss">sha</span><span·class="p">,</span><span·class="ss">sha256</span><span·class="p"·data-group-id="8008542045-6">]</span><span·class="p">,</span><span·class="n">Key</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·d214d0ffb5316d3a2e71328a287ea57b459d6333d69fe3a31036648db07a816e·...·]-5">)</span><span·class="p">.</span><span·class="w">5115 ·</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">hostkey_fingerprint</span><span·class="p"·data-group-id="9590992404-5">(</span><span·class="p"·data-group-id="9590992404-6">[</span><span·class="ss">sha</span><span·class="p">,</span><span·class="ss">sha256</span><span·class="p"·data-group-id="9590992404-6">]</span><span·class="p">,</span><span·class="n">Key</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·258c068c0380d92ff1551ffe5407af9357c2573ad72458915956af02f7759d85·...·]-5">)</span><span·class="p">.</span><span·class="w">
5116 ·</span><span·class="p"·data-group-id="8008542045-7">[</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="p">,</span><span·class="w">5116 ·</span><span·class="p"·data-group-id="9590992404-7">[</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="p">,</span><span·class="w">
5117 ··</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="p"·data-group-id="8008542045-7">]</span></code></pre>5117 ··</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="p"·data-group-id="9590992404-7">]</span></code></pre>
5118 ··</section>5118 ··</section>
5119 </section>5119 </section>
5120 <section·class="detail"·id="set_sock_opts/2">5120 <section·class="detail"·id="set_sock_opts/2">
  
5121 ··<div·class="detail-header">5121 ··<div·class="detail-header">
5122 ····<a·href="#set_sock_opts/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">5122 ····<a·href="#set_sock_opts/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
5123 ······<i·class="ri-link-m"·aria-hidden="true"></i>5123 ······<i·class="ri-link-m"·aria-hidden="true"></i>
4.67 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.6/doc/html/ssh_agent.html
    
Offset 131, 19 lines modifiedOffset 131, 19 lines modified
131 <p>Callback·module·for·using·an·SSH·agent·instead·of·the·default·ssh_file·callback.</p><p>This·module·defines·a·callback·handler·for·the·communication·with·an131 <p>Callback·module·for·using·an·SSH·agent·instead·of·the·default·ssh_file·callback.</p><p>This·module·defines·a·callback·handler·for·the·communication·with·an
132 <a·href="https://tools.ietf.org/html/draft-miller-ssh-agent-02">SSH·Agent</a>·and·can·be132 <a·href="https://tools.ietf.org/html/draft-miller-ssh-agent-02">SSH·Agent</a>·and·can·be
133 used·to·replace·the·<a·href="ssh_file.html">default·callback</a>.·This·allows·to·issue133 used·to·replace·the·<a·href="ssh_file.html">default·callback</a>.·This·allows·to·issue
134 signing·requests·to·an·agent·that·stores·SSH·private·keys·to·perform134 signing·requests·to·an·agent·that·stores·SSH·private·keys·to·perform
135 authentication.</p><p>Ssh_agent·implements·the·<a·href="ssh_client_key_api.html"><code·class="inline">ssh_client_key_api</code></a>,·to·allow·it·to·be·used·by135 authentication.</p><p>Ssh_agent·implements·the·<a·href="ssh_client_key_api.html"><code·class="inline">ssh_client_key_api</code></a>,·to·allow·it·to·be·used·by
136 setting·the·option·<a·href="ssh.html#t:key_cb_common_option/0"><code·class="inline">key_cb</code></a>·when·starting·a136 setting·the·option·<a·href="ssh.html#t:key_cb_common_option/0"><code·class="inline">key_cb</code></a>·when·starting·a
137 client·(with·for·example·<a·href="ssh.html#connect/3">ssh:connect</a>,137 client·(with·for·example·<a·href="ssh.html#connect/3">ssh:connect</a>,
138 <a·href="ssh.html#shell/1">ssh:shell</a>·).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="0260157333-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0260157333-2">{</span><span·class="ss">ssh_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·178,·SHA:·7fbf82c44bc5db1f2058f482656d52e6e237d4e1ec533c89e741bef1009d5761·...·]-1">}</span></code></pre><p>The·agent·communication·is·established·through·a·UNIX·domain·socket.·By·default,138 <a·href="ssh.html#shell/1">ssh:shell</a>·).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="5335240999-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5335240999-2">{</span><span·class="ss">ssh_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·178,·SHA:·ffbf98abbb8f760cbd5a8d84a3fac947699d2ce838ca0de6a3333756c74477e7·...·]-1">}</span></code></pre><p>The·agent·communication·is·established·through·a·UNIX·domain·socket.·By·default,
139 the·socket·path·will·be·fetched·from·the·<code·class="inline">SSH_AUTH_SOCK</code>·environment·variable,139 the·socket·path·will·be·fetched·from·the·<code·class="inline">SSH_AUTH_SOCK</code>·environment·variable,
140 which·is·the·default·socket·path·in·the·agent·implementation·of140 which·is·the·default·socket·path·in·the·agent·implementation·of
141 <a·href="http://www.openssh.com">OpenSSH</a>.</p><p><a·href=""·id="SOCKET_PATH"></a>·In·order·to·set·a·different·socket·path·the·<code·class="inline">socket_path</code>141 <a·href="http://www.openssh.com">OpenSSH</a>.</p><p><a·href=""·id="SOCKET_PATH"></a>·In·order·to·set·a·different·socket·path·the·<code·class="inline">socket_path</code>
142 option·can·be·set.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="3873433083-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3873433083-2">{</span><span·class="ss">ssh_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·400,·SHA:·c1b47ccca167956d9dd42cc197e512c2ef1b60fd59f0f76d56bafa84ab8c8bc7·...·]-1">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·functions·are·<em>Callbacks</em>·for·the·SSH·app.·They·are·not·intended·to·be142 option·can·be·set.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="9605519421-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9605519421-2">{</span><span·class="ss">ssh_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·400,·SHA:·855f168828259bb5f5b69bf5737546bd82d725f3b6892384f4d52ad1715b1487·...·]-1">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·functions·are·<em>Callbacks</em>·for·the·SSH·app.·They·are·not·intended·to·be
143 called·from·the·user's·code!</p></section>143 called·from·the·user's·code!</p></section>
144 ····</section>144 ····</section>
  
145 </div>145 </div>
  
146 ··<section·id="summary"·class="details-list">146 ··<section·id="summary"·class="details-list">
147 ····<h1·class="section-heading">147 ····<h1·class="section-heading">
206 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.6/doc/html/using_ssh.html
    
Offset 136, 17 lines modifiedOffset 136, 17 lines modified
136 user-interaction.</p><h2·id="using-the-erlang-ssh-terminal-client"·class="section-heading">136 user-interaction.</p><h2·id="using-the-erlang-ssh-terminal-client"·class="section-heading">
137 ··<a·href="#using-the-erlang-ssh-terminal-client"·class="hover-link">137 ··<a·href="#using-the-erlang-ssh-terminal-client"·class="hover-link">
138 ····<i·class="ri-link-m"·aria-hidden="true"></i>138 ····<i·class="ri-link-m"·aria-hidden="true"></i>
139 ··</a>139 ··</a>
140 ··<span·class="text">Using·the·Erlang·ssh·Terminal·Client</span>140 ··<span·class="text">Using·the·Erlang·ssh·Terminal·Client</span>
141 </h2>141 </h2>
142 <p>The·user·<code·class="inline">otptest</code>,·which·has·bash·as·default·shell,·uses·the·<a·href="ssh.html#shell/1"><code·class="inline">ssh:shell/1</code></a>142 <p>The·user·<code·class="inline">otptest</code>,·which·has·bash·as·default·shell,·uses·the·<a·href="ssh.html#shell/1"><code·class="inline">ssh:shell/1</code></a>
143 client·to·connect·to·the·<strong>OpenSSH</strong>·daemon·running·on·a·host·called·<strong>ssh.example.com</strong>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="6756223424-1">(</span><span·class="p"·data-group-id="6756223424-1">)</span><span·class="p">.</span><span·class="w">143 client·to·connect·to·the·<strong>OpenSSH</strong>·daemon·running·on·a·host·called·<strong>ssh.example.com</strong>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5695540864-1">(</span><span·class="p"·data-group-id="5695540864-1">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="ss">ok</span><span·class="gp·unselectable">144 </span><span·class="ss">ok</span><span·class="gp·unselectable">
145 2&gt;·</span><span·class="p"·data-group-id="6756223424-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class="p"·data-group-id="6756223424-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·212,·SHA:·10ec0d6e27a9961c43bebaa647514385e09fd9c87d7506147baa431a540284ba·...·]4-3">)</span><span·class="p">.</span><span·class="w">145 2&gt;·</span><span·class="p"·data-group-id="5695540864-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class="p"·data-group-id="5695540864-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·212,·SHA:·62f2e16e75ee9a7814bbf6ada7986fd3c7b70d9e5bd4d600a517917e2aff82dd·...·]4-3">)</span><span·class="p">.</span><span·class="w">
146 </span><span·class="ss">otptest@ssh</span><span·class="p">.</span><span·class="ss">example</span><span·class="p">.</span><span·class="nc">com</span><span·class="p">:</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">pwd</span><span·class="w">146 </span><span·class="ss">otptest@ssh</span><span·class="p">.</span><span·class="ss">example</span><span·class="p">.</span><span·class="nc">com</span><span·class="p">:</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">pwd</span><span·class="w">
147 </span><span·class="o">/</span><span·class="ss">home</span><span·class="o">/</span><span·class="ss">otptest</span><span·class="w">147 </span><span·class="o">/</span><span·class="ss">home</span><span·class="o">/</span><span·class="ss">otptest</span><span·class="w">
148 </span><span·class="ss">otptest@ssh</span><span·class="p">.</span><span·class="ss">example</span><span·class="p">.</span><span·class="nc">com</span><span·class="p">:</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nb">exit</span><span·class="w">148 </span><span·class="ss">otptest@ssh</span><span·class="p">.</span><span·class="ss">example</span><span·class="p">.</span><span·class="nc">com</span><span·class="p">:</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nb">exit</span><span·class="w">
149 </span><span·class="ss">logout</span><span·class="w">149 </span><span·class="ss">logout</span><span·class="w">
150 </span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre><h2·id="running-an-erlang-ssh-daemon"·class="section-heading">150 </span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre><h2·id="running-an-erlang-ssh-daemon"·class="section-heading">
151 ··<a·href="#running-an-erlang-ssh-daemon"·class="hover-link">151 ··<a·href="#running-an-erlang-ssh-daemon"·class="hover-link">
152 ····<i·class="ri-link-m"·aria-hidden="true"></i>152 ····<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 157, 33 lines modifiedOffset 157, 33 lines modified
157 directory·containing·a·host·key·file·and·it·defaults·to·<code·class="inline">/etc/ssh</code>.·For·details,157 directory·containing·a·host·key·file·and·it·defaults·to·<code·class="inline">/etc/ssh</code>.·For·details,
158 see·Section·Configuration·in·<a·href="ssh_app.html">ssh</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Normally,·the·<code·class="inline">/etc/ssh</code>·directory·is·only·readable·by·root.</p></section><p>The·option·<a·href="ssh_file.html#t:user_dir_common_option/0"><code·class="inline">user_dir</code></a>·defaults·to158 see·Section·Configuration·in·<a·href="ssh_app.html">ssh</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Normally,·the·<code·class="inline">/etc/ssh</code>·directory·is·only·readable·by·root.</p></section><p>The·option·<a·href="ssh_file.html#t:user_dir_common_option/0"><code·class="inline">user_dir</code></a>·defaults·to
159 directory·<code·class="inline">~/.ssh</code>.</p><p><em>Step·1.</em>·To·run·the·example·without·root·privileges,·generate·new·keys·and·host159 directory·<code·class="inline">~/.ssh</code>.</p><p><em>Step·1.</em>·To·run·the·example·without·root·privileges,·generate·new·keys·and·host
160 keys:</p><pre><code·class="text">$bash&gt;·ssh-keygen·-t·rsa·-f·/tmp/ssh_daemon/ssh_host_rsa_key160 keys:</p><pre><code·class="text">$bash&gt;·ssh-keygen·-t·rsa·-f·/tmp/ssh_daemon/ssh_host_rsa_key
161 [...]161 [...]
162 $bash&gt;·ssh-keygen·-t·rsa·-f·/tmp/otptest_user/.ssh/id_rsa162 $bash&gt;·ssh-keygen·-t·rsa·-f·/tmp/otptest_user/.ssh/id_rsa
163 [...]</code></pre><p><em>Step·2.</em>·Create·the·file·<code·class="inline">/tmp/otptest_user/.ssh/authorized_keys</code>·and·add·the163 [...]</code></pre><p><em>Step·2.</em>·Create·the·file·<code·class="inline">/tmp/otptest_user/.ssh/authorized_keys</code>·and·add·the
164 content·of·<code·class="inline">/tmp/otptest_user/.ssh/id_rsa.pub</code>.</p><p><a·href=""·id="start-daemon-step3"></a></p><p><em>Step·3.</em>·Start·the·Erlang·<code·class="inline">ssh</code>·daemon:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1701686828-1">(</span><span·class="p"·data-group-id="1701686828-1">)</span><span·class="p">.</span><span·class="w">164 content·of·<code·class="inline">/tmp/otptest_user/.ssh/id_rsa.pub</code>.</p><p><a·href=""·id="start-daemon-step3"></a></p><p><em>Step·3.</em>·Start·the·Erlang·<code·class="inline">ssh</code>·daemon:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2156625599-1">(</span><span·class="p"·data-group-id="2156625599-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="ss">ok</span><span·class="gp·unselectable">165 </span><span·class="ss">ok</span><span·class="gp·unselectable">
166 2&gt;·</span><span·class="p"·data-group-id="1701686828-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sshd</span><span·class="p"·data-group-id="1701686828-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·481,·SHA:·dcf039b8bd7d6a8ee5f4439c29f5f5a9e6e7df5b5f14fece7df0e5356b28e6e6·...·]-5">}</span><span·class="p">,</span><span·class="w">166 2&gt;·</span><span·class="p"·data-group-id="2156625599-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sshd</span><span·class="p"·data-group-id="2156625599-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·481,·SHA:·558a1afeec4cd82ca1ff1e4f04598d3473a319ab703874f88256039d852c8779·...·]-5">}</span><span·class="p">,</span><span·class="w">
167 ··································</span><span·class="p"·data-group-id="1701686828-6">{</span><span·class="ss">user_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/otptest_user/.ssh&quot;</span><span·class="p"·data-group-id="1701686828-6">}</span><span·class="p"·data-group-id="1701686828-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·3bfe98086310d6dbd0fe2a44c9bbb2440c2fea3aac78710c9171e1084f8c2c17·...·]-3">)</span><span·class="p">.</span><span·class="w">167 ··································</span><span·class="p"·data-group-id="2156625599-6">{</span><span·class="ss">user_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/otptest_user/.ssh&quot;</span><span·class="p"·data-group-id="2156625599-6">}</span><span·class="p"·data-group-id="2156625599-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·c1d37f4e3c30b83a5ea113b5f8bbd7c23709d4aa6d79fd9315c334e1091008f5·...·]-3">)</span><span·class="p">.</span><span·class="w">
168 </span><span·class="p"·data-group-id="1701686828-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.54</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1701686828-7">}</span><span·class="w">168 </span><span·class="p"·data-group-id="2156625599-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.54</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2156625599-7">}</span><span·class="w">
169 </span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre><p><em>Step·4.</em>·Use·the·<strong>OpenSSH</strong>·client·from·a·shell·to·connect·to·the·Erlang·<code·class="inline">ssh</code>169 </span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre><p><em>Step·4.</em>·Use·the·<strong>OpenSSH</strong>·client·from·a·shell·to·connect·to·the·Erlang·<code·class="inline">ssh</code>
170 daemon:</p><pre><code·class="text">$bash&gt;·ssh·ssh.example.com·-p·8989··-i·/tmp/otptest_user/.ssh/id_rsa·\170 daemon:</p><pre><code·class="text">$bash&gt;·ssh·ssh.example.com·-p·8989··-i·/tmp/otptest_user/.ssh/id_rsa·\
171 ··················-o·UserKnownHostsFile=/tmp/otptest_user/.ssh/known_hosts171 ··················-o·UserKnownHostsFile=/tmp/otptest_user/.ssh/known_hosts
172 The·authenticity·of·host·'ssh.example.com'·can't·be·established.172 The·authenticity·of·host·'ssh.example.com'·can't·be·established.
173 RSA·key·fingerprint·is·14:81:80:50:b1:1f:57:dd:93:a8:2d:2f:dd:90:ae:a8.173 RSA·key·fingerprint·is·14:81:80:50:b1:1f:57:dd:93:a8:2d:2f:dd:90:ae:a8.
174 Are·you·sure·you·want·to·continue·connecting·(yes/no)?·yes174 Are·you·sure·you·want·to·continue·connecting·(yes/no)?·yes
175 Warning:·Permanently·added·'ssh.example.com'·(RSA)·to·the·list·of·known·hosts.175 Warning:·Permanently·added·'ssh.example.com'·(RSA)·to·the·list·of·known·hosts.
176 Eshell·V5.10··(abort·with·^G)176 Eshell·V5.10··(abort·with·^G)
177 1&gt;</code></pre><p>There·are·two·ways·of·shutting·down·an·<code·class="inline">ssh</code>·daemon,·see·<em>Step·5a</em>·and·<em>Step177 1&gt;</code></pre><p>There·are·two·ways·of·shutting·down·an·<code·class="inline">ssh</code>·daemon,·see·<em>Step·5a</em>·and·<em>Step
178 5b</em>.</p><p><em>Step·5a.</em>·Shut·down·the·Erlang·<code·class="inline">ssh</code>·daemon·so·that·it·stops·the·listener·but178 5b</em>.</p><p><em>Step·5a.</em>·Shut·down·the·Erlang·<code·class="inline">ssh</code>·daemon·so·that·it·stops·the·listener·but
179 leaves·existing·connections,·started·by·the·listener,·operational:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">stop_listener</span><span·class="p"·data-group-id="7539456484-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="7539456484-1">)</span><span·class="p">.</span><span·class="w">179 leaves·existing·connections,·started·by·the·listener,·operational:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">stop_listener</span><span·class="p"·data-group-id="8501399385-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="8501399385-1">)</span><span·class="p">.</span><span·class="w">
180 </span><span·class="ss">ok</span><span·class="w">180 </span><span·class="ss">ok</span><span·class="w">
181 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><p><em>Step·5b.</em>·Shut·down·the·Erlang·<code·class="inline">ssh</code>·daemon·so·that·it·stops·the·listener·and181 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><p><em>Step·5b.</em>·Shut·down·the·Erlang·<code·class="inline">ssh</code>·daemon·so·that·it·stops·the·listener·and
182 all·connections·started·by·the·listener:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">stop_daemon</span><span·class="p"·data-group-id="2380384784-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="2380384784-1">)</span><span·class="p">.</span><span·class="w">182 all·connections·started·by·the·listener:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">stop_daemon</span><span·class="p"·data-group-id="0183472002-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="0183472002-1">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="ss">ok</span><span·class="w">183 </span><span·class="ss">ok</span><span·class="w">
184 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><h2·id="one-time-execution"·class="section-heading">184 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><h2·id="one-time-execution"·class="section-heading">
185 ··<a·href="#one-time-execution"·class="hover-link">185 ··<a·href="#one-time-execution"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">One-Time·Execution</span>188 ··<span·class="text">One-Time·Execution</span>
189 </h2>189 </h2>
Offset 191, 74 lines modifiedOffset 191, 74 lines modified
191 ··<a·href="#erlang-client-contacting-os-standard-ssh-server"·class="hover-link">191 ··<a·href="#erlang-client-contacting-os-standard-ssh-server"·class="hover-link">
192 ····<i·class="ri-link-m"·aria-hidden="true"></i>192 ····<i·class="ri-link-m"·aria-hidden="true"></i>
193 ··</a>193 ··</a>
194 ··<span·class="text">Erlang·client·contacting·OS·standard·ssh·server</span>194 ··<span·class="text">Erlang·client·contacting·OS·standard·ssh·server</span>
195 </h3>195 </h3>
196 <p>In·the·following·example,·the·Erlang·shell·is·the·client·process·that·receives196 <p>In·the·following·example,·the·Erlang·shell·is·the·client·process·that·receives
197 the·channel·replies·as·Erlang·messages.</p><p>Do·an·one-time·execution·of·a·remote·OS·command·(&quot;pwd&quot;)·over·<code·class="inline">ssh</code>·to·the·ssh197 the·channel·replies·as·Erlang·messages.</p><p>Do·an·one-time·execution·of·a·remote·OS·command·(&quot;pwd&quot;)·over·<code·class="inline">ssh</code>·to·the·ssh
198 server·of·the·OS·at·the·host·&quot;ssh.example.com&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3940258721-1">(</span><span·class="p"·data-group-id="3940258721-1">)</span><span·class="p">.</span><span·class="w">198 server·of·the·OS·at·the·host·&quot;ssh.example.com&quot;:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7599279925-1">(</span><span·class="p"·data-group-id="7599279925-1">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="ss">ok</span><span·class="gp·unselectable">199 </span><span·class="ss">ok</span><span·class="gp·unselectable">
200 2&gt;·</span><span·class="p"·data-group-id="3940258721-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p"·data-group-id="3940258721-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·455,·SHA:·91526287cca6becefe19c08ad2fc99c47ac593e63dac96bb8527be61dc5c7023·...·]-3">)</span><span·class="p">.</span><span·class="w">200 2&gt;·</span><span·class="p"·data-group-id="7599279925-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p"·data-group-id="7599279925-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·455,·SHA:·9b106b581d700df8e4e81e4fb19a1529108517dbe469f3c2b952a8c81703cee5·...·]-3">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="3940258721-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3940258721-5">}</span><span·class="gp·unselectable">201 </span><span·class="p"·data-group-id="7599279925-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7599279925-5">}</span><span·class="gp·unselectable">
202 3&gt;·</span><span·class="p"·data-group-id="3940258721-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p"·data-group-id="3940258721-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·2f6979fcd176beb1ac7ddb230fe2d1a059f0c97c740366802953d51555e276d0·...·]-7">)</span><span·class="p">.</span><span·class="w">202 3&gt;·</span><span·class="p"·data-group-id="7599279925-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p"·data-group-id="7599279925-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·d6c5be1490295651d16b18c0a19646c08772be9412719f77fed8b6106cccf618·...·]-7">)</span><span·class="p">.</span><span·class="w">
203 </span><span·class="p"·data-group-id="3940258721-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3940258721-8">}</span><span·class="gp·unselectable">203 </span><span·class="p"·data-group-id="7599279925-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7599279925-8">}</span><span·class="gp·unselectable">
204 4&gt;·</span><span·class="ss">success</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh_connection</span><span·class="p">:</span><span·class="nf">exec</span><span·class="p"·data-group-id="3940258721-9">(</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;pwd&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·89,·SHA:·f3a820cf9cc1370ca224b3b2c5265f8cbd30c82384b6222e3a96a662b5ff64bd·...·]-9">)</span><span·class="p">.</span><span·class="gp·unselectable">204 4&gt;·</span><span·class="ss">success</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh_connection</span><span·class="p">:</span><span·class="nf">exec</span><span·class="p"·data-group-id="7599279925-9">(</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;pwd&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·89,·SHA:·2317ea8bb2cc053eaaa572be804ca0da20b98d72c5a095da18954a5d4dd41b6b·...·]-9">)</span><span·class="p">.</span><span·class="gp·unselectable">
205 5&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="3940258721-10">(</span><span·class="p"·data-group-id="3940258721-10">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Get·all·pending·messages.·NOTE:·ordering·may·vary!</span><span·class="w">205 5&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="7599279925-10">(</span><span·class="p"·data-group-id="7599279925-10">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Get·all·pending·messages.·NOTE:·ordering·may·vary!</span><span·class="w">
206 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="3940258721-11">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·447,·SHA:·9b414a30f58ea05e88fc99ac76aab98a18d7c5c12ea79ba2d627c0a60d134beb·...·]-11">}</span><span·class="w">206 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="7599279925-11">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·447,·SHA:·ce8b7dd223f2ef9b09ea92238369c5341cbbd0973a1a84744773d73ccc9b0214·...·]-11">}</span><span·class="w">
207 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="3940258721-14">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·201,·SHA:·583ee34dd0ff559cf2d492cb7d4c9b6081e96477f0daab509da0443d54209bc5·...·]-14">}</span><span·class="w">207 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="7599279925-14">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·201,·SHA:·d3acf50bfa78f9c28acb0ca41a04ea395ecb12cb52a5bb0f08702c2eb33036cd·...·]-14">}</span><span·class="w">
208 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="3940258721-16">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·258,·SHA:·909413509b29524c1e3305d39f7a48fc3281ffeeabe3549359676438f706e122·...·]-16">}</span><span·class="w">208 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="7599279925-16">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·258,·SHA:·077d6c31cb254c9f7c08782b0ae7380c27afc2749fb6acf0c126ab2d0c6670ca·...·]-16">}</span><span·class="w">
209 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="3940258721-18">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·204,·SHA:·1eedff4f7bbcedf9c432c87f6cb6cbab669287628c32c424855e04e7cf19d4a3·...·]-18">}</span><span·class="w">209 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="7599279925-18">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·204,·SHA:·125f9d166c9ac4c1a13d12fa498c09472657bf9c4c896373b65d474da8b1494a·...·]-18">}</span><span·class="w">
210 </span><span·class="ss">ok</span><span·class="gp·unselectable">210 </span><span·class="ss">ok</span><span·class="gp·unselectable">
211 6&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="3940258721-20">(</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">channels</span><span·class="p"·data-group-id="3940258721-20">)</span><span·class="p">.</span><span·class="w">211 6&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="7599279925-20">(</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">channels</span><span·class="p"·data-group-id="7599279925-20">)</span><span·class="p">.</span><span·class="w">
212 </span><span·class="p"·data-group-id="3940258721-21">{</span><span·class="ss">channels</span><span·class="p">,</span><span·class="p"·data-group-id="3940258721-22">[</span><span·class="p"·data-group-id="3940258721-22">]</span><span·class="p"·data-group-id="3940258721-21">}</span><span·class="w">212 </span><span·class="p"·data-group-id="7599279925-21">{</span><span·class="ss">channels</span><span·class="p">,</span><span·class="p"·data-group-id="7599279925-22">[</span><span·class="p"·data-group-id="7599279925-22">]</span><span·class="p"·data-group-id="7599279925-21">}</span><span·class="w">
213 </span><span·class="mi">7</span><span·class="o">&gt;</span></code></pre><p>See·<a·href="ssh_connection.html"><code·class="inline">ssh_connection</code></a>·and·<a·href="ssh_connection.html#exec/4"><code·class="inline">ssh_connection:exec/4</code></a>·for·finding·documentation·of213 </span><span·class="mi">7</span><span·class="o">&gt;</span></code></pre><p>See·<a·href="ssh_connection.html"><code·class="inline">ssh_connection</code></a>·and·<a·href="ssh_connection.html#exec/4"><code·class="inline">ssh_connection:exec/4</code></a>·for·finding·documentation·of
214 the·channel·messages.</p><p>To·collect·the·channel·messages·in·a·program,·use·<code·class="inline">receive...end</code>·instead·of214 the·channel·messages.</p><p>To·collect·the·channel·messages·in·a·program,·use·<code·class="inline">receive...end</code>·instead·of
215 <code·class="inline">flush/1</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="k">receive</span><span·class="gp·unselectable">215 <code·class="inline">flush/1</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="k">receive</span><span·class="gp·unselectable">
216 5&gt;·</span><span·class="w">····</span><span·class="p"·data-group-id="9036891694-1">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9036891694-2">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·d1356a2295c86e0fc110622d07dbac18bca87f2ff35c2f53ba8938b2804fa219·...·]-1">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Type</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="gp·unselectable">216 5&gt;·</span><span·class="w">····</span><span·class="p"·data-group-id="0747914336-1">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0747914336-2">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·56a2dafe9d3121526daf017efcd33ac4edd7764f5be112a370f81fed9af3a512·...·]-1">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Type</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="gp·unselectable">
217 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="9036891694-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="9036891694-3">}</span><span·class="gp·unselectable">217 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="0747914336-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="0747914336-3">}</span><span·class="gp·unselectable">
218 5&gt;·</span><span·class="w">····</span><span·class="p"·data-group-id="9036891694-4">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9036891694-5">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·78b74d7c8832464cbe56847669ffb0e359c88cb6f1977c498a3ea34a94c8a780·...·]-4">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Type</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="gp·unselectable">218 5&gt;·</span><span·class="w">····</span><span·class="p"·data-group-id="0747914336-4">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0747914336-5">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·74ffc3eea765fea43e52a7f226c2af101d45c80ea08e48288edf9b2d2b14dc00·...·]-4">}</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Type</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="gp·unselectable">
219 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="9036891694-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="9036891694-6">}</span><span·class="gp·unselectable">219 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="0747914336-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="0747914336-6">}</span><span·class="gp·unselectable">
220 5&gt;·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">220 5&gt;·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
221 </span><span·class="p"·data-group-id="9036891694-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9036891694-8">&lt;&lt;</span><span·class="s">&quot;/home/otptest\n&quot;</span><span·class="p"·data-group-id="9036891694-8">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·b4eb9ae714875e2d77f4aa0370dfdac4e1daa95e9b77dc47e44e08df28c18bfa·...·]-7">}</span><span·class="w">221 </span><span·class="p"·data-group-id="0747914336-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0747914336-8">&lt;&lt;</span><span·class="s">&quot;/home/otptest\n&quot;</span><span·class="p"·data-group-id="0747914336-8">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·563831f7301db98b0b74d2d425af8a87dbb9c2403a2efb4d16e3a775b1a7612a·...·]-7">}</span><span·class="w">
222 </span><span·class="mi">6</span><span·class="o">&gt;</span></code></pre><p>Note·that·only·the·exec·channel·is·closed·after·the·one-time·execution.·The222 </span><span·class="mi">6</span><span·class="o">&gt;</span></code></pre><p>Note·that·only·the·exec·channel·is·closed·after·the·one-time·execution.·The
223 connection·is·still·up·and·can·handle·previously·opened·channels.·It·is·also223 connection·is·still·up·and·can·handle·previously·opened·channels.·It·is·also
224 possible·to·open·a·new·channel:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·try·to·open·a·new·channel·to·check·if·the·ConnectionRef·is·still·open</span><span·class="gp·unselectable">224 possible·to·open·a·new·channel:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·try·to·open·a·new·channel·to·check·if·the·ConnectionRef·is·still·open</span><span·class="gp·unselectable">
225 7&gt;·</span><span·class="p"·data-group-id="5521715301-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewChannelId</span><span·class="p"·data-group-id="5521715301-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·311,·SHA:·f72f40a05806be54972b3de9af450062ebd69aa76fdc9cce223d00255db099e3·...·]-2">)</span><span·class="p">.</span><span·class="w">225 7&gt;·</span><span·class="p"·data-group-id="8486799790-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewChannelId</span><span·class="p"·data-group-id="8486799790-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·311,·SHA:·005f4f93e2c6b6ea3dc74351921ad4561f18331d0e6e25e69d07d494213423f4·...·]-2">)</span><span·class="p">.</span><span·class="w">
226 </span><span·class="p"·data-group-id="5521715301-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5521715301-3">}</span><span·class="w">226 </span><span·class="p"·data-group-id="8486799790-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8486799790-3">}</span><span·class="w">
227 </span><span·class="mi">8</span><span·class="o">&gt;</span></code></pre><p>To·close·the·connection,·call·the·function227 </span><span·class="mi">8</span><span·class="o">&gt;</span></code></pre><p>To·close·the·connection,·call·the·function
228 <a·href="ssh.html#close/1"><code·class="inline">ssh:close(ConnectionRef)</code></a>.·As·an·alternative,·set·the·option228 <a·href="ssh.html#close/1"><code·class="inline">ssh:close(ConnectionRef)</code></a>.·As·an·alternative,·set·the·option
229 <a·href="ssh.html#t:max_idle_time_common_option/0"><code·class="inline">{idle_time,·1}</code></a>·when·opening·the229 <a·href="ssh.html#t:max_idle_time_common_option/0"><code·class="inline">{idle_time,·1}</code></a>·when·opening·the
230 connection.·This·will·cause·the·connection·to·be·closed·automatically·when·there230 connection.·This·will·cause·the·connection·to·be·closed·automatically·when·there
231 are·no·channels·open·for·the·specified·time·period,·in·this·case·1·ms.</p><h3·id="os-standard-client-and-erlang-daemon-server"·class="section-heading">231 are·no·channels·open·for·the·specified·time·period,·in·this·case·1·ms.</p><h3·id="os-standard-client-and-erlang-daemon-server"·class="section-heading">
232 ··<a·href="#os-standard-client-and-erlang-daemon-server"·class="hover-link">232 ··<a·href="#os-standard-client-and-erlang-daemon-server"·class="hover-link">
233 ····<i·class="ri-link-m"·aria-hidden="true"></i>233 ····<i·class="ri-link-m"·aria-hidden="true"></i>
234 ··</a>234 ··</a>
235 ··<span·class="text">OS·standard·client·and·Erlang·daemon·(server)</span>235 ··<span·class="text">OS·standard·client·and·Erlang·daemon·(server)</span>
236 </h3>236 </h3>
237 <p>An·Erlang·SSH·daemon·could·be·called·for·one-time·execution·of·a·&quot;command&quot;.·The237 <p>An·Erlang·SSH·daemon·could·be·called·for·one-time·execution·of·a·&quot;command&quot;.·The
238 &quot;command&quot;·must·be·as·if·entered·into·the·erlang·shell,·that·is·a·sequence·of238 &quot;command&quot;·must·be·as·if·entered·into·the·erlang·shell,·that·is·a·sequence·of
239 Erlang·<a·href="../../../../doc/system/expressions.html">expressions</a>·ended·by·a·period·(.).·Variables239 Erlang·<a·href="../../../../doc/system/expressions.html">expressions</a>·ended·by·a·period·(.).·Variables
240 bound·in·that·sequence·will·keep·their·bindings·throughout·the·expression240 bound·in·that·sequence·will·keep·their·bindings·throughout·the·expression
241 sequence.·The·bindings·are·disposed·when·the·result·is·returned.</p><p>Here·is·an·example·of·a·suitable·expression·sequence:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A</span><span·class="o">=</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="o">=</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="p"·data-group-id="3090045251-1">(</span><span·class="n">A</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="3090045251-1">)</span><span·class="p">.</span></code></pre><p>It·evaluates·to·<code·class="inline">true</code>·if·submitted·to·the·Erlang·daemon·started·in241 sequence.·The·bindings·are·disposed·when·the·result·is·returned.</p><p>Here·is·an·example·of·a·suitable·expression·sequence:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A</span><span·class="o">=</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·class="o">=</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="p"·data-group-id="9860215097-1">(</span><span·class="n">A</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">B</span><span·class="p"·data-group-id="9860215097-1">)</span><span·class="p">.</span></code></pre><p>It·evaluates·to·<code·class="inline">true</code>·if·submitted·to·the·Erlang·daemon·started·in
242 <a·href="using_ssh.html#start-daemon-step3">Step·3</a>·above:</p><pre><code·class="text">$bash&gt;·ssh·ssh.example.com·-p·8989·&quot;A=1,·B=2,·3·==·(A·+·B).&quot;242 <a·href="using_ssh.html#start-daemon-step3">Step·3</a>·above:</p><pre><code·class="text">$bash&gt;·ssh·ssh.example.com·-p·8989·&quot;A=1,·B=2,·3·==·(A·+·B).&quot;
243 true243 true
244 $bash&gt;</code></pre><p>The·same·example·but·now·using·the·Erlang·ssh·client·to·contact·the·Erlang244 $bash&gt;</code></pre><p>The·same·example·but·now·using·the·Erlang·ssh·client·to·contact·the·Erlang
245 server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="0686145338-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p"·data-group-id="0686145338-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·457,·SHA:·64579a2df3ee7e6bed3fddf592e889f92e89edb0fe50599c9e64112b0c1d41ad·...·]-2">)</span><span·class="p">.</span><span·class="w">245 server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="9875397103-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnectionRef</span><span·class="p"·data-group-id="9875397103-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·457,·SHA:·b94d4394e761c2cf13ca53ea57795802ed40868c5116d02ece9fe28853c42d04·...·]-2">)</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="0686145338-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0686145338-4">}</span><span·class="gp·unselectable">246 </span><span·class="p"·data-group-id="9875397103-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9875397103-4">}</span><span·class="gp·unselectable">
247 2&gt;·</span><span·class="p"·data-group-id="0686145338-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p"·data-group-id="0686145338-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·9f8837b8269452da0ad59cc1d484d3dce744afcd38cf53b3d1390998f9b21634·...·]-6">)</span><span·class="p">.</span><span·class="w">247 2&gt;·</span><span·class="p"·data-group-id="9875397103-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p"·data-group-id="9875397103-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·002ba1f430d54e9d5f55d7eed2068b16116ac5e229274f63d37914c4a92a090b·...·]-6">)</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p"·data-group-id="0686145338-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0686145338-7">}</span><span·class="gp·unselectable">248 </span><span·class="p"·data-group-id="9875397103-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="9875397103-7">}</span><span·class="gp·unselectable">
249 3&gt;·</span><span·class="ss">success</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh_connection</span><span·class="p">:</span><span·class="nf">exec</span><span·class="p"·data-group-id="0686145338-8">(</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p">,</span><span·class="w">249 3&gt;·</span><span·class="ss">success</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh_connection</span><span·class="p">:</span><span·class="nf">exec</span><span·class="p"·data-group-id="9875397103-8">(</span><span·class="n">ConnectionRef</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChannelId</span><span·class="p">,</span><span·class="w">
250 ·································</span><span·class="s">&quot;A=1,·B=2,·3·==·(A·+·B).&quot;</span><span·class="p">,</span><span·class="w">250 ·································</span><span·class="s">&quot;A=1,·B=2,·3·==·(A·+·B).&quot;</span><span·class="p">,</span><span·class="w">
251 ·································</span><span·class="ss">infinity</span><span·class="p"·data-group-id="0686145338-8">)</span><span·class="p">.</span><span·class="w">251 ·································</span><span·class="ss">infinity</span><span·class="p"·data-group-id="9875397103-8">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="ss">success</span><span·class="gp·unselectable">252 </span><span·class="ss">success</span><span·class="gp·unselectable">
253 4&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="0686145338-9">(</span><span·class="p"·data-group-id="0686145338-9">)</span><span·class="p">.</span><span·class="w">253 4&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="9875397103-9">(</span><span·class="p"·data-group-id="9875397103-9">)</span><span·class="p">.</span><span·class="w">
254 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0686145338-10">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·437,·SHA:·a9b0d503e3051d4ba1e2038bc36c80bd66acb27bbfbe7ab4af17984c23a91ac7·...·]-10">}</span><span·class="w">254 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="9875397103-10">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·437,·SHA:·9e8c71ebbf03caeae06c11a9cace749962fcb6284ab6e0933afcffb0710d4fa6·...·]-10">}</span><span·class="w">
255 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0686145338-13">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·259,·SHA:·29372ae9cb2095a84da33b929afcba5b296abb1b45a3c63692f32cfda0a16ed6·...·]-13">}</span><span·class="w">255 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="9875397103-13">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·259,·SHA:·4e4c7abcad7189f0e96070699a486529b5a7877dd9b07f532b1d4584bb04f137·...·]-13">}</span><span·class="w">
256 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0686145338-15">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·202,·SHA:·10f66d760d955c77a0801ee15e56bc26be571137fd74760a5e975444df102c79·...·]-15">}</span><span·class="w">256 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="9875397103-15">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·202,·SHA:·12b1b8d1eb9a30f4fe98cad5a157d01fdd9b23abe1d20a5dbc7df9845e9fa31c·...·]-15">}</span><span·class="w">
257 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="0686145338-17">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·205,·SHA:·76288071b84926dc315289fdf2935abe15db205a2c8ab00946704efd1982cfe8·...·]-17">}</span><span·class="w">257 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="9875397103-17">{</span><span·class="ss">ssh_cm</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.216</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·205,·SHA:·fa4911b5eb432141ffca81b118273ed18d0e3166229bb7c5ada0bac32efb4d33·...·]-17">}</span><span·class="w">
258 </span><span·class="ss">ok</span><span·class="w">258 </span><span·class="ss">ok</span><span·class="w">
259 </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p>Note·that·Erlang·shell·specific·functions·and·control·sequences·like·for·example259 </span><span·class="mi">5</span><span·class="o">&gt;</span></code></pre><p>Note·that·Erlang·shell·specific·functions·and·control·sequences·like·for·example
260 <code·class="inline">h().</code>·are·not·supported.</p><h3·id="i-o-from-a-function-called-in-an-erlang-ssh-daemon"·class="section-heading">260 <code·class="inline">h().</code>·are·not·supported.</p><h3·id="i-o-from-a-function-called-in-an-erlang-ssh-daemon"·class="section-heading">
261 ··<a·href="#i-o-from-a-function-called-in-an-erlang-ssh-daemon"·class="hover-link">261 ··<a·href="#i-o-from-a-function-called-in-an-erlang-ssh-daemon"·class="hover-link">
262 ····<i·class="ri-link-m"·aria-hidden="true"></i>262 ····<i·class="ri-link-m"·aria-hidden="true"></i>
263 ··</a>263 ··</a>
264 ··<span·class="text">I/O·from·a·function·called·in·an·Erlang·ssh·daemon</span>264 ··<span·class="text">I/O·from·a·function·called·in·an·Erlang·ssh·daemon</span>
Offset 271, 44 lines modifiedOffset 271, 44 lines modified
Max diff block lines reached; 160262/210311 bytes (76.20%) of diff not shown.
607 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.7/doc/html/ssl.epub
3.2 KB
zipinfo {}
    
Offset 1, 21 lines modifiedOffset 1, 21 lines modified
1 Zip·file·size:·205124·bytes,·number·of·entries:·191 Zip·file·size:·205126·bytes,·number·of·entries:·19
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:30·mimetype
3 ?rw-r--r--··6.1·unx···170720·bx·defN·25-Feb-13·10:52·OEBPS/using_ssl.xhtml3 ?rw-r--r--··6.1·unx···170720·bx·defN·25-Feb-13·09:30·OEBPS/using_ssl.xhtml
4 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·10:52·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·09:30·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····72661·bx·defN·25-Feb-13·10:52·OEBPS/standards_compliance.xhtml5 ?rw-r--r--··6.1·unx····72661·bx·defN·25-Feb-13·09:30·OEBPS/standards_compliance.xhtml
6 ?rw-r--r--··6.1·unx····19957·bx·defN·25-Feb-13·10:52·OEBPS/ssl_session_cache_api.xhtml6 ?rw-r--r--··6.1·unx····19957·bx·defN·25-Feb-13·09:30·OEBPS/ssl_session_cache_api.xhtml
7 ?rw-r--r--··6.1·unx·····8192·bx·defN·25-Feb-13·10:52·OEBPS/ssl_protocol.xhtml7 ?rw-r--r--··6.1·unx·····8192·bx·defN·25-Feb-13·09:30·OEBPS/ssl_protocol.xhtml
8 ?rw-r--r--··6.1·unx····24574·bx·defN·25-Feb-13·10:52·OEBPS/ssl_distribution.xhtml8 ?rw-r--r--··6.1·unx····24574·bx·defN·25-Feb-13·09:30·OEBPS/ssl_distribution.xhtml
9 ?rw-r--r--··6.1·unx····15730·bx·defN·25-Feb-13·10:52·OEBPS/ssl_crl_cache_api.xhtml9 ?rw-r--r--··6.1·unx····15730·bx·defN·25-Feb-13·09:30·OEBPS/ssl_crl_cache_api.xhtml
10 ?rw-r--r--··6.1·unx·····6972·bx·defN·25-Feb-13·10:52·OEBPS/ssl_crl_cache.xhtml10 ?rw-r--r--··6.1·unx·····6972·bx·defN·25-Feb-13·09:30·OEBPS/ssl_crl_cache.xhtml
11 ?rw-r--r--··6.1·unx····11323·bx·defN·25-Feb-13·10:52·OEBPS/ssl_app.xhtml11 ?rw-r--r--··6.1·unx····11323·bx·defN·25-Feb-13·09:30·OEBPS/ssl_app.xhtml
12 ?rw-r--r--··6.1·unx···302728·bx·defN·25-Feb-13·10:52·OEBPS/ssl.xhtml12 ?rw-r--r--··6.1·unx···302728·bx·defN·25-Feb-13·09:30·OEBPS/ssl.xhtml
13 ?rw-r--r--··6.1·unx···237595·bx·defN·25-Feb-13·10:52·OEBPS/notes.xhtml13 ?rw-r--r--··6.1·unx···237595·bx·defN·25-Feb-13·09:30·OEBPS/notes.xhtml
14 ?rw-r--r--··6.1·unx·····1569·bx·defN·25-Feb-13·10:52·OEBPS/nav.xhtml14 ?rw-r--r--··6.1·unx·····1569·bx·defN·25-Feb-13·09:30·OEBPS/nav.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:30·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:52·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:30·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx·····2608·bx·defN·25-Feb-13·10:52·OEBPS/content.opf17 ?rw-r--r--··6.1·unx·····2608·bx·defN·25-Feb-13·09:30·OEBPS/content.opf
18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:52·OEBPS/assets/logo.png18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:30·OEBPS/assets/logo.png
19 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:52·META-INF/container.xml19 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:30·META-INF/container.xml
20 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:52·META-INF/com.apple.ibooks.display-options.xml20 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:30·META-INF/com.apple.ibooks.display-options.xml
21 19·files,·896673·bytes·uncompressed,·201770·bytes·compressed:··77.5%21 19·files,·896673·bytes·uncompressed,·201772·bytes·compressed:··77.5%
109 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:52:14,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:30:36,·uncompressed·size·20,·method=store
300 KB
OEBPS/using_ssl.xhtml
Max HTML report size reached
22.2 KB
OEBPS/ssl_distribution.xhtml
Max HTML report size reached
172 KB
OEBPS/ssl.xhtml
Max HTML report size reached
1.2 KB
OEBPS/content.opf
1.17 KB
OEBPS/content.opf
Max HTML report size reached
91.5 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.7/doc/html/ssl.html
    
Offset 127, 17 lines modifiedOffset 127, 17 lines modified
127 ··</h1>127 ··</h1>
  
  
128 ····<section·id="moduledoc">128 ····<section·id="moduledoc">
129 <p>Interface·functions·for·TLS·(Transport·Layer·Security)129 <p>Interface·functions·for·TLS·(Transport·Layer·Security)
130 and·DTLS·(Datagram·Transport·Layer·Security).</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·application's·name·is·still·SSL·because·the·first·versions·of·the130 and·DTLS·(Datagram·Transport·Layer·Security).</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·application's·name·is·still·SSL·because·the·first·versions·of·the
131 TLS·protocol·were·named·SSL·(Secure·Socket·Layer).·However,·no·version131 TLS·protocol·were·named·SSL·(Secure·Socket·Layer).·However,·no·version
132 of·the·old·SSL·protocol·is·supported·by·this·application.</p></section><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2388100159-1">(</span><span·class="p"·data-group-id="2388100159-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="2388100159-2">(</span><span·class="s">&quot;google.com&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">443</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2388100159-3">[</span><span·class="p"·data-group-id="2388100159-4">{</span><span·class="ss">verify</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">verify_peer</span><span·class="p"·data-group-id="2388100159-4">}</span><span·class="p">,</span><span·class="w"> 
133 ····</span><span·class="p"·data-group-id="2388100159-5">{</span><span·class="ss">cacerts</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf">cacerts_get</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·262,·SHA:·6e82fbcaee23a93ac574a15debb47bc4a2691f4fe54e64072288e24b0e94c20e·...·]</span><span·class="w">132 of·the·old·SSL·protocol·is·supported·by·this·application.</p></section><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span[·...·truncated·by·diffoscope;·len:·747,·SHA:·c12aee30ed074b16172c71e438975835022705691b26286e9d0e096a8a4de409·...·]</span><span·class="w">
 133 ····</span><span·class="p"·data-group-id="7878977368-5">{</span><span·class="ss">cacerts</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf">cacerts_get</span><span·class="p"·data-group-id="7878977368-6">(</span><span·class="p"·data-group-id="7878977368-6">)</span><span·class="p"·data-group-id="7878977368-5">}</span><span·class="p"·data-group-id="7878977368-3">]</span><span·class="p"·data-group-id="7878977368-2">)</span><span·class="p">.</span><span·class="w">
134 </span><span·class="p"·data-group-id="2388100159-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2388100159-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2388100159-9">[</sp[·...·truncated·by·diffoscope;·len:·222,·SHA:·437af40eb71296caec88c41c0ea10cc100cae7e238f5a715d4686743b317949f·...·]-7">}</span></code></pre><p>See·<a·href="using_ssl.html">Examples</a>·for·detailed·usage·and·more·examples·of134 </span><span·class="p"·data-group-id="7878977368-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7878977368-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7878977368-9">[</sp[·...·truncated·by·diffoscope;·len:·222,·SHA:·4fb426f4a4afa4a90991f4dd25173a171de2c47179c54950d5d1b559883a423f·...·]-7">}</span></code></pre><p>See·<a·href="using_ssl.html">Examples</a>·for·detailed·usage·and·more·examples·of
135 this·API.</p><p>Special·Erlang·node·configuration·for·the·application·can·be·found·in135 this·API.</p><p>Special·Erlang·node·configuration·for·the·application·can·be·found·in
136 <a·href="ssl_app.html">SSL·Application</a>.</p>136 <a·href="ssl_app.html">SSL·Application</a>.</p>
137 ····</section>137 ····</section>
  
138 </div>138 </div>
  
139 ··<section·id="summary"·class="details-list">139 ··<section·id="summary"·class="details-list">
Offset 2465, 34 lines modifiedOffset 2465, 34 lines modified
2465 from·the·cipher·suite.</p><p>In·TLS-1.2·a·somewhat·more·explicit·negotiation·is·made·possible·using·a·list·of2465 from·the·cipher·suite.</p><p>In·TLS-1.2·a·somewhat·more·explicit·negotiation·is·made·possible·using·a·list·of
2466 <code·class="inline">{HashAlgo,·SignAlgo}</code>·tuples.</p><p>In·TLS-1.3,·these·algorithm·pairs·are·replaced·by·<a·href="#t:sign_scheme/0">signature2466 <code·class="inline">{HashAlgo,·SignAlgo}</code>·tuples.</p><p>In·TLS-1.3,·these·algorithm·pairs·are·replaced·by·<a·href="#t:sign_scheme/0">signature
2467 schemes</a>·that·are·completely·decoupled·from·the2467 schemes</a>·that·are·completely·decoupled·from·the
2468 cipher·suite.</p><p>Signature·algorithms·used·for·certificates·can·be·overridden·by·the2468 cipher·suite.</p><p>Signature·algorithms·used·for·certificates·can·be·overridden·by·the
2469 <a·href="#t:sign_scheme/0">signature·schemes</a>·supplied·by·the2469 <a·href="#t:sign_scheme/0">signature·schemes</a>·supplied·by·the
2470 <code·class="inline">signature_algs_cert</code>·option.</p><p>The·TLS-1.2·default·is·<code·class="inline">Default_TLS_12_Alg_Pairs</code>·interleaved·with2470 <code·class="inline">signature_algs_cert</code>·option.</p><p>The·TLS-1.2·default·is·<code·class="inline">Default_TLS_12_Alg_Pairs</code>·interleaved·with
2471 <code·class="inline">rsa_pss_schemes</code>·since·ssl-11.0·(Erlang/OTP·25).·<code·class="inline">pss_pss</code>·is2471 <code·class="inline">rsa_pss_schemes</code>·since·ssl-11.0·(Erlang/OTP·25).·<code·class="inline">pss_pss</code>·is
2472 preferred·over·<code·class="inline">pss_rsae</code>,·which·in·turn·is·preferred·over·<code·class="inline">rsa</code>.</p><p>The·list·for·<code·class="inline">Default_TLS_12_Alg_Pairs</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8860336795-1">[</span><span·class="w">2472 preferred·over·<code·class="inline">pss_rsae</code>,·which·in·turn·is·preferred·over·<code·class="inline">rsa</code>.</p><p>The·list·for·<code·class="inline">Default_TLS_12_Alg_Pairs</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4293146475-1">[</span><span·class="w">
2473 </span><span·class="p"·data-group-id="8860336795-2">{</span><span·class="ss">sha512</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ecdsa</span><span·class="p"·data-group-id="8860336795-2">}</span><span·class="p">,</span><span·class="w">2473 </span><span·class="p"·data-group-id="4293146475-2">{</span><span·class="ss">sha512</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ecdsa</span><span·class="p"·data-group-id="4293146475-2">}</span><span·class="p">,</span><span·class="w">
2474 </span><span·class="p"·data-group-id="8860336795-3">{</span><span·class="ss">sha512</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">rsa</span><span·class="p"·data-group-id="8860336795-3">}</span><span·class="p">,</span><span·class="w">2474 </span><span·class="p"·data-group-id="4293146475-3">{</span><span·class="ss">sha512</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">rsa</span><span·class="p"·data-group-id="4293146475-3">}</span><span·class="p">,</span><span·class="w">
2475 </span><span·class="p"·data-group-id="8860336795-4">{</span><span·class="ss">sha384</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ecdsa</span><span·class="p"·data-group-id="8860336795-4">}</span><span·class="p">,</span><span·class="w">2475 </span><span·class="p"·data-group-id="4293146475-4">{</span><span·class="ss">sha384</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ecdsa</span><span·class="p"·data-group-id="4293146475-4">}</span><span·class="p">,</span><span·class="w">
2476 </span><span·class="p"·data-group-id="8860336795-5">{</span><span·class="ss">sha384</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">rsa</span><span·class="p"·data-group-id="8860336795-5">}</span><span·class="p">,</span><span·class="w">2476 </span><span·class="p"·data-group-id="4293146475-5">{</span><span·class="ss">sha384</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">rsa</span><span·class="p"·data-group-id="4293146475-5">}</span><span·class="p">,</span><span·class="w">
2477 </span><span·class="p"·data-group-id="8860336795-6">{</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ecdsa</span><span·class="p"·data-group-id="8860336795-6">}</span><span·class="p">,</span><span·class="w">2477 </span><span·class="p"·data-group-id="4293146475-6">{</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ecdsa</span><span·class="p"·data-group-id="4293146475-6">}</span><span·class="p">,</span><span·class="w">
2478 </span><span·class="p"·data-group-id="8860336795-7">{</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">rsa</span><span·class="p"·data-group-id="8860336795-7">}</span><span·class="w">2478 </span><span·class="p"·data-group-id="4293146475-7">{</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">rsa</span><span·class="p"·data-group-id="4293146475-7">}</span><span·class="w">
2479 </span><span·class="p"·data-group-id="8860336795-1">]</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><ul><li>Support·for·<code·class="inline">{md5,·rsa}</code>·was·removed·from·the·TLS-1.2·default·in2479 </span><span·class="p"·data-group-id="4293146475-1">]</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><ul><li>Support·for·<code·class="inline">{md5,·rsa}</code>·was·removed·from·the·TLS-1.2·default·in
2480 ssl-8.0·(Erlang/OTP·22).</li><li>Support·for·<code·class="inline">{sha,·_}</code>·(SHA1)·and·<code·class="inline">{sha224,·_}</code>·was·removed2480 ssl-8.0·(Erlang/OTP·22).</li><li>Support·for·<code·class="inline">{sha,·_}</code>·(SHA1)·and·<code·class="inline">{sha224,·_}</code>·was·removed
2481 from·the·TLS-1.2·default·in·ssl-11.0·(Erlang/OTP·26).</li></ul></section><p>The·list·for·<code·class="inline">rsa_pss_schemes</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7265128881-1">[</span><span·class="ss">rsa_pss_pss_sha512</span><span·class="p">,</span><span·class="w">2481 from·the·TLS-1.2·default·in·ssl-11.0·(Erlang/OTP·26).</li></ul></section><p>The·list·for·<code·class="inline">rsa_pss_schemes</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7027114376-1">[</span><span·class="ss">rsa_pss_pss_sha512</span><span·class="p">,</span><span·class="w">
2482 </span><span·class="ss">rsa_pss_pss_sha384</span><span·class="p">,</span><span·class="w">2482 </span><span·class="ss">rsa_pss_pss_sha384</span><span·class="p">,</span><span·class="w">
2483 </span><span·class="ss">rsa_pss_pss_sha256</span><span·class="p">,</span><span·class="w">2483 </span><span·class="ss">rsa_pss_pss_sha256</span><span·class="p">,</span><span·class="w">
2484 </span><span·class="ss">rsa_pss_rsae_sha512</span><span·class="p">,</span><span·class="w">2484 </span><span·class="ss">rsa_pss_rsae_sha512</span><span·class="p">,</span><span·class="w">
2485 </span><span·class="ss">rsa_pss_rsae_sha384</span><span·class="p">,</span><span·class="w">2485 </span><span·class="ss">rsa_pss_rsae_sha384</span><span·class="p">,</span><span·class="w">
2486 </span><span·class="ss">rsa_pss_rsae_sha256</span><span·class="p"·data-group-id="7265128881-1">]</span></code></pre><p>The·list·of·<code·class="inline">TLS_13_Legacy_Schemes</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2415340186-1">[</span><span·class="w">2486 </span><span·class="ss">rsa_pss_rsae_sha256</span><span·class="p"·data-group-id="7027114376-1">]</span></code></pre><p>The·list·of·<code·class="inline">TLS_13_Legacy_Schemes</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6858288729-1">[</span><span·class="w">
2487 </span><span·class="c1">%%·Legacy·algorithms·only·applicable·to·certificate·signatures</span><span·class="w">2487 </span><span·class="c1">%%·Legacy·algorithms·only·applicable·to·certificate·signatures</span><span·class="w">
2488 </span><span·class="ss">rsa_pkcs1_sha512</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·Corresponds·to·{sha512,·rsa}</span><span·class="w">2488 </span><span·class="ss">rsa_pkcs1_sha512</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·Corresponds·to·{sha512,·rsa}</span><span·class="w">
2489 </span><span·class="ss">rsa_pkcs1_sha384</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·Corresponds·to·{sha384,·rsa}</span><span·class="w">2489 </span><span·class="ss">rsa_pkcs1_sha384</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·Corresponds·to·{sha384,·rsa}</span><span·class="w">
2490 </span><span·class="ss">rsa_pkcs1_sha256</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·Corresponds·to·{sha256,·rsa}</span><span·class="w">2490 </span><span·class="ss">rsa_pkcs1_sha256</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·Corresponds·to·{sha256,·rsa}</span><span·class="w">
2491 </span><span·class="p"·data-group-id="2415340186-1">]</span></code></pre><p>The·list·of·<code·class="inline">Default_TLS_13_Schemes</code>·is·defined·as·follows:</p><pre><code·class="text">[2491 </span><span·class="p"·data-group-id="6858288729-1">]</span></code></pre><p>The·list·of·<code·class="inline">Default_TLS_13_Schemes</code>·is·defined·as·follows:</p><pre><code·class="text">[
2492 %%·EDDSA2492 %%·EDDSA
2493 eddsa_ed25519,2493 eddsa_ed25519,
2494 eddsa_ed4482494 eddsa_ed448
  
2495 %%·ECDSA2495 %%·ECDSA
2496 ecdsa_secp521r1_sha512,2496 ecdsa_secp521r1_sha512,
2497 ecdsa_secp384r1_sha384,2497 ecdsa_secp384r1_sha384,
Offset 2570, 16 lines modifiedOffset 2570, 16 lines modified
  
2570 ······<div·class="specs">2570 ······<div·class="specs">
  
2571 ··········<pre·translate="no"><span·class="attribute">-type</span>·anchor_fun()·::·fun().</pre>2571 ··········<pre·translate="no"><span·class="attribute">-type</span>·anchor_fun()·::·fun().</pre>
  
2572 ······</div>2572 ······</div>
  
2573 <p>Claim·an·intermediate·CA·in·the·chain·as·trusted.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="6969753556-1">(</span><span·class="n">Chain</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="6969753556-2">[</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf">der_encoded</span><span·class=[·...·truncated·by·diffoscope;·len:·188,·SHA:·b9936d0110ad2cdcd443bfa135767ad21344adcb8db32aa5b798e69ebc68ce83·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">2573 <p>Claim·an·intermediate·CA·in·the·chain·as·trusted.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="5856366014-1">(</span><span·class="n">Chain</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="5856366014-2">[</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf">der_encoded</span><span·class=[·...·truncated·by·diffoscope;·len:·188,·SHA:·0486888655e27b78fb48df51474342f44a635931a149742d64366b63850ffdf8·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2574 ······</span><span·class="p"·data-group-id="6969753556-4">{</span><span·class="ss">trusted_ca</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DerCert</span><span·class="p">:</span><span·class="p">:</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf"[·...·truncated·by·diffoscope;·len:·166,·SHA:·3993a606f300ec012cc0c23a6476b88acda3be4c6ed15c34029f843edd0dfd90·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">unknown_ca</span><span·class="p">.</span></code></pre><p>TLS·then·uses·<a·href="../../../../lib/public_key-1.17.1/doc/html/public_key.html#pkix_path_validation/3"><code·class="inline">public_key:pkix_path_validation/3</code></a>·with·the·selected·CA2574 ······</span><span·class="p"·data-group-id="5856366014-4">{</span><span·class="ss">trusted_ca</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DerCert</span><span·class="p">:</span><span·class="p">:</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf"[·...·truncated·by·diffoscope;·len:·166,·SHA:·05a03b46a50f1b31d1151d818920b7c1d009e92ec7e47626859c5274785fb521·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">unknown_ca</span><span·class="p">.</span></code></pre><p>TLS·then·uses·<a·href="../../../../lib/public_key-1.17.1/doc/html/public_key.html#pkix_path_validation/3"><code·class="inline">public_key:pkix_path_validation/3</code></a>·with·the·selected·CA
2575 as·the·trusted·anchor·and·verifies·the·rest·of·the·chain.</p>2575 as·the·trusted·anchor·and·verifies·the·rest·of·the·chain.</p>
2576 ··</section>2576 ··</section>
2577 </section>2577 </section>
2578 <section·class="detail"·id="t:cert_key_conf/0">2578 <section·class="detail"·id="t:cert_key_conf/0">
  
2579 ··<div·class="detail-header">2579 ··<div·class="detail-header">
2580 ····<a·href="#t:cert_key_conf/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">2580 ····<a·href="#t:cert_key_conf/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
Offset 3001, 15 lines modifiedOffset 3001, 15 lines modified
3001 <a·href="#connect/3">connect/3,4</a>·unless·it·is·of·type·<a·href="../../../../lib/kernel-10.2.2/doc/html/inet.html#t:ip_address/0"><code·class="inline">inet:ip_address()</code></a>.3001 <a·href="#connect/3">connect/3,4</a>·unless·it·is·of·type·<a·href="../../../../lib/kernel-10.2.2/doc/html/inet.html#t:ip_address/0"><code·class="inline">inet:ip_address()</code></a>.
3002 The·hostname·will·also·be·used·in·the·hostname·verification·of·the·peer3002 The·hostname·will·also·be·used·in·the·hostname·verification·of·the·peer
3003 certificate·using·<a·href="../../../../lib/public_key-1.17.1/doc/html/public_key.html#pkix_verify_hostname/2"><code·class="inline">public_key:pkix_verify_hostname/2</code></a>.3003 certificate·using·<a·href="../../../../lib/public_key-1.17.1/doc/html/public_key.html#pkix_verify_hostname/2"><code·class="inline">public_key:pkix_verify_hostname/2</code></a>.
3004 The·special·value·<code·class="inline">disable</code>·prevents·the·Server·Name·Indication·extension·from3004 The·special·value·<code·class="inline">disable</code>·prevents·the·Server·Name·Indication·extension·from
3005 being·sent·and·disables·the·hostname·verification·check.</p></li><li><p><strong><code·class="inline">{customize_hostname_check,·HostNameCheckOpts}</code></strong>·-·Customization·option</p><p>Customizes·the·hostname·verification·of·the·peer·certificate,·as·various3005 being·sent·and·disables·the·hostname·verification·check.</p></li><li><p><strong><code·class="inline">{customize_hostname_check,·HostNameCheckOpts}</code></strong>·-·Customization·option</p><p>Customizes·the·hostname·verification·of·the·peer·certificate,·as·various
3006 protocols·that·use·TLS,·such·as·HTTP·or·LDAP,·may·require·different·approaches.·For3006 protocols·that·use·TLS,·such·as·HTTP·or·LDAP,·may·require·different·approaches.·For
3007 example,·here·is·how·to·use·standard·hostname·checking·for·HTTPS·implemented·in3007 example,·here·is·how·to·use·standard·hostname·checking·for·HTTPS·implemented·in
3008 <a·href="../../../../lib/public_key-1.17.1/doc/html/public_key_app.html">Public_Key</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2402899803-1">{</span><span·class="ss">customize_hostname_check</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2402899803-2">[</span><span·class="p"·data-group-id="2402899803-3">{</span><span·class="ss">match_fun</span[·...·truncated·by·diffoscope;·len:·443,·SHA:·58232c7985a0a299e310f67bfbd9d5de652aeaead96498742f0c4edf33988a94·...·]-1">}</span></code></pre><p>For·futher·description·of·the·customize·options,·see3008 <a·href="../../../../lib/public_key-1.17.1/doc/html/public_key_app.html">Public_Key</a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0025882706-1">{</span><span·class="ss">customize_hostname_check</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0025882706-2">[</span><span·class="p"·data-group-id="0025882706-3">{</span><span·class="ss">match_fun</span[·...·truncated·by·diffoscope;·len:·443,·SHA:·c2f01219b219efcfb358855e2e4473f74cbc582c17e0033eac72b3202f664de7·...·]-1">}</span></code></pre><p>For·futher·description·of·the·customize·options,·see
3009 <a·href="../../../../lib/public_key-1.17.1/doc/html/public_key.html#pkix_verify_hostname/3"><code·class="inline">public_key:pkix_verify_hostname/3</code></a>.</p></li><li><p><strong><code·class="inline">{client_certificate_authorities,·UseCertAuth}</code></strong>·-·Inter-op·hint·option</p><p>If·<code·class="inline">UseCertAuth</code>·is·set·to·<code·class="inline">true</code>,·sends·the·certificate·authorities3009 <a·href="../../../../lib/public_key-1.17.1/doc/html/public_key.html#pkix_verify_hostname/3"><code·class="inline">public_key:pkix_verify_hostname/3</code></a>.</p></li><li><p><strong><code·class="inline">{client_certificate_authorities,·UseCertAuth}</code></strong>·-·Inter-op·hint·option</p><p>If·<code·class="inline">UseCertAuth</code>·is·set·to·<code·class="inline">true</code>,·sends·the·certificate·authorities
3010 extension·in·the·TLS-1.3·client·hello.·The·default·is·<code·class="inline">false</code>.·Note3010 extension·in·the·TLS-1.3·client·hello.·The·default·is·<code·class="inline">false</code>.·Note
3011 that·setting·<code·class="inline">UseCertAuth</code>·to·<code·class="inline">true</code>·can·result·in·a·significant3011 that·setting·<code·class="inline">UseCertAuth</code>·to·<code·class="inline">true</code>·can·result·in·a·significant
3012 overhead·if·there·exists·many·trusted·CA·certificates.·(Since3012 overhead·if·there·exists·many·trusted·CA·certificates.·(Since
3013 Erlang/OTP·24.3.)</p></li><li><p><strong><code·class="inline">{stapling,·Stapling}</code></strong>·-·Certificate·revocation·check·option</p><p>If·<code·class="inline">Stapling</code>·is·atom·<code·class="inline">staple</code>·or·a·map,·OCSP·stapling·will·be3013 Erlang/OTP·24.3.)</p></li><li><p><strong><code·class="inline">{stapling,·Stapling}</code></strong>·-·Certificate·revocation·check·option</p><p>If·<code·class="inline">Stapling</code>·is·atom·<code·class="inline">staple</code>·or·a·map,·OCSP·stapling·will·be
3014 enabled,·meaning·that·an·extension·of·type·&quot;status_request&quot;·will·be3014 enabled,·meaning·that·an·extension·of·type·&quot;status_request&quot;·will·be
3015 included·in·the·client·hello·to·indicate·the·desire·to·receive3015 included·in·the·client·hello·to·indicate·the·desire·to·receive
Offset 3139, 25 lines modifiedOffset 3139, 25 lines modified
3139 ··········{early_data,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}·|3139 ··········{early_data,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}·|
3140 ··········{middlebox_comp_mode,·MiddleBoxMode·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()}.</pre>3140 ··········{middlebox_comp_mode,·MiddleBoxMode·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()}.</pre>
  
3141 ······</div>3141 ······</div>
  
3142 <p>Options·only·relevant·for·TLS-1.3.</p><ul><li><p><strong><code·class="inline">{session_tickets,·SessionTickets}</code></strong>·-·Use·of·session·tickets</p><p>Configures·the·session·ticket·functionality.·Allowed·values·are·<code·class="inline">disabled</code>,3142 <p>Options·only·relevant·for·TLS-1.3.</p><ul><li><p><strong><code·class="inline">{session_tickets,·SessionTickets}</code></strong>·-·Use·of·session·tickets</p><p>Configures·the·session·ticket·functionality.·Allowed·values·are·<code·class="inline">disabled</code>,
3143 <code·class="inline">manual</code>,·and·<code·class="inline">auto</code>.·If·it·is·set·to·<code·class="inline">manual</code>·the·client·will·send·the·ticket3143 <code·class="inline">manual</code>,·and·<code·class="inline">auto</code>.·If·it·is·set·to·<code·class="inline">manual</code>·the·client·will·send·the·ticket
3144 information·to·user·process·in·a·3-tuple:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6138214425-1">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">session_ticket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6138214425-2">{</span><span·class="n">SNI</s[·...·truncated·by·diffoscope;·len:·179,·SHA:·9ef73ebbe4ecc6643c55b2949c6c36241700a5e8de6720af5ba1a620593004d8·...·]-1">}</span></code></pre><p>where·<code·class="inline">SNI</code>·is·the·ServerNameIndication·and·<code·class="inline">TicketData</code>·is·the·extended·ticket3144 information·to·user·process·in·a·3-tuple:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6173499573-1">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">session_ticket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6173499573-2">{</span><span·class="n">SNI</s[·...·truncated·by·diffoscope;·len:·179,·SHA:·39e80a118a7e0186aad8d5ff7e4ae54301ed3562c423ef0638b1097c80cca821·...·]-1">}</span></code></pre><p>where·<code·class="inline">SNI</code>·is·the·ServerNameIndication·and·<code·class="inline">TicketData</code>·is·the·extended·ticket
3145 data·that·can·be·used·in·subsequent·session·resumptions.</p><p>If·it·is·set·to·<code·class="inline">auto</code>,·the·client·automatically·handles·received·tickets·and3145 data·that·can·be·used·in·subsequent·session·resumptions.</p><p>If·it·is·set·to·<code·class="inline">auto</code>,·the·client·automatically·handles·received·tickets·and
3146 tries·to·use·them·when·making·new·TLS·connections·(session·resumption·with3146 tries·to·use·them·when·making·new·TLS·connections·(session·resumption·with
3147 pre-shared·keys).</p><p>Ticket·lifetime,·the·number·of·tickets·sent·by·the·server,·and·the3147 pre-shared·keys).</p><p>Ticket·lifetime,·the·number·of·tickets·sent·by·the·server,·and·the
3148 maximum·number·of·tickets·stored·by·the·server·in·stateful·mode·are·configured3148 maximum·number·of·tickets·stored·by·the·server·in·stateful·mode·are·configured
3149 by·<a·href="ssl_app.html#configuration">application·variables</a>.</p><p>See·also3149 by·<a·href="ssl_app.html#configuration">application·variables</a>.</p><p>See·also
3150 <a·href="using_ssl.html#session-tickets-and-session-resumption-in-tls-1-3">SSL·User's·Guide,·Session·Tickets·and·Session·Resumption·in·TLS·1.3</a>.</p></li><li><p><strong><code·class="inline">{use_ticket,·Tickets}</code></strong></p><p>Configures·the·session·tickets·to·be·used·for·session·resumption.·It·is·a3150 <a·href="using_ssl.html#session-tickets-and-session-resumption-in-tls-1-3">SSL·User's·Guide,·Session·Tickets·and·Session·Resumption·in·TLS·1.3</a>.</p></li><li><p><strong><code·class="inline">{use_ticket,·Tickets}</code></strong></p><p>Configures·the·session·tickets·to·be·used·for·session·resumption.·It·is·a
3151 mandatory·option·in·<code·class="inline">manual</code>·mode·(<code·class="inline">{session_tickets,·manual}</code>).</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Session·tickets·are·only·sent·to·the·user·if·option·<code·class="inline">session_tickets</code>·is·set·to3151 mandatory·option·in·<code·class="inline">manual</code>·mode·(<code·class="inline">{session_tickets,·manual}</code>).</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Session·tickets·are·only·sent·to·the·user·if·option·<code·class="inline">session_tickets</code>·is·set·to
3152 <code·class="inline">manual</code></p><p>This·option·is·supported·by·TLS-1.3.·See·also3152 <code·class="inline">manual</code></p><p>This·option·is·supported·by·TLS-1.3.·See·also
3153 <a·href="using_ssl.html#session-tickets-and-session-resumption-in-tls-1-3">SSL·User's·Guide,·Session·Tickets·and·Session·Resumption·in·TLS·1.3</a>.</p></section></li><li><p><strong><code·class="inline">{early_data,·EarlyData}</code></strong></p><p>Configures·the·early·data·to·be·sent·by·the·client.</p><p>To·verify·that·the·server·has·the·intention·to·process·the·early3153 <a·href="using_ssl.html#session-tickets-and-session-resumption-in-tls-1-3">SSL·User's·Guide,·Session·Tickets·and·Session·Resumption·in·TLS·1.3</a>.</p></section></li><li><p><strong><code·class="inline">{early_data,·EarlyData}</code></strong></p><p>Configures·the·early·data·to·be·sent·by·the·client.</p><p>To·verify·that·the·server·has·the·intention·to·process·the·early
3154 data,·the·following·tuple·is·sent·to·the·user·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0757444075-1">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SslSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0757444075-2">{</span><span·class="ss">early_data[·...·truncated·by·diffoscope;·len:·177,·SHA:·4e1798d927a342fad96a5d898e9627b93b7a6c62f781633ab9fd3fe73be76571·...·]5-1">}</span></code></pre><p>where·<code·class="inline">Result</code>·is·either·<code·class="inline">accepted</code>·or·<code·class="inline">rejected</code>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>It·is·the·responsibility·of·the·user·to·handle·rejected·<code·class="inline">EarlyData</code>·and·to3154 data,·the·following·tuple·is·sent·to·the·user·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0646171465-1">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SslSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0646171465-2">{</span><span·class="ss">early_data[·...·truncated·by·diffoscope;·len:·177,·SHA:·094a8c7546c1e64fff74f52176de565f7606eb69036292c30b194f93da8e858f·...·]5-1">}</span></code></pre><p>where·<code·class="inline">Result</code>·is·either·<code·class="inline">accepted</code>·or·<code·class="inline">rejected</code>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>It·is·the·responsibility·of·the·user·to·handle·rejected·<code·class="inline">EarlyData</code>·and·to
3155 resend·when·appropriate.</p></section></li><li><p><strong><code·class="inline">{middlebox_comp_mode,·MiddleBoxMode}</code></strong></p><p>Configures·the·middlebox·compatibility·mode·for·a·TLS-1.3·connection.</p><p>A·significant·number·of·middleboxes·misbehave·when·a·TLS-1.33155 resend·when·appropriate.</p></section></li><li><p><strong><code·class="inline">{middlebox_comp_mode,·MiddleBoxMode}</code></strong></p><p>Configures·the·middlebox·compatibility·mode·for·a·TLS-1.3·connection.</p><p>A·significant·number·of·middleboxes·misbehave·when·a·TLS-1.3
3156 connection·is·negotiated.·Implementations·can·increase·the·chance·of3156 connection·is·negotiated.·Implementations·can·increase·the·chance·of
3157 making·connections·through·those·middleboxes·by·adapting·the·TLS-1.33157 making·connections·through·those·middleboxes·by·adapting·the·TLS-1.3
3158 handshake·to·resemble·that·of·a·TLS-1.2·handshake.</p><p>The·middlebox·compatibility·mode·is·enabled·(<code·class="inline">true</code>)·by·default.</p></li></ul>3158 handshake·to·resemble·that·of·a·TLS-1.2·handshake.</p><p>The·middlebox·compatibility·mode·is·enabled·(<code·class="inline">true</code>)·by·default.</p></li></ul>
3159 ··</section>3159 ··</section>
3160 </section>3160 </section>
  
Offset 3553, 28 lines modifiedOffset 3553, 28 lines modified
3553 and·key·options.·For·examples,·see·the·<a·href="using_ssl.html">User's·Guide</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p><code·class="inline">eddsa</code>·certificates·are·only·supported·by·TLS-1.3·implementations·that·do·not·support·<code·class="inline">dsa</code>3553 and·key·options.·For·examples,·see·the·<a·href="using_ssl.html">User's·Guide</a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p><code·class="inline">eddsa</code>·certificates·are·only·supported·by·TLS-1.3·implementations·that·do·not·support·<code·class="inline">dsa</code>
3554 certificates.·<code·class="inline">rsa_pss_pss</code>·(RSA·certificates·using·Probabilistic·Signature3554 certificates.·<code·class="inline">rsa_pss_pss</code>·(RSA·certificates·using·Probabilistic·Signature
3555 Scheme)·are·supported·in·TLS-1.2·and·TLS-1.3,·but·some·TLS-1.2·implementations3555 Scheme)·are·supported·in·TLS-1.2·and·TLS-1.3,·but·some·TLS-1.2·implementations
3556 do·not·support·<code·class="inline">rsa_pss_pss</code>.</p></section></li><li><p><strong><code·class="inline">{depth,·AllowedCertChainLen}</code></strong>·-·Limits·the·accepted·number·of·certificates·in·the·certificate·chain.</p><p>Maximum·number·of·non-self-issued·intermediate·certificates·that·can·follow·the3556 do·not·support·<code·class="inline">rsa_pss_pss</code>.</p></section></li><li><p><strong><code·class="inline">{depth,·AllowedCertChainLen}</code></strong>·-·Limits·the·accepted·number·of·certificates·in·the·certificate·chain.</p><p>Maximum·number·of·non-self-issued·intermediate·certificates·that·can·follow·the
3557 peer·certificate·in·a·valid·certification·path.·So,·if·depth·is·0·the·PEER·must3557 peer·certificate·in·a·valid·certification·path.·So,·if·depth·is·0·the·PEER·must
3558 be·signed·by·the·trusted·ROOT-CA·directly;·if·1·the·path·can·be·PEER,·CA,3558 be·signed·by·the·trusted·ROOT-CA·directly;·if·1·the·path·can·be·PEER,·CA,
3559 ROOT-CA;·if·2·the·path·can·be·PEER,·CA,·CA,·ROOT-CA,·and·so·on.·The·default3559 ROOT-CA;·if·2·the·path·can·be·PEER,·CA,·CA,·ROOT-CA,·and·so·on.·The·default
3560 value·is·10.·Used·to·mitigate·DoS·attack·possibilities.</p></li><li><p><strong><code·class="inline">{verify_fun,·Verify}</code></strong>·-·Customize·certificate·path·validation</p><p>The·verification·fun·is·to·be·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="0378972236-1">(</span><span·class="n">OtpCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="03789[·...·truncated·by·diffoscope;·len:·58,·SHA:·325e92c1e3776036c71d2591c1bfef70205590d75e157e126c34126d73946a97·...·]-2">}</span><span·class="p">,</span><span·class="w">3560 value·is·10.·Used·to·mitigate·DoS·attack·possibilities.</p></li><li><p><strong><code·class="inline">{verify_fun,·Verify}</code></strong>·-·Customize·certificate·path·validation</p><p>The·verification·fun·is·to·be·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="2298562745-1">(</span><span·class="n">OtpCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="22985[·...·truncated·by·diffoscope;·len:·58,·SHA:·765026a60db185ea3c67cb58d5ee3f8234663728099d91b67cdfde445d175d70·...·]-2">}</span><span·class="p">,</span><span·class="w">
3561 ····</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InitialUserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0378972236-3">(</span><span·class="p"·data-group-id="0378972236-3">)</span><span·class="p"·data-group-id="0378972236-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3561 ····</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InitialUserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="2298562745-3">(</span><span·class="p"·data-group-id="2298562745-3">)</span><span·class="p"·data-group-id="2298562745-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3562 ··</span><span·class="p"·data-group-id="0378972236-4">{</span><span·class="ss">valid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><[·...·truncated·by·diffoscope;·len:·146,·SHA:·ab8f4117a49e0ebac24e146e27222cfa01d503caad9610594a660fc72996000d·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3562 ··</span><span·class="p"·data-group-id="2298562745-4">{</span><span·class="ss">valid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><[·...·truncated·by·diffoscope;·len:·146,·SHA:·12c0dbeea0b52ab0fd7e88558912dc3ca82c2e56da603c20bb63074ee1da440a·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3563 ··</span><span·class="p"·data-group-id="0378972236-6">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span[·...·truncated·by·diffoscope;·len:·661,·SHA:·1735216a20bec2730618fb29b460b6c578de24b15d29ac5fbc5dabbe27c38e19·...·]-8">}</span><span·class="p">.</span><span·class="w">3563 ··</span><span·class="p"·data-group-id="2298562745-6">{</span><span·class="ss">fail</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span[·...·truncated·by·diffoscope;·len:·661,·SHA:·6ef5d6c7e4a341029946707121e6635d4915986fbfe37c9dea9ad85aa229819a·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
3564 </span><span·class="nf">fun</span><span·class="p"·data-group-id="0378972236-10">(</span><span·class="n">OtpCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="0378[·...·truncated·by·diffoscope;·len:·435,·SHA:·1c418c9468dc4f3615bedfa7784510faf1c33cd8835e7a1c7c542b07f561da89·...·]-12">)</span><span·class="p">,</span><span·class="w">3564 </span><span·class="nf">fun</span><span·class="p"·data-group-id="2298562745-10">(</span><span·class="n">OtpCert</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;OTPCertificate&#39;</span><span·class="p"·data-group-id="2298[·...·truncated·by·diffoscope;·len:·435,·SHA:·f6a3054a03cf9fe1cc2eadcb37c2672311467aeab3eff54267a1d454e2b95fa7·...·]-12">)</span><span·class="p">,</span><span·class="w">
3565 ····</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InitialUserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0378972236-13">(</span><span·class="p"·data-group-id="0378972236-13">)</span><span·class="p"·data-group-id="0378972236-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3565 ····</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">InitialUserState</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="2298562745-13">(</span><span·class="p"·data-group-id="2298562745-13">)</span><span·class="p"·data-group-id="2298562745-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 54724/93595 bytes (58.47%) of diff not shown.
22.5 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.7/doc/html/ssl_distribution.html
    
Offset 143, 22 lines modifiedOffset 143, 22 lines modified
143 </h2>143 </h2>
144 <p>Boot·scripts·are·built·using·the·<code·class="inline">systools</code>·utility·in·the·SASL·application.·For144 <p>Boot·scripts·are·built·using·the·<code·class="inline">systools</code>·utility·in·the·SASL·application.·For
145 more·information·on·<code·class="inline">systools</code>,·see·the·SASL·documentation.·This·is·only·an145 more·information·on·<code·class="inline">systools</code>,·see·the·SASL·documentation.·This·is·only·an
146 example·of·what·can·be·done.</p><p>The·simplest·boot·script·possible·includes·only·the·Kernel·and·STDLIB146 example·of·what·can·be·done.</p><p>The·simplest·boot·script·possible·includes·only·the·Kernel·and·STDLIB
147 applications.·Such·a·script·is·located·in·the·<code·class="inline">bin</code>·directory·of·the·Erlang147 applications.·Such·a·script·is·located·in·the·<code·class="inline">bin</code>·directory·of·the·Erlang
148 distribution.·The·source·for·the·script·is·found·under·the·Erlang·installation148 distribution.·The·source·for·the·script·is·found·under·the·Erlang·installation
149 top·directory·under·<code·class="inline">releases/&lt;OTP·version&gt;/start_clean.rel</code>.</p><p>Do·the·following:</p><ul><li>Copy·that·script·to·another·location·(and·preferably·another·name).</li><li>Add·the·applications·Crypto,·Public·Key,·and·SSL·with·their·current·version149 top·directory·under·<code·class="inline">releases/&lt;OTP·version&gt;/start_clean.rel</code>.</p><p>Do·the·following:</p><ul><li>Copy·that·script·to·another·location·(and·preferably·another·name).</li><li>Add·the·applications·Crypto,·Public·Key,·and·SSL·with·their·current·version
150 numbers·after·the·STDLIB·application.</li></ul><p>The·following·shows·an·example·<code·class="inline">.rel</code>·file·with·TLS·added:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="0687443428-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0687443428-2">{</span><span·class="s">&quot;OTP··APN·181·01&quot;</span><span·class="p">,</span><span·class="s">&quot;R15A&q[·...·truncated·by·diffoscope;·len:·319,·SHA:·341e135053680640b8c1f994a3f33b7971562ed4adb3f21213a59afb9c5a2d14·...·]8-3">}</span><span·class="p">,</span><span·class="w">150 numbers·after·the·STDLIB·application.</li></ul><p>The·following·shows·an·example·<code·class="inline">.rel</code>·file·with·TLS·added:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="8991788238-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8991788238-2">{</span><span·class="s">&quot;OTP··APN·181·01&quot;</span><span·class="p">,</span><span·class="s">&quot;R15A&q[·...·truncated·by·diffoscope;·len:·319,·SHA:·0c90f6c28c59615a9c25aca5a898179d2810d1b382dc221117ff3765fa552b08·...·]8-3">}</span><span·class="p">,</span><span·class="w">
151 ······</span><span·class="p"·data-group-id="0687443428-4">[</span><span·class="p"·data-group-id="0687443428-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;2.15&quot;</span><span·class="p"·data-group-id="0687443428-5">}</span><span·class="p">,</span><span·class="w">151 ······</span><span·class="p"·data-group-id="8991788238-4">[</span><span·class="p"·data-group-id="8991788238-5">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="s">&quot;2.15&quot;</span><span·class="p"·data-group-id="8991788238-5">}</span><span·class="p">,</span><span·class="w">
152 ······</span><span·class="p"·data-group-id="0687443428-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;1.18&quot;</span><span·class="p"·data-group-id="0687443428-6">}</span><span·class="p">,</span><span·class="w">152 ······</span><span·class="p"·data-group-id="8991788238-6">{</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="s">&quot;1.18&quot;</span><span·class="p"·data-group-id="8991788238-6">}</span><span·class="p">,</span><span·class="w">
153 ······</span><span·class="p"·data-group-id="0687443428-7">{</span><span·class="ss">crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.0.3&quot;</span><span·class="p"·data-group-id="0687443428-7">}</span><span·class="p">,</span><span·class="w">153 ······</span><span·class="p"·data-group-id="8991788238-7">{</span><span·class="ss">crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2.0.3&quot;</span><span·class="p"·data-group-id="8991788238-7">}</span><span·class="p">,</span><span·class="w">
154 ······</span><span·class="p"·data-group-id="0687443428-8">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;0.12&quot;</span><span·class="p"·data-group-id="0687443428-8">}</span><span·class="p">,</span><span·class="w">154 ······</span><span·class="p"·data-group-id="8991788238-8">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;0.12&quot;</span><span·class="p"·data-group-id="8991788238-8">}</span><span·class="p">,</span><span·class="w">
155 ······</span><span·class="p"·data-group-id="0687443428-9">{</span><span·class="ss">asn1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.0&quot;</span><span·class="p"·data-group-id="0687443428-9">}</span><span·class="p">,</span><span·class="w">155 ······</span><span·class="p"·data-group-id="8991788238-9">{</span><span·class="ss">asn1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;4.0&quot;</span><span·class="p"·data-group-id="8991788238-9">}</span><span·class="p">,</span><span·class="w">
156 ······</span><span·class="p"·data-group-id="0687443428-10">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.0&quot;</span><span·class="p"·data-group-id="0687443428-10">}</span><span·class="w">156 ······</span><span·class="p"·data-group-id="8991788238-10">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;5.0&quot;</span><span·class="p"·data-group-id="8991788238-10">}</span><span·class="w">
157 ······</span><span·class="p"·data-group-id="0687443428-4">]</span><span·class="p"·data-group-id="0687443428-1">}</span><span·class="p">.</span></code></pre><p>The·version·numbers·differ·in·your·system.·Whenever·one·of·the·applications157 ······</span><span·class="p"·data-group-id="8991788238-4">]</span><span·class="p"·data-group-id="8991788238-1">}</span><span·class="p">.</span></code></pre><p>The·version·numbers·differ·in·your·system.·Whenever·one·of·the·applications
158 included·in·the·script·is·upgraded,·change·the·script.</p><p>Do·the·following:</p><ul><li><p>Build·the·boot·script.</p><p>Assuming·the·<code·class="inline">.rel·file</code>·is·stored·in·a·file·<code·class="inline">start_ssl.rel</code>·in·the·current158 included·in·the·script·is·upgraded,·change·the·script.</p><p>Do·the·following:</p><ul><li><p>Build·the·boot·script.</p><p>Assuming·the·<code·class="inline">.rel·file</code>·is·stored·in·a·file·<code·class="inline">start_ssl.rel</code>·in·the·current
159 directory,·a·boot·script·can·be·built·as·follows:</p></li></ul><pre><code·class="text">···1&gt;·systools:make_script(&quot;start_ssl&quot;,[]).</code></pre><p>There·is·now·a·<code·class="inline">start_ssl.boot</code>·file·in·the·current·directory.</p><p>Do·the·following:</p><ul><li>Test·the·boot·script.·To·do·this,·start·Erlang·with·the·<code·class="inline">-boot</code>·command-line159 directory,·a·boot·script·can·be·built·as·follows:</p></li></ul><pre><code·class="text">···1&gt;·systools:make_script(&quot;start_ssl&quot;,[]).</code></pre><p>There·is·now·a·<code·class="inline">start_ssl.boot</code>·file·in·the·current·directory.</p><p>Do·the·following:</p><ul><li>Test·the·boot·script.·To·do·this,·start·Erlang·with·the·<code·class="inline">-boot</code>·command-line
160 parameter·specifying·this·boot·script·(with·its·full·path,·but·without·the160 parameter·specifying·this·boot·script·(with·its·full·path,·but·without·the
161 <code·class="inline">.boot</code>·suffix).·In·UNIX·it·can·look·as·follows:</li></ul><pre><code·class="text">$·erl·-boot·/home/me/ssl/start_ssl161 <code·class="inline">.boot</code>·suffix).·In·UNIX·it·can·look·as·follows:</li></ul><pre><code·class="text">$·erl·-boot·/home/me/ssl/start_ssl
162 Erlang·(BEAM)·emulator·version·5.0162 Erlang·(BEAM)·emulator·version·5.0
  
163 Eshell·V5.0··(abort·with·^G)163 Eshell·V5.0··(abort·with·^G)
Offset 197, 18 lines modifiedOffset 197, 18 lines modified
197 function·body·cannot·be·compiled·when·consulting·a·file.·Also·the·encoding197 function·body·cannot·be·compiled·when·consulting·a·file.·Also·the·encoding
198 of·the·file·can·be·specified·as·defined·by·module·<a·href="../../../../lib/stdlib-6.2/doc/html/epp.html"><code·class="inline">epp</code></a>.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·tamper·with·the·socket·options·<code·class="inline">list</code>,·<code·class="inline">binary</code>,·<code·class="inline">active</code>,·<code·class="inline">packet</code>,198 of·the·file·can·be·specified·as·defined·by·module·<a·href="../../../../lib/stdlib-6.2/doc/html/epp.html"><code·class="inline">epp</code></a>.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·tamper·with·the·socket·options·<code·class="inline">list</code>,·<code·class="inline">binary</code>,·<code·class="inline">active</code>,·<code·class="inline">packet</code>,
199 <code·class="inline">nodelay</code>·and·<code·class="inline">deliver</code>·since·they·are·used·by·the·distribution·protocol·handler199 <code·class="inline">nodelay</code>·and·<code·class="inline">deliver</code>·since·they·are·used·by·the·distribution·protocol·handler
200 itself.·Other·raw·socket·options·such·as·<code·class="inline">packet_size</code>·may·interfere·severely,200 itself.·Other·raw·socket·options·such·as·<code·class="inline">packet_size</code>·may·interfere·severely,
201 so·beware!</p></section><p>For·TLS·to·work,·at·least·a·public·key·and·a·certificate·must·be·specified·for201 so·beware!</p></section><p>For·TLS·to·work,·at·least·a·public·key·and·a·certificate·must·be·specified·for
202 the·server·side·and·the·client·needs·to·specify·CAs·that·it·trusts·(client·certification202 the·server·side·and·the·client·needs·to·specify·CAs·that·it·trusts·(client·certification
203 is·optional·and·requires·more·configuration).</p><p>In·the·following·example·(to·keep·it·simple),·the·PEM·file·<code·class="inline">&quot;/home/me/ssl/erlserver.pem&quot;</code>203 is·optional·and·requires·more·configuration).</p><p>In·the·following·example·(to·keep·it·simple),·the·PEM·file·<code·class="inline">&quot;/home/me/ssl/erlserver.pem&quot;</code>
204 contains·both·the·server·certificate·and·its·private·key·.</p><p>Create·a·file·named·for·example·<code·class="inline">&quot;/home/me/ssl/ssl_test@myhost.conf&quot;</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9767696172-1">[</span><span·class="p"·data-group-id="9767696172-2">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">204 contains·both·the·server·certificate·and·its·private·key·.</p><p>Create·a·file·named·for·example·<code·class="inline">&quot;/home/me/ssl/ssl_test@myhost.conf&quot;</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9613330522-1">[</span><span·class="p"·data-group-id="9613330522-2">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="9767696172-3">[</span><span·class="p"·data-group-id="9767696172-4">{</span><span·class="ss">certfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/me/ssl/erlserver.pem&quot;</span><span·class="p"·data-group-id="9767696172[·...·truncated·by·diffoscope;·len:·105,·SHA:·563d7cb38c67c5228ab1879ce63042c6e38b871ff7741044c4bec2e101d07d87·...·]2-2">}</span><span·class="p">,</span><span·class="w">205 ··</span><span·class="p"·data-group-id="9613330522-3">[</span><span·class="p"·data-group-id="9613330522-4">{</span><span·class="ss">certfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/me/ssl/erlserver.pem&quot;</span><span·class="p"·data-group-id="9613330522[·...·truncated·by·diffoscope;·len:·105,·SHA:·3eedb27b994a20fcb20f30f0f687f49838867efde408e15499727feb0bc6ce41·...·]2-2">}</span><span·class="p">,</span><span·class="w">
206 ·</span><span·class="p"·data-group-id="9767696172-5">{</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">206 ·</span><span·class="p"·data-group-id="9613330522-5">{</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">
207 ··</span><span·class="p"·data-group-id="9767696172-6">[</span><span·class="p"·data-group-id="9767696172-7">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/me/ssl/client_trusted.pem&quot;</span><span·class="p"·data-group-id="976[·...·truncated·by·diffoscope;·len:·165,·SHA:·2feea583f77c101afe9791c6d082bc6d10d4073972758630f508ab5fa28694bb·...·]2-1">]</span><span·class="p">.</span></code></pre><p>And·then·start·the·node·like·this·(line·breaks·in·the·command·are·for207 ··</span><span·class="p"·data-group-id="9613330522-6">[</span><span·class="p"·data-group-id="9613330522-7">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/home/me/ssl/client_trusted.pem&quot;</span><span·class="p"·data-group-id="961[·...·truncated·by·diffoscope;·len:·165,·SHA:·053f26fa581fda61ea74b8543fb7263b49c1ba3be074cf0557cf4972c7bb5983·...·]2-1">]</span><span·class="p">.</span></code></pre><p>And·then·start·the·node·like·this·(line·breaks·in·the·command·are·for
208 readability,·and·shall·not·be·there·when·typed):</p><pre><code·class="text">$·erl·-boot·/home/me/ssl/start_ssl·-proto_dist·inet_tls208 readability,·and·shall·not·be·there·when·typed):</p><pre><code·class="text">$·erl·-boot·/home/me/ssl/start_ssl·-proto_dist·inet_tls
209 ··-ssl_dist_optfile·&quot;/home/me/ssl/ssl_test@myhost.conf&quot;209 ··-ssl_dist_optfile·&quot;/home/me/ssl/ssl_test@myhost.conf&quot;
210 ··-sname·ssl_test</code></pre><p>The·options·in·the·<code·class="inline">{server,·Opts}</code>·tuple·are·used·when·calling210 ··-sname·ssl_test</code></pre><p>The·options·in·the·<code·class="inline">{server,·Opts}</code>·tuple·are·used·when·calling
211 <a·href="ssl.html#handshake/3"><code·class="inline">ssl:handshake/3</code></a>,·and·the·options·in·the·<code·class="inline">{client,·Opts}</code>·tuple·are·used·when211 <a·href="ssl.html#handshake/3"><code·class="inline">ssl:handshake/3</code></a>,·and·the·options·in·the·<code·class="inline">{client,·Opts}</code>·tuple·are·used·when
212 calling·<a·href="ssl.html#connect/4"><code·class="inline">ssl:connect/4</code></a>.</p><p>For·the·client,·the·option·<code·class="inline">{server_name_indication,·atom_to_list(TargetNode)}</code>212 calling·<a·href="ssl.html#connect/4"><code·class="inline">ssl:connect/4</code></a>.</p><p>For·the·client,·the·option·<code·class="inline">{server_name_indication,·atom_to_list(TargetNode)}</code>
213 is·added·when·connecting.·This·makes·it·possible·to·use·the·client·option213 is·added·when·connecting.·This·makes·it·possible·to·use·the·client·option
214 <code·class="inline">{verify,·verify_peer}</code>,·and·the·client·will·verify·that·the·certificate·matches214 <code·class="inline">{verify,·verify_peer}</code>,·and·the·client·will·verify·that·the·certificate·matches
Offset 270, 27 lines modifiedOffset 270, 27 lines modified
270 in·that·variable·and·are·then·interpreted·as·command-line·arguments·for·all270 in·that·variable·and·are·then·interpreted·as·command-line·arguments·for·all
271 subsequent·invocations·of·Erlang.</p><p>In·a·Unix·(Bourne)·shell,·it·can·look·as·follows·(line·breaks·are·for271 subsequent·invocations·of·Erlang.</p><p>In·a·Unix·(Bourne)·shell,·it·can·look·as·follows·(line·breaks·are·for
272 readability,·they·are·not·to·be·there·when·typed):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="n">ERL_FLAGS</span><span·class="o">=</span><span·class="s">&quot;-boot·/home/me/ssl/start_ssl·-proto_dist·inet_tls272 readability,·they·are·not·to·be·there·when·typed):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="n">ERL_FLAGS</span><span·class="o">=</span><span·class="s">&quot;-boot·/home/me/ssl/start_ssl·-proto_dist·inet_tls
273 ··-ssl_dist_opt·server_certfile·/home/me/ssl/erlserver.pem273 ··-ssl_dist_opt·server_certfile·/home/me/ssl/erlserver.pem
274 ··-ssl_dist_opt·server_secure_renegotiate·true·client_secure_renegotiate·true&quot;</span><span·class="w">274 ··-ssl_dist_opt·server_secure_renegotiate·true·client_secure_renegotiate·true&quot;</span><span·class="w">
275 </span><span·class="sc">$·</span><span·class="ss">export</span><span·class="w">·</span><span·class="n">ERL_FLAGS</span><span·class="w">275 </span><span·class="sc">$·</span><span·class="ss">export</span><span·class="w">·</span><span·class="n">ERL_FLAGS</span><span·class="w">
276 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">sname</span><span·class="w">·</span><span·class="ss">ssl_test</span><span·class="w">276 </span><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">sname</span><span·class="w">·</span><span·class="ss">ssl_test</span><span·class="w">
277 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="2524845333-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="2524845333-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·156,·SHA:·cc7ff501af69275dad03c1cf53c8d95b822d7005984595e1aad1f05a2cb76e24·...·]-2">]</span><span·class="w">277 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="9687995345-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="9687995345-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·156,·SHA:·221e147687a839baef86c4a03ce72e38160bef348e8145bfd401569eaf9c60e9·...·]-2">]</span><span·class="w">
  
278 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="2524845333-3">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="2524845333-3">)</span><span·class="gp·unselectable">278 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">··</span><span·class="p"·data-group-id="9687995345-3">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="9687995345-3">)</span><span·class="gp·unselectable">
279 (ssl_test@myhost)1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_arguments</span><span·class="p"·data-group-id="2524845333-4">(</span><span·class="p"·data-group-id="2524845333-4">)</span><span·class="p">.</span><span·class="w">279 (ssl_test@myhost)1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_arguments</span><span·class="p"·data-group-id="9687995345-4">(</span><span·class="p"·data-group-id="9687995345-4">)</span><span·class="p">.</span><span·class="w">
280 </span><span·class="p"·data-group-id="2524845333-5">[</span><span·class="p"·data-group-id="2524845333-6">{</span><span·class="ss">root</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-7">[</span><span·class="s">&quot;/usr/local/erlang&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·432ff5e66ae63fe5c4288b65009d4be6edd4a164ffaba319638aecfcd293e819·...·]-6">}</span><span·class="p">,</span><span·class="w">280 </span><span·class="p"·data-group-id="9687995345-5">[</span><span·class="p"·data-group-id="9687995345-6">{</span><span·class="ss">root</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-7">[</span><span·class="s">&quot;/usr/local/erlang&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·57dc64c8a89974ca7adec5c106033b1a81debd8a076bc06c2c4f4edc3f57a4bc·...·]-6">}</span><span·class="p">,</span><span·class="w">
281 ·</span><span·class="p"·data-group-id="2524845333-8">{</span><span·class="ss">progname</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-9">[</span><span·class="s">&quot;erl·&quot;</span><span·class="p"·data-group-id="2524845333-9">]</span><span·class="p"·data-group-id="25[·...·truncated·by·diffoscope;·len:·8,·SHA:·ea1734d057abcc33e6cce2a2742eb3b5035b8dc8ace483c06aded1b0517afe80·...·]-8">}</span><span·class="p">,</span><span·class="w">281 ·</span><span·class="p"·data-group-id="9687995345-8">{</span><span·class="ss">progname</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-9">[</span><span·class="s">&quot;erl·&quot;</span><span·class="p"·data-group-id="9687995345-9">]</span><span·class="p"·data-group-id="96[·...·truncated·by·diffoscope;·len:·8,·SHA:·30d600ed9e62fa75c3ef394d9c0bd04a84e9137b1c2f4c901b7e549267ee8268·...·]-8">}</span><span·class="p">,</span><span·class="w">
282 ·</span><span·class="p"·data-group-id="2524845333-10">{</span><span·class="ss">sname</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-11">[</span><span·class="s">&quot;ssl_test&quot;</span><span·class="p"·data-group-id="2524845333-11">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·a294b3ae67d159ba50862ccb16d25c50844654b6c805d248f62928f9d9bac4e0·...·]-10">}</span><span·class="p">,</span><span·class="w">282 ·</span><span·class="p"·data-group-id="9687995345-10">{</span><span·class="ss">sname</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-11">[</span><span·class="s">&quot;ssl_test&quot;</span><span·class="p"·data-group-id="9687995345-11">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·909b72e86ae056564624e9a8acaa936f26d183ab0b5753b0471163de1d5c8d92·...·]-10">}</span><span·class="p">,</span><span·class="w">
283 ·</span><span·class="p"·data-group-id="2524845333-12">{</span><span·class="ss">boot</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-13">[</span><span·class="s">&quot;/home/me/ssl/start_ssl&quot;</span><span·class="p"·data-group-id="2524845333-13">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·535ec20e3ddd32e3ddda3f5bacee5f71b79b5ff6cdb839840ac0ddd65a2d31db·...·]-12">}</span><span·class="p">,</span><span·class="w">283 ·</span><span·class="p"·data-group-id="9687995345-12">{</span><span·class="ss">boot</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-13">[</span><span·class="s">&quot;/home/me/ssl/start_ssl&quot;</span><span·class="p"·data-group-id="9687995345-13">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·58d4ba4655142a4b0958018a8d56c939aa9a3f888e5cf800906b82f64283e1f4·...·]-12">}</span><span·class="p">,</span><span·class="w">
284 ·</span><span·class="p"·data-group-id="2524845333-14">{</span><span·class="ss">proto_dist</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-15">[</span><span·class="s">&quot;inet_tls&quot;</span><span·class="p"·data-group-id="2524845333-15">]</span><span·class="p"·data-group-id="2524845333-14">}</span><span·class="p">,</span><span·class="w"> 
285 ·</span><span·class="p"·data-group-id="2524845333-16">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-17">[</span><span·class="s">&quot;server_certfile&quot;</span><span·class="p">,</span><span·class="s">&quot;/home/me/ssl/erlserver.[·...·truncated·by·diffoscope;·len:·114,·SHA:·3b0076f4f93007150c34e3566a13bd089784be76b2b632a11dc8c7d4935d0e64·...·]">}</span><span·class="p">,</span><span·class="w">284 ·</span><span·class="p"·data-group-id="9687995345-14">{</span><span·class="ss">proto_dist</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-15">[</span><span·class="s">&quot;inet_tls&quot;</span><span·class="p"·data-group-id="9687995345-15">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·20,·SHA:·e7d82edd3fa4b70f8effc775c58793f5c02952dcced68dec296cd80a092c1840·...·]">}</span><span·class="p">,</span><span·class="w">
 285 ·</span><span·class="p"·data-group-id="9687995345-16">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-17">[</span><span·class="s">&quot;server_certfile&quot;</span><span·class="p">,</span><span·class="s">&quot;/home/me/ssl/erlserver.pem&quot;</span><span·class="p"·data-group-id="9687995345-17">]</span><span·class="p"·data-group-id="9687995345-16">}</span><span·class="p">,</span><span·class="w">
286 ·</span><span·class="p"·data-group-id="2524845333-18">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-19">[</span><span·class="s">&quot;server_secure_renegotiate&quot;</span><span·class="p">,</span><span·class="s">&quot;true&quot;</span><span·class="p">,</span><span·class="w">286 ·</span><span·class="p"·data-group-id="9687995345-18">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-19">[</span><span·class="s">&quot;server_secure_renegotiate&quot;</span><span·class="p">,</span><span·class="s">&quot;true&quot;</span><span·class="p">,</span><span·class="w">
287 ················</span><span·class="s">&quot;client_secure_renegotiate&quot;</span><span·class="p">,</span><span·class="s">&quot;true&quot;</span><span·class="p"·data-group-id="2524845333-19">]</span><span·class="w">287 ················</span><span·class="s">&quot;client_secure_renegotiate&quot;</span><span·class="p">,</span><span·class="s">&quot;true&quot;</span><span·class="p"·data-group-id="9687995345-19">]</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="2524845333-20">{</span><span·class="ss">home</span><span·class="p">,</span><span·class="p"·data-group-id="2524845333-21">[</span><span·class="s">&quot;/home/me&quot;</span><span·class="p"·data-group-id="2524845333-21">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·cfe828a09d3c944d3193f1512786b845c04ed853667b64aa36617975b0d4c20d·...·]-20">}</span><span·class="p">]</span></code></pre><p>The·<code·class="inline">init:get_arguments()</code>·call·verifies·that·the·correct·arguments·are·supplied288 ·</span><span·class="p"·data-group-id="9687995345-20">{</span><span·class="ss">home</span><span·class="p">,</span><span·class="p"·data-group-id="9687995345-21">[</span><span·class="s">&quot;/home/me&quot;</span><span·class="p"·data-group-id="9687995345-21">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·0b3da39d110e11141961ccd5599a904387e646dcefa09beafe65c085ae1044f0·...·]-20">}</span><span·class="p">]</span></code></pre><p>The·<code·class="inline">init:get_arguments()</code>·call·verifies·that·the·correct·arguments·are·supplied
289 to·the·emulator.</p>289 to·the·emulator.</p>
290 </div>290 </div>
  
291 <div·class="bottom-actions"·id="bottom-actions">291 <div·class="bottom-actions"·id="bottom-actions">
292 ··<div·class="bottom-actions-item">292 ··<div·class="bottom-actions-item">
  
293 ······<a·href="using_ssl.html"·class="bottom-actions-button"·rel="prev">293 ······<a·href="using_ssl.html"·class="bottom-actions-button"·rel="prev">
300 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.7/doc/html/using_ssl.html
    
Offset 145, 113 lines modifiedOffset 145, 113 lines modified
145 examples,·are·provided·using·the·<a·href="ssl.html#t:cert_key_conf/0"><code·class="inline">ssl:cert_key_conf/0</code></a>·supplied·in·the·<code·class="inline">certs_keys</code>145 examples,·are·provided·using·the·<a·href="ssl.html#t:cert_key_conf/0"><code·class="inline">ssl:cert_key_conf/0</code></a>·supplied·in·the·<code·class="inline">certs_keys</code>
146 introduced·in·OTP·25.</p></section><h2·id="basic-client"·class="section-heading">146 introduced·in·OTP·25.</p></section><h2·id="basic-client"·class="section-heading">
147 ··<a·href="#basic-client"·class="hover-link">147 ··<a·href="#basic-client"·class="hover-link">
148 ····<i·class="ri-link-m"·aria-hidden="true"></i>148 ····<i·class="ri-link-m"·aria-hidden="true"></i>
149 ··</a>149 ··</a>
150 ··<span·class="text">Basic·Client</span>150 ··<span·class="text">Basic·Client</span>
151 </h2>151 </h2>
152 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9702103098-1">(</span><span·class="p"·data-group-id="9702103098-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="9702103098-2">(</spa[·...·truncated·by·diffoscope;·len:·430,·SHA:·6f25fbba767e0caf109cdeffc2eca0cdfc8077605d2a6004e6f4d3ea90c60d4c·...·]-4">}</span><span·class="p">,</span><span·class="w">152 <pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7452527633-1">(</span><span·class="p"·data-group-id="7452527633-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="7452527633-2">(</spa[·...·truncated·by·diffoscope;·len:·430,·SHA:·57855303c280487468ae62a8c6a5a019f13ed22032e7ec108b1affc23d5399d1·...·]-4">}</span><span·class="p">,</span><span·class="w">
153 ·················································</span><span·class="p"·data-group-id="9702103098-5">{</span><span·class="ss">cacerts</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf">cacerts_get</span><span·class="p"·data-group-id="9702103098-6">(</span><span·cla[·...·truncated·by·diffoscope;·len:·191,·SHA:·77d584c19ca3adce32df3cadb83813726c351c6c2ec9a425acc4ed64402b86e4·...·]-2">)</span><span·class="p">.</span><span·class="w">153 ·················································</span><span·class="p"·data-group-id="7452527633-5">{</span><span·class="ss">cacerts</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf">cacerts_get</span><span·class="p"·data-group-id="7452527633-6">(</span><span·cla[·...·truncated·by·diffoscope;·len:·191,·SHA:·b216917f684e9ba79cad187e7530163a2579d67acdcaf683c246ce3a60489243·...·]-2">)</span><span·class="p">.</span><span·class="w">
154 ···</span><span·class="p"·data-group-id="9702103098-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9702103098-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9702103098-9">[</sp[·...·truncated·by·diffoscope;·len:·222,·SHA:·6446ed59d34425e1b2ae8db38efc7bb71813b31b0d3c93d038bf9fee9946badf·...·]-7">}</span></code></pre><h2·id="basic-connection"·class="section-heading">154 ···</span><span·class="p"·data-group-id="7452527633-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7452527633-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7452527633-9">[</sp[·...·truncated·by·diffoscope;·len:·222,·SHA:·5c490687274192667a93c1b50185d86120cfb397cc091a26d3c37c57654b9647·...·]-7">}</span></code></pre><h2·id="basic-connection"·class="section-heading">
155 ··<a·href="#basic-connection"·class="hover-link">155 ··<a·href="#basic-connection"·class="hover-link">
156 ····<i·class="ri-link-m"·aria-hidden="true"></i>156 ····<i·class="ri-link-m"·aria-hidden="true"></i>
157 ··</a>157 ··</a>
158 ··<span·class="text">Basic·Connection</span>158 ··<span·class="text">Basic·Connection</span>
159 </h2>159 </h2>
160 <p><em>Step·1:</em>·Start·the·server·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1416656894-1">(</span><span·class="p"·data-group-id="1416656894-1">)</span><span·class="p">.</span><span·class="w">160 <p><em>Step·1:</em>·Start·the·server·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3122555897-1">(</span><span·class="p"·data-group-id="3122555897-1">)</span><span·class="p">.</span><span·class="w">
161 </span><span·class="ss">ok</span></code></pre><p><em>Step·2:</em>·with·alternative·certificates,·in·this·example·the·EDDSA·certificate161 </span><span·class="ss">ok</span></code></pre><p><em>Step·2:</em>·with·alternative·certificates,·in·this·example·the·EDDSA·certificate
162 will·be·preferred·if·TLS-1.3·is·negotiated·and·the·RSA·certificate·will·always162 will·be·preferred·if·TLS-1.3·is·negotiated·and·the·RSA·certificate·will·always
163 be·used·for·TLS-1.2·as·it·does·not·support·the·EDDSA·algorithm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6387994466-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="6387994466-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">163 be·used·for·TLS-1.2·as·it·does·not·support·the·EDDSA·algorithm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8478269664-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="8478269664-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
164 </span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="6387994466-2">(</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6387994466-3">[</span><span·class="p"·data-group-id="6387994466-4">{</span><span·class="ss">certs_keys</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·124,·SHA:·2823641a8ce6e7dd6634e5dd81c2f34a6547e190f4d097ef10de311c6ee7d319·...·]-6">#{</span><span·class="ss">certfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;eddsacert.pem&quot;</span><span·class="p">,</span><span·class="w">164 </span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">listen</span><span·class="p"·data-group-id="8478269664-2">(</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8478269664-3">[</span><span·class="p"·data-group-id="8478269664-4">{</span><span·class="ss">certs_keys</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·124,·SHA:·21eb894cfbfa0f2716147beacdf74772e5001f6a63f4354de2667096358da92a·...·]-6">#{</span><span·class="ss">certfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;eddsacert.pem&quot;</span><span·class="p">,</span><span·class="w">
165 ··································</span><span·class="ss">keyfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;eddsakey.pem&quot;</span><span·class="p"·data-group-id="6387994466-6">}</span><span·class="p">,</span><span·class="w">165 ··································</span><span·class="ss">keyfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;eddsakey.pem&quot;</span><span·class="p"·data-group-id="8478269664-6">}</span><span·class="p">,</span><span·class="w">
166 ································</span><span·class="p"·data-group-id="6387994466-7">#{</span><span·class="ss">certfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;rsacert.pem&quot;</span><span·class="p">,</span><span·class="w">166 ································</span><span·class="p"·data-group-id="8478269664-7">#{</span><span·class="ss">certfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;rsacert.pem&quot;</span><span·class="p">,</span><span·class="w">
167 ··································</span><span·class="ss">keyfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;rsakey.pem&quot;</span><span·class="p">,</span><span·class="w">167 ··································</span><span·class="ss">keyfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;rsakey.pem&quot;</span><span·class="p">,</span><span·class="w">
168 ··································</span><span·class="ss">password</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;foobar&quot;</span><span·class="p"·data-group-id="6387994466-7">}</span><span·class="w">168 ··································</span><span·class="ss">password</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;foobar&quot;</span><span·class="p"·data-group-id="8478269664-7">}</span><span·class="w">
169 ·······························</span><span·class="p"·data-group-id="6387994466-5">]</span><span·class="p"·data-group-id="6387994466-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="6387994466-8">{</span><span·class="ss">reuseaddr</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="6387994466-8">}</span><span·class="p"·data-group-id="6387994466-3">]</span><span·class="p"·data-group-id="6387994466-2">)</span><span·class="p">.</span><span·class="w"> 
170 </span><span·class="p"·data-group-id="6387994466-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6387994466-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6387994466-11">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6387994466-11">]</span><span·class="p"·data-group-id="6387994466-10">}</span><span·class="p"·data-group-id="6387994466-9">}</span></code></pre><p><em>Step·3:</em>·Do·a·transport·accept·on·the·TLS·listen·socket:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">3</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0513050901-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TLSTransportSocket</span><span·class="p"·data-group-id="0513050901-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">transport_accept</span><span·class="p"·data-group-id="0513050901-2">(</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="0513050901-2">)</span><span·class="p">.</span><span·class="w"> 
171 </span><span·class="p"·data-group-id="0513050901-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0513050901-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·453,·SHA:·5ecd3f554f2b26c204c98d35268c408287ddb896e424e8604fdb289a129a999f·...·]169 ·······························</span><span·class="p"·data-group-id="8478269664-5">]</span><span·class="p"·data-group-id="8478269664-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="8478269664-8">{</span><span·class="ss">reuseaddr</span><s[·...·truncated·by·diffoscope;·len:·273,·SHA:·a8ca61f832a19d396ec68deecd320e32a41343d7de327a6ea48d0064c44f7aaa·...·]
 170 </span><span·class="p"·data-group-id="8478269664-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8478269664-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8478269664-11">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8478269664-11">]</span><span·class="p"·data-group-id="8478269664-10">}</span><span·class="p"·data-group-id="8478269664-9">}</span></code></pre><p><em>Step·3:</em>·Do·a·transport·accept·on·the·TLS·listen·socket:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">3</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6473717159-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TLSTransportSocket</span><span·class="p"·data-group-id="6473717159-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">transport_accept</span><span·class="p"·data-group-id="6473717159-2">(</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="6473717159-2">)</span><span·class="p">.</span><span·class="w">
 171 </span><span·class="p"·data-group-id="6473717159-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6473717159-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6473717159-5">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6473717159-5">]</span><span·class="p"·data-group-id="6473717159-4">}</span><span·class="p"·data-group-id="6473717159-3">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>ssl:transport_accept/1·and·ssl:handshake/2·are·separate·functions·so·that·the
172 handshake·part·can·be·called·in·a·new·erlang·process·dedicated·to·handling·the172 handshake·part·can·be·called·in·a·new·erlang·process·dedicated·to·handling·the
173 connection</p></section><p><em>Step·4:</em>·Start·the·client·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8274631074-1">(</span><span·class="p"·data-group-id="8274631074-1">)</span><span·class="p">.</span><span·class="w">173 connection</p></section><p><em>Step·4:</em>·Start·the·client·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9878286789-1">(</span><span·class="p"·data-group-id="9878286789-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="ss">ok</span></code></pre><p>Be·sure·to·configure·trusted·certificates·to·use·for·server·certificate174 </span><span·class="ss">ok</span></code></pre><p>Be·sure·to·configure·trusted·certificates·to·use·for·server·certificate
175 verification.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9085591639-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Socket</span><span·class="p"·data-group-id="9085591639-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·117,·SHA:·49383d3bd09162f72c3b7371fb93eff490c8aa17abf839fe6c2c535fe3ed8221·...·]-2">(</span><span·class="s">&quot;localhost&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">175 verification.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2478167702-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Socket</span><span·class="p"·data-group-id="2478167702-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·117,·SHA:·a15332706048a5eefa9f0002a9ec38dd14fca50167dcf615e232c1b57bbcd608·...·]-2">(</span><span·class="s">&quot;localhost&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">
176 ······</span><span·class="p"·data-group-id="9085591639-3">[</span><span·class="p"·data-group-id="9085591639-4">{</span><span·class="ss">verify</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">verify_peer</span><span·class="p"·data-group-id="9085591639-4">}</span><span·class="p">,</span><span·class="w">176 ······</span><span·class="p"·data-group-id="2478167702-3">[</span><span·class="p"·data-group-id="2478167702-4">{</span><span·class="ss">verify</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">verify_peer</span><span·class="p"·data-group-id="2478167702-4">}</span><span·class="p">,</span><span·class="w">
177 ······</span><span·class="p"·data-group-id="9085591639-5">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cacerts.pem&quot;</span><span·class="p"·data-group-id="9085591639-5">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·381,·SHA:·ef6b4ef55adb9a0c443bc374e282ceaedff68f8d746a702420091bdb71ea705c·...·]-2">)</span><span·class="p">.</span><span·class="w">177 ······</span><span·class="p"·data-group-id="2478167702-5">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cacerts.pem&quot;</span><span·class="p"·data-group-id="2478167702-5">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·381,·SHA:·9c783d61113102405593fec2dea3e4f1f1d1a1a48e85116f0a4df8bfc4929d76·...·]-2">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="9085591639-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9085591639-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9085591639-9">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9085591639-9">]</span><span·class="p"·data-group-id="9085591639-8">}</span><span·class="p"·data-group-id="9085591639-7">}</span></code></pre><p><em>Step·5:</em>·Do·the·TLS·handshake:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">4</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4778675832-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Socket</span><span·class="p"·data-group-id="4778675832-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">handshake</span><span·class="p"·data-group-id="4778675832-2">(</span><span·class="n">TLSTransportSocket</span><span·class="p"·data-group-id="4778675832-2">)</span><span·class="p">.</span><span·class="w"> 
179 </span><span·class="p"·data-group-id="4778675832-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4778675832-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4778675832-5">[</sp[·...·truncated·by·diffoscope;·len:·410,·SHA:·44a6b4bca3891530ad60f9987a37ce1873d8ef725f63eb47cd8679a03844c3d5·...·]178 </span><span·class="p"·data-group-id="2478167702-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2478167702-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2478167702-9">[</sp[·...·truncated·by·diffoscope;·len:·1022,·SHA:·11a9b306a7f65d805bc364b4b0429fa2254800b35ff46b492c2099d2bf4f08e2·...·]
 179 </span><span·class="p"·data-group-id="6470821029-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6470821029-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6470821029-5">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6470821029-5">]</span><span·class="p"·data-group-id="6470821029-4">}</span><span·class="p"·data-group-id="6470821029-3">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>A·real·server·should·use·ssl:handshake/2·that·has·a·timeout·to·avoid·DoS
180 attacks.·In·the·example·the·timeout·defaults·to·infinty.</p></section><p><em>Step·6:</em>·Send·a·message·over·TLS:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="6130859009-1">(</span><span·class="n">Socket</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="6130859009-1">)</span><span·class="p">.</span><span·class="w">180 attacks.·In·the·example·the·timeout·defaults·to·infinty.</p></section><p><em>Step·6:</em>·Send·a·message·over·TLS:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="3139389875-1">(</span><span·class="n">Socket</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="3139389875-1">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="ss">ok</span></code></pre><p><em>Step·7:</em>·Flush·the·shell·message·queue·to·see·that·the·message·sent·on·the181 </span><span·class="ss">ok</span></code></pre><p><em>Step·7:</em>·Flush·the·shell·message·queue·to·see·that·the·message·sent·on·the
182 server·side·is·recived·by·the·client·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">3</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">flush</span><span·class="p"·data-group-id="9834696426-1">(</span><span·class="p"·data-group-id="9834696426-1">)</span><span·class="p">.</span><span·class="w">182 server·side·is·recived·by·the·client·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">3</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">flush</span><span·class="p"·data-group-id="9348569710-1">(</span><span·class="p"·data-group-id="9348569710-1">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="9834696426-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="9834696426-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="9834696426-4">[</span><span·class="p">.</sp[·...·truncated·by·diffoscope;·len:·260,·SHA:·9803c413db7bc1ea7734e119de9213759227ad53dae4b977ed773cefa86e5b9a·...·]-2">}</span><span·class="w">183 </span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="9348569710-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="9348569710-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="9348569710-4">[</span><span·class="p">.</sp[·...·truncated·by·diffoscope;·len:·260,·SHA:·18e92f923664f512ab5b83a5137490d169adf6e0004c2d10b767c52d338b1ef0·...·]-2">}</span><span·class="w">
184 </span><span·class="ss">ok</span></code></pre><h2·id="upgrade-example-tls-only"·class="section-heading">184 </span><span·class="ss">ok</span></code></pre><h2·id="upgrade-example-tls-only"·class="section-heading">
185 ··<a·href="#upgrade-example-tls-only"·class="hover-link">185 ··<a·href="#upgrade-example-tls-only"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">Upgrade·Example·-·TLS·only</span>188 ··<span·class="text">Upgrade·Example·-·TLS·only</span>
189 </h2>189 </h2>
190 <p>Upgrading·a·a·TCP/IP·connection·to·a·TLS·connections·is·mostly·used·when·there190 <p>Upgrading·a·a·TCP/IP·connection·to·a·TLS·connections·is·mostly·used·when·there
191 is·a·desire·have·unencrypted·communication·first·and·then·later·secure·the191 is·a·desire·have·unencrypted·communication·first·and·then·later·secure·the
192 communication·channel·by·using·TLS.·Note·that·the·client·and·server·need·to192 communication·channel·by·using·TLS.·Note·that·the·client·and·server·need·to
193 agree·to·do·the·upgrade·in·the·protocol·doing·the·communication.·This·is·concept193 agree·to·do·the·upgrade·in·the·protocol·doing·the·communication.·This·is·concept
194 is·often·referenced·as·<code·class="inline">STARTLS</code>·and·used·in·many·protocols·such·as·<code·class="inline">SMTP</code>,194 is·often·referenced·as·<code·class="inline">STARTLS</code>·and·used·in·many·protocols·such·as·<code·class="inline">SMTP</code>,
195 <code·class="inline">FTPS</code>·and·<code·class="inline">HTTPS</code>·via·a·proxy.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Maximum·security·recommendations·are·however·moving·away·from·such·solutions.</p></section><p>To·upgrade·to·a·TLS·connection:</p><p><em>Step·1:</em>·Start·the·server·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="1541478287-1">(</span><span·class="p"·data-group-id="1541478287-1">)</span><span·class="p">.</span><span·class="w">195 <code·class="inline">FTPS</code>·and·<code·class="inline">HTTPS</code>·via·a·proxy.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Maximum·security·recommendations·are·however·moving·away·from·such·solutions.</p></section><p>To·upgrade·to·a·TLS·connection:</p><p><em>Step·1:</em>·Start·the·server·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="6115033156-1">(</span><span·class="p"·data-group-id="6115033156-1">)</span><span·class="p">.</span><span·class="w">
196 ··</span><span·class="ss">ok</span></code></pre><p><em>Step·2:</em>·Create·a·normal·TCP·listen·socket·and·ensure·<code·class="inline">active</code>·is·set·to196 ··</span><span·class="ss">ok</span></code></pre><p><em>Step·2:</em>·Create·a·normal·TCP·listen·socket·and·ensure·<code·class="inline">active</code>·is·set·to
197 <code·class="inline">false</code>·and·not·set·to·any·active·mode·otherwise·TLS·handshake·messages·can·be197 <code·class="inline">false</code>·and·not·set·to·any·active·mode·otherwise·TLS·handshake·messages·can·be
198 delivered·to·the·wrong·process.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3363767404-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="3363767404-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·470,·SHA:·f5eef31b79165e683f864619432ac3a8f4c04fc8e38587f5ef1e536369010714·...·]-4">}</span><span·class="p">,</span><span·class="w">198 delivered·to·the·wrong·process.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8035729929-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="8035729929-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·470,·SHA:·57b58992b006b7eab9f65c40d90c2967ee798592f44ab8a9cf8071c9e76d6e27·...·]-4">}</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="p"·data-group-id="3363767404-5">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="3363767404-5">}</span><span·class="p"·data-group-id="3363767404-3">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·4565afbc19dcb17f41e42711dbe710cf4a20a1b522b952a09c7c21be8f4c145b·...·]-2">)</span><span·class="p">.</span><span·class="w">199 ··</span><span·class="p"·data-group-id="8035729929-5">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="8035729929-5">}</span><span·class="p"·data-group-id="8035729929-3">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·94112b22c5acbcc9ce0971186a48c75cdb3930b799494a59bd9b22a81e99fece·...·]-2">)</span><span·class="p">.</span><span·class="w">
200 ··</span><span·class="p"·data-group-id="3363767404-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.475</span><span·class="o">&gt;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·762,·SHA:·6ae30c0bd37b988f73f34f5acbc8263ce634552d0889c7078fac4cb1dd181804·...·]-2">)</span><span·class="p">.</span><span·class="w">200 ··</span><span·class="p"·data-group-id="8035729929-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.475</span><span·class="o">&gt;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·762,·SHA:·216049a8cbf7b671f5c3129fd9b7679aaefe47a621fd7f7082cc63790356f020·...·]-2">)</span><span·class="p">.</span><span·class="w">
201 ··</span><span·class="p"·data-group-id="7570114286-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.476</span><span·class="o">&gt;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·438,·SHA:·8145a09edba6ee1ab892cbeea3345b36e662e57847c2b554b4814adaf436a646·...·]-1">)</span><span·class="p">.</span><span·class="w">201 ··</span><span·class="p"·data-group-id="9597060539-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">#</span><span·class="n">Port</span><span·class="o">&lt;</span><span·class="mf">0.476</span><span·class="o">&gt;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·438,·SHA:·f4ca4c9cfa8c20ca76db0c6e68cf265e7810adaaade30a59714049d87adc4dd1·...·]-1">)</span><span·class="p">.</span><span·class="w">
202 ··</span><span·class="ss">ok</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1706973624-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Socket</span><span·class="p"·data-group-id="1706973624-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·1559,·SHA:·4385905599c2cedc1267bd1cf8185babcdc04017788a7e37ea9ba7dc99586b4b·...·]-4">}</span><span·class="p">,</span><span·class="w">202 ··</span><span·class="ss">ok</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0111813312-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Socket</span><span·class="p"·data-group-id="0111813312-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·1559,·SHA:·37bad24080fef8269285e636c2dfc6cc669548bb1dbc6ffcb1bcf6e1333cb7f2·...·]-4">}</span><span·class="p">,</span><span·class="w">
203 ··</span><span·class="p"·data-group-id="3880024397-5">{</span><span·class="ss">fail_if_no_peer_cert</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="3880024397-5">}</span><span·class="p">,</span><span·class="w">203 ··</span><span·class="p"·data-group-id="9122974658-5">{</span><span·class="ss">fail_if_no_peer_cert</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="9122974658-5">}</span><span·class="p">,</span><span·class="w">
204 ··</span><span·class="p"·data-group-id="3880024397-6">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cacerts.pem&quot;</span><span·class="p"·data-group-id="3880024397-6">}</span><span·class="p">,</span><span·class="w">204 ··</span><span·class="p"·data-group-id="9122974658-6">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cacerts.pem&quot;</span><span·class="p"·data-group-id="9122974658-6">}</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="3880024397-7">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3880024397-8">[</span><span·class="p"·data-group-id="3880024397-9">#{</span><span·class="ss">certfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;cert.pem&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">keyfile</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;key.pem&quot;</span><span·class="p"·data-group-id="3880024397-9">}</span><span·class="p"·data-group-id="3880024397-8">]</span><span·class="p"·data-group-id="3880024397-7">}</span><span·class="p"·data-group-id="3880024397-3">]</span><span·class="p"·data-group-id="3880024397-2">)</span><span·class="p">.</span><span·class="w"> 
206 ··</span><span·class="p"·data-group-id="3880024397-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3880024397-11">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="3880024397-12">[</span><span·class="p">.<[·...·truncated·by·diffoscope;·len:·319,·SHA:·43eb23b819b4b8b2cc4a82e3d21422b492020d742eb38de3aec068f45bf379eb·...·]205 ··</span><span·class="p"·data-group-id="9122974658-7">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9122974658-8">[</span><span·class="p"·data-group-id="9122974658-9">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·608,·SHA:·47d6bf24813f3d8a4d70eaba81481683cc16faa7bfee9462c7dc02ae73e83961·...·]
 206 ··</span><span·class="p"·data-group-id="9122974658-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9122974658-11">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="9122974658-12">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9122974658-12">]</span><span·class="p"·data-group-id="9122974658-11">}</span><span·class="p"·data-group-id="9122974658-10">}</span></code></pre><p><em>Step·6:</em>·Upgrade·to·a·TLS·connection.·The·client·and·server·must·agree·upon·the
207 upgrade.·The·server·must·be·prepared·to·be·a·TLS·server·before·the·client·can·do207 upgrade.·The·server·must·be·prepared·to·be·a·TLS·server·before·the·client·can·do
208 a·successful·connect.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">3</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4536005129-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TLSSocket</span><span·class="p"·data-group-id="4536005129-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·469,·SHA:·158b17a8bdb27fae7b200d662b3d007572373a3c6f58f8122a2ba4bb41f5c5a6·...·]-4">}</span><span·class="p">,</span><span·class="w">208 a·successful·connect.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">3</span><span·class="w">·</span><span·class="ss">client</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0031415954-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TLSSocket</span><span·class="p"·data-group-id="0031415954-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·469,·SHA:·fdc499e006370aa8b2b17a61c6570430b68774bddd9e6097fd75759ef310d717·...·]-4">}</span><span·class="p">,</span><span·class="w">
209 ··</span><span·class="p"·data-group-id="4536005129-5">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cacerts.pem&quot;</span><span·class="p"·data-group-id="4536005129-5">}</span><span·class="p">,</span><span·class="w">209 ··</span><span·class="p"·data-group-id="0031415954-5">{</span><span·class="ss">cacertfile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;cacerts.pem&quot;</span><span·class="p"·data-group-id="0031415954-5">}</span><span·class="p">,</span><span·class="w">
210 ··</span><span·class="p"·data-group-id="4536005129-6">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4536005129-7">[</span><span·class="p"·data-group-id="4536005129-8">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·636,·SHA:·066a10b607a795603cf73176f45bb063eeedeff0d1611ef0da86fe4235b8e4d9·...·]-2">)</span><span·class="p">.</span><span·class="w">210 ··</span><span·class="p"·data-group-id="0031415954-6">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0031415954-7">[</span><span·class="p"·data-group-id="0031415954-8">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·636,·SHA:·441f9c35cde8212d7c0cf259fcd8c24f7ced30037ad923c3f87dddc57cc0416e·...·]-2">)</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="4536005129-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4536005129-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="4536005129-11">[</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·744,·SHA:·648bc85db3d3762ea0c7f1233ddb8b60f7838502b8416e76e207a3c337b68859·...·]-1">)</span><span·class="p">.</span><span·class="w">211 </span><span·class="p"·data-group-id="0031415954-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0031415954-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="0031415954-11">[</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·744,·SHA:·44aa14b3d53b53feec09fc7fc416813126c8a612ad58737be9fb42b3462b5dc1·...·]-1">)</span><span·class="p">.</span><span·class="w">
212 ······</span><span·class="ss">ok</span></code></pre><p><em>Step·8:</em>·Set·<code·class="inline">active·once</code>·on·the·TLS·socket:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">setopts</span><span·class="p"·data-group-id="3025267717-1">(</span><span·class="n">TLSSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3025267717-2">[</span><span·class="p"·data-group-id="3025267717-3">{</span><span·class="ss">active</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·205,·SHA:·e8ee87496b3f7f7df9366c28d2ff5452707230ea5baf1e05247d57b007c3ef7f·...·]-1">)</span><span·class="p">.</span><span·class="w">212 ······</span><span·class="ss">ok</span></code></pre><p><em>Step·8:</em>·Set·<code·class="inline">active·once</code>·on·the·TLS·socket:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">setopts</span><span·class="p"·data-group-id="4187361976-1">(</span><span·class="n">TLSSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4187361976-2">[</span><span·class="p"·data-group-id="4187361976-3">{</span><span·class="ss">active</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·205,·SHA:·1cecc322d821dd829f0cdf86cfcf8383ad7fff34303ab25f26b7c8b798d84a54·...·]-1">)</span><span·class="p">.</span><span·class="w">
213 ······</span><span·class="ss">ok</span></code></pre><p><em>Step·9:</em>·Flush·the·shell·message·queue·to·see·that·the·message·sent·on·the213 ······</span><span·class="ss">ok</span></code></pre><p><em>Step·9:</em>·Flush·the·shell·message·queue·to·see·that·the·message·sent·on·the
214 client·side·is·recived·by·the·server·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">flush</span><span·class="p"·data-group-id="9017999157-1">(</span><span·class="p"·data-group-id="9017999157-1">)</span><span·class="p">.</span><span·class="w">214 client·side·is·recived·by·the·server·side:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">5</span><span·class="w">·</span><span·class="ss">server</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nf">flush</span><span·class="p"·data-group-id="3405113490-1">(</span><span·class="p"·data-group-id="3405113490-1">)</span><span·class="p">.</span><span·class="w">
215 ······</span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="9017999157-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="9017999157-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="9017999157-4">[</span><span·class="p">.</s[·...·truncated·by·diffoscope;·len:·261,·SHA:·e29e3b473c8a6a7adf8c4db331b41ca8e5dad1bff08afa1164923a98bc7b5cdf·...·]-2">}</span><span·class="w">215 ······</span><span·class="n">Shell</span><span·class="w">·</span><span·class="ss">got</span><span·class="w">·</span><span·class="p"·data-group-id="3405113490-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="3405113490-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="3405113490-4">[</span><span·class="p">.</s[·...·truncated·by·diffoscope;·len:·261,·SHA:·036e7984418943cbefc4070ab2ea897f567c545d1accb611d6718bc6f5c5b8af·...·]-2">}</span><span·class="w">
216 ······</span><span·class="ss">ok</span></code></pre><h2·id="customizing-cipher-suites"·class="section-heading">216 ······</span><span·class="ss">ok</span></code></pre><h2·id="customizing-cipher-suites"·class="section-heading">
217 ··<a·href="#customizing-cipher-suites"·class="hover-link">217 ··<a·href="#customizing-cipher-suites"·class="hover-link">
218 ····<i·class="ri-link-m"·aria-hidden="true"></i>218 ····<i·class="ri-link-m"·aria-hidden="true"></i>
219 ··</a>219 ··</a>
220 ··<span·class="text">Customizing·cipher·suites</span>220 ··<span·class="text">Customizing·cipher·suites</span>
221 </h2>221 </h2>
222 <p>Fetch·default·cipher·suite·list·for·a·TLS/DTLS·version.·Change·default·to·all·to222 <p>Fetch·default·cipher·suite·list·for·a·TLS/DTLS·version.·Change·default·to·all·to
223 get·all·possible·cipher·suites.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="w">·</span><span·class="n">Default</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">cipher_suites</span><span·class="p"·data-group-id="4447352993-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;tlsv1.2&#39;</span><span·class="p"·data-group-id="4447352993-1">)</span><span·class="p">.</span><span·class="w">223 get·all·possible·cipher·suites.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="w">·</span><span·class="n">Default</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">cipher_suites</span><span·class="p"·data-group-id="9278364528-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;tlsv1.2&#39;</span><span·class="p"·data-group-id="9278364528-1">)</span><span·class="p">.</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="4447352993-2">[</span><span·class="p"·data-group-id="4447352993-3">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_256_gcm</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdhe_ecdsa</span><span·class="p">,</span><span·class="w">224 ····</span><span·class="p"·data-group-id="9278364528-2">[</span><span·class="p"·data-group-id="9278364528-3">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_256_gcm</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdhe_ecdsa</span><span·class="p">,</span><span·class="w">
225 ····</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aead</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha384</span><span·class="p"·data-group-id="4447352993-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4447352993-2">]</span></code></pre><p>In·OTP·20·it·is·desirable·to·remove·all·cipher·suites·that·uses·rsa·key·exchange225 ····</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aead</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha384</span><span·class="p"·data-group-id="9278364528-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9278364528-2">]</span></code></pre><p>In·OTP·20·it·is·desirable·to·remove·all·cipher·suites·that·uses·rsa·key·exchange
226 (removed·from·default·in·21)</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">NoRSA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">226 (removed·from·default·in·21)</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">NoRSA</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
227 ····</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">filter_cipher_suites</span><span·class="p"·data-group-id="8106074246-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">227 ····</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">filter_cipher_suites</span><span·class="p"·data-group-id="8910173456-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">
228 ·····························</span><span·class="p"·data-group-id="8106074246-2">[</span><span·class="p"·data-group-id="8106074246-3">{</span><span·class="ss">key_exchange</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="8106074246-4">(</span><span·class="ss">r[·...·truncated·by·diffoscope;·len:·49,·SHA:·7975abb75c06e7c673822bf43097d5f378296fe3d01d871f83cd66cc472630d2·...·]6-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">;</span><span·class="w">228 ·····························</span><span·class="p"·data-group-id="8910173456-2">[</span><span·class="p"·data-group-id="8910173456-3">{</span><span·class="ss">key_exchange</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="8910173456-4">(</span><span·class="ss">r[·...·truncated·by·diffoscope;·len:·49,·SHA:·636752bc8c816040e925f8b78e5cfa83c8e5a49279cbd121857ce038b23027cc·...·]6-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="p">;</span><span·class="w">
229 ················································</span><span·class="p"·data-group-id="8106074246-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="8106074246-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">229 ················································</span><span·class="p"·data-group-id="8910173456-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="8910173456-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="w">
230 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="8106074246-3">}</span><span·class="p"·data-group-id="8106074246-2">]</span><span·class="p"·data-group-id="8106074246-1">)</span><span·class="p">.</span><span·class="w">230 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="8910173456-3">}</span><span·class="p"·data-group-id="8910173456-2">]</span><span·class="p"·data-group-id="8910173456-1">)</span><span·class="p">.</span><span·class="w">
231 ····</span><span·class="p"·data-group-id="8106074246-6">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8106074246-6">]</span></code></pre><p>Pick·just·a·few·suites</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Suites</span><span·class="w">·</span><span·class="o">=</span><span·class="w">231 ····</span><span·class="p"·data-group-id="8910173456-6">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8910173456-6">]</span></code></pre><p>Pick·just·a·few·suites</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="n">Suites</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
232 ·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">filter_cipher_suites</span><span·class="p"·data-group-id="3150341208-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">232 ·</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">filter_cipher_suites</span><span·class="p"·data-group-id="7638287929-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">
233 ·····························</span><span·class="p"·data-group-id="3150341208-2">[</span><span·class="p"·data-group-id="3150341208-3">{</span><span·class="ss">key_exchange</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3150341208-4">(</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·58,·SHA:·86217bcbb19b26f7c3918c61ccd1242e6ec8cc49121d700a501b2cb481726f8d·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">233 ·····························</span><span·class="p"·data-group-id="7638287929-2">[</span><span·class="p"·data-group-id="7638287929-3">{</span><span·class="ss">key_exchange</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7638287929-4">(</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·58,·SHA:·ff2e3f4b2a0be208b3d4f3a0af5a5583302666f81e28d1c7cfdd1cfd55104d45·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
234 ················································</span><span·class="p"·data-group-id="3150341208-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="3150341208-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">234 ················································</span><span·class="p"·data-group-id="7638287929-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="7638287929-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">false</span><span·class="w">
235 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="3150341208-3">}</span><span·class="p">,</span><span·class="w">235 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="7638287929-3">}</span><span·class="p">,</span><span·class="w">
236 ······························</span><span·class="p"·data-group-id="3150341208-6">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3150341208-7">(</span><span·class="ss">aes_128_cbc</span><span·class="p"·data-group-id="3150341208-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">236 ······························</span><span·class="p"·data-group-id="7638287929-6">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7638287929-7">(</span><span·class="ss">aes_128_cbc</span><span·class="p"·data-group-id="7638287929-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
237 ··········································</span><span·class="p"·data-group-id="3150341208-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="3150341208-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="ss">false</span><span·class="w">237 ··········································</span><span·class="p"·data-group-id="7638287929-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="7638287929-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="ss">false</span><span·class="w">
238 ·······································</span><span·class="k">end</span><span·class="p"·data-group-id="3150341208-6">}</span><span·class="p"·data-group-id="3150341208-2">]</span><span·class="p"·data-group-id="3150341208-1">)</span><span·class="p">.</span><span·class="w">238 ·······································</span><span·class="k">end</span><span·class="p"·data-group-id="7638287929-6">}</span><span·class="p"·data-group-id="7638287929-2">]</span><span·class="p"·data-group-id="7638287929-1">)</span><span·class="p">.</span><span·class="w">
  
239 </span><span·class="p"·data-group-id="3150341208-9">[</span><span·class="p"·data-group-id="3150341208-10">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="w">239 </span><span·class="p"·data-group-id="7638287929-9">[</span><span·class="p"·data-group-id="7638287929-10">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="w">
240 ···</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p"·data-group-id="3150341208-10">}</span><span·class="p">,</span><span·class="w">240 ···</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p"·data-group-id="7638287929-10">}</span><span·class="p">,</span><span·class="w">
241 ·</span><span·class="p"·data-group-id="3150341208-11">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">241 ·</span><span·class="p"·data-group-id="7638287929-11">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">
242 ···</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">default_prf</span><span·class="p"·data-group-id="3150341208-11">}</span><span·class="p"·data-group-id="3150341208-9">]</span></code></pre><p>Make·some·particular·suites·the·most·preferred,·or·least·preferred·by·changing242 ···</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">default_prf</span><span·class="p"·data-group-id="7638287929-11">}</span><span·class="p"·data-group-id="7638287929-9">]</span></code></pre><p>Make·some·particular·suites·the·most·preferred,·or·least·preferred·by·changing
243 prepend·to·append.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">prepend_cipher_suites</span><span·class="p"·data-group-id="3371726924-1">(</span><span·class="n">Suites</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Default</span><span·class="p"·data-group-id="3371726924-1">)</span><span·class="p">.</span><span·class="w">243 prepend·to·append.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">prepend_cipher_suites</span><span·class="p"·data-group-id="1532172724-1">(</span><span·class="n">Suites</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Default</span><span·class="p"·data-group-id="1532172724-1">)</span><span·class="p">.</span><span·class="w">
244 ··</span><span·class="p"·data-group-id="3371726924-2">[</span><span·class="p"·data-group-id="3371726924-3">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="w">244 ··</span><span·class="p"·data-group-id="1532172724-2">[</span><span·class="p"·data-group-id="1532172724-3">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="w">
245 ·····</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p"·data-group-id="3371726924-3">}</span><span·class="p">,</span><span·class="w">245 ·····</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha256</span><span·class="p"·data-group-id="1532172724-3">}</span><span·class="p">,</span><span·class="w">
246 ···</span><span·class="p"·data-group-id="3371726924-4">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">246 ···</span><span·class="p"·data-group-id="1532172724-4">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_128_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdh_ecdsa</span><span·class="p">,</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">
247 ·····</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">default_prf</span><span·class="p"·data-group-id="3371726924-4">}</span><span·class="p">,</span><span·class="w">247 ·····</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">default_prf</span><span·class="p"·data-group-id="1532172724-4">}</span><span·class="p">,</span><span·class="w">
248 ···</span><span·class="p"·data-group-id="3371726924-5">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_256_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdhe_ecdsa</span><span·class="p">,</span><span·class="w">248 ···</span><span·class="p"·data-group-id="1532172724-5">#{</span><span·class="ss">cipher</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">aes_256_cbc</span><span·class="p">,</span><span·class="ss">key_exchange</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ecdhe_ecdsa</span><span·class="p">,</span><span·class="w">
249 ·····</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha384</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha384</span><span·class="p"·data-group-id="3371726924-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3371726924-2">]</span></code></pre><h2·id="customizing-signature-algorithms-tls-1-2-schemes-tls-1-3"·class="section-heading">249 ·····</span><span·class="ss">mac</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha384</span><span·class="p">,</span><span·class="ss">prf</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">sha384</span><span·class="p"·data-group-id="1532172724-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1532172724-2">]</span></code></pre><h2·id="customizing-signature-algorithms-tls-1-2-schemes-tls-1-3"·class="section-heading">
250 ··<a·href="#customizing-signature-algorithms-tls-1-2-schemes-tls-1-3"·class="hover-link">250 ··<a·href="#customizing-signature-algorithms-tls-1-2-schemes-tls-1-3"·class="hover-link">
251 ····<i·class="ri-link-m"·aria-hidden="true"></i>251 ····<i·class="ri-link-m"·aria-hidden="true"></i>
252 ··</a>252 ··</a>
253 ··<span·class="text">Customizing·signature·algorithms(TLS-1.2)/schemes(TLS-1.3)</span>253 ··<span·class="text">Customizing·signature·algorithms(TLS-1.2)/schemes(TLS-1.3)</span>
254 </h2>254 </h2>
255 <p>Starting·from·TLS-1.2·signature·algorithms·(called·signature·schemes·in·TLS-1.3)255 <p>Starting·from·TLS-1.2·signature·algorithms·(called·signature·schemes·in·TLS-1.3)
256 is·something·that·can·be·negotiated·and·hence·also·configured.·These256 is·something·that·can·be·negotiated·and·hence·also·configured.·These
Offset 261, 71 lines modifiedOffset 261, 71 lines modified
261 versions·are·supported·the·configuration·can·be·a·mix·of·these·as·both261 versions·are·supported·the·configuration·can·be·a·mix·of·these·as·both
262 versions·might·be·negotiated.·All·<code·class="inline">rsa_pss</code>·based·schemes·are·back·ported·to262 versions·might·be·negotiated.·All·<code·class="inline">rsa_pss</code>·based·schemes·are·back·ported·to
263 TLS-1.2·and·can·be·used·also·in·a·TLS-1.2·configuration.·In·TLS-1.2·the263 TLS-1.2·and·can·be·used·also·in·a·TLS-1.2·configuration.·In·TLS-1.2·the
264 signature·algorithms·chosen·by·the·server·will·also·be·affected·by·the·chiper264 signature·algorithms·chosen·by·the·server·will·also·be·affected·by·the·chiper
265 suite·that·is·chosen,·which·is·not·the·case·in·TLS-1.3.</p></section><p>Using·the·function·<a·href="ssl.html#signature_algs/2"><code·class="inline">ssl:signature_algs/2</code></a>·will·let·you·inspect·different·aspects265 suite·that·is·chosen,·which·is·not·the·case·in·TLS-1.3.</p></section><p>Using·the·function·<a·href="ssl.html#signature_algs/2"><code·class="inline">ssl:signature_algs/2</code></a>·will·let·you·inspect·different·aspects
266 of·possible·configurations·for·your·system.·For·example·if·TLS-1.3·and·TLS-1.2266 of·possible·configurations·for·your·system.·For·example·if·TLS-1.3·and·TLS-1.2
267 is·supported·the·default·signature_algorithm·list·in·OTP-26·and·cryptolib·from267 is·supported·the·default·signature_algorithm·list·in·OTP-26·and·cryptolib·from
268 OpenSSL·3.0.2·would·look·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">signature_algs</span><span·class="p"·data-group-id="2541744931-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;tlsv1.3&#39;</span><span·class="p"·data-group-id="2541744931-1">)</span><span·class="p">.</span><span·class="w">268 OpenSSL·3.0.2·would·look·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="nc">ssl</span><span·class="p">:</span><span·class="nf">signature_algs</span><span·class="p"·data-group-id="4667801556-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;tlsv1.3&#39;</span><span·class="p"·data-group-id="4667801556-1">)</span><span·class="p">.</span><span·class="w">
269 ·</span><span·class="c1">%%·TLS-1.3·schemes</span><span·class="w">269 ·</span><span·class="c1">%%·TLS-1.3·schemes</span><span·class="w">
Max diff block lines reached; 224918/306927 bytes (73.28%) of diff not shown.
125 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/argparse.html
    
Offset 143, 60 lines modifiedOffset 143, 60 lines modified
143 ··</a>143 ··</a>
144 ··<span·class="text">Quick·start</span>144 ··<span·class="text">Quick·start</span>
145 </h2>145 </h2>
146 <p><code·class="inline">argparse</code>·is·designed·to·work·with·<a·href="../../../../erts-15.2.2/doc/html/escript_cmd.html"><code·class="inline">escript</code></a>.·The146 <p><code·class="inline">argparse</code>·is·designed·to·work·with·<a·href="../../../../erts-15.2.2/doc/html/escript_cmd.html"><code·class="inline">escript</code></a>.·The
147 example·below·is·a·fully·functioning·Erlang·program·accepting·two·command·line147 example·below·is·a·fully·functioning·Erlang·program·accepting·two·command·line
148 arguments·and·printing·their·product.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ch">#!/usr/bin/env·escript148 arguments·and·printing·their·product.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ch">#!/usr/bin/env·escript
149 </span><span·class="w">149 </span><span·class="w">
150 </span><span·class="nf">main</span><span·class="p"·data-group-id="0155062447-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="0155062447-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">150 </span><span·class="nf">main</span><span·class="p"·data-group-id="9822103192-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="9822103192-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ····</span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="0155062447-2">(</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">cli</span><span·class="p"·data-group-id="0155062447-3">(</span><span·class="p"·data-group-id="0155062447-3">)</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·305,·SHA:·626ad6e80ac02c8736bb5e3b3d48a57c25fb8bae5e56dfb4d2ce4a291df1bf84·...·]-2">)</span><span·class="p">.</span><span·class="w">151 ····</span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="9822103192-2">(</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">cli</span><span·class="p"·data-group-id="9822103192-3">(</span><span·class="p"·data-group-id="9822103192-3">)</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·305,·SHA:·8951fa99a5d0ffd49ffef17029c2a5e6672c3e28dd99fef6df46ef9ed1581cca·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
152 </span><span·class="nf">cli</span><span·class="p"·data-group-id="0155062447-5">(</span><span·class="p"·data-group-id="0155062447-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 </span><span·class="nf">cli</span><span·class="p"·data-group-id="9822103192-5">(</span><span·class="p"·data-group-id="9822103192-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ····</span><span·class="p"·data-group-id="0155062447-6">#{</span><span·class="w">153 ····</span><span·class="p"·data-group-id="9822103192-6">#{</span><span·class="w">
154 ········</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0155062447-7">[</span><span·class="w">154 ········</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9822103192-7">[</span><span·class="w">
155 ············</span><span·class="p"·data-group-id="0155062447-8">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">left</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·123,·SHA:·e97eb0d304df89fc2941df58af86d888f6f50ea55a8fc5ea719d71c91cb60d77·...·]-8">}</span><span·class="p">,</span><span·class="w">155 ············</span><span·class="p"·data-group-id="9822103192-8">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">left</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·123,·SHA:·57082bf35a719be2dcc0d0c80bf2bed501e57bf3b30faf77c422660a313391e5·...·]-8">}</span><span·class="p">,</span><span·class="w">
156 ············</span><span·class="p"·data-group-id="0155062447-9">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">right</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·124,·SHA:·4eaeff4712abfaf793fa4080b61e3fc25de0d9f933c89bbc4d059403abcbbb55·...·]-9">}</span><span·class="w">156 ············</span><span·class="p"·data-group-id="9822103192-9">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">right</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">type</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·124,·SHA:·e4de0bdd06a237f7e5cd85656819f10e0a24c31681f7172d106d0c7ceaedb787·...·]-9">}</span><span·class="w">
157 ········</span><span·class="p"·data-group-id="0155062447-7">]</span><span·class="p">,</span><span·class="w">157 ········</span><span·class="p"·data-group-id="9822103192-7">]</span><span·class="p">,</span><span·class="w">
158 ········</span><span·class="ss">handler</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">158 ········</span><span·class="ss">handler</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">
159 ············</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0155062447-10">(</span><span·class="p"·data-group-id="0155062447-11">#{</span><span·class="ss">left</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Left</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·223,·SHA:·ce7dc37a336e3564c9b5414ac18a08dfa34ce44e68fa7c77c4152a36e1f561a6·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 ············</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9822103192-10">(</span><span·class="p"·data-group-id="9822103192-11">#{</span><span·class="ss">left</span><span·class="w">·</span><span·class="p">:=</span><span·class="w">·</span><span·class="n">Left</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·223,·SHA:·e7260b6b9f798e9642d491264258669e66267e34a8b64a1a181990c22412c241·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0155062447-12">(</span><span·class="s">&quot;</span><span·class="si">~b</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0155062447-13">[</span><span·class="n">Left<[·...·truncated·by·diffoscope;·len:·201,·SHA:·e9a03fcbc6c6121c09dc0143d45dd99833897a98294c9aa786cf4acf9d657ec1·...·]-12">)</span><span·class="w">160 ················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9822103192-12">(</span><span·class="s">&quot;</span><span·class="si">~b</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9822103192-13">[</span><span·class="n">Left<[·...·truncated·by·diffoscope;·len:·201,·SHA:·8f6b548754c060f7c0b7ed543ff3c7ddfd2c2868fe81876bd5869d6d4485363f·...·]-12">)</span><span·class="w">
161 ············</span><span·class="k">end</span><span·class="w">161 ············</span><span·class="k">end</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="0155062447-6">}</span><span·class="p">.</span></code></pre><p>Running·this·script·with·no·arguments·results·in·an·error,·accompanied·by·the162 ····</span><span·class="p"·data-group-id="9822103192-6">}</span><span·class="p">.</span></code></pre><p>Running·this·script·with·no·arguments·results·in·an·error,·accompanied·by·the
163 usage·information.</p><p>The·<code·class="inline">cli</code>·function·defines·a·single·command·with·embedded·handler·accepting·a163 usage·information.</p><p>The·<code·class="inline">cli</code>·function·defines·a·single·command·with·embedded·handler·accepting·a
164 map.·Keys·of·the·map·are·argument·names·as·defined·by·the·<code·class="inline">argument</code>·field·of164 map.·Keys·of·the·map·are·argument·names·as·defined·by·the·<code·class="inline">argument</code>·field·of
165 the·command,·<code·class="inline">left</code>·and·<code·class="inline">right</code>·in·the·example.·Values·are·taken·from·the165 the·command,·<code·class="inline">left</code>·and·<code·class="inline">right</code>·in·the·example.·Values·are·taken·from·the
166 command·line,·and·converted·into·integers,·as·requested·by·the·type166 command·line,·and·converted·into·integers,·as·requested·by·the·type
167 specification.·Both·arguments·in·the·example·above·are·required·(and·therefore167 specification.·Both·arguments·in·the·example·above·are·required·(and·therefore
168 defined·as·positional).</p><h2·id="module-command-hierarchy"·class="section-heading">168 defined·as·positional).</p><h2·id="module-command-hierarchy"·class="section-heading">
169 ··<a·href="#module-command-hierarchy"·class="hover-link">169 ··<a·href="#module-command-hierarchy"·class="hover-link">
170 ····<i·class="ri-link-m"·aria-hidden="true"></i>170 ····<i·class="ri-link-m"·aria-hidden="true"></i>
171 ··</a>171 ··</a>
172 ··<span·class="text">Command·hierarchy</span>172 ··<span·class="text">Command·hierarchy</span>
173 </h2>173 </h2>
174 <p>A·command·may·contain·nested·commands,·forming·a·hierarchy.·Arguments·defined·at174 <p>A·command·may·contain·nested·commands,·forming·a·hierarchy.·Arguments·defined·at
175 the·upper·level·command·are·automatically·added·to·all·nested·commands.·Nested175 the·upper·level·command·are·automatically·added·to·all·nested·commands.·Nested
176 commands·example·(assuming·<code·class="inline">progname</code>·is·<code·class="inline">nested</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">cli</span><span·class="p"·data-group-id="7498117158-1">(</span><span·class="p"·data-group-id="7498117158-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 commands·example·(assuming·<code·class="inline">progname</code>·is·<code·class="inline">nested</code>):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">cli</span><span·class="p"·data-group-id="3691836730-1">(</span><span·class="p"·data-group-id="3691836730-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ··</span><span·class="p"·data-group-id="7498117158-2">#{</span><span·class="w">177 ··</span><span·class="p"·data-group-id="3691836730-2">#{</span><span·class="w">
178 ····</span><span·class="c1">%%·top·level·argument·applicable·to·all·commands</span><span·class="w">178 ····</span><span·class="c1">%%·top·level·argument·applicable·to·all·commands</span><span·class="w">
179 ····</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-3">[</span><span·class="p"·data-group-id="7498117158-4">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">top</span><span·class="p"·data-group-id="7498117158-4">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·472794e63f24e0574c3ba542a38ed4dce2d90dd320ea1611f0bfdfa5f1a55e8d·...·]-3">]</span><span·class="p">,</span><span·class="w">179 ····</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-3">[</span><span·class="p"·data-group-id="3691836730-4">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">top</span><span·class="p"·data-group-id="3691836730-4">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·38bfe72a88d8e1b6c57995c6dec3ffed1f622eb579721ad8775350fe17adef54·...·]-3">]</span><span·class="p">,</span><span·class="w">
180 ······</span><span·class="ss">commands</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-5">#{</span><span·class="w">180 ······</span><span·class="ss">commands</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-5">#{</span><span·class="w">
181 ········</span><span·class="s">&quot;first&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-6">#{</span><span·class="w">181 ········</span><span·class="s">&quot;first&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-6">#{</span><span·class="w">
182 ··········</span><span·class="c1">%%·argument·applicable·to·&quot;first&quot;·command·and</span><span·class="w">182 ··········</span><span·class="c1">%%·argument·applicable·to·&quot;first&quot;·command·and</span><span·class="w">
183 ··········</span><span·class="c1">%%··all·commands·nested·into·&quot;first&quot;</span><span·class="w">183 ··········</span><span·class="c1">%%··all·commands·nested·into·&quot;first&quot;</span><span·class="w">
184 ··········</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-7">[</span><span·class="p"·data-group-id="7498117158-8">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">mid</span><span·class="p"·data-group-id="7498117158-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·472794e63f24e0574c3ba542a38ed4dce2d90dd320ea1611f0bfdfa5f1a55e8d·...·]-7">]</span><span·class="p">,</span><span·class="w">184 ··········</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-7">[</span><span·class="p"·data-group-id="3691836730-8">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">mid</span><span·class="p"·data-group-id="3691836730-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·38bfe72a88d8e1b6c57995c6dec3ffed1f622eb579721ad8775350fe17adef54·...·]-7">]</span><span·class="p">,</span><span·class="w">
185 ··········</span><span·class="ss">commands</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-9">#{</span><span·class="w">185 ··········</span><span·class="ss">commands</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-9">#{</span><span·class="w">
186 ············</span><span·class="s">&quot;second&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-10">#{</span><span·class="w">186 ············</span><span·class="s">&quot;second&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-10">#{</span><span·class="w">
187 ··············</span><span·class="c1">%%·argument·only·applicable·for·&quot;second&quot;·command</span><span·class="w">187 ··············</span><span·class="c1">%%·argument·only·applicable·for·&quot;second&quot;·command</span><span·class="w">
188 ··············</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-11">[</span><span·class="p"·data-group-id="7498117158-12">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">bottom</span><span·class="p"·data-group-id="7498117158-12[·...·truncated·by·diffoscope;·len:·51,·SHA:·718ba032e0d4a2e3526d35524df119f4ff068e67f1b62cf58bbb86d455e7dab5·...·]-11">]</span><span·class="p">,</span><span·class="w">188 ··············</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-11">[</span><span·class="p"·data-group-id="3691836730-12">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">bottom</span><span·class="p"·data-group-id="3691836730-12[·...·truncated·by·diffoscope;·len:·51,·SHA:·e30d268da189410469b138a93e764bdadba12840caeb3e39aff5d78d59dc9d1d·...·]-11">]</span><span·class="p">,</span><span·class="w">
189 ··············</span><span·class="ss">handler</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7498117158-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="7498117158-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span[·...·truncated·by·diffoscope;·len:·386,·SHA:·8726feeb21a3eca86dfa7dd11ab72e50dba9f27516b24a95b813c378001b4274·...·]-14">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">189 ··············</span><span·class="ss">handler</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3691836730-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="3691836730-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span[·...·truncated·by·diffoscope;·len:·386,·SHA:·451d5fd37e12cc39d61f7f82ffbb19a3f93f0e965321745a2ca220e2f3634079·...·]-14">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
190 ··········</span><span·class="p"·data-group-id="7498117158-10">}</span><span·class="w">190 ··········</span><span·class="p"·data-group-id="3691836730-10">}</span><span·class="w">
191 ········</span><span·class="p"·data-group-id="7498117158-9">}</span><span·class="w">191 ········</span><span·class="p"·data-group-id="3691836730-9">}</span><span·class="w">
192 ······</span><span·class="p"·data-group-id="7498117158-6">}</span><span·class="w">192 ······</span><span·class="p"·data-group-id="3691836730-6">}</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="7498117158-5">}</span><span·class="w">193 ····</span><span·class="p"·data-group-id="3691836730-5">}</span><span·class="w">
194 ··</span><span·class="p"·data-group-id="7498117158-2">}</span><span·class="p">.</span></code></pre><p>In·the·example·above,·a·3-level·hierarchy·is·defined.·First·is·the·script·itself194 ··</span><span·class="p"·data-group-id="3691836730-2">}</span><span·class="p">.</span></code></pre><p>In·the·example·above,·a·3-level·hierarchy·is·defined.·First·is·the·script·itself
195 (<code·class="inline">nested</code>),·accepting·the·only·argument·<code·class="inline">top</code>.·Since·it·has·no·associated195 (<code·class="inline">nested</code>),·accepting·the·only·argument·<code·class="inline">top</code>.·Since·it·has·no·associated
196 handler,·<a·href="#run/3"><code·class="inline">run/3</code></a>·will·not·accept·user·input·omitting·nested·command·selection.196 handler,·<a·href="#run/3"><code·class="inline">run/3</code></a>·will·not·accept·user·input·omitting·nested·command·selection.
197 For·this·example,·user·has·to·supply·5·arguments·in·the·command·line,·two·being197 For·this·example,·user·has·to·supply·5·arguments·in·the·command·line,·two·being
198 command·names,·and·another·3·-·required·positional·arguments:</p><pre><code·class="text">./nested.erl·one·first·second·two·three198 command·names,·and·another·3·-·required·positional·arguments:</p><pre><code·class="text">./nested.erl·one·first·second·two·three
199 #{top·=&gt;·&quot;one&quot;,mid·=&gt;·&quot;two&quot;,bottom·=&gt;·&quot;three&quot;}</code></pre><p>Commands·have·preference·over·positional·argument·values.·In·the·example·above,199 #{top·=&gt;·&quot;one&quot;,mid·=&gt;·&quot;two&quot;,bottom·=&gt;·&quot;three&quot;}</code></pre><p>Commands·have·preference·over·positional·argument·values.·In·the·example·above,
200 commands·and·positional·arguments·are·interleaving,·and·<code·class="inline">argparse</code>·matches200 commands·and·positional·arguments·are·interleaving,·and·<code·class="inline">argparse</code>·matches
201 command·name·first.</p><h2·id="module-arguments"·class="section-heading">201 command·name·first.</p><h2·id="module-arguments"·class="section-heading">
Offset 206, 22 lines modifiedOffset 206, 22 lines modified
206 ··<span·class="text">Arguments</span>206 ··<span·class="text">Arguments</span>
207 </h2>207 </h2>
208 <p><code·class="inline">argparse</code>·supports·positional·and·optional·arguments.·Optional·arguments,·or208 <p><code·class="inline">argparse</code>·supports·positional·and·optional·arguments.·Optional·arguments,·or
209 options·for·short,·must·be·prefixed·with·a·special·character·(<code·class="inline">-</code>·is·the·default209 options·for·short,·must·be·prefixed·with·a·special·character·(<code·class="inline">-</code>·is·the·default
210 on·all·operating·systems).·Both·options·and·positional·arguments·have·1·or·more210 on·all·operating·systems).·Both·options·and·positional·arguments·have·1·or·more
211 associated·values.·See·<a·href="#t:argument/0"><code·class="inline">argument·specification</code></a>·to·find·more211 associated·values.·See·<a·href="#t:argument/0"><code·class="inline">argument·specification</code></a>·to·find·more
212 details·about·supported·combinations.</p><p>In·the·user·input,·short·options·may·be·concatenated·with·their·values.·Long212 details·about·supported·combinations.</p><p>In·the·user·input,·short·options·may·be·concatenated·with·their·values.·Long
213 options·support·values·separated·by·<code·class="inline">=</code>.·Consider·this·definition:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">cli</span><span·class="p"·data-group-id="5537547914-1">(</span><span·class="p"·data-group-id="5537547914-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">213 options·support·values·separated·by·<code·class="inline">=</code>.·Consider·this·definition:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">cli</span><span·class="p"·data-group-id="0511014541-1">(</span><span·class="p"·data-group-id="0511014541-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
214 ··</span><span·class="p"·data-group-id="5537547914-2">#{</span><span·class="w">214 ··</span><span·class="p"·data-group-id="0511014541-2">#{</span><span·class="w">
215 ····</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5537547914-3">[</span><span·class="w">215 ····</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0511014541-3">[</span><span·class="w">
216 ······</span><span·class="p"·data-group-id="5537547914-4">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">long</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">long</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·132,·SHA:·21669887755da10792ba64b6bec33f76f9e1895ce06858561d151626d44a2a11·...·]-4">}</span><span·class="p">,</span><span·class="w">216 ······</span><span·class="p"·data-group-id="0511014541-4">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">long</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">long</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·132,·SHA:·9f091517e110a77f4543497456adb4dfe495cd8bb7e8747659dd19ad138f504b·...·]-4">}</span><span·class="p">,</span><span·class="w">
217 ······</span><span·class="p"·data-group-id="5537547914-5">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">short</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">short</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·120,·SHA:·e777e4a3d4893e3dabf83c9eff3a6702e0f706de21c05e8e24ad91f9ea884108·...·]-5">}</span><span·class="w">217 ······</span><span·class="p"·data-group-id="0511014541-5">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">short</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">short</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·120,·SHA:·2f6a15a67f328a001dcd5370f3333685c3cb8775f4f6b79175aef57cc8119747·...·]-5">}</span><span·class="w">
218 ····</span><span·class="p"·data-group-id="5537547914-3">]</span><span·class="p">,</span><span·class="w">218 ····</span><span·class="p"·data-group-id="0511014541-3">]</span><span·class="p">,</span><span·class="w">
219 ····</span><span·class="ss">handler</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5537547914-6">(</span><span·class="n">Args</span><span·class="p"·data-group-id="5537547914-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·dbaf5b5d78ae04f7ec2adf56ab6cc53b080702e8b640fa8a5b0f852c45effa17·...·]-7">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">219 ····</span><span·class="ss">handler</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0511014541-6">(</span><span·class="n">Args</span><span·class="p"·data-group-id="0511014541-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·d9a6c4db8ac1eca095b45d408ea6bcc58a28e508dbdcef33d21604ee817bbdd3·...·]-7">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
220 ··</span><span·class="p"·data-group-id="5537547914-2">}</span><span·class="p">.</span></code></pre><p>Running·<code·class="inline">./args·--long=VALUE</code>·prints·<code·class="inline">#{long·=&gt;·&quot;VALUE&quot;}</code>,·running220 ··</span><span·class="p"·data-group-id="0511014541-2">}</span><span·class="p">.</span></code></pre><p>Running·<code·class="inline">./args·--long=VALUE</code>·prints·<code·class="inline">#{long·=&gt;·&quot;VALUE&quot;}</code>,·running
221 <code·class="inline">./args·-sVALUE</code>·prints·<code·class="inline">#{short·=&gt;·&quot;VALUE&quot;}</code></p><p><code·class="inline">argparse</code>·supports·boolean·flags·concatenation:·it·is·possible·to·shorten221 <code·class="inline">./args·-sVALUE</code>·prints·<code·class="inline">#{short·=&gt;·&quot;VALUE&quot;}</code></p><p><code·class="inline">argparse</code>·supports·boolean·flags·concatenation:·it·is·possible·to·shorten
222 <code·class="inline">-r·-f·-v</code>·to·<code·class="inline">-rfv</code>.</p><p>Shortened·option·names·are·not·supported:·it·is·not·possible·to·use·<code·class="inline">--my-argum</code>222 <code·class="inline">-r·-f·-v</code>·to·<code·class="inline">-rfv</code>.</p><p>Shortened·option·names·are·not·supported:·it·is·not·possible·to·use·<code·class="inline">--my-argum</code>
223 instead·of·<code·class="inline">--my-argument-name</code>·even·when·such·option·can·be·unambiguously223 instead·of·<code·class="inline">--my-argument-name</code>·even·when·such·option·can·be·unambiguously
224 found.</p>224 found.</p>
225 ····</section>225 ····</section>
  
226 </div>226 </div>
Offset 598, 119 lines modifiedOffset 598, 119 lines modified
598 as·optional.·Optional·arguments·do·not·have·specific·order·and·may·appear598 as·optional.·Optional·arguments·do·not·have·specific·order·and·may·appear
599 anywhere·in·the·command·line.·Positional·arguments·are·ordered·the·same·way·as599 anywhere·in·the·command·line.·Positional·arguments·are·ordered·the·same·way·as
600 they·appear·in·the·arguments·list·of·the·command·specification.</p><p>By·default,·all·positional·arguments·must·be·present·in·the·command·line.·The600 they·appear·in·the·arguments·list·of·the·command·specification.</p><p>By·default,·all·positional·arguments·must·be·present·in·the·command·line.·The
601 parser·will·return·an·error·otherwise.·Options,·however,·may·be·omitted,·in601 parser·will·return·an·error·otherwise.·Options,·however,·may·be·omitted,·in
602 which·case·resulting·argument·map·will·either·contain·the·default·value,·or·not602 which·case·resulting·argument·map·will·either·contain·the·default·value,·or·not
603 have·the·key·at·all.</p><ul><li><p><strong><code·class="inline">name</code></strong>·-·Sets·the·argument·name·in·the·parsed·argument·map.·If·<code·class="inline">help</code>·is603 have·the·key·at·all.</p><ul><li><p><strong><code·class="inline">name</code></strong>·-·Sets·the·argument·name·in·the·parsed·argument·map.·If·<code·class="inline">help</code>·is
604 not·defined,·name·is·also·used·to·generate·the·default·usage·message.</p></li><li><p><strong><code·class="inline">short</code></strong>·-·Defines·a·short·(single·character)·form·of·an·optional·argument.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Define·a·command·accepting·argument·named·myarg,·with·short·form·$a:</span><span·class="gp·unselectable">604 not·defined,·name·is·also·used·to·generate·the·default·usage·message.</p></li><li><p><strong><code·class="inline">short</code></strong>·-·Defines·a·short·(single·character)·form·of·an·optional·argument.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Define·a·command·accepting·argument·named·myarg,·with·short·form·$a:</span><span·class="gp·unselectable">
605 1&gt;·</span><span·class="n">Cmd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2215028123-1">#{</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2215028123-2">[</span><span·class="p"·data-group-id="2215028123-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·442,·SHA:·402cbaed0d99e201457905727bfc66603a7770c8c50538f95182dae24da39b5f·...·]-1">}</span><span·class="p">.</span><span·class="w">605 1&gt;·</span><span·class="n">Cmd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9851432849-1">#{</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9851432849-2">[</span><span·class="p"·data-group-id="9851432849-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·442,·SHA:·2ecbf1b520abfb866cbf5f597c75cb3d58cba74f72bcc2eef4be9baef6f9f05e·...·]-1">}</span><span·class="p">.</span><span·class="w">
606 </span><span·class="c1">%%·Parse·command·line·&quot;-a·str&quot;:</span><span·class="gp·unselectable">606 </span><span·class="c1">%%·Parse·command·line·&quot;-a·str&quot;:</span><span·class="gp·unselectable">
607 2&gt;·</span><span·class="p"·data-group-id="2215028123-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·620,·SHA:·0a7fa750dd813558d0dd2db298eb613ed5d2d761b48ff2535983d817c858d8e2·...·]-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">607 2&gt;·</span><span·class="p"·data-group-id="9851432849-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·620,·SHA:·24272a1804d82b3a01280fcee15c6d181fbbaf6694497c18e88fda6a5a4ea696·...·]-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">
  
608 </span><span·class="p"·data-group-id="2215028123-7">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;str&quot;</span><span·class="p"·data-group-id="2215028123-7">}</span><span·class="w">608 </span><span·class="p"·data-group-id="9851432849-7">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;str&quot;</span><span·class="p"·data-group-id="9851432849-7">}</span><span·class="w">
  
609 </span><span·class="c1">%%·Option·value·can·be·concatenated·with·the·switch:·&quot;-astr&quot;</span><span·class="gp·unselectable">609 </span><span·class="c1">%%·Option·value·can·be·concatenated·with·the·switch:·&quot;-astr&quot;</span><span·class="gp·unselectable">
610 3&gt;·</span><span·class="p"·data-group-id="2215028123-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·539,·SHA:·f89f8018fa1d119474221eb36f23e05584842a6e34d9aba86a6ee1cac9d843eb·...·]-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">610 3&gt;·</span><span·class="p"·data-group-id="9851432849-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·539,·SHA:·41093a971c851b7eefad64b992ee1d50d6eb5d7b0e171f91cf0166ca61de70d2·...·]-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">
  
611 </span><span·class="p"·data-group-id="2215028123-11">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;str&quot;</span><span·class="p"·data-group-id="2215028123-11">}</span></code></pre><p>By·default·all·options·expect·a·single·value·following·the·option·switch.·The611 </span><span·class="p"·data-group-id="9851432849-11">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;str&quot;</span><span·class="p"·data-group-id="9851432849-11">}</span></code></pre><p>By·default·all·options·expect·a·single·value·following·the·option·switch.·The
612 only·exception·is·an·option·of·a·boolean·type.</p></li><li><p><strong><code·class="inline">long</code></strong>·-·Defines·a·long·form·of·an·optional·argument.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Cmd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5354221173-1">#{</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5354221173-2">[</span><span·class="p"·data-group-id="5354221173-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·453,·SHA:·9f29fe596c6379404130b99944e28ba3f78337e328c7626cc1a9bf5a247c782d·...·]3-1">}</span><span·class="p">.</span><span·class="w">612 only·exception·is·an·option·of·a·boolean·type.</p></li><li><p><strong><code·class="inline">long</code></strong>·-·Defines·a·long·form·of·an·optional·argument.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Cmd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4413177463-1">#{</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4413177463-2">[</span><span·class="p"·data-group-id="4413177463-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·453,·SHA:·91e839eb98ebbe64ea4db8eae0d3c68b7ac12d96ef675d562747d0e57f202b42·...·]3-1">}</span><span·class="p">.</span><span·class="w">
613 </span><span·class="c1">%%·Parse·command·line·&quot;-name·Erlang&quot;:</span><span·class="gp·unselectable">613 </span><span·class="c1">%%·Parse·command·line·&quot;-name·Erlang&quot;:</span><span·class="gp·unselectable">
614 2&gt;·</span><span·class="p"·data-group-id="5354221173-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·625,·SHA:·153f183b1828a385bade1684c1e0aaaafa8767632c2cf6a702ed46acf1dc4661·...·]3-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">614 2&gt;·</span><span·class="p"·data-group-id="4413177463-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·625,·SHA:·de8a1cfa31b411d2bf59d9b2e8b1ec684329013d588501d53b35084f53b54e06·...·]3-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">
  
615 </span><span·class="p"·data-group-id="5354221173-7">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;Erlang&quot;</span><span·class="p"·data-group-id="5354221173-7">}</span><span·class="w">615 </span><span·class="p"·data-group-id="4413177463-7">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;Erlang&quot;</span><span·class="p"·data-group-id="4413177463-7">}</span><span·class="w">
616 </span><span·class="c1">%%·Or·use·&quot;=&quot;·to·separate·the·switch·and·the·value:</span><span·class="gp·unselectable">616 </span><span·class="c1">%%·Or·use·&quot;=&quot;·to·separate·the·switch·and·the·value:</span><span·class="gp·unselectable">
617 3&gt;·</span><span·class="p"·data-group-id="5354221173-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·545,·SHA:·e1bfb51af26ac71d8da8e549858fd95fb5ec4a6f9e69abfac07b1ad40dfb0293·...·]3-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">617 3&gt;·</span><span·class="p"·data-group-id="4413177463-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·545,·SHA:·66d11fe35a2a6e2804f52f2548421cbb28d09ee5c1aeb0a50bdefef97bbe2a03·...·]3-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArgMap</span><span·class="p">.</span><span·class="w">
  
618 </span><span·class="p"·data-group-id="5354221173-11">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;Erlang&quot;</span><span·class="p"·data-group-id="5354221173-11">}</span></code></pre><p>If·neither·<code·class="inline">short</code>·not·<code·class="inline">long</code>·is·defined,·the·argument·is·treated·as618 </span><span·class="p"·data-group-id="4413177463-11">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;Erlang&quot;</span><span·class="p"·data-group-id="4413177463-11">}</span></code></pre><p>If·neither·<code·class="inline">short</code>·not·<code·class="inline">long</code>·is·defined,·the·argument·is·treated·as
619 positional.</p></li><li><p><strong><code·class="inline">required</code></strong>·-·Forces·the·parser·to·expect·the·argument·to·be·present·in·the619 positional.</p></li><li><p><strong><code·class="inline">required</code></strong>·-·Forces·the·parser·to·expect·the·argument·to·be·present·in·the
620 command·line.·By·default,·all·positional·argument·are·required,·and·all620 command·line.·By·default,·all·positional·argument·are·required,·and·all
621 options·are·not.</p></li><li><p><strong><code·class="inline">default</code></strong>·-·Specifies·the·default·value·to·put·in·the·parsed·argument·map621 options·are·not.</p></li><li><p><strong><code·class="inline">default</code></strong>·-·Specifies·the·default·value·to·put·in·the·parsed·argument·map
622 if·the·value·is·not·supplied·in·the·command·line.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="2268598119-1">(</span><span·class="p"·data-group-id="2268598119-2">[</span><span·class="p"·data-group-id="2268598119-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2268598119-3">#{</span><span·class="ss">arguments<[·...·truncated·by·diffoscope;·len:·701,·SHA:·40c4652a59032e21a29fbb2b57616f4bac9722b7d7db0ab56051eba9f7caf956·...·]-1">)</span><span·class="p">.</span><span·class="w">622 if·the·value·is·not·supplied·in·the·command·line.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="2444259235-1">(</span><span·class="p"·data-group-id="2444259235-2">[</span><span·class="p"·data-group-id="2444259235-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2444259235-3">#{</span><span·class="ss">arguments<[·...·truncated·by·diffoscope;·len:·701,·SHA:·8606a4b60eeba905ae46fff0053b47dac538de3d65bff4d5319cfbb1d3baadb5·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
623 </span><span·class="p"·data-group-id="2268598119-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2268598119-7">#{</span><span·class="p"·data-group-id="2268598119-7">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">623 </span><span·class="p"·data-group-id="2444259235-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2444259235-7">#{</span><span·class="p"·data-group-id="2444259235-7">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
624 2&gt;·</span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="2268598119-8">(</span><span·class="p"·data-group-id="2268598119-9">[</span><span·class="p"·data-group-id="2268598119-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2268598119-10">#{</span><span·class="ss">arguments[·...·truncated·by·diffoscope;·len:·900,·SHA:·806f58c5742da5795e63e6d6eefdcb02be0f051986bb612e4a72c98c81303921·...·]-8">)</span><span·class="p">.</span><span·class="w">624 2&gt;·</span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="2444259235-8">(</span><span·class="p"·data-group-id="2444259235-9">[</span><span·class="p"·data-group-id="2444259235-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2444259235-10">#{</span><span·class="ss">arguments[·...·truncated·by·diffoscope;·len:·900,·SHA:·0672feae09371249a5c92790ebf87d1e33ff218673803400d946e1b6e14ef599·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
625 </span><span·class="p"·data-group-id="2268598119-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2268598119-14">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·55,·SHA:·fdc35227864f14eb11df959e953609b5ef2efb2fe37a2eeb2e1b189b8c6345dc·...·]-14">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre></li><li><p><strong><code·class="inline">type</code></strong>·-·Defines·type·conversion·and·validation·routine.·The·default·is625 </span><span·class="p"·data-group-id="2444259235-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2444259235-14">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·55,·SHA:·80b01bebb0f47a194c8fd33807e15915b70c4a6f3303c9c4d6ec3debf33ed87a·...·]-14">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre></li><li><p><strong><code·class="inline">type</code></strong>·-·Defines·type·conversion·and·validation·routine.·The·default·is
626 <code·class="inline">string</code>,·assuming·no·conversion.</p></li><li><p><strong><code·class="inline">nargs</code></strong>·-·Defines·the·number·of·following·arguments·to·consume·from·the626 <code·class="inline">string</code>,·assuming·no·conversion.</p></li><li><p><strong><code·class="inline">nargs</code></strong>·-·Defines·the·number·of·following·arguments·to·consume·from·the
627 command·line.·By·default,·the·parser·consumes·the·next·argument·and·converts627 command·line.·By·default,·the·parser·consumes·the·next·argument·and·converts
628 it·into·an·Erlang·term·according·to·the·specified·type.</p><ul><li><p><strong><a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pos_integer/0"><code·class="inline">pos_integer/0</code></a></strong>·-·Consume·exactly·this·number·of·positional·arguments,628 it·into·an·Erlang·term·according·to·the·specified·type.</p><ul><li><p><strong><a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pos_integer/0"><code·class="inline">pos_integer/0</code></a></strong>·-·Consume·exactly·this·number·of·positional·arguments,
629 fail·if·there·is·not·enough.·Value·in·the·argument·map·contains·a·list·of629 fail·if·there·is·not·enough.·Value·in·the·argument·map·contains·a·list·of
630 exactly·this·length.·Example,·defining·a·positional·argument·expecting·3630 exactly·this·length.·Example,·defining·a·positional·argument·expecting·3
631 integer·values:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Cmd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1766546938-1">#{</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1766546938-2">[</span><span·class="p"·data-group-id="1766546938-3">#{</span><span·class="ss">n[·...·truncated·by·diffoscope;·len:·622,·SHA:·caa64497d824b1b1b1fbd27b9809c81f460bb1c366d732a6d7f247e6a1554978·...·]-1">}</span><span·class="p">,</span><span·class="w">631 integer·values:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Cmd</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1484128901-1">#{</span><span·class="ss">arguments</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1484128901-2">[</span><span·class="p"·data-group-id="1484128901-3">#{</span><span·class="ss">n[·...·truncated·by·diffoscope;·len:·622,·SHA:·54e47c170a433cba323d10af9bd5b36ae3427ae30a1bf28614c2b8c069e98095·...·]-1">}</span><span·class="p">,</span><span·class="w">
632 </span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="1766546938-4">(</span><span·class="p"·data-group-id="1766546938-5">[</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s[·...·truncated·by·diffoscope;·len:·190,·SHA:·74a9878354c848e69393bc8c7dd993173064de8cba5a335a8181ce469bf4e26e·...·]-4">)</span><span·class="p">.</span><span·class="w">632 </span><span·class="nc">argparse</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="1484128901-4">(</span><span·class="p"·data-group-id="1484128901-5">[</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s[·...·truncated·by·diffoscope;·len:·190,·SHA:·dda0941d0b0b6fbd74ac2365be09015edc836476543cce3154928867cbc9b700·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
Max diff block lines reached; 68380/128013 bytes (53.42%) of diff not shown.
25.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/array.html
    
Offset 132, 22 lines modifiedOffset 132, 22 lines modified
132 is·used·for·entries·that·have·not·been·explicitly·set.</p><p>Arrays·uses·<em>zero</em>-based·indexing.·This·is·a·deliberate·design·choice·and132 is·used·for·entries·that·have·not·been·explicitly·set.</p><p>Arrays·uses·<em>zero</em>-based·indexing.·This·is·a·deliberate·design·choice·and
133 differs·from·other·Erlang·data·structures,·for·example,·tuples.</p><p>Unless·specified·by·the·user·when·the·array·is·created,·the·default·value·is·the133 differs·from·other·Erlang·data·structures,·for·example,·tuples.</p><p>Unless·specified·by·the·user·when·the·array·is·created,·the·default·value·is·the
134 atom·<code·class="inline">undefined</code>.·There·is·no·difference·between·an·unset·entry·and·an·entry134 atom·<code·class="inline">undefined</code>.·There·is·no·difference·between·an·unset·entry·and·an·entry
135 that·has·been·explicitly·set·to·the·same·value·as·the·default·one·(compare135 that·has·been·explicitly·set·to·the·same·value·as·the·default·one·(compare
136 <a·href="#reset/2"><code·class="inline">reset/2</code></a>).·If·you·need·to·differentiate·between·unset·and·set·entries,·ensure136 <a·href="#reset/2"><code·class="inline">reset/2</code></a>).·If·you·need·to·differentiate·between·unset·and·set·entries,·ensure
137 that·the·default·value·cannot·be·confused·with·the·values·of·set·entries.</p><p>The·array·never·shrinks·automatically.·If·an·index·<code·class="inline">I</code>·has·been·used·to·set·an137 that·the·default·value·cannot·be·confused·with·the·values·of·set·entries.</p><p>The·array·never·shrinks·automatically.·If·an·index·<code·class="inline">I</code>·has·been·used·to·set·an
138 entry·successfully,·all·indices·in·the·range·<code·class="inline">[0,I]</code>·stay·accessible·unless·the138 entry·successfully,·all·indices·in·the·range·<code·class="inline">[0,I]</code>·stay·accessible·unless·the
139 array·size·is·explicitly·changed·by·calling·<a·href="#resize/2"><code·class="inline">resize/2</code></a>.</p><p><em>Examples:</em></p><p>Create·a·fixed-size·array·with·entries·0-9·set·to·<code·class="inline">undefined</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="4600208058-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="4600208058-1">)</span><span·class="p">.</span><span·class="w">139 array·size·is·explicitly·changed·by·calling·<a·href="#resize/2"><code·class="inline">resize/2</code></a>.</p><p><em>Examples:</em></p><p>Create·a·fixed-size·array·with·entries·0-9·set·to·<code·class="inline">undefined</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="8217968525-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="8217968525-1">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="mi">10</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">size</span><span·class="p"·data-group-id="4600208058-2">(</span><span·class="n">A0</span><span·class="p"·data-group-id="4600208058-2">)</span><span·class="p">.</span></code></pre><p>Create·an·extendible·array·and·set·entry·17·to·<code·class="inline">true</code>,·causing·the·array·to·grow140 </span><span·class="mi">10</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">size</span><span·class="p"·data-group-id="8217968525-2">(</span><span·class="n">A0</span><span·class="p"·data-group-id="8217968525-2">)</span><span·class="p">.</span></code></pre><p>Create·an·extendible·array·and·set·entry·17·to·<code·class="inline">true</code>,·causing·the·array·to·grow
141 automatically:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="8027158916-1">(</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·dc1344dd97343ead9d245ecb9b9ac070d0b02a82e93e8eea78d86aa44bdfa791·...·]-1">)</span><span·class="p">.</span><span·class="w">141 automatically:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="2937090344-1">(</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·f6290887fde79e391fa85360e8e0f198925b15b3914326be7f3e0f5760f4e91f·...·]-1">)</span><span·class="p">.</span><span·class="w">
142 </span><span·class="mi">18</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">size</span><span·class="p"·data-group-id="8027158916-3">(</span><span·class="n">A1</span><span·class="p"·data-group-id="8027158916-3">)</span><span·class="p">.</span></code></pre><p>Read·back·a·stored·value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">true</span><span·class[·...·truncated·by·diffoscope;·len:·862,·SHA:·17b7ee41345be3691d5bc34f19421978c22154e6398acf7154374d4202b20011·...·]-1">)</span></code></pre><p>Accessing·an·entry·beyond·the·last·set·entry·also·returns·the·default·value,·if142 </span><span·class="mi">18</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">size</span><span·class="p"·data-group-id="2937090344-3">(</span><span·class="n">A1</span><span·class="p"·data-group-id="2937090344-3">)</span><span·class="p">.</span></code></pre><p>Read·back·a·stored·value:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">true</span><span·class[·...·truncated·by·diffoscope;·len:·862,·SHA:·88b07f111839d3733b6705a539eef3939f8cdeffb8932e21530ca2a2cf1944b2·...·]-1">)</span></code></pre><p>Accessing·an·entry·beyond·the·last·set·entry·also·returns·the·default·value,·if
143 the·array·does·not·have·fixed·size:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">undefined</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="3250223994-1">(</span><span·class="mi">18</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A1</span><span·class="p"·data-group-id="3250223994-1">)</span><span·class="p">.</span></code></pre><p>&quot;Sparse&quot;·functions·ignore·defaul[·...·truncated·by·diffoscope;·len:·515,·SHA:·e620484311a29782e66c2f0c31926ce820de584febe5f31f784c4db0134b8241·...·]-1">)</span><span·class="p">.</span><span·class="w">143 the·array·does·not·have·fixed·size:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">undefined</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="6400986025-1">(</span><span·class="mi">18</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A1</span><span·class="p"·data-group-id="6400986025-1">)</span><span·class="p">.</span></code></pre><p>&quot;Sparse&quot;·functions·ignore·defaul[·...·truncated·by·diffoscope;·len:·515,·SHA:·3cfdedf8fb75c2fb4ca0c5324548cdbc98a93d138a05f84e53a82b58e22caf00·...·]-1">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p"·data-group-id="2692509530-2">[</span><span·class="p"·data-group-id="2692509530-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="2692509530-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2692509530-4">{</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2692509530-4">}</span><span·class="p"·data-group-id="2692509530-2">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">sparse_to_orddict</span><span·class="p"·data-group-id="2692509530-5">(</span><span·class="n">A2</span><span·class="p"·data-group-id="2692509530-5">)</span><span·class="p">.</span></code></pre><p>An·extendible·array·can·be·made·fixed-size·later:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">fix</span><span·class="p"·data-group-id="5765920845-1">(</span><span·class="n">A2</span><span·class="p"·data-group-id="5765920845-1">)</span><span·class="p">.</span></code></pre><p>A·fixed-size·array·does·not·grow·automatically·and·does·not·allow·accesses 
145 beyond·the·last·set·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1779388430-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1779388430-2">{</span><span·clas[·...·truncated·by·diffoscope;·len:·805,·SHA:·c61fe9ca07286091314ae702486aa990bbaec47d3484f0c86c8031318820767a·...·]144 </span><span·class="p"·data-group-id="5531764898-2">[</span><span·class="p"·data-group-id="5531764898-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="5531764898[·...·truncated·by·diffoscope;·len:·1181,·SHA:·4aa4244fde27afcee6b854b7b209ea89596aff6c62d382649fd601cfbde4747f·...·]
 145 beyond·the·last·set·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1206037837-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1206037837-2">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1206037837-2">}</span><span·class="p"·data-group-id="1206037837-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1206037837-3">(</span><span·class="k">catch</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="1206037837-4">(</span><span·class="mi">18</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A3</span><span·class="p"·data-group-id="1206037837-4">)</span><span·class="p"·data-group-id="1206037837-3">)</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="1779388430-5">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1779388430-6">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1779388430-[·...·truncated·by·diffoscope;·len:·567,·SHA:·756fd9a285022933241d215e838a80483521a39950470e9e4fcaf4eef22fec08·...·]-7">)</span><span·class="p">.</span></code></pre>146 </span><span·class="p"·data-group-id="1206037837-5">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1206037837-6">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1206037837-[·...·truncated·by·diffoscope;·len:·567,·SHA:·bbfb0688bf48cfad89c52afcfdeb3c4b325422b6583cb8f64ad81dbe52cb34ae·...·]-7">)</span><span·class="p">.</span></code></pre>
147 ····</section>147 ····</section>
  
148 </div>148 </div>
  
149 ··<section·id="summary"·class="details-list">149 ··<section·id="summary"·class="details-list">
150 ····<h1·class="section-heading">150 ····<h1·class="section-heading">
151 ······<a·class="hover-link"·href="#summary">151 ······<a·class="hover-link"·href="#summary">
Offset 1138, 15 lines modifiedOffset 1138, 15 lines modified
1138 ······</div>1138 ······</div>
  
1139 <p>Creates·a·new·array·according·to·the·specified·options.·By·default,·the·array·is1139 <p>Creates·a·new·array·according·to·the·specified·options.·By·default,·the·array·is
1140 extendible·and·has·initial·size·zero.·Array·indices·start·at·<code·class="inline">0</code>.</p><p><code·class="inline">Options</code>·is·a·single·term·or·a·list·of·terms,·selected·from·the·following:</p><ul><li><p><strong><code·class="inline">N::integer()·&gt;=·0</code>·or·<code·class="inline">{size,·N::integer()·&gt;=·0}</code></strong>·-·Specifies·the·initial1140 extendible·and·has·initial·size·zero.·Array·indices·start·at·<code·class="inline">0</code>.</p><p><code·class="inline">Options</code>·is·a·single·term·or·a·list·of·terms,·selected·from·the·following:</p><ul><li><p><strong><code·class="inline">N::integer()·&gt;=·0</code>·or·<code·class="inline">{size,·N::integer()·&gt;=·0}</code></strong>·-·Specifies·the·initial
1141 array·size;·this·also·implies·<code·class="inline">{fixed,·true}</code>.·If·<code·class="inline">N</code>·is·not·a·non-negative1141 array·size;·this·also·implies·<code·class="inline">{fixed,·true}</code>.·If·<code·class="inline">N</code>·is·not·a·non-negative
1142 integer,·the·call·fails·with·reason·<code·class="inline">badarg</code>.</p></li><li><p><strong><code·class="inline">fixed</code>·or·<code·class="inline">{fixed,·true}</code></strong>·-·Creates·a·fixed-size·array.·See·also·<a·href="#fix/1"><code·class="inline">fix/1</code></a>.</p></li><li><p><strong><code·class="inline">{fixed,·false}</code></strong>·-·Creates·an·extendible·(non-fixed-size)·array.</p></li><li><p><strong><code·class="inline">{default,·Value}</code></strong>·-·Sets·the·default·value·for·the·array·to·<code·class="inline">Value</code>.</p></li></ul><p>Options·are·processed·in·the·order·they·occur·in·the·list,·that·is,·later1142 integer,·the·call·fails·with·reason·<code·class="inline">badarg</code>.</p></li><li><p><strong><code·class="inline">fixed</code>·or·<code·class="inline">{fixed,·true}</code></strong>·-·Creates·a·fixed-size·array.·See·also·<a·href="#fix/1"><code·class="inline">fix/1</code></a>.</p></li><li><p><strong><code·class="inline">{fixed,·false}</code></strong>·-·Creates·an·extendible·(non-fixed-size)·array.</p></li><li><p><strong><code·class="inline">{default,·Value}</code></strong>·-·Sets·the·default·value·for·the·array·to·<code·class="inline">Value</code>.</p></li></ul><p>Options·are·processed·in·the·order·they·occur·in·the·list,·that·is,·later
1143 options·have·higher·precedence.</p><p>The·default·value·is·used·as·the·value·of·uninitialized·entries,·and·cannot·be1143 options·have·higher·precedence.</p><p>The·default·value·is·used·as·the·value·of·uninitialized·entries,·and·cannot·be
1144 changed·once·the·array·has·been·created.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="5531204382-1">(</span><span·class="mi">100</span><span·class="p"·data-group-id="5531204382-1">)</span></code></pre><p>creates·a·fixed-size·array·of·size·100.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">array</span><span·class="p">:<[·...·truncated·by·diffoscope;·len:·1391,·SHA:·a550c73c23e070b58a8bc528f7d927c31e08ebc86517fb4c0a347be07f72dfda·...·]-1">)</span></code></pre><p>creates·an·extendible·array·with·initial·size·10·whose·default·value·is·<code·class="inline">-1</code>.</p><p>See·also·<a·href="#fix/1"><code·class="inline">fix/1</code></a>,·<a·href="#from_list/2"><code·class="inline">from_list/2</code></a>,·<a·href="#get/2"><code·class="inline">get/2</code></a>,·<a·href="#new/0"><code·class="inline">new/0</code></a>,·<a·href="#new/2"><code·class="inline">new/2</code></a>,·<a·href="#set/3"><code·class="inline">set/3</code></a>.</p>1144 changed·once·the·array·has·been·created.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="3663928475-1">(</span><span·class="mi">100</span><span·class="p"·data-group-id="3663928475-1">)</span></code></pre><p>creates·a·fixed-size·array·of·size·100.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">array</span><span·class="p">:<[·...·truncated·by·diffoscope;·len:·1391,·SHA:·2068a45e84bf9c9569f7f0ed77a644911be1725cda58458497b186f32a179e5f·...·]-1">)</span></code></pre><p>creates·an·extendible·array·with·initial·size·10·whose·default·value·is·<code·class="inline">-1</code>.</p><p>See·also·<a·href="#fix/1"><code·class="inline">fix/1</code></a>,·<a·href="#from_list/2"><code·class="inline">from_list/2</code></a>,·<a·href="#get/2"><code·class="inline">get/2</code></a>,·<a·href="#new/0"><code·class="inline">new/0</code></a>,·<a·href="#new/2"><code·class="inline">new/2</code></a>,·<a·href="#set/3"><code·class="inline">set/3</code></a>.</p>
1145 ··</section>1145 ··</section>
1146 </section>1146 </section>
1147 <section·class="detail"·id="new/2">1147 <section·class="detail"·id="new/2">
  
1148 ··<div·class="detail-header">1148 ··<div·class="detail-header">
1149 ····<a·href="#new/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1149 ····<a·href="#new/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1150 ······<i·class="ri-link-m"·aria-hidden="true"></i>1150 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1169, 15 lines modifiedOffset 1169, 15 lines modified
1169 ······</div>1169 ······</div>
  
1170 <p>Creates·a·new·array·according·to·the·specified·size·and·options.</p><p>If·<code·class="inline">Size</code>·is·not·a·non-negative·integer,·the·call·fails·with·reason·<code·class="inline">badarg</code>.1170 <p>Creates·a·new·array·according·to·the·specified·size·and·options.</p><p>If·<code·class="inline">Size</code>·is·not·a·non-negative·integer,·the·call·fails·with·reason·<code·class="inline">badarg</code>.
1171 By·default,·the·array·has·fixed·size.·Notice·that·any·size·specifications·in1171 By·default,·the·array·has·fixed·size.·Notice·that·any·size·specifications·in
1172 <code·class="inline">Options</code>·override·parameter·<code·class="inline">Size</code>.</p><p>If·<code·class="inline">Options</code>·is·a·list,·this·is·equivalent·to1172 <code·class="inline">Options</code>·override·parameter·<code·class="inline">Size</code>.</p><p>If·<code·class="inline">Options</code>·is·a·list,·this·is·equivalent·to
1173 <a·href="#new/1"><code·class="inline">new([{size,·Size}·|·Options])</code></a>,·otherwise·it·is·equivalent·to1173 <a·href="#new/1"><code·class="inline">new([{size,·Size}·|·Options])</code></a>,·otherwise·it·is·equivalent·to
1174 <a·href="#new/1"><code·class="inline">new([{size,·Size}·|·[Options]])</code></a>.·However,·using·this·function1174 <a·href="#new/1"><code·class="inline">new([{size,·Size}·|·[Options]])</code></a>.·However,·using·this·function
1175 directly·is·more·efficient.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="3354578141-1">(</span><span·class="mi">100</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3354578141-2">{</span><span·class="ss">default</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·26c2b63125a27913b793d457cff4eb98f3e961c0eadf0d6215b631173267f0ad·...·]-1">)</span></code></pre><p>creates·a·fixed-size·array·of·size·100,·whose·default·value·is·<code·class="inline">0</code>.</p><p>See·also·<a·href="#new/1"><code·class="inline">new/1</code></a>.</p>1175 directly·is·more·efficient.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="6416225290-1">(</span><span·class="mi">100</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6416225290-2">{</span><span·class="ss">default</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·9f645f3fad761e146b508c159e7674724121e96df2e2e7806a83c5df9bd8569a·...·]-1">)</span></code></pre><p>creates·a·fixed-size·array·of·size·100,·whose·default·value·is·<code·class="inline">0</code>.</p><p>See·also·<a·href="#new/1"><code·class="inline">new/1</code></a>.</p>
1176 ··</section>1176 ··</section>
1177 </section>1177 </section>
1178 <section·class="detail"·id="relax/1">1178 <section·class="detail"·id="relax/1">
  
1179 ··<div·class="detail-header">1179 ··<div·class="detail-header">
1180 ····<a·href="#relax/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1180 ····<a·href="#relax/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1181 ······<i·class="ri-link-m"·aria-hidden="true"></i>1181 ······<i·class="ri-link-m"·aria-hidden="true"></i>
7.27 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/assert_hrl.html
    
Offset 128, 15 lines modifiedOffset 128, 15 lines modified
128 <p>Assert·macros.</p><h2·id="description"·class="section-heading">128 <p>Assert·macros.</p><h2·id="description"·class="section-heading">
129 ··<a·href="#description"·class="hover-link">129 ··<a·href="#description"·class="hover-link">
130 ····<i·class="ri-link-m"·aria-hidden="true"></i>130 ····<i·class="ri-link-m"·aria-hidden="true"></i>
131 ··</a>131 ··</a>
132 ··<span·class="text">Description</span>132 ··<span·class="text">Description</span>
133 </h2>133 </h2>
134 <p>The·include·file·<code·class="inline">assert.hrl</code>·provides·macros·for·inserting·assertions·in·your134 <p>The·include·file·<code·class="inline">assert.hrl</code>·provides·macros·for·inserting·assertions·in·your
135 program·code.</p><p>Include·the·following·directive·in·the·module·from·which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="4505191226-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="4505191226-1">)</span><span·class="p">.</span></code></pre><p>When·an·assertion·succeeds,·the·assert·macro·yields·the·atom·<code·class="inline">ok</code>.·When·an135 program·code.</p><p>Include·the·following·directive·in·the·module·from·which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="2967306171-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="2967306171-1">)</span><span·class="p">.</span></code></pre><p>When·an·assertion·succeeds,·the·assert·macro·yields·the·atom·<code·class="inline">ok</code>.·When·an
136 assertion·fails,·an·exception·of·type·<code·class="inline">error</code>·is·generated.·The·associated·error136 assertion·fails,·an·exception·of·type·<code·class="inline">error</code>·is·generated.·The·associated·error
137 term·has·the·form·<code·class="inline">{Macro,·Info}</code>.·<code·class="inline">Macro</code>·is·the·macro·name,·for·example,137 term·has·the·form·<code·class="inline">{Macro,·Info}</code>.·<code·class="inline">Macro</code>·is·the·macro·name,·for·example,
138 <code·class="inline">assertEqual</code>.·<code·class="inline">Info</code>·is·a·list·of·tagged·values,·such·as138 <code·class="inline">assertEqual</code>.·<code·class="inline">Info</code>·is·a·list·of·tagged·values,·such·as
139 <code·class="inline">[{module,·M},·{line,·L},·...]</code>,·which·gives·more·information·about·the·location139 <code·class="inline">[{module,·M},·{line,·L},·...]</code>,·which·gives·more·information·about·the·location
140 and·cause·of·the·exception.·All·entries·in·the·<code·class="inline">Info</code>·list·are·optional;·do·not140 and·cause·of·the·exception.·All·entries·in·the·<code·class="inline">Info</code>·list·are·optional;·do·not
141 rely·programmatically·on·any·of·them·being·present.</p><p>Each·assert·macro·has·a·corresponding·version·with·an·extra·argument,·for·adding141 rely·programmatically·on·any·of·them·being·present.</p><p>Each·assert·macro·has·a·corresponding·version·with·an·extra·argument,·for·adding
142 comments·to·assertions.·These·can·for·example·be·printed·as·part·of·error142 comments·to·assertions.·These·can·for·example·be·printed·as·part·of·error
Offset 156, 15 lines modifiedOffset 156, 15 lines modified
156 ····<i·class="ri-link-m"·aria-hidden="true"></i>156 ····<i·class="ri-link-m"·aria-hidden="true"></i>
157 ··</a>157 ··</a>
158 ··<span·class="text">Macros</span>158 ··<span·class="text">Macros</span>
159 </h2>159 </h2>
160 <ul><li><p><strong><code·class="inline">assert(BoolExpr)</code></strong></p></li><li><p><strong><code·class="inline">assert(BoolExpr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">BoolExpr</code>·completes·normally160 <ul><li><p><strong><code·class="inline">assert(BoolExpr)</code></strong></p></li><li><p><strong><code·class="inline">assert(BoolExpr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">BoolExpr</code>·completes·normally
161 returning·<code·class="inline">true</code>.</p></li><li><p><strong><code·class="inline">assertNot(BoolExpr)</code></strong></p></li><li><p><strong><code·class="inline">assertNot(BoolExpr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">BoolExpr</code>·completes·normally161 returning·<code·class="inline">true</code>.</p></li><li><p><strong><code·class="inline">assertNot(BoolExpr)</code></strong></p></li><li><p><strong><code·class="inline">assertNot(BoolExpr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">BoolExpr</code>·completes·normally
162 returning·<code·class="inline">false</code>.</p></li><li><p><strong><code·class="inline">assertMatch(GuardedPattern,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertMatch(GuardedPattern,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>·completes162 returning·<code·class="inline">false</code>.</p></li><li><p><strong><code·class="inline">assertMatch(GuardedPattern,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertMatch(GuardedPattern,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>·completes
163 normally·yielding·a·value·that·matches·<code·class="inline">GuardedPattern</code>,·for·example:</p><pre><code·class="text">?assertMatch({bork,·_},·f())</code></pre><p>Notice·that·a·guard·<code·class="inline">when·...</code>·can·be·included:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="nf">assertMatch</span><span·class="p"·data-group-id="0531340237-1">(</span><span·class="p"·data-group-id="0531340237-2">{</span><span·class="ss">bork</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="0531340237-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·a544c7cd7efd68ac76337598a02e4e38e5a5b1e92e63219eebf507a222d54a42·...·]-1">)</span></code></pre></li><li><p><strong><code·class="inline">assertNotMatch(GuardedPattern,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertNotMatch(GuardedPattern,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>163 normally·yielding·a·value·that·matches·<code·class="inline">GuardedPattern</code>,·for·example:</p><pre><code·class="text">?assertMatch({bork,·_},·f())</code></pre><p>Notice·that·a·guard·<code·class="inline">when·...</code>·can·be·included:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="nf">assertMatch</span><span·class="p"·data-group-id="8934268998-1">(</span><span·class="p"·data-group-id="8934268998-2">{</span><span·class="ss">bork</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="8934268998-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·1dd8f5ee87c1a1fe0e6761c8281c71e1e2b8762d74cc7db41203950ed0515237·...·]-1">)</span></code></pre></li><li><p><strong><code·class="inline">assertNotMatch(GuardedPattern,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertNotMatch(GuardedPattern,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>
164 completes·normally·yielding·a·value·that·does·not·match·<code·class="inline">GuardedPattern</code>.</p><p>As·in·<code·class="inline">assertMatch</code>,·<code·class="inline">GuardedPattern</code>·can·have·a·<code·class="inline">when</code>·part.</p></li><li><p><strong><code·class="inline">assertEqual(ExpectedValue,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertEqual(ExpectedValue,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>·completes164 completes·normally·yielding·a·value·that·does·not·match·<code·class="inline">GuardedPattern</code>.</p><p>As·in·<code·class="inline">assertMatch</code>,·<code·class="inline">GuardedPattern</code>·can·have·a·<code·class="inline">when</code>·part.</p></li><li><p><strong><code·class="inline">assertEqual(ExpectedValue,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertEqual(ExpectedValue,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>·completes
165 normally·yielding·a·value·that·is·exactly·equal·to·<code·class="inline">ExpectedValue</code>.</p></li><li><p><strong><code·class="inline">assertNotEqual(ExpectedValue,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertNotEqual(ExpectedValue,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>165 normally·yielding·a·value·that·is·exactly·equal·to·<code·class="inline">ExpectedValue</code>.</p></li><li><p><strong><code·class="inline">assertNotEqual(ExpectedValue,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertNotEqual(ExpectedValue,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>
166 completes·normally·yielding·a·value·that·is·not·exactly·equal·to166 completes·normally·yielding·a·value·that·is·not·exactly·equal·to
167 <code·class="inline">ExpectedValue</code>.</p></li><li><p><strong><code·class="inline">assertException(Class,·Term,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertException(Class,·Term,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>167 <code·class="inline">ExpectedValue</code>.</p></li><li><p><strong><code·class="inline">assertException(Class,·Term,·Expr)</code></strong></p></li><li><p><strong><code·class="inline">assertException(Class,·Term,·Expr,·Comment)</code></strong>·-·Tests·that·<code·class="inline">Expr</code>
168 completes·abnormally·with·an·exception·of·type·<code·class="inline">Class</code>·and·with·the·associated168 completes·abnormally·with·an·exception·of·type·<code·class="inline">Class</code>·and·with·the·associated
169 <code·class="inline">Term</code>.·The·assertion·fails·if·<code·class="inline">Expr</code>·raises·a·different·exception·or·if·it169 <code·class="inline">Term</code>.·The·assertion·fails·if·<code·class="inline">Expr</code>·raises·a·different·exception·or·if·it
170 completes·normally·returning·any·value.</p><p>Notice·that·both·<code·class="inline">Class</code>·and·<code·class="inline">Term</code>·can·be·guarded·patterns,·as·in170 completes·normally·returning·any·value.</p><p>Notice·that·both·<code·class="inline">Class</code>·and·<code·class="inline">Term</code>·can·be·guarded·patterns,·as·in
10.4 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/base64.html
    
Offset 649, 24 lines modifiedOffset 649, 24 lines modified
649 ····················Data·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>649 ····················Data·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>
  
650 ······</div>650 ······</div>
  
651 <p>Decodes·a·base64·string·encoded·using·the·standard·alphabet·according·to651 <p>Decodes·a·base64·string·encoded·using·the·standard·alphabet·according·to
652 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to652 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to
653 plain·ASCII.</p><p>The·function·will·strips·away·any·whitespace·characters·and·check·for·the653 plain·ASCII.</p><p>The·function·will·strips·away·any·whitespace·characters·and·check·for·the
654 the·correct·number·of·<code·class="inline">=</code>·padding·characters·at·the·end·of·the·encoded·string.</p><p>See·<a·href="#t:decode_options/0"><code·class="inline">decode_options/0</code></a>·for·details·on·which·options·can·be·passed.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="4254267513-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="4254267513-1">)</span><span·class="p">.</span><span·class="w">654 the·correct·number·of·<code·class="inline">=</code>·padding·characters·at·the·end·of·the·encoded·string.</p><p>See·<a·href="#t:decode_options/0"><code·class="inline">decode_options/0</code></a>·for·details·on·which·options·can·be·passed.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="3730961767-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="3730961767-1">)</span><span·class="p">.</span><span·class="w">
655 </span><span·class="p"·data-group-id="4254267513-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="4254267513-2">&gt;&gt;</span><span·class="gp·unselectable">655 </span><span·class="p"·data-group-id="3730961767-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="3730961767-2">&gt;&gt;</span><span·class="gp·unselectable">
656 2&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="4254267513-3">(</span><span·class="s">&quot;AQ·ID·BA==&quot;</span><span·class="p"·data-group-id="4254267513-3">)</span><span·class="p">.</span><span·class="w">656 2&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="3730961767-3">(</span><span·class="s">&quot;AQ·ID·BA==&quot;</span><span·class="p"·data-group-id="3730961767-3">)</span><span·class="p">.</span><span·class="w">
657 </span><span·class="p"·data-group-id="4254267513-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="4254267513-4">&gt;&gt;</span><span·class="gp·unselectable">657 </span><span·class="p"·data-group-id="3730961767-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="3730961767-4">&gt;&gt;</span><span·class="gp·unselectable">
658 3&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="4254267513-5">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p"·data-group-id="4254267513-5">)</span><span·class="p">.</span><span·class="w">658 3&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="3730961767-5">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p"·data-group-id="3730961767-5">)</span><span·class="p">.</span><span·class="w">
659 </span><span·class="gt">**·exception·error:·missing_padding659 </span><span·class="gt">**·exception·error:·missing_padding
660 ·····in·function··base64:decode_list/7·(base64.erl,·line·734)660 ·····in·function··base64:decode_list/7·(base64.erl,·line·734)
661 ········***·data·to·decode·is·missing·final·=·padding·characters,·if·this·is·intended,·use·the·`padding·=&gt;·false`·option</span><span·class="gp·unselectable">661 ········***·data·to·decode·is·missing·final·=·padding·characters,·if·this·is·intended,·use·the·`padding·=&gt;·false`·option</span><span·class="gp·unselectable">
662 4&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="4254267513-6">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4254267513-7">#{</span><span·class="w">·</span><span·class="ss">padding</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·188,·SHA:·b044d5e5e2ce8ffa32be8a245f13cfdae3a3918ebd05d9501b9db41f454053c4·...·]-6">)</span><span·class="p">.</span><span·class="w">662 4&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="3730961767-6">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3730961767-7">#{</span><span·class="w">·</span><span·class="ss">padding</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·188,·SHA:·f55e35f41574cc009dd0ec54d9c9c2a99b3be04c2d39b0de9a516e378f17f849·...·]-6">)</span><span·class="p">.</span><span·class="w">
663 </span><span·class="p"·data-group-id="4254267513-8">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="4254267513-8">&gt;&gt;</span></code></pre>663 </span><span·class="p"·data-group-id="3730961767-8">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="3730961767-8">&gt;&gt;</span></code></pre>
664 ··</section>664 ··</section>
665 </section>665 </section>
666 <section·class="detail"·id="decode_to_string/1">666 <section·class="detail"·id="decode_to_string/1">
  
667 ··<div·class="detail-header">667 ··<div·class="detail-header">
668 ····<a·href="#decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">668 ····<a·href="#decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
669 ······<i·class="ri-link-m"·aria-hidden="true"></i>669 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 896, 18 lines modifiedOffset 896, 18 lines modified
896 ·························Data·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>896 ·························Data·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>
  
897 ······</div>897 ······</div>
  
898 <p>Decodes·a·base64·&quot;mime&quot;·string·encoded·using·the·standard·alphabet·according·to898 <p>Decodes·a·base64·&quot;mime&quot;·string·encoded·using·the·standard·alphabet·according·to
899 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to899 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to
900 plain·ASCII.</p><p>The·function·will·strips·away·any·illegal·characters.·It·does·<em>not</em>·check·for·the900 plain·ASCII.</p><p>The·function·will·strips·away·any·illegal·characters.·It·does·<em>not</em>·check·for·the
901 the·correct·number·of·<code·class="inline">=</code>·padding·characters·at·the·end·of·the·encoded·string.</p><p>See·<a·href="#t:decode_options/0"><code·class="inline">decode_options/0</code></a>·for·details·on·which·options·can·be·passed.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">mime_decode</span><span·class="p"·data-group-id="5438009530-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="5438009530-1">)</span><span·class="p">.</span><span·class="w">901 the·correct·number·of·<code·class="inline">=</code>·padding·characters·at·the·end·of·the·encoded·string.</p><p>See·<a·href="#t:decode_options/0"><code·class="inline">decode_options/0</code></a>·for·details·on·which·options·can·be·passed.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">mime_decode</span><span·class="p"·data-group-id="8951801948-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="8951801948-1">)</span><span·class="p">.</span><span·class="w">
902 </span><span·class="p"·data-group-id="5438009530-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="5438009530-2">&gt;&gt;</span><span·class="gp·unselectable">902 </span><span·class="p"·data-group-id="8951801948-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="8951801948-2">&gt;&gt;</span><span·class="gp·unselectable">
903 2&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">mime_decode</span><span·class="p"·data-group-id="5438009530-3">(</span><span·class="s">&quot;AQIDB=A=&quot;</span><span·class="p"·data-group-id="5438009530-3">)</span><span·class="p">.</span><span·class="w">903 2&gt;·</span><span·class="nc">base64</span><span·class="p">:</span><span·class="nf">mime_decode</span><span·class="p"·data-group-id="8951801948-3">(</span><span·class="s">&quot;AQIDB=A=&quot;</span><span·class="p"·data-group-id="8951801948-3">)</span><span·class="p">.</span><span·class="w">
904 </span><span·class="p"·data-group-id="5438009530-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="5438009530-4">&gt;&gt;</span></code></pre>904 </span><span·class="p"·data-group-id="8951801948-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="8951801948-4">&gt;&gt;</span></code></pre>
905 ··</section>905 ··</section>
906 </section>906 </section>
907 <section·class="detail"·id="mime_decode_to_string/1">907 <section·class="detail"·id="mime_decode_to_string/1">
  
908 ··<div·class="detail-header">908 ··<div·class="detail-header">
909 ····<a·href="#mime_decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">909 ····<a·href="#mime_decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
910 ······<i·class="ri-link-m"·aria-hidden="true"></i>910 ······<i·class="ri-link-m"·aria-hidden="true"></i>
25.4 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/beam_lib.html
    
Offset 147, 16 lines modifiedOffset 147, 16 lines modified
147 <a·href="#strip_files/1"><code·class="inline">strip_files/1</code></a>,·and/or·<a·href="#strip_release/1"><code·class="inline">strip_release/1</code></a>.</p><h2·id="module-reconstruct-source-code"·class="section-heading">147 <a·href="#strip_files/1"><code·class="inline">strip_files/1</code></a>,·and/or·<a·href="#strip_release/1"><code·class="inline">strip_release/1</code></a>.</p><h2·id="module-reconstruct-source-code"·class="section-heading">
148 ··<a·href="#module-reconstruct-source-code"·class="hover-link">148 ··<a·href="#module-reconstruct-source-code"·class="hover-link">
149 ····<i·class="ri-link-m"·aria-hidden="true"></i>149 ····<i·class="ri-link-m"·aria-hidden="true"></i>
150 ··</a>150 ··</a>
151 ··<span·class="text">Reconstruct·Source·Code</span>151 ··<span·class="text">Reconstruct·Source·Code</span>
152 </h2>152 </h2>
153 <p>The·following·example·shows·how·to·reconstruct·Erlang·source·code·from·the·debug153 <p>The·following·example·shows·how·to·reconstruct·Erlang·source·code·from·the·debug
154 information·in·a·BEAM·file·<code·class="inline">Beam</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4789212002-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4789212002-2">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p"·data-group-id="4789212002-3">[</span><span·class="p"·data-group-id="4789212002-4">{</span><span·class="ss">abstract_code</span><span·class="p">,</span><span·class="p"·data-group-id="4789212002-5">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">AC</span><span·class="p"·data-group-id="4789212002-5">}</span><span·class="p"·data-group-id="4789212002-4">}</span><span·class="p"·data-group-id="4789212002-3">]</span><span·class="p"·data-group-id="4789212002-2">}</span><span·class="p"·data-group-id="4789212002-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">chunks</span><span·class="p"·data-group-id="4789212002-6">(</span><span·class="n">Beam</span><span·class="p">,</span><span·class="p"·data-group-id="4789212002-7">[</span><span·class="ss">abstract_code</span><span·class="p"·data-group-id="4789212002-7">]</span><span·class="p"·data-group-id="4789212002-6">)</span><span·class="p">.</span><span·class="w"> 
155 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="4789212002-8">(</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="si">~n</span><span·class="s">&quot;</span><span·[·...·truncated·by·diffoscope;·len:·726,·SHA:·bfd7f26d2aee917a49282d554cd4ad5cf3f9ea34d549d780b6c0d3da3e33ec64·...·]">154 information·in·a·BEAM·file·<code·class="inline">Beam</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1428206556-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1428206556[·...·truncated·by·diffoscope;·len:·1114,·SHA:·321956185341556c2cdbedd1bfeae90f2dbd2babe1d95b42aaa8f1912d50680a·...·]">
 155 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="1428206556-8">(</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1428206556-9">[</span><span·class="nc">erl_prettypr</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1428206556-10">(</span><span·class="nc">erl_syntax</span><span·class="p">:</span><span·class="nf">form_list</span><span·class="p"·data-group-id="1428206556-11">(</span><span·class="n">AC</span><span·class="p"·data-group-id="1428206556-11">)</span><span·class="p"·data-group-id="1428206556-10">)</span><span·class="p"·data-group-id="1428206556-9">]</span><span·class="p"·data-group-id="1428206556-8">)</span><span·class="p">.</span></code></pre><h2·id="module-encrypted-debug-information"·class="section-heading">
156 ··<a·href="#module-encrypted-debug-information"·class="hover-link">156 ··<a·href="#module-encrypted-debug-information"·class="hover-link">
157 ····<i·class="ri-link-m"·aria-hidden="true"></i>157 ····<i·class="ri-link-m"·aria-hidden="true"></i>
158 ··</a>158 ··</a>
159 ··<span·class="text">Encrypted·Debug·Information</span>159 ··<span·class="text">Encrypted·Debug·Information</span>
160 </h2>160 </h2>
161 <p>The·debug·information·can·be·encrypted·to·keep·the·source·code·secret,·but·still161 <p>The·debug·information·can·be·encrypted·to·keep·the·source·code·secret,·but·still
162 be·able·to·use·tools·such·as·Debugger·or·Xref.</p><p>To·use·encrypted·debug·information,·a·key·must·be·provided·to·the·compiler·and162 be·able·to·use·tools·such·as·Debugger·or·Xref.</p><p>To·use·encrypted·debug·information,·a·key·must·be·provided·to·the·compiler·and
Offset 178, 21 lines modifiedOffset 178, 21 lines modified
178 ··</a>178 ··</a>
179 ··<span·class="text">.erlang.crypt</span>179 ··<span·class="text">.erlang.crypt</span>
180 </h2>180 </h2>
181 <p><code·class="inline">beam_lib</code>·searches·for·<code·class="inline">.erlang.crypt</code>·in·the·current·directory,·then·the181 <p><code·class="inline">beam_lib</code>·searches·for·<code·class="inline">.erlang.crypt</code>·in·the·current·directory,·then·the
182 <a·href="../../../../erts-15.2.2/doc/html/init.html#home">user's·home·directory</a>·and·then182 <a·href="../../../../erts-15.2.2/doc/html/init.html#home">user's·home·directory</a>·and·then
183 <a·href="filename.html#user_config"><code·class="inline">filename:basedir(user_config,·&quot;erlang&quot;)</code></a>.·If·the183 <a·href="filename.html#user_config"><code·class="inline">filename:basedir(user_config,·&quot;erlang&quot;)</code></a>.·If·the
184 file·is·found·and·contains·a·key,·<code·class="inline">beam_lib</code>·implicitly·creates·a·crypto·key·fun184 file·is·found·and·contains·a·key,·<code·class="inline">beam_lib</code>·implicitly·creates·a·crypto·key·fun
185 and·registers·it.</p><p>File·<code·class="inline">.erlang.crypt</code>·is·to·contain·a·single·list·of·tuples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5413804146-1">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·67,·SHA:·0e631b8f64cfbde171b47455c42c32a13830d1b027da2e7d5ed4bb3df5b83b44·...·]-1">}</span></code></pre><p><code·class="inline">Mode</code>·is·the·type·of·crypto·algorithm;·currently,·the·only·allowed·value·is185 and·registers·it.</p><p>File·<code·class="inline">.erlang.crypt</code>·is·to·contain·a·single·list·of·tuples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1765118035-1">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·67,·SHA:·cb5bf11532e36d3edf121488ced732d9722916adb06136bb625f70bf86c3c146·...·]-1">}</span></code></pre><p><code·class="inline">Mode</code>·is·the·type·of·crypto·algorithm;·currently,·the·only·allowed·value·is
186 <code·class="inline">des3_cbc</code>.·<code·class="inline">Module</code>·is·either·an·atom,·in·which·case·<code·class="inline">Key</code>·is·only·used·for·the186 <code·class="inline">des3_cbc</code>.·<code·class="inline">Module</code>·is·either·an·atom,·in·which·case·<code·class="inline">Key</code>·is·only·used·for·the
187 module·<code·class="inline">Module</code>,·or·<code·class="inline">[]</code>,·in·which·case·<code·class="inline">Key</code>·is·used·for·all·modules.·<code·class="inline">Key</code>·is187 module·<code·class="inline">Module</code>,·or·<code·class="inline">[]</code>,·in·which·case·<code·class="inline">Key</code>·is·used·for·all·modules.·<code·class="inline">Key</code>·is
188 the·non-empty·key·string.</p><p><code·class="inline">Key</code>·in·the·first·tuple·where·both·<code·class="inline">Mode</code>·and·<code·class="inline">Module</code>·match·is·used.</p><p>The·following·is·an·example·of·an·<code·class="inline">.erlang.crypt</code>·file·that·returns·the·same·key188 the·non-empty·key·string.</p><p><code·class="inline">Key</code>·in·the·first·tuple·where·both·<code·class="inline">Mode</code>·and·<code·class="inline">Module</code>·match·is·used.</p><p>The·following·is·an·example·of·an·<code·class="inline">.erlang.crypt</code>·file·that·returns·the·same·key
189 for·all·modules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4238375477-1">[</span><span·class="p"·data-group-id="4238375477-2">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">des3_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·303,·SHA:·313a65881e12684e5a092720c95b5dbb2181eb61fe19b9b04e0c7cf71e719a01·...·]-1">]</span><span·class="p">.</span></code></pre><p>The·following·is·a·slightly·more·complicated·example·of·an·<code·class="inline">.erlang.crypt</code>189 for·all·modules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3658722055-1">[</span><span·class="p"·data-group-id="3658722055-2">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">des3_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·303,·SHA:·8886c8af14b4be2889f75074ea7fbad0f0726c3514ab9674167d7f0c40ca49dc·...·]-1">]</span><span·class="p">.</span></code></pre><p>The·following·is·a·slightly·more·complicated·example·of·an·<code·class="inline">.erlang.crypt</code>
190 providing·one·key·for·module·<code·class="inline">t</code>·and·another·key·for·all·other·modules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8353819822-1">[</span><span·class="p"·data-group-id="8353819822-2">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">des3_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">t<[·...·truncated·by·diffoscope;·len:·136,·SHA:·86b6e9231dbd5fa99518fd4df6a366e071c532a11db2bdea334b20484f5c75a3·...·]-2">}</span><span·class="p">,</span><span·class="w">190 providing·one·key·for·module·<code·class="inline">t</code>·and·another·key·for·all·other·modules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0886584754-1">[</span><span·class="p"·data-group-id="0886584754-2">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">des3_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">t<[·...·truncated·by·diffoscope;·len:·136,·SHA:·f3d03b4865848f87288ee9a596e4fcafbcc6288409e79131da27d7a2adda31fb·...·]-2">}</span><span·class="p">,</span><span·class="w">
191 ·</span><span·class="p"·data-group-id="8353819822-3">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">des3_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8353819822-4">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·250,·SHA:·74eb2e0c0069e601e7bff60e6e27bdd28d73c4bb16be40eaf5e0af16a7240684·...·]-1">]</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Do·not·use·any·of·the·keys·in·these·examples.·Use·your·own·keys.</p></section>191 ·</span><span·class="p"·data-group-id="0886584754-3">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">des3_cbc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0886584754-4">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·250,·SHA:·51553a186d92376ad3e8f1d2c4e8958411ab05570c379015db151ee1f7816e9a·...·]-1">]</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Do·not·use·any·of·the·keys·in·these·examples.·Use·your·own·keys.</p></section>
192 ····</section>192 ····</section>
  
193 </div>193 </div>
  
194 ··<section·id="summary"·class="details-list">194 ··<section·id="summary"·class="details-list">
195 ····<h1·class="section-heading">195 ····<h1·class="section-heading">
196 ······<a·class="hover-link"·href="#summary">196 ······<a·class="hover-link"·href="#summary">
Offset 1494, 19 lines modifiedOffset 1494, 19 lines modified
1494 ························when·CryptoKeyFun·::·<a·href="#t:crypto_fun/0">crypto_fun</a>(),·Reason·::·badfun·|·exists·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1494 ························when·CryptoKeyFun·::·<a·href="#t:crypto_fun/0">crypto_fun</a>(),·Reason·::·badfun·|·exists·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1495 ······</div>1495 ······</div>
  
1496 <p>Registers·an·unary·fun·that·is·called·if·<code·class="inline">beam_lib</code>·must·read·an·<code·class="inline">debug_info</code>1496 <p>Registers·an·unary·fun·that·is·called·if·<code·class="inline">beam_lib</code>·must·read·an·<code·class="inline">debug_info</code>
1497 chunk·that·has·been·encrypted.·The·fun·is·held·in·a·process·that·is·started·by1497 chunk·that·has·been·encrypted.·The·fun·is·held·in·a·process·that·is·started·by
1498 the·function.</p><p>If·a·fun·is·already·registered·when·attempting·to·register·a·fun,1498 the·function.</p><p>If·a·fun·is·already·registered·when·attempting·to·register·a·fun,
1499 <code·class="inline">{error,·exists}</code>·is·returned.</p><p>The·fun·must·handle·the·following·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">CryptoKeyFun</span><span·class="p"·data-group-id="0608912125-1">(</span><span·class="ss">init</span><span·class="p"·data-group-id="0608912125-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·615dced4ff7e3a52297aa1ef1a9f04cad04a0a30f87fa48af3a40a489cf05de7·...·]-3">}</span></code></pre><p>Called·when·the·fun·is·registered,·in·the·process·that·holds·the·fun.·Here·the1499 <code·class="inline">{error,·exists}</code>·is·returned.</p><p>The·fun·must·handle·the·following·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">CryptoKeyFun</span><span·class="p"·data-group-id="0284615716-1">(</span><span·class="ss">init</span><span·class="p"·data-group-id="0284615716-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·dc89d1aa06f4146c624e2cde455246ec95facf953486d7b806ad1ceb81317399·...·]-3">}</span></code></pre><p>Called·when·the·fun·is·registered,·in·the·process·that·holds·the·fun.·Here·the
1500 crypto·key·fun·can·do·any·necessary·initializations.·If·<code·class="inline">{ok,·NewCryptoKeyFun}</code>1500 crypto·key·fun·can·do·any·necessary·initializations.·If·<code·class="inline">{ok,·NewCryptoKeyFun}</code>
1501 is·returned,·<code·class="inline">NewCryptoKeyFun</code>·is·registered·instead·of·<code·class="inline">CryptoKeyFun</code>.·If1501 is·returned,·<code·class="inline">NewCryptoKeyFun</code>·is·registered·instead·of·<code·class="inline">CryptoKeyFun</code>.·If
1502 <code·class="inline">{error,·Term}</code>·is·returned,·the·registration·is·aborted·and1502 <code·class="inline">{error,·Term}</code>·is·returned,·the·registration·is·aborted·and
1503 <a·href="#crypto_key_fun/1"><code·class="inline">crypto_key_fun/1</code></a>·also·returns·<code·class="inline">{error,·Term}</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">CryptoKeyFun</span><span·class="p"·data-group-id="4517979153-1">(</span><span·class="p"·data-group-id="4517979153-2">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</s[·...·truncated·by·diffoscope;·len:·177,·SHA:·cbd758573b94e87c934cc05d526b5ff0887e48386c66edb136004472ee02318b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Key</span></code></pre><p>Called·when·the·key·is·needed·for·module·<code·class="inline">Module</code>·in·the·file·named·<code·class="inline">Filename</code>.1503 <a·href="#crypto_key_fun/1"><code·class="inline">crypto_key_fun/1</code></a>·also·returns·<code·class="inline">{error,·Term}</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">CryptoKeyFun</span><span·class="p"·data-group-id="4986461706-1">(</span><span·class="p"·data-group-id="4986461706-2">{</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</s[·...·truncated·by·diffoscope;·len:·177,·SHA:·131c587a44ae49a7ca5fd2f70e4347e0bee00c4e2c02855d040cf7c024dd5931·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Key</span></code></pre><p>Called·when·the·key·is·needed·for·module·<code·class="inline">Module</code>·in·the·file·named·<code·class="inline">Filename</code>.
1504 <code·class="inline">Mode</code>·is·the·type·of·crypto·algorithm;·currently,·the·only·possible·value·is1504 <code·class="inline">Mode</code>·is·the·type·of·crypto·algorithm;·currently,·the·only·possible·value·is
1505 <code·class="inline">des3_cbc</code>.·The·call·is·to·fail·(raise·an·exception)·if·no·key·is·available.</p><pre><code·class="text">CryptoKeyFun(clear)·-&gt;·term()</code></pre><p>Called·before·the·fun·is·unregistered.·Here·any·cleaning·up·can·be·done.·The1505 <code·class="inline">des3_cbc</code>.·The·call·is·to·fail·(raise·an·exception)·if·no·key·is·available.</p><pre><code·class="text">CryptoKeyFun(clear)·-&gt;·term()</code></pre><p>Called·before·the·fun·is·unregistered.·Here·any·cleaning·up·can·be·done.·The
1506 return·value·is·not·important,·but·is·passed·back·to·the·caller·of1506 return·value·is·not·important,·but·is·passed·back·to·the·caller·of
1507 <a·href="#clear_crypto_key_fun/0"><code·class="inline">clear_crypto_key_fun/0</code></a>·as·part·of·its·return·value.</p>1507 <a·href="#clear_crypto_key_fun/0"><code·class="inline">clear_crypto_key_fun/0</code></a>·as·part·of·its·return·value.</p>
1508 ··</section>1508 ··</section>
1509 </section>1509 </section>
1510 <section·class="detail"·id="diff_dirs/2">1510 <section·class="detail"·id="diff_dirs/2">
Offset 1843, 22 lines modifiedOffset 1843, 22 lines modified
  
1843 ······</div>1843 ······</div>
  
1844 <p>Returns·the·module·version·or·versions.·A·version·is·defined·by·module·attribute1844 <p>Returns·the·module·version·or·versions.·A·version·is·defined·by·module·attribute
1845 <code·class="inline">-vsn(Vsn)</code>.</p><p>If·this·attribute·is·not·specified,·the·version·defaults·to·the1845 <code·class="inline">-vsn(Vsn)</code>.</p><p>If·this·attribute·is·not·specified,·the·version·defaults·to·the
1846 checksum·of·the·module.·Notice·that·if·version·<code·class="inline">Vsn</code>·is·not·a·list,·it·is·made1846 checksum·of·the·module.·Notice·that·if·version·<code·class="inline">Vsn</code>·is·not·a·list,·it·is·made
1847 into·one,·that·is·<code·class="inline">{ok,{Module,[Vsn]}}</code>·is·returned.·If·there·are·many·<code·class="inline">-vsn</code>1847 into·one,·that·is·<code·class="inline">{ok,{Module,[Vsn]}}</code>·is·returned.·If·there·are·many·<code·class="inline">-vsn</code>
1848 module·attributes,·the·result·is·the·concatenated·list·of·versions.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="4781899359-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="4781899359-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·-vsn(1).</span><span·class="w">1848 module·attributes,·the·result·is·the·concatenated·list·of·versions.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="2618989447-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="2618989447-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·-vsn(1).</span><span·class="w">
1849 </span><span·class="p"·data-group-id="4781899359-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-4">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·65c6086f425e74966a819fd9ef360cf3181415c654e04a7cebd8cc6172f3dd7c·...·]-2">}</span><span·class="gp·unselectable">1849 </span><span·class="p"·data-group-id="2618989447-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-4">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·a33976a1127780bc355c4a3559ca9658901f9150bee843039ee4bd5b2b0b2acd·...·]-2">}</span><span·class="gp·unselectable">
1850 2&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="4781899359-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="4781899359-5">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·-vsn([1]).</span><span·class="w">1850 2&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="2618989447-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="2618989447-5">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·-vsn([1]).</span><span·class="w">
1851 </span><span·class="p"·data-group-id="4781899359-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-8">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·a8bc7fc35952af4b5e0e3fb782af5bec0a90b8f3a7c75986886af5bfc5afba3f·...·]-6">}</span><span·class="gp·unselectable">1851 </span><span·class="p"·data-group-id="2618989447-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-8">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·1249ebf32f581428173dab8d4a9364cfd7354ca9773d7d4e08a26929767dc2cd·...·]-6">}</span><span·class="gp·unselectable">
1852 3&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="4781899359-9">(</span><span·class="ss">c</span><span·class="p"·data-group-id="4781899359-9">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·-vsn([1]).·-vsn(2).</span><span·class="w">1852 3&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="2618989447-9">(</span><span·class="ss">c</span><span·class="p"·data-group-id="2618989447-9">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·-vsn([1]).·-vsn(2).</span><span·class="w">
1853 </span><span·class="p"·data-group-id="4781899359-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-12">[</span><span·class="mi">1</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·f48804394cf7f4017b3041c0f4421ca9ab77f63fef1fe4946939c2f6af186b26·...·]-10">}</span><span·class="gp·unselectable">1853 </span><span·class="p"·data-group-id="2618989447-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-12">[</span><span·class="mi">1</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·edf0857cb53ee23bb73727729cfaa82f8111af4a43c5479b37fdeb3f6f8d16b1·...·]-10">}</span><span·class="gp·unselectable">
1854 4&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="4781899359-13">(</span><span·class="ss">d</span><span·class="p"·data-group-id="4781899359-13">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·no·-vsn·attribute</span><span·class="w">1854 4&gt;·</span><span·class="nc">beam_lib</span><span·class="p">:</span><span·class="nf">version</span><span·class="p"·data-group-id="2618989447-13">(</span><span·class="ss">d</span><span·class="p"·data-group-id="2618989447-13">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·no·-vsn·attribute</span><span·class="w">
1855 </span><span·class="p"·data-group-id="4781899359-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-15">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="p"·data-group-id="4781899359-16">[</span><span·class="mi">275613208[·...·truncated·by·diffoscope;·len:·186,·SHA:·4c3bdec8e0affc30fd6d6dfc01fdcb1f6560e2c70748f10aeb094561b28281d7·...·]-14">}</span></code></pre>1855 </span><span·class="p"·data-group-id="2618989447-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-15">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="p"·data-group-id="2618989447-16">[</span><span·class="mi">275613208[·...·truncated·by·diffoscope;·len:·186,·SHA:·44ab16db347ca5ab630fbe54e4bfabe087ea09be28ddcdd7088da60ac2abf1dc·...·]-14">}</span></code></pre>
1856 ··</section>1856 ··</section>
1857 </section>1857 </section>
  
1858 ····</div>1858 ····</div>
1859 ··</section>1859 ··</section>
  
1860 ····<footer·class="footer">1860 ····<footer·class="footer">
109 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/binary.html
    
Offset 631, 15 lines modifiedOffset 631, 15 lines modified
  
631 ······<div·class="specs">631 ······<div·class="specs">
  
632 ··········<pre·translate="no"><span·class="attribute">-spec</span>·bin_to_list(Subject)·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0">byte</a>()]·when·Subject·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>632 ··········<pre·translate="no"><span·class="attribute">-spec</span>·bin_to_list(Subject)·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0">byte</a>()]·when·Subject·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>
  
633 ······</div>633 ······</div>
  
634 <p>Converts·<code·class="inline">Subject</code>·to·a·list·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a>s,·each·representing·the·value·of·one·byte.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">bin_to_list</span><span·class="p"·data-group-id="6374944025-1">(</span><span·class="p"·data-group-id="6374944025-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="6374944025-2">&gt;&gt;</span><span·class="p"·data-group-id="6374944025-1">)</span><span·class="p">.</span><span·class="w">634 <p>Converts·<code·class="inline">Subject</code>·to·a·list·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a>s,·each·representing·the·value·of·one·byte.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">bin_to_list</span><span·class="p"·data-group-id="3407155432-1">(</span><span·class="p"·data-group-id="3407155432-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="3407155432-2">&gt;&gt;</span><span·class="p"·data-group-id="3407155432-1">)</span><span·class="p">.</span><span·class="w">
635 </span><span·class="s">&quot;erlang&quot;</span><span·class="w">635 </span><span·class="s">&quot;erlang&quot;</span><span·class="w">
636 </span><span·class="c1">%%·or·[101,114,108,97,110,103]·in·list·notation.</span></code></pre>636 </span><span·class="c1">%%·or·[101,114,108,97,110,103]·in·list·notation.</span></code></pre>
637 ··</section>637 ··</section>
638 </section>638 </section>
639 <section·class="detail"·id="bin_to_list/2">639 <section·class="detail"·id="bin_to_list/2">
  
640 ··<div·class="detail-header">640 ··<div·class="detail-header">
Offset 693, 15 lines modifiedOffset 693, 15 lines modified
693 ·····················when·Subject·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·Pos·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Len·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>().</pre>693 ·····················when·Subject·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·Pos·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Len·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>().</pre>
  
694 ······</div>694 ······</div>
  
695 <p>Converts·<code·class="inline">Subject</code>·to·a·list·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a>s,·each·representing·the·value·of·one695 <p>Converts·<code·class="inline">Subject</code>·to·a·list·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:byte/0"><code·class="inline">byte/0</code></a>s,·each·representing·the·value·of·one
696 byte.·<code·class="inline">PosLen</code>·or·alternatively·<code·class="inline">Pos</code>·and·<code·class="inline">Len</code>·denote·which·part·of·the696 byte.·<code·class="inline">PosLen</code>·or·alternatively·<code·class="inline">Pos</code>·and·<code·class="inline">Len</code>·denote·which·part·of·the
697 <code·class="inline">Subject</code>·binary·to·convert.·By·default,·the·entire·<code·class="inline">Subject</code>·binary·is697 <code·class="inline">Subject</code>·binary·to·convert.·By·default,·the·entire·<code·class="inline">Subject</code>·binary·is
698 converted.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">bin_to_list</span><span·class="p"·data-group-id="3710908335-1">(</span><span·class="p"·data-group-id="3710908335-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="3710908335-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·196,·SHA:·63e1f5ace7a6237f043f48dc019b532cfdfae1fceee969041e604cd5211a703d·...·]-1">)</span><span·class="p">.</span><span·class="w">698 converted.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">bin_to_list</span><span·class="p"·data-group-id="7690667442-1">(</span><span·class="p"·data-group-id="7690667442-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="7690667442-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·196,·SHA:·8173e9d1adccf119509a8f543252abecbad1460adffe71dcafd018b31d38ace8·...·]-1">)</span><span·class="p">.</span><span·class="w">
699 </span><span·class="s">&quot;rla&quot;</span><span·class="w">699 </span><span·class="s">&quot;rla&quot;</span><span·class="w">
700 </span><span·class="c1">%%·or·[114,108,97]·in·list·notation.</span></code></pre><p>If·<code·class="inline">PosLen</code>·or·alternatively·<code·class="inline">Pos</code>·and·<code·class="inline">Len</code>·in·any·way·reference·outside·the700 </span><span·class="c1">%%·or·[114,108,97]·in·list·notation.</span></code></pre><p>If·<code·class="inline">PosLen</code>·or·alternatively·<code·class="inline">Pos</code>·and·<code·class="inline">Len</code>·in·any·way·reference·outside·the
701 binary,·a·<code·class="inline">badarg</code>·exception·is·raised.</p>701 binary,·a·<code·class="inline">badarg</code>·exception·is·raised.</p>
702 ··</section>702 ··</section>
703 </section>703 </section>
704 <section·class="detail"·id="compile_pattern/1">704 <section·class="detail"·id="compile_pattern/1">
  
Offset 827, 16 lines modifiedOffset 827, 16 lines modified
  
827 ······<div·class="specs">827 ······<div·class="specs">
  
828 ··········<pre·translate="no"><span·class="attribute">-spec</span>·decode_hex(Bin)·->·Bin2·when·Bin·::·<<_:_*16>>,·Bin2·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>828 ··········<pre·translate="no"><span·class="attribute">-spec</span>·decode_hex(Bin)·->·Bin2·when·Bin·::·<<_:_*16>>,·Bin2·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>().</pre>
  
829 ······</div>829 ······</div>
  
830 <p>Decodes·a·hex·encoded·binary·into·a·binary.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_hex</span><span·class="p"·data-group-id="4333157839-1">(</span><span·class="p"·data-group-id="4333157839-2">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="4333157839-2">&gt;&gt;</span><span·class="p"·data-group-id="4333157839-1">)</span><span·class="p">.</span><span·class="w">830 <p>Decodes·a·hex·encoded·binary·into·a·binary.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_hex</span><span·class="p"·data-group-id="6534133001-1">(</span><span·class="p"·data-group-id="6534133001-2">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="6534133001-2">&gt;&gt;</span><span·class="p"·data-group-id="6534133001-1">)</span><span·class="p">.</span><span·class="w">
831 </span><span·class="p"·data-group-id="4333157839-3">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="4333157839-3">&gt;&gt;</span></code></pre>831 </span><span·class="p"·data-group-id="6534133001-3">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="6534133001-3">&gt;&gt;</span></code></pre>
832 ··</section>832 ··</section>
833 </section>833 </section>
834 <section·class="detail"·id="decode_unsigned/1">834 <section·class="detail"·id="decode_unsigned/1">
  
835 ··<div·class="detail-header">835 ··<div·class="detail-header">
836 ····<a·href="#decode_unsigned/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">836 ····<a·href="#decode_unsigned/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
837 ······<i·class="ri-link-m"·aria-hidden="true"></i>837 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 889, 19 lines modifiedOffset 889, 19 lines modified
889 ·····························Subject·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),889 ·····························Subject·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),
890 ·····························Endianness·::·big·|·little,890 ·····························Endianness·::·big·|·little,
891 ·····························Unsigned·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>891 ·····························Unsigned·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>
  
892 ······</div>892 ······</div>
  
893 <p>Converts·the·binary·digit·representation,·in·big·endian·or·little·endian,·of·a893 <p>Converts·the·binary·digit·representation,·in·big·endian·or·little·endian,·of·a
894 positive·integer·in·<code·class="inline">Subject</code>·to·an·Erlang·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_unsigned</span><span·class="p"·data-group-id="7210159501-1">(</span><span·class="p"·data-group-id="7210159501-2">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="7210159501-2">[·...·truncated·by·diffoscope;·len:·56,·SHA:·187deb4a99cf719bd0752f88099c54f4f23697fda9073487e1cf1bc982f38be5·...·]-1">)</span><span·class="p">.</span><span·class="w">894 positive·integer·in·<code·class="inline">Subject</code>·to·an·Erlang·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_unsigned</span><span·class="p"·data-group-id="9620157123-1">(</span><span·class="p"·data-group-id="9620157123-2">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="9620157123-2">[·...·truncated·by·diffoscope;·len:·56,·SHA:·fe42d8cf58e209290cfe16ba96a991e626f66db784b12bb9f9a289ab4e682f56·...·]-1">)</span><span·class="p">.</span><span·class="w">
895 </span><span·class="mi">11111111</span><span·class="gp·unselectable">895 </span><span·class="mi">11111111</span><span·class="gp·unselectable">
896 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_unsigned</span><span·class="p"·data-group-id="7210159501-3">(</span><span·class="p"·data-group-id="7210159501-4">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="7210159501-4">[·...·truncated·by·diffoscope;·len:·131,·SHA:·58da7dfd01133a7ff28192a1f051eb65d7926d9d4b554d4a7dbac9e6d25ab06f·...·]-3">)</span><span·class="p">.</span><span·class="w">896 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_unsigned</span><span·class="p"·data-group-id="9620157123-3">(</span><span·class="p"·data-group-id="9620157123-4">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="9620157123-4">[·...·truncated·by·diffoscope;·len:·131,·SHA:·065684bff9596fd5a3312cb958b83e9b7d2f18d22ca5c040801de271a1365ec4·...·]-3">)</span><span·class="p">.</span><span·class="w">
897 </span><span·class="mi">11111111</span><span·class="gp·unselectable">897 </span><span·class="mi">11111111</span><span·class="gp·unselectable">
898 3&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_unsigned</span><span·class="p"·data-group-id="7210159501-5">(</span><span·class="p"·data-group-id="7210159501-6">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="7210159501-6">[·...·truncated·by·diffoscope;·len:·134,·SHA:·caf715653a6ab654ba6bc1099ed84b6bb0ee896f328de72287b469badb439f60·...·]-5">)</span><span·class="p">.</span><span·class="w">898 3&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">decode_unsigned</span><span·class="p"·data-group-id="9620157123-5">(</span><span·class="p"·data-group-id="9620157123-6">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="9620157123-6">[·...·truncated·by·diffoscope;·len:·134,·SHA:·9b0bbae2cf0d2d8a72a641ed8ea90749a88fe131b864aa72b6f32417bbf40d7b·...·]-5">)</span><span·class="p">.</span><span·class="w">
899 </span><span·class="mi">13077161</span></code></pre>899 </span><span·class="mi">13077161</span></code></pre>
900 ··</section>900 ··</section>
901 </section>901 </section>
902 <section·class="detail"·id="encode_hex/1">902 <section·class="detail"·id="encode_hex/1">
  
903 ··<div·class="detail-header">903 ··<div·class="detail-header">
904 ····<a·href="#encode_hex/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">904 ····<a·href="#encode_hex/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 952, 22 lines modifiedOffset 952, 22 lines modified
  
952 ··········<pre·translate="no"><span·class="attribute">-spec</span>·encode_hex(Bin,·Case)·->·Bin2952 ··········<pre·translate="no"><span·class="attribute">-spec</span>·encode_hex(Bin,·Case)·->·Bin2
953 ····················when·Bin·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·Case·::·lowercase·|·uppercase,·Bin2·::·<<_:_*16>>.</pre>953 ····················when·Bin·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·Case·::·lowercase·|·uppercase,·Bin2·::·<<_:_*16>>.</pre>
  
954 ······</div>954 ······</div>
  
955 <p>Encodes·a·binary·into·a·hex·encoded·binary·using·the·specified·case·for·the955 <p>Encodes·a·binary·into·a·hex·encoded·binary·using·the·specified·case·for·the
956 hexadecimal·digits·&quot;a&quot;·to·&quot;f&quot;.</p><p>The·default·case·is·<code·class="inline">uppercase</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="5636266914-1">(</span><span·class="p"·data-group-id="5636266914-2">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="5636266914-2">&gt;&gt;</span><span·class="p"·data-group-id="5636266914-1">)</span><span·class="p">.</span><span·class="w">956 hexadecimal·digits·&quot;a&quot;·to·&quot;f&quot;.</p><p>The·default·case·is·<code·class="inline">uppercase</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="7888931657-1">(</span><span·class="p"·data-group-id="7888931657-2">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="7888931657-2">&gt;&gt;</span><span·class="p"·data-group-id="7888931657-1">)</span><span·class="p">.</span><span·class="w">
957 </span><span·class="p"·data-group-id="5636266914-3">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="5636266914-3">&gt;&gt;</span><span·class="gp·unselectable">957 </span><span·class="p"·data-group-id="7888931657-3">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="7888931657-3">&gt;&gt;</span><span·class="gp·unselectable">
958 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="5636266914-4">(</span><span·class="p"·data-group-id="5636266914-5">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="5636266914-5">&gt;&gt;</span><span·class="p"·data-group-id="5636266914-4">)</span><span·class="p">.</span><span·class="w">958 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="7888931657-4">(</span><span·class="p"·data-group-id="7888931657-5">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="7888931657-5">&gt;&gt;</span><span·class="p"·data-group-id="7888931657-4">)</span><span·class="p">.</span><span·class="w">
959 </span><span·class="p"·data-group-id="5636266914-6">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="5636266914-6">&gt;&gt;</span><span·class="gp·unselectable">959 </span><span·class="p"·data-group-id="7888931657-6">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="7888931657-6">&gt;&gt;</span><span·class="gp·unselectable">
960 3&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="5636266914-7">(</span><span·class="p"·data-group-id="5636266914-8">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="5636266914-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lowercase</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·7a6a7e2d7f9761ae80d7ecae81d0cd14689a81a2cc7a354b6e4c787026d5b826·...·]-7">)</span><span·class="p">.</span><span·class="w">960 3&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="7888931657-7">(</span><span·class="p"·data-group-id="7888931657-8">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="7888931657-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lowercase</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·78a75c8ebfe355dcbb9d89fe441f54a5748ef9d1fb972d6934b779a43dd889d3·...·]-7">)</span><span·class="p">.</span><span·class="w">
961 </span><span·class="p"·data-group-id="5636266914-9">&lt;&lt;</span><span·class="s">&quot;2f&quot;</span><span·class="p"·data-group-id="5636266914-9">&gt;&gt;</span><span·class="gp·unselectable">961 </span><span·class="p"·data-group-id="7888931657-9">&lt;&lt;</span><span·class="s">&quot;2f&quot;</span><span·class="p"·data-group-id="7888931657-9">&gt;&gt;</span><span·class="gp·unselectable">
962 4&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="5636266914-10">(</span><span·class="p"·data-group-id="5636266914-11">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="5636266914-11">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">uppercase<[·...·truncated·by·diffoscope;·len:·47,·SHA:·1ac2521dfecf225f388ebd0982d323fbc946d420334e347a5128dafbeac4a8d6·...·]-10">)</span><span·class="p">.</span><span·class="w">962 4&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_hex</span><span·class="p"·data-group-id="7888931657-10">(</span><span·class="p"·data-group-id="7888931657-11">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="7888931657-11">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">uppercase<[·...·truncated·by·diffoscope;·len:·47,·SHA:·0ca87986d55a02f2e72b2619c954bfaed9187b37a2b6800bfa25f62dc5788d8a·...·]-10">)</span><span·class="p">.</span><span·class="w">
963 </span><span·class="p"·data-group-id="5636266914-12">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="5636266914-12">&gt;&gt;</span></code></pre>963 </span><span·class="p"·data-group-id="7888931657-12">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="7888931657-12">&gt;&gt;</span></code></pre>
964 ··</section>964 ··</section>
965 </section>965 </section>
966 <section·class="detail"·id="encode_unsigned/1">966 <section·class="detail"·id="encode_unsigned/1">
  
967 ··<div·class="detail-header">967 ··<div·class="detail-header">
968 ····<a·href="#encode_unsigned/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">968 ····<a·href="#encode_unsigned/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
969 ······<i·class="ri-link-m"·aria-hidden="true"></i>969 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1017, 20 lines modifiedOffset 1017, 20 lines modified
  
1017 ··········<pre·translate="no"><span·class="attribute">-spec</span>·encode_unsigned(Unsigned,·Endianness)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()1017 ··········<pre·translate="no"><span·class="attribute">-spec</span>·encode_unsigned(Unsigned,·Endianness)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()
1018 ·························when·Unsigned·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Endianness·::·big·|·little.</pre>1018 ·························when·Unsigned·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Endianness·::·big·|·little.</pre>
  
1019 ······</div>1019 ······</div>
  
1020 <p>Converts·a·positive·integer·to·the·smallest·possible·representation·in·a·binary1020 <p>Converts·a·positive·integer·to·the·smallest·possible·representation·in·a·binary
1021 digit·representation,·either·big·endian·or·little·endian.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_unsigned</span><span·class="p"·data-group-id="2757952111-1">(</span><span·class="mi">11111111</span><span·class="p"·data-group-id="2757952111-1">)</span><span·class="p">.</span><span·class="w">1021 digit·representation,·either·big·endian·or·little·endian.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_unsigned</span><span·class="p"·data-group-id="8920774692-1">(</span><span·class="mi">11111111</span><span·class="p"·data-group-id="8920774692-1">)</span><span·class="p">.</span><span·class="w">
1022 </span><span·class="p"·data-group-id="2757952111-2">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="2757952111-2">&gt;&gt;</span><span·class="gp·unselectable">1022 </span><span·class="p"·data-group-id="8920774692-2">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="8920774692-2">&gt;&gt;</span><span·class="gp·unselectable">
1023 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_unsigned</span><span·class="p"·data-group-id="2757952111-3">(</span><span·class="mi">11111111</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">big</span><span·class="p"·data-group-id="2757952111-3">)</span><span·class="p">.</span><span·class="w">1023 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_unsigned</span><span·class="p"·data-group-id="8920774692-3">(</span><span·class="mi">11111111</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">big</span><span·class="p"·data-group-id="8920774692-3">)</span><span·class="p">.</span><span·class="w">
1024 </span><span·class="p"·data-group-id="2757952111-4">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="2757952111-4">&gt;&gt;</span><span·class="gp·unselectable">1024 </span><span·class="p"·data-group-id="8920774692-4">&lt;&lt;</span><span·class="mi">169</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">199</span><span·class="p"·data-group-id="8920774692-4">&gt;&gt;</span><span·class="gp·unselectable">
1025 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_unsigned</span><span·class="p"·data-group-id="2757952111-5">(</span><span·class="mi">11111111</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">little</span><span·class="p"·data-group-id="2757952111-5">)</span><span·class="p">.</span><span·class="w">1025 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">encode_unsigned</span><span·class="p"·data-group-id="8920774692-5">(</span><span·class="mi">11111111</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">little</span><span·class="p"·data-group-id="8920774692-5">)</span><span·class="p">.</span><span·class="w">
1026 </span><span·class="p"·data-group-id="2757952111-6">&lt;&lt;</span><span·class="mi">199</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">169</span><span·class="p"·data-group-id="2757952111-6">&gt;&gt;</span></code></pre>1026 </span><span·class="p"·data-group-id="8920774692-6">&lt;&lt;</span><span·class="mi">199</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><span·class="mi">169</span><span·class="p"·data-group-id="8920774692-6">&gt;&gt;</span></code></pre>
1027 ··</section>1027 ··</section>
1028 </section>1028 </section>
1029 <section·class="detail"·id="first/1">1029 <section·class="detail"·id="first/1">
  
1030 ··<div·class="detail-header">1030 ··<div·class="detail-header">
1031 ····<a·href="#first/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1031 ····<a·href="#first/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1032 ······<i·class="ri-link-m"·aria-hidden="true"></i>1032 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1137, 17 lines modifiedOffset 1137, 17 lines modified
1137 ······<div·class="specs">1137 ······<div·class="specs">
  
1138 ··········<pre·translate="no"><span·class="attribute">-spec</span>·longest_common_prefix(Binaries)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>()·when·Binaries·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·...].</pre>1138 ··········<pre·translate="no"><span·class="attribute">-spec</span>·longest_common_prefix(Binaries)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>()·when·Binaries·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>(),·...].</pre>
  
1139 ······</div>1139 ······</div>
  
1140 <p>Returns·the·length·of·the·longest·common·prefix·of·the·binaries·in·list1140 <p>Returns·the·length·of·the·longest·common·prefix·of·the·binaries·in·list
1141 <code·class="inline">Binaries</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">longest_common_prefix</span><span·class="p"·data-group-id="2400993635-1">(</span><span·class="p"·data-group-id="2400993635-2">[</span><span·class="p"·data-group-id="2400993635-3">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="2400993635-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·3552063c48bbb1bc8e87c7ad383ee3384467979f78efde98373a51adcdcc87a0·...·]-1">)</span><span·class="p">.</span><span·class="w">1141 <code·class="inline">Binaries</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">longest_common_prefix</span><span·class="p"·data-group-id="0348334296-1">(</span><span·class="p"·data-group-id="0348334296-2">[</span><span·class="p"·data-group-id="0348334296-3">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="0348334296-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·b0c8908b3d099cc973d3636f13ad14aee519adff3cdbdad60356cb510f601b4d·...·]-1">)</span><span·class="p">.</span><span·class="w">
1142 </span><span·class="mi">2</span><span·class="gp·unselectable">1142 </span><span·class="mi">2</span><span·class="gp·unselectable">
1143 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">longest_common_prefix</span><span·class="p"·data-group-id="2400993635-5">(</span><span·class="p"·data-group-id="2400993635-6">[</span><span·class="p"·data-group-id="2400993635-7">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="2400993635-7">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·281,·SHA:·b170fb6388bb27c3aff6e94a617d7198924854e6cee808700c76ee527d4124cf·...·]-5">)</span><span·class="p">.</span><span·class="w">1143 2&gt;·</span><span·class="nc">binary</span><span·class="p">:</span><span·class="nf">longest_common_prefix</span><span·class="p"·data-group-id="0348334296-5">(</span><span·class="p"·data-group-id="0348334296-6">[</span><span·class="p"·data-group-id="0348334296-7">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="0348334296-7">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·281,·SHA:·fe394c4ba6510ae8034cf39ac069c4a9d04029f965d56a2875bafd3c87a4861e·...·]-5">)</span><span·class="p">.</span><span·class="w">
1144 </span><span·class="mi">0</span></code></pre><p>If·<code·class="inline">Binaries</code>·is·not·a·flat·non-empty·list·of·binaries,·a·<code·class="inline">badarg</code>·exception·is1144 </span><span·class="mi">0</span></code></pre><p>If·<code·class="inline">Binaries</code>·is·not·a·flat·non-empty·list·of·binaries,·a·<code·class="inline">badarg</code>·exception·is
1145 raised.</p>1145 raised.</p>
1146 ··</section>1146 ··</section>
1147 </section>1147 </section>
Max diff block lines reached; 84839/111459 bytes (76.12%) of diff not shown.
2.2 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/c.html
    
Offset 1682, 15 lines modifiedOffset 1682, 15 lines modified
1682 ················Options·::·[Option]·|·Option,1682 ················Options·::·[Option]·|·Option,
1683 ················Option·::·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html#t:option/0">compile:option</a>(),1683 ················Option·::·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html#t:option/0">compile:option</a>(),
1684 ················Module·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:module/0">module</a>().</pre>1684 ················Module·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:module/0">module</a>().</pre>
  
1685 ······</div>1685 ······</div>
  
1686 <p>Compiles·and·then·loads·the·code·for·a·file·on·all·nodes.·<code·class="inline">Options</code>·defaults·to1686 <p>Compiles·and·then·loads·the·code·for·a·file·on·all·nodes.·<code·class="inline">Options</code>·defaults·to
1687 <code·class="inline">[]</code>.·Compilation·is·equivalent·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="4810905386-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Options</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="4810905386-2">[</span><sp[·...·truncated·by·diffoscope;·len:·215,·SHA:·5b0796b1d96f88d8b7a5fe45bf697a6752fd04f14a6fb4f46e6f1f07914d69f3·...·]-1">)</span></code></pre>1687 <code·class="inline">[]</code>.·Compilation·is·equivalent·to:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">compile</span><span·class="p">:</span><span·class="nf">file</span><span·class="p"·data-group-id="6099977058-1">(</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Options</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="6099977058-2">[</span><sp[·...·truncated·by·diffoscope;·len:·215,·SHA:·cec2748cbe1f56f7a92fa3fa9775c1402c35ff224970ce5d07522396c6c8b6bb·...·]-1">)</span></code></pre>
1688 ··</section>1688 ··</section>
1689 </section>1689 </section>
1690 <section·class="detail"·id="ni/0">1690 <section·class="detail"·id="ni/0">
  
1691 ··<div·class="detail-header">1691 ··<div·class="detail-header">
1692 ····<a·href="#ni/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1692 ····<a·href="#ni/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1693 ······<i·class="ri-link-m"·aria-hidden="true"></i>1693 ······<i·class="ri-link-m"·aria-hidden="true"></i>
12.2 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/calendar.html
    
Offset 1765, 18 lines modifiedOffset 1765, 18 lines modified
1765 ····································Option·::·{unit,·<a·href="#t:rfc3339_time_unit/0">rfc3339_time_unit</a>()}.</pre>1765 ····································Option·::·{unit,·<a·href="#t:rfc3339_time_unit/0">rfc3339_time_unit</a>()}.</pre>
  
1766 ······</div>1766 ······</div>
  
1767 <p>Converts·an·RFC·3339·timestamp·into·system·time.·The·data·format·of·RFC·33391767 <p>Converts·an·RFC·3339·timestamp·into·system·time.·The·data·format·of·RFC·3339
1768 timestamps·is·described·by·<a·href="https://www.ietf.org/rfc/rfc3339.txt">RFC·3339</a>.1768 timestamps·is·described·by·<a·href="https://www.ietf.org/rfc/rfc3339.txt">RFC·3339</a>.
1769 Starting·from·OTP·25.1,·the·minutes·part·of·the·time·zone·is·optional.</p><p>Valid·option:</p><ul><li><strong><code·class="inline">{unit,·Unit}</code></strong>·-·The·time·unit·of·the·return·value.·The·default·is1769 Starting·from·OTP·25.1,·the·minutes·part·of·the·time·zone·is·optional.</p><p>Valid·option:</p><ul><li><strong><code·class="inline">{unit,·Unit}</code></strong>·-·The·time·unit·of·the·return·value.·The·default·is
1770 <code·class="inline">second</code>.</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">rfc3339_to_system_time</span><span·class="p"·data-group-id="6004345969-1">(</span><span·class="s">&quot;2018-02-01T16:17:58+01:00&quot;</span><span·class="p"·data-group-id="6004345969-1">)</span><span·class="p">.</span><span·class="w">1770 <code·class="inline">second</code>.</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">rfc3339_to_system_time</span><span·class="p"·data-group-id="1406038407-1">(</span><span·class="s">&quot;2018-02-01T16:17:58+01:00&quot;</span><span·class="p"·data-group-id="1406038407-1">)</span><span·class="p">.</span><span·class="w">
1771 </span><span·class="mi">1517498278</span><span·class="gp·unselectable">1771 </span><span·class="mi">1517498278</span><span·class="gp·unselectable">
1772 2&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">rfc3339_to_system_time</span><span·class="p"·data-group-id="6004345969-2">(</span><span·class="s">&quot;2018-02-01·15:18:02.088Z&quot;</span><span·class="p">,</span><span·class="w">1772 2&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">rfc3339_to_system_time</span><span·class="p"·data-group-id="1406038407-2">(</span><span·class="s">&quot;2018-02-01·15:18:02.088Z&quot;</span><span·class="p">,</span><span·class="w">
1773 ···</span><span·class="p"·data-group-id="6004345969-3">[</span><span·class="p"·data-group-id="6004345969-4">{</span><span·class="ss">unit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nanosecond</span><span·class="p"·data-group-id="6004345969-4">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·fc1ea323f5d3fe133e6831ef4e11dfaa2cd0f6171fe62bb7a6003b1269006a57·...·]-2">)</span><span·class="p">.</span><span·class="w">1773 ···</span><span·class="p"·data-group-id="1406038407-3">[</span><span·class="p"·data-group-id="1406038407-4">{</span><span·class="ss">unit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nanosecond</span><span·class="p"·data-group-id="1406038407-4">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·148e4839b0b713b812aa499306c22b6047eb82f8f82a0f053f688674ac5e7b64·...·]-2">)</span><span·class="p">.</span><span·class="w">
1774 </span><span·class="mi">1517498282088000000</span></code></pre>1774 </span><span·class="mi">1517498282088000000</span></code></pre>
1775 ··</section>1775 ··</section>
1776 </section>1776 </section>
1777 <section·class="detail"·id="seconds_to_daystime/1">1777 <section·class="detail"·id="seconds_to_daystime/1">
  
1778 ··<div·class="detail-header">1778 ··<div·class="detail-header">
1779 ····<a·href="#seconds_to_daystime/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1779 ····<a·href="#seconds_to_daystime/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1928, 24 lines modifiedOffset 1928, 24 lines modified
1928 interpreted·as·local·time.·A·non-empty·string·is·included·as·is.·The·time·unit1928 interpreted·as·local·time.·A·non-empty·string·is·included·as·is.·The·time·unit
1929 of·the·integer·is·the·same·as·the·one·of·<code·class="inline">Time</code>.</p></li><li><p><strong><code·class="inline">{time_designator,·Character}</code></strong>·-·The·character·used·as·time·designator,1929 of·the·integer·is·the·same·as·the·one·of·<code·class="inline">Time</code>.</p></li><li><p><strong><code·class="inline">{time_designator,·Character}</code></strong>·-·The·character·used·as·time·designator,
1930 that·is,·the·date·and·time·separator.·The·default·is·<code·class="inline">$T</code>.</p></li><li><p><strong><code·class="inline">{unit,·Unit}</code></strong>·-·The·time·unit·of·<code·class="inline">Time</code>.·The·default·is·<code·class="inline">second</code>.·If·some1930 that·is,·the·date·and·time·separator.·The·default·is·<code·class="inline">$T</code>.</p></li><li><p><strong><code·class="inline">{unit,·Unit}</code></strong>·-·The·time·unit·of·<code·class="inline">Time</code>.·The·default·is·<code·class="inline">second</code>.·If·some
1931 other·unit·is·given·(<code·class="inline">millisecond</code>,·<code·class="inline">microsecond</code>,·<code·class="inline">nanosecond</code>,·or·<code·class="inline">native</code>),1931 other·unit·is·given·(<code·class="inline">millisecond</code>,·<code·class="inline">microsecond</code>,·<code·class="inline">nanosecond</code>,·or·<code·class="inline">native</code>),
1932 the·formatted·string·includes·a·fraction·of·a·second.·The·number·of·fractional1932 the·formatted·string·includes·a·fraction·of·a·second.·The·number·of·fractional
1933 second·digits·is·three,·six,·or·nine·depending·on·what·time·unit·is·chosen.1933 second·digits·is·three,·six,·or·nine·depending·on·what·time·unit·is·chosen.
1934 For·<code·class="inline">native</code>·three·fractional·digits·are·included.·Notice·that·trailing·zeros1934 For·<code·class="inline">native</code>·three·fractional·digits·are·included.·Notice·that·trailing·zeros
1935 are·not·removed·from·the·fraction.</p></li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="5678475097-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5678475097-2">(</span><span·class="ss">second</span><span·class="p"·data-group-id="5678475097-2">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·a309632306d59be2e95b94ceb8e7bbfa5e682264a1d415402470b724770c506c·...·]-1">)</span><span·class="p">.</span><span·class="w">1935 are·not·removed·from·the·fraction.</p></li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="8289370463-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="8289370463-2">(</span><span·class="ss">second</span><span·class="p"·data-group-id="8289370463-2">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·e3f6e18043ef449597c90529ce9937b1f65b923792213f8a599f62796214bdcf·...·]-1">)</span><span·class="p">.</span><span·class="w">
1936 </span><span·class="s">&quot;2018-04-23T14:56:28+02:00&quot;</span><span·class="gp·unselectable">1936 </span><span·class="s">&quot;2018-04-23T14:56:28+02:00&quot;</span><span·class="gp·unselectable">
1937 2&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="5678475097-3">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5678475097-4">(</span><span·class="ss">second</span><span·class="p"·data-group-id="5678475097-4">)</span><span·class="p">,</span><span·class="w">1937 2&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="8289370463-3">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="8289370463-4">(</span><span·class="ss">second</span><span·class="p"·data-group-id="8289370463-4">)</span><span·class="p">,</span><span·class="w">
1938 ···</span><span·class="p"·data-group-id="5678475097-5">[</span><span·class="p"·data-group-id="5678475097-6">{</span><span·class="ss">offset</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;-02:00&quot;</span><span·class="p"·data-group-id="5678475097-6">}</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·2dc8db89bbcdaa549d2e16eb9c05271be5f2d5af0fb127a350e1c6d638a80f33·...·]-3">)</span><span·class="p">.</span><span·class="w">1938 ···</span><span·class="p"·data-group-id="8289370463-5">[</span><span·class="p"·data-group-id="8289370463-6">{</span><span·class="ss">offset</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;-02:00&quot;</span><span·class="p"·data-group-id="8289370463-6">}</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·c69d9fbe586ca22b8af1beb3aaa722ab5c50afb2acf9d47e5c71f1b0400ea7c2·...·]-3">)</span><span·class="p">.</span><span·class="w">
1939 </span><span·class="s">&quot;2018-04-23T10:56:52-02:00&quot;</span><span·class="gp·unselectable">1939 </span><span·class="s">&quot;2018-04-23T10:56:52-02:00&quot;</span><span·class="gp·unselectable">
1940 3&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="5678475097-7">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5678475097-8">(</span><span·class="ss">second</span><span·class="p"·data-group-id="5678475097-8">)</span><span·class="p">,</span><span·class="w">1940 3&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="8289370463-7">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="8289370463-8">(</span><span·class="ss">second</span><span·class="p"·data-group-id="8289370463-8">)</span><span·class="p">,</span><span·class="w">
1941 ···</span><span·class="p"·data-group-id="5678475097-9">[</span><span·class="p"·data-group-id="5678475097-10">{</span><span·class="ss">offset</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">7200</span><span·class="p"·data-group-id="5678475097-10">}</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·10fd2515a6142466a0f05361e0ebf0f502e3debf8ca7a22fb1b34084b8e992e6·...·]-7">)</span><span·class="p">.</span><span·class="w">1941 ···</span><span·class="p"·data-group-id="8289370463-9">[</span><span·class="p"·data-group-id="8289370463-10">{</span><span·class="ss">offset</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">7200</span><span·class="p"·data-group-id="8289370463-10">}</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·ccd88a92dabdf063ce5797263ef1e390f3ba635303ae5acaed6e418d24ea749d·...·]-7">)</span><span·class="p">.</span><span·class="w">
1942 </span><span·class="s">&quot;2018-04-23T10:57:05-02:00&quot;</span><span·class="gp·unselectable">1942 </span><span·class="s">&quot;2018-04-23T10:57:05-02:00&quot;</span><span·class="gp·unselectable">
1943 4&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="5678475097-11">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5678475097-12">(</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="5678475097-12">)</span><span·class="p">,</span><span·class="w">1943 4&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="8289370463-11">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="8289370463-12">(</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="8289370463-12">)</span><span·class="p">,</span><span·class="w">
1944 ···</span><span·class="p"·data-group-id="5678475097-13">[</span><span·class="p"·data-group-id="5678475097-14">{</span><span·class="ss">unit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="5678475097-14">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·621,·SHA:·68351c3e7c07f8c11fe4804c0d0080e27fd2ec937bdf4cb3fa6748e8be3c8131·...·]-11">)</span><span·class="p">.</span><span·class="w">1944 ···</span><span·class="p"·data-group-id="8289370463-13">[</span><span·class="p"·data-group-id="8289370463-14">{</span><span·class="ss">unit</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="8289370463-14">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·621,·SHA:·5e02c3ae11177e7e6b8c155a68958217570b35ac15fda34dfafaa54e417dfcd0·...·]-11">)</span><span·class="p">.</span><span·class="w">
1945 </span><span·class="s">&quot;2018-04-23·12:57:20.482Z&quot;</span></code></pre>1945 </span><span·class="s">&quot;2018-04-23·12:57:20.482Z&quot;</span></code></pre>
1946 ··</section>1946 ··</section>
1947 </section>1947 </section>
1948 <section·class="detail"·id="system_time_to_universal_time/2">1948 <section·class="detail"·id="system_time_to_universal_time/2">
  
1949 ··<div·class="detail-header">1949 ··<div·class="detail-header">
1950 ····<a·href="#system_time_to_universal_time/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1950 ····<a·href="#system_time_to_universal_time/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
25.4 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/dets.html
    
Offset 1846, 22 lines modifiedOffset 1846, 22 lines modified
  
1846 ··········<pre·translate="no"><span·class="attribute">-spec</span>·lookup(Name,·Key)·->·Objects·|·{error,·Reason}1846 ··········<pre·translate="no"><span·class="attribute">-spec</span>·lookup(Name,·Key)·->·Objects·|·{error,·Reason}
1847 ················when·Name·::·<a·href="#t:tab_name/0">tab_name</a>(),·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Objects·::·[<a·href="#t:object/0">object</a>()],·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1847 ················when·Name·::·<a·href="#t:tab_name/0">tab_name</a>(),·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Objects·::·[<a·href="#t:object/0">object</a>()],·Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1848 ······</div>1848 ······</div>
  
1849 <p>Returns·a·list·of·all·objects·with·key·<code·class="inline">Key</code>·stored·in·table·<code·class="inline">Name</code>,·for1849 <p>Returns·a·list·of·all·objects·with·key·<code·class="inline">Key</code>·stored·in·table·<code·class="inline">Name</code>,·for
1850 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">open_file</span><span·class="p"·data-group-id="1180749760-1">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1180749760-2">[</span><span·class="p"·data-group-id="1180749760-3">{</span><span·class="ss">type</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·2a2946a71a9cd4cc198ae6619022382936d95a3e08b462de871b0a1a567294ca·...·]-1">)</span><span·class="p">.</span><span·class="w">1850 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">open_file</span><span·class="p"·data-group-id="0572611191-1">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0572611191-2">[</span><span·class="p"·data-group-id="0572611191-3">{</span><span·class="ss">type</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·04f34b3cf6158051607e78b8c8080a111328a0f7f5684e1c18615326db32088e·...·]-1">)</span><span·class="p">.</span><span·class="w">
1851 </span><span·class="p"·data-group-id="1180749760-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">abc</span><span·class="p"·data-group-id="1180749760-4">}</span><span·class="gp·unselectable">1851 </span><span·class="p"·data-group-id="0572611191-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">abc</span><span·class="p"·data-group-id="0572611191-4">}</span><span·class="gp·unselectable">
1852 3&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="1180749760-5">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1180749760-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·ad63e2d80fac4e541f7eaca23a05694a53e5dab2457b1989aea0c29817414a0e·...·]-5">)</span><span·class="p">.</span><span·class="w">1852 3&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="0572611191-5">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0572611191-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·fbda8888fef7a553a2107fae3d1157a5a3c56c405b5757441f27a5f2badf4440·...·]-5">)</span><span·class="p">.</span><span·class="w">
1853 </span><span·class="ss">ok</span><span·class="gp·unselectable">1853 </span><span·class="ss">ok</span><span·class="gp·unselectable">
1854 4&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="1180749760-7">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1180749760-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·f9b9cc79fd2c8a4a787346c046870ebd014f137e1e10a10e901e7755e49be70f·...·]-7">)</span><span·class="p">.</span><span·class="w">1854 4&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="0572611191-7">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0572611191-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·5f6ec0b170e7f20d6750b869d8f8a4f7f8506ae4eb952e5727c31ebb5ca30f23·...·]-7">)</span><span·class="p">.</span><span·class="w">
1855 </span><span·class="ss">ok</span><span·class="gp·unselectable">1855 </span><span·class="ss">ok</span><span·class="gp·unselectable">
1856 5&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="1180749760-9">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1180749760-9">)</span><span·class="p">.</span><span·class="w">1856 5&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="0572611191-9">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0572611191-9">)</span><span·class="p">.</span><span·class="w">
1857 </span><span·class="p"·data-group-id="1180749760-10">[</span><span·class="p"·data-group-id="1180749760-11">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1180749760-11">}</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·744ba63703247b9d9853af75459a2faea19121fdc8c68e9823ef58fc9bd4ce50·...·]-10">]</span></code></pre><p>If·the·table·type·is·<code·class="inline">set</code>,·the·function·returns·either·the·empty·list·or·a·list1857 </span><span·class="p"·data-group-id="0572611191-10">[</span><span·class="p"·data-group-id="0572611191-11">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="0572611191-11">}</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·1e6719ff95a9416c0911f9907999eee1a8d49c66627ba765d10fda105b09d2a3·...·]-10">]</span></code></pre><p>If·the·table·type·is·<code·class="inline">set</code>,·the·function·returns·either·the·empty·list·or·a·list
1858 with·one·object,·as·there·cannot·be·more·than·one·object·with·a·given·key.·If1858 with·one·object,·as·there·cannot·be·more·than·one·object·with·a·given·key.·If
1859 the·table·type·is·<code·class="inline">bag</code>·or·<code·class="inline">duplicate_bag</code>,·the·function·returns·a·list·of1859 the·table·type·is·<code·class="inline">bag</code>·or·<code·class="inline">duplicate_bag</code>,·the·function·returns·a·list·of
1860 arbitrary·length.</p><p>Notice·that·the·order·of·objects·returned·is·unspecified.·In·particular,·the1860 arbitrary·length.</p><p>Notice·that·the·order·of·objects·returned·is·unspecified.·In·particular,·the
1861 order·in·which·objects·were·inserted·is·not·reflected.</p>1861 order·in·which·objects·were·inserted·is·not·reflected.</p>
1862 ··</section>1862 ··</section>
1863 </section>1863 </section>
1864 <section·class="detail"·id="match/1">1864 <section·class="detail"·id="match/1">
Offset 2666, 19 lines modifiedOffset 2666, 19 lines modified
2666 by·<code·class="inline">qlc</code>:</p><ul><li>Simple·filters·are·translated·into·equivalent·match·specifications.</li><li>More·complicated·filters·must·be·applied·to·all·objects·returned·by2666 by·<code·class="inline">qlc</code>:</p><ul><li>Simple·filters·are·translated·into·equivalent·match·specifications.</li><li>More·complicated·filters·must·be·applied·to·all·objects·returned·by
2667 <a·href="#select/3"><code·class="inline">select/3</code></a>·given·a·match·specification·that·matches·all2667 <a·href="#select/3"><code·class="inline">select/3</code></a>·given·a·match·specification·that·matches·all
2668 objects.</li></ul></li><li><p><code·class="inline">{select,</code>·<a·href="#t:match_spec/0"><code·class="inline">match_spec/0</code></a>·<code·class="inline">}</code>·-·As·for·<code·class="inline">select</code>,·the·table·is·traversed·by2668 objects.</li></ul></li><li><p><code·class="inline">{select,</code>·<a·href="#t:match_spec/0"><code·class="inline">match_spec/0</code></a>·<code·class="inline">}</code>·-·As·for·<code·class="inline">select</code>,·the·table·is·traversed·by
2669 calling·<a·href="#select/3"><code·class="inline">dets:select/3</code></a>·and·<a·href="#select/1"><code·class="inline">dets:select/1</code></a>.·The·difference·is·that·the·match2669 calling·<a·href="#select/3"><code·class="inline">dets:select/3</code></a>·and·<a·href="#select/1"><code·class="inline">dets:select/1</code></a>.·The·difference·is·that·the·match
2670 specification·is·specified·explicitly.·This·is·how·to·state·match2670 specification·is·specified·explicitly.·This·is·how·to·state·match
2671 specifications·that·cannot·easily·be·expressed·within·the·syntax·provided·by2671 specifications·that·cannot·easily·be·expressed·within·the·syntax·provided·by
2672 <code·class="inline">qlc</code>.</p></li></ul><p>The·following·example·uses·an·explicit·match·specification·to·traverse·the2672 <code·class="inline">qlc</code>.</p></li></ul><p>The·following·example·uses·an·explicit·match·specification·to·traverse·the
2673 table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">open_file</span><span·class="p"·data-group-id="1726456068-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1726456068-2">[</span><span·class="p"·data-group-id="1726456068-2">]</span><span·class="p"·data-group-id="1726456068-1">)</span><span·class="p">,</span><span·class="w">2673 table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">open_file</span><span·class="p"·data-group-id="7267469887-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7267469887-2">[</span><span·class="p"·data-group-id="7267469887-2">]</span><span·class="p"·data-group-id="7267469887-1">)</span><span·class="p">,</span><span·class="w">
2674 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="1726456068-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1726456068-4">[</span><span·class="p"·data-group-id="1726456068-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·778,·SHA:·1f2f5daccb9536b44aca9af23ea08d9421fce3c3deb6f7dd65f7726c526e95d4·...·]-3">)</span><span·class="p">,</span><span·class="w">2674 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="7267469887-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7267469887-4">[</span><span·class="p"·data-group-id="7267469887-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·778,·SHA:·9518fc7e22486543dfa89f111d1a121ac06f14dd4a7da0a4fb92c08f92ed04ff·...·]-3">)</span><span·class="p">,</span><span·class="w">
2675 </span><span·class="n">MS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="1726456068-9">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1726456068-10">(</span><span·class="p"·data-group-id="1726456068-11">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·994,·SHA:·17648191c0353b2900911e6131c36fbae8cf8a2d2a2e47c99c25d416b2a6e7bc·...·]-9">)</span><span·class="p">,</span><span·class="w">2675 </span><span·class="n">MS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="7267469887-9">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7267469887-10">(</span><span·class="p"·data-group-id="7267469887-11">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·994,·SHA:·8936176423bf41e32cd536907aa65be060fd118ef43af7b1476cdb840b353a01·...·]-9">)</span><span·class="p">,</span><span·class="w">
2676 </span><span·class="n">QH1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">table</span><span·class="p"·data-group-id="1726456068-15">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1726456068-16">[</span><span·class="p"·data-group-id="1726456068-17">{</span><span·class="ss">traverse</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·2206,·SHA:·3b26a7e5c2858d99e16e7fd74a61e081aef60ca5dfc988017eb2a5d819e6a25c·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·latter·example·is·equivalent·to·the·former,·which·can·be·verified·using2676 </span><span·class="n">QH1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dets</span><span·class="p">:</span><span·class="nf">table</span><span·class="p"·data-group-id="7267469887-15">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7267469887-16">[</span><span·class="p"·data-group-id="7267469887-17">{</span><span·class="ss">traverse</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·2206,·SHA:·d5df59e6f82e6cb05c1bd8087199f5cb4d17f185061f614d8676bfe28d547dc8·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·latter·example·is·equivalent·to·the·former,·which·can·be·verified·using
2677 function·<a·href="qlc.html#info/1"><code·class="inline">qlc:info/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="2742799666-1">(</span><span·class="n">QH1</span><span·class="p"·data-group-id="2742799666-1">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">info</span><s[·...·truncated·by·diffoscope;·len:·118,·SHA:·b4dec147f0b3c9fbf4e2876ded41685ec7f2d7b45aee1bd58fa417f68767ef2d·...·]-2">)</span><span·class="p">.</span><span·class="w">2677 function·<a·href="qlc.html#info/1"><code·class="inline">qlc:info/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="3385351914-1">(</span><span·class="n">QH1</span><span·class="p"·data-group-id="3385351914-1">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">info</span><s[·...·truncated·by·diffoscope;·len:·118,·SHA:·ad212cc5fd4ccd925f950c3a84e14a3e78ab1c0683ab4b527925f633597024ff·...·]-2">)</span><span·class="p">.</span><span·class="w">
2678 </span><span·class="ss">true</span></code></pre><p><a·href="qlc.html#info/1"><code·class="inline">qlc:info/1</code></a>·returns·information·about·a·query·handle.·In·this·case·identical2678 </span><span·class="ss">true</span></code></pre><p><a·href="qlc.html#info/1"><code·class="inline">qlc:info/1</code></a>·returns·information·about·a·query·handle.·In·this·case·identical
2679 information·is·returned·for·the·two·query·handles.</p>2679 information·is·returned·for·the·two·query·handles.</p>
2680 ··</section>2680 ··</section>
2681 </section>2681 </section>
2682 <section·class="detail"·id="to_ets/2">2682 <section·class="detail"·id="to_ets/2">
  
2683 ··<div·class="detail-header">2683 ··<div·class="detail-header">
Offset 2740, 15 lines modifiedOffset 2740, 15 lines modified
2740 ······················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>2740 ······················Reason·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
2741 ······</div>2741 ······</div>
  
2742 <p>Applies·<code·class="inline">Fun</code>·to·each·object·stored·in·table·<code·class="inline">Name</code>·in·some·unspecified·order.2742 <p>Applies·<code·class="inline">Fun</code>·to·each·object·stored·in·table·<code·class="inline">Name</code>·in·some·unspecified·order.
2743 Different·actions·are·taken·depending·on·the·return·value·of·<code·class="inline">Fun</code>.·The2743 Different·actions·are·taken·depending·on·the·return·value·of·<code·class="inline">Fun</code>.·The
2744 following·<code·class="inline">Fun</code>·return·values·are·allowed:</p><ul><li><p><strong><code·class="inline">continue</code></strong>·-·Continue·to·perform·the·traversal.·For·example,·the·following2744 following·<code·class="inline">Fun</code>·return·values·are·allowed:</p><ul><li><p><strong><code·class="inline">continue</code></strong>·-·Continue·to·perform·the·traversal.·For·example,·the·following
2745 function·can·be·used·to·print·the·contents·of·a·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="7414293506-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="7414293506-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><[·...·truncated·by·diffoscope;·len:·381,·SHA:·94adc2c69ae0144ba6424f689c7bd0edf44ca63ee55698dd4745ad0d9543f753·...·]-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span></code></pre></li><li><p><strong><code·class="inline">{continue,·Val}</code></strong>·-·Continue·the·traversal·and·accumulate·<code·class="inline">Val</code>.·The2745 function·can·be·used·to·print·the·contents·of·a·table:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="5094953201-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="5094953201-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><[·...·truncated·by·diffoscope;·len:·381,·SHA:·4fb4884584e46277dcde5424937fb82dfdf834a6a8135d70b781fbb8d235088b·...·]-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span></code></pre></li><li><p><strong><code·class="inline">{continue,·Val}</code></strong>·-·Continue·the·traversal·and·accumulate·<code·class="inline">Val</code>.·The
2746 following·function·is·supplied·to·collect·all·objects·of·a·table·in·a·list:</p><pre><code·class="text">fun(X)·-&gt;·{continue,·X}·end.</code></pre></li><li><p><strong><code·class="inline">{done,·Value}</code></strong>·-·Terminate·the·traversal·and·return·<code·class="inline">[Value·|·Acc]</code>.</p></li></ul><p>Any·other·value·<code·class="inline">OtherValue</code>·returned·by·<code·class="inline">Fun</code>·terminates·the·traversal·and·is2746 following·function·is·supplied·to·collect·all·objects·of·a·table·in·a·list:</p><pre><code·class="text">fun(X)·-&gt;·{continue,·X}·end.</code></pre></li><li><p><strong><code·class="inline">{done,·Value}</code></strong>·-·Terminate·the·traversal·and·return·<code·class="inline">[Value·|·Acc]</code>.</p></li></ul><p>Any·other·value·<code·class="inline">OtherValue</code>·returned·by·<code·class="inline">Fun</code>·terminates·the·traversal·and·is
2747 returned·immediately.</p>2747 returned·immediately.</p>
2748 ··</section>2748 ··</section>
2749 </section>2749 </section>
2750 <section·class="detail"·id="update_counter/3">2750 <section·class="detail"·id="update_counter/3">
  
2751 ··<div·class="detail-header">2751 ··<div·class="detail-header">
19.5 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/dict.html
    
Offset 134, 21 lines modifiedOffset 134, 21 lines modified
134 do·not·compare·equal·(<code·class="inline">==</code>).</p><h2·id="module-notes"·class="section-heading">134 do·not·compare·equal·(<code·class="inline">==</code>).</p><h2·id="module-notes"·class="section-heading">
135 ··<a·href="#module-notes"·class="hover-link">135 ··<a·href="#module-notes"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Notes</span>138 ··<span·class="text">Notes</span>
139 </h2>139 </h2>
140 <p><a·href=""·id="notes"></a></p><p>Functions·<code·class="inline">append</code>·and·<code·class="inline">append_list</code>·are·included·so·that·keyed·values·can·be140 <p><a·href=""·id="notes"></a></p><p>Functions·<code·class="inline">append</code>·and·<code·class="inline">append_list</code>·are·included·so·that·keyed·values·can·be
141 stored·in·a·list·<em>accumulator</em>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">D0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="4343004628-1">(</span><span·class="p"·data-group-id="4343004628-1">)</span><span·class="p">,</span><span·class="w">141 stored·in·a·list·<em>accumulator</em>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">D0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="3971969248-1">(</span><span·class="p"·data-group-id="3971969248-1">)</span><span·class="p">,</span><span·class="w">
142 ··</span><span·class="n">D1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">store</span><span·class="p"·data-group-id="4343004628-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4343004628-3">[</span><span·class="p"·data-group-id="4343004628-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·62,·SHA:·6f01492d260b680184c5fe5c985debf776b7474990c20aa4fcb0816f73f39e45·...·]8-2">)</span><span·class="p">,</span><span·class="w">142 ··</span><span·class="n">D1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">store</span><span·class="p"·data-group-id="3971969248-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3971969248-3">[</span><span·class="p"·data-group-id="3971969248-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·62,·SHA:·923b6975a11712a9015bd2197e884169238d9880ca8aa69950530bad9bdb2372·...·]8-2">)</span><span·class="p">,</span><span·class="w">
143 ··</span><span·class="n">D2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="4343004628-4">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p"·data-group-id="4343004628-4">)</span><span·class="p">,</span><span·class="w">143 ··</span><span·class="n">D2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3971969248-4">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p"·data-group-id="3971969248-4">)</span><span·class="p">,</span><span·class="w">
144 ··</span><span·class="n">D3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="4343004628-5">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p"·data-group-id="4343004628-5">)</span><span·class="p">,</span><span·class="w">144 ··</span><span·class="n">D3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3971969248-5">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p"·data-group-id="3971969248-5">)</span><span·class="p">,</span><span·class="w">
145 ··</span><span·class="n">D4</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="4343004628-6">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D3</span><span·class="p"·data-group-id="4343004628-6">)</span><span·class="p">,</span><span·class="w">145 ··</span><span·class="n">D4</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3971969248-6">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D3</span><span·class="p"·data-group-id="3971969248-6">)</span><span·class="p">,</span><span·class="w">
146 ··</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="4343004628-7">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D4</span><span·class="p"·data-group-id="4343004628-7">)</span><span·class="p">.</span><span·class="w">146 ··</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="3971969248-7">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D4</span><span·class="p"·data-group-id="3971969248-7">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="4343004628-8">[</span><span·class="ss">f1</span><span·class="p">,</span><span·class="ss">f2</span><span·class="p">,</span><span·class="ss">f3</span><span·class="p"·data-group-id="4343004628-8">]</span></code></pre><p>This·saves·the·trouble·of·first·fetching·a·keyed·value,·appending·a·new·value·to147 </span><span·class="p"·data-group-id="3971969248-8">[</span><span·class="ss">f1</span><span·class="p">,</span><span·class="ss">f2</span><span·class="p">,</span><span·class="ss">f3</span><span·class="p"·data-group-id="3971969248-8">]</span></code></pre><p>This·saves·the·trouble·of·first·fetching·a·keyed·value,·appending·a·new·value·to
148 the·list·of·stored·values,·and·storing·the·result.</p><p>Function·<code·class="inline">fetch</code>·is·to·be·used·if·the·key·is·known·to·be·in·the·dictionary,148 the·list·of·stored·values,·and·storing·the·result.</p><p>Function·<code·class="inline">fetch</code>·is·to·be·used·if·the·key·is·known·to·be·in·the·dictionary,
149 otherwise·function·<code·class="inline">find</code>.</p><h2·id="module-see-also"·class="section-heading">149 otherwise·function·<code·class="inline">find</code>.</p><h2·id="module-see-also"·class="section-heading">
150 ··<a·href="#module-see-also"·class="hover-link">150 ··<a·href="#module-see-also"·class="hover-link">
151 ····<i·class="ri-link-m"·aria-hidden="true"></i>151 ····<i·class="ri-link-m"·aria-hidden="true"></i>
152 ··</a>152 ··</a>
153 ··<span·class="text">See·Also</span>153 ··<span·class="text">See·Also</span>
154 </h2>154 </h2>
Offset 871, 18 lines modifiedOffset 871, 18 lines modified
  
871 ······</div>871 ······</div>
  
872 <p>Merges·two·dictionaries,·<code·class="inline">Dict1</code>·and·<code·class="inline">Dict2</code>,·to·create·a·new·dictionary.·All872 <p>Merges·two·dictionaries,·<code·class="inline">Dict1</code>·and·<code·class="inline">Dict2</code>,·to·create·a·new·dictionary.·All
873 the·<code·class="inline">Key</code>-<code·class="inline">Value</code>·pairs·from·both·dictionaries·are·included·in·the·new873 the·<code·class="inline">Key</code>-<code·class="inline">Value</code>·pairs·from·both·dictionaries·are·included·in·the·new
874 dictionary.·If·a·key·occurs·in·both·dictionaries,·<code·class="inline">Fun</code>·is·called·with·the·key874 dictionary.·If·a·key·occurs·in·both·dictionaries,·<code·class="inline">Fun</code>·is·called·with·the·key
875 and·both·values·to·return·a·new·value.·<code·class="inline">merge</code>·can·be·defined·as·follows,·but·is875 and·both·values·to·return·a·new·value.·<code·class="inline">merge</code>·can·be·defined·as·follows,·but·is
876 faster:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">merge</span><span·class="p"·data-group-id="8742856490-1">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p"·data-group-id="8742856490-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">876 faster:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">merge</span><span·class="p"·data-group-id="2019856869-1">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p"·data-group-id="2019856869-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
877 ····</span><span·class="nf">fold</span><span·class="p"·data-group-id="8742856490-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8742856490-3">(</span><span·class="n">K</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V1</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·80,·SHA:·830459adc8ebaa1ca7dc23a96c15f70cb5f5140d48fc3e287951787a06541a0e·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">877 ····</span><span·class="nf">fold</span><span·class="p"·data-group-id="2019856869-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2019856869-3">(</span><span·class="n">K</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V1</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·80,·SHA:·357289b75cee481dbe3c82326e96ce380aa4ff716a25a09aa053ac7999c54dca·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
878 ·················</span><span·class="nf">update</span><span·class="p"·data-group-id="8742856490-4">(</span><span·class="n">K</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8742856490-5">(</span><span·class="n">V2</span><span·class="p"·data-group-id="87[·...·truncated·by·diffoscope;·len:·634,·SHA:·507546dd951a3ce8caa1bf786d7a44f0dcce1e5459829e071e2a531489522fc6·...·]-4">)</span><span·class="w">878 ·················</span><span·class="nf">update</span><span·class="p"·data-group-id="2019856869-4">(</span><span·class="n">K</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2019856869-5">(</span><span·class="n">V2</span><span·class="p"·data-group-id="20[·...·truncated·by·diffoscope;·len:·634,·SHA:·7d9519fc05ec9fa57efde2cab10a400718ce228b8674ae380e75e8ba9fe5fe11·...·]-4">)</span><span·class="w">
879 ·········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p"·data-group-id="8742856490-2">)</span><span·class="p">.</span></code></pre>879 ·········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p"·data-group-id="2019856869-2">)</span><span·class="p">.</span></code></pre>
880 ··</section>880 ··</section>
881 </section>881 </section>
882 <section·class="detail"·id="new/0">882 <section·class="detail"·id="new/0">
  
883 ··<div·class="detail-header">883 ··<div·class="detail-header">
884 ····<a·href="#new/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">884 ····<a·href="#new/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
885 ······<i·class="ri-link-m"·aria-hidden="true"></i>885 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1073, 16 lines modifiedOffset 1073, 16 lines modified
1073 ····················Fun·::·fun((Value1·::·Value)·->·Value2·::·Value),1073 ····················Fun·::·fun((Value1·::·Value)·->·Value2·::·Value),
1074 ····················Initial·::·Value.</pre>1074 ····················Initial·::·Value.</pre>
  
1075 ······</div>1075 ······</div>
  
1076 <p>Updates·a·value·in·a·dictionary·by·calling·<code·class="inline">Fun</code>·on·the·value·to·get·a·new1076 <p>Updates·a·value·in·a·dictionary·by·calling·<code·class="inline">Fun</code>·on·the·value·to·get·a·new
1077 value.·If·<code·class="inline">Key</code>·is·not·present·in·the·dictionary,·<code·class="inline">Initial</code>·is·stored·as·the1077 value.·If·<code·class="inline">Key</code>·is·not·present·in·the·dictionary,·<code·class="inline">Initial</code>·is·stored·as·the
1078 first·value.·For·example,·<a·href="#append/3"><code·class="inline">append/3</code></a>·can·be·defined·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append</span><span·class="p"·data-group-id="8699309208-1">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="8699309208-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1078 first·value.·For·example,·<a·href="#append/3"><code·class="inline">append/3</code></a>·can·be·defined·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append</span><span·class="p"·data-group-id="6404634542-1">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="6404634542-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1079 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="8699309208-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8699309208-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·673,·SHA:·e7b5f8d94721c9d0db64538806d626303eb12a3c78c5e2f8d99b181b0d12b88d·...·]-2">)</span><span·class="p">.</span></code></pre>1079 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="6404634542-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6404634542-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·673,·SHA:·cd2c8ecb2d728b299775d9f9a7bb15f21bea4efb4ca896702450f43c7c0d82fe·...·]-2">)</span><span·class="p">.</span></code></pre>
1080 ··</section>1080 ··</section>
1081 </section>1081 </section>
1082 <section·class="detail"·id="update_counter/3">1082 <section·class="detail"·id="update_counter/3">
  
1083 ··<div·class="detail-header">1083 ··<div·class="detail-header">
1084 ····<a·href="#update_counter/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1084 ····<a·href="#update_counter/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1085 ······<i·class="ri-link-m"·aria-hidden="true"></i>1085 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1103, 16 lines modifiedOffset 1103, 16 lines modified
1103 ··········<pre·translate="no"><span·class="attribute">-spec</span>·update_counter(Key,·Increment,·Dict1)·->·Dict21103 ··········<pre·translate="no"><span·class="attribute">-spec</span>·update_counter(Key,·Increment,·Dict1)·->·Dict2
1104 ························when·Dict1·::·<a·href="#t:dict/2">dict</a>(Key,·Value),·Dict2·::·<a·href="#t:dict/2">dict</a>(Key,·Value),·Increment·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:number/0">number</a>().</pre>1104 ························when·Dict1·::·<a·href="#t:dict/2">dict</a>(Key,·Value),·Dict2·::·<a·href="#t:dict/2">dict</a>(Key,·Value),·Increment·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:number/0">number</a>().</pre>
  
1105 ······</div>1105 ······</div>
  
1106 <p>Adds·<code·class="inline">Increment</code>·to·the·value·associated·with·<code·class="inline">Key</code>·and·stores·this·value.·If1106 <p>Adds·<code·class="inline">Increment</code>·to·the·value·associated·with·<code·class="inline">Key</code>·and·stores·this·value.·If
1107 <code·class="inline">Key</code>·is·not·present·in·the·dictionary,·<code·class="inline">Increment</code>·is·stored·as·the·first1107 <code·class="inline">Key</code>·is·not·present·in·the·dictionary,·<code·class="inline">Increment</code>·is·stored·as·the·first
1108 value.</p><p>This·can·be·defined·as·follows,·but·is·faster:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">update_counter</span><span·class="p"·data-group-id="3191275657-1">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Incr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="3191275657-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1108 value.</p><p>This·can·be·defined·as·follows,·but·is·faster:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">update_counter</span><span·class="p"·data-group-id="4068311429-1">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Incr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D</span><span·class="p"·data-group-id="4068311429-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1109 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="3191275657-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3191275657-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·462,·SHA:·55353a41ecb2e37f704b03dcd1ce3c7c01e121e1e60181ca6257ee95a15e404b·...·]-2">)</span><span·class="p">.</span></code></pre>1109 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="4068311429-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4068311429-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·462,·SHA:·5ff57ace1a7521a9376c723983dbc1d989a2ee7232f55092a94981473362ac5f·...·]-2">)</span><span·class="p">.</span></code></pre>
1110 ··</section>1110 ··</section>
1111 </section>1111 </section>
  
1112 ····</div>1112 ····</div>
1113 ··</section>1113 ··</section>
  
1114 ····<footer·class="footer">1114 ····<footer·class="footer">
2.83 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/epp.html
    
Offset 136, 15 lines modifiedOffset 136, 15 lines modified
136 <code·class="inline">Latin-1</code>·and·<code·class="inline">UTF-8</code>,·where·the·case·of·the·characters·can·be·chosen·freely.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·coding:·utf-8</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·For·this·file·we·have·chosen·encoding·=·Latin-1</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·-*-·coding:·latin-1·-*-</span></code></pre><h2·id="module-error-information"·class="section-heading">136 <code·class="inline">Latin-1</code>·and·<code·class="inline">UTF-8</code>,·where·the·case·of·the·characters·can·be·chosen·freely.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·coding:·utf-8</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·For·this·file·we·have·chosen·encoding·=·Latin-1</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·-*-·coding:·latin-1·-*-</span></code></pre><h2·id="module-error-information"·class="section-heading">
137 ··<a·href="#module-error-information"·class="hover-link">137 ··<a·href="#module-error-information"·class="hover-link">
138 ····<i·class="ri-link-m"·aria-hidden="true"></i>138 ····<i·class="ri-link-m"·aria-hidden="true"></i>
139 ··</a>139 ··</a>
140 ··<span·class="text">Error·Information</span>140 ··<span·class="text">Error·Information</span>
141 </h2>141 </h2>
142 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O142 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
143 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2683209342-1">{</span><span·class="n">ErrorLine</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="26832093[·...·truncated·by·diffoscope;·len:·369,·SHA:·86f190f4c694d2aab319fbdf5af9cc2c96f1963b0f3b50f18c28a12fcee0b5aa·...·]-1">)</span></code></pre><h2·id="module-see-also"·class="section-heading">143 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8907557504-1">{</span><span·class="n">ErrorLine</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="89075575[·...·truncated·by·diffoscope;·len:·369,·SHA:·1929e75fa0f204bf631d56efe1f9942edb85c463a9b1d71bcac7aa3357c3921f·...·]-1">)</span></code></pre><h2·id="module-see-also"·class="section-heading">
144 ··<a·href="#module-see-also"·class="hover-link">144 ··<a·href="#module-see-also"·class="hover-link">
145 ····<i·class="ri-link-m"·aria-hidden="true"></i>145 ····<i·class="ri-link-m"·aria-hidden="true"></i>
146 ··</a>146 ··</a>
147 ··<span·class="text">See·Also</span>147 ··<span·class="text">See·Also</span>
148 </h2>148 </h2>
149 <p><a·href="erl_parse.html"><code·class="inline">erl_parse</code></a></p>149 <p><a·href="erl_parse.html"><code·class="inline">erl_parse</code></a></p>
150 ····</section>150 ····</section>
25.8 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/erl_error.html
    
Offset 309, 15 lines modifiedOffset 309, 15 lines modified
309 ······<div·class="specs">309 ······<div·class="specs">
  
310 ··········<pre·translate="no"><span·class="attribute">-type</span>·format_fun()·::·fun((<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·<a·href="#t:column/0">column</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:iolist/0">iolist</a>()).</pre>310 ··········<pre·translate="no"><span·class="attribute">-type</span>·format_fun()·::·fun((<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·<a·href="#t:column/0">column</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:iolist/0">iolist</a>()).</pre>
  
311 ······</div>311 ······</div>
  
312 <p>A·fun·used·to·format·function·arguments·for·BIF·and·function·calls.·By·default312 <p>A·fun·used·to·format·function·arguments·for·BIF·and·function·calls.·By·default
313 the·following·fun·will·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="0806617197-1">(</span><span·class="n">Term</span><span·class="p">,</span><span·class="w">·</span><span·class="n">I</span><span·class="p"·data-group-id="0806617197-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·417,·SHA:·d53435fba941dadbc81e34363c5ebf81ead9779fb79ccdfd07f55d5ef4cde16d·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span></code></pre>313 the·following·fun·will·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="0102787073-1">(</span><span·class="n">Term</span><span·class="p">,</span><span·class="w">·</span><span·class="n">I</span><span·class="p"·data-group-id="0102787073-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·417,·SHA:·75e93095a7a268f5c3fd49bf59ae7f0588a5a412eeb582d96d02de707a9ae2d6·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span></code></pre>
314 ··</section>314 ··</section>
315 </section>315 </section>
316 <section·class="detail"·id="t:format_options/0">316 <section·class="detail"·id="t:format_options/0">
  
317 ··<div·class="detail-header">317 ··<div·class="detail-header">
318 ····<a·href="#t:format_options/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">318 ····<a·href="#t:format_options/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
319 ······<i·class="ri-link-m"·aria-hidden="true"></i>319 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 424, 31 lines modifiedOffset 424, 31 lines modified
424 <p>This·callback·is·called·when·<a·href="#format_exception/4"><code·class="inline">format_exception/4</code></a>·or·similar·functionality·wants424 <p>This·callback·is·called·when·<a·href="#format_exception/4"><code·class="inline">format_exception/4</code></a>·or·similar·functionality·wants
425 to·provide·extra·information·about·an·error.·The·<code·class="inline">Module</code>:<code·class="inline">Function</code>·called·is425 to·provide·extra·information·about·an·error.·The·<code·class="inline">Module</code>:<code·class="inline">Function</code>·called·is
426 the·one·specificed·by·the·<code·class="inline">error_info</code>·map.</p><p>The·function·should·return·a·map·with·additional·information·about·what·have426 the·one·specificed·by·the·<code·class="inline">error_info</code>·map.</p><p>The·function·should·return·a·map·with·additional·information·about·what·have
427 caused·the·exception.·The·possible·keys·of·the·map·are:</p><ul><li><p><strong><code·class="inline">ArgumentPosition·=·pos_integer()</code></strong>·-·The·position·of·the·argument·that427 caused·the·exception.·The·possible·keys·of·the·map·are:</p><ul><li><p><strong><code·class="inline">ArgumentPosition·=·pos_integer()</code></strong>·-·The·position·of·the·argument·that
428 caused·the·error·starting·at·1.</p></li><li><p><strong><code·class="inline">general</code></strong>·-·An·error·that·is·not·associated·with·any·argument·caused·the428 caused·the·error·starting·at·1.</p></li><li><p><strong><code·class="inline">general</code></strong>·-·An·error·that·is·not·associated·with·any·argument·caused·the
429 error.</p></li><li><p><strong><code·class="inline">reason</code></strong>·-·If·the·<code·class="inline">Reason</code>·should·be·printed·differently·than·the·default429 error.</p></li><li><p><strong><code·class="inline">reason</code></strong>·-·If·the·<code·class="inline">Reason</code>·should·be·printed·differently·than·the·default
430 way.</p></li></ul><p>If·the·text·returned·includes·new-lines,·<a·href="#format_exception/4"><code·class="inline">format_exception/4</code></a>·will·indent·the430 way.</p></li></ul><p>If·the·text·returned·includes·new-lines,·<a·href="#format_exception/4"><code·class="inline">format_exception/4</code></a>·will·indent·the
431 text·correctly.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8861128929-1">(</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="8861128929-1">)</span><span·class="p">.</span><span·class="w">431 text·correctly.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8219512501-1">(</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="8219512501-1">)</span><span·class="p">.</span><span·class="w">
432 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8861128929-2">(</span><span·class="p"·data-group-id="8861128929-3">[</span><span·class="ss">atom_to_string</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">format_error</span><span·class[·...·truncated·by·diffoscope;·len:·132,·SHA:·54d26a0681dfae195f151744c2078e6cbb3af23a8e88f6294737a7e3f2d8ff76·...·]-2">)</span><span·class="p">.</span><span·class="w">432 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8219512501-2">(</span><span·class="p"·data-group-id="8219512501-3">[</span><span·class="ss">atom_to_string</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">format_error</span><span·class[·...·truncated·by·diffoscope;·len:·132,·SHA:·8d8f247c30652e6a875a3b7ac7d11a1363343993ac0e1abea6c25b1e9145f13d·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
433 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="8861128929-4">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="8861128929-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_atom</span><span·class="p"·data-group-id="8861128929-5">(</sp[·...·truncated·by·diffoscope;·len:·70,·SHA:·cee894497620a89dc5935f0813e8c8d3f8e7c4fe93ff859ee232074bc0045e3d·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">433 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="8219512501-4">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="8219512501-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_atom</span><span·class="p"·data-group-id="8219512501-5">(</sp[·...·truncated·by·diffoscope;·len:·70,·SHA:·9889955d90cc689cd6105dff991094f71cc9d881fff1ea98f1cd5fedd2b80f6e·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
434 ··</span><span·class="nf">atom_to_list</span><span·class="p"·data-group-id="8861128929-6">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="8861128929-6">)</span><span·class="p">;</span><span·class="w">434 ··</span><span·class="nf">atom_to_list</span><span·class="p"·data-group-id="8219512501-6">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="8219512501-6">)</span><span·class="p">;</span><span·class="w">
435 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="8861128929-7">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="8861128929-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">435 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="8219512501-7">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="8219512501-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
436 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="8861128929-8">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="8861128929-9">[</span><span·class="n">Arg</span><span·class="p"·data-group-id="8861128929-9">]</span><span·class="p">,</span><span·class="w">436 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="8219512501-8">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="8219512501-9">[</span><span·class="n">Arg</span><span·class="p"·data-group-id="8219512501-9">]</span><span·class="p">,</span><span·class="w">
437 ···············</span><span·class="p"·data-group-id="8861128929-10">[</span><span·class="p"·data-group-id="8861128929-11">{</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="p"·data-group-id="8861128929-12">#{</span><span·class="w">·</span><span·class="ss">module</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">437 ···············</span><span·class="p"·data-group-id="8219512501-10">[</span><span·class="p"·data-group-id="8219512501-11">{</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="p"·data-group-id="8219512501-12">#{</span><span·class="w">·</span><span·class="ss">module</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">
438 ·······························</span><span·class="ss">cause</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8861128929-13">#{</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;should·be·an·atom&quot;</span><span·class="w">·</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·225,·SHA:·b0f6c24d6aeb6e8917271193bdc70718058d16d7d197b4b7a96294ac4872fbf4·...·]-8">)</span><span·class="p">.</span><span·class="w">438 ·······························</span><span·class="ss">cause</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8219512501-13">#{</span><span·class="w">·</span><span·class="mi">1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;should·be·an·atom&quot;</span><span·class="w">·</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·225,·SHA:·097a3b775ea787b8409737ea7170178daacfb9750b9ea8bc20d20ba39084d57f·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
439 </span><span·class="nf">format_error</span><span·class="p"·data-group-id="8861128929-14">(</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8861128929-15">[</span><span·class="p"·data-group-id="8861128929-16">{</span><span·class="p">_</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·392,·SHA:·8ac1c309c1312fa8c3f931ad698a669342bb32be022c2973fb4ef653f211edcd·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">439 </span><span·class="nf">format_error</span><span·class="p"·data-group-id="8219512501-14">(</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8219512501-15">[</span><span·class="p"·data-group-id="8219512501-16">{</span><span·class="p">_</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·392,·SHA:·fa62750da676f77133c28127a32606749f6e7048650a84e928287572c4a0dc44·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
440 ··</span><span·class="n">ErrorInfo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="8861128929-17">(</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8861128929-18">#{</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·b39281e98f207153b3b4a9813c1ce6148c56e3d04236db490adfab6a48bde958·...·]-17">)</span><span·class="p">,</span><span·class="w">440 ··</span><span·class="n">ErrorInfo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="8219512501-17">(</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8219512501-18">#{</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·43d7a35a0c9693320691c2b5ac91be0f75d40c5578d769944de2431913bea909·...·]-17">)</span><span·class="p">,</span><span·class="w">
441 ··</span><span·class="n">ErrorMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="8861128929-19">(</span><span·class="ss">cause</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorInfo</span><span·class="p"·data-group-id="8861128929-19">)</span><span·class="p">,</span><span·class="w">441 ··</span><span·class="n">ErrorMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="8219512501-19">(</span><span·class="ss">cause</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorInfo</span><span·class="p"·data-group-id="8219512501-19">)</span><span·class="p">,</span><span·class="w">
442 ··</span><span·class="n">ErrorMap</span><span·class="p"·data-group-id="8861128929-20">#{</span><span·class="w">·</span><span·class="ss">general</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;optional·general·information&quot;</span><span·class="p">,</span><span·class="w">442 ··</span><span·class="n">ErrorMap</span><span·class="p"·data-group-id="8219512501-20">#{</span><span·class="w">·</span><span·class="ss">general</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;optional·general·information&quot;</span><span·class="p">,</span><span·class="w">
443 ·············</span><span·class="ss">reason</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8861128929-21">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">:·</span><span·class="si">~p</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8861128929-22">[</span><span·class="o">?</sp[·...·truncated·by·diffoscope;·len:·580,·SHA:·11db63fb577aef9be1719a3d043ef280bf93dbbb3ec2e5b570288653cb2be1fd·...·]8-1">)</span><span·class="p">.</span><span·class="w">443 ·············</span><span·class="ss">reason</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8219512501-21">(</span><span·class="s">&quot;</span><span·class="si">~p</span><span·class="s">:·</span><span·class="si">~p</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8219512501-22">[</span><span·class="o">?</sp[·...·truncated·by·diffoscope;·len:·580,·SHA:·418a953fbfd0390f584d92b7e73be5e8bc74d92908614ffed1a4822e77dcc113·...·]8-1">)</span><span·class="p">.</span><span·class="w">
444 </span><span·class="p"·data-group-id="5276027838-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="5276027838-2">}</span><span·class="gp·unselectable">444 </span><span·class="p"·data-group-id="2875110188-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="2875110188-2">}</span><span·class="gp·unselectable">
445 2&gt;·</span><span·class="nc">my_error_module</span><span·class="p">:</span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="5276027838-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="5276027838-3">)</span><span·class="p">.</span><span·class="w">445 2&gt;·</span><span·class="nc">my_error_module</span><span·class="p">:</span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="2875110188-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2875110188-3">)</span><span·class="p">.</span><span·class="w">
446 </span><span·class="gt">**·exception·error:·my_error_module:·badarg446 </span><span·class="gt">**·exception·error:·my_error_module:·badarg
447 ·····in·function··my_error_module:atom_to_string/1447 ·····in·function··my_error_module:atom_to_string/1
448 ········called·as·my_error_module:atom_to_string(1)448 ········called·as·my_error_module:atom_to_string(1)
449 ········***·argument·1:·should·be·an·atom449 ········***·argument·1:·should·be·an·atom
450 ········***·optional·general·information</span></code></pre>450 ········***·optional·general·information</span></code></pre>
451 ··</section>451 ··</section>
452 </section>452 </section>
Offset 524, 26 lines modifiedOffset 524, 26 lines modified
524 ······························StackTrace·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:stacktrace/0">erlang:stacktrace</a>(),524 ······························StackTrace·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:stacktrace/0">erlang:stacktrace</a>(),
525 ······························Options·::·<a·href="#t:format_options/0">format_options</a>().</pre>525 ······························Options·::·<a·href="#t:format_options/0">format_options</a>().</pre>
  
526 ······</div>526 ······</div>
  
527 <p>Format·the·error·reason·and·stack·back-trace·caught·using·<code·class="inline">try</code>·...·<code·class="inline">catch</code>·in527 <p>Format·the·error·reason·and·stack·back-trace·caught·using·<code·class="inline">try</code>·...·<code·class="inline">catch</code>·in
528 the·same·style·as·the·shell·formats·them.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">try</span><span·class="w">528 the·same·style·as·the·shell·formats·them.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">try</span><span·class="w">
529 ····</span><span·class="nf">do_something</span><span·class="p"·data-group-id="0497989783-1">(</span><span·class="p"·data-group-id="0497989783-1">)</span><span·class="w">529 ····</span><span·class="nf">do_something</span><span·class="p"·data-group-id="9861152840-1">(</span><span·class="p"·data-group-id="9861152840-1">)</span><span·class="w">
530 </span><span·class="k">catch</span><span·class="w">530 </span><span·class="k">catch</span><span·class="w">
531 ····</span><span·class="n">C</span><span·class="p">:</span><span·class="n">R</span><span·class="p">:</span><span·class="n">Stk</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">531 ····</span><span·class="n">C</span><span·class="p">:</span><span·class="n">R</span><span·class="p">:</span><span·class="n">Stk</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
532 ········</span><span·class="n">Message</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_error</span><span·class="p">:</span><span·class="nf">format_exception</span><span·class="p"·data-group-id="0497989783-2">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stk</span><span·class="p"·data-group-id="0497989783-2">)</span><span·class="p">,</span><span·class="w">532 ········</span><span·class="n">Message</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_error</span><span·class="p">:</span><span·class="nf">format_exception</span><span·class="p"·data-group-id="9861152840-2">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stk</span><span·class="p"·data-group-id="9861152840-2">)</span><span·class="p">,</span><span·class="w">
533 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0497989783-3">(</span><span·class="n">LogFile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~ts\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0497989783-4">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·8e929361bf46ec4808f16361f43c26d8259eca41ad187fb537d9d67914238db3·...·]-3">)</span><span·class="w">533 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9861152840-3">(</span><span·class="n">LogFile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~ts\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9861152840-4">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·21534ed8a02375af2582c867df75ca98defdcfbc3138e69c9d313ab0e9e120ec·...·]-3">)</span><span·class="w">
534 </span><span·class="k">end</span></code></pre><p>If·<code·class="inline">error_info</code>·is·provided·with·the·exception,·<code·class="inline">format_exception</code>·will·use·that534 </span><span·class="k">end</span></code></pre><p>If·<code·class="inline">error_info</code>·is·provided·with·the·exception,·<code·class="inline">format_exception</code>·will·use·that
535 information·to·provide·additional·information·about·the·exception.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">try</span><span·class="w">535 information·to·provide·additional·information·about·the·exception.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">try</span><span·class="w">
536 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">raise</span><span·class="p"·data-group-id="8013728912-1">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="8013728912-2">[</span><span·class="p"·data-group-id="8013728912-2">]</span><span·class="p">,</span><span·class="p"·data-group-id="8013728912-3">[</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·67cd5fafbd249db59ebbfae7019a6c93d186dacf49fd8eb023e41a68dd26dcae·...·]-1">)</span><span·class="w">536 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">raise</span><span·class="p"·data-group-id="2845922670-1">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="2845922670-2">[</span><span·class="p"·data-group-id="2845922670-2">]</span><span·class="p">,</span><span·class="p"·data-group-id="2845922670-3">[</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·cdf239e962642356fd095de9167f490d3b40033ff4b65a2903535b66c7304038·...·]-1">)</span><span·class="w">
537 </span><span·class="k">catch</span><span·class="w">537 </span><span·class="k">catch</span><span·class="w">
538 ····</span><span·class="n">C</span><span·class="p">:</span><span·class="n">R</span><span·class="p">:</span><span·class="n">Stk</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">538 ····</span><span·class="n">C</span><span·class="p">:</span><span·class="n">R</span><span·class="p">:</span><span·class="n">Stk</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
539 ········</span><span·class="n">Message</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_error</span><span·class="p">:</span><span·class="nf">format_exception</span><span·class="p"·data-group-id="8013728912-6">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stk</span><span·class="p"·data-group-id="8013728912-6">)</span><span·class="p">,</span><span·class="w">539 ········</span><span·class="n">Message</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_error</span><span·class="p">:</span><span·class="nf">format_exception</span><span·class="p"·data-group-id="2845922670-6">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stk</span><span·class="p"·data-group-id="2845922670-6">)</span><span·class="p">,</span><span·class="w">
540 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8013728912-7">(</span><span·class="n">LogFile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~ts\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8013728912-8">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·6f92e869a086f8bb7fa2bc944b1c407aa1187b6a20f1a3dae272180209a568f9·...·]-7">)</span><span·class="w">540 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2845922670-7">(</span><span·class="n">LogFile</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~ts\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2845922670-8">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·854ae96b85c96f32f7be5725a3c0e0bd2b12da70b736eca0420f27d0a3fe41be·...·]-7">)</span><span·class="w">
541 </span><span·class="k">end</span></code></pre><p>See·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#error/3"><code·class="inline">erlang:error/3</code></a>·for·details·on·how·to·raise·an·exception·with·<code·class="inline">error_info</code>541 </span><span·class="k">end</span></code></pre><p>See·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#error/3"><code·class="inline">erlang:error/3</code></a>·for·details·on·how·to·raise·an·exception·with·<code·class="inline">error_info</code>
542 included.</p>542 included.</p>
543 ··</section>543 ··</section>
544 </section>544 </section>
  
545 ····</div>545 ····</div>
546 ··</section>546 ··</section>
8.45 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/erl_eval.html
    
Offset 137, 35 lines modifiedOffset 137, 35 lines modified
137 ··<span·class="text">Local·Function·Handler</span>137 ··<span·class="text">Local·Function·Handler</span>
138 </h2>138 </h2>
139 <p>During·evaluation·of·a·function,·no·calls·can·be·made·to·local·functions.·An139 <p>During·evaluation·of·a·function,·no·calls·can·be·made·to·local·functions.·An
140 undefined·function·error·would·be·generated.·However,·the·optional·argument140 undefined·function·error·would·be·generated.·However,·the·optional·argument
141 <code·class="inline">LocalFunctionHandler</code>·can·be·used·to·define·a·function·that·is·called·when141 <code·class="inline">LocalFunctionHandler</code>·can·be·used·to·define·a·function·that·is·called·when
142 there·is·a·call·to·a·local·function.·The·argument·can·have·the·following142 there·is·a·call·to·a·local·function.·The·argument·can·have·the·following
143 formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called143 formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called
144 with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Func</span><span·class="p"·data-group-id="8809231307-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arguments</span><span·class="p"·data-group-id="8809231307-1">)</span></code></pre><p><code·class="inline">Name</code>·is·the·name·of·the·local·function·(an·atom)·and·<code·class="inline">Arguments</code>·is·a·list144 with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Func</span><span·class="p"·data-group-id="7040298022-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arguments</span><span·class="p"·data-group-id="7040298022-1">)</span></code></pre><p><code·class="inline">Name</code>·is·the·name·of·the·local·function·(an·atom)·and·<code·class="inline">Arguments</code>·is·a·list
145 of·the·<em>evaluated</em>·arguments.·The·function·handler·returns·the·value·of·the145 of·the·<em>evaluated</em>·arguments.·The·function·handler·returns·the·value·of·the
146 local·function.·In·this·case,·the·current·bindings·cannot·be·accessed.·To146 local·function.·In·this·case,·the·current·bindings·cannot·be·accessed.·To
147 signal·an·error,·the·function·handler·calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a147 signal·an·error,·the·function·handler·calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a
148 suitable·exit·value.</p></li><li><p><strong><code·class="inline">{eval,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Func</span><span·class="p"·data-group-id="3130591061-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arguments</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bindings</span><span·class="p"·data-group-id="3130591061-1">)</span></code></pre><p><code·class="inline">Name</code>·is·the·name·of·the·local·function·(an·atom),·<code·class="inline">Arguments</code>·is·a·list·of148 suitable·exit·value.</p></li><li><p><strong><code·class="inline">{eval,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Func</span><span·class="p"·data-group-id="7850623749-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arguments</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bindings</span><span·class="p"·data-group-id="7850623749-1">)</span></code></pre><p><code·class="inline">Name</code>·is·the·name·of·the·local·function·(an·atom),·<code·class="inline">Arguments</code>·is·a·list·of
149 the·<em>unevaluated</em>·arguments,·and·<code·class="inline">Bindings</code>·are·the·current·variable·bindings.149 the·<em>unevaluated</em>·arguments,·and·<code·class="inline">Bindings</code>·are·the·current·variable·bindings.
150 The·function·handler·returns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0533378887-1">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="n">Value</span><span·class="p">,</span><span·class="n">NewBindings</span><span·class="p"·data-group-id="0533378887-1">}</span></code></pre><p><code·class="inline">Value</code>·is·the·value·of·the·local·function·and·<code·class="inline">NewBindings</code>·are·the·updated150 The·function·handler·returns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4726327908-1">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="n">Value</span><span·class="p">,</span><span·class="n">NewBindings</span><span·class="p"·data-group-id="4726327908-1">}</span></code></pre><p><code·class="inline">Value</code>·is·the·value·of·the·local·function·and·<code·class="inline">NewBindings</code>·are·the·updated
151 variable·bindings.·In·this·case,·the·function·handler·must·itself·evaluate·all151 variable·bindings.·In·this·case,·the·function·handler·must·itself·evaluate·all
152 the·function·arguments·and·manage·the·bindings.·To·signal·an·error,·the152 the·function·arguments·and·manage·the·bindings.·To·signal·an·error,·the
153 function·handler·calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a·suitable·exit·value.</p></li><li><p><strong><code·class="inline">none</code></strong>·-·There·is·no·local·function·handler.</p></li></ul><h2·id="module-non-local-function-handler"·class="section-heading">153 function·handler·calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a·suitable·exit·value.</p></li><li><p><strong><code·class="inline">none</code></strong>·-·There·is·no·local·function·handler.</p></li></ul><h2·id="module-non-local-function-handler"·class="section-heading">
154 ··<a·href="#module-non-local-function-handler"·class="hover-link">154 ··<a·href="#module-non-local-function-handler"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">Non-Local·Function·Handler</span>157 ··<span·class="text">Non-Local·Function·Handler</span>
158 </h2>158 </h2>
159 <p>The·optional·argument·<code·class="inline">NonLocalFunctionHandler</code>·can·be·used·to·define·a·function159 <p>The·optional·argument·<code·class="inline">NonLocalFunctionHandler</code>·can·be·used·to·define·a·function
160 that·is·called·in·the·following·cases:</p><ul><li>A·functional·object·(fun)·is·called.</li><li>A·built-in·function·is·called.</li><li>A·function·is·called·using·the·<code·class="inline">M:F</code>·syntax,·where·<code·class="inline">M</code>·and·<code·class="inline">F</code>·are·atoms·or160 that·is·called·in·the·following·cases:</p><ul><li>A·functional·object·(fun)·is·called.</li><li>A·built-in·function·is·called.</li><li>A·function·is·called·using·the·<code·class="inline">M:F</code>·syntax,·where·<code·class="inline">M</code>·and·<code·class="inline">F</code>·are·atoms·or
161 expressions.</li><li>An·operator·<code·class="inline">Op/A</code>·is·called·(this·is·handled·as·a·call·to·function161 expressions.</li><li>An·operator·<code·class="inline">Op/A</code>·is·called·(this·is·handled·as·a·call·to·function
162 <code·class="inline">erlang:Op/A</code>).</li></ul><p>Exceptions·are·calls·to·<code·class="inline">erlang:apply/2,3</code>;·neither·of·the·function·handlers·are162 <code·class="inline">erlang:Op/A</code>).</li></ul><p>Exceptions·are·calls·to·<code·class="inline">erlang:apply/2,3</code>;·neither·of·the·function·handlers·are
163 called·for·such·calls.·The·argument·can·have·the·following·formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·non-local·function·handler.·The·function163 called·for·such·calls.·The·argument·can·have·the·following·formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·non-local·function·handler.·The·function
164 may·be·called·with·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Func</span><span·class="p"·data-group-id="4586503939-1">(</span><span·class="n">FuncSpec</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arguments</span><span·class="p"·data-group-id="4586503939-1">)</span></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·53697f9824906e5a86492042284ad163f66995c7c079fa01f6e3806f0511a25b·...·]-1">)</span></code></pre><p><code·class="inline">Anno</code>·is·the·<a·href="erl_anno.html#t:anno/0"><code·class="inline">erl_anno:anno()</code></a>·of·the·node,·<code·class="inline">FuncSpec</code>164 may·be·called·with·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Func</span><span·class="p"·data-group-id="7807734617-1">(</span><span·class="n">FuncSpec</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arguments</span><span·class="p"·data-group-id="7807734617-1">)</span></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·47a0dd51819f42d6634a93bc7663bee7168b63bc9a6ab3920e0edc2a683e10df·...·]-1">)</span></code></pre><p><code·class="inline">Anno</code>·is·the·<a·href="erl_anno.html#t:anno/0"><code·class="inline">erl_anno:anno()</code></a>·of·the·node,·<code·class="inline">FuncSpec</code>
165 is·the·name·of·the·function·on·the·form·<code·class="inline">{Module,Function}</code>·or·a·fun,·and165 is·the·name·of·the·function·on·the·form·<code·class="inline">{Module,Function}</code>·or·a·fun,·and
166 <code·class="inline">Arguments</code>·is·a·list·of·the·<em>evaluated</em>·arguments.·The·function·handler166 <code·class="inline">Arguments</code>·is·a·list·of·the·<em>evaluated</em>·arguments.·The·function·handler
167 returns·the·value·of·the·function.·To·signal·an·error,·the·function·handler167 returns·the·value·of·the·function.·To·signal·an·error,·the·function·handler
168 calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a·suitable·exit·value.</p></li><li><p><strong><code·class="inline">none</code></strong>·-·There·is·no·non-local·function·handler.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>For·calls·such·as·<code·class="inline">erlang:apply(Fun,·Args)</code>·or168 calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a·suitable·exit·value.</p></li><li><p><strong><code·class="inline">none</code></strong>·-·There·is·no·non-local·function·handler.</p></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>For·calls·such·as·<code·class="inline">erlang:apply(Fun,·Args)</code>·or
169 <code·class="inline">erlang:apply(Module,·Function,·Args)</code>,·the·call·of·the·non-local·function169 <code·class="inline">erlang:apply(Module,·Function,·Args)</code>,·the·call·of·the·non-local·function
170 handler·corresponding·to·the·call·to·<code·class="inline">erlang:apply/2,3</code>·itself170 handler·corresponding·to·the·call·to·<code·class="inline">erlang:apply/2,3</code>·itself
171 (<code·class="inline">Func({erlang,·apply},·[Fun,·Args])</code>·or171 (<code·class="inline">Func({erlang,·apply},·[Fun,·Args])</code>·or
2.43 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/erl_lint.html
    
Offset 135, 15 lines modifiedOffset 135, 15 lines modified
135 your·own·Erlang·compiler.</p><h2·id="module-error-information"·class="section-heading">135 your·own·Erlang·compiler.</p><h2·id="module-error-information"·class="section-heading">
136 ··<a·href="#module-error-information"·class="hover-link">136 ··<a·href="#module-error-information"·class="hover-link">
137 ····<i·class="ri-link-m"·aria-hidden="true"></i>137 ····<i·class="ri-link-m"·aria-hidden="true"></i>
138 ··</a>138 ··</a>
139 ··<span·class="text">Error·Information</span>139 ··<span·class="text">Error·Information</span>
140 </h2>140 </h2>
141 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O141 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
142 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8497064299-1">{</span><span·class="n">ErrorLine</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="84970642[·...·truncated·by·diffoscope;·len:·369,·SHA:·753008ca9005142d3318d68d9b63e416e8149e4cecfdd39c4f59f78dd98a6712·...·]-1">)</span></code></pre><h2·id="module-see-also"·class="section-heading">142 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4730893329-1">{</span><span·class="n">ErrorLine</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="47308933[·...·truncated·by·diffoscope;·len:·369,·SHA:·037b765ed895ffe386e92879e3068e495a142334112a38851942b9e9151caf45·...·]-1">)</span></code></pre><h2·id="module-see-also"·class="section-heading">
143 ··<a·href="#module-see-also"·class="hover-link">143 ··<a·href="#module-see-also"·class="hover-link">
144 ····<i·class="ri-link-m"·aria-hidden="true"></i>144 ····<i·class="ri-link-m"·aria-hidden="true"></i>
145 ··</a>145 ··</a>
146 ··<span·class="text">See·Also</span>146 ··<span·class="text">See·Also</span>
147 </h2>147 </h2>
148 <p><a·href="epp.html"><code·class="inline">epp</code></a>,·<a·href="erl_parse.html"><code·class="inline">erl_parse</code></a></p>148 <p><a·href="epp.html"><code·class="inline">epp</code></a>,·<a·href="erl_parse.html"><code·class="inline">erl_parse</code></a></p>
149 ····</section>149 ····</section>
2.59 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/erl_parse.html
    
Offset 134, 15 lines modifiedOffset 134, 15 lines modified
134 (see·the·<a·href="erl_scan.html"><code·class="inline">erl_scan</code></a>)·module.</p><h2·id="module-error-information"·class="section-heading">134 (see·the·<a·href="erl_scan.html"><code·class="inline">erl_scan</code></a>)·module.</p><h2·id="module-error-information"·class="section-heading">
135 ··<a·href="#module-error-information"·class="hover-link">135 ··<a·href="#module-error-information"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Error·Information</span>138 ··<span·class="text">Error·Information</span>
139 </h2>139 </h2>
140 <p>ErrorInfo·is·the·standard·ErrorInfo·structure·that·is·returned·from·all·I/O·modules.140 <p>ErrorInfo·is·the·standard·ErrorInfo·structure·that·is·returned·from·all·I/O·modules.
141 The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5371263433-1">{</span><span·class="n">ErrorLine</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="53712634[·...·truncated·by·diffoscope;·len:·368,·SHA:·909e6ed8f853abe2dde5f46b2cb49f2c1d70db95050c25fdbbfeeab69410f467·...·]5-1">)</span></code></pre><h2·id="module-see-also"·class="section-heading">141 The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9055820448-1">{</span><span·class="n">ErrorLine</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="90558204[·...·truncated·by·diffoscope;·len:·368,·SHA:·968e165567ccf225a7db5b84ba65f22ede162b57aba59d1d8b5a497a52de240c·...·]5-1">)</span></code></pre><h2·id="module-see-also"·class="section-heading">
142 ··<a·href="#module-see-also"·class="hover-link">142 ··<a·href="#module-see-also"·class="hover-link">
143 ····<i·class="ri-link-m"·aria-hidden="true"></i>143 ····<i·class="ri-link-m"·aria-hidden="true"></i>
144 ··</a>144 ··</a>
145 ··<span·class="text">See·Also</span>145 ··<span·class="text">See·Also</span>
146 </h2>146 </h2>
147 <p><a·href="erl_anno.html"><code·class="inline">erl_anno</code></a>,·<a·href="erl_scan.html"><code·class="inline">erl_scan</code></a>,·<a·href="io.html"><code·class="inline">io</code></a>,·section·<a·href="../../../../erts-15.2.2/doc/html/absform.html">The·Abstract·Format</a>147 <p><a·href="erl_anno.html"><code·class="inline">erl_anno</code></a>,·<a·href="erl_scan.html"><code·class="inline">erl_scan</code></a>,·<a·href="io.html"><code·class="inline">io</code></a>,·section·<a·href="../../../../erts-15.2.2/doc/html/absform.html">The·Abstract·Format</a>
148 in·the·ERTS·User's·Guide.</p>148 in·the·ERTS·User's·Guide.</p>
2.45 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/erl_scan.html
    
Offset 132, 15 lines modifiedOffset 132, 15 lines modified
132 tokens.</p><h2·id="module-error-information"·class="section-heading">132 tokens.</p><h2·id="module-error-information"·class="section-heading">
133 ··<a·href="#module-error-information"·class="hover-link">133 ··<a·href="#module-error-information"·class="hover-link">
134 ····<i·class="ri-link-m"·aria-hidden="true"></i>134 ····<i·class="ri-link-m"·aria-hidden="true"></i>
135 ··</a>135 ··</a>
136 ··<span·class="text">Error·Information</span>136 ··<span·class="text">Error·Information</span>
137 </h2>137 </h2>
138 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O138 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
139 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2683154652-1">{</span><span·class="n">ErrorLocation</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="2683[·...·truncated·by·diffoscope;·len:·373,·SHA:·4701ead3462947d26853daee1c62b04142acf6f999be3f5dac38ea41b72dcb52·...·]-1">)</span></code></pre><h2·id="module-notes"·class="section-heading">139 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4809861093-1">{</span><span·class="n">ErrorLocation</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="4809[·...·truncated·by·diffoscope;·len:·373,·SHA:·0034fc59e7733a84656b078445cd122bbfe003b27b02875cc7aa93169d7f3e2e·...·]-1">)</span></code></pre><h2·id="module-notes"·class="section-heading">
140 ··<a·href="#module-notes"·class="hover-link">140 ··<a·href="#module-notes"·class="hover-link">
141 ····<i·class="ri-link-m"·aria-hidden="true"></i>141 ····<i·class="ri-link-m"·aria-hidden="true"></i>
142 ··</a>142 ··</a>
143 ··<span·class="text">Notes</span>143 ··<span·class="text">Notes</span>
144 </h2>144 </h2>
145 <p>The·continuation·of·the·first·call·to·the·re-entrant·input·functions·must·be145 <p>The·continuation·of·the·first·call·to·the·re-entrant·input·functions·must·be
146 <code·class="inline">[]</code>.·For·a·complete·description·of·how·the·re-entrant·input·scheme·works,·see146 <code·class="inline">[]</code>.·For·a·complete·description·of·how·the·re-entrant·input·scheme·works,·see
13.3 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/erl_tar.html
    
Offset 1239, 22 lines modifiedOffset 1239, 22 lines modified
1239 storage·handling·function.</p><p>Parameter·<code·class="inline">UserData</code>·is·typically·the·result·of·opening·a·low-level·structure1239 storage·handling·function.</p><p>Parameter·<code·class="inline">UserData</code>·is·typically·the·result·of·opening·a·low-level·structure
1240 like·a·file·descriptor·or·an·SFTP·channel·id.·The·different·<code·class="inline">Fun</code>·clauses1240 like·a·file·descriptor·or·an·SFTP·channel·id.·The·different·<code·class="inline">Fun</code>·clauses
1241 operate·on·that·very·term.</p><p>The·following·are·the·fun·clauses·parameter·lists:</p><ul><li><p><strong><code·class="inline">(write,·{UserData,DataToWrite})</code></strong>·-·Writes·term·<code·class="inline">DataToWrite</code>·using1241 operate·on·that·very·term.</p><p>The·following·are·the·fun·clauses·parameter·lists:</p><ul><li><p><strong><code·class="inline">(write,·{UserData,DataToWrite})</code></strong>·-·Writes·term·<code·class="inline">DataToWrite</code>·using
1242 <code·class="inline">UserData</code>.</p></li><li><p><strong><code·class="inline">(close,·UserData)</code></strong>·-·Closes·the·access.</p></li><li><p><strong><code·class="inline">(read2,·{UserData,Size})</code></strong>·-·Reads·using·<code·class="inline">UserData</code>·but·only·<code·class="inline">Size</code>·bytes.1242 <code·class="inline">UserData</code>.</p></li><li><p><strong><code·class="inline">(close,·UserData)</code></strong>·-·Closes·the·access.</p></li><li><p><strong><code·class="inline">(read2,·{UserData,Size})</code></strong>·-·Reads·using·<code·class="inline">UserData</code>·but·only·<code·class="inline">Size</code>·bytes.
1243 Notice·that·there·is·only·an·arity-2·read·function,·not·an·arity-1·function.</p></li><li><p><strong><code·class="inline">(position,{UserData,Position})</code></strong>·-·Sets·the·position·of·<code·class="inline">UserData</code>·as1243 Notice·that·there·is·only·an·arity-2·read·function,·not·an·arity-1·function.</p></li><li><p><strong><code·class="inline">(position,{UserData,Position})</code></strong>·-·Sets·the·position·of·<code·class="inline">UserData</code>·as
1244 defined·for·files·in·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#position/2"><code·class="inline">file:position/2</code></a></p></li></ul><p><em>Example:</em></p><p>The·following·is·a·complete·<code·class="inline">Fun</code>·parameter·for·reading·and·writing·on·files1244 defined·for·files·in·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#position/2"><code·class="inline">file:position/2</code></a></p></li></ul><p><em>Example:</em></p><p>The·following·is·a·complete·<code·class="inline">Fun</code>·parameter·for·reading·and·writing·on·files
1245 using·the·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExampleFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">1245 using·the·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExampleFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
1246 ···</span><span·class="nf">fun</span><span·class="p"·data-group-id="1729819457-1">(</span><span·class="ss">write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1729819457-2">{</span><span·class="n">Fd</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·430,·SHA:·d64da36f83206bd8f3b8c5f4b3e2822484ef1030a5fd1d474a5436069ebc8693·...·]-3">)</span><span·class="p">;</span><span·class="w">1246 ···</span><span·class="nf">fun</span><span·class="p"·data-group-id="0246664474-1">(</span><span·class="ss">write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0246664474-2">{</span><span·class="n">Fd</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·430,·SHA:·230d60fb43f26297c74e3d1bacdf7100b92a674e1cbe495e97389afe2239aaa3·...·]-3">)</span><span·class="p">;</span><span·class="w">
1247 ······</span><span·class="p"·data-group-id="1729819457-4">(</span><span·class="ss">position</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1729819457-5">{</span><span·class="n">Fd</span><span·class="p">,</span><span·class="n">Pos</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·433,·SHA:·e8743da95e6a0b83f3135b79545bfc1b1af3a1630e6f89a60ed94e8529ab4693·...·]-6">)</span><span·class="p">;</span><span·class="w">1247 ······</span><span·class="p"·data-group-id="0246664474-4">(</span><span·class="ss">position</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0246664474-5">{</span><span·class="n">Fd</span><span·class="p">,</span><span·class="n">Pos</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·433,·SHA:·b23227a9bd65e7961c87fc31076d4a8bdb909a05be2b7ca658d93405c1954358·...·]-6">)</span><span·class="p">;</span><span·class="w">
1248 ······</span><span·class="p"·data-group-id="1729819457-7">(</span><span·class="ss">read2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1729819457-8">{</span><span·class="n">Fd</span><span·class="p">,</span><span·class="n">Size</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·428,·SHA:·f1d6a12a553a15964dc97c3dd7e0709838eb550e3befebeaeaef06ee39394df0·...·]-9">)</span><span·class="p">;</span><span·class="w">1248 ······</span><span·class="p"·data-group-id="0246664474-7">(</span><span·class="ss">read2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0246664474-8">{</span><span·class="n">Fd</span><span·class="p">,</span><span·class="n">Size</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·428,·SHA:·09191f53c3319c6cfb47d52e6c2933181a955339598776ff25e905bb44550537·...·]-9">)</span><span·class="p">;</span><span·class="w">
1249 ······</span><span·class="p"·data-group-id="1729819457-10">(</span><span·class="ss">close</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="1729819457-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·200,·SHA:·de32f964d5191a482e4aa0f720d466148f93520d9c1b75a82963815f6eee30aa·...·]-11">)</span><span·class="w">1249 ······</span><span·class="p"·data-group-id="0246664474-10">(</span><span·class="ss">close</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p"·data-group-id="0246664474-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·200,·SHA:·2ed56b27d46c109adf8803ec6e6b5f88421c6f20c47544b868f4dd01e049ac1a·...·]-11">)</span><span·class="w">
1250 ···</span><span·class="k">end</span></code></pre><p>Here·<code·class="inline">Fd</code>·was·specified·to·function·<a·href="#init/3"><code·class="inline">init/3</code></a>·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8187898015-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Fd</span><span·class="p"·data-group-id="8187898015-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="8187898015-2">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8187898015-2">)</span><span·class="p">.</span><span·class="w"> 
1251 </span><span·class="p"·data-group-id="8187898015-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="8187898015-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w"[·...·truncated·by·diffoscope;·len:·1041,·SHA:·84ecff211ad7d43234dba3b0c9e5ee9e5a51f31ee2e9f3883848376b75c89724·...·]</span><span·class="w">1250 ···</span><span·class="k">end</span></code></pre><p>Here·<code·class="inline">Fd</code>·was·specified·to·function·<a·href="#init/3"><code·class="inline">init/3</code></a>·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·573,·SHA:·5924874264f7ae96ed8faead74dc84aa97be2d61d78964cad4c039f6f0a19305·...·]</span><span·class="w">
 1251 </span><span·class="p"·data-group-id="5662775149-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="5662775149-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_tar</span><span·class="p">:</span><span·class="nf">init</span><span·class="p"·data-group-id="5662775149-4">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5662775149-5">[</span><span·class="ss">write</span><span·class="p"·data-group-id="5662775149-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExampleFun</span><span·class="p"·data-group-id="5662775149-4">)</span><span·class="p">,</span></code></pre><p><code·class="inline">TarDesc</code>·is·then·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">erl_tar</span><span·class="p">:</span><span·class="nf">add</span><span·class="p"·data-group-id="4912614647-1">(</span><span·class="n">TarDesc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SomeValueIwantToAdd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FileNameInTarFile</span><span·class="p"·data-group-id="4912614647-1">)</span><span·class="p">,</span><span·class="w">
1252 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">1252 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">
1253 </span><span·class="nc">erl_tar</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="2885832806-2">(</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="2885832806-2">)</span></code></pre><p>When·the·<code·class="inline">erl_tar</code>·core·wants·to,·for·example,·write·a·piece·of·<code·class="inline">Data</code>,·it·would1253 </span><span·class="nc">erl_tar</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="4912614647-2">(</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="4912614647-2">)</span></code></pre><p>When·the·<code·class="inline">erl_tar</code>·core·wants·to,·for·example,·write·a·piece·of·<code·class="inline">Data</code>,·it·would
1254 call·<code·class="inline">ExampleFun(write,·{UserData,Data})</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·example·with·the·<code·class="inline">file</code>·module·operations·is·not·necessary·to·use1254 call·<code·class="inline">ExampleFun(write,·{UserData,Data})</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·example·with·the·<code·class="inline">file</code>·module·operations·is·not·necessary·to·use
1255 directly,·as·that·is·what·function·<a·href="#open/2"><code·class="inline">open/2</code></a>·in·principle·does.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·<code·class="inline">TarDescriptor</code>·term·is·not·a·file·descriptor.·You·are·advised·not·to·rely1255 directly,·as·that·is·what·function·<a·href="#open/2"><code·class="inline">open/2</code></a>·in·principle·does.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>The·<code·class="inline">TarDescriptor</code>·term·is·not·a·file·descriptor.·You·are·advised·not·to·rely
1256 on·the·specific·contents·of·this·term,·as·it·can·change·in·future·Erlang/OTP1256 on·the·specific·contents·of·this·term,·as·it·can·change·in·future·Erlang/OTP
1257 releases·when·more·features·are·added·to·this·module.</p></section>1257 releases·when·more·features·are·added·to·this·module.</p></section>
1258 ··</section>1258 ··</section>
1259 </section>1259 </section>
1260 <section·class="detail"·id="open/2">1260 <section·class="detail"·id="open/2">
74.1 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/escript.html
    
Offset 502, 75 lines modifiedOffset 502, 75 lines modified
502 <code·class="inline">shebang</code>·defaults·to·<code·class="inline">&quot;/usr/bin/env·escript&quot;</code>.·The·<code·class="inline">comment</code>·defaults·to502 <code·class="inline">shebang</code>·defaults·to·<code·class="inline">&quot;/usr/bin/env·escript&quot;</code>.·The·<code·class="inline">comment</code>·defaults·to
503 <code·class="inline">&quot;This·is·an·-*-·erlang·-*-·file&quot;</code>.·The·created·escript·can·either·be·returned503 <code·class="inline">&quot;This·is·an·-*-·erlang·-*-·file&quot;</code>.·The·created·escript·can·either·be·returned
504 as·a·binary·or·written·to·file.</p><p>As·an·example·of·how·the·function·can·be·used,·we·create·an·interpreted·escript504 as·a·binary·or·written·to·file.</p><p>As·an·example·of·how·the·function·can·be·used,·we·create·an·interpreted·escript
505 that·uses·<code·class="inline">emu_args</code>·to·set·some·emulator·flag.·In·this·case,·it·happens·to·set505 that·uses·<code·class="inline">emu_args</code>·to·set·some·emulator·flag.·In·this·case,·it·happens·to·set
506 number·of·schedulers·with·<code·class="inline">+S3</code>.·We·also·extract·the·different·sections·from·the506 number·of·schedulers·with·<code·class="inline">+S3</code>.·We·also·extract·the·different·sections·from·the
507 newly·created·script:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Source</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(\&quot;</span><span·class="si">~p</span><span·class="s">\&quot;,[erlang:system_info(schedulers)]).\n&quot;</span><span·class="p">.</span><span·class="w">507 newly·created·script:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Source</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(\&quot;</span><span·class="si">~p</span><span·class="s">\&quot;,[erlang:system_info(schedulers)]).\n&quot;</span><span·class="p">.</span><span·class="w">
508 </span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedulers)).\n&quot;</span><span·class="gp·unselectable">508 </span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedulers)).\n&quot;</span><span·class="gp·unselectable">
509 &gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1176838679-1">(</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1176838679-2">[</span><span·class="n">Source</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·4dac224297bb3b4dfe0c7c4e242d39f2c3a9e2518259edcc7de5c20db6cd4650·...·]-1">)</span><span·class="p">.</span><span·class="w">509 &gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5135690833-1">(</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="s">\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5135690833-2">[</span><span·class="n">Source</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·e62ee5e2072335ffd7282a48af7d8b06d723f61169f770bd9e140544d4561527·...·]-1">)</span><span·class="p">.</span><span·class="w">
510 </span><span·class="c1">%%·Demo</span><span·class="w">510 </span><span·class="c1">%%·Demo</span><span·class="w">
511 </span><span·class="nf">main</span><span·class="p"·data-group-id="1176838679-3">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="1176838679-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">511 </span><span·class="nf">main</span><span·class="p"·data-group-id="5135690833-3">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="5135690833-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
512 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1176838679-4">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="1176838679-5">(</span><span·class="ss">schedulers</span><span·class="p"·data-group-id="1176838679-5">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·fc98aa3bdb83c53919335b1c92181e6537c62163545c0dcfb43f454514f86f94·...·]-4">)</span><span·class="p">.</span><span·class="w">512 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5135690833-4">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="5135690833-5">(</span><span·class="ss">schedulers</span><span·class="p"·data-group-id="5135690833-5">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·69be1a8c088f8bc48c3e6848ba8f9f298ed529d0c3fc3f24aa5a064e79fa7b7a·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
513 </span><span·class="ss">ok</span><span·class="gp·unselectable">513 </span><span·class="ss">ok</span><span·class="gp·unselectable">
514 &gt;·</span><span·class="p"·data-group-id="1176838679-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="1176838679-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·630,·SHA:·639902c4a1f36b040fcf6f2f50c7663f320a8ec9893fbfe46aa8fa8705c76b95·...·]-9">}</span><span·class="p">,</span><span·class="w">514 &gt;·</span><span·class="p"·data-group-id="5135690833-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="5135690833-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·630,·SHA:·cc469f0b0e4495204ea50cfdb50670bb0bf7999b52267eaa2201f933b143d442·...·]-9">}</span><span·class="p">,</span><span·class="w">
515 ······································</span><span·class="p"·data-group-id="1176838679-10">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="1176838679-11">(</span><span·class="n">Source</span><span·class="p"·data-group-id="1176838679-11">)</span><span·class="p"·data-group-id="1176838679-10">}</span><span·class="p"·data-group-id="1176838679-8">]</span><span·class="p"·data-group-id="1176838679-7">)</span><span·class="p">.</span><span·class="w"> 
516 </span><span·class="p"·data-group-id="1176838679-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1176838679-13">&lt;&lt;</span><span·class="s">&quot;#!/usr/bin/env·escript\n%%·This·is·an·-*-·erlang·-*-·file\n%%![·...·truncated·by·diffoscope;·len:·231,·SHA:·1644f387902952a37ee2f0e7142fe1fa44e2e8c35dfc4d9f3cf64442b2092ad0·...·]">515 ······································</span><span·class="p"·data-group-id="5135690833-10">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="5135690833[·...·truncated·by·diffoscope;·len:·294,·SHA:·f30cf5e36dc356f0bcc8ca1491c2054b15807c6bf2a2cd8da71a414bac56c0f6·...·]">
 516 </span><span·class="p"·data-group-id="5135690833-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5135690833-13">&lt;&lt;</span><span·class="s">&quot;#!/usr/bin/env·escript\n%%·This·is·an·-*-·erlang·-*-·file\n%%!+S3&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5135690833-13">&gt;&gt;</span><span·class="p"·data-group-id="5135690833-12">}</span><span·class="gp·unselectable">
517 &gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write_file</span><span·class="p"·data-group-id="1176838679-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="1176838679-14">)</span><span·class="p">.</span><span·class="w">517 &gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write_file</span><span·class="p"·data-group-id="5135690833-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="5135690833-14">)</span><span·class="p">.</span><span·class="w">
518 </span><span·class="ss">ok</span><span·class="gp·unselectable">518 </span><span·class="ss">ok</span><span·class="gp·unselectable">
519 &gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="1176838679-15">(</span><span·class="s">&quot;escript·demo.escript&quot;</span><span·class="p"·data-group-id="1176838679-15">)</span><span·class="p">.</span><span·class="w">519 &gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="5135690833-15">(</span><span·class="s">&quot;escript·demo.escript&quot;</span><span·class="p"·data-group-id="5135690833-15">)</span><span·class="p">.</span><span·class="w">
520 </span><span·class="s">&quot;3&quot;</span><span·class="gp·unselectable">520 </span><span·class="s">&quot;3&quot;</span><span·class="gp·unselectable">
521 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">extract</span><span·class="p"·data-group-id="1176838679-16">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1176838679-17">[</span><span·class="p"·data-group-id="1176838679-17">]</span><span·class="p"·data-group-id="1176838679-16">)</span><span·class="p">.</span><span·class="w"> 
522 </span><span·class="p"·data-group-id="1176838679-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1176838679-19">[</span><span·class="p"·data-group-id="1176838679-20">{</span><span·class="ss">shebang</span><span·[·...·truncated·by·diffoscope;·len:·612,·SHA:·9f0da2d51328566b1c8bf9645371fd53928416dfceac0d092fe8a8505d3205fe·...·]</span><span·class="w">521 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">extract</span><span·class="p"·data-group-id="5135690833-16">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·170,·SHA:·ed846ce50b2e8433cf0833da2820e73bb21373dccd90af8f2697d6ffe3b1c307·...·]</span><span·class="w">
 522 </span><span·class="p"·data-group-id="5135690833-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5135690833-19">[</span><span·class="p"·data-group-id="5135690833-20">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="5135690833-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5135690833-21">{</span><span·class="ss">comment</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="5135690833-21">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5135690833-22">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="s">&quot;+S3&quot;</span><span·class="p"·data-group-id="5135690833-22">}</span><span·class="p">,</span><span·class="w">
523 ·····</span><span·class="p"·data-group-id="1176838679-23">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="p"·data-group-id="1176838679-24">&lt;&lt;</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedu&quot;</span><span·class="p">[·...·truncated·by·diffoscope;·len:·568,·SHA:·3537a4aee929daa2ac628154574a44195a23a1741d022a9367a7c25855e97828·...·]-1">(</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p">,</span><span·class="w">523 ·····</span><span·class="p"·data-group-id="5135690833-23">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="p"·data-group-id="5135690833-24">&lt;&lt;</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedu&quot;</span><span·class="p">[·...·truncated·by·diffoscope;·len:·568,·SHA:·ea78a6362ede6352c8fe3f271636529b2ba261efe6d0bcaeedbd4f568d54198d·...·]-1">(</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p">,</span><span·class="w">
524 ··················</span><span·class="p"·data-group-id="0271743811-2">[</span><span·class="s">&quot;%%·demo.erl\n-module(demo).\n-export([main/1]).\n\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Source</span><span·class="p"·data-group-id="0271743811-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·6881a3fa7cdf8660e491646eab276c3f16a3c76e65338dc84ad697161a5aedbe·...·]-1">)</span><span·class="p">.</span><span·class="w">524 ··················</span><span·class="p"·data-group-id="7031808880-2">[</span><span·class="s">&quot;%%·demo.erl\n-module(demo).\n-export([main/1]).\n\n&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Source</span><span·class="p"·data-group-id="7031808880-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·cafe084ebcf6c1e9583a614ecd03761beb795a1cd6676e2c9d059dbebf4db6db·...·]-1">)</span><span·class="p">.</span><span·class="w">
525 </span><span·class="ss">ok</span><span·class="gp·unselectable">525 </span><span·class="ss">ok</span><span·class="gp·unselectable">
526 &gt;·</span><span·class="p"·data-group-id="0271743811-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BeamCode</span><span·class="p"·data-group-id="0271743811-3">}</span><spa[·...·truncated·by·diffoscope;·len:·554,·SHA:·5ddd6cb01f4bd1c4de1469f89e4bdfece92aa56dec1d969e9a36bbcd28e62335·...·]-4">)</span><span·class="p">.</span><span·class="w">526 &gt;·</span><span·class="p"·data-group-id="7031808880-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BeamCode</span><span·class="p"·data-group-id="7031808880-3">}</span><spa[·...·truncated·by·diffoscope;·len:·554,·SHA:·ff933cf8429e6c1c39b33d57026fb376ef857e89ac354c704a4f3d977203c528·...·]-4">)</span><span·class="p">.</span><span·class="w">
527 </span><span·class="p"·data-group-id="0271743811-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">demo</span><span·class="p">,</span><span·class="w">527 </span><span·class="p"·data-group-id="7031808880-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">demo</span><span·class="p">,</span><span·class="w">
528 ····</span><span·class="p"·data-group-id="0271743811-7">&lt;&lt;</span><span·class="mi">70</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">528 ····</span><span·class="p"·data-group-id="7031808880-7">&lt;&lt;</span><span·class="mi">70</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
529 ······</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">100</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0271743811-7">&gt;&gt;</span><span·class="p"·data-group-id="0271743811-6">}</span><span·class="gp·unselectable">529 ······</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">100</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7031808880-7">&gt;&gt;</span><span·class="p"·data-group-id="7031808880-6">}</span><span·class="gp·unselectable">
530 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="0271743811-8">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0271743811-9">[</span><span·class="p"·data-group-id="0271743811-10">{</span><span·class="ss">beam</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·09bab9310be19a3311d0bd2c30c26077276b95e8490304f1ccb902714d779619·...·]-8">)</span><span·class="p">.</span><span·class="w">530 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="7031808880-8">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7031808880-9">[</span><span·class="p"·data-group-id="7031808880-10">{</span><span·class="ss">beam</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·2a40ae7ddac31dd3f8f72ea3319e370cda861a9c2e62364906b4113e301a880f·...·]-8">)</span><span·class="p">.</span><span·class="w">
531 </span><span·class="ss">ok</span><span·class="gp·unselectable">531 </span><span·class="ss">ok</span><span·class="gp·unselectable">
532 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">extract</span><span·class="p"·data-group-id="0271743811-11">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0271743811-12">[</span><span·class="p"·data-group-id="0271743811-12">]</span><span·class="p"·data-group-id="02[·...·truncated·by·diffoscope;·len:·8,·SHA:·4f094fa600421194d60b7b36eb61cd4b23a681016b6e0f53525a17e54663af0b·...·]-11">)</span><span·class="p">.</span><span·class="w">532 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">extract</span><span·class="p"·data-group-id="7031808880-11">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7031808880-12">[</span><span·class="p"·data-group-id="7031808880-12">]</span><span·class="p"·data-group-id="70[·...·truncated·by·diffoscope;·len:·8,·SHA:·6cb2e30753874e70ab7a386c4e5d03342a68a1d7742251ac156973bda7859f6f·...·]-11">)</span><span·class="p">.</span><span·class="w">
533 </span><span·class="p"·data-group-id="0271743811-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0271743811-14">[</span><span·class="p"·data-group-id="0271743811-15">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">und[·...·truncated·by·diffoscope;·len:·543,·SHA:·fddf062d65af24f8a07d614714978aab0f58dba21060827c056fbf4f001ad890·...·]-17">}</span><span·class="p">,</span><span·class="w">533 </span><span·class="p"·data-group-id="7031808880-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7031808880-14">[</span><span·class="p"·data-group-id="7031808880-15">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">und[·...·truncated·by·diffoscope;·len:·543,·SHA:·04788d9abc86d7e4d4ea171f2a1eb0736e4d0a3675050313c3f2fb5e1cf6bc7a·...·]-17">}</span><span·class="p">,</span><span·class="w">
534 ·····</span><span·class="p"·data-group-id="0271743811-18">{</span><span·class="ss">beam</span><span·class="p">,</span><span·class="p"·data-group-id="0271743811-19">&lt;&lt;</span><span·class="mi">70</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">68</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="w">534 ·····</span><span·class="p"·data-group-id="7031808880-18">{</span><span·class="ss">beam</span><span·class="p">,</span><span·class="p"·data-group-id="7031808880-19">&lt;&lt;</span><span·class="mi">70</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">68</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="w">
535 ·············</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0271743811-19">&gt;&gt;</span><span·class="p"·data-group-id="0271743811-18">}</span><span·class="p"·data-group-id="0271743811-14">]</span><span·class="p"·data-group-id="0271743811-13">}</span><span·class="gp·unselectable">535 ·············</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7031808880-19">&gt;&gt;</span><span·class="p"·data-group-id="7031808880-18">}</span><span·class="p"·data-group-id="7031808880-14">]</span><span·class="p"·data-group-id="7031808880-13">}</span><span·class="gp·unselectable">
536 &gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="0271743811-20">(</span><span·class="s">&quot;escript·demo.beam&quot;</span><span·class="p"·data-group-id="0271743811-20">)</span><span·class="p">.</span><span·class="w">536 &gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">cmd</span><span·class="p"·data-group-id="7031808880-20">(</span><span·class="s">&quot;escript·demo.beam&quot;</span><span·class="p"·data-group-id="7031808880-20">)</span><span·class="p">.</span><span·class="w">
537 </span><span·class="s">&quot;true&quot;</span></code></pre><p>Here·we·create·an·archive·script·containing·both·Erlang·code·and·Beam·code,·then537 </span><span·class="s">&quot;true&quot;</span></code></pre><p>Here·we·create·an·archive·script·containing·both·Erlang·code·and·Beam·code,·then
538 we·iterate·over·all·files·in·the·archive·and·collect·their·contents·and·some538 we·iterate·over·all·files·in·the·archive·and·collect·their·contents·and·some
539 information·about·them:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="2721091967-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SourceCode</span><span·class="p"·data-group-id="2721091967-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">read_file</span><span·class="p"·data-group-id="2721091967-2">(</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p"·data-group-id="2721091967-2">)</span><span·class="p">.</span><span·class="w"> 
540 </span><span·class="p"·data-group-id="2721091967-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2721091967-4">&lt;&lt;</span><span·class="s">&quot;%%·demo.erl\n-module(demo).\n-export([main/1]).\n\n%%·Demo\nmain[·...·truncated·by·diffoscope;·len:·231,·SHA:·1d8193185a8bcec112b0aedb1079fd2d750d3870a6be10dd4adf67f1ea8a7a00·...·]">539 information·about·them:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="2808189206-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·418,·SHA:·45ea09cd7a4552ee8a3bf3df71c3b6326c2145807c9f2ee39619e96229c3fa70·...·]">
 540 </span><span·class="p"·data-group-id="2808189206-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2808189206-4">&lt;&lt;</span><span·class="s">&quot;%%·demo.erl\n-module(demo).\n-export([main/1]).\n\n%%·Demo\nmain(_Arg&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2808189206-4">&gt;&gt;</span><span·class="p"·data-group-id="2808189206-3">}</span><span·class="gp·unselectable">
541 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="2721091967-5">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">541 &gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="2808189206-5">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">
542 ·················</span><span·class="p"·data-group-id="2721091967-6">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">542 ·················</span><span·class="p"·data-group-id="2808189206-6">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">
543 ··················</span><span·class="p"·data-group-id="2721091967-7">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2721091967-8">[</span><span·class="p"·data-group-id="2721091967-9">{</span><span·class="s">&quot;demo.erl&quot;</span><span·c[·...·truncated·by·diffoscope;·len:·115,·SHA:·d4ab5ae4dd789833fad5061d37749d37cc4a5a6571d8900b346f412a0f5e8629·...·]-9">}</span><span·class="p">,</span><span·class="w">543 ··················</span><span·class="p"·data-group-id="2808189206-7">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2808189206-8">[</span><span·class="p"·data-group-id="2808189206-9">{</span><span·class="s">&quot;demo.erl&quot;</span><span·c[·...·truncated·by·diffoscope;·len:·115,·SHA:·118a9503f2278b30ec8e4d42b9ab213a9c1cde85c3256b6b7418faa186c5addf·...·]-9">}</span><span·class="p">,</span><span·class="w">
544 ·····························</span><span·class="p"·data-group-id="2721091967-10">{</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BeamCode</span><span·class="p"·data-group-id="2721091967-10">}</span><span·class="p"·data-group-id="2721091967-8">]</span><spa[·...·truncated·by·diffoscope;·len:·299,·SHA:·daf019fa356b5ed9ca1a90f90db708c9973c7fc24a922bc5e73049ea42aec016·...·]-5">)</span><span·class="p">.</span><span·class="w">544 ·····························</span><span·class="p"·data-group-id="2808189206-10">{</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BeamCode</span><span·class="p"·data-group-id="2808189206-10">}</span><span·class="p"·data-group-id="2808189206-8">]</span><spa[·...·truncated·by·diffoscope;·len:·299,·SHA:·e9e43c62bea0ca602a289576d37911b1260a779bafc643acdec61be0169fe9b0·...·]-5">)</span><span·class="p">.</span><span·class="w">
545 </span><span·class="ss">ok</span><span·class="gp·unselectable">545 </span><span·class="ss">ok</span><span·class="gp·unselectable">
546 &gt;·</span><span·class="p"·data-group-id="2721091967-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2721091967-13">[</span><span·class="p"·data-group-id="2721091967-14">{</span><span·class="ss">shebang</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·564,·SHA:·e12a5a842e3709ae99557d50fa8428676d1afe1f22057b9ee5a08219d5af517f·...·]-16">}</span><span·class="p">,</span><span·class="w">546 &gt;·</span><span·class="p"·data-group-id="2808189206-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2808189206-13">[</span><span·class="p"·data-group-id="2808189206-14">{</span><span·class="ss">shebang</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·564,·SHA:·0057f5076ada57c4693df5bdf207c2c4161d77d55b9ccbf88dcd664590dbf727·...·]-16">}</span><span·class="p">,</span><span·class="w">
547 ·····</span><span·class="p"·data-group-id="2721091967-17">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArchiveBin</span><span·class="p"·data-group-id="2721091967-17">}</span><span·class="p"·data-group-id="2721091967-13">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·496,·SHA:·bcc051f48cbc3f9b1a9c9e7caafd9590f8a2ee774f6e966531d6e32f9ca1ba4d·...·]-18">)</span><span·class="p">.</span><span·class="w">547 ·····</span><span·class="p"·data-group-id="2808189206-17">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArchiveBin</span><span·class="p"·data-group-id="2808189206-17">}</span><span·class="p"·data-group-id="2808189206-13">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·496,·SHA:·9b59bdcd8c4d383e72a537eb290f4dbf4fc55f2731d0ada8b29ab172b9e60ce9·...·]-18">)</span><span·class="p">.</span><span·class="w">
548 </span><span·class="p"·data-group-id="2721091967-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2721091967-21">[</span><span·class="p"·data-group-id="2721091967-22">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">defa[·...·truncated·by·diffoscope;·len:·540,·SHA:·2d4f083eae5f7036b7570ac3ff043e9a3d718c028cb9112017d176c35bbbb723·...·]-24">}</span><span·class="p">,</span><span·class="w">548 </span><span·class="p"·data-group-id="2808189206-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2808189206-21">[</span><span·class="p"·data-group-id="2808189206-22">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">defa[·...·truncated·by·diffoscope;·len:·540,·SHA:·891088a6cf083df785fef3fb0cb6e6c5eecd383ba415471194f306c13a5951cc·...·]-24">}</span><span·class="p">,</span><span·class="w">
549 ·····</span><span·class="p"·data-group-id="2721091967-25">{</span><span·class="p"·data-group-id="2721091967-26">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="p"·data-group-id="2721091967-27">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">105</span><span·class="p">,</span><span·class="w">549 ·····</span><span·class="p"·data-group-id="2808189206-25">{</span><span·class="p"·data-group-id="2808189206-26">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="p"·data-group-id="2808189206-27">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">105</span><span·class="p">,</span><span·class="w">
550 ················</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">61</span><span·class="p">,</span><span·class="mi">93</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2721091967-27">&gt;&gt;</span><span·class="p"·data-group-id="2721091967-26">}</span><span·class="p">]</span><span·class="p"·data-group-id="2721091967-25">}</span><span·class="gp·unselectable">550 ················</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">61</span><span·class="p">,</span><span·class="mi">93</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2808189206-27">&gt;&gt;</span><span·class="p"·data-group-id="2808189206-26">}</span><span·class="p">]</span><span·class="p"·data-group-id="2808189206-25">}</span><span·class="gp·unselectable">
551 &gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write_file</span><span·class="p"·data-group-id="2721091967-28">(</span><span·class="s">&quot;demo.zip&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArchiveBin</span><span·class="p"·data-group-id="2721091967-28">)</span><span·class="p">.</span><span·class="w">551 &gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write_file</span><span·class="p"·data-group-id="2808189206-28">(</span><span·class="s">&quot;demo.zip&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArchiveBin</span><span·class="p"·data-group-id="2808189206-28">)</span><span·class="p">.</span><span·class="w">
552 </span><span·class="ss">ok</span><span·class="gp·unselectable">552 </span><span·class="ss">ok</span><span·class="gp·unselectable">
553 &gt;·</span><span·class="nc">zip</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="2721091967-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2721091967-30">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">I</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·1251,·SHA:·d8a76a34b8fb8604998352e3925adb631b0ce6a7babe364717733f4ea38a89ed·...·]-29">)</span><span·class="p">.</span><span·class="w">553 &gt;·</span><span·class="nc">zip</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="2808189206-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2808189206-30">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">I</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·1251,·SHA:·f4c183f8dad79995a645f11b3f5435c5f6ab5e0c7a3e99bee0ac8bf515889ec3·...·]-29">)</span><span·class="p">.</span><span·class="w">
554 </span><span·class="p"·data-group-id="2721091967-36">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2721091967-37">[</span><span·class="p"·data-group-id="2721091967-38">{</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">554 </span><span·class="p"·data-group-id="2808189206-36">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2808189206-37">[</span><span·class="p"·data-group-id="2808189206-38">{</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">
555 ······</span><span·class="p"·data-group-id="2721091967-39">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">748</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">555 ······</span><span·class="p"·data-group-id="2808189206-39">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">748</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">
556 ·················</span><span·class="p"·data-group-id="2721091967-40">{</span><span·class="p"·data-group-id="2721091967-41">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2721091967-41">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·6ab138d9a47e9af032a8d70e5b5a7b04c984aa5fe885ef665bb532ae050abe50·...·]-40">}</span><span·class="p">,</span><span·class="w">556 ·················</span><span·class="p"·data-group-id="2808189206-40">{</span><span·class="p"·data-group-id="2808189206-41">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2808189206-41">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·c01853e3b7ba5b538db867a2926146e24771aa6445ab8794d1d04d2afa594366·...·]-40">}</span><span·class="p">,</span><span·class="w">
557 ·················</span><span·class="p"·data-group-id="2721091967-43">{</span><span·class="p"·data-group-id="2721091967-44">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2721091967-44">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·735898cd0c615ffbd4351e94bedea0e67be629a8d62309f15d27d2b65596a352·...·]-43">}</span><span·class="p">,</span><span·class="w">557 ·················</span><span·class="p"·data-group-id="2808189206-43">{</span><span·class="p"·data-group-id="2808189206-44">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2808189206-44">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·18a90da8c17766c825222e1b99c69e93a762b21f2cd29b7a6d1d0b02f5115c6f·...·]-43">}</span><span·class="p">,</span><span·class="w">
558 ·················</span><span·class="p"·data-group-id="2721091967-46">{</span><span·class="p"·data-group-id="2721091967-47">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2721091967-47">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·a0b5250cf1f53e8a4c3371c26f0bc99146b23f2ad366e25ff492e6b4e8341c9e·...·]-46">}</span><span·class="p">,</span><span·class="w">558 ·················</span><span·class="p"·data-group-id="2808189206-46">{</span><span·class="p"·data-group-id="2808189206-47">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2808189206-47">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·c620583c260d359594ae469422ebd455aa474ac5b5bf9a798f8a842926d304f8·...·]-46">}</span><span·class="p">,</span><span·class="w">
559 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2721091967-39">}</span><span·class="p">,</span><span·class="w">559 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2808189206-39">}</span><span·class="p">,</span><span·class="w">
560 ······</span><span·class="p"·data-group-id="2721091967-49">&lt;&lt;</span><span·class="mi">70</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">560 ······</span><span·class="p"·data-group-id="2808189206-49">&lt;&lt;</span><span·class="mi">70</span><span·class="p">,</span><span·class="mi">79</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">49</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">66</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">77</span><span·class="p">,</span><span·class="mi">65</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span><span·class="p">,</span><span·class="mi">109</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
561 ········</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2721091967-49">&gt;&gt;</span><span·class="p"·data-group-id="2721091967-38">}</span><span·class="p">,</span><span·class="w">561 ········</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2808189206-49">&gt;&gt;</span><span·class="p"·data-group-id="2808189206-38">}</span><span·class="p">,</span><span·class="w">
562 ·····</span><span·class="p"·data-group-id="2721091967-50">{</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p">,</span><span·class="w">562 ·····</span><span·class="p"·data-group-id="2808189206-50">{</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p">,</span><span·class="w">
563 ······</span><span·class="p"·data-group-id="2721091967-51">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">563 ······</span><span·class="p"·data-group-id="2808189206-51">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">
564 ·················</span><span·class="p"·data-group-id="2721091967-52">{</span><span·class="p"·data-group-id="2721091967-53">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2721091967-53">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·8da325d45994ba1d3b60b6a10a61f77006af3b540868734c1316a4f366b25d42·...·]-52">}</span><span·class="p">,</span><span·class="w">564 ·················</span><span·class="p"·data-group-id="2808189206-52">{</span><span·class="p"·data-group-id="2808189206-53">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2808189206-53">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·65896b49cc7000147c1172ba127f76ba61ca0b4e2a1aa040fa790a9b5bd5f443·...·]-52">}</span><span·class="p">,</span><span·class="w">
565 ·················</span><span·class="p"·data-group-id="2721091967-55">{</span><span·class="p"·data-group-id="2721091967-56">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2721091967-56">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·44254c16efb49a439a61c1fc68fe5a22c6e9c58192744187b01bd0df6c8bcc0b·...·]-55">}</span><span·class="p">,</span><span·class="w">565 ·················</span><span·class="p"·data-group-id="2808189206-55">{</span><span·class="p"·data-group-id="2808189206-56">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2808189206-56">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·05fdc1aba5a77702b1c870c07f3269a617faf554205a9cb59e580d95d64fde80·...·]-55">}</span><span·class="p">,</span><span·class="w">
566 ·················</span><span·class="p"·data-group-id="2721091967-58">{</span><span·class="p"·data-group-id="2721091967-59">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2721091967-59">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·a751406738e17acc6e563ac006e4f452afb1ea58b5d5d3c908dfdf5e81ea6892·...·]-58">}</span><span·class="p">,</span><span·class="w">566 ·················</span><span·class="p"·data-group-id="2808189206-58">{</span><span·class="p"·data-group-id="2808189206-59">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2808189206-59">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·4b2ed136bf29bb39a7b4d847ed3e156c87020b74c4db9c9e64db92fda2bab761·...·]-58">}</span><span·class="p">,</span><span·class="w">
567 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2721091967-51">}</span><span·class="p">,</span><span·class="w">567 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2808189206-51">}</span><span·class="p">,</span><span·class="w">
568 ······</span><span·class="p"·data-group-id="2721091967-61">&lt;&lt;</span><span·class="s">&quot;%%·demo.erl\n-module(demo).\n-export([main/1]).\n\n%%·Demo\nmain(_Arg&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2721091967-61">&gt;&[·...·truncated·by·diffoscope;·len:·159,·SHA:·832c1d731870d67bbc14e7f7df4b6d5a9c191aac97e58a04d996ada5bccbfe76·...·]-36">}</span></code></pre>568 ······</span><span·class="p"·data-group-id="2808189206-61">&lt;&lt;</span><span·class="s">&quot;%%·demo.erl\n-module(demo).\n-export([main/1]).\n\n%%·Demo\nmain(_Arg&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2808189206-61">&gt;&[·...·truncated·by·diffoscope;·len:·159,·SHA:·c1c9a88fde9e052310acf759a6bf6473708c78ed05c987cf668fc0a39b8c069c·...·]-36">}</span></code></pre>
569 ··</section>569 ··</section>
570 </section>570 </section>
571 <section·class="detail"·id="extract/2">571 <section·class="detail"·id="extract/2">
  
572 ··<div·class="detail-header">572 ··<div·class="detail-header">
573 ····<a·href="#extract/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">573 ····<a·href="#extract/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
574 ······<i·class="ri-link-m"·aria-hidden="true"></i>574 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 593, 24 lines modifiedOffset 593, 24 lines modified
593 ······</div>593 ······</div>
  
594 <p>Parses·an·escript·and·extracts·its·sections.·This·is·the·reverse·of·<a·href="#create/2"><code·class="inline">create/2</code></a>.</p><p>All·sections·are·returned·even·if·they·do·not·exist·in·the·escript.·If·a594 <p>Parses·an·escript·and·extracts·its·sections.·This·is·the·reverse·of·<a·href="#create/2"><code·class="inline">create/2</code></a>.</p><p>All·sections·are·returned·even·if·they·do·not·exist·in·the·escript.·If·a
595 particular·section·happens·to·have·the·same·value·as·the·default·value,·the595 particular·section·happens·to·have·the·same·value·as·the·default·value,·the
596 extracted·value·is·set·to·the·atom·<code·class="inline">default</code>.·If·a·section·is·missing,·the596 extracted·value·is·set·to·the·atom·<code·class="inline">default</code>.·If·a·section·is·missing,·the
597 extracted·value·is·set·to·the·atom·<code·class="inline">undefined</code>.</p><p>Option·<code·class="inline">compile_source</code>·only·affects·the·result·if·the·escript·contains·<code·class="inline">source</code>597 extracted·value·is·set·to·the·atom·<code·class="inline">undefined</code>.</p><p>Option·<code·class="inline">compile_source</code>·only·affects·the·result·if·the·escript·contains·<code·class="inline">source</code>
598 code.·In·this·case·the·Erlang·code·is·automatically·compiled·and598 code.·In·this·case·the·Erlang·code·is·automatically·compiled·and
599 <code·class="inline">{source,·BeamCode}</code>·is·returned·instead·of·<code·class="inline">{source,·SourceCode}</code>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="6744233429-1">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">599 <code·class="inline">{source,·BeamCode}</code>·is·returned·instead·of·<code·class="inline">{source,·SourceCode}</code>.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="6570501122-1">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">
600 ·················</span><span·class="p"·data-group-id="6744233429-2">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6744233429-3">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·247,·SHA:·ebc887350b6083b4c196988f8106683aa0e8587772db2391794bf56f9fad65b0·...·]-5">}</span><span·class="p">,</span><span·class="w">600 ·················</span><span·class="p"·data-group-id="6570501122-2">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6570501122-3">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·247,·SHA:·a627f54da37926337301c576a7d09fced388a9ed8fd249ff53d03e5f95316dcb·...·]-5">}</span><span·class="p">,</span><span·class="w">
601 ······································</span><span·class="p"·data-group-id="6744233429-6">{</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BeamCode</span><span·class="p"·data-group-id="6744233429-6">}</span><span·class="p"·data-group-id="6744233429-4">]</span><span·[·...·truncated·by·diffoscope;·len:·295,·SHA:·8d1c813ecef8697419911cdb45930d91980aa196a8c61f263745377b3d83ef16·...·]-1">)</span><span·class="p">.</span><span·class="w">601 ······································</span><span·class="p"·data-group-id="6570501122-6">{</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">BeamCode</span><span·class="p"·data-group-id="6570501122-6">}</span><span·class="p"·data-group-id="6570501122-4">]</span><span·[·...·truncated·by·diffoscope;·len:·295,·SHA:·a9be31a7a93d4a44fb16ca62ef36dc0045e7450f52247194281ff15bafb50feb·...·]-1">)</span><span·class="p">.</span><span·class="w">
602 </span><span·class="ss">ok</span><span·class="gp·unselectable">602 </span><span·class="ss">ok</span><span·class="gp·unselectable">
603 &gt;·</span><span·class="p"·data-group-id="6744233429-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6744233429-9">[</span><span·class="p"·data-group-id="6744233429-10">{</span><span·class="ss">shebang</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·562,·SHA:·af756f488ce2d95d4066db076d7a4583bd9f30f0f103c3d152aef57874003c9f·...·]-12">}</span><span·class="p">,</span><span·class="w">603 &gt;·</span><span·class="p"·data-group-id="6570501122-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6570501122-9">[</span><span·class="p"·data-group-id="6570501122-10">{</span><span·class="ss">shebang</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·562,·SHA:·bed1de2e1cf826df54b09d5b2e7fe72736bcf6390ca7cfd9f78818b4f2249937·...·]-12">}</span><span·class="p">,</span><span·class="w">
604 ·····</span><span·class="p"·data-group-id="6744233429-13">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArchiveBin</span><span·class="p"·data-group-id="6744233429-13">}</span><span·class="p"·data-group-id="6744233429-9">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·468fda5d4f237bd53e119fc89f0206ee9498bf190b1429cbca9977576b90d85f·...·]-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">604 ·····</span><span·class="p"·data-group-id="6570501122-13">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ArchiveBin</span><span·class="p"·data-group-id="6570501122-13">}</span><span·class="p"·data-group-id="6570501122-9">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·6eb1ea470fb5521cde4da35b527b7161308d01b9cb7d63746ec04f22c7a11fa4·...·]-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
605 ··············</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">extract</span><span·class="p"·data-group-id="6744233429-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6744233429-15">[</span><span·class="p"·data-group-id="6744233429-15">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·b212b5eac7f8e0d66671f9b3a8e901529745e4d818de22a793eb36400f149a02·...·]-14">)</span><span·class="p">.</span><span·class="w">605 ··············</span><span·class="nc">escript</span><span·class="p">:</span><span·class="nf">extract</span><span·class="p"·data-group-id="6570501122-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6570501122-15">[</span><span·class="p"·data-group-id="6570501122-15">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·dcc134dd5f8a1e2e540531703850dbe652c53152bad8ed3bee877b2c4d9fe2be·...·]-14">)</span><span·class="p">.</span><span·class="w">
606 </span><span·class="p"·data-group-id="6744233429-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6744233429-17">[</span><span·class="p"·data-group-id="6744233429-18">{</span><span·class="p"·data-group-id="6744233429-19">{</span><span·class="ss">archi[·...·truncated·by·diffoscope;·len:·74,·SHA:·e781fea94bb0eccf8cafd30d0882f43a7aa46daf3a50de46af57aa52c09880c4·...·]-20">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">105</span><span·class="p">,</span><span·class="w">606 </span><span·class="p"·data-group-id="6570501122-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6570501122-17">[</span><span·class="p"·data-group-id="6570501122-18">{</span><span·class="p"·data-group-id="6570501122-19">{</span><span·class="ss">archi[·...·truncated·by·diffoscope;·len:·74,·SHA:·04776b2faefb3989843221f2eca9bacde7e2bb85285ff9e382e5e04f8c25a169·...·]-20">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">105</span><span·class="p">,</span><span·class="w">
607 ················</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">61</span><span·class="p">,</span><span·class="mi">93</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6744233429-20">&gt;&gt;</span><span·class="p"·data-group-id="6744233429-19">}</span><span·class="w">607 ················</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">61</span><span·class="p">,</span><span·class="mi">93</span><span·class="p">,</span><span·class="mi">107</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">118</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6570501122-20">&gt;&gt;</span><span·class="p"·data-group-id="6570501122-19">}</span><span·class="w">
608 ·····</span><span·class="p"·data-group-id="6744233429-21">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="6744233429-21">}</span><span·class="p">]</span><span·class="p"·data-group-id="6744233429-18">}</span></code></pre>608 ·····</span><span·class="p"·data-group-id="6570501122-21">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="6570501122-21">}</span><span·class="p">]</span><span·class="p"·data-group-id="6570501122-18">}</span></code></pre>
609 ··</section>609 ··</section>
610 </section>610 </section>
611 <section·class="detail"·id="script_name/0">611 <section·class="detail"·id="script_name/0">
  
612 ··<div·class="detail-header">612 ··<div·class="detail-header">
613 ····<a·href="#script_name/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">613 ····<a·href="#script_name/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
614 ······<i·class="ri-link-m"·aria-hidden="true"></i>614 ······<i·class="ri-link-m"·aria-hidden="true"></i>
120 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/ets.html
    
Offset 216, 35 lines modifiedOffset 216, 35 lines modified
216 disallow·concurrent·updates·during·the·entire·traversal.</p><p>Moreover,·traversals·not·done·in·a·<em>safe</em>·way,·on·tables·where·keys·are·inserted216 disallow·concurrent·updates·during·the·entire·traversal.</p><p>Moreover,·traversals·not·done·in·a·<em>safe</em>·way,·on·tables·where·keys·are·inserted
217 or·deleted·during·the·traversal,·may·yield·the·following·undesired·effects:</p><ul><li>Any·key·may·be·missed.</li><li>Any·key·may·be·found·more·than·once.</li><li>The·traversal·may·fail·with·<code·class="inline">badarg</code>·exception·if·keys·are·deleted.</li></ul><p>A·table·traversal·is·<em>safe</em>·if·either</p><ul><li>the·table·is·of·type·<code·class="inline">ordered_set</code>.</li><li>the·entire·table·traversal·is·done·within·one·ETS·function·call.</li><li>function·<a·href="#safe_fixtable/2"><code·class="inline">safe_fixtable/2</code></a>·is·used·to·keep·the·table·fixated·during·the·entire217 or·deleted·during·the·traversal,·may·yield·the·following·undesired·effects:</p><ul><li>Any·key·may·be·missed.</li><li>Any·key·may·be·found·more·than·once.</li><li>The·traversal·may·fail·with·<code·class="inline">badarg</code>·exception·if·keys·are·deleted.</li></ul><p>A·table·traversal·is·<em>safe</em>·if·either</p><ul><li>the·table·is·of·type·<code·class="inline">ordered_set</code>.</li><li>the·entire·table·traversal·is·done·within·one·ETS·function·call.</li><li>function·<a·href="#safe_fixtable/2"><code·class="inline">safe_fixtable/2</code></a>·is·used·to·keep·the·table·fixated·during·the·entire
218 traversal.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Even·though·the·access·of·a·single·object·is·always·guaranteed·to·be218 traversal.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Even·though·the·access·of·a·single·object·is·always·guaranteed·to·be
219 <a·href="ets.html#module-concurrency">atomic·and·isolated</a>,·each·traversal·through·a·table·to219 <a·href="ets.html#module-concurrency">atomic·and·isolated</a>,·each·traversal·through·a·table·to
220 find·the·next·key·is·not·done·with·such·guarantees.·This·is·often·not·a220 find·the·next·key·is·not·done·with·such·guarantees.·This·is·often·not·a
221 problem,·but·may·cause·rare·subtle·&quot;unexpected&quot;·effects·if·a·concurrent221 problem,·but·may·cause·rare·subtle·&quot;unexpected&quot;·effects·if·a·concurrent
222 process·inserts·objects·during·a·traversal.·For·example,·consider·one·process222 process·inserts·objects·during·a·traversal.·For·example,·consider·one·process
223 doing</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="8530921706-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8530921706-2">[</span><span·class="ss">ordered_set</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">named_tab[·...·truncated·by·diffoscope;·len:·103,·SHA:·1cc082eed9775390d76d029979df9f284263eb8397da19448a84d4db94519d62·...·]-1">)</span><span·class="p">,</span><span·class="w">223 doing</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="8386586055-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8386586055-2">[</span><span·class="ss">ordered_set</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">named_tab[·...·truncated·by·diffoscope;·len:·103,·SHA:·64cda31c57c59103e8140e9b89da2e62502d59e5ec1a5881b4a006c25a4eca6a·...·]-1">)</span><span·class="p">,</span><span·class="w">
224 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="8530921706-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8530921706-4">{</span><span·class="mi">1</span><span·class="p"·data-group-id="8530921706-4">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·7570a2258e308eb87575457e80cbea8149bc30189436409543adbd5fe77e70b7·...·]-3">)</span><span·class="p">,</span><span·class="w">224 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="8386586055-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8386586055-4">{</span><span·class="mi">1</span><span·class="p"·data-group-id="8386586055-4">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·9f46777a3bc46d5880a4d21f2042a47518159124345b7393c9fdee87e3e018fb·...·]-3">)</span><span·class="p">,</span><span·class="w">
225 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="8530921706-5">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8530921706-6">{</span><span·class="mi">2</span><span·class="p"·data-group-id="8530921706-6">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·7570a2258e308eb87575457e80cbea8149bc30189436409543adbd5fe77e70b7·...·]-5">)</span><span·class="p">,</span><span·class="w">225 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="8386586055-5">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8386586055-6">{</span><span·class="mi">2</span><span·class="p"·data-group-id="8386586055-6">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·9f46777a3bc46d5880a4d21f2042a47518159124345b7393c9fdee87e3e018fb·...·]-5">)</span><span·class="p">,</span><span·class="w">
226 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="8530921706-7">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8530921706-8">{</span><span·class="mi">3</span><span·class="p"·data-group-id="8530921706-8">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·7570a2258e308eb87575457e80cbea8149bc30189436409543adbd5fe77e70b7·...·]-7">)</span><span·class="p">,</span></code></pre><p>A·concurrent·call·to·<code·class="inline">ets:first(t)</code>,·done·by·another·process,·may·then·in·rare226 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">insert</span><span·class="p"·data-group-id="8386586055-7">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8386586055-8">{</span><span·class="mi">3</span><span·class="p"·data-group-id="8386586055-8">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·9f46777a3bc46d5880a4d21f2042a47518159124345b7393c9fdee87e3e018fb·...·]-7">)</span><span·class="p">,</span></code></pre><p>A·concurrent·call·to·<code·class="inline">ets:first(t)</code>,·done·by·another·process,·may·then·in·rare
227 cases·return·<code·class="inline">2</code>·even·though·<code·class="inline">2</code>·has·never·existed·in·the·table·ordered·as·the227 cases·return·<code·class="inline">2</code>·even·though·<code·class="inline">2</code>·has·never·existed·in·the·table·ordered·as·the
228 first·key.·In·the·same·way,·a·concurrent·call·to·<code·class="inline">ets:next(t,·1)</code>·may·return228 first·key.·In·the·same·way,·a·concurrent·call·to·<code·class="inline">ets:next(t,·1)</code>·may·return
229 <code·class="inline">3</code>·even·though·<code·class="inline">3</code>·never·existed·in·the·table·ordered·directly·after·<code·class="inline">1</code>.</p><p>Effects·like·this·are·improbable·but·possible.·The·probability·will·further·be229 <code·class="inline">3</code>·even·though·<code·class="inline">3</code>·never·existed·in·the·table·ordered·directly·after·<code·class="inline">1</code>.</p><p>Effects·like·this·are·improbable·but·possible.·The·probability·will·further·be
230 reduced·(if·not·vanish)·if·table·option230 reduced·(if·not·vanish)·if·table·option
231 <a·href="ets.html#new_2_write_concurrency"><code·class="inline">write_concurrency</code></a>·is·not·enabled.·This231 <a·href="ets.html#new_2_write_concurrency"><code·class="inline">write_concurrency</code></a>·is·not·enabled.·This
232 can·also·only·be·a·potential·concern·for·<code·class="inline">ordered_set</code>·where·the·traversal232 can·also·only·be·a·potential·concern·for·<code·class="inline">ordered_set</code>·where·the·traversal
233 order·is·defined.</p></section><p>Traversals·using·<code·class="inline">match</code>·and·<code·class="inline">select</code>·functions·may·not·need·to·scan·the·entire233 order·is·defined.</p></section><p>Traversals·using·<code·class="inline">match</code>·and·<code·class="inline">select</code>·functions·may·not·need·to·scan·the·entire
234 table·depending·on·how·the·key·is·specified.·A·match·pattern·with·a·<em>fully·bound234 table·depending·on·how·the·key·is·specified.·A·match·pattern·with·a·<em>fully·bound
235 key</em>·(without·any·match·variables)·will·optimize·the·operation·to·a·single·key235 key</em>·(without·any·match·variables)·will·optimize·the·operation·to·a·single·key
236 lookup·without·any·table·traversal·at·all.·For·<code·class="inline">ordered_set</code>·a·<em>partially·bound236 lookup·without·any·table·traversal·at·all.·For·<code·class="inline">ordered_set</code>·a·<em>partially·bound
237 key</em>·will·limit·the·traversal·to·only·scan·a·subset·of·the·table·based·on·term237 key</em>·will·limit·the·traversal·to·only·scan·a·subset·of·the·table·based·on·term
238 order.·A·partially·bound·key·is·either·a·list·or·a·tuple·with·a·prefix·that·is238 order.·A·partially·bound·key·is·either·a·list·or·a·tuple·with·a·prefix·that·is
239 fully·bound.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">T</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="2314643552-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="p"·data-group-id="2314643552-2">[</span><span·class="ss">ordered_set</span><span·class="p"·data-group-id="2314643552-2">]</span><span·class="p"·data-group-id="2314643552-1"[·...·truncated·by·diffoscope;·len:·546,·SHA:·fe589a3c22d1f3ba4f57a698ef187a34f611f9459f7469d2e527372927218c80·...·]-3">)</span><span·class="p">.</span><span·class="w">239 fully·bound.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">T</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="4181560051-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="p"·data-group-id="4181560051-2">[</span><span·class="ss">ordered_set</span><span·class="p"·data-group-id="4181560051-2">]</span><span·class="p"·data-group-id="4181560051-1"[·...·truncated·by·diffoscope;·len:·546,·SHA:·e9a9035e4eba5d250bbad547a28c2fd495a91d3bcd225dd4008ea5923ffbe75f·...·]-3">)</span><span·class="p">.</span><span·class="w">
240 </span><span·class="ss">true</span><span·class="gp·unselectable">240 </span><span·class="ss">true</span><span·class="gp·unselectable">
241 2&gt;·</span><span·class="c1">%%·Efficient·search·of·all·with·area·code·555</span><span·class="gp·unselectable">241 2&gt;·</span><span·class="c1">%%·Efficient·search·of·all·with·area·code·555</span><span·class="gp·unselectable">
242 2&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="2314643552-5">(</span><span·class="n">T</span><span·class="p">,</span><span·class="p"·data-group-id="2314643552-6">{</span><span·class="p"·data-group-id="2314643552-7">[</span><span·class="sc">$5</span><span·class="p">,</span><span·class="sc">$5</span><spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·2011cbcdb269344d8247b1e57a5f899e11f98f152821a1ace4677233b59f040c·...·]-5">)</span><span·class="p">.</span><span·class="w">242 2&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="4181560051-5">(</span><span·class="n">T</span><span·class="p">,</span><span·class="p"·data-group-id="4181560051-6">{</span><span·class="p"·data-group-id="4181560051-7">[</span><span·class="sc">$5</span><span·class="p">,</span><span·class="sc">$5</span><spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·eeb0cd60707d4ada80fe76ed1b0319c1f2180409058f7deb0b8fa9a97f875ea7·...·]-5">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="p"·data-group-id="2314643552-8">[</span><span·class="p"·data-group-id="2314643552-9">[</span><span·class="s">&quot;1234&quot;</span><span·class="p">,</span><span·class="s">&quot;John·Smith&quot;</span><span·class="p"·data-group-id="2314643552-9">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·4059c9e5e1cc1d4f63b0b768caa8008c9f1c6a1094beef529af0b0df8eaa6b87·...·]-8">]</span></code></pre><p><a·href=""·id="match_spec"></a></p><h2·id="module-match-specifications"·class="section-heading">243 </span><span·class="p"·data-group-id="4181560051-8">[</span><span·class="p"·data-group-id="4181560051-9">[</span><span·class="s">&quot;1234&quot;</span><span·class="p">,</span><span·class="s">&quot;John·Smith&quot;</span><span·class="p"·data-group-id="4181560051-9">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·5cbb1dcb4d9662b721efa2b90a31070b7a3602e50bdabc8ee684a687cfcfee6b·...·]-8">]</span></code></pre><p><a·href=""·id="match_spec"></a></p><h2·id="module-match-specifications"·class="section-heading">
244 ··<a·href="#module-match-specifications"·class="hover-link">244 ··<a·href="#module-match-specifications"·class="hover-link">
245 ····<i·class="ri-link-m"·aria-hidden="true"></i>245 ····<i·class="ri-link-m"·aria-hidden="true"></i>
246 ··</a>246 ··</a>
247 ··<span·class="text">Match·Specifications</span>247 ··<span·class="text">Match·Specifications</span>
248 </h2>248 </h2>
249 <p>Some·of·the·functions·use·a·<em>match·specification</em>,·<code·class="inline">match_spec</code>.·For·a·brief249 <p>Some·of·the·functions·use·a·<em>match·specification</em>,·<code·class="inline">match_spec</code>.·For·a·brief
250 explanation,·see·<a·href="#select/2"><code·class="inline">select/2</code></a>.·For·a·detailed·description,·see·section250 explanation,·see·<a·href="#select/2"><code·class="inline">select/2</code></a>.·For·a·detailed·description,·see·section
Offset 1886, 27 lines modifiedOffset 1886, 27 lines modified
1886 function.</p><p>The·parse·transform·is·provided·in·the·<code·class="inline">ms_transform</code>·module·and·the·source1886 function.</p><p>The·parse·transform·is·provided·in·the·<code·class="inline">ms_transform</code>·module·and·the·source
1887 <em>must</em>·include·file·<code·class="inline">ms_transform.hrl</code>·in·STDLIB·for·this·pseudo·function·to1887 <em>must</em>·include·file·<code·class="inline">ms_transform.hrl</code>·in·STDLIB·for·this·pseudo·function·to
1888 work.·Failing·to·include·the·hrl·file·in·the·source·results·in·a·runtime·error,1888 work.·Failing·to·include·the·hrl·file·in·the·source·results·in·a·runtime·error,
1889 not·a·compile·time·error.·The·include·file·is·easiest·included·by·adding·line1889 not·a·compile·time·error.·The·include·file·is·easiest·included·by·adding·line
1890 <code·class="inline">-include_lib(&quot;stdlib/include/ms_transform.hrl&quot;).</code>·to·the·source·file.</p><p>The·fun·is·very·restricted,·it·can·take·only·a·single·parameter·(the·object·to1890 <code·class="inline">-include_lib(&quot;stdlib/include/ms_transform.hrl&quot;).</code>·to·the·source·file.</p><p>The·fun·is·very·restricted,·it·can·take·only·a·single·parameter·(the·object·to
1891 match):·a·sole·variable·or·a·tuple.·It·must·use·the·<code·class="inline">is_</code>·guard·tests.·Language1891 match):·a·sole·variable·or·a·tuple.·It·must·use·the·<code·class="inline">is_</code>·guard·tests.·Language
1892 constructs·that·have·no·representation·in·a·match·specification·(<code·class="inline">if</code>,·<code·class="inline">case</code>,1892 constructs·that·have·no·representation·in·a·match·specification·(<code·class="inline">if</code>,·<code·class="inline">case</code>,
1893 <code·class="inline">receive</code>,·and·so·on)·are·not·allowed.</p><p>The·return·value·is·the·resulting·match·specification.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="4714052413-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4714052413-2">(</span><span·class="p"·data-group-id="4714052413-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·467,·SHA:·a8088868fd1648b2d6d6e08aae8d0e2559e2e397ed27c0f5960b3979f46ee9ec·...·]-1">)</span><span·class="p">.</span><span·class="w">1893 <code·class="inline">receive</code>,·and·so·on)·are·not·allowed.</p><p>The·return·value·is·the·resulting·match·specification.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="9671582699-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9671582699-2">(</span><span·class="p"·data-group-id="9671582699-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·467,·SHA:·986d0f1bfe5a2ee61011181cbd0f83fca441e760d2951d89c8210fc5ffdc3408·...·]-1">)</span><span·class="p">.</span><span·class="w">
1894 </span><span·class="p"·data-group-id="4714052413-4">[</span><span·class="p"·data-group-id="4714052413-5">{</span><span·class="p"·data-group-id="4714052413-6">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·664,·SHA:·0f37e537c5b0684cf6db08fc20e5e9638a8815b7dece145a63cd2d02c9938c6a·...·]-4">]</span></code></pre><p>Variables·from·the·environment·can·be·imported,·so·that·the·following·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">X</span><span·class="o">=</span><span·class="mi">3</span><span·class="p">.</span><span·class="w">1894 </span><span·class="p"·data-group-id="9671582699-4">[</span><span·class="p"·data-group-id="9671582699-5">{</span><span·class="p"·data-group-id="9671582699-6">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·664,·SHA:·36ce462abd112024d9ddac21ed93cf5be60b940f48a87fedf1649c81dcf402e8·...·]-4">]</span></code></pre><p>Variables·from·the·environment·can·be·imported,·so·that·the·following·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">X</span><span·class="o">=</span><span·class="mi">3</span><span·class="p">.</span><span·class="w">
1895 </span><span·class="mi">3</span><span·class="gp·unselectable">1895 </span><span·class="mi">3</span><span·class="gp·unselectable">
1896 3&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="5267765132-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5267765132-2">(</span><span·class="p"·data-group-id="5267765132-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·466,·SHA:·f1bd5f6ba783cf3edddd58dd63280dc95c27c4aac40212ca9c3ad2391e3a1dc5·...·]-1">)</span><span·class="p">.</span><span·class="w">1896 3&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="1039675915-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1039675915-2">(</span><span·class="p"·data-group-id="1039675915-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·466,·SHA:·14014dd7b4291d4fee45a9dfa817b8c6b7264c38cd6c1d528b2606041f947e93·...·]-1">)</span><span·class="p">.</span><span·class="w">
1897 </span><span·class="p"·data-group-id="5267765132-4">[</span><span·class="p"·data-group-id="5267765132-5">{</span><span·class="p"·data-group-id="5267765132-6">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·825,·SHA:·25b66bb315a3dcd59d35957863ac4682701b3516c56f8bdf5f730535c9024954·...·]-4">]</span></code></pre><p>The·imported·variables·are·replaced·by·match·specification·<code·class="inline">const</code>·expressions,1897 </span><span·class="p"·data-group-id="1039675915-4">[</span><span·class="p"·data-group-id="1039675915-5">{</span><span·class="p"·data-group-id="1039675915-6">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·825,·SHA:·7c714cf9b6a83fbfa6aca4e9443b31e6badef0fc08c7b2d10f5d1b4985ee87d6·...·]-4">]</span></code></pre><p>The·imported·variables·are·replaced·by·match·specification·<code·class="inline">const</code>·expressions,
1898 which·is·consistent·with·the·static·scoping·for·Erlang·funs.·However,·local·or1898 which·is·consistent·with·the·static·scoping·for·Erlang·funs.·However,·local·or
1899 global·function·calls·cannot·be·in·the·guard·or·body·of·the·fun.·Calls·to1899 global·function·calls·cannot·be·in·the·guard·or·body·of·the·fun.·Calls·to
1900 built-in·match·specification·functions·is·of·course·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="4761327481-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4761327481-2">(</span><span·class="p"·data-group-id="4761327481-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·674,·SHA:·7e8191cbac596bf730f2071c92ed629599ca8541428525c850f30fdab08b9593·...·]-1">)</span><span·class="p">.</span><span·class="w">1900 built-in·match·specification·functions·is·of·course·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="6764368867-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6764368867-2">(</span><span·class="p"·data-group-id="6764368867-3">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·674,·SHA:·b605a29c541a1dc4822c0acef7271ec1c63b24b50468a1566b858aa4d761bb5f·...·]-1">)</span><span·class="p">.</span><span·class="w">
1901 </span><span·class="n">Error</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">containing</span><span·class="w">·</span><span·class="ss">local</span><span·class="w">·</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="nf">calls</span><span·class="w">1901 </span><span·class="n">Error</span><span·class="p">:</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">containing</span><span·class="w">·</span><span·class="ss">local</span><span·class="w">·</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="nf">calls</span><span·class="w">
1902 </span><span·class="p"·data-group-id="4761327481-5">(</span><span·class="ss">&#39;my_fun&#39;</span><span·class="w">·</span><span·class="ss">called</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">guard</span><span·class="p"·data-group-id="476132[·...·truncated·by·diffoscope;·len:·4,·SHA:·30a13105878f832297a226138ee5762a41cd96ccfa7a8b48608e23b4c5aa8b12·...·]-5">)</span><span·class="w">·</span><span·class="ss">cannot</span><span·class="w">·</span><span·class="ss">be</span><span·class="w">·</span><span·class="ss">translated</span><span·class="w">·</span><span·class="ss">into</span><span·class="w">·</span><span·class="ss">match_spec</span><span·class="w">1902 </span><span·class="p"·data-group-id="6764368867-5">(</span><span·class="ss">&#39;my_fun&#39;</span><span·class="w">·</span><span·class="ss">called</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">guard</span><span·class="p"·data-group-id="676436[·...·truncated·by·diffoscope;·len:·4,·SHA:·e37e06e84a431bd067e52ab5c9cd40742c84340c2be5f5208ef4bb450246eee3·...·]-5">)</span><span·class="w">·</span><span·class="ss">cannot</span><span·class="w">·</span><span·class="ss">be</span><span·class="w">·</span><span·class="ss">translated</span><span·class="w">·</span><span·class="ss">into</span><span·class="w">·</span><span·class="ss">match_spec</span><span·class="w">
1903 </span><span·class="p"·data-group-id="4761327481-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">transform_error</span><span·class="p"·data-group-id="4761327481-6">}</span><span·class="gp·unselectable">1903 </span><span·class="p"·data-group-id="6764368867-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">transform_error</span><span·class="p"·data-group-id="6764368867-6">}</span><span·class="gp·unselectable">
1904 5&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="4761327481-7">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4761327481-8">(</span><span·class="p"·data-group-id="4761327481-9">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·677,·SHA:·8a3855d83981350be45d999bb143e5e280a583e7d1b00a12f5af7d58be51eeb8·...·]-7">)</span><span·class="p">.</span><span·class="w">1904 5&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="6764368867-7">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6764368867-8">(</span><span·class="p"·data-group-id="6764368867-9">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·677,·SHA:·99656f2fbdaa2f96faba38da64bc9a4596a46fc9726ed6fc0eb65e1589486fd4·...·]-7">)</span><span·class="p">.</span><span·class="w">
1905 </span><span·class="p"·data-group-id="4761327481-11">[</span><span·class="p"·data-group-id="4761327481-12">{</span><span·class="p"·data-group-id="4761327481-13">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1059,·SHA:·3ae3ddbf51ae63e99f4f43d7355f349d39e6b91eed0f1c35be0aa9b333d63dda·...·]-11">]</span></code></pre><p>As·shown·by·the·example,·the·function·can·be·called·from·the·shell·also.·The·fun1905 </span><span·class="p"·data-group-id="6764368867-11">[</span><span·class="p"·data-group-id="6764368867-12">{</span><span·class="p"·data-group-id="6764368867-13">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1059,·SHA:·a62767e6d4988605df5799e1511f9707cea15dd3d92359b728fca9f98f1547ee·...·]-11">]</span></code></pre><p>As·shown·by·the·example,·the·function·can·be·called·from·the·shell·also.·The·fun
1906 must·be·literally·in·the·call·when·used·from·the·shell·as·well.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>If·the·<code·class="inline">parse_transform</code>·is·not·applied·to·a·module·that·calls·this·pseudo1906 must·be·literally·in·the·call·when·used·from·the·shell·as·well.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>If·the·<code·class="inline">parse_transform</code>·is·not·applied·to·a·module·that·calls·this·pseudo
1907 function,·the·call·fails·in·runtime·(with·a·<code·class="inline">badarg</code>).·The·<code·class="inline">ets</code>·module1907 function,·the·call·fails·in·runtime·(with·a·<code·class="inline">badarg</code>).·The·<code·class="inline">ets</code>·module
1908 exports·a·function·with·this·name,·but·it·is·never·to·be·called·except·when1908 exports·a·function·with·this·name,·but·it·is·never·to·be·called·except·when
1909 using·the·function·in·the·shell.·If·the·<code·class="inline">parse_transform</code>·is·properly·applied1909 using·the·function·in·the·shell.·If·the·<code·class="inline">parse_transform</code>·is·properly·applied
1910 by·including·header·file·<code·class="inline">ms_transform.hrl</code>,·compiled·code·never·calls·the1910 by·including·header·file·<code·class="inline">ms_transform.hrl</code>,·compiled·code·never·calls·the
1911 function,·but·the·function·call·is·replaced·by·a·literal·match·specification.</p></section><p>For·more·information,·see·<a·href="ms_transform.html"><code·class="inline">ms_transform</code></a>.</p>1911 function,·but·the·function·call·is·replaced·by·a·literal·match·specification.</p></section><p>For·more·information,·see·<a·href="ms_transform.html"><code·class="inline">ms_transform</code></a>.</p>
1912 ··</section>1912 ··</section>
Offset 2491, 20 lines modifiedOffset 2491, 20 lines modified
  
2491 ··········<pre·translate="no"><span·class="attribute">-spec</span>·match(Table,·Pattern)·->·[Match]2491 ··········<pre·translate="no"><span·class="attribute">-spec</span>·match(Table,·Pattern)·->·[Match]
2492 ···············when·Table·::·<a·href="#t:table/0">table</a>(),·Pattern·::·<a·href="#t:match_pattern/0">match_pattern</a>(),·Match·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>2492 ···············when·Table·::·<a·href="#t:table/0">table</a>(),·Pattern·::·<a·href="#t:match_pattern/0">match_pattern</a>(),·Match·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>
  
2493 ······</div>2493 ······</div>
  
2494 <p>Matches·the·objects·in·table·<code·class="inline">Table</code>·against·pattern·<code·class="inline">Pattern</code>.</p><p>A·pattern·is·a·term·that·can·contain:</p><ul><li>Bound·parts·(Erlang·terms)</li><li><code·class="inline">'_'</code>·that·matches·any·Erlang·term</li><li>Pattern·variables·<code·class="inline">'$N'</code>,·where·<code·class="inline">N</code>=0,1,...</li></ul><p>The·function·returns·a·list·with·one·element·for·each·matching·object,·where2494 <p>Matches·the·objects·in·table·<code·class="inline">Table</code>·against·pattern·<code·class="inline">Pattern</code>.</p><p>A·pattern·is·a·term·that·can·contain:</p><ul><li>Bound·parts·(Erlang·terms)</li><li><code·class="inline">'_'</code>·that·matches·any·Erlang·term</li><li>Pattern·variables·<code·class="inline">'$N'</code>,·where·<code·class="inline">N</code>=0,1,...</li></ul><p>The·function·returns·a·list·with·one·element·for·each·matching·object,·where
2495 each·element·is·an·ordered·list·of·pattern·variable·bindings,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="6512477523-1">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6512477523-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Matches·every·object·in·table</span><span·class="w">2495 each·element·is·an·ordered·list·of·pattern·variable·bindings,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="3742579008-1">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="3742579008-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Matches·every·object·in·table</span><span·class="w">
2496 </span><span·class="p"·data-group-id="6512477523-2">[</span><span·class="p"·data-group-id="6512477523-3">[</span><span·class="p"·data-group-id="6512477523-4">{</span><span·class="ss">rufsen</span><span·class="p">,</span><span·class="ss">dog</span><span·class="p">,</span><span·class="mi">7</spa[·...·truncated·by·diffoscope;·len:·882,·SHA:·b5a9b01d76fdb27bfbc9b1d3d4ab6313774441ac2f0dd6ee1e7fdf97228e2243·...·]-2">]</span><span·class="gp·unselectable">2496 </span><span·class="p"·data-group-id="3742579008-2">[</span><span·class="p"·data-group-id="3742579008-3">[</span><span·class="p"·data-group-id="3742579008-4">{</span><span·class="ss">rufsen</span><span·class="p">,</span><span·class="ss">dog</span><span·class="p">,</span><span·class="mi">7</spa[·...·truncated·by·diffoscope;·len:·882,·SHA:·f91fb39039af12305be73ae3ac942df61b8264bba90bf15dd4067d11b244261f·...·]-2">]</span><span·class="gp·unselectable">
2497 7&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="6512477523-9">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6512477523-10">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">dog</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·133,·SHA:·bf7058f5f2a422dbd266b1f41b26f631f8cf5daaeb76ca00bf4b7168460530c1·...·]-9">)</span><span·class="p">.</span><span·class="w">2497 7&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="3742579008-9">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3742579008-10">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">dog</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·133,·SHA:·06cfd11855e8b4002a9b51068ef37f6a19d4ed1628a98ab9a55ed2838b871f42·...·]-9">)</span><span·class="p">.</span><span·class="w">
2498 </span><span·class="p"·data-group-id="6512477523-11">[</span><span·class="p"·data-group-id="6512477523-12">[</span><span·class="mi">7</span><span·class="p"·data-group-id="6512477523-12">]</span><span·class="p">,</span><span·class="p"·data-group-id="6512477523-13">[</span><span·class="mi">5</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·9c919b0e3bc9f782e8405414347b486b9c02a96fcb4825158c22fe12d5cbb177·...·]-11">]</span><span·class="gp·unselectable">2498 </span><span·class="p"·data-group-id="3742579008-11">[</span><span·class="p"·data-group-id="3742579008-12">[</span><span·class="mi">7</span><span·class="p"·data-group-id="3742579008-12">]</span><span·class="p">,</span><span·class="p"·data-group-id="3742579008-13">[</span><span·class="mi">5</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·02fd7ddb8b3aa78ee3181ff929f72aa4d0f018c60341203ed11f2506c6677031·...·]-11">]</span><span·class="gp·unselectable">
2499 8&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="6512477523-14">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6512477523-15">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">cow</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·134,·SHA:·93c470329daa3423dbaef5de5d719be757a265c9e06ebf15b182d5359a78c977·...·]-14">)</span><span·class="p">.</span><span·class="w">2499 8&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="3742579008-14">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3742579008-15">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">cow</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·134,·SHA:·8fc690b125a1c854fd03f526a4a5e7d787f3bff3831759aea93f5e64604f8abe·...·]-14">)</span><span·class="p">.</span><span·class="w">
2500 </span><span·class="p"·data-group-id="6512477523-16">[</span><span·class="p"·data-group-id="6512477523-16">]</span></code></pre><p>If·the·key·is·specified·in·the·pattern,·the·match·is·very·efficient.·If·the·key2500 </span><span·class="p"·data-group-id="3742579008-16">[</span><span·class="p"·data-group-id="3742579008-16">]</span></code></pre><p>If·the·key·is·specified·in·the·pattern,·the·match·is·very·efficient.·If·the·key
2501 is·not·specified,·that·is,·if·it·is·a·variable·or·an·underscore,·the·entire2501 is·not·specified,·that·is,·if·it·is·a·variable·or·an·underscore,·the·entire
2502 table·must·be·searched.·The·search·time·can·be·substantial·if·the·table·is·very2502 table·must·be·searched.·The·search·time·can·be·substantial·if·the·table·is·very
2503 large.</p><p>For·tables·of·type·<code·class="inline">ordered_set</code>,·the·result·is·in·the·same·order·as·in·a2503 large.</p><p>For·tables·of·type·<code·class="inline">ordered_set</code>,·the·result·is·in·the·same·order·as·in·a
2504 <code·class="inline">first</code>/<code·class="inline">next</code>·traversal.</p>2504 <code·class="inline">first</code>/<code·class="inline">next</code>·traversal.</p>
2505 ··</section>2505 ··</section>
2506 </section>2506 </section>
2507 <section·class="detail"·id="match/3">2507 <section·class="detail"·id="match/3">
Offset 2734, 18 lines modifiedOffset 2734, 18 lines modified
2734 use.</p><p>The·matching·is·executed·on·each·element·in·<code·class="inline">List</code>·and·the·function·returns·a2734 use.</p><p>The·matching·is·executed·on·each·element·in·<code·class="inline">List</code>·and·the·function·returns·a
2735 list·containing·all·results.·If·an·element·in·<code·class="inline">List</code>·does·not·match,·nothing·is2735 list·containing·all·results.·If·an·element·in·<code·class="inline">List</code>·does·not·match,·nothing·is
2736 returned·for·that·element.·The·length·of·the·result·list·is·therefore·equal·or2736 returned·for·that·element.·The·length·of·the·result·list·is·therefore·equal·or
2737 less·than·the·length·of·parameter·<code·class="inline">List</code>.</p><p><em>Example:</em></p><p>The·following·two·calls·give·the·same·result·(but·certainly·not·the·same2737 less·than·the·length·of·parameter·<code·class="inline">List</code>.</p><p><em>Example:</em></p><p>The·following·two·calls·give·the·same·result·(but·certainly·not·the·same
2738 execution·time):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Table</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="ss">new</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">2738 execution·time):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Table</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="ss">new</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
2739 </span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">2739 </span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
2740 </span><span·class="c1">%·The·following·call...</span><span·class="w">2740 </span><span·class="c1">%·The·following·call...</span><span·class="w">
2741 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_spec_run</span><span·class="p"·data-group-id="4227772310-1">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">tab2list</span><span·class="p"·data-group-id="4227772310-2">(</span><span·class="n">Table</span><span·class="p"·data-group-id="4227772310-2">)</span><span·class="p">,</span><span·class="w">2741 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_spec_run</span><span·class="p"·data-group-id="7952739550-1">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">tab2list</span><span·class="p"·data-group-id="7952739550-2">(</span><span·class="n">Table</span><span·class="p"·data-group-id="7952739550-2">)</span><span·class="p">,</span><span·class="w">
2742 ···················</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_spec_compile</span><span·class="p"·data-group-id="4227772310-3">(</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="4227772310-3">)</span><span·class="p"·data-group-id="4227772310-1">)</span><span·class="p">,</span><span·class="w">2742 ···················</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match_spec_compile</span><span·class="p"·data-group-id="7952739550-3">(</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="7952739550-3">)</span><span·class="p"·data-group-id="7952739550-1">)</span><span·class="p">,</span><span·class="w">
2743 </span><span·class="c1">%·...gives·the·same·result·as·the·more·common·(and·more·efficient)</span><span·class="w">2743 </span><span·class="c1">%·...gives·the·same·result·as·the·more·common·(and·more·efficient)</span><span·class="w">
2744 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="4227772310-4">(</span><span·class="n">Table</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="4227772310-4">)</span><span·class="p">,</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·has·limited·use·in·normal·code.·It·is·used·by·the·<a·href="dets.html"><code·class="inline">dets</code></a>2744 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="7952739550-4">(</span><span·class="n">Table</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="7952739550-4">)</span><span·class="p">,</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·has·limited·use·in·normal·code.·It·is·used·by·the·<a·href="dets.html"><code·class="inline">dets</code></a>
2745 module·to·perform·the·<a·href="dets.html#select/1"><code·class="inline">dets:select/1</code></a>·operations·and·by·Mnesia·during2745 module·to·perform·the·<a·href="dets.html#select/1"><code·class="inline">dets:select/1</code></a>·operations·and·by·Mnesia·during
2746 transactions.</p></section>2746 transactions.</p></section>
2747 ··</section>2747 ··</section>
2748 </section>2748 </section>
2749 <section·class="detail"·id="member/2">2749 <section·class="detail"·id="member/2">
  
2750 ··<div·class="detail-header">2750 ··<div·class="detail-header">
Offset 3084, 27 lines modifiedOffset 3084, 27 lines modified
3084 <p>Restores·an·opaque·continuation·returned·by·<a·href="#select/3"><code·class="inline">select/3</code></a>·or·<a·href="#select/1"><code·class="inline">select/1</code></a>·if·the3084 <p>Restores·an·opaque·continuation·returned·by·<a·href="#select/3"><code·class="inline">select/3</code></a>·or·<a·href="#select/1"><code·class="inline">select/1</code></a>·if·the
3085 continuation·has·passed·through·external·term·format·(been·sent·between·nodes·or3085 continuation·has·passed·through·external·term·format·(been·sent·between·nodes·or
3086 stored·on·disk).</p><p>The·reason·for·this·function·is·that·continuation·terms·contain·compiled·match3086 stored·on·disk).</p><p>The·reason·for·this·function·is·that·continuation·terms·contain·compiled·match
3087 specifications·and·may·therefore·be·invalidated·if·converted·to·external·term3087 specifications·and·may·therefore·be·invalidated·if·converted·to·external·term
3088 format.·Given·that·the·original·match·specification·is·kept·intact,·the3088 format.·Given·that·the·original·match·specification·is·kept·intact,·the
3089 continuation·can·be·restored,·meaning·it·can·once·again·be·used·in·subsequent3089 continuation·can·be·restored,·meaning·it·can·once·again·be·used·in·subsequent
3090 <a·href="#select/1"><code·class="inline">select/1</code></a>·calls·even·though·it·has·been·stored·on·disk·or·on3090 <a·href="#select/1"><code·class="inline">select/1</code></a>·calls·even·though·it·has·been·stored·on·disk·or·on
3091 another·node.</p><p><em>Examples:</em></p><p>The·following·sequence·of·calls·may·fail:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T</span><span·class="o">=</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="6605026394-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="6605026394-2">[</span><span·class="p"·data-group-id="6605026394-2">]</span><span·class="p"·data-group-id="6605026394-1">)</span><span·class="p">,</span><span·class="w">3091 another·node.</p><p><em>Examples:</em></p><p>The·following·sequence·of·calls·may·fail:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T</span><span·class="o">=</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="2088891871-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="2088891871-2">[</span><span·class="p"·data-group-id="2088891871-2">]</span><span·class="p"·data-group-id="2088891871-1">)</span><span·class="p">,</span><span·class="w">
3092 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">3092 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
3093 </span><span·class="n">MS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="6605026394-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6605026394-4">(</span><span·class="p"·data-group-id="6605026394-5">{</span><span·class="n">N</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·722,·SHA:·a64a09c5993ff336b4d089a20706e3b496ae48ed45350f19ef5d7855641f5049·...·]-3">)</span><span·class="p">,</span><span·class="w">3093 </span><span·class="n">MS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="2088891871-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2088891871-4">(</span><span·class="p"·data-group-id="2088891871-5">{</span><span·class="n">N</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·722,·SHA:·510687c19d644342ca467066bd02c4d2c674aa3ab8b6c833ddedbc5ba5e29e80·...·]-3">)</span><span·class="p">,</span><span·class="w">
3094 </span><span·class="p"·data-group-id="6605026394-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="6605026394-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·clas[·...·truncated·by·diffoscope;·len:·309,·SHA:·7e4920756bfa699fc2d998d27fe536d9bf3260a960ca66045ebfea2b294067fe·...·]-8">)</span><span·class="p">,</span><span·class="w">3094 </span><span·class="p"·data-group-id="2088891871-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="2088891871-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·clas[·...·truncated·by·diffoscope;·len:·309,·SHA:·7d1fb08aee389708598096aac08bf16fc18aa3448737b5f019120772c28016cf·...·]-8">)</span><span·class="p">,</span><span·class="w">
3095 </span><span·class="n">MaybeBroken</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="6605026394-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="6605026394-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="6605026394-10">)</span><span·class="p"·data-group-id="6605026394-9">)</span><span·class="p">,</span><span·class="w">3095 </span><span·class="n">MaybeBroken</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="2088891871-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="2088891871-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="2088891871-10">)</span><span·class="p"·data-group-id="2088891871-9">)</span><span·class="p">,</span><span·class="w">
3096 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="6605026394-11">(</span><span·class="n">MaybeBroken</span><span·class="p"·data-group-id="6605026394-11">)</span><span·class="p">.</span></code></pre><p>The·following·sequence·works,·as·the·call·to3096 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="2088891871-11">(</span><span·class="n">MaybeBroken</span><span·class="p"·data-group-id="2088891871-11">)</span><span·class="p">.</span></code></pre><p>The·following·sequence·works,·as·the·call·to
3097 <a·href="#repair_continuation/2"><code·class="inline">repair_continuation/2</code></a>·reestablishes·the3097 <a·href="#repair_continuation/2"><code·class="inline">repair_continuation/2</code></a>·reestablishes·the
3098 <code·class="inline">MaybeBroken</code>·continuation.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T</span><span·class="o">=</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="1787814530-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="1787814530-2">[</span><span·class="p"·data-group-id="1787814530-2">]</span><span·class="p"·data-group-id="1787814530-1">)</span><span·class="p">,</span><span·class="w">3098 <code·class="inline">MaybeBroken</code>·continuation.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">T</span><span·class="o">=</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="9570590981-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9570590981-2">[</span><span·class="p"·data-group-id="9570590981-2">]</span><span·class="p"·data-group-id="9570590981-1">)</span><span·class="p">,</span><span·class="w">
3099 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">3099 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
3100 </span><span·class="n">MS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="1787814530-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1787814530-4">(</span><span·class="p"·data-group-id="1787814530-5">{</span><span·class="n">N</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·722,·SHA:·0364b4bbfc60d4893137451d2400529b4aadb61d6ac0d69d8e7341c0bdc7e919·...·]-3">)</span><span·class="p">,</span><span·class="w">3100 </span><span·class="n">MS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="9570590981-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9570590981-4">(</span><span·class="p"·data-group-id="9570590981-5">{</span><span·class="n">N</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·722,·SHA:·2602c17fa4d92df60f2d01beebfcf25b54c31f0e89154d7245a3ae4b3307f7b9·...·]-3">)</span><span·class="p">,</span><span·class="w">
3101 </span><span·class="p"·data-group-id="1787814530-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="1787814530-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·clas[·...·truncated·by·diffoscope;·len:·261,·SHA:·9e011df48fbbddc86a6c823731583879e8b8425fa29d88b8444654b6988ce4d7·...·]-8">)</span><span·class="p">,</span><span·class="w">3101 </span><span·class="p"·data-group-id="9570590981-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="9570590981-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ets</span><span·clas[·...·truncated·by·diffoscope;·len:·261,·SHA:·0fa98b98cb12f26727c6f875391bd348c9aa37a47f6f7e689c1f440a188454a6·...·]-8">)</span><span·class="p">,</span><span·class="w">
3102 </span><span·class="n">MaybeBroken</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="1787814530-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="1787814530-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="1787814530-10">)</span><span·class="p"·data-group-id="1787814530-9">)</span><span·class="p">,</span><span·class="w">3102 </span><span·class="n">MaybeBroken</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="9570590981-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="9570590981-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="9570590981-10">)</span><span·class="p"·data-group-id="9570590981-9">)</span><span·class="p">,</span><span·class="w">
3103 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="1787814530-11">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">repair_continuation</span><span·class="p"·data-group-id="1787814530-12">(</span><span·class="n">MaybeBroken</span><span·class="p">,</span><span·class="n">MS</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·59e185db398e33fbf9056b5f71ed149fc321d359235d72bd7f9231a24c9a5c11·...·]-11">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·is·rarely·needed·in·application·code.·It·is·used·by·Mnesia·to3103 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="9570590981-11">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">repair_continuation</span><span·class="p"·data-group-id="9570590981-12">(</span><span·class="n">MaybeBroken</span><span·class="p">,</span><span·class="n">MS</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·7d017b36c3aec9af2c98c8a77b18fcc9bba6e15266aa47c9414d669ff39061d1·...·]-11">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·function·is·rarely·needed·in·application·code.·It·is·used·by·Mnesia·to
3104 provide·distributed·<a·href="#select/3"><code·class="inline">select/3</code></a>·and·<a·href="#select/1"><code·class="inline">select/1</code></a>3104 provide·distributed·<a·href="#select/3"><code·class="inline">select/3</code></a>·and·<a·href="#select/1"><code·class="inline">select/1</code></a>
3105 sequences.·A·normal·application·would·either·use·Mnesia·or·keep·the3105 sequences.·A·normal·application·would·either·use·Mnesia·or·keep·the
3106 continuation·from·being·converted·to·external·format.</p><p>The·actual·behavior·of·compiled·match·specifications·when·recreated·from3106 continuation·from·being·converted·to·external·format.</p><p>The·actual·behavior·of·compiled·match·specifications·when·recreated·from
Max diff block lines reached; 62042/122552 bytes (50.63%) of diff not shown.
18.8 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/file_sorter.html
    
Offset 191, 43 lines modifiedOffset 191, 43 lines modified
191 function·has·been·applied·to·all·of·the·results·or·an·error·occurs,·the·last191 function·has·been·applied·to·all·of·the·results·or·an·error·occurs,·the·last
192 function·is·called·with·argument·<code·class="inline">close</code>,·and·the·reply·is·returned·as·value·of192 function·is·called·with·argument·<code·class="inline">close</code>,·and·the·reply·is·returned·as·value·of
193 the·current·call·to·the·sort·or·merge·function.</p><p>If·a·function·is·specified·as·input·and·the·last·input·function·returns193 the·current·call·to·the·sort·or·merge·function.</p><p>If·a·function·is·specified·as·input·and·the·last·input·function·returns
194 <code·class="inline">{end_of_input,·Value}</code>,·the·function·specified·as·output·is·called·with194 <code·class="inline">{end_of_input,·Value}</code>,·the·function·specified·as·output·is·called·with
195 argument·<code·class="inline">{value,·Value}</code>.·This·makes·it·easy·to·initiate·the·sequence·of·output195 argument·<code·class="inline">{value,·Value}</code>.·This·makes·it·easy·to·initiate·the·sequence·of·output
196 functions·with·a·value·calculated·by·the·input·functions.</p><p>As·an·example,·consider·sorting·the·terms·on·a·disk·log·file.·A·function·that196 functions·with·a·value·calculated·by·the·input·functions.</p><p>As·an·example,·consider·sorting·the·terms·on·a·disk·log·file.·A·function·that
197 reads·chunks·from·the·disk·log·and·returns·a·list·of·binaries·is·used·as·input.197 reads·chunks·from·the·disk·log·and·returns·a·list·of·binaries·is·used·as·input.
198 The·results·are·collected·in·a·list·of·terms.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sort</span><span·class="p"·data-group-id="1395062593-1">(</span><span·class="n">Log</span><span·class="p"·data-group-id="1395062593-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 The·results·are·collected·in·a·list·of·terms.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sort</span><span·class="p"·data-group-id="3597819958-1">(</span><span·class="n">Log</span><span·class="p"·data-group-id="3597819958-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="p"·data-group-id="1395062593-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="1395062593-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·696,·SHA:·bfcf054a5ac041e16c3585692c7d9bf9ddc20a118dc684e71828f1981639d9c4·...·]-3">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="p"·data-group-id="3597819958-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="3597819958-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·696,·SHA:·35a5669da40dd32943ec3ab3d73b9c8f5869199ffaaa1927a8040bdb1637fb78·...·]-3">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="n">Input</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">input</span><span·class="p"·data-group-id="1395062593-7">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start</span><span·class="p"·data-group-id="1395062593-7">)</span><span·class="p">,</span><span·class="w">200 ····</span><span·class="n">Input</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">input</span><span·class="p"·data-group-id="3597819958-7">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start</span><span·class="p"·data-group-id="3597819958-7">)</span><span·class="p">,</span><span·class="w">
201 ····</span><span·class="n">Output</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">output</span><span·class="p"·data-group-id="1395062593-8">(</span><span·class="p"·data-group-id="1395062593-9">[</span><span·class="p"·data-group-id="1395062593-9">]</span><span·class="p"·data-group-id="1395062593-8">)</span><span·class="p">,</span><span·class="w">201 ····</span><span·class="n">Output</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">output</span><span·class="p"·data-group-id="3597819958-8">(</span><span·class="p"·data-group-id="3597819958-9">[</span><span·class="p"·data-group-id="3597819958-9">]</span><span·class="p"·data-group-id="3597819958-8">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="n">Reply</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file_sorter</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="1395062593-10">(</span><span·class="n">Input</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Output</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1395062593-11">{</span><span·class="ss">format</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·24a74eca90d9496d2af465a384c6180c2cf6deebe22bd61cce54892ccf8e4a39·...·]-10">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="n">Reply</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file_sorter</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="3597819958-10">(</span><span·class="n">Input</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Output</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3597819958-11">{</span><span·class="ss">format</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·ccd233dfde497f30e2c677503e01c6158211ff39d3d972dde10d2ad2a4de03cd·...·]-10">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="1395062593-12">(</span><span·class="n">Log</span><span·class="p"·data-group-id="1395062593-12">)</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="3597819958-12">(</span><span·class="n">Log</span><span·class="p"·data-group-id="3597819958-12">)</span><span·class="p">,</span><span·class="w">
204 ····</span><span·class="n">Reply</span><span·class="p">.</span><span·class="w">204 ····</span><span·class="n">Reply</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="nf">input</span><span·class="p"·data-group-id="1395062593-13">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cont</span><span·class="p"·data-group-id="1395062593-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 </span><span·class="nf">input</span><span·class="p"·data-group-id="3597819958-13">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cont</span><span·class="p"·data-group-id="3597819958-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="1395062593-14">(</span><span·class="ss">close</span><span·class="p"·data-group-id="1395062593-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="3597819958-14">(</span><span·class="ss">close</span><span·class="p"·data-group-id="3597819958-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ············</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">207 ············</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
208 ·······</span><span·class="p"·data-group-id="1395062593-15">(</span><span·class="ss">read</span><span·class="p"·data-group-id="1395062593-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ·······</span><span·class="p"·data-group-id="3597819958-15">(</span><span·class="ss">read</span><span·class="p"·data-group-id="3597819958-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">chunk</span><span·class="p"·data-group-id="1395062593-16">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cont</span><span·class="p"·data-group-id="1395062593-16">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">209 ············</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">disk_log</span><span·class="p">:</span><span·class="nf">chunk</span><span·class="p"·data-group-id="3597819958-16">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cont</span><span·class="p"·data-group-id="3597819958-16">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
210 ················</span><span·class="p"·data-group-id="1395062593-17">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="1395062593-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 ················</span><span·class="p"·data-group-id="3597819958-17">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="3597819958-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····················</span><span·class="p"·data-group-id="1395062593-18">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="1395062593-18">}</span><span·class="p">;</span><span·class="w">211 ····················</span><span·class="p"·data-group-id="3597819958-18">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="3597819958-18">}</span><span·class="p">;</span><span·class="w">
212 ················</span><span·class="p"·data-group-id="1395062593-19">{</span><span·class="n">Cont2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Terms</span><span·class="p"·data-group-id="1395062593-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ················</span><span·class="p"·data-group-id="3597819958-19">{</span><span·class="n">Cont2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Terms</span><span·class="p"·data-group-id="3597819958-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ····················</span><span·class="p"·data-group-id="1395062593-20">{</span><span·class="n">Terms</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">input</span><span·class="p"·data-group-id="1395062593-21">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·7a52c940baa98b69966e4bc88efee275ee9ec5ab8e9323a30028ffca3a1e199e·...·]-20">}</span><span·class="p">;</span><span·class="w">213 ····················</span><span·class="p"·data-group-id="3597819958-20">{</span><span·class="n">Terms</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">input</span><span·class="p"·data-group-id="3597819958-21">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·f84ddea2348ef83a86e2aab3283512e940898f9cc0a855342d2b03708dd04d67·...·]-20">}</span><span·class="p">;</span><span·class="w">
214 ················</span><span·class="p"·data-group-id="1395062593-22">{</span><span·class="n">Cont2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Terms</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Badbytes</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·40d8a63a8564ac065da3de39d8b9c3c737231de08dfb5bb31ba37df93f1d1fd5·...·]-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ················</span><span·class="p"·data-group-id="3597819958-22">{</span><span·class="n">Cont2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Terms</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Badbytes</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·43ae8539ca283395f5d9be6098651cf85bb8e17e907ebbfd265417f9286fd4b3·...·]-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····················</span><span·class="p"·data-group-id="1395062593-23">{</span><span·class="n">Terms</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">input</span><span·class="p"·data-group-id="1395062593-24">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·ecc47bdc278ce40a32eef9f80a05feb6b4a1004a09fe646f16d5310198a57a1b·...·]-23">}</span><span·class="p">;</span><span·class="w">215 ····················</span><span·class="p"·data-group-id="3597819958-23">{</span><span·class="n">Terms</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">input</span><span·class="p"·data-group-id="3597819958-24">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·0dcb6ecb9c27b035a756dcfef5bac0f04c1f6da8edd1236faae47c3c94fc52e4·...·]-23">}</span><span·class="p">;</span><span·class="w">
216 ················</span><span·class="ss">eof</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 ················</span><span·class="ss">eof</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
217 ····················</span><span·class="ss">end_of_input</span><span·class="w">217 ····················</span><span·class="ss">end_of_input</span><span·class="w">
218 ············</span><span·class="k">end</span><span·class="w">218 ············</span><span·class="k">end</span><span·class="w">
219 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">219 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
220 </span><span·class="nf">output</span><span·class="p"·data-group-id="1395062593-25">(</span><span·class="n">L</span><span·class="p"·data-group-id="1395062593-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">220 </span><span·class="nf">output</span><span·class="p"·data-group-id="3597819958-25">(</span><span·class="n">L</span><span·class="p"·data-group-id="3597819958-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
221 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="1395062593-26">(</span><span·class="ss">close</span><span·class="p"·data-group-id="1395062593-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="3597819958-26">(</span><span·class="ss">close</span><span·class="p"·data-group-id="3597819958-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1395062593-27">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="1395062593-28">(</span><span·class="n">L</span><span·class="p"·data-group-id="1395062593-28">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·abeb481470e4dd27dd64c417ad13e040f8ecfec4de9f80d3424473e9a8521774·...·]-27">)</span><span·class="p">;</span><span·class="w">222 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3597819958-27">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="3597819958-28">(</span><span·class="n">L</span><span·class="p"·data-group-id="3597819958-28">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7e0146441e53bc7a9e8253e6b2796262e66a7fac2ef67d2ab9c3e6e8c09164f2·...·]-27">)</span><span·class="p">;</span><span·class="w">
223 ·······</span><span·class="p"·data-group-id="1395062593-29">(</span><span·class="n">Terms</span><span·class="p"·data-group-id="1395062593-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 ·······</span><span·class="p"·data-group-id="3597819958-29">(</span><span·class="n">Terms</span><span·class="p"·data-group-id="3597819958-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ············</span><span·class="nf">output</span><span·class="p"·data-group-id="1395062593-30">(</span><span·class="p"·data-group-id="1395062593-31">[</span><span·class="n">Terms</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="1395062593-31">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·44c27b4a65289655c5421e5736014877e3220339fa27706ed8c5d6de742942b1·...·]-30">)</span><span·class="w">224 ············</span><span·class="nf">output</span><span·class="p"·data-group-id="3597819958-30">(</span><span·class="p"·data-group-id="3597819958-31">[</span><span·class="n">Terms</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="3597819958-31">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·a1a5e1027829ac0544242f2677b45d6849514e6f59347ffd24e5ad0010b1ac28·...·]-30">)</span><span·class="w">
225 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>For·more·examples·of·functions·as·input·and·output,·see·the·end·of·the225 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>For·more·examples·of·functions·as·input·and·output,·see·the·end·of·the
226 <code·class="inline">file_sorter</code>·module;·the·<code·class="inline">term</code>·format·is·implemented·with·functions.</p><p>The·possible·values·of·<code·class="inline">Reason</code>·returned·when·an·error·occurs·are:</p><ul><li><code·class="inline">bad_object</code>,·<code·class="inline">{bad_object,·FileName}</code>·-·Applying·the·format·function·failed226 <code·class="inline">file_sorter</code>·module;·the·<code·class="inline">term</code>·format·is·implemented·with·functions.</p><p>The·possible·values·of·<code·class="inline">Reason</code>·returned·when·an·error·occurs·are:</p><ul><li><code·class="inline">bad_object</code>,·<code·class="inline">{bad_object,·FileName}</code>·-·Applying·the·format·function·failed
227 for·some·binary,·or·the·key(s)·could·not·be·extracted·from·some·term.</li><li><code·class="inline">{bad_term,·FileName}</code>·-·<a·href="io.html#read/2"><code·class="inline">io:read/2</code></a>·failed·to·read·some·term.</li><li><code·class="inline">{file_error,·FileName,·file:posix()}</code>·-·For·an·explanation·of227 for·some·binary,·or·the·key(s)·could·not·be·extracted·from·some·term.</li><li><code·class="inline">{bad_term,·FileName}</code>·-·<a·href="io.html#read/2"><code·class="inline">io:read/2</code></a>·failed·to·read·some·term.</li><li><code·class="inline">{file_error,·FileName,·file:posix()}</code>·-·For·an·explanation·of
228 <a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:posix/0"><code·class="inline">file:posix()</code></a>,·see·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>.</li><li><code·class="inline">{premature_eof,·FileName}</code>·-·End-of-file·was·encountered·inside·some·binary228 <a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:posix/0"><code·class="inline">file:posix()</code></a>,·see·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>.</li><li><code·class="inline">{premature_eof,·FileName}</code>·-·End-of-file·was·encountered·inside·some·binary
229 term.</li></ul>229 term.</li></ul>
230 ····</section>230 ····</section>
  
6.09 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/filelib.html
    
Offset 986, 23 lines modifiedOffset 986, 23 lines modified
986 ································Cwd·::·<a·href="#t:filename_all/0">filename_all</a>(),986 ································Cwd·::·<a·href="#t:filename_all/0">filename_all</a>(),
987 ································SafeFilename·::·<a·href="#t:filename_all/0">filename_all</a>().</pre>987 ································SafeFilename·::·<a·href="#t:filename_all/0">filename_all</a>().</pre>
  
988 ······</div>988 ······</div>
  
989 <p>Sanitizes·the·relative·path·by·eliminating·&quot;..&quot;·and·&quot;.&quot;·components·to·protect989 <p>Sanitizes·the·relative·path·by·eliminating·&quot;..&quot;·and·&quot;.&quot;·components·to·protect
990 against·directory·traversal·attacks.</p><p>Either·returns·the·sanitized·path·name,·or·the·atom·<code·class="inline">unsafe</code>·if·the·path·is·unsafe.990 against·directory·traversal·attacks.</p><p>Either·returns·the·sanitized·path·name,·or·the·atom·<code·class="inline">unsafe</code>·if·the·path·is·unsafe.
991 The·path·is·considered·unsafe·in·the·following·circumstances:</p><ul><li>The·path·is·not·relative.</li><li>A·&quot;..&quot;·component·would·climb·up·above·the·root·of·the·relative·path.</li><li>A·symbolic·link·in·the·path·points·above·the·root·of·the·relative·path.</li></ul><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="4218546774-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="4218546774-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·151929c180aefe8bbe897b2dc87d346a9fd5677127360fab3b81dc4a474b3820·...·]-2">)</span><span·class="p">.</span><span·class="w">991 The·path·is·considered·unsafe·in·the·following·circumstances:</p><ul><li>The·path·is·not·relative.</li><li>A·&quot;..&quot;·component·would·climb·up·above·the·root·of·the·relative·path.</li><li>A·symbolic·link·in·the·path·points·above·the·root·of·the·relative·path.</li></ul><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="8261026417-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="8261026417-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·95fc2a5ad385d15befd44ef628b662d79684e219bb5a698d1ad7b63f12b00db7·...·]-2">)</span><span·class="p">.</span><span·class="w">
992 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">992 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="gp·unselectable">
993 2&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="4218546774-3">(</span><span·class="s">&quot;dir/sub_dir/..&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="4218546774-3">)</span><span·class="p">.</span><span·class="w">993 2&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="8261026417-3">(</span><span·class="s">&quot;dir/sub_dir/..&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="8261026417-3">)</span><span·class="p">.</span><span·class="w">
994 </span><span·class="s">&quot;dir&quot;</span><span·class="gp·unselectable">994 </span><span·class="s">&quot;dir&quot;</span><span·class="gp·unselectable">
995 3&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="4218546774-4">(</span><span·class="s">&quot;dir/..&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="4218546774-4">)</span><span·class="p">.</span><span·class="w">995 3&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="8261026417-4">(</span><span·class="s">&quot;dir/..&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="8261026417-4">)</span><span·class="p">.</span><span·class="w">
996 </span><span·class="p"·data-group-id="4218546774-5">[</span><span·class="p"·data-group-id="4218546774-5">]</span><span·class="gp·unselectable">996 </span><span·class="p"·data-group-id="8261026417-5">[</span><span·class="p"·data-group-id="8261026417-5">]</span><span·class="gp·unselectable">
997 4&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="4218546774-6">(</span><span·class="s">&quot;dir/../..&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="4218546774-6">)</span><span·class="p">.</span><span·class="w">997 4&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="8261026417-6">(</span><span·class="s">&quot;dir/../..&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="8261026417-6">)</span><span·class="p">.</span><span·class="w">
998 </span><span·class="ss">unsafe</span><span·class="gp·unselectable">998 </span><span·class="ss">unsafe</span><span·class="gp·unselectable">
999 5&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="4218546774-7">(</span><span·class="s">&quot;/abs/path&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="4218546774-7">)</span><span·class="p">.</span><span·class="w">999 5&gt;·</span><span·class="nc">filelib</span><span·class="p">:</span><span·class="nf">safe_relative_path</span><span·class="p"·data-group-id="8261026417-7">(</span><span·class="s">&quot;/abs/path&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cwd</span><span·class="p"·data-group-id="8261026417-7">)</span><span·class="p">.</span><span·class="w">
1000 </span><span·class="ss">unsafe</span></code></pre>1000 </span><span·class="ss">unsafe</span></code></pre>
1001 ··</section>1001 ··</section>
1002 </section>1002 </section>
1003 <section·class="detail"·id="wildcard/1">1003 <section·class="detail"·id="wildcard/1">
  
1004 ··<div·class="detail-header">1004 ··<div·class="detail-header">
1005 ····<a·href="#wildcard/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1005 ····<a·href="#wildcard/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
83.6 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/filename.html
    
Offset 514, 28 lines modifiedOffset 514, 28 lines modified
  
514 ··········<pre·translate="no"><span·class="attribute">-spec</span>·absname(Filename)·->·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>514 ··········<pre·translate="no"><span·class="attribute">-spec</span>·absname(Filename)·->·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>
  
515 ······</div>515 ······</div>
  
516 <p>Converts·a·relative·<code·class="inline">Filename</code>·and·returns·an·absolute·name.·No·attempt·is·made516 <p>Converts·a·relative·<code·class="inline">Filename</code>·and·returns·an·absolute·name.·No·attempt·is·made
517 to·create·the·shortest·absolute·name,·as·this·can·give·incorrect·results·on·file517 to·create·the·shortest·absolute·name,·as·this·can·give·incorrect·results·on·file
518 systems·that·allow·links.</p><p><em>Unix·examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">pwd</span><span·class="p"·data-group-id="4918469820-1">(</span><span·class="p"·data-group-id="4918469820-1">)</span><span·class="p">.</span><span·class="w">518 systems·that·allow·links.</p><p><em>Unix·examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">pwd</span><span·class="p"·data-group-id="9259622728-1">(</span><span·class="p"·data-group-id="9259622728-1">)</span><span·class="p">.</span><span·class="w">
519 </span><span·class="s">&quot;/usr/local&quot;</span><span·class="gp·unselectable">519 </span><span·class="s">&quot;/usr/local&quot;</span><span·class="gp·unselectable">
520 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="4918469820-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="4918469820-2">)</span><span·class="p">.</span><span·class="w">520 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="9259622728-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="9259622728-2">)</span><span·class="p">.</span><span·class="w">
521 </span><span·class="s">&quot;/usr/local/foo&quot;</span><span·class="gp·unselectable">521 </span><span·class="s">&quot;/usr/local/foo&quot;</span><span·class="gp·unselectable">
522 3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="4918469820-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="4918469820-3">)</span><span·class="p">.</span><span·class="w">522 3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="9259622728-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="9259622728-3">)</span><span·class="p">.</span><span·class="w">
523 </span><span·class="s">&quot;/usr/local/../x&quot;</span><span·class="gp·unselectable">523 </span><span·class="s">&quot;/usr/local/../x&quot;</span><span·class="gp·unselectable">
524 4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="4918469820-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="4918469820-4">)</span><span·class="p">.</span><span·class="w">524 4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="9259622728-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="9259622728-4">)</span><span·class="p">.</span><span·class="w">
525 </span><span·class="s">&quot;/&quot;</span></code></pre><p><em>Windows·examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">pwd</span><span·class="p"·data-group-id="5534242630-1">(</span><span·class="p"·data-group-id="5534242630-1">)</span><span·class="p">.</span><span·class="w">525 </span><span·class="s">&quot;/&quot;</span></code></pre><p><em>Windows·examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">pwd</span><span·class="p"·data-group-id="0485778789-1">(</span><span·class="p"·data-group-id="0485778789-1">)</span><span·class="p">.</span><span·class="w">
526 </span><span·class="s">&quot;D:/usr/local&quot;</span><span·class="gp·unselectable">526 </span><span·class="s">&quot;D:/usr/local&quot;</span><span·class="gp·unselectable">
527 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="5534242630-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="5534242630-2">)</span><span·class="p">.</span><span·class="w">527 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="0485778789-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="0485778789-2">)</span><span·class="p">.</span><span·class="w">
528 </span><span·class="s">&quot;D:/usr/local/foo&quot;</span><span·class="gp·unselectable">528 </span><span·class="s">&quot;D:/usr/local/foo&quot;</span><span·class="gp·unselectable">
529 3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="5534242630-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="5534242630-3">)</span><span·class="p">.</span><span·class="w">529 3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="0485778789-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="0485778789-3">)</span><span·class="p">.</span><span·class="w">
530 </span><span·class="s">&quot;D:/usr/local/../x&quot;</span><span·class="gp·unselectable">530 </span><span·class="s">&quot;D:/usr/local/../x&quot;</span><span·class="gp·unselectable">
531 4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="5534242630-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="5534242630-4">)</span><span·class="p">.</span><span·class="w">531 4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">absname</span><span·class="p"·data-group-id="0485778789-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="0485778789-4">)</span><span·class="p">.</span><span·class="w">
532 </span><span·class="s">&quot;D:/&quot;</span></code></pre>532 </span><span·class="s">&quot;D:/&quot;</span></code></pre>
533 ··</section>533 ··</section>
534 </section>534 </section>
535 <section·class="detail"·id="absname/2">535 <section·class="detail"·id="absname/2">
  
536 ··<div·class="detail-header">536 ··<div·class="detail-header">
537 ····<a·href="#absname/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">537 ····<a·href="#absname/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 659, 66 lines modifiedOffset 659, 66 lines modified
  
659 ······</div>659 ······</div>
  
660 <p><a·href=""·id="basedir_3_1"></a>·<a·href=""·id="basedir_3_2"></a></p><p>Returns·a·suitable·path,·or·paths,·for·a·given·type.·If·<code·class="inline">os</code>·is·not·set·in660 <p><a·href=""·id="basedir_3_1"></a>·<a·href=""·id="basedir_3_2"></a></p><p>Returns·a·suitable·path,·or·paths,·for·a·given·type.·If·<code·class="inline">os</code>·is·not·set·in
661 <code·class="inline">Opts</code>·the·function·will·default·to·the·native·option,·that·is·<code·class="inline">'linux'</code>,661 <code·class="inline">Opts</code>·the·function·will·default·to·the·native·option,·that·is·<code·class="inline">'linux'</code>,
662 <code·class="inline">'darwin'</code>·or·<code·class="inline">'windows'</code>,·as·understood·by·<a·href="../../../../lib/kernel-10.2.2/doc/html/os.html#type/0"><code·class="inline">os:type/0</code></a>.·Anything·not·recognized662 <code·class="inline">'darwin'</code>·or·<code·class="inline">'windows'</code>,·as·understood·by·<a·href="../../../../lib/kernel-10.2.2/doc/html/os.html#type/0"><code·class="inline">os:type/0</code></a>.·Anything·not·recognized
663 as·<code·class="inline">'darwin'</code>·or·<code·class="inline">'windows'</code>·is·interpreted·as·<code·class="inline">'linux'</code>.</p><p>The·options·<code·class="inline">'author'</code>·and·<code·class="inline">'version'</code>·are·only·used·with·<code·class="inline">'windows'</code>·option663 as·<code·class="inline">'darwin'</code>·or·<code·class="inline">'windows'</code>·is·interpreted·as·<code·class="inline">'linux'</code>.</p><p>The·options·<code·class="inline">'author'</code>·and·<code·class="inline">'version'</code>·are·only·used·with·<code·class="inline">'windows'</code>·option
664 mode.</p><ul><li><p><code·class="inline"·id="user_cache">user_cache</code></p><p>The·path·location·is·intended·for·transient·data·files·on·a·local·machine.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CACHE_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1265033821-1">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1265033821-2">#{</span><[·...·truncated·by·diffoscope;·len:·176,·SHA:·eaf20f6ced15ec48f0a1539573a7a23a7f8298fb1e340f465683e7cff81d9322·...·]-1">)</span><span·class="p">.</span><span·class="w">664 mode.</p><ul><li><p><code·class="inline"·id="user_cache">user_cache</code></p><p>The·path·location·is·intended·for·transient·data·files·on·a·local·machine.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CACHE_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="3268016596-1">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3268016596-2">#{</span><[·...·truncated·by·diffoscope;·len:·176,·SHA:·48a073f7e495a4e74e0a4c2b48d2245f6dca763bc79079b239e1d2bcbdd34a5c·...·]-1">)</span><span·class="p">.</span><span·class="w">
665 </span><span·class="s">&quot;/home/otptest/.cache/my_application&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="7457687826-1">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7457687826-2">#{</span><[·...·truncated·by·diffoscope;·len:·177,·SHA:·7a2c06e5b71ebde21c6bbbd892f69e9068628c2c8c7418adb87f243f28f73d2f·...·]-1">)</span><span·class="p">.</span><span·class="w">665 </span><span·class="s">&quot;/home/otptest/.cache/my_application&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="8909976900-1">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8909976900-2">#{</span><[·...·truncated·by·diffoscope;·len:·177,·SHA:·e0eb0c67871abbb1c04cff478cec619d47a5b49c4bdf4cd156b8e45f9abb392a·...·]-1">)</span><span·class="p">.</span><span·class="w">
666 </span><span·class="s">&quot;/home/otptest/Library/Caches/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="7491943384-1">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="7491943384-1">)</span><span·class="p">.</span><span·class="w">666 </span><span·class="s">&quot;/home/otptest/Library/Caches/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1225213332-1">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="1225213332-1">)</span><span·class="p">.</span><span·class="w">
667 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/Cache&quot;</span><span·class="gp·unselectable">667 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/Cache&quot;</span><span·class="gp·unselectable">
668 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="7491943384-2">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="7491943384-2">)</span><span·class="p">.</span><span·class="w">668 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1225213332-2">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="1225213332-2">)</span><span·class="p">.</span><span·class="w">
669 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/Cache&quot;</span><span·class="gp·unselectable">669 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/Cache&quot;</span><span·class="gp·unselectable">
670 3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="7491943384-3">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7491943384-4">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·184,·SHA:·8c0b13371a5ac159a660ef10f6c3842741a8988a72d56cbecdb5a69629f95e02·...·]-3">)</span><span·class="p">.</span><span·class="w">670 3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1225213332-3">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1225213332-4">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·184,·SHA:·a67f3ccd94b304071968eb9d44e2a95d1c8dfc45b463b0b842f923f33b364844·...·]-3">)</span><span·class="p">.</span><span·class="w">
671 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/Cache&quot;</span><span·class="gp·unselectable">671 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/Cache&quot;</span><span·class="gp·unselectable">
672 4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="7491943384-5">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7491943384-6">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·182,·SHA:·efdf29421a43c9c057179f9a4fe53dad07ac5bd364ed2459654da204a93a6387·...·]-5">)</span><span·class="p">.</span><span·class="w">672 4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1225213332-5">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1225213332-6">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·182,·SHA:·1e23712dc419be5012eef759a354ce40abed26fba10353cbe17a2c9147b178db·...·]-5">)</span><span·class="p">.</span><span·class="w">
673 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/1.2/Cache&quot;</span><span·class="gp·unselectable">673 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/1.2/Cache&quot;</span><span·class="gp·unselectable">
674 5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="7491943384-7">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7491943384-8">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·305,·SHA:·2679b01cab0390fa60edbf2a79112f6c1afc6364d95e5365bb6764be0b7a5999·...·]-7">)</span><span·class="p">.</span><span·class="w">674 5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1225213332-7">(</span><span·class="ss">user_cache</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1225213332-8">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·305,·SHA:·e6533e0824f66ca5e884c47854a9dd3cc2ff391c8ea615c2f59c48f276e17d01·...·]-7">)</span><span·class="p">.</span><span·class="w">
675 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/1.2/Cache&quot;</span></code></pre></li><li><p><code·class="inline"·id="user_config">user_config</code></p><p>The·path·location·is·intended·for·persistent·configuration·files.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CONFIG_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="0143474107-1">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0143474107-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·9d85cfee81f869f09e3e6985ea8dd8ab8b4b93c0d3551e78ffa85344197400e1·...·]-1">)</span><span·class="p">.</span><span·class="w">675 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/1.2/Cache&quot;</span></code></pre></li><li><p><code·class="inline"·id="user_config">user_config</code></p><p>The·path·location·is·intended·for·persistent·configuration·files.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CONFIG_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1749804862-1">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1749804862-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·4bf5d49719b960e0d246c195bb08d4dd5a6d6f0cd3c865059a86535d81830058·...·]-1">)</span><span·class="p">.</span><span·class="w">
676 </span><span·class="s">&quot;/home/otptest/.config/my_application&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="0793744637-1">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0793744637-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·d7c143f77f64fff845e25f18ff7986956d1cb440308582f43355cf5863987e7f·...·]-1">)</span><span·class="p">.</span><span·class="w">676 </span><span·class="s">&quot;/home/otptest/.config/my_application&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="0734614523-1">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0734614523-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·bd0744f7539e13277d8a9f3e8bfac9790ce7f828de7c16f9dcc882261de920a8·...·]-1">)</span><span·class="p">.</span><span·class="w">
677 </span><span·class="s">&quot;/home/otptest/Library/Application·Support/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="3068709940-1">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="3068709940-1">)</span><span·class="p">.</span><span·class="w">677 </span><span·class="s">&quot;/home/otptest/Library/Application·Support/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4757710480-1">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="4757710480-1">)</span><span·class="p">.</span><span·class="w">
678 </span><span·class="s">&quot;c:/Users/otptest/AppData/Roaming/My·App&quot;</span><span·class="gp·unselectable">678 </span><span·class="s">&quot;c:/Users/otptest/AppData/Roaming/My·App&quot;</span><span·class="gp·unselectable">
679 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="3068709940-2">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3068709940-3">#{</span><span·cl[·...·truncated·by·diffoscope;·len:·329,·SHA:·74987124ccc264bc61e715e5f0dcd3e7ad8616be451b1fc4551fdb41cfe0f454·...·]0-2">)</span><span·class="p">.</span><span·class="w">679 2&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4757710480-2">(</span><span·class="ss">user_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4757710480-3">#{</span><span·cl[·...·truncated·by·diffoscope;·len:·329,·SHA:·ba0b2fb27cb4dfa91f2547a03ef05ec7e9d092a5b3874a56b97e9c34a1e9dd4b·...·]0-2">)</span><span·class="p">.</span><span·class="w">
680 </span><span·class="s">&quot;c:/Users/otptest/AppData/Roaming/Erlang/My·App/1.2&quot;</span></code></pre></li><li><p><code·class="inline"·id="user_data">user_data</code></p><p>The·path·location·is·intended·for·persistent·data·files.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_DATA_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4907311277-1">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4907311277-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·54a6e4955086c891fb86a9709f7e52443b0a2bbb6aa569a6e21b8a77f3996b95·...·]7-1">)</span><span·class="p">.</span><span·class="w">680 </span><span·class="s">&quot;c:/Users/otptest/AppData/Roaming/Erlang/My·App/1.2&quot;</span></code></pre></li><li><p><code·class="inline"·id="user_data">user_data</code></p><p>The·path·location·is·intended·for·persistent·data·files.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_DATA_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4844922447-1">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4844922447-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·ab6845ce173bfbc4fd62771733e020572dede3989307a3048e6be899e5ee1a56·...·]7-1">)</span><span·class="p">.</span><span·class="w">
681 </span><span·class="s">&quot;/home/otptest/.local/my_application&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="3294502231-1">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3294502231-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·6568a4cbc956127d0bd785db8ae1547ad4df2f25d0b7b89bb34ef99184d3957a·...·]-1">)</span><span·class="p">.</span><span·class="w">681 </span><span·class="s">&quot;/home/otptest/.local/my_application&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="7483934326-1">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7483934326-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·ebecd29876f9ce2cbbbdbf458c7f306d69a5a2565780f6d82a0a94cb5adeda4f·...·]-1">)</span><span·class="p">.</span><span·class="w">
682 </span><span·class="s">&quot;/home/otptest/Library/Application·Support/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1283806449-1">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="1283806449-1">)</span><span·class="p">.</span><span·class="w">682 </span><span·class="s">&quot;/home/otptest/Library/Application·Support/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="5977311619-1">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="5977311619-1">)</span><span·class="p">.</span><span·class="w">
683 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App&quot;</span><span·class="gp·unselectable">683 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App&quot;</span><span·class="gp·unselectable">
684 9&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1283806449-2">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1283806449-3">#{</span><span·class="ss">author</span><spa[·...·truncated·by·diffoscope;·len:·279,·SHA:·6bfef211b2608b41d5c9e7092a94783a9e50c61d5d3df48bd86ad8db4d91c825·...·]9-2">)</span><span·class="p">.</span><span·class="w">684 9&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="5977311619-2">(</span><span·class="ss">user_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5977311619-3">#{</span><span·class="ss">author</span><spa[·...·truncated·by·diffoscope;·len:·279,·SHA:·a21d47df820d7312528273558e33ac3af13eb388f0302afc1d2050e6357377f3·...·]9-2">)</span><span·class="p">.</span><span·class="w">
685 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/1.2&quot;</span></code></pre></li><li><p><code·class="inline"·id="user_log">user_log</code></p><p>The·path·location·is·intended·for·transient·log·files·on·a·local·machine.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CACHE_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4238689492-1">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4238689492-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·174,·SHA:·f2848e61936e52cf988d67432f61794401a87e8dac49f72129e5cc593c0f9fee·...·]-1">)</span><span·class="p">.</span><span·class="w">685 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/1.2&quot;</span></code></pre></li><li><p><code·class="inline"·id="user_log">user_log</code></p><p>The·path·location·is·intended·for·transient·log·files·on·a·local·machine.</p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CACHE_HOME</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="2119831601-1">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2119831601-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·174,·SHA:·d610a1f4be35f28306f6bc25e1d92ea044bd7d1f4b709f55b7dac5f74028cb40·...·]-1">)</span><span·class="p">.</span><span·class="w">
686 </span><span·class="s">&quot;/home/otptest/.cache/my_application/log&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4211157265-1">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4211157265-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·42921274bbeedef74dd4b8b4cf57e32733f0b5f40b35f3d53a1acdc46553ae88·...·]-1">)</span><span·class="p">.</span><span·class="w">686 </span><span·class="s">&quot;/home/otptest/.cache/my_application/log&quot;</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="2966759234-1">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2966759234-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·0980eed7a1de8b37cbbb2a9b2134bf72973db0156e790f0efd2447ca06c86d5a·...·]-1">)</span><span·class="p">.</span><span·class="w">
687 </span><span·class="s">&quot;/home/otptest/Library/Logs/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">12&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="3327491490-1">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="3327491490-1">)</span><span·class="p">.</span><span·class="w">687 </span><span·class="s">&quot;/home/otptest/Library/Logs/my_application&quot;</span></code></pre><p>On·Windows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">12&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4889974330-1">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p"·data-group-id="4889974330-1">)</span><span·class="p">.</span><span·class="w">
688 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/Logs&quot;</span><span·class="gp·unselectable">688 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/My·App/Logs&quot;</span><span·class="gp·unselectable">
689 13&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="3327491490-2">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3327491490-3">#{</span><span·class="ss">author</span><span[·...·truncated·by·diffoscope;·len:·278,·SHA:·7064c799974f06d8c557696e4214937bde07b2e66aeecb6656bbe091542084f2·...·]0-2">)</span><span·class="p">.</span><span·class="w">689 13&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="4889974330-2">(</span><span·class="ss">user_log</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;My·App&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4889974330-3">#{</span><span·class="ss">author</span><span[·...·truncated·by·diffoscope;·len:·278,·SHA:·8a56d5b01785fd0966e7e202584b47959b9f92dd11867be1f61d0c66ad355be9·...·]0-2">)</span><span·class="p">.</span><span·class="w">
690 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/1.2/Logs&quot;</span></code></pre></li><li><p><code·class="inline"·id="site_config">site_config</code></p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CONFIG_DIRS</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1904395303-1">(</span><span·class="ss">site_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1904395303-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·827f7d5c9ea4e6f025583b9845549d1d0beb8891afe476270aeff6fcd7e3b8e0·...·]-1">)</span><span·class="p">.</span><span·class="w">690 </span><span·class="s">&quot;c:/Users/otptest/AppData/Local/Erlang/My·App/1.2/Logs&quot;</span></code></pre></li><li><p><code·class="inline"·id="site_config">site_config</code></p><p>On·Linux:·Respects·the·os·environment·variable·<code·class="inline">XDG_CONFIG_DIRS</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="6160982395-1">(</span><span·class="ss">site_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6160982395-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·a19e9af4d5f7f166a1a418bc9d35c98f8a31d37e481ed288eb046ee2843d6f26·...·]-1">)</span><span·class="p">.</span><span·class="w">
691 </span><span·class="p"·data-group-id="1904395303-3">[</span><span·class="s">&quot;/usr/local/share/my_application&quot;</span><span·class="p">,</span><span·class="w">691 </span><span·class="p"·data-group-id="6160982395-3">[</span><span·class="s">&quot;/usr/local/share/my_application&quot;</span><span·class="p">,</span><span·class="w">
692 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="1904395303-3">]</span><span·class="gp·unselectable">692 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="6160982395-3">]</span><span·class="gp·unselectable">
693 6&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">getenv</span><span·class="p"·data-group-id="1904395303-4">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="1904395303-4">)</span><span·class="p">.</span><span·class="w">693 6&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">getenv</span><span·class="p"·data-group-id="6160982395-4">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="6160982395-4">)</span><span·class="p">.</span><span·class="w">
694 </span><span·class="s">&quot;/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg&quot;</span><span·class="gp·unselectable">694 </span><span·class="s">&quot;/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg&quot;</span><span·class="gp·unselectable">
695 7&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1904395303-5">(</span><span·class="ss">site_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1904395303-6">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·4d565b3775de77c6b3ad96aee644dbc884e3118978e3c67348927f0fc3b37bef·...·]-5">)</span><span·class="p">.</span><span·class="w">695 7&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="6160982395-5">(</span><span·class="ss">site_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6160982395-6">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·1eecb230dcae579f3c1b9ab31382af07fca6b193004a955bcde6e17e5ab910a4·...·]-5">)</span><span·class="p">.</span><span·class="w">
696 </span><span·class="p"·data-group-id="1904395303-7">[</span><span·class="s">&quot;/etc/xdg/xdg-ubuntu/my_application&quot;</span><span·class="p">,</span><span·class="w">696 </span><span·class="p"·data-group-id="6160982395-7">[</span><span·class="s">&quot;/etc/xdg/xdg-ubuntu/my_application&quot;</span><span·class="p">,</span><span·class="w">
697 ·</span><span·class="s">&quot;/usr/share/upstart/xdg/my_application&quot;</span><span·class="p">,</span><span·class="w">697 ·</span><span·class="s">&quot;/usr/share/upstart/xdg/my_application&quot;</span><span·class="p">,</span><span·class="w">
698 ·</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="1904395303-7">]</span><span·class="gp·unselectable">698 ·</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="6160982395-7">]</span><span·class="gp·unselectable">
699 8&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">unsetenv</span><span·class="p"·data-group-id="1904395303-8">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="1904395303-8">)</span><span·class="p">.</span><span·class="w">699 8&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">unsetenv</span><span·class="p"·data-group-id="6160982395-8">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="6160982395-8">)</span><span·class="p">.</span><span·class="w">
700 </span><span·class="ss">true</span><span·class="gp·unselectable">700 </span><span·class="ss">true</span><span·class="gp·unselectable">
701 9&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="1904395303-9">(</span><span·class="ss">site_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1904395303-10">#{</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·fc3e5bfc3c7fb99fffcfef9a9eaab7700d2e12e9e144741956467bc0f9bc4798·...·]-9">)</span><span·class="p">.</span><span·class="w">701 9&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="6160982395-9">(</span><span·class="ss">site_config</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6160982395-10">#{</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·2923e56109e5a24f192e006f401cc00b94ac08b33da368d76f72f2cb3f991166·...·]-9">)</span><span·class="p">.</span><span·class="w">
702 </span><span·class="p"·data-group-id="1904395303-11">[</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="1904395303-11">]</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span>[·...·truncated·by·diffoscope;·len:·552,·SHA:·dfd6fcf219daf141b90f310c4447b66dfb5326ae4f21a0feb1a142b40ca6ef72·...·]-1">)</span><span·class="p">.</span><span·class="w">702 </span><span·class="p"·data-group-id="6160982395-11">[</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="6160982395-11">]</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span>[·...·truncated·by·diffoscope;·len:·552,·SHA:·3545bb5cef639cfc70bec8a89b27c294206c28a1781f0bc0d07400657ce24c12·...·]-1">)</span><span·class="p">.</span><span·class="w">
703 </span><span·class="p"·data-group-id="1082832970-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="1082832970-3">]</span></code></pre></li><li><p><code·class="inline"·id="site_data">site_data</code></p><p>On·Linux:·Respects·[·...·truncated·by·diffoscope;·len:·388,·SHA:·d6db74dc5a2c81c4fbc9156051c7d270058b10c6ac46ca53138e42d83be6b7a9·...·]-1">)</span><span·class="p">.</span><span·class="w">703 </span><span·class="p"·data-group-id="5292508332-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="5292508332-3">]</span></code></pre></li><li><p><code·class="inline"·id="site_data">site_data</code></p><p>On·Linux:·Respects·[·...·truncated·by·diffoscope;·len:·388,·SHA:·296b50bf3a7fc0061347a33266734aabe939a1eccf63906a647f3d0028a60e30·...·]-1">)</span><span·class="p">.</span><span·class="w">
704 </span><span·class="s">&quot;/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/&quot;</span><span·class="gp·unselectable">704 </span><span·class="s">&quot;/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/&quot;</span><span·class="gp·unselectable">
705 11&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="0239355791-2">(</span><span·class="ss">site_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0239355791-3">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·1c93dc6563c8515fe790a7efe0121fdb9b4c8a94286fd2a563de46d6b68d5422·...·]-2">)</span><span·class="p">.</span><span·class="w">705 11&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="5652788457-2">(</span><span·class="ss">site_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5652788457-3">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·f96a7ff8dd8499728b0faf7f0c8ad2034ed34aaac98822ce6f6cb60bd52347e1·...·]-2">)</span><span·class="p">.</span><span·class="w">
706 </span><span·class="p"·data-group-id="0239355791-4">[</span><span·class="s">&quot;/usr/share/ubuntu/my_application&quot;</span><span·class="p">,</span><span·class="w">706 </span><span·class="p"·data-group-id="5652788457-4">[</span><span·class="s">&quot;/usr/share/ubuntu/my_application&quot;</span><span·class="p">,</span><span·class="w">
707 ·</span><span·class="s">&quot;/usr/share/gnome/my_application&quot;</span><span·class="p">,</span><span·class="w">707 ·</span><span·class="s">&quot;/usr/share/gnome/my_application&quot;</span><span·class="p">,</span><span·class="w">
708 ·</span><span·class="s">&quot;/usr/local/share/my_application&quot;</span><span·class="p">,</span><span·class="w">708 ·</span><span·class="s">&quot;/usr/local/share/my_application&quot;</span><span·class="p">,</span><span·class="w">
709 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="0239355791-4">]</span><span·class="gp·unselectable">709 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="5652788457-4">]</span><span·class="gp·unselectable">
710 12&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">unsetenv</span><span·class="p"·data-group-id="0239355791-5">(</span><span·class="s">&quot;XDG_DATA_DIRS&quot;</span><span·class="p"·data-group-id="0239355791-5">)</span><span·class="p">.</span><span·class="w">710 12&gt;·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">unsetenv</span><span·class="p"·data-group-id="5652788457-5">(</span><span·class="s">&quot;XDG_DATA_DIRS&quot;</span><span·class="p"·data-group-id="5652788457-5">)</span><span·class="p">.</span><span·class="w">
711 </span><span·class="ss">true</span><span·class="gp·unselectable">711 </span><span·class="ss">true</span><span·class="gp·unselectable">
712 13&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="0239355791-6">(</span><span·class="ss">site_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0239355791-7">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·80f193107caf5b7dc12672f353a389ebfd3bb58f332d69dd88c9001ca8a430b7·...·]-6">)</span><span·class="p">.</span><span·class="w">712 13&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group-id="5652788457-6">(</span><span·class="ss">site_data</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_application&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5652788457-7">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·915efe3bfe1b59399f3d89ca19a5f7d7dd488b7601e39476cf1bedc34a5daf9f·...·]-6">)</span><span·class="p">.</span><span·class="w">
713 </span><span·class="p"·data-group-id="0239355791-8">[</span><span·class="s">&quot;/usr/local/share/my_application&quot;</span><span·class="p">,</span><span·class="w">713 </span><span·class="p"·data-group-id="5652788457-8">[</span><span·class="s">&quot;/usr/local/share/my_application&quot;</span><span·class="p">,</span><span·class="w">
714 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="0239355791-8">]</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·437,·SHA:·e2cc0b14933b1902618646b3c8ce3528dd101f4f64309b351de607f259e2bbb8·...·]-1">)</span><span·class="p">.</span><span·class="w">714 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="5652788457-8">]</span></code></pre><p>On·Darwin:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basedir</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·437,·SHA:·3d887476d66f6e3ea5806bdf2c49b66872e04260ec0c34d8ba773325a3e3a106·...·]-1">)</span><span·class="p">.</span><span·class="w">
715 </span><span·class="p"·data-group-id="0639505709-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="0639505709-3">]</span></code></pre></li></ul>715 </span><span·class="p"·data-group-id="3774228821-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="3774228821-3">]</span></code></pre></li></ul>
716 ··</section>716 ··</section>
717 </section>717 </section>
718 <section·class="detail"·id="basename/1">718 <section·class="detail"·id="basename/1">
  
719 ··<div·class="detail-header">719 ··<div·class="detail-header">
720 ····<a·href="#basename/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">720 ····<a·href="#basename/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
721 ······<i·class="ri-link-m"·aria-hidden="true"></i>721 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 737, 20 lines modifiedOffset 737, 20 lines modified
737 ······<div·class="specs">737 ······<div·class="specs">
  
738 ··········<pre·translate="no"><span·class="attribute">-spec</span>·basename(Filename)·->·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>738 ··········<pre·translate="no"><span·class="attribute">-spec</span>·basename(Filename)·->·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>
  
739 ······</div>739 ······</div>
  
740 <p>Returns·the·last·component·of·<code·class="inline">Filename</code>,·or·<code·class="inline">Filename</code>·itself·if·it·does·not740 <p>Returns·the·last·component·of·<code·class="inline">Filename</code>,·or·<code·class="inline">Filename</code>·itself·if·it·does·not
741 contain·any·directory·separators.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="2153257305-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="2153257305-1">)</span><span·class="p">.</span><span·class="w">741 contain·any·directory·separators.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="4282511524-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="4282511524-1">)</span><span·class="p">.</span><span·class="w">
742 </span><span·class="s">&quot;foo&quot;</span><span·class="gp·unselectable">742 </span><span·class="s">&quot;foo&quot;</span><span·class="gp·unselectable">
743 6&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="2153257305-2">(</span><span·class="s">&quot;/usr/foo&quot;</span><span·class="p"·data-group-id="2153257305-2">)</span><span·class="p">.</span><span·class="w">743 6&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="4282511524-2">(</span><span·class="s">&quot;/usr/foo&quot;</span><span·class="p"·data-group-id="4282511524-2">)</span><span·class="p">.</span><span·class="w">
744 </span><span·class="s">&quot;foo&quot;</span><span·class="gp·unselectable">744 </span><span·class="s">&quot;foo&quot;</span><span·class="gp·unselectable">
745 7&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="2153257305-3">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="2153257305-3">)</span><span·class="p">.</span><span·class="w">745 7&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="4282511524-3">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="4282511524-3">)</span><span·class="p">.</span><span·class="w">
746 </span><span·class="p"·data-group-id="2153257305-4">[</span><span·class="p"·data-group-id="2153257305-4">]</span></code></pre>746 </span><span·class="p"·data-group-id="4282511524-4">[</span><span·class="p"·data-group-id="4282511524-4">]</span></code></pre>
747 ··</section>747 ··</section>
748 </section>748 </section>
749 <section·class="detail"·id="basename/2">749 <section·class="detail"·id="basename/2">
  
750 ··<div·class="detail-header">750 ··<div·class="detail-header">
751 ····<a·href="#basename/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">751 ····<a·href="#basename/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
752 ······<i·class="ri-link-m"·aria-hidden="true"></i>752 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 771, 23 lines modifiedOffset 771, 23 lines modified
771 ··········<pre·translate="no"><span·class="attribute">-spec</span>·basename(Filename,·Ext)·->·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename_all/0">file:filename_all</a>()771 ··········<pre·translate="no"><span·class="attribute">-spec</span>·basename(Filename,·Ext)·->·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:filename_all/0">file:filename_all</a>()
772 ··················when·Filename·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>(),·Ext·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>772 ··················when·Filename·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>(),·Ext·::·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>
  
773 ······</div>773 ······</div>
  
774 <p>Returns·the·last·component·of·<code·class="inline">Filename</code>·with·extension·<code·class="inline">Ext</code>·stripped.</p><p>This·function·is·to·be·used·to·remove·a·(possible)·specific·extension.774 <p>Returns·the·last·component·of·<code·class="inline">Filename</code>·with·extension·<code·class="inline">Ext</code>·stripped.</p><p>This·function·is·to·be·used·to·remove·a·(possible)·specific·extension.
775 To·remove·an·existing·extension·when·you·are·unsure·which·one·it·is,·use775 To·remove·an·existing·extension·when·you·are·unsure·which·one·it·is,·use
776 <a·href="#rootname/1"><code·class="inline">rootname(basename(Filename))</code></a>.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="0164549736-1">(</span><span·class="s">&quot;~/src/kalle.erl&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.erl&quot;</span><span·class="p"·data-group-id="0164549736-1">)</span><span·class="p">.</span><span·class="w">776 <a·href="#rootname/1"><code·class="inline">rootname(basename(Filename))</code></a>.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="6933897765-1">(</span><span·class="s">&quot;~/src/kalle.erl&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.erl&quot;</span><span·class="p"·data-group-id="6933897765-1">)</span><span·class="p">.</span><span·class="w">
777 </span><span·class="s">&quot;kalle&quot;</span><span·class="gp·unselectable">777 </span><span·class="s">&quot;kalle&quot;</span><span·class="gp·unselectable">
778 9&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="0164549736-2">(</span><span·class="s">&quot;~/src/kalle.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.erl&quot;</span><span·class="p"·data-group-id="0164549736-2">)</span><span·class="p">.</span><span·class="w">778 9&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">basename</span><span·class="p"·data-group-id="6933897765-2">(</span><span·class="s">&quot;~/src/kalle.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.erl&quot;</span><span·class="p"·data-group-id="6933897765-2">)</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 26033/85439 bytes (30.47%) of diff not shown.
6.75 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/gen_event.html
    
Offset 1267, 23 lines modifiedOffset 1267, 23 lines modified
1267 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><p>One·of·<a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked1267 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><p>One·of·<a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked
1268 to·get·the·<code·class="inline">gen_event</code>·status.</p></li><li><p>The·event·handler·terminates·abnormally·and·<code·class="inline">gen_event</code>·logs·an·error.</p></li></ul><p>This·callback·is·used·to·limit·the·status·of·the·event·handler·returned·by1268 to·get·the·<code·class="inline">gen_event</code>·status.</p></li><li><p>The·event·handler·terminates·abnormally·and·<code·class="inline">gen_event</code>·logs·an·error.</p></li></ul><p>This·callback·is·used·to·limit·the·status·of·the·event·handler·returned·by
1269 <a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel-10.2.2/doc/html/logger.html"><code·class="inline">logger</code></a>.</p><p>The·callback·gets·a·map·<code·class="inline">Status</code>·describing·the·current·status1269 <a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel-10.2.2/doc/html/logger.html"><code·class="inline">logger</code></a>.</p><p>The·callback·gets·a·map·<code·class="inline">Status</code>·describing·the·current·status
1270 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,1270 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,
1271 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove1271 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove
1272 sensitive·information·from·the·state·to·prevent·it·from·being·printed1272 sensitive·information·from·the·state·to·prevent·it·from·being·printed
1273 in·log·files,·or·to·compact·large·irrelevant·status·items1273 in·log·files,·or·to·compact·large·irrelevant·status·items
1274 that·would·only·clutter·the·logs.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">format_status</span><span·class="p"·data-group-id="9559969682-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="9559969682-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1274 that·would·only·clutter·the·logs.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">format_status</span><span·class="p"·data-group-id="6359261269-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="6359261269-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1275 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="9559969682-2">(</span><span·class="w">1275 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="6359261269-2">(</span><span·class="w">
1276 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="9559969682-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="9559969682-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1276 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="6359261269-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="6359261269-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1277 ············</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">remove</span><span·class="p"·data-group-id="9559969682-4">(</span><span·class="ss">private_key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9559969682-4">)</span><span·class="p">;</span><span·class="w">1277 ············</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">remove</span><span·class="p"·data-group-id="6359261269-4">(</span><span·class="ss">private_key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="6359261269-4">)</span><span·class="p">;</span><span·class="w">
1278 ·······</span><span·class="p"·data-group-id="9559969682-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="9559969682-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Pass</[·...·truncated·by·diffoscope;·len:·99,·SHA:·ef61a1d0170b1720efbb0141d8bfd7b60e1a119f4279f7fc435449606d5a45cc·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1278 ·······</span><span·class="p"·data-group-id="6359261269-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="6359261269-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Pass</[·...·truncated·by·diffoscope;·len:·99,·SHA:·5aca4b497a48b8ef65ded8361a08bb8ff535fe2beeef426f12f51bfa802af455·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1279 ············</span><span·class="p"·data-group-id="9559969682-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">removed</span><span·class="p"·data-group-id="9559969682-7">}</span><span·class="p">;</span><span·class="w">1279 ············</span><span·class="p"·data-group-id="6359261269-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">removed</span><span·class="p"·data-group-id="6359261269-7">}</span><span·class="p">;</span><span·class="w">
1280 ·······</span><span·class="p"·data-group-id="9559969682-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="9559969682-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1280 ·······</span><span·class="p"·data-group-id="6359261269-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="6359261269-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1281 ············</span><span·class="n">Value</span><span·class="w">1281 ············</span><span·class="n">Value</span><span·class="w">
1282 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Status</span><span·class="p"·data-group-id="9559969682-2">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·callback·is·optional,·so·event·handler·modules·need·not·export·it.1282 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Status</span><span·class="p"·data-group-id="6359261269-2">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·callback·is·optional,·so·event·handler·modules·need·not·export·it.
1283 If·a·handler·does·not·export·this·function,·the·<code·class="inline">gen_event</code>·module1283 If·a·handler·does·not·export·this·function,·the·<code·class="inline">gen_event</code>·module
1284 uses·the·handler·state·directly·for·the·purposes·described·below.</p><p>If·this·callback·is·exported·but·fails,·to·hide·possibly·sensitive·data,1284 uses·the·handler·state·directly·for·the·purposes·described·below.</p><p>If·this·callback·is·exported·but·fails,·to·hide·possibly·sensitive·data,
1285 the·default·function·will·instead·return·the·fact·that1285 the·default·function·will·instead·return·the·fact·that
1286 <a·href="#c:format_status/1"><code·class="inline">format_status/1</code></a>·has·crashed.</p></section>1286 <a·href="#c:format_status/1"><code·class="inline">format_status/1</code></a>·has·crashed.</p></section>
1287 ··</section>1287 ··</section>
1288 </section>1288 </section>
1289 <section·class="detail"·id="c:format_status/2">1289 <section·class="detail"·id="c:format_status/2">
78.3 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/gen_fsm.html
    
Offset 131, 171 lines modifiedOffset 131, 171 lines modified
131 <p>Deprecated·and·replaced·by·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>·in·OTP·20.</p><h2·id="module-migration-to-gen_statem"·class="section-heading">131 <p>Deprecated·and·replaced·by·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>·in·OTP·20.</p><h2·id="module-migration-to-gen_statem"·class="section-heading">
132 ··<a·href="#module-migration-to-gen_statem"·class="hover-link">132 ··<a·href="#module-migration-to-gen_statem"·class="hover-link">
133 ····<i·class="ri-link-m"·aria-hidden="true"></i>133 ····<i·class="ri-link-m"·aria-hidden="true"></i>
134 ··</a>134 ··</a>
135 ··<span·class="text">Migration·to·gen_statem</span>135 ··<span·class="text">Migration·to·gen_statem</span>
136 </h2>136 </h2>
137 <p>Here·follows·a·simple·example·of·turning·a·gen_fsm·into·a·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>.137 <p>Here·follows·a·simple·example·of·turning·a·gen_fsm·into·a·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>.
138 The·example·comes·from·the·previous·User's·Guide·for·<code·class="inline">gen_fsm</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7104316101-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="7104316101-1">)</span><span·class="p">.</span><span·class="w">138 The·example·comes·from·the·previous·User's·Guide·for·<code·class="inline">gen_fsm</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3192332196-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="3192332196-1">)</span><span·class="p">.</span><span·class="w">
139 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="7104316101-2">(</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="7104316101-2">)</span><span·class="p">.</span><span·class="w">139 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="3192332196-2">(</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="3192332196-2">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="c1">%-define(BEFORE_REWRITE,·true).</span><span·class="w">140 </span><span·class="c1">%-define(BEFORE_REWRITE,·true).</span><span·class="w">
141 </span><span·class="w">141 </span><span·class="w">
142 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-3">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-3">)</span><span·class="p">.</span><span·class="w">142 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-3">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-3">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="7104316101-4">(</span><span·class="ss">gen_fsm</span><span·class="p"·data-group-id="7104316101-4">)</span><span·class="p">.</span><span·class="w">143 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="3192332196-4">(</span><span·class="ss">gen_fsm</span><span·class="p"·data-group-id="3192332196-4">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">144 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="7104316101-5">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="7104316101-5">)</span><span·class="p">.</span><span·class="w">145 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="3192332196-5">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="3192332196-5">)</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">146 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
147 </span><span·class="w">147 </span><span·class="w">
148 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7104316101-6">(</span><span·class="p"·data-group-id="7104316101-7">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">button</span><span·class="p">/</s[·...·truncated·by·diffoscope;·len:·248,·SHA:·286cf2350e66ae875aca862c952fcbd59f8e10f6ca8710cbf7924892c957bb8d·...·]-6">)</span><span·class="p">.</span><span·class="w">148 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3192332196-6">(</span><span·class="p"·data-group-id="3192332196-7">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">button</span><span·class="p">/</s[·...·truncated·by·diffoscope;·len:·248,·SHA:·a56dad764968d0f24431b4bf1a11f614bdea34afc20e93a88ba86f9ee27b83df·...·]-6">)</span><span·class="p">.</span><span·class="w">
149 </span><span·class="w">149 </span><span·class="w">
150 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-8">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-8">)</span><span·class="p">.</span><span·class="w">150 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-8">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-8">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7104316101-9">(</span><span·class="p"·data-group-id="7104316101-10">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_sync_event</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">151 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3192332196-9">(</span><span·class="p"·data-group-id="3192332196-10">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_sync_event</span><span·class="p">/</span><span·class="mi">4</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
152 ·····</span><span·class="ss">handle_info</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="7104316101-10">]</span><span·class="p"·data-group-id="7104316101-9">)</span><span·class="p">.</span><span·class="w">152 ·····</span><span·class="ss">handle_info</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="3192332196-10">]</span><span·class="p"·data-group-id="3192332196-9">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">153 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7104316101-11">(</span><span·class="p"·data-group-id="7104316101-12">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">callback_mode</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">154 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3192332196-11">(</span><span·class="p"·data-group-id="3192332196-12">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">callback_mode</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">
155 ·····</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="7104316101-12">]</span><span·class="p"·data-group-id="7104316101-11">)</span><span·class="p">.</span><span·class="w">155 ·····</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="3192332196-12">]</span><span·class="p"·data-group-id="3192332196-11">)</span><span·class="p">.</span><span·class="w">
156 </span><span·class="c1">%%·Add·callback__mode/0</span><span·class="w">156 </span><span·class="c1">%%·Add·callback__mode/0</span><span·class="w">
157 </span><span·class="c1">%%·Change·arity·of·the·state·functions</span><span·class="w">157 </span><span·class="c1">%%·Change·arity·of·the·state·functions</span><span·class="w">
158 </span><span·class="c1">%%·Remove·handle_info/3</span><span·class="w">158 </span><span·class="c1">%%·Remove·handle_info/3</span><span·class="w">
159 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">159 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
160 </span><span·class="w">160 </span><span·class="w">
161 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-13">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-13">)</span><span·class="p">.</span><span·class="w">161 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-13">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-13">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="7104316101-14">(</span><span·class="n">Code</span><span·class="p"·data-group-id="7104316101-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="3192332196-14">(</span><span·class="n">Code</span><span·class="p"·data-group-id="3192332196-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ····</span><span·class="nc">gen_fsm</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="7104316101-15">(</span><span·class="p"·data-group-id="7104316101-16">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="7104316101-16">}</sp[·...·truncated·by·diffoscope;·len:·376,·SHA:·3441927f0e809d82f6c3a1e65bd2ece4ff17a73afcc59a3cb8348d846baec111·...·]-15">)</span><span·class="p">.</span><span·class="w">163 ····</span><span·class="nc">gen_fsm</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="3192332196-15">(</span><span·class="p"·data-group-id="3192332196-16">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="3192332196-16">}</sp[·...·truncated·by·diffoscope;·len:·376,·SHA:·0b40e4fc205b0546b631f80efbd89346d80b9a716a3c1ce85e1d375d19b68c7d·...·]-15">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">164 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
165 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="7104316101-18">(</span><span·class="n">Code</span><span·class="p"·data-group-id="7104316101-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">165 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="3192332196-18">(</span><span·class="n">Code</span><span·class="p"·data-group-id="3192332196-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="7104316101-19">(</span><span·class="p"·data-group-id="7104316101-20">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="7104316101-20">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·659cb66494ecc676f34e15d0e2ff129388a0a0f4e76af0ae54ad7e19c845abf7·...·]-19">)</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="3192332196-19">(</span><span·class="p"·data-group-id="3192332196-20">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p"·data-group-id="3192332196-20">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·8c03da635f533cc7bffeff7416afb17f8cd9c703b99a862523d3d7b5f90eabf5·...·]-19">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">167 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
168 </span><span·class="w">168 </span><span·class="w">
169 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-22">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-22">)</span><span·class="p">.</span><span·class="w">169 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-22">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-22">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="nf">button</span><span·class="p"·data-group-id="7104316101-23">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="7104316101-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">170 </span><span·class="nf">button</span><span·class="p"·data-group-id="3192332196-23">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="3192332196-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
171 ····</span><span·class="nc">gen_fsm</span><span·class="p">:</span><span·class="nf">send_event</span><span·class="p"·data-group-id="7104316101-24">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7104316101-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·121,·SHA:·020096b2762ea6e6b68f545629a29aed8d5f1f7bf249e81b14bfd8ce6bdd206f·...·]-24">)</span><span·class="p">.</span><span·class="w">171 ····</span><span·class="nc">gen_fsm</span><span·class="p">:</span><span·class="nf">send_event</span><span·class="p"·data-group-id="3192332196-24">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3192332196-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·121,·SHA:·9fe018f6515dcd3ec5f3cc6bab823861bd117c6edff73d7403c93c0f58cc76df·...·]-24">)</span><span·class="p">.</span><span·class="w">
172 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">172 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
173 </span><span·class="nf">button</span><span·class="p"·data-group-id="7104316101-26">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="7104316101-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="nf">button</span><span·class="p"·data-group-id="3192332196-26">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="3192332196-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="7104316101-27">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7104316101-28">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·57567799461033a405e12deb9ddf9367cea825111a0d51ed3a29b7d76cc1003d·...·]-27">)</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="3192332196-27">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3192332196-28">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·808b049122e39a7c68560cb89317d85142b879462eb90979786b77d74234cea4·...·]-27">)</span><span·class="p">.</span><span·class="w">
175 ····</span><span·class="c1">%%·send_event·is·asynchronous·and·becomes·a·cast</span><span·class="w">175 ····</span><span·class="c1">%%·send_event·is·asynchronous·and·becomes·a·cast</span><span·class="w">
176 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">176 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
177 </span><span·class="w">177 </span><span·class="w">
178 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-29">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-29">)</span><span·class="p">.</span><span·class="w">178 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-29">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-29">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="nf">stop</span><span·class="p"·data-group-id="7104316101-30">(</span><span·class="p"·data-group-id="7104316101-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3192332196-30">(</span><span·class="p"·data-group-id="3192332196-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="nc">gen_fsm</span><span·class="p">:</span><span·class="nf">sync_send_all_state_event</span><span·class="p"·data-group-id="7104316101-31">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="7104316101-31">)</span><span·class="p">.</span><span·class="w">180 ····</span><span·class="nc">gen_fsm</span><span·class="p">:</span><span·class="nf">sync_send_all_state_event</span><span·class="p"·data-group-id="3192332196-31">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="3192332196-31">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">181 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
182 </span><span·class="nf">stop</span><span·class="p"·data-group-id="7104316101-32">(</span><span·class="p"·data-group-id="7104316101-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3192332196-32">(</span><span·class="p"·data-group-id="3192332196-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="7104316101-33">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="7104316101-33">)</span><span·class="p">.</span><span·class="w">183 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="3192332196-33">(</span><span·class="o">?</span><span·class="n">NAME</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="3192332196-33">)</span><span·class="p">.</span><span·class="w">
184 ····</span><span·class="c1">%%·sync_send·is·synchronous·and·becomes·call</span><span·class="w">184 ····</span><span·class="c1">%%·sync_send·is·synchronous·and·becomes·call</span><span·class="w">
185 ····</span><span·class="c1">%%·all_state·is·handled·by·callback·code·in·gen_statem</span><span·class="w">185 ····</span><span·class="c1">%%·all_state·is·handled·by·callback·code·in·gen_statem</span><span·class="w">
186 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">186 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">init</span><span·class="p"·data-group-id="7104316101-34">(</span><span·class="n">Code</span><span·class="p"·data-group-id="7104316101-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">187 </span><span·class="nf">init</span><span·class="p"·data-group-id="3192332196-34">(</span><span·class="n">Code</span><span·class="p"·data-group-id="3192332196-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
188 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="7104316101-35">(</span><span·class="p"·data-group-id="7104316101-35">)</span><span·class="p">,</span><span·class="w">188 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="3192332196-35">(</span><span·class="p"·data-group-id="3192332196-35">)</span><span·class="p">,</span><span·class="w">
189 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7104316101-36">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">remaining</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·8673dab2c83d59106e331f6a24325640d76ffd732494e991561991893a9e0e25·...·]-36">}</span><span·class="p">,</span><span·class="w">189 ····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3192332196-36">#{</span><span·class="ss">code</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">remaining</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·6aabf0e29a0c982a701660c3f1e65614a68ffc163777a0ee4b0055ed75ff6b7d·...·]-36">}</span><span·class="p">,</span><span·class="w">
190 ····</span><span·class="p"·data-group-id="7104316101-37">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-37">}</span><span·class="p">.</span><span·class="w">190 ····</span><span·class="p"·data-group-id="3192332196-37">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-37">}</span><span·class="p">.</span><span·class="w">
191 </span><span·class="w">191 </span><span·class="w">
192 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-38">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-38">)</span><span·class="p">.</span><span·class="w">192 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-38">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-38">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">193 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
194 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="7104316101-39">(</span><span·class="p"·data-group-id="7104316101-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="3192332196-39">(</span><span·class="p"·data-group-id="3192332196-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ····</span><span·class="ss">state_functions</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="ss">state_functions</span><span·class="p">.</span><span·class="w">
196 </span><span·class="c1">%%·state_functions·mode·is·the·mode·most·similar·to</span><span·class="w">196 </span><span·class="c1">%%·state_functions·mode·is·the·mode·most·similar·to</span><span·class="w">
197 </span><span·class="c1">%%·gen_fsm.·There·is·also·handle_event·mode·which·is</span><span·class="w">197 </span><span·class="c1">%%·gen_fsm.·There·is·also·handle_event·mode·which·is</span><span·class="w">
198 </span><span·class="c1">%%·a·fairly·different·concept.</span><span·class="w">198 </span><span·class="c1">%%·a·fairly·different·concept.</span><span·class="w">
199 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">199 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
200 </span><span·class="w">200 </span><span·class="w">
201 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-40">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-40">)</span><span·class="p">.</span><span·class="w">201 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-40">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-40">)</span><span·class="p">.</span><span·class="w">
202 </span><span·class="nf">locked</span><span·class="p"·data-group-id="7104316101-41">(</span><span·class="p"·data-group-id="7104316101-42">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Digit</span><span·class="p"·data-group-id="7104316101-42">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·98,·SHA:·fbfa1fd303259b8eead7c67e7f8b0b3d4ad88f5effe31b53e6c5d9a673e87042·...·]-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 </span><span·class="nf">locked</span><span·class="p"·data-group-id="3192332196-41">(</span><span·class="p"·data-group-id="3192332196-42">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Digit</span><span·class="p"·data-group-id="3192332196-42">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·98,·SHA:·76d7266b38793515e42edeac4bdb9bd0b51f57783453ca54e244a5584ee6a265·...·]-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">analyze_lock</span><span·class="p"·data-group-id="7104316101-43">(</span><span·class="n">Digit</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data0</span><span·class="p"·data-group-id="7104316101-43">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">203 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">analyze_lock</span><span·class="p"·data-group-id="3192332196-43">(</span><span·class="n">Digit</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data0</span><span·class="p"·data-group-id="3192332196-43">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
204 ····</span><span·class="p"·data-group-id="7104316101-44">{</span><span·class="ss">open</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·019ad99344ef12928ee3a17f19c9ed22c56cc6bb2d0c67650fe7be612fb3d6c8·...·]-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 ····</span><span·class="p"·data-group-id="3192332196-44">{</span><span·class="ss">open</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·b097b275024f6dadaf7896d92c7e44b933e7ec7ec1bb56db7f8c01a0b36e563d·...·]-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ········</span><span·class="p"·data-group-id="7104316101-45">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·74,·SHA:·eaee7a44317243e1bfd98b3d4906b60592f19f0f1b46d00ebd26eaf8f0587ab9·...·]-45">}</span><span·class="p">;</span><span·class="w">205 ········</span><span·class="p"·data-group-id="3192332196-45">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·74,·SHA:·f774d0a9e1a7b1101305ad7189784ce2c08f4d3457fe969efe72a0ea2f693490·...·]-45">}</span><span·class="p">;</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="7104316101-46">{</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 ····</span><span·class="p"·data-group-id="3192332196-46">{</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ········</span><span·class="p"·data-group-id="7104316101-47">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-47">}</span><span·class="w">207 ········</span><span·class="p"·data-group-id="3192332196-47">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-47">}</span><span·class="w">
208 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
209 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">209 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
210 </span><span·class="nf">locked</span><span·class="p"·data-group-id="7104316101-48">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7104316101-49">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·150,·SHA:·60cb2653648835043c1e3df48a103067d13d212f0a876da02363975943f9b3f9·...·]-48">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 </span><span·class="nf">locked</span><span·class="p"·data-group-id="3192332196-48">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3192332196-49">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·150,·SHA:·a4a40376a1050a7c9301c8aedb4c136e6f602498a601a1182f0f1a8e9cc6e50c·...·]-48">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">analyze_lock</span><span·class="p"·data-group-id="7104316101-50">(</span><span·class="n">Digit</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data0</span><span·class="p"·data-group-id="7104316101-50">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">211 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">analyze_lock</span><span·class="p"·data-group-id="3192332196-50">(</span><span·class="n">Digit</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data0</span><span·class="p"·data-group-id="3192332196-50">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
212 ····</span><span·class="p"·data-group-id="7104316101-51">{</span><span·class="ss">open</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·019ad99344ef12928ee3a17f19c9ed22c56cc6bb2d0c67650fe7be612fb3d6c8·...·]-51">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ····</span><span·class="p"·data-group-id="3192332196-51">{</span><span·class="ss">open</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·b097b275024f6dadaf7896d92c7e44b933e7ec7ec1bb56db7f8c01a0b36e563d·...·]-51">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ········</span><span·class="p"·data-group-id="7104316101-52">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·74,·SHA:·eaee7a44317243e1bfd98b3d4906b60592f19f0f1b46d00ebd26eaf8f0587ab9·...·]-52">}</span><span·class="p">;</span><span·class="w">213 ········</span><span·class="p"·data-group-id="3192332196-52">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·74,·SHA:·f774d0a9e1a7b1101305ad7189784ce2c08f4d3457fe969efe72a0ea2f693490·...·]-52">}</span><span·class="p">;</span><span·class="w">
214 ····</span><span·class="p"·data-group-id="7104316101-53">{</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-53">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ····</span><span·class="p"·data-group-id="3192332196-53">{</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-53">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ········</span><span·class="p"·data-group-id="7104316101-54">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-54">}</span><span·class="w">215 ········</span><span·class="p"·data-group-id="3192332196-54">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-54">}</span><span·class="w">
216 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">216 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
217 </span><span·class="nf">locked</span><span·class="p"·data-group-id="7104316101-55">(</span><span·class="p"·data-group-id="7104316101-56">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="7104316101-56">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·9f62096d4dba252b1a8c05eefee91d0835fbb2ace08791a428cdcac39d437006·...·]-55">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 </span><span·class="nf">locked</span><span·class="p"·data-group-id="3192332196-55">(</span><span·class="p"·data-group-id="3192332196-56">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="3192332196-56">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·5652d417b139975fae7c83cee5dcc5819a61684a0b56d1f324e436e55ce1e10c·...·]-55">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="7104316101-57">(</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-57">)</span><span·class="p">;</span><span·class="w">218 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="3192332196-57">(</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-57">)</span><span·class="p">;</span><span·class="w">
219 </span><span·class="nf">locked</span><span·class="p"·data-group-id="7104316101-58">(</span><span·class="p"·data-group-id="7104316101-59">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7104316101-59">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·173,·SHA:·dcda621923ec356b08f669f8952c06ad853f2921e30216fe1bf5b0206483d356·...·]-58">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 </span><span·class="nf">locked</span><span·class="p"·data-group-id="3192332196-58">(</span><span·class="p"·data-group-id="3192332196-59">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="3192332196-59">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·173,·SHA:·fa02862617d3c9e9405618e5a627f3da5fbc9b9ede97516f34bb1d941b0335e1·...·]-58">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="7104316101-60">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-60">)</span><span·class="p">.</span><span·class="w">220 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="3192332196-60">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-60">)</span><span·class="p">.</span><span·class="w">
221 </span><span·class="c1">%%·Arity·differs</span><span·class="w">221 </span><span·class="c1">%%·Arity·differs</span><span·class="w">
222 </span><span·class="c1">%%·All·state·events·are·dispatched·to·handle_call·and·handle_info·help</span><span·class="w">222 </span><span·class="c1">%%·All·state·events·are·dispatched·to·handle_call·and·handle_info·help</span><span·class="w">
223 </span><span·class="c1">%%·functions.·If·you·want·to·handle·a·call·or·cast·event·specifically</span><span·class="w">223 </span><span·class="c1">%%·functions.·If·you·want·to·handle·a·call·or·cast·event·specifically</span><span·class="w">
224 </span><span·class="c1">%%·for·this·state·you·would·add·a·special·clause·for·it·above.</span><span·class="w">224 </span><span·class="c1">%%·for·this·state·you·would·add·a·special·clause·for·it·above.</span><span·class="w">
225 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">225 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
226 </span><span·class="w">226 </span><span·class="w">
227 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-61">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-61">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-61">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-61">)</span><span·class="p">.</span><span·class="w">
228 </span><span·class="nf">open</span><span·class="p"·data-group-id="7104316101-62">(</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="7104316101-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">228 </span><span·class="nf">open</span><span·class="p"·data-group-id="3192332196-62">(</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3192332196-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ·····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="7104316101-63">(</span><span·class="p"·data-group-id="7104316101-63">)</span><span·class="p">,</span><span·class="w">229 ·····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="3192332196-63">(</span><span·class="p"·data-group-id="3192332196-63">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="7104316101-64">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="7104316101-64">}</span><span·class="p">;</span><span·class="w">230 ····</span><span·class="p"·data-group-id="3192332196-64">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3192332196-64">}</span><span·class="p">;</span><span·class="w">
231 </span><span·class="nf">open</span><span·class="p"·data-group-id="7104316101-65">(</span><span·class="p"·data-group-id="7104316101-66">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7104316101-66">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·17e790ec8e0877e89a0be5671dc03948cc029bbd80bcf43aa287d0ebf828ab7b·...·]-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 </span><span·class="nf">open</span><span·class="p"·data-group-id="3192332196-65">(</span><span·class="p"·data-group-id="3192332196-66">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="3192332196-66">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·c8d47a2c92c410ea44cd1ec4826269bf781076f8242cf0bf25ed89ea351a39c6·...·]-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="7104316101-67">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-67">}</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="p"·data-group-id="3192332196-67">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-67">}</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">233 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
234 </span><span·class="nf">open</span><span·class="p"·data-group-id="7104316101-68">(</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-68">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 </span><span·class="nf">open</span><span·class="p"·data-group-id="3192332196-68">(</span><span·class="ss">timeout</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-68">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
235 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="7104316101-69">(</span><span·class="p"·data-group-id="7104316101-69">)</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="3192332196-69">(</span><span·class="p"·data-group-id="3192332196-69">)</span><span·class="p">,</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="7104316101-70">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-70">}</span><span·class="p">;</span><span·class="w">236 ····</span><span·class="p"·data-group-id="3192332196-70">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-70">}</span><span·class="p">;</span><span·class="w">
237 </span><span·class="nf">open</span><span·class="p"·data-group-id="7104316101-71">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7104316101-72">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·145,·SHA:·6b825503dabdac985af40e9f96ebc91bba1c0909c7196322752ee4b65d802076·...·]-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">237 </span><span·class="nf">open</span><span·class="p"·data-group-id="3192332196-71">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3192332196-72">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·145,·SHA:·c36ffb663c727790ebf6811f5219cb32151a0c1b1d63fb6b86079bfd9023df87·...·]-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="7104316101-73">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-73">}</span><span·class="p">;</span><span·class="w">238 ····</span><span·class="p"·data-group-id="3192332196-73">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">locked</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-73">}</span><span·class="p">;</span><span·class="w">
239 </span><span·class="nf">open</span><span·class="p"·data-group-id="7104316101-74">(</span><span·class="p"·data-group-id="7104316101-75">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="7104316101-75">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·9f62096d4dba252b1a8c05eefee91d0835fbb2ace08791a428cdcac39d437006·...·]-74">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 </span><span·class="nf">open</span><span·class="p"·data-group-id="3192332196-74">(</span><span·class="p"·data-group-id="3192332196-75">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="3192332196-75">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·5652d417b139975fae7c83cee5dcc5819a61684a0b56d1f324e436e55ce1e10c·...·]-74">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="7104316101-76">(</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-76">)</span><span·class="p">;</span><span·class="w">240 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="3192332196-76">(</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-76">)</span><span·class="p">;</span><span·class="w">
241 </span><span·class="nf">open</span><span·class="p"·data-group-id="7104316101-77">(</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-77">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">241 </span><span·class="nf">open</span><span·class="p"·data-group-id="3192332196-77">(</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-77">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
242 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="7104316101-78">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-78">)</span><span·class="p">.</span><span·class="w">242 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="3192332196-78">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">open</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-78">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="c1">%%·Arity·differs</span><span·class="w">243 </span><span·class="c1">%%·Arity·differs</span><span·class="w">
244 </span><span·class="c1">%%·All·state·events·are·dispatched·to·handle_call·and·handle_info·help</span><span·class="w">244 </span><span·class="c1">%%·All·state·events·are·dispatched·to·handle_call·and·handle_info·help</span><span·class="w">
245 </span><span·class="c1">%%·functions.·If·you·want·to·handle·a·call·or·cast·event·specifically</span><span·class="w">245 </span><span·class="c1">%%·functions.·If·you·want·to·handle·a·call·or·cast·event·specifically</span><span·class="w">
246 </span><span·class="c1">%%·for·this·state·you·would·add·a·special·clause·for·it·above.</span><span·class="w">246 </span><span·class="c1">%%·for·this·state·you·would·add·a·special·clause·for·it·above.</span><span·class="w">
247 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">247 </span><span·class="p">-</span><span·class="na">endif</span><span·class="p">.</span><span·class="w">
248 </span><span·class="w">248 </span><span·class="w">
249 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="7104316101-79">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="7104316101-79">)</span><span·class="p">.</span><span·class="w">249 </span><span·class="p">-</span><span·class="na">ifdef</span><span·class="p"·data-group-id="3192332196-79">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3192332196-79">)</span><span·class="p">.</span><span·class="w">
250 </span><span·class="nf">handle_sync_event</span><span·class="p"·data-group-id="7104316101-80">(</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">StateName</span><s[·...·truncated·by·diffoscope;·len:·114,·SHA:·dbbb436d1263d5a0973b57592ba457db1ac883ec1a6bab6e363e2918b6f99ee3·...·]-80">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">250 </span><span·class="nf">handle_sync_event</span><span·class="p"·data-group-id="3192332196-80">(</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">StateName</span><s[·...·truncated·by·diffoscope;·len:·114,·SHA:·0bd3bf11f7070dac62264c454d5c76c1fee5bf7616228978d6da80dda20c3398·...·]-80">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
251 ····</span><span·class="p"·data-group-id="7104316101-81">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·4e6372d22cf1cad5fc88ff82587136e23a56f360a3f6f46a54cd612559372fa9·...·]-81">}</span><span·class="p">.</span><span·class="w">251 ····</span><span·class="p"·data-group-id="3192332196-81">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·a466507c9c2afeb9dcc5beedc3cd8314c52b1a63dc63bf2c9c37ea7a48da3b0c·...·]-81">}</span><span·class="p">.</span><span·class="w">
  
252 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="7104316101-82">(</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-82">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">252 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3192332196-82">(</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-82">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
253 ····</span><span·class="p"·data-group-id="7104316101-83">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7104316101-84">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·445,·SHA:·9a2e345567b54ad6aeb44a205bce7586eb95c07f9e74c4b160260de58e5e4d48·...·]-83">}</span><span·class="p">.</span><span·class="w">253 ····</span><span·class="p"·data-group-id="3192332196-83">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3192332196-84">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·445,·SHA:·ec3ce455ccb8360d49c2af952cb3e47a3f9af2d926de491b3f20a6d3a3463aa9·...·]-83">}</span><span·class="p">.</span><span·class="w">
  
254 </span><span·class="nf">handle_info</span><span·class="p"·data-group-id="7104316101-86">(</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="7104316101-86">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">254 </span><span·class="nf">handle_info</span><span·class="p"·data-group-id="3192332196-86">(</span><span·class="n">Info</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StateName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3192332196-86">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 19155/80021 bytes (23.94%) of diff not shown.
6.64 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/gen_server.html
    
Offset 1247, 23 lines modifiedOffset 1247, 23 lines modified
1247 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked1247 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked
1248 to·get·the·<code·class="inline">gen_server</code>·status.</li><li>The·<code·class="inline">gen_server</code>·process·terminates·abnormally·and·logs·an·error.</li></ul><p>This·callback·is·used·to·limit·the·status·of·the·process·returned·by1248 to·get·the·<code·class="inline">gen_server</code>·status.</li><li>The·<code·class="inline">gen_server</code>·process·terminates·abnormally·and·logs·an·error.</li></ul><p>This·callback·is·used·to·limit·the·status·of·the·process·returned·by
1249 <a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel-10.2.2/doc/html/logger.html"><code·class="inline">logger</code></a>.</p><p>The·callback·gets·a·map·<code·class="inline">Status</code>·describing·the·current·status1249 <a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel-10.2.2/doc/html/logger.html"><code·class="inline">logger</code></a>.</p><p>The·callback·gets·a·map·<code·class="inline">Status</code>·describing·the·current·status
1250 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,1250 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,
1251 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove1251 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove
1252 sensitive·information·from·the·state·to·prevent·it·from·being·printed1252 sensitive·information·from·the·state·to·prevent·it·from·being·printed
1253 in·log·files,·or·to·compact·large·irrelevant·status·items1253 in·log·files,·or·to·compact·large·irrelevant·status·items
1254 that·would·only·clutter·the·logs.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">format_status</span><span·class="p"·data-group-id="9770328331-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="9770328331-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1254 that·would·only·clutter·the·logs.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">format_status</span><span·class="p"·data-group-id="5646294805-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="5646294805-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1255 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="9770328331-2">(</span><span·class="w">1255 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="5646294805-2">(</span><span·class="w">
1256 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="9770328331-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="9770328331-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1256 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="5646294805-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="5646294805-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1257 ············</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">remove</span><span·class="p"·data-group-id="9770328331-4">(</span><span·class="ss">private_key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9770328331-4">)</span><span·class="p">;</span><span·class="w">1257 ············</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">remove</span><span·class="p"·data-group-id="5646294805-4">(</span><span·class="ss">private_key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="5646294805-4">)</span><span·class="p">;</span><span·class="w">
1258 ·······</span><span·class="p"·data-group-id="9770328331-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="9770328331-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Pass</[·...·truncated·by·diffoscope;·len:·99,·SHA:·b1ee6187d9a008e6a625101a601b23c549ce818773f805e572309c6a8d41c9f0·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1258 ·······</span><span·class="p"·data-group-id="5646294805-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="5646294805-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Pass</[·...·truncated·by·diffoscope;·len:·99,·SHA:·1968f2b79b79c85672f9398573d3da686465b146f3cd5ac9361e94808502043f·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1259 ············</span><span·class="p"·data-group-id="9770328331-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">removed</span><span·class="p"·data-group-id="9770328331-7">}</span><span·class="p">;</span><span·class="w">1259 ············</span><span·class="p"·data-group-id="5646294805-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">removed</span><span·class="p"·data-group-id="5646294805-7">}</span><span·class="p">;</span><span·class="w">
1260 ·······</span><span·class="p"·data-group-id="9770328331-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="9770328331-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1260 ·······</span><span·class="p"·data-group-id="5646294805-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="5646294805-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1261 ············</span><span·class="n">Value</span><span·class="w">1261 ············</span><span·class="n">Value</span><span·class="w">
1262 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Status</span><span·class="p"·data-group-id="9770328331-2">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·callback·is·optional,·so·callback·modules·need·not·export·it.·The1262 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Status</span><span·class="p"·data-group-id="5646294805-2">)</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·callback·is·optional,·so·callback·modules·need·not·export·it.·The
1263 <code·class="inline">gen_server</code>·module·provides·a·default·implementation1263 <code·class="inline">gen_server</code>·module·provides·a·default·implementation
1264 of·this·function·that·returns·the·callback·module·state.</p><p>If·this·callback·is·exported·but·fails,1264 of·this·function·that·returns·the·callback·module·state.</p><p>If·this·callback·is·exported·but·fails,
1265 to·hide·possibly·sensitive·data,1265 to·hide·possibly·sensitive·data,
1266 the·default·function·will·instead·return·the·fact·that1266 the·default·function·will·instead·return·the·fact·that
1267 <a·href="#c:format_status/1"><code·class="inline">Module:format_status/1</code></a>·has·crashed.</p></section>1267 <a·href="#c:format_status/1"><code·class="inline">Module:format_status/1</code></a>·has·crashed.</p></section>
1268 ··</section>1268 ··</section>
1269 </section>1269 </section>
59.3 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/gen_statem.html
    
Offset 172, 15 lines modifiedOffset 172, 15 lines modified
172 </span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="ss">send_request</span><span·class="w">172 </span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="ss">send_request</span><span·class="w">
173 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">send</span><span·class="w">173 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">send</span><span·class="w">
174 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="ss">&#39;!&#39;</span><span·class="w">············</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="n">StateName</span><span·class="o">/</span><span·class="mi">3</span><span·class="w">174 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="ss">&#39;!&#39;</span><span·class="w">············</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="n">StateName</span><span·class="o">/</span><span·class="mi">3</span><span·class="w">
175 ···················</span><span·class="ow">or</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">175 ···················</span><span·class="ow">or</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">
176 ···················</span><span·class="ss">depending</span><span·class="w">·</span><span·class="ss">on</span><span·class="w">·</span><span·class="ss">callback</span><span·class="w">·</span><span·class="ss">mode</span><span·class="w">176 ···················</span><span·class="ss">depending</span><span·class="w">·</span><span·class="ss">on</span><span·class="w">·</span><span·class="ss">callback</span><span·class="w">·</span><span·class="ss">mode</span><span·class="w">
  
177 </span><span·class="n">Release</span><span·class="w">·</span><span·class="ss">upgrade</span><span·class="o">/</span><span·class="nf">downgrade</span><span·class="w">177 </span><span·class="n">Release</span><span·class="w">·</span><span·class="ss">upgrade</span><span·class="o">/</span><span·class="nf">downgrade</span><span·class="w">
178 </span><span·class="p"·data-group-id="0195695356-1">(</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">change</span><span·class="p"·data-group-id="0195695356-1">)</span><span·class="w">178 </span><span·class="p"·data-group-id="7996660719-1">(</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">change</span><span·class="p"·data-group-id="7996660719-1">)</span><span·class="w">
179 ······················</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">4</span></code></pre><h4·id="state-callback">State·callback</h4><p>The·<em>state·callback</em>·for·a·specific·<a·href="#t:state/0">state</a>·in·a·<code·class="inline">gen_statem</code>179 ······················</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">4</span></code></pre><h4·id="state-callback">State·callback</h4><p>The·<em>state·callback</em>·for·a·specific·<a·href="#t:state/0">state</a>·in·a·<code·class="inline">gen_statem</code>
180 is·the·callback·function·that·is·called·for·all·events·in·this·state.180 is·the·callback·function·that·is·called·for·all·events·in·this·state.
181 It·is·selected·depending·on·which·<a·href="#t:callback_mode/0"><em>callback·mode</em></a>181 It·is·selected·depending·on·which·<a·href="#t:callback_mode/0"><em>callback·mode</em></a>
182 that·the·callback·module·defines·with·the·callback·function182 that·the·callback·module·defines·with·the·callback·function
183 <a·href="#c:callback_mode/0"><code·class="inline">Module:callback_mode/0</code></a>.</p><p><a·href=""·id="state_functions"></a>183 <a·href="#c:callback_mode/0"><code·class="inline">Module:callback_mode/0</code></a>.</p><p><a·href=""·id="state_functions"></a>
184 When·the·<a·href="#t:callback_mode/0"><em>callback·mode</em></a>·is·<code·class="inline">state_functions</code>,184 When·the·<a·href="#t:callback_mode/0"><em>callback·mode</em></a>·is·<code·class="inline">state_functions</code>,
185 the·state·must·be·an·atom·and·is·used·as·the·<em>state·callback</em>·name;185 the·state·must·be·an·atom·and·is·used·as·the·<em>state·callback</em>·name;
Offset 298, 105 lines modifiedOffset 298, 105 lines modified
298 the·current·count·value.</li><li>Unknown·events·are·ignored·and·discarded.</li><li>There·is·boilerplate·code·for·start,·stop,·terminate,·code·change,298 the·current·count·value.</li><li>Unknown·events·are·ignored·and·discarded.</li><li>There·is·boilerplate·code·for·start,·stop,·terminate,·code·change,
299 init,·to·set·the·callback·mode·to·<code·class="inline">state_functions</code>,·etc...</li></ul><h3·id="module-pushbutton-code"·class="section-heading">299 init,·to·set·the·callback·mode·to·<code·class="inline">state_functions</code>,·etc...</li></ul><h3·id="module-pushbutton-code"·class="section-heading">
300 ··<a·href="#module-pushbutton-code"·class="hover-link">300 ··<a·href="#module-pushbutton-code"·class="hover-link">
301 ····<i·class="ri-link-m"·aria-hidden="true"></i>301 ····<i·class="ri-link-m"·aria-hidden="true"></i>
302 ··</a>302 ··</a>
303 ··<span·class="text">Pushbutton·Code</span>303 ··<span·class="text">Pushbutton·Code</span>
304 </h3>304 </h3>
305 <p>The·following·is·the·complete·callback·module·file·<code·class="inline">pushbutton.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3963739722-1">(</span><span·class="ss">pushbutton</span><span·class="p"·data-group-id="3963739722-1">)</span><span·class="p">.</span><span·class="w">305 <p>The·following·is·the·complete·callback·module·file·<code·class="inline">pushbutton.erl</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3112332867-1">(</span><span·class="ss">pushbutton</span><span·class="p"·data-group-id="3112332867-1">)</span><span·class="p">.</span><span·class="w">
306 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="3963739722-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="3963739722-2">)</span><span·class="p">.</span><span·class="w">306 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="3112332867-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="3112332867-2">)</span><span·class="p">.</span><span·class="w">
307 </span><span·class="w">307 </span><span·class="w">
308 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3963739722-3">(</span><span·class="p"·data-group-id="3963739722-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">push</span><span·class="p">/</span><span·class="mi">0</span><sp[·...·truncated·by·diffoscope;·len:·298,·SHA:·f68eb425d6734f3cf7e0126493b1ed81bac22987e5b0ba72883333421772177e·...·]-3">)</span><span·class="p">.</span><span·class="w">308 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3112332867-3">(</span><span·class="p"·data-group-id="3112332867-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">push</span><span·class="p">/</span><span·class="mi">0</span><sp[·...·truncated·by·diffoscope;·len:·298,·SHA:·e2f898dd0d03679958a0322ddfb74d8e90f253e4409c08b9ab3d1097c33ad6cf·...·]-3">)</span><span·class="p">.</span><span·class="w">
309 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3963739722-5">(</span><span·class="p"·data-group-id="3963739722-6">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·313,·SHA:·1a4cf44c1778572bf2265f632e9f26c4a570104917cbe14f93ac5eb0a698ab4e·...·]-5">)</span><span·class="p">.</span><span·class="w">309 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3112332867-5">(</span><span·class="p"·data-group-id="3112332867-6">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·313,·SHA:·123a4b444ae5e25ad922c735741c72f69adf1e46d3a6619dd4994526c5f37c74·...·]-5">)</span><span·class="p">.</span><span·class="w">
310 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3963739722-7">(</span><span·class="p"·data-group-id="3963739722-8">[</span><span·class="ss">on</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">/</span><span·class="mi">3</span><span·c[·...·truncated·by·diffoscope;·len:·87,·SHA:·bacc33f1a8dbb59e8e26a407ec4dff4ae41a2d3c8e151a2722f77b4aba3446a3·...·]-7">)</span><span·class="p">.</span><span·class="w">310 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3112332867-7">(</span><span·class="p"·data-group-id="3112332867-8">[</span><span·class="ss">on</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">/</span><span·class="mi">3</span><span·c[·...·truncated·by·diffoscope;·len:·87,·SHA:·8d8353de08428b0ea987c230f202cd0d155f41815fa43018574b8260c122b7ee·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
311 </span><span·class="nf">name</span><span·class="p"·data-group-id="3963739722-9">(</span><span·class="p"·data-group-id="3963739722-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">pushbutton_statem</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·The·registered·server·name</span><span·class="w">311 </span><span·class="nf">name</span><span·class="p"·data-group-id="3112332867-9">(</span><span·class="p"·data-group-id="3112332867-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">pushbutton_statem</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·The·registered·server·name</span><span·class="w">
  
312 </span><span·class="c1">%%·API.··This·example·uses·a·registered·name·name()</span><span·class="w">312 </span><span·class="c1">%%·API.··This·example·uses·a·registered·name·name()</span><span·class="w">
313 </span><span·class="c1">%%·and·does·not·link·to·the·caller.</span><span·class="w">313 </span><span·class="c1">%%·and·does·not·link·to·the·caller.</span><span·class="w">
314 </span><span·class="nf">start</span><span·class="p"·data-group-id="3963739722-10">(</span><span·class="p"·data-group-id="3963739722-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">314 </span><span·class="nf">start</span><span·class="p"·data-group-id="3112332867-10">(</span><span·class="p"·data-group-id="3112332867-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
315 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3963739722-11">(</span><span·class="p"·data-group-id="3963739722-12">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="nf">name</span><span·class="p"·data-group-id="3963739722-13">(</span><span·class="p"·data-group-id="3963739722-13"[·...·truncated·by·diffoscope;·len:·517,·SHA:·0c06e50c7fe4f13f2aae0986fcb4c61f3c10b7d9ed47ae2ecbf141356b3cff79·...·]-11">)</span><span·class="p">.</span><span·class="w">315 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3112332867-11">(</span><span·class="p"·data-group-id="3112332867-12">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="nf">name</span><span·class="p"·data-group-id="3112332867-13">(</span><span·class="p"·data-group-id="3112332867-13"[·...·truncated·by·diffoscope;·len:·517,·SHA:·266556d16e88f142b0989899f7cdf5479e2742563bd4be29a45343557dafbbc3·...·]-11">)</span><span·class="p">.</span><span·class="w">
316 </span><span·class="nf">push</span><span·class="p"·data-group-id="3963739722-16">(</span><span·class="p"·data-group-id="3963739722-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">316 </span><span·class="nf">push</span><span·class="p"·data-group-id="3112332867-16">(</span><span·class="p"·data-group-id="3112332867-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
317 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="3963739722-17">(</span><span·class="nf">name</span><span·class="p"·data-group-id="3963739722-18">(</span><span·class="p"·data-group-id="3963739722-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">push</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·23eaa3d200a879a91a3e88c4651ae025d72ad7607fdef86edc5b8a2b2e8c8694·...·]-17">)</span><span·class="p">.</span><span·class="w">317 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="3112332867-17">(</span><span·class="nf">name</span><span·class="p"·data-group-id="3112332867-18">(</span><span·class="p"·data-group-id="3112332867-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">push</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·d805d8b1b83fd55af519416290aae3a82fbcd0cb83888634954c188ac29942ea·...·]-17">)</span><span·class="p">.</span><span·class="w">
318 </span><span·class="nf">get_count</span><span·class="p"·data-group-id="3963739722-19">(</span><span·class="p"·data-group-id="3963739722-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">318 </span><span·class="nf">get_count</span><span·class="p"·data-group-id="3112332867-19">(</span><span·class="p"·data-group-id="3112332867-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
319 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="3963739722-20">(</span><span·class="nf">name</span><span·class="p"·data-group-id="3963739722-21">(</span><span·class="p"·data-group-id="3963739722-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_count</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·72c0aabf05798dd2f16a018bbfe7ad722952d4be4ed2031be16666dabdd082fa·...·]-20">)</span><span·class="p">.</span><span·class="w">319 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="3112332867-20">(</span><span·class="nf">name</span><span·class="p"·data-group-id="3112332867-21">(</span><span·class="p"·data-group-id="3112332867-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_count</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·b9deef7f3fe068462fe39fad951da302af9a5d32103827e9dc15b95c29d26a9d·...·]-20">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3963739722-22">(</span><span·class="p"·data-group-id="3963739722-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">320 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3112332867-22">(</span><span·class="p"·data-group-id="3112332867-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
321 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="3963739722-23">(</span><span·class="nf">name</span><span·class="p"·data-group-id="3963739722-24">(</span><span·class="p"·data-group-id="3963739722-24">)</span><span·class="p"·data-group-id="3963739722-23">)</span><span·class="p">.</span><span·class="w">321 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="3112332867-23">(</span><span·class="nf">name</span><span·class="p"·data-group-id="3112332867-24">(</span><span·class="p"·data-group-id="3112332867-24">)</span><span·class="p"·data-group-id="3112332867-23">)</span><span·class="p">.</span><span·class="w">
  
322 </span><span·class="c1">%%·Mandatory·callback·functions</span><span·class="w">322 </span><span·class="c1">%%·Mandatory·callback·functions</span><span·class="w">
323 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="3963739722-25">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·7e02f42b59391c3e90a6aa7fbbd11790d09f8f4cc985e19e46e9caa9cd853c2e·...·]-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">323 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="3112332867-25">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·5c26b5191e861873613c61fa808670e33b82ef47ff97deb55620e0d029e1c283·...·]-25">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
324 ····</span><span·class="ss">void</span><span·class="p">.</span><span·class="w">324 ····</span><span·class="ss">void</span><span·class="p">.</span><span·class="w">
325 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="3963739722-26">(</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·108,·SHA:·dc6ef0f6a46dd3742f07eff0c6cec12baadb28360b3688d76b6d5092475b0401·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">325 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="3112332867-26">(</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·108,·SHA:·59bc4dd06022eac79f30d22acd9f701d8ed7ab461d040c1499b1953d3648efad·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
326 ····</span><span·class="p"·data-group-id="3963739722-27">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-27">}</span><span·class="p">.</span><span·class="w">326 ····</span><span·class="p"·data-group-id="3112332867-27">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-27">}</span><span·class="p">.</span><span·class="w">
327 </span><span·class="nf">init</span><span·class="p"·data-group-id="3963739722-28">(</span><span·class="p"·data-group-id="3963739722-29">[</span><span·class="p"·data-group-id="3963739722-29">]</span><span·class="p"·data-group-id="3963739722-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">327 </span><span·class="nf">init</span><span·class="p"·data-group-id="3112332867-28">(</span><span·class="p"·data-group-id="3112332867-29">[</span><span·class="p"·data-group-id="3112332867-29">]</span><span·class="p"·data-group-id="3112332867-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
328 ····</span><span·class="c1">%%·Set·the·initial·state·+·data.··Data·is·used·only·as·a·counter.</span><span·class="w">328 ····</span><span·class="c1">%%·Set·the·initial·state·+·data.··Data·is·used·only·as·a·counter.</span><span·class="w">
329 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">off</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">329 ····</span><span·class="n">State</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">off</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
330 ····</span><span·class="p"·data-group-id="3963739722-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-30">}</span><span·class="p">.</span><span·class="w">330 ····</span><span·class="p"·data-group-id="3112332867-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-30">}</span><span·class="p">.</span><span·class="w">
331 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="3963739722-31">(</span><span·class="p"·data-group-id="3963739722-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">state_functions</span><span·class="p">.</span><span·class="w">331 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="3112332867-31">(</span><span·class="p"·data-group-id="3112332867-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">state_functions</span><span·class="p">.</span><span·class="w">
  
332 </span><span·class="c1">%%%·state·callback(s)</span><span·class="w">332 </span><span·class="c1">%%%·state·callback(s)</span><span·class="w">
  
333 </span><span·class="nf">off</span><span·class="p"·data-group-id="3963739722-32">(</span><span·class="p"·data-group-id="3963739722-33">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3963739722-33">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·145,·SHA:·afad54dbd61efa948e985d91fe9585aec2907203a580394ff5ab493234064bf4·...·]-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">333 </span><span·class="nf">off</span><span·class="p"·data-group-id="3112332867-32">(</span><span·class="p"·data-group-id="3112332867-33">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3112332867-33">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·145,·SHA:·e9af66a0cbb5a1c52b58c06ec6a13bec7eea22f43cbc7fd3c4adc5c65e580e9d·...·]-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
334 ····</span><span·class="c1">%%·Go·to·&#39;on&#39;,·increment·count·and·reply</span><span·class="w">334 ····</span><span·class="c1">%%·Go·to·&#39;on&#39;,·increment·count·and·reply</span><span·class="w">
335 ····</span><span·class="c1">%%·that·the·resulting·status·is·&#39;on&#39;</span><span·class="w">335 ····</span><span·class="c1">%%·that·the·resulting·status·is·&#39;on&#39;</span><span·class="w">
336 ····</span><span·class="p"·data-group-id="3963739722-34">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">on</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·361,·SHA:·ad53d8c8c634ccd8070c2adde76dc6feab45e35f863a69a20e24681b19b96d9b·...·]-34">}</span><span·class="p">;</span><span·class="w">336 ····</span><span·class="p"·data-group-id="3112332867-34">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">on</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·361,·SHA:·8ba9ceb2091bdfcf27bb7198a688b247de20ce63d2ecb21437a2b1f21942bdb1·...·]-34">}</span><span·class="p">;</span><span·class="w">
337 </span><span·class="nf">off</span><span·class="p"·data-group-id="3963739722-37">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">337 </span><span·class="nf">off</span><span·class="p"·data-group-id="3112332867-37">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
338 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3963739722-38">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-38">)</span><span·class="p">.</span><span·class="w">338 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3112332867-38">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-38">)</span><span·class="p">.</span><span·class="w">
  
339 </span><span·class="nf">on</span><span·class="p"·data-group-id="3963739722-39">(</span><span·class="p"·data-group-id="3963739722-40">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3963739722-40">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·145,·SHA:·afad54dbd61efa948e985d91fe9585aec2907203a580394ff5ab493234064bf4·...·]-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">339 </span><span·class="nf">on</span><span·class="p"·data-group-id="3112332867-39">(</span><span·class="p"·data-group-id="3112332867-40">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3112332867-40">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·145,·SHA:·e9af66a0cbb5a1c52b58c06ec6a13bec7eea22f43cbc7fd3c4adc5c65e580e9d·...·]-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
340 ····</span><span·class="c1">%%·Go·to·&#39;off&#39;·and·reply·that·the·resulting·status·is·&#39;off&#39;</span><span·class="w">340 ····</span><span·class="c1">%%·Go·to·&#39;off&#39;·and·reply·that·the·resulting·status·is·&#39;off&#39;</span><span·class="w">
341 ····</span><span·class="p"·data-group-id="3963739722-41">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="3963739722-42">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·314,·SHA:·805fb24fb364fa44abf51737b91e15f25b76d75f15ea27eced6ac189c0b4c091·...·]-41">}</span><span·class="p">;</span><span·class="w">341 ····</span><span·class="p"·data-group-id="3112332867-41">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="3112332867-42">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·314,·SHA:·c7aa5da6a2e345aca62f3c959fb04e56f2fcf0a44a5e72a59546dcfcda613a5d·...·]-41">}</span><span·class="p">;</span><span·class="w">
342 </span><span·class="nf">on</span><span·class="p"·data-group-id="3963739722-44">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-44">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">342 </span><span·class="nf">on</span><span·class="p"·data-group-id="3112332867-44">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-44">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
343 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3963739722-45">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-45">)</span><span·class="p">.</span><span·class="w">343 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3112332867-45">(</span><span·class="n">EventType</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventContent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-45">)</span><span·class="p">.</span><span·class="w">
  
344 </span><span·class="c1">%%·Handle·events·common·to·all·states</span><span·class="w">344 </span><span·class="c1">%%·Handle·events·common·to·all·states</span><span·class="w">
345 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3963739722-46">(</span><span·class="p"·data-group-id="3963739722-47">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3963739722-47">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·150,·SHA:·bc9ca3fb63d6c4060edbc118061bd9b0c2da834372ea8bc6e38f70be09c86795·...·]-46">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">345 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3112332867-46">(</span><span·class="p"·data-group-id="3112332867-47">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3112332867-47">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·150,·SHA:·235cb12d758dc25d7ad5805f0c1088e6b3b7e857927cf420113f26b9c4dba28b·...·]-46">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
346 ····</span><span·class="c1">%%·Reply·with·the·current·count</span><span·class="w">346 ····</span><span·class="c1">%%·Reply·with·the·current·count</span><span·class="w">
347 ····</span><span·class="p"·data-group-id="3963739722-48">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="3963739722-49">[</span><span·class="p"·data-group-id="3963739722-50">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·263,·SHA:·6acb256c5e38fde07f135caadc86d83a30544c5a76c24448d5e8e1b306cf5962·...·]-48">}</span><span·class="p">;</span><span·class="w">347 ····</span><span·class="p"·data-group-id="3112332867-48">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="3112332867-49">[</span><span·class="p"·data-group-id="3112332867-50">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·263,·SHA:·dbdea435962431491778f37b93b2990791f3445230d201fb746625fbeeb459fc·...·]-48">}</span><span·class="p">;</span><span·class="w">
348 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3963739722-51">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-51">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">348 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3112332867-51">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-51">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
349 ····</span><span·class="c1">%%·Ignore·all·other·events</span><span·class="w">349 ····</span><span·class="c1">%%·Ignore·all·other·events</span><span·class="w">
350 ····</span><span·class="p"·data-group-id="3963739722-52">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="3963739722-52">}</span><span·class="p">.</span></code></pre><p>The·following·is·a·shell·session·when·running·it:</p><p[·...·truncated·by·diffoscope;·len:·270,·SHA:·eec16df71d7de8824335783b70a37daf2d471f43791281e94719a495b370d9f7·...·]-1">)</span><span·class="p">.</span><span·class="w">350 ····</span><span·class="p"·data-group-id="3112332867-52">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="3112332867-52">}</span><span·class="p">.</span></code></pre><p>The·following·is·a·shell·session·when·running·it:</p><p[·...·truncated·by·diffoscope;·len:·270,·SHA:·ab7f81a5231643bf5b2c8a72ce2ae170717dd27a9c635c9da8883788ca8cf4cf·...·]-1">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="p"·data-group-id="3078122351-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.36</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3078122351-2">}</span><span·class="gp·unselectable">351 </span><span·class="p"·data-group-id="9147090530-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.36</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9147090530-2">}</span><span·class="gp·unselectable">
352 2&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">get_count</span><span·class="p"·data-group-id="3078122351-3">(</span><span·class="p"·data-group-id="3078122351-3">)</span><span·class="p">.</span><span·class="w">352 2&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">get_count</span><span·class="p"·data-group-id="9147090530-3">(</span><span·class="p"·data-group-id="9147090530-3">)</span><span·class="p">.</span><span·class="w">
353 </span><span·class="mi">0</span><span·class="gp·unselectable">353 </span><span·class="mi">0</span><span·class="gp·unselectable">
354 3&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">push</span><span·class="p"·data-group-id="3078122351-4">(</span><span·class="p"·data-group-id="3078122351-4">)</span><span·class="p">.</span><span·class="w">354 3&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">push</span><span·class="p"·data-group-id="9147090530-4">(</span><span·class="p"·data-group-id="9147090530-4">)</span><span·class="p">.</span><span·class="w">
355 </span><span·class="ss">on</span><span·class="gp·unselectable">355 </span><span·class="ss">on</span><span·class="gp·unselectable">
356 4&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">get_count</span><span·class="p"·data-group-id="3078122351-5">(</span><span·class="p"·data-group-id="3078122351-5">)</span><span·class="p">.</span><span·class="w">356 4&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">get_count</span><span·class="p"·data-group-id="9147090530-5">(</span><span·class="p"·data-group-id="9147090530-5">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="mi">1</span><span·class="gp·unselectable">357 </span><span·class="mi">1</span><span·class="gp·unselectable">
358 5&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">push</span><span·class="p"·data-group-id="3078122351-6">(</span><span·class="p"·data-group-id="3078122351-6">)</span><span·class="p">.</span><span·class="w">358 5&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">push</span><span·class="p"·data-group-id="9147090530-6">(</span><span·class="p"·data-group-id="9147090530-6">)</span><span·class="p">.</span><span·class="w">
359 </span><span·class="ss">off</span><span·class="gp·unselectable">359 </span><span·class="ss">off</span><span·class="gp·unselectable">
360 6&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">get_count</span><span·class="p"·data-group-id="3078122351-7">(</span><span·class="p"·data-group-id="3078122351-7">)</span><span·class="p">.</span><span·class="w">360 6&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">get_count</span><span·class="p"·data-group-id="9147090530-7">(</span><span·class="p"·data-group-id="9147090530-7">)</span><span·class="p">.</span><span·class="w">
361 </span><span·class="mi">1</span><span·class="gp·unselectable">361 </span><span·class="mi">1</span><span·class="gp·unselectable">
362 7&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="3078122351-8">(</span><span·class="p"·data-group-id="3078122351-8">)</span><span·class="p">.</span><span·class="w">362 7&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="9147090530-8">(</span><span·class="p"·data-group-id="9147090530-8">)</span><span·class="p">.</span><span·class="w">
363 </span><span·class="ss">ok</span><span·class="gp·unselectable">363 </span><span·class="ss">ok</span><span·class="gp·unselectable">
364 8&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">push</span><span·class="p"·data-group-id="3078122351-9">(</span><span·class="p"·data-group-id="3078122351-9">)</span><span·class="p">.</span><span·class="w">364 8&gt;·</span><span·class="nc">pushbutton</span><span·class="p">:</span><span·class="nf">push</span><span·class="p"·data-group-id="9147090530-9">(</span><span·class="p"·data-group-id="9147090530-9">)</span><span·class="p">.</span><span·class="w">
365 </span><span·class="gt">**·exception·exit:·{noproc,{gen_statem,call,[pushbutton_statem,push,infinity]}}365 </span><span·class="gt">**·exception·exit:·{noproc,{gen_statem,call,[pushbutton_statem,push,infinity]}}
366 ·····in·function··gen:do_for_proc/2·(gen.erl,·line·261)366 ·····in·function··gen:do_for_proc/2·(gen.erl,·line·261)
367 ·····in·call·from·gen_statem:call/3·(gen_statem.erl,·line·386)</span></code></pre><p>To·compare·styles,·here·follows·the·same·example·using367 ·····in·call·from·gen_statem:call/3·(gen_statem.erl,·line·386)</span></code></pre><p>To·compare·styles,·here·follows·the·same·example·using
368 <a·href="#t:callback_mode/0"><em>callback·mode</em></a>·<code·class="inline">handle_event_function</code>,368 <a·href="#t:callback_mode/0"><em>callback·mode</em></a>·<code·class="inline">handle_event_function</code>,
369 or·rather,·the·code·to·replace·after·function·<a·href="#c:init/1"><code·class="inline">init/1</code></a>369 or·rather,·the·code·to·replace·after·function·<a·href="#c:init/1"><code·class="inline">init/1</code></a>
370 of·the·<code·class="inline">pushbutton.erl</code>·example·file·above:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">callback_mode</span><span·class="p"·data-group-id="3330854270-1">(</span><span·class="p"·data-group-id="3330854270-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">handle_event_function</span><span·class="p">.</span><span·class="w">370 of·the·<code·class="inline">pushbutton.erl</code>·example·file·above:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">callback_mode</span><span·class="p"·data-group-id="2201561649-1">(</span><span·class="p"·data-group-id="2201561649-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">handle_event_function</span><span·class="p">.</span><span·class="w">
  
371 </span><span·class="c1">%%%·state·callback(s)</span><span·class="w">371 </span><span·class="c1">%%%·state·callback(s)</span><span·class="w">
  
372 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3330854270-2">(</span><span·class="p"·data-group-id="3330854270-3">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3330854270-3">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·4f9ba5aa606a7d4680712fc6f32f778d089988dbec71cbeb34cb9e2ab076c934·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">372 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="2201561649-2">(</span><span·class="p"·data-group-id="2201561649-3">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="2201561649-3">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·240e384154e9d7bcd66840fc033f54f305437416a35e109446b358e023be6bff·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
373 ····</span><span·class="c1">%%·Go·to·&#39;on&#39;,·increment·count·and·reply</span><span·class="w">373 ····</span><span·class="c1">%%·Go·to·&#39;on&#39;,·increment·count·and·reply</span><span·class="w">
374 ····</span><span·class="c1">%%·that·the·resulting·status·is·&#39;on&#39;</span><span·class="w">374 ····</span><span·class="c1">%%·that·the·resulting·status·is·&#39;on&#39;</span><span·class="w">
375 ····</span><span·class="p"·data-group-id="3330854270-4">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">on</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·357,·SHA:·811197e6e5dee66ed8d8411aed7ef472cbe2ba51c0e5a763bf5ec9f16281056d·...·]-4">}</span><span·class="p">;</span><span·class="w">375 ····</span><span·class="p"·data-group-id="2201561649-4">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">on</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·357,·SHA:·4380e5e251a7888e9e05c81faad912130b02c795b05b94cd72dc2f29b2c4e265·...·]-4">}</span><span·class="p">;</span><span·class="w">
376 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3330854270-7">(</span><span·class="p"·data-group-id="3330854270-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3330854270-8">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·217,·SHA:·fe2d388bef354346d2b27da7414d18ecf586ec681944feccb2022c1d5f065fe9·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">376 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="2201561649-7">(</span><span·class="p"·data-group-id="2201561649-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="2201561649-8">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·217,·SHA:·32d327c776836eed5b1a0d676816dbeb908c2df65b9d9af030a043fc638bcaf0·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
377 ····</span><span·class="c1">%%·Go·to·&#39;off&#39;·and·reply·that·the·resulting·status·is·&#39;off&#39;</span><span·class="w">377 ····</span><span·class="c1">%%·Go·to·&#39;off&#39;·and·reply·that·the·resulting·status·is·&#39;off&#39;</span><span·class="w">
378 ····</span><span·class="p"·data-group-id="3330854270-9">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="3330854270-10">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·314,·SHA:·61187e28465b8b5eaa4d9dffe9a2dcea70a766609719f54f4fd802d4345d47a5·...·]-9">}</span><span·class="p">;</span><span·class="w">378 ····</span><span·class="p"·data-group-id="2201561649-9">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="2201561649-10">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·314,·SHA:·d113deca18f4e9b5a9b7c513851b8d1f50f24aca05338b94219ebf01fe19ac78·...·]-9">}</span><span·class="p">;</span><span·class="w">
379 </span><span·class="c1">%%</span><span·class="w">379 </span><span·class="c1">%%</span><span·class="w">
380 </span><span·class="c1">%%·Event·handling·common·to·all·states</span><span·class="w">380 </span><span·class="c1">%%·Event·handling·common·to·all·states</span><span·class="w">
381 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3330854270-12">(</span><span·class="p"·data-group-id="3330854270-13">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="3330854270-13">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·227,·SHA:·86eb90a34c121c7620b3cb7951fcfbe7490d5b2144c8b9589f4e178169eee03a·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">381 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="2201561649-12">(</span><span·class="p"·data-group-id="2201561649-13">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="2201561649-13">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·227,·SHA:·0618bc48f8505058199e5899a52b9018cb5d739498b1d14c79f6d8bdb3594ab7·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
382 ····</span><span·class="c1">%%·Reply·with·the·current·count</span><span·class="w">382 ····</span><span·class="c1">%%·Reply·with·the·current·count</span><span·class="w">
383 ····</span><span·class="p"·data-group-id="3330854270-14">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="3330854270-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·316,·SHA:·70acc1fc1e55323285a8c8b36d9a1e83b328dd7f37e81578a6d78eaeb8bd3d65·...·]-14">}</span><span·class="p">;</span><span·class="w">383 ····</span><span·class="p"·data-group-id="2201561649-14">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p">,</span><span·class="p"·data-group-id="2201561649-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·316,·SHA:·af9eca789708114e2bf87212bb183248ea5c41ac7001b31c15c56e930b964229·...·]-14">}</span><span·class="p">;</span><span·class="w">
384 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3330854270-17">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·55,·SHA:·c57a19c64a1e3edd6de9adf3a99d22e8095b83b88282ac1991cee8936422a97b·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">384 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="2201561649-17">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·55,·SHA:·b93a271f146624bdb5b84de53359a6e2dfa7078b44a22968530f577ca53d6d68·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
385 ····</span><span·class="c1">%%·Ignore·all·other·events</span><span·class="w">385 ····</span><span·class="c1">%%·Ignore·all·other·events</span><span·class="w">
386 ····</span><span·class="p"·data-group-id="3330854270-18">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="3330854270-18">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><h2·id="module-api-changes"·class="section-heading">386 ····</span><span·class="p"·data-group-id="2201561649-18">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="n">State</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="2201561649-18">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><h2·id="module-api-changes"·class="section-heading">
387 ··<a·href="#module-api-changes"·class="hover-link">387 ··<a·href="#module-api-changes"·class="hover-link">
388 ····<i·class="ri-link-m"·aria-hidden="true"></i>388 ····<i·class="ri-link-m"·aria-hidden="true"></i>
389 ··</a>389 ··</a>
390 ··<span·class="text">API·changes</span>390 ··<span·class="text">API·changes</span>
391 </h2>391 </h2>
392 <ul><li>This·behavior·appeared·in·Erlang/OTP·19.0·as·experimental.</li><li>In·OTP·19.1·a·backwards·incompatible·change·of·the·return·tuple·from392 <ul><li>This·behavior·appeared·in·Erlang/OTP·19.0·as·experimental.</li><li>In·OTP·19.1·a·backwards·incompatible·change·of·the·return·tuple·from
393 <a·href="#c:init/1"><code·class="inline">Module:init/1</code></a>·was·made,393 <a·href="#c:init/1"><code·class="inline">Module:init/1</code></a>·was·made,
Offset 3083, 23 lines modifiedOffset 3083, 23 lines modified
3083 return·value·and·how·its·status·appears·in·termination·error·logs,3083 return·value·and·how·its·status·appears·in·termination·error·logs,
3084 exports·an·instance·of·<a·href="#c:format_status/1"><code·class="inline">Module:format_status/1</code></a>,3084 exports·an·instance·of·<a·href="#c:format_status/1"><code·class="inline">Module:format_status/1</code></a>,
3085 which·will·get·a·map·<code·class="inline">Status</code>·that·describes·the·current·state3085 which·will·get·a·map·<code·class="inline">Status</code>·that·describes·the·current·state
3086 of·the·<code·class="inline">gen_statem</code>,·and·shall·return·a·map·<code·class="inline">NewStatus</code>3086 of·the·<code·class="inline">gen_statem</code>,·and·shall·return·a·map·<code·class="inline">NewStatus</code>
3087 containing·the·same·keys·as·the·input·map,3087 containing·the·same·keys·as·the·input·map,
Max diff block lines reached; 9620/60611 bytes (15.87%) of diff not shown.
190 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/io.html
    
Offset 144, 15 lines modifiedOffset 144, 15 lines modified
144 module.</p></section><h2·id="module-error-information"·class="section-heading">144 module.</p></section><h2·id="module-error-information"·class="section-heading">
145 ··<a·href="#module-error-information"·class="hover-link">145 ··<a·href="#module-error-information"·class="hover-link">
146 ····<i·class="ri-link-m"·aria-hidden="true"></i>146 ····<i·class="ri-link-m"·aria-hidden="true"></i>
147 ··</a>147 ··</a>
148 ··<span·class="text">Error·Information</span>148 ··<span·class="text">Error·Information</span>
149 </h2>149 </h2>
150 <p>The·<code·class="inline">ErrorInfo</code>·mentioned·in·this·module·is·the·standard·<code·class="inline">ErrorInfo</code>·structure150 <p>The·<code·class="inline">ErrorInfo</code>·mentioned·in·this·module·is·the·standard·<code·class="inline">ErrorInfo</code>·structure
151 that·is·returned·from·all·I/O·modules.·It·has·the·following·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4368209510-1">{</span><span·class="n">ErrorLocation</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="4368[·...·truncated·by·diffoscope;·len:·377,·SHA:·6fe4b6532d7c618822e3ed3b505cc5acd9c627357c71d5cc131e47acab442e4d·...·]-1">)</span></code></pre>151 that·is·returned·from·all·I/O·modules.·It·has·the·following·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0528353024-1">{</span><span·class="n">ErrorLocation</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ErrorDescriptor</span><span·class="p"·data-group-id="0528[·...·truncated·by·diffoscope;·len:·377,·SHA:·d1aa6bfa5f75fb000b50ef398836cb8735048f067c66100311f4c87c933dc29f·...·]-1">)</span></code></pre>
152 ····</section>152 ····</section>
  
153 </div>153 </div>
  
154 ··<section·id="summary"·class="details-list">154 ··<section·id="summary"·class="details-list">
155 ····<h1·class="section-heading">155 ····<h1·class="section-heading">
156 ······<a·class="hover-link"·href="#summary">156 ······<a·class="hover-link"·href="#summary">
Offset 1159, 20 lines modifiedOffset 1159, 20 lines modified
  
1159 ······</div>1159 ······</div>
  
1160 <p>The·default·standard·I/O·device·assigned·to·a·process.·This·device·is·used·when1160 <p>The·default·standard·I/O·device·assigned·to·a·process.·This·device·is·used·when
1161 no·<code·class="inline">IoDevice</code>·argument·is·specified·in·the·function·calls·in·this·module.</p><p>It·is·sometimes·desirable·to·use·an·explicit·<code·class="inline">IoDevice</code>·argument·that1161 no·<code·class="inline">IoDevice</code>·argument·is·specified·in·the·function·calls·in·this·module.</p><p>It·is·sometimes·desirable·to·use·an·explicit·<code·class="inline">IoDevice</code>·argument·that
1162 refers·to·the·default·I/O·device.·This·is·the·case·with·functions·that·can1162 refers·to·the·default·I/O·device.·This·is·the·case·with·functions·that·can
1163 access·either·a·file·or·the·default·I/O·device.·The·atom·<code·class="inline">standard_io</code>·has·this1163 access·either·a·file·or·the·default·I/O·device.·The·atom·<code·class="inline">standard_io</code>·has·this
1164 special·meaning.·The·following·example·illustrates·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">27&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="1815695881-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="1815695881-1">)</span><span·class="p">.</span><span·class="w">1164 special·meaning.·The·following·example·illustrates·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">27&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="8391340708-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="8391340708-1">)</span><span·class="p">.</span><span·class="w">
1165 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="ss">foo</span><span·class="p">.</span><span·class="w">1165 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="ss">foo</span><span·class="p">.</span><span·class="w">
1166 </span><span·class="p"·data-group-id="1815695881-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="1815695881-2">}</span><span·class="gp·unselectable">1166 </span><span·class="p"·data-group-id="8391340708-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="8391340708-2">}</span><span·class="gp·unselectable">
1167 28&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="1815695881-3">(</span><span·class="ss">standard_io</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="1815695881-3">)</span><span·class="p">.</span><span·class="w">1167 28&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="8391340708-3">(</span><span·class="ss">standard_io</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="8391340708-3">)</span><span·class="p">.</span><span·class="w">
1168 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="ss">bar</span><span·class="p">.</span><span·class="w">1168 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="ss">bar</span><span·class="p">.</span><span·class="w">
1169 </span><span·class="p"·data-group-id="1815695881-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">bar</span><span·class="p"·data-group-id="1815695881-4">}</span></code></pre><p>By·default·all·I/O·sent·to·<code·class="inline">standard_io</code>·will·end·up·in·the·<a·href="#t:user/0"><code·class="inline">user</code></a>1169 </span><span·class="p"·data-group-id="8391340708-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">bar</span><span·class="p"·data-group-id="8391340708-4">}</span></code></pre><p>By·default·all·I/O·sent·to·<code·class="inline">standard_io</code>·will·end·up·in·the·<a·href="#t:user/0"><code·class="inline">user</code></a>
1170 I/O·device·of·the·node·that·spawned·the·calling·process.</p><p><code·class="inline">standard_io</code>·is·an·alias·for·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#group_leader/0"><code·class="inline">group_leader/0</code></a>,·so·in1170 I/O·device·of·the·node·that·spawned·the·calling·process.</p><p><code·class="inline">standard_io</code>·is·an·alias·for·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#group_leader/0"><code·class="inline">group_leader/0</code></a>,·so·in
1171 order·to·change·where·the·default·input/output·requests·are·sent·you·can·change1171 order·to·change·where·the·default·input/output·requests·are·sent·you·can·change
1172 the·group·leader·of·the·current·process·using1172 the·group·leader·of·the·current·process·using
1173 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#group_leader/2"><code·class="inline">group_leader(NewGroupLeader,·self())</code></a>.</p>1173 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#group_leader/2"><code·class="inline">group_leader(NewGroupLeader,·self())</code></a>.</p>
1174 ··</section>1174 ··</section>
1175 </section>1175 </section>
1176 <section·class="detail"·id="t:user/0">1176 <section·class="detail"·id="t:user/0">
Offset 1423, 41 lines modifiedOffset 1423, 41 lines modified
1423 parameter·is·ignored.·Leading·whitespace·characters·are·not·skipped.</p></li><li><p><strong><code·class="inline">#</code></strong>·-·An·integer·in·base·2-36·with·Erlang-style·base·prefix·(for1423 parameter·is·ignored.·Leading·whitespace·characters·are·not·skipped.</p></li><li><p><strong><code·class="inline">#</code></strong>·-·An·integer·in·base·2-36·with·Erlang-style·base·prefix·(for
1424 example,·<code·class="inline">&quot;16#ffff&quot;</code>)·is·expected.</p></li><li><p><strong><code·class="inline">f</code></strong>·-·A·floating·point·number·is·expected.·It·must·follow·the·Erlang1424 example,·<code·class="inline">&quot;16#ffff&quot;</code>)·is·expected.</p></li><li><p><strong><code·class="inline">f</code></strong>·-·A·floating·point·number·is·expected.·It·must·follow·the·Erlang
1425 floating·point·number·syntax.</p></li><li><p><strong><code·class="inline">s</code></strong>·-·A·string·of·non-whitespace·characters·is·read.·If·a·field·width1425 floating·point·number·syntax.</p></li><li><p><strong><code·class="inline">s</code></strong>·-·A·string·of·non-whitespace·characters·is·read.·If·a·field·width
1426 has·been·specified,·this·number·of·characters·are·read·and·all·trailing1426 has·been·specified,·this·number·of·characters·are·read·and·all·trailing
1427 whitespace·characters·are·stripped.·An·Erlang·string·(list·of·characters)·is1427 whitespace·characters·are·stripped.·An·Erlang·string·(list·of·characters)·is
1428 returned.</p><p>If·Unicode·translation·is·in·effect·(<code·class="inline">~ts</code>),·characters·&gt;·255·are·accepted,1428 returned.</p><p>If·Unicode·translation·is·in·effect·(<code·class="inline">~ts</code>),·characters·&gt;·255·are·accepted,
1429 otherwise·not.·With·the·translation·modifier,·the·returned·list·can·as·a1429 otherwise·not.·With·the·translation·modifier,·the·returned·list·can·as·a
1430 consequence·also·contain·integers·&gt;·255:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="5496975455-1">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="s">&quot;</span><span·class="p"·data-group-id="5496975455-1">)</span><span·class="p">.</span><span·class="w">1430 consequence·also·contain·integers·&gt;·255:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="5017530612-1">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="s">&quot;</span><span·class="p"·data-group-id="5017530612-1">)</span><span·class="p">.</span><span·class="w">
1431 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Characters</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">1431 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Characters</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">
1432 </span><span·class="p"·data-group-id="5496975455-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="5496975455-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="5496975455-3">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·68efe49d0cafca954887f66d05eb6cb0f36e04b9a02cf63177c24a629bf6fd3e·...·]-2">}</span><span·class="gp·unselectable">1432 </span><span·class="p"·data-group-id="5017530612-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="5017530612-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="5017530612-3">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·747d31251c42c6e30e1e6e0b57a60e82dfd7ca077b5c2f652ce4ad1ed053627d·...·]-2">}</span><span·class="gp·unselectable">
1433 2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="5496975455-4">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;~ts&quot;</span><span·class="p"·data-group-id="5496975455-4">)</span><span·class="p">.</span><span·class="w">1433 2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="5017530612-4">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;~ts&quot;</span><span·class="p"·data-group-id="5017530612-4">)</span><span·class="p">.</span><span·class="w">
1434 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Characters</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">1434 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Characters</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">
1435 </span><span·class="p"·data-group-id="5496975455-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5496975455-6">[</span><span·class="p"·data-group-id="5496975455-7">[</span><span·class="mi">1091</span><span·class="p">,</span><span·class="mi">1085</span[·...·truncated·by·diffoscope;·len:·408,·SHA:·6ccc1eacefd794d9f3ebaa010361752d8b947daad73e05805fd65f86f27564b2·...·]-5">}</span></code></pre></li><li><p><strong><code·class="inline">a</code></strong>·-·Similar·to·<code·class="inline">s</code>,·but·the·resulting·string·is·converted·into·an1435 </span><span·class="p"·data-group-id="5017530612-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5017530612-6">[</span><span·class="p"·data-group-id="5017530612-7">[</span><span·class="mi">1091</span><span·class="p">,</span><span·class="mi">1085</span[·...·truncated·by·diffoscope;·len:·408,·SHA:·c05e36592b0e2fde189b7c741295a79a716de107700b815a798a336499a87d3f·...·]-5">}</span></code></pre></li><li><p><strong><code·class="inline">a</code></strong>·-·Similar·to·<code·class="inline">s</code>,·but·the·resulting·string·is·converted·into·an
1436 atom.</p></li><li><p><strong><code·class="inline">c</code></strong>·-·The·number·of·characters·equal·to·the·field·width·are·read1436 atom.</p></li><li><p><strong><code·class="inline">c</code></strong>·-·The·number·of·characters·equal·to·the·field·width·are·read
1437 (default·is·1)·and·returned·as·an·Erlang·string.·However,·leading·and1437 (default·is·1)·and·returned·as·an·Erlang·string.·However,·leading·and
1438 trailing·whitespace·characters·are·not·omitted·as·they·are·with·<code·class="inline">s</code>.·All1438 trailing·whitespace·characters·are·not·omitted·as·they·are·with·<code·class="inline">s</code>.·All
1439 characters·are·returned.</p><p>The·Unicode·translation·modifier·works·as·with·<code·class="inline">s</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="3722475656-1">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;~c&quot;</span><span·class="p"·data-group-id="3722475656-1">)</span><span·class="p">.</span><span·class="w">1439 characters·are·returned.</p><p>The·Unicode·translation·modifier·works·as·with·<code·class="inline">s</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="7935734243-1">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;~c&quot;</span><span·class="p"·data-group-id="7935734243-1">)</span><span·class="p">.</span><span·class="w">
1440 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Character</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">1440 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Character</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">
1441 </span><span·class="p"·data-group-id="3722475656-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="3722475656-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="3722475656-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·1cc5a4439f321f2fe5fac4922cd50b474246dcbeb2df1f4d2124c6a85887a060·...·]-2">}</span><span·class="gp·unselectable">1441 </span><span·class="p"·data-group-id="7935734243-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="7935734243-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="7935734243-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·7e5bcd0be6495cb06f83aec2f3f5d5911540f62acb34a1da9009040a648288d5·...·]-2">}</span><span·class="gp·unselectable">
1442 2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="3722475656-4">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;~tc&quot;</span><span·class="p"·data-group-id="3722475656-4">)</span><span·class="p">.</span><span·class="w">1442 2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="7935734243-4">(</span><span·class="s">&quot;Prompt&gt;·&quot;</span><span·class="p">,</span><span·class="s">&quot;~tc&quot;</span><span·class="p"·data-group-id="7935734243-4">)</span><span·class="p">.</span><span·class="w">
1443 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Character</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">1443 </span><span·class="n">Prompt</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="n">Character</span><span·class="w">·</span><span·class="ss">beyond</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">·</span><span·class="ss">range</span><span·class="w">·</span><span·class="ow">not</span><span·class="w">·</span><span·class="ss">printable</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">this</span><span·class="w">·</span><span·class="ss">medium</span><span·class="o">&gt;</span><span·class="w">
1444 </span><span·class="p"·data-group-id="3722475656-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3722475656-6">[</span><span·class="p"·data-group-id="3722475656-7">[</span><span·class="mi">1091</span><span·class="p"·data-group-id="3722475656-7">]</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·c9f535d20f6cf862cc4618e133cc2106c35f4480c01d9da9130c8ed3eb9a20cc·...·]-5">}</span></code></pre></li><li><p><strong><code·class="inline">l</code></strong>·-·Returns·the·number·of·characters·that·have·been·scanned·up·to·that1444 </span><span·class="p"·data-group-id="7935734243-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7935734243-6">[</span><span·class="p"·data-group-id="7935734243-7">[</span><span·class="mi">1091</span><span·class="p"·data-group-id="7935734243-7">]</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·0417242ba86482de6c37783ca0263e75cced5d4ba5a1f1ee723b42e1f1804b8c·...·]-5">}</span></code></pre></li><li><p><strong><code·class="inline">l</code></strong>·-·Returns·the·number·of·characters·that·have·been·scanned·up·to·that
1445 point,·including·whitespace·characters.</p></li></ul>The·function·returns:<ul><li><p><strong><code·class="inline">{ok,·Terms}</code></strong>·-·The·read·was·successful·and·<code·class="inline">Terms</code>·is·the·list·of1445 point,·including·whitespace·characters.</p></li></ul>The·function·returns:<ul><li><p><strong><code·class="inline">{ok,·Terms}</code></strong>·-·The·read·was·successful·and·<code·class="inline">Terms</code>·is·the·list·of
1446 successfully·matched·and·read·items.</p></li><li><p><strong><code·class="inline">eof</code></strong>·-·End·of·file·was·encountered.</p></li><li><p><strong><code·class="inline">{error,·FreadError}</code></strong>·-·The·reading·failed·and·<code·class="inline">FreadError</code>·gives·a·hint1446 successfully·matched·and·read·items.</p></li><li><p><strong><code·class="inline">eof</code></strong>·-·End·of·file·was·encountered.</p></li><li><p><strong><code·class="inline">{error,·FreadError}</code></strong>·-·The·reading·failed·and·<code·class="inline">FreadError</code>·gives·a·hint
1447 about·the·error.</p></li><li><p><strong><code·class="inline">{error,·ErrorDescription}</code></strong>·-·The·read·operation·failed·and·parameter1447 about·the·error.</p></li><li><p><strong><code·class="inline">{error,·ErrorDescription}</code></strong>·-·The·read·operation·failed·and·parameter
1448 <code·class="inline">ErrorDescription</code>·gives·a·hint·about·the·error.</p></li></ul></li></ul><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">20&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="6498717945-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~f~f~f&quot;</span><span·class="p"·data-group-id="6498717945-1">)</span><span·class="p">.</span><span·class="w">1448 <code·class="inline">ErrorDescription</code>·gives·a·hint·about·the·error.</p></li></ul></li></ul><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">20&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="2513688091-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~f~f~f&quot;</span><span·class="p"·data-group-id="2513688091-1">)</span><span·class="p">.</span><span·class="w">
1449 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="mf">1.9</span><span·class="w">·</span><span·class="mf">35.5e3</span><span·class="w">·</span><span·class="mf">15.0</span><span·class="w">1449 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="mf">1.9</span><span·class="w">·</span><span·class="mf">35.5e3</span><span·class="w">·</span><span·class="mf">15.0</span><span·class="w">
1450 </span><span·class="p"·data-group-id="6498717945-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6498717945-3">[</span><span·class="mf">1.9</span><span·class="p">,</span><span·class="mf">3.55e4</span><span·class="p">,</span><span·class="mf">15.0</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·c38d4f35d19013c32f19dbc705759613e224766aea79c16fd0fb036f727fa06d·...·]-2">}</span><span·class="gp·unselectable">1450 </span><span·class="p"·data-group-id="2513688091-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2513688091-3">[</span><span·class="mf">1.9</span><span·class="p">,</span><span·class="mf">3.55e4</span><span·class="p">,</span><span·class="mf">15.0</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·f4fe4fc1888a28d959c34229c77030494e741ce706db31e0dceee8f98a4e7f83·...·]-2">}</span><span·class="gp·unselectable">
1451 21&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="6498717945-4">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~10f~d&quot;</span><span·class="p"·data-group-id="6498717945-4">)</span><span·class="p">.</span><span·class="w">1451 21&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="2513688091-4">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;~10f~d&quot;</span><span·class="p"·data-group-id="2513688091-4">)</span><span·class="p">.</span><span·class="w">
1452 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="w">·····</span><span·class="mf">5.67899</span><span·class="w">1452 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="w">·····</span><span·class="mf">5.67899</span><span·class="w">
1453 </span><span·class="p"·data-group-id="6498717945-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6498717945-6">[</span><span·class="mf">5.678</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="6498717945-6">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·4df14ea554c5e026dd6d2b652e78e898d47784b96ae8fdc60d0217df2997f657·...·]-5">}</span><span·class="gp·unselectable">1453 </span><span·class="p"·data-group-id="2513688091-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2513688091-6">[</span><span·class="mf">5.678</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="2513688091-6">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·0e8303dabe109099cc7ea9d5936f54ab2db2c46627b74c144871e5ea27100d17·...·]-5">}</span><span·class="gp·unselectable">
1454 22&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="6498717945-7">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;:</span><span·class="si">~10s</span><span·class="s">:~10c:&quot;</span><span·class="p"·data-group-id="6498717945-7">)</span><span·class="p">.</span><span·class="w">1454 22&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="2513688091-7">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;:</span><span·class="si">~10s</span><span·class="s">:~10c:&quot;</span><span·class="p"·data-group-id="2513688091-7">)</span><span·class="p">.</span><span·class="w">
1455 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="p">:</span><span·class="w">···</span><span·class="ss">alan</span><span·class="w">···</span><span·class="p">:</span><span·class="w">···</span><span·class="ss">joe</span><span·class="w">····</span><span·class="p">:</span><span·class="w">1455 </span><span·class="ss">enter</span><span·class="o">&gt;</span><span·class="p">:</span><span·class="w">···</span><span·class="ss">alan</span><span·class="w">···</span><span·class="p">:</span><span·class="w">···</span><span·class="ss">joe</span><span·class="w">····</span><span·class="p">:</span><span·class="w">
1456 </span><span·class="p"·data-group-id="6498717945-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6498717945-9">[</span><span·class="s">&quot;alan&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·119,·SHA:·23d8150d51f1e63d219655a1525154c83ad9b1d3af09f772bca73b0c0a98b03c·...·]-8">}</span></code></pre>1456 </span><span·class="p"·data-group-id="2513688091-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2513688091-9">[</span><span·class="s">&quot;alan&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·119,·SHA:·8a4a4a315b2d3992ca92e8c5032facc839a9a15d016bccadcd00595daf1a0f02·...·]-8">}</span></code></pre>
1457 ··</section>1457 ··</section>
1458 </section>1458 </section>
1459 <section·class="detail"·id="fwrite/1">1459 <section·class="detail"·id="fwrite/1">
  
1460 ··<div·class="detail-header">1460 ··<div·class="detail-header">
1461 ····<a·href="#fwrite/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1461 ····<a·href="#fwrite/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1462 ······<i·class="ri-link-m"·aria-hidden="true"></i>1462 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1532, 15 lines modifiedOffset 1532, 15 lines modified
  
1532 ······</div>1532 ······</div>
  
1533 <p>Writes·the·items·in·<code·class="inline">Data</code>·on·the·<a·href="#t:device/0"><code·class="inline">IoDevice</code></a>·in·accordance·with·<code·class="inline">Format</code>.</p><p><code·class="inline">Format</code>·contains·plain·characters·that·are·copied·to1533 <p>Writes·the·items·in·<code·class="inline">Data</code>·on·the·<a·href="#t:device/0"><code·class="inline">IoDevice</code></a>·in·accordance·with·<code·class="inline">Format</code>.</p><p><code·class="inline">Format</code>·contains·plain·characters·that·are·copied·to
1534 the·output·device,·and·control·sequences·for·formatting,·see·below.·If·<code·class="inline">Format</code>1534 the·output·device,·and·control·sequences·for·formatting,·see·below.·If·<code·class="inline">Format</code>
1535 is·an·atom·or·a·binary,·it·is·first·converted·to·a·list·with·the·aid·of1535 is·an·atom·or·a·binary,·it·is·first·converted·to·a·list·with·the·aid·of
1536 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#atom_to_list/1"><code·class="inline">atom_to_list/1</code></a>·or1536 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#atom_to_list/1"><code·class="inline">atom_to_list/1</code></a>·or
1537 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list/1</code></a>.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3737784508-1">(</span><span·class="s">&quot;Hello·world!</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3737784508-2">[</span><span·class="p"·data-group-id="373778[·...·truncated·by·diffoscope;·len:·57,·SHA:·0ad1f30064c78b54a83158f18eb90cb44850b71b5586281cd44992a98a028888·...·]-1">)</span><span·class="p">.</span><span·class="w">1537 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#binary_to_list/1"><code·class="inline">binary_to_list/1</code></a>.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="0587940703-1">(</span><span·class="s">&quot;Hello·world!</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0587940703-2">[</span><span·class="p"·data-group-id="058794[·...·truncated·by·diffoscope;·len:·57,·SHA:·0194d29faf3ea34141bf7bd8589815df8285fcaf0965b110b22360325dca3490·...·]-1">)</span><span·class="p">.</span><span·class="w">
1538 </span><span·class="n">Hello</span><span·class="w">·</span><span·class="ss">world</span><span·class="o">!</span><span·class="w">1538 </span><span·class="n">Hello</span><span·class="w">·</span><span·class="ss">world</span><span·class="o">!</span><span·class="w">
1539 </span><span·class="ss">ok</span></code></pre><p>The·general·format·of·a·control·sequence·is·<code·class="inline">~F.P.PadModC</code>.</p><p>The·character·<code·class="inline">C</code>·determines·the·type·of·control·sequence·to·be·used.·It·is·the1539 </span><span·class="ss">ok</span></code></pre><p>The·general·format·of·a·control·sequence·is·<code·class="inline">~F.P.PadModC</code>.</p><p>The·character·<code·class="inline">C</code>·determines·the·type·of·control·sequence·to·be·used.·It·is·the
1540 only·required·field.·All·of·<code·class="inline">F</code>,·<code·class="inline">P</code>,·<code·class="inline">Pad</code>,·and·<code·class="inline">Mod</code>·are·optional.·For1540 only·required·field.·All·of·<code·class="inline">F</code>,·<code·class="inline">P</code>,·<code·class="inline">Pad</code>,·and·<code·class="inline">Mod</code>·are·optional.·For
1541 example,·to·use·a·<code·class="inline">#</code>·for·<code·class="inline">Pad</code>·but·use·the·default·values·for·<code·class="inline">F</code>·and·<code·class="inline">P</code>,·you1541 example,·to·use·a·<code·class="inline">#</code>·for·<code·class="inline">Pad</code>·but·use·the·default·values·for·<code·class="inline">F</code>·and·<code·class="inline">P</code>,·you
1542 can·write·<code·class="inline">~..#C</code>.</p><ul><li><p><code·class="inline">F</code>·is·the·<code·class="inline">field·width</code>·of·the·printed·argument.·A·negative·value·means·that1542 can·write·<code·class="inline">~..#C</code>.</p><ul><li><p><code·class="inline">F</code>·is·the·<code·class="inline">field·width</code>·of·the·printed·argument.·A·negative·value·means·that
1543 the·argument·is·left-justified·within·the·field,·otherwise·right-justified.·If1543 the·argument·is·left-justified·within·the·field,·otherwise·right-justified.·If
1544 no·field·width·is·specified,·the·required·print·width·is·used.·If·the·field1544 no·field·width·is·specified,·the·required·print·width·is·used.·If·the·field
Offset 1550, 33 lines modifiedOffset 1550, 33 lines modified
1550 print·width.</p></li><li><p><code·class="inline">Pad</code>·is·the·padding·character.·This·is·the·character·used·to·pad·the·printed1550 print·width.</p></li><li><p><code·class="inline">Pad</code>·is·the·padding·character.·This·is·the·character·used·to·pad·the·printed
1551 representation·of·the·argument·so·that·it·conforms·to·the·specified·field1551 representation·of·the·argument·so·that·it·conforms·to·the·specified·field
1552 width·and·precision.·Only·one·padding·character·can·be·specified·and,·whenever1552 width·and·precision.·Only·one·padding·character·can·be·specified·and,·whenever
1553 applicable,·it·is·used·for·both·the·field·width·and·precision.·The·default1553 applicable,·it·is·used·for·both·the·field·width·and·precision.·The·default
1554 padding·character·is·<code·class="inline">'·'</code>·(space).</p></li><li><p><code·class="inline">Mod</code>·is·the·control·sequence·modifier.·This·is·one·or·more·characters·that1554 padding·character·is·<code·class="inline">'·'</code>·(space).</p></li><li><p><code·class="inline">Mod</code>·is·the·control·sequence·modifier.·This·is·one·or·more·characters·that
1555 change·the·interpretation·of·<code·class="inline">Data</code>.</p><p>The·current·modifiers·are:</p><ul><li><p><strong><code·class="inline">t</code></strong>·-·For·Unicode·translation.</p></li><li><p><strong><code·class="inline">l</code></strong>·-·For·stopping·<code·class="inline">p</code>·and·<code·class="inline">P</code>·from·detecting·printable·characters.</p></li><li><p><strong><code·class="inline">k</code></strong>·-·For·use·with·<code·class="inline">p</code>,·<code·class="inline">P</code>,·<code·class="inline">w</code>,·and·<code·class="inline">W</code>·to·format·maps·in·map-key1555 change·the·interpretation·of·<code·class="inline">Data</code>.</p><p>The·current·modifiers·are:</p><ul><li><p><strong><code·class="inline">t</code></strong>·-·For·Unicode·translation.</p></li><li><p><strong><code·class="inline">l</code></strong>·-·For·stopping·<code·class="inline">p</code>·and·<code·class="inline">P</code>·from·detecting·printable·characters.</p></li><li><p><strong><code·class="inline">k</code></strong>·-·For·use·with·<code·class="inline">p</code>,·<code·class="inline">P</code>,·<code·class="inline">w</code>,·and·<code·class="inline">W</code>·to·format·maps·in·map-key
1556 <code·class="inline">ordered</code>·order·(see·<a·href="maps.html#t:iterator_order/0"><code·class="inline">maps:iterator_order/0</code></a>).</p></li><li><p><strong><code·class="inline">K</code></strong>·-·Similar·to·<code·class="inline">k</code>,·for·formatting·maps·in·map-key·order,·but·takes·an1556 <code·class="inline">ordered</code>·order·(see·<a·href="maps.html#t:iterator_order/0"><code·class="inline">maps:iterator_order/0</code></a>).</p></li><li><p><strong><code·class="inline">K</code></strong>·-·Similar·to·<code·class="inline">k</code>,·for·formatting·maps·in·map-key·order,·but·takes·an
1557 extra·argument·that·specifies·the·<a·href="maps.html#t:iterator_order/0"><code·class="inline">maps:iterator_order/0</code></a>.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5312293696-1">#{</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·clas[·...·truncated·by·diffoscope;·len:·156,·SHA:·fa0d1eed51eeacf5296b282d2f897384239746b4e96415f62e144367792a1c39·...·]-1">}</span><span·class="p">.</span><span·class="w">1557 extra·argument·that·specifies·the·<a·href="maps.html#t:iterator_order/0"><code·class="inline">maps:iterator_order/0</code></a>.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4567508912-1">#{</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·clas[·...·truncated·by·diffoscope;·len:·156,·SHA:·3255bc6f632ab38bc25e34614f49c468691d6f38a23fc58a32fbccf58cfcb652·...·]-1">}</span><span·class="p">.</span><span·class="w">
1558 </span><span·class="p"·data-group-id="5312293696-2">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·20a109b7ff3556873393d0efb377870b4ae977fe0cc46247f776b1d0585f3afd·...·]-2">}</span><span·class="gp·unselectable">1558 </span><span·class="p"·data-group-id="4567508912-2">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·43c19e8e64c3578dd6d0f67b74d1ee5552a9145c7eb1f8b52e70c22200bcd114·...·]-2">}</span><span·class="gp·unselectable">
1559 &gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5312293696-3">(</span><span·class="s">&quot;~Kp</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5312293696-4">[</span><span·class="ss">reversed</span><span·class="p[·...·truncated·by·diffoscope;·len:·152,·SHA:·dcebf18e68c68b3c1577f239f5f6107a33f13f7209f3d0a833034d724f9d89f7·...·]-3">)</span><span·class="p">.</span><span·class="w">1559 &gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4567508912-3">(</span><span·class="s">&quot;~Kp</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4567508912-4">[</span><span·class="ss">reversed</span><span·class="p[·...·truncated·by·diffoscope;·len:·152,·SHA:·98c6f93ecc54173ab698122ee13ef27b9389bacd45bb5ab479b117af350cce55·...·]-3">)</span><span·class="p">.</span><span·class="w">
1560 </span><span·class="p"·data-group-id="5312293696-5">#{</span><span·class="ss">b</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·490ff9c11460292b13e9380106c4060d99e64a31dd000bd6daef0649e931e5a6·...·]-5">}</span><span·class="w">1560 </span><span·class="p"·data-group-id="4567508912-5">#{</span><span·class="ss">b</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·4ced0c6ce197f3313f80bcf096ebec142fa2f26acf42f8790564e3b328b5dedd·...·]-5">}</span><span·class="w">
1561 </span><span·class="ss">ok</span></code></pre></li></ul></li></ul><p>If·<code·class="inline">F</code>,·<code·class="inline">P</code>,·or·<code·class="inline">Pad</code>·is·a·<code·class="inline">*</code>·character,·the·next·argument·in·<code·class="inline">Data</code>·is·used·as1561 </span><span·class="ss">ok</span></code></pre></li></ul></li></ul><p>If·<code·class="inline">F</code>,·<code·class="inline">P</code>,·or·<code·class="inline">Pad</code>·is·a·<code·class="inline">*</code>·character,·the·next·argument·in·<code·class="inline">Data</code>·is·used·as
1562 the·value.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="9554902649-1">(</span><span·class="s">&quot;~*.*.0f</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9554902649-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·208,·SHA:·927fbd3c1284216dfadda18b1ccf41d7bd6041e53b46f3d5576d0c5d7988e8a5·...·]-1">)</span><span·class="p">.</span><span·class="w">1562 the·value.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="5059907052-1">(</span><span·class="s">&quot;~*.*.0f</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5059907052-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·208,·SHA:·f9306e31e23ad31df0e05a03a0e9e04aa09ec6420f9d1fd5add8fac2f9e21684·...·]-1">)</span><span·class="p">.</span><span·class="w">
1563 </span><span·class="mf">003.14159</span><span·class="w">1563 </span><span·class="mf">003.14159</span><span·class="w">
1564 </span><span·class="ss">ok</span></code></pre><p>To·use·a·literal·<code·class="inline">*</code>·character·as·<code·class="inline">Pad</code>,·it·must·be·passed·as·an·argument:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="8242341785-1">(</span><span·class="s">&quot;~*.*.*f</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8242341785-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·281,·SHA:·94aefdd98d40ccbe0765903f9af8d921022e27ab513f8d214ffd11443b412308·...·]-1">)</span><span·class="p">.</span><span·class="w">1564 </span><span·class="ss">ok</span></code></pre><p>To·use·a·literal·<code·class="inline">*</code>·character·as·<code·class="inline">Pad</code>,·it·must·be·passed·as·an·argument:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="8132684298-1">(</span><span·class="s">&quot;~*.*.*f</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8132684298-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·281,·SHA:·f063c287ce310744a0839717c1ce8a374b02219c1f152c462c0876602988c30c·...·]-1">)</span><span·class="p">.</span><span·class="w">
1565 </span><span·class="o">*</span><span·class="o">*</span><span·class="mf">3.14159</span><span·class="w">1565 </span><span·class="o">*</span><span·class="o">*</span><span·class="mf">3.14159</span><span·class="w">
1566 </span><span·class="ss">ok</span></code></pre><p><em>Available·control·sequences:</em></p><ul><li><p><strong><code·class="inline">~</code></strong>·-·Character·<code·class="inline">~</code>·is·written.</p></li><li><p><strong><code·class="inline">c</code></strong>·-·The·argument·is·a·number·that·is·interpreted·as·an·ASCII·code.·The1566 </span><span·class="ss">ok</span></code></pre><p><em>Available·control·sequences:</em></p><ul><li><p><strong><code·class="inline">~</code></strong>·-·Character·<code·class="inline">~</code>·is·written.</p></li><li><p><strong><code·class="inline">c</code></strong>·-·The·argument·is·a·number·that·is·interpreted·as·an·ASCII·code.·The
1567 precision·is·the·number·of·times·the·character·is·printed·and·defaults·to·the1567 precision·is·the·number·of·times·the·character·is·printed·and·defaults·to·the
1568 field·width,·which·in·turn·defaults·to·1.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="1164829337-1">(</span><span·class="s">&quot;|~10.5c|</span><span·class="si">~-</span><span·class="s">10.5c|~5c|</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="11648[·...·truncated·by·diffoscope;·len:·285,·SHA:·afc29cbb509f9f50de6a47cb09e37df827ccbe2913d04bc9d201d02a90eba831·...·]-1">)</span><span·class="p">.</span><span·class="w">1568 field·width,·which·in·turn·defaults·to·1.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="1833073046-1">(</span><span·class="s">&quot;|~10.5c|</span><span·class="si">~-</span><span·class="s">10.5c|~5c|</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="18330[·...·truncated·by·diffoscope;·len:·285,·SHA:·95caa7d51d1c0b9ad07025d67e03bb19b378d6dd04167828e2e87cf22bc1a50d·...·]-1">)</span><span·class="p">.</span><span·class="w">
1569 </span><span·class="p">|</span><span·class="w">·····</span><span·class="ss">aaaaa</span><span·class="p">|</span><span·class="ss">bbbbb</span><span·class="w">·····</span><span·class="p">|</span><span·class="ss">ccccc</span><span·class="p">|</span><span·class="w">1569 </span><span·class="p">|</span><span·class="w">·····</span><span·class="ss">aaaaa</span><span·class="p">|</span><span·class="ss">bbbbb</span><span·class="w">·····</span><span·class="p">|</span><span·class="ss">ccccc</span><span·class="p">|</span><span·class="w">
1570 </span><span·class="ss">ok</span></code></pre><p>If·the·Unicode·translation·modifier·(<code·class="inline">t</code>)·is·in·effect,·the·integer·argument1570 </span><span·class="ss">ok</span></code></pre><p>If·the·Unicode·translation·modifier·(<code·class="inline">t</code>)·is·in·effect,·the·integer·argument
1571 can·be·any·number·representing·a·valid·Unicode·codepoint,·otherwise·it·is·to1571 can·be·any·number·representing·a·valid·Unicode·codepoint,·otherwise·it·is·to
1572 be·an·integer·less·than·or·equal·to·255,·otherwise·it·is·masked·with·16#FF:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="2589915511-1">(</span><span·class="s">&quot;~tc</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2589915511-2">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2589915511-[·...·truncated·by·diffoscope;·len:·52,·SHA:·828f858aaf03d4cbd5580bbabb5c4a18d8992cdc208cde485e3446b17d9b4d26·...·]-1">)</span><span·class="p">.</span><span·class="w">1572 be·an·integer·less·than·or·equal·to·255,·otherwise·it·is·masked·with·16#FF:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="9830722930-1">(</span><span·class="s">&quot;~tc</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9830722930-2">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="9830722930-[·...·truncated·by·diffoscope;·len:·52,·SHA:·23eb6758e2c2555780f699d33fb9276a0d8b58bbf0de31f40a5d46f87dfdea8a·...·]-1">)</span><span·class="p">.</span><span·class="w">
1573 </span><span·class="err">\</span><span·class="ss">x</span><span·class="p"·data-group-id="2589915511-3">{</span><span·class="mi">400</span><span·class="p"·data-group-id="2589915511-3">}</span><span·class="w">1573 </span><span·class="err">\</span><span·class="ss">x</span><span·class="p"·data-group-id="9830722930-3">{</span><span·class="mi">400</span><span·class="p"·data-group-id="9830722930-3">}</span><span·class="w">
1574 </span><span·class="ss">ok</span><span·class="gp·unselectable">1574 </span><span·class="ss">ok</span><span·class="gp·unselectable">
1575 3&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="2589915511-4">(</span><span·class="s">&quot;~c</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2589915511-5">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2589915511-5[·...·truncated·by·diffoscope;·len:·51,·SHA:·868545689fe38160d67176ce188c6a36b121fcf780e3062e4ba8aa9f59b61a2d·...·]-4">)</span><span·class="p">.</span><span·class="w">1575 3&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="9830722930-4">(</span><span·class="s">&quot;~c</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9830722930-5">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="9830722930-5[·...·truncated·by·diffoscope;·len:·51,·SHA:·6dec476367759c58fbe6cdb32d0ef16a49be98db371d51b2ac3bcb3d25c21a38·...·]-4">)</span><span·class="p">.</span><span·class="w">
1576 </span><span·class="err">^</span><span·class="p">@</span><span·class="w">1576 </span><span·class="err">^</span><span·class="p">@</span><span·class="w">
1577 </span><span·class="ss">ok</span></code></pre></li><li><p><strong><code·class="inline">f</code></strong>·-·The·argument·is·a·float·that·is·written·as·<code·class="inline">[-]ddd.ddd</code>,·where·the1577 </span><span·class="ss">ok</span></code></pre></li><li><p><strong><code·class="inline">f</code></strong>·-·The·argument·is·a·float·that·is·written·as·<code·class="inline">[-]ddd.ddd</code>,·where·the
1578 precision·is·the·number·of·digits·after·the·decimal·point.·The·default1578 precision·is·the·number·of·digits·after·the·decimal·point.·The·default
1579 precision·is·6·and·it·cannot·be·&lt;·1.</p></li><li><p><strong><code·class="inline">e</code></strong>·-·The·argument·is·a·float·that·is·written·as·<code·class="inline">[-]d.ddde+-ddd</code>,·where1579 precision·is·6·and·it·cannot·be·&lt;·1.</p></li><li><p><strong><code·class="inline">e</code></strong>·-·The·argument·is·a·float·that·is·written·as·<code·class="inline">[-]d.ddde+-ddd</code>,·where
1580 the·precision·is·the·number·of·digits·written.·The·default·precision·is·6·and1580 the·precision·is·the·number·of·digits·written.·The·default·precision·is·6·and
1581 it·cannot·be·&lt;·2.</p></li><li><p><strong><code·class="inline">g</code></strong>·-·The·argument·is·a·float·that·is·written·as·<code·class="inline">f</code>,·if·it·is·&gt;=·0.1·and1581 it·cannot·be·&lt;·2.</p></li><li><p><strong><code·class="inline">g</code></strong>·-·The·argument·is·a·float·that·is·written·as·<code·class="inline">f</code>,·if·it·is·&gt;=·0.1·and
Max diff block lines reached; 150046/193929 bytes (77.37%) of diff not shown.
13.3 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/io_lib.html
    
Offset 998, 16 lines modifiedOffset 998, 16 lines modified
998 <p>Tries·to·read·<code·class="inline">String</code>·in·accordance·with·the·control·sequences·in·<code·class="inline">Format</code>.</p><p>For·a·detailed·description·of·the·available·formatting·options,·see·<a·href="io.html#fread/3"><code·class="inline">io:fread/3</code></a>.998 <p>Tries·to·read·<code·class="inline">String</code>·in·accordance·with·the·control·sequences·in·<code·class="inline">Format</code>.</p><p>For·a·detailed·description·of·the·available·formatting·options,·see·<a·href="io.html#fread/3"><code·class="inline">io:fread/3</code></a>.
999 It·is·assumed·that·<code·class="inline">String</code>·contains·whole·lines.</p><p>The·function·returns:</p><ul><li><p><strong><code·class="inline">{ok,·InputList,·LeftOverChars}</code></strong>·-·The·string·was·read.·<code·class="inline">InputList</code>·is·the999 It·is·assumed·that·<code·class="inline">String</code>·contains·whole·lines.</p><p>The·function·returns:</p><ul><li><p><strong><code·class="inline">{ok,·InputList,·LeftOverChars}</code></strong>·-·The·string·was·read.·<code·class="inline">InputList</code>·is·the
1000 list·of·successfully·matched·and·read·items,·and·<code·class="inline">LeftOverChars</code>·are·the·input1000 list·of·successfully·matched·and·read·items,·and·<code·class="inline">LeftOverChars</code>·are·the·input
1001 characters·not·used.</p></li><li><p><strong><code·class="inline">{more,·RestFormat,·Nchars,·InputStack}</code></strong>·-·The·string·was·read,·but·more1001 characters·not·used.</p></li><li><p><strong><code·class="inline">{more,·RestFormat,·Nchars,·InputStack}</code></strong>·-·The·string·was·read,·but·more
1002 input·is·needed·to·complete·the·original·format·string.·<code·class="inline">RestFormat</code>·is·the1002 input·is·needed·to·complete·the·original·format·string.·<code·class="inline">RestFormat</code>·is·the
1003 remaining·format·string,·<code·class="inline">Nchars</code>·is·the·number·of·characters·scanned,·and1003 remaining·format·string,·<code·class="inline">Nchars</code>·is·the·number·of·characters·scanned,·and
1004 <code·class="inline">InputStack</code>·is·the·reversed·list·of·inputs·matched·up·to·that·point.</p></li><li><p><strong><code·class="inline">{error,·What}</code></strong>·-·The·read·operation·failed·and·parameter·<code·class="inline">What</code>·gives·a1004 <code·class="inline">InputStack</code>·is·the·reversed·list·of·inputs·matched·up·to·that·point.</p></li><li><p><strong><code·class="inline">{error,·What}</code></strong>·-·The·read·operation·failed·and·parameter·<code·class="inline">What</code>·gives·a
1005 hint·about·the·error.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="8776276943-1">(</span><span·class="s">&quot;~f~f~f&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;15.6·17.3e-6·24.5&quot;</span><span·class="p"·data-group-id="8776276943-1">)</span><span·class="p">.</span><span·class="w">1005 hint·about·the·error.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="7108141839-1">(</span><span·class="s">&quot;~f~f~f&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;15.6·17.3e-6·24.5&quot;</span><span·class="p"·data-group-id="7108141839-1">)</span><span·class="p">.</span><span·class="w">
1006 </span><span·class="p"·data-group-id="8776276943-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8776276943-3">[</span><span·class="mf">15.6</span><span·class="p">,</span><span·class="mf">1.73e-5</span><span·class="p">,</span><span·class="mf">24.5</s[·...·truncated·by·diffoscope;·len:·228,·SHA:·1101c229239c1a6071409fac506ee692ca1f2a5ce25ed065ff425134f6c67e2f·...·]-2">}</span></code></pre>1006 </span><span·class="p"·data-group-id="7108141839-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7108141839-3">[</span><span·class="mf">15.6</span><span·class="p">,</span><span·class="mf">1.73e-5</span><span·class="p">,</span><span·class="mf">24.5</s[·...·truncated·by·diffoscope;·len:·228,·SHA:·5cf0663b80f94bb7d844216a61c2184bbbeda1ce8a545f655b2830e655d0dbaf·...·]-2">}</span></code></pre>
1007 ··</section>1007 ··</section>
1008 </section>1008 </section>
1009 <section·class="detail"·id="fread/3">1009 <section·class="detail"·id="fread/3">
  
1010 ··<div·class="detail-header">1010 ··<div·class="detail-header">
1011 ····<a·href="#fread/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1011 ····<a·href="#fread/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1012 ······<i·class="ri-link-m"·aria-hidden="true"></i>1012 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1474, 19 lines modifiedOffset 1474, 19 lines modified
1474 ······</div>1474 ······</div>
  
1475 <p>Returns·a·character·list·that·represents·<code·class="inline">Term</code>.·Option·<code·class="inline">Depth</code>·controls·the1475 <p>Returns·a·character·list·that·represents·<code·class="inline">Term</code>.·Option·<code·class="inline">Depth</code>·controls·the
1476 depth·of·the·structures·written.</p><p>When·the·specified·depth·is·reached,·everything·below·this·level·is·replaced·by1476 depth·of·the·structures·written.</p><p>When·the·specified·depth·is·reached,·everything·below·this·level·is·replaced·by
1477 &quot;<code·class="inline">...</code>&quot;.</p><p><code·class="inline">Depth</code>·defaults·to·-1,·which·means·no·limitation.·Option·<code·class="inline">CharsLimit</code>·puts·a1477 &quot;<code·class="inline">...</code>&quot;.</p><p><code·class="inline">Depth</code>·defaults·to·-1,·which·means·no·limitation.·Option·<code·class="inline">CharsLimit</code>·puts·a
1478 soft·limit·on·the·number·of·characters·returned.·When·the·number·of·characters·is1478 soft·limit·on·the·number·of·characters·returned.·When·the·number·of·characters·is
1479 reached,·remaining·structures·are·replaced·by·&quot;<code·class="inline">...</code>&quot;.·<code·class="inline">CharsLimit</code>·defaults·to·-1,1479 reached,·remaining·structures·are·replaced·by·&quot;<code·class="inline">...</code>&quot;.·<code·class="inline">CharsLimit</code>·defaults·to·-1,
1480 which·means·no·limit·on·the·number·of·characters·returned.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="7769587338-1">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7769587338-2">(</span><span·class="p"·data-group-id="7769587338-3">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·837,·SHA:·fae998089e101dadca79826fe88fbf9a5d998e7dd292de2bd2ab80aa2532e2ea·...·]-1">)</span><span·class="p">.</span><span·class="w">1480 which·means·no·limit·on·the·number·of·characters·returned.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="2375285890-1">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="2375285890-2">(</span><span·class="p"·data-group-id="2375285890-3">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·837,·SHA:·b11d1c2775b12244802dcbbc8e9cbfedcc66dc4df34cbff8132b2129141cd29a·...·]-1">)</span><span·class="p">.</span><span·class="w">
1481 </span><span·class="s">&quot;{1,[2],[3],[4,5],6,7,8,9}&quot;</span><span·class="gp·unselectable">1481 </span><span·class="s">&quot;{1,[2],[3],[4,5],6,7,8,9}&quot;</span><span·class="gp·unselectable">
1482 2&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="7769587338-7">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7769587338-8">(</span><span·class="p"·data-group-id="7769587338-9">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·916,·SHA:·5f9849901beaf37171e6801df112baafd2d5131bd0c31cfbd58729871e391497·...·]-7">)</span><span·class="p">.</span><span·class="w">1482 2&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="2375285890-7">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="2375285890-8">(</span><span·class="p"·data-group-id="2375285890-9">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·916,·SHA:·4fb52741bfbda610f1a0b27d09a5e428f2e75a23010fb020f0edce6778428163·...·]-7">)</span><span·class="p">.</span><span·class="w">
1483 </span><span·class="s">&quot;{1,[2],[3],[...],...}&quot;</span><span·class="gp·unselectable">1483 </span><span·class="s">&quot;{1,[2],[3],[...],...}&quot;</span><span·class="gp·unselectable">
1484 3&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="7769587338-13">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7769587338-14">(</span><span·class="p"·data-group-id="7769587338-15">{</span><span·class="p"·data-group-id="7769587338-[·...·truncated·by·diffoscope;·len:·1089,·SHA:·473c1b06d60da59538313f4ba6fa6f386e2849c4fcb083aab1bea57b42e17e4d·...·]-13">)</span><span·class="p">.</span><span·class="w">1484 3&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="2375285890-13">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="2375285890-14">(</span><span·class="p"·data-group-id="2375285890-15">{</span><span·class="p"·data-group-id="2375285890-[·...·truncated·by·diffoscope;·len:·1089,·SHA:·63f40eaec39222dc88c87cffc6e48a5d0244f11d5aef73871e04afebe4a348fc·...·]-13">)</span><span·class="p">.</span><span·class="w">
1485 </span><span·class="s">&quot;{[1,2|...],[4|...],...}&quot;</span></code></pre>1485 </span><span·class="s">&quot;{[1,2|...],[4|...],...}&quot;</span></code></pre>
1486 ··</section>1486 ··</section>
1487 </section>1487 </section>
1488 <section·class="detail"·id="write_atom/1">1488 <section·class="detail"·id="write_atom/1">
  
1489 ··<div·class="detail-header">1489 ··<div·class="detail-header">
1490 ····<a·href="#write_atom/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1490 ····<a·href="#write_atom/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
185 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/io_protocol.html
    
Offset 142, 16 lines modifiedOffset 142, 16 lines modified
142 I/O·server·communicates·with.</p><h2·id="protocol-basics"·class="section-heading">142 I/O·server·communicates·with.</p><h2·id="protocol-basics"·class="section-heading">
143 ··<a·href="#protocol-basics"·class="hover-link">143 ··<a·href="#protocol-basics"·class="hover-link">
144 ····<i·class="ri-link-m"·aria-hidden="true"></i>144 ····<i·class="ri-link-m"·aria-hidden="true"></i>
145 ··</a>145 ··</a>
146 ··<span·class="text">Protocol·Basics</span>146 ··<span·class="text">Protocol·Basics</span>
147 </h2>147 </h2>
148 <p>As·described·in·Robert's·paper,·I/O·servers·and·clients·communicate·using148 <p>As·described·in·Robert's·paper,·I/O·servers·and·clients·communicate·using
149 <code·class="inline">io_request</code>/<code·class="inline">io_reply</code>·tuples·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9821347750-1">{</span><span·class="ss">io_request</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReplyAs</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·72,·SHA:·a9d347fff573252cc42ec3aa3cd5a7f7b2264e590bdec37924421a16dddebc4c·...·]-1">}</span><span·class="w">149 <code·class="inline">io_request</code>/<code·class="inline">io_reply</code>·tuples·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8374573092-1">{</span><span·class="ss">io_request</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReplyAs</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·72,·SHA:·4672a8fe57400be98701a677208a3a8a2e770910e3d7cfce4b2f5123568d7dea·...·]-1">}</span><span·class="w">
150 </span><span·class="p"·data-group-id="9821347750-2">{</span><span·class="ss">io_reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReplyAs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p"·data-group-id="9821347750-2">}</span></code></pre><p>The·client·sends·an·<code·class="inline">io_request</code>·tuple·to·the·I/O·server·and·the·server150 </span><span·class="p"·data-group-id="8374573092-2">{</span><span·class="ss">io_reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReplyAs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reply</span><span·class="p"·data-group-id="8374573092-2">}</span></code></pre><p>The·client·sends·an·<code·class="inline">io_request</code>·tuple·to·the·I/O·server·and·the·server
151 eventually·sends·a·corresponding·<code·class="inline">io_reply</code>·tuple.</p><ul><li><p><code·class="inline">From</code>·is·the·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a>·of·the·client,·the·process·which·the·I/O·server·sends151 eventually·sends·a·corresponding·<code·class="inline">io_reply</code>·tuple.</p><ul><li><p><code·class="inline">From</code>·is·the·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a>·of·the·client,·the·process·which·the·I/O·server·sends
152 the·I/O·reply·to.</p></li><li><p><code·class="inline">ReplyAs</code>·can·be·any·datum·and·is·returned·in·the·corresponding·<code·class="inline">io_reply</code>.152 the·I/O·reply·to.</p></li><li><p><code·class="inline">ReplyAs</code>·can·be·any·datum·and·is·returned·in·the·corresponding·<code·class="inline">io_reply</code>.
153 The·<a·href="io.html"><code·class="inline">io</code></a>·module·monitors·the·I/O·server·and·uses·the·monitor·reference·as153 The·<a·href="io.html"><code·class="inline">io</code></a>·module·monitors·the·I/O·server·and·uses·the·monitor·reference·as
154 the·<code·class="inline">ReplyAs</code>·datum.·A·more·complicated·client·can·have·many·outstanding·I/O154 the·<code·class="inline">ReplyAs</code>·datum.·A·more·complicated·client·can·have·many·outstanding·I/O
155 requests·to·the·same·I/O·server·and·can·use·different·references·(or·something155 requests·to·the·same·I/O·server·and·can·use·different·references·(or·something
156 else)·to·differentiate·among·the·incoming·I/O·replies.·Element·<code·class="inline">ReplyAs</code>·is·to156 else)·to·differentiate·among·the·incoming·I/O·replies.·Element·<code·class="inline">ReplyAs</code>·is·to
157 be·considered·opaque·by·the·I/O·server.</p><p>Notice·that·the·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a>·of·the·I/O·server·is·not·explicitly·present·in·tuple157 be·considered·opaque·by·the·I/O·server.</p><p>Notice·that·the·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a>·of·the·I/O·server·is·not·explicitly·present·in·tuple
Offset 160, 16 lines modifiedOffset 160, 16 lines modified
160 part·and·eventually·sends·an·<code·class="inline">io_reply</code>·tuple·with·the·corresponding·<code·class="inline">Reply</code>160 part·and·eventually·sends·an·<code·class="inline">io_reply</code>·tuple·with·the·corresponding·<code·class="inline">Reply</code>
161 part.</p><h2·id="output-requests"·class="section-heading">161 part.</p><h2·id="output-requests"·class="section-heading">
162 ··<a·href="#output-requests"·class="hover-link">162 ··<a·href="#output-requests"·class="hover-link">
163 ····<i·class="ri-link-m"·aria-hidden="true"></i>163 ····<i·class="ri-link-m"·aria-hidden="true"></i>
164 ··</a>164 ··</a>
165 ··<span·class="text">Output·Requests</span>165 ··<span·class="text">Output·Requests</span>
166 </h2>166 </h2>
167 <p>To·output·characters·on·an·I/O·device,·the·following·<code·class="inline">Request</code>s·exist:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5995265116-1">{</span><span·class="ss">put_chars</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Characters</span><span·class="p"·data-group-id="5995265116-1">}</span><span·class="w">167 <p>To·output·characters·on·an·I/O·device,·the·following·<code·class="inline">Request</code>s·exist:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1157336067-1">{</span><span·class="ss">put_chars</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Characters</span><span·class="p"·data-group-id="1157336067-1">}</span><span·class="w">
168 </span><span·class="p"·data-group-id="5995265116-2">{</span><span·class="ss">put_chars</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·150,·SHA:·af35c233ab01c2389ea1c040e68a3bcfe22da44da2d7c7104756f112610dc278·...·]-2">}</span></code></pre><ul><li><p><code·class="inline">Encoding</code>·is·<code·class="inline">unicode</code>·or·<code·class="inline">latin1</code>,·meaning·that·the·characters·are·(in·case168 </span><span·class="p"·data-group-id="1157336067-2">{</span><span·class="ss">put_chars</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·150,·SHA:·1e261e5f9fa5bacb56e9219796e14cc6c7e4ba5c8e35a6b810265f04cdf08258·...·]-2">}</span></code></pre><ul><li><p><code·class="inline">Encoding</code>·is·<code·class="inline">unicode</code>·or·<code·class="inline">latin1</code>,·meaning·that·the·characters·are·(in·case
169 of·binaries)·encoded·as·UTF-8·or·ISO·Latin-1·(pure·bytes).·A·well-behaved·I/O169 of·binaries)·encoded·as·UTF-8·or·ISO·Latin-1·(pure·bytes).·A·well-behaved·I/O
170 server·is·also·to·return·an·error·indication·if·list·elements·contain170 server·is·also·to·return·an·error·indication·if·list·elements·contain
171 integers·&gt;·255·when·<code·class="inline">Encoding</code>·is·set·to·<code·class="inline">latin1</code>.</p><p>Notice·that·this·does·not·in·any·way·tell·how·characters·are·to·be·put·on·the171 integers·&gt;·255·when·<code·class="inline">Encoding</code>·is·set·to·<code·class="inline">latin1</code>.</p><p>Notice·that·this·does·not·in·any·way·tell·how·characters·are·to·be·put·on·the
172 I/O·device·or·handled·by·the·I/O·server.·Different·I/O·servers·can·handle·the172 I/O·device·or·handled·by·the·I/O·server.·Different·I/O·servers·can·handle·the
173 characters·however·they·want,·this·only·tells·the·I/O·server·which·format·the173 characters·however·they·want,·this·only·tells·the·I/O·server·which·format·the
174 data·is·expected·to·have.·In·the·<code·class="inline">Module</code>/<code·class="inline">Function</code>/<code·class="inline">Args</code>·case,·<code·class="inline">Encoding</code>174 data·is·expected·to·have.·In·the·<code·class="inline">Module</code>/<code·class="inline">Function</code>/<code·class="inline">Args</code>·case,·<code·class="inline">Encoding</code>
175 tells·which·format·the·designated·function·produces.</p><p>Notice·also·that·byte-oriented·data·is·simplest·sent·using·the·ISO·Latin-1175 tells·which·format·the·designated·function·produces.</p><p>Notice·also·that·byte-oriented·data·is·simplest·sent·using·the·ISO·Latin-1
Offset 187, 15 lines modifiedOffset 187, 15 lines modified
187 {error,·Error}</code></pre><ul><li><code·class="inline">Error</code>·describes·the·error·to·the·client,·which·can·do·whatever·it·wants·with187 {error,·Error}</code></pre><ul><li><code·class="inline">Error</code>·describes·the·error·to·the·client,·which·can·do·whatever·it·wants·with
188 it.·The·<a·href="io.html"><code·class="inline">io</code></a>·module·typically·returns·it·&quot;as·is&quot;.</li></ul><h2·id="input-requests"·class="section-heading">188 it.·The·<a·href="io.html"><code·class="inline">io</code></a>·module·typically·returns·it·&quot;as·is&quot;.</li></ul><h2·id="input-requests"·class="section-heading">
189 ··<a·href="#input-requests"·class="hover-link">189 ··<a·href="#input-requests"·class="hover-link">
190 ····<i·class="ri-link-m"·aria-hidden="true"></i>190 ····<i·class="ri-link-m"·aria-hidden="true"></i>
191 ··</a>191 ··</a>
192 ··<span·class="text">Input·Requests</span>192 ··<span·class="text">Input·Requests</span>
193 </h2>193 </h2>
194 <p>To·read·characters·from·an·I/O·device,·the·following·<code·class="inline">Request</code>s·exist:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4617044044-1">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Prompt</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·a8c6f7a2e1b85926e004f28e358c9bbdec70591520d15739859658c232547cbd·...·]-1">}</span></code></pre><ul><li><p><code·class="inline">Encoding</code>·denotes·how·data·is·to·be·sent·back·to·the·client·and·what·data·is194 <p>To·read·characters·from·an·I/O·device,·the·following·<code·class="inline">Request</code>s·exist:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3103160272-1">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Prompt</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·7629e9821494e0f6583f954de972f7d34be5d5b10651a38a0f73571a6b2b5fe4·...·]-1">}</span></code></pre><ul><li><p><code·class="inline">Encoding</code>·denotes·how·data·is·to·be·sent·back·to·the·client·and·what·data·is
195 sent·to·the·function·denoted·by·<code·class="inline">Module</code>/<code·class="inline">Function</code>/<code·class="inline">ExtraArgs</code>.·If·the195 sent·to·the·function·denoted·by·<code·class="inline">Module</code>/<code·class="inline">Function</code>/<code·class="inline">ExtraArgs</code>.·If·the
196 function·supplied·returns·data·as·a·list,·the·data·is·converted·to·this196 function·supplied·returns·data·as·a·list,·the·data·is·converted·to·this
197 encoding.·If·the·function·supplied·returns·data·in·some·other·format,·no197 encoding.·If·the·function·supplied·returns·data·in·some·other·format,·no
198 conversion·can·be·done,·and·it·is·up·to·the·client-supplied·function·to·return198 conversion·can·be·done,·and·it·is·up·to·the·client-supplied·function·to·return
199 data·in·a·proper·way.</p><p>If·<code·class="inline">Encoding</code>·is·<code·class="inline">latin1</code>,·lists·of·integers·<code·class="inline">0..255</code>·or·binaries·containing199 data·in·a·proper·way.</p><p>If·<code·class="inline">Encoding</code>·is·<code·class="inline">latin1</code>,·lists·of·integers·<code·class="inline">0..255</code>·or·binaries·containing
200 plain·bytes·are·sent·back·to·the·client·when·possible.·If·<code·class="inline">Encoding</code>·is200 plain·bytes·are·sent·back·to·the·client·when·possible.·If·<code·class="inline">Encoding</code>·is
201 <code·class="inline">unicode</code>,·lists·with·integers·in·the·whole·Unicode·range·or·binaries·encoded201 <code·class="inline">unicode</code>,·lists·with·integers·in·the·whole·Unicode·range·or·binaries·encoded
Offset 203, 47 lines modifiedOffset 203, 47 lines modified
203 of·integers,·never·binaries,·but·the·list·can·contain·numbers·&gt;·255·if203 of·integers,·never·binaries,·but·the·list·can·contain·numbers·&gt;·255·if
204 <code·class="inline">Encoding</code>·is·<code·class="inline">unicode</code>.</p></li><li><p><code·class="inline">Prompt</code>·is·a·list·of·characters·(not·mixed,·no·binaries)·or·an·atom·to·be204 <code·class="inline">Encoding</code>·is·<code·class="inline">unicode</code>.</p></li><li><p><code·class="inline">Prompt</code>·is·a·list·of·characters·(not·mixed,·no·binaries)·or·an·atom·to·be
205 output·as·a·prompt·for·input·on·the·I/O·device.·<code·class="inline">Prompt</code>·is·often·ignored·by205 output·as·a·prompt·for·input·on·the·I/O·device.·<code·class="inline">Prompt</code>·is·often·ignored·by
206 the·I/O·server;·if·set·to·<code·class="inline">''</code>,·it·is·always·to·be·ignored·(and·results·in206 the·I/O·server;·if·set·to·<code·class="inline">''</code>,·it·is·always·to·be·ignored·(and·results·in
207 nothing·being·written·to·the·I/O·device).</p></li><li><p><code·class="inline">Module</code>,·<code·class="inline">Function</code>,·and·<code·class="inline">ExtraArgs</code>·denote·a·function·and·arguments·to207 nothing·being·written·to·the·I/O·device).</p></li><li><p><code·class="inline">Module</code>,·<code·class="inline">Function</code>,·and·<code·class="inline">ExtraArgs</code>·denote·a·function·and·arguments·to
208 determine·when·enough·data·is·written.·The·function·is·to·take·two·more208 determine·when·enough·data·is·written.·The·function·is·to·take·two·more
209 arguments,·the·last·state,·and·a·list·of·characters.·The·function·is·to·return209 arguments,·the·last·state,·and·a·list·of·characters.·The·function·is·to·return
210 one·of:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0667641540-1">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RestChars</span><span·class="p"·data-group-id="0667641540-1">}</span><span·class="w">210 one·of:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9038423240-1">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RestChars</span><span·class="p"·data-group-id="9038423240-1">}</span><span·class="w">
211 </span><span·class="p"·data-group-id="0667641540-2">{</span><span·class="ss">more</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Continuation</span><span·class="p"·data-group-id="0667641540-2">}</span></code></pre><p><code·class="inline">Result</code>·can·be·any·Erlang·term,·but·if·it·is·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>,·the·I/O·server·can211 </span><span·class="p"·data-group-id="9038423240-2">{</span><span·class="ss">more</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Continuation</span><span·class="p"·data-group-id="9038423240-2">}</span></code></pre><p><code·class="inline">Result</code>·can·be·any·Erlang·term,·but·if·it·is·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>,·the·I/O·server·can
212 convert·it·to·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a>·of·appropriate·format·before·returning·it·to·the212 convert·it·to·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a>·of·appropriate·format·before·returning·it·to·the
213 client,·if·the·I/O·server·is·set·in·binary·mode·(see·below).</p><p>The·function·is·called·with·the·data·the·I/O·server·finds·on·its·I/O·device,213 client,·if·the·I/O·server·is·set·in·binary·mode·(see·below).</p><p>The·function·is·called·with·the·data·the·I/O·server·finds·on·its·I/O·device,
214 returning·one·of:</p><ul><li><code·class="inline">{done,·Result,·RestChars}</code>·when·enough·data·is·read.·In·this·case·<code·class="inline">Result</code>214 returning·one·of:</p><ul><li><code·class="inline">{done,·Result,·RestChars}</code>·when·enough·data·is·read.·In·this·case·<code·class="inline">Result</code>
215 is·sent·to·the·client·and·<code·class="inline">RestChars</code>·is·kept·in·the·I/O·server·as·a·buffer215 is·sent·to·the·client·and·<code·class="inline">RestChars</code>·is·kept·in·the·I/O·server·as·a·buffer
216 for·later·input.</li><li><code·class="inline">{more,·Continuation}</code>,·which·indicates·that·more·characters·are·needed·to216 for·later·input.</li><li><code·class="inline">{more,·Continuation}</code>,·which·indicates·that·more·characters·are·needed·to
217 complete·the·request.</li></ul><p><code·class="inline">Continuation</code>·is·sent·as·the·state·in·later·calls·to·the·function·when·more217 complete·the·request.</li></ul><p><code·class="inline">Continuation</code>·is·sent·as·the·state·in·later·calls·to·the·function·when·more
218 characters·are·available.·When·no·more·characters·are·available,·the·function218 characters·are·available.·When·no·more·characters·are·available,·the·function
219 must·return·<code·class="inline">{done,·eof,·Rest}</code>.·The·initial·state·is·the·empty·list.·The·data219 must·return·<code·class="inline">{done,·eof,·Rest}</code>.·The·initial·state·is·the·empty·list.·The·data
220 when·an·end·of·file·is·reached·on·the·IO·device·is·the·atom·<code·class="inline">eof</code>.</p><p>An·emulation·of·the·<code·class="inline">get_line</code>·request·can·be·(inefficiently)·implemented220 when·an·end·of·file·is·reached·on·the·IO·device·is·the·atom·<code·class="inline">eof</code>.</p><p>An·emulation·of·the·<code·class="inline">get_line</code>·request·can·be·(inefficiently)·implemented
221 using·the·following·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="1295848231-1">(</span><span·class="ss">demo</span><span·class="p"·data-group-id="1295848231-1">)</span><span·class="p">.</span><span·class="w">221 using·the·following·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4699068722-1">(</span><span·class="ss">demo</span><span·class="p"·data-group-id="4699068722-1">)</span><span·class="p">.</span><span·class="w">
222 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1295848231-2">(</span><span·class="p"·data-group-id="1295848231-3">[</span><span·class="ss">until_newline</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_line</span><span·class="p"[·...·truncated·by·diffoscope;·len:·128,·SHA:·6bdbe5efd80e34e368a5b0cd865b5fa5e6ed8f65f15a0bc2539c76e0aa3e5a1d·...·]-2">)</span><span·class="p">.</span><span·class="w">222 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4699068722-2">(</span><span·class="p"·data-group-id="4699068722-3">[</span><span·class="ss">until_newline</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_line</span><span·class="p"[·...·truncated·by·diffoscope;·len:·128,·SHA:·c0e7abaefbecb2f3e9427f72c4edd57796b366fcdb18cf3a7bc3b4609bbb18bf·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="1295848231-4">(</span><span·class="p">_</span><span·class="n">ThisFar</span><span·class="p">,</span><span·class="ss">eof</span><span·class="p">,</span><span·class="p">_</span><span·class="n">MyStopCharacter</span><span·class="p"·data-group-id="1295848231-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="4699068722-4">(</span><span·class="p">_</span><span·class="n">ThisFar</span><span·class="p">,</span><span·class="ss">eof</span><span·class="p">,</span><span·class="p">_</span><span·class="n">MyStopCharacter</span><span·class="p"·data-group-id="4699068722-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="1295848231-5">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="ss">eof</span><span·class="p">,</span><span·class="p"·data-group-id="1295848231-6">[</span><span·class="p"·data-group-id="1295848231-6">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·db52a4458ee18e925ad12881b551e9c10d8143e6caec96259be15309a9578540·...·]-5">}</span><span·class="p">;</span><span·class="w">224 ····</span><span·class="p"·data-group-id="4699068722-5">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="ss">eof</span><span·class="p">,</span><span·class="p"·data-group-id="4699068722-6">[</span><span·class="p"·data-group-id="4699068722-6">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·fbf8929a6a5a7087d3147170f1f67f5b1de6a496dd7a46daa594d15847ecf121·...·]-5">}</span><span·class="p">;</span><span·class="w">
225 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="1295848231-7">(</span><span·class="n">ThisFar</span><span·class="p">,</span><span·class="n">CharList</span><span·class="p">,</span><span·class="n">MyStopCharacter</span><span·class="p"·data-group-id="1295848231-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="4699068722-7">(</span><span·class="n">ThisFar</span><span·class="p">,</span><span·class="n">CharList</span><span·class="p">,</span><span·class="n">MyStopCharacter</span><span·class="p"·data-group-id="4699068722-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 ····</span><span·class="k">case</span><span·class="w">226 ····</span><span·class="k">case</span><span·class="w">
227 ········</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">splitwith</span><span·class="p"·data-group-id="1295848231-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1295848231-9">(</span><span·class="n">X</span><span·class="p"·data-group-id="1295848231-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·306,·SHA:·7dadb2532e4c1bd2e8066160c835106c3fca61cd886d4ea715a735b474832cfd·...·]-8">)</span><span·class="w">227 ········</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">splitwith</span><span·class="p"·data-group-id="4699068722-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4699068722-9">(</span><span·class="n">X</span><span·class="p"·data-group-id="4699068722-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·306,·SHA:·5b5e50bf5421867d5921486a60bc9e387a92b8e3a16150ec8850fb272154369f·...·]-8">)</span><span·class="w">
228 ····</span><span·class="k">of</span><span·class="w">228 ····</span><span·class="k">of</span><span·class="w">
229 ··</span><span·class="p"·data-group-id="1295848231-10">{</span><span·class="n">L</span><span·class="p">,</span><span·class="p"·data-group-id="1295848231-11">[</span><span·class="p"·data-group-id="1295848231-11">]</span><span·class="p"·data-group-id="1295848231-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 ··</span><span·class="p"·data-group-id="4699068722-10">{</span><span·class="n">L</span><span·class="p">,</span><span·class="p"·data-group-id="4699068722-11">[</span><span·class="p"·data-group-id="4699068722-11">]</span><span·class="p"·data-group-id="4699068722-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ············</span><span·class="p"·data-group-id="1295848231-12">{</span><span·class="ss">more</span><span·class="p">,</span><span·class="n">ThisFar</span><span·class="o">++</span><span·class="n">L</span><span·class="p"·data-group-id="1295848231-12">}</span><span·class="p">;</span><span·class="w">230 ············</span><span·class="p"·data-group-id="4699068722-12">{</span><span·class="ss">more</span><span·class="p">,</span><span·class="n">ThisFar</span><span·class="o">++</span><span·class="n">L</span><span·class="p"·data-group-id="4699068722-12">}</span><span·class="p">;</span><span·class="w">
231 ··</span><span·class="p"·data-group-id="1295848231-13">{</span><span·class="n">L2</span><span·class="p">,</span><span·class="p"·data-group-id="1295848231-14">[</span><span·class="n">MyStopCharacter</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="1295848231[·...·truncated·by·diffoscope;·len:·54,·SHA:·ab690eaf119bad7a7dc559fa5194345e8a3f4c9624601f349c82efe90ec1499c·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ··</span><span·class="p"·data-group-id="4699068722-13">{</span><span·class="n">L2</span><span·class="p">,</span><span·class="p"·data-group-id="4699068722-14">[</span><span·class="n">MyStopCharacter</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="4699068722[·...·truncated·by·diffoscope;·len:·54,·SHA:·c4e7c4f412c26c120de21ce9a354e39637d56caa9f75fc7d1330b584cd2f42d3·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ······</span><span·class="p"·data-group-id="1295848231-15">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="n">ThisFar</span><span·class="o">++</span><span·class="n">L2</span><span·class="o">++</span><span·class="p"·data-group-id="1295848231-16">[</span><span·class="n">MyStop[·...·truncated·by·diffoscope;·len:·162,·SHA:·4687004e6732a55062e7bc72339c2624c502975efbb8e443aff998fc262eaacf·...·]-15">}</span><span·class="w">232 ······</span><span·class="p"·data-group-id="4699068722-15">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="n">ThisFar</span><span·class="o">++</span><span·class="n">L2</span><span·class="o">++</span><span·class="p"·data-group-id="4699068722-16">[</span><span·class="n">MyStop[·...·truncated·by·diffoscope;·len:·162,·SHA:·eef7504e9945e68ddbd4c0b9b17fa76d0a1ce6e940887b385ac693271823e31f·...·]-15">}</span><span·class="w">
233 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">233 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
234 </span><span·class="nf">get_line</span><span·class="p"·data-group-id="1295848231-17">(</span><span·class="n">IoServer</span><span·class="p"·data-group-id="1295848231-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 </span><span·class="nf">get_line</span><span·class="p"·data-group-id="4699068722-17">(</span><span·class="n">IoServer</span><span·class="p"·data-group-id="4699068722-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
235 ····</span><span·class="n">IoServer</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="1295848231-18">{</span><span·class="ss">io_request</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="n">IoServer</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="4699068722-18">{</span><span·class="ss">io_request</span><span·class="p">,</span><span·class="w">
236 ················</span><span·class="nf">self</span><span·class="p"·data-group-id="1295848231-19">(</span><span·class="p"·data-group-id="1295848231-19">)</span><span·class="p">,</span><span·class="w">236 ················</span><span·class="nf">self</span><span·class="p"·data-group-id="4699068722-19">(</span><span·class="p"·data-group-id="4699068722-19">)</span><span·class="p">,</span><span·class="w">
237 ················</span><span·class="n">IoServer</span><span·class="p">,</span><span·class="w">237 ················</span><span·class="n">IoServer</span><span·class="p">,</span><span·class="w">
238 ················</span><span·class="p"·data-group-id="1295848231-20">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;&#39;</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·425,·SHA:·9b04508ff324f0e6ea17b9c463e8ddd902ad87494271fb73f534bc79c6f7d364·...·]-18">}</span><span·class="p">,</span><span·class="w">238 ················</span><span·class="p"·data-group-id="4699068722-20">{</span><span·class="ss">get_until</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;&#39;</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·425,·SHA:·6009d831f33998f534722edfbb3b4b3577bcf791353a1154f08c25378d4dc6ef·...·]-18">}</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="k">receive</span><span·class="w">239 ····</span><span·class="k">receive</span><span·class="w">
240 ········</span><span·class="p"·data-group-id="1295848231-22">{</span><span·class="ss">io_reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IoServer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="1295848231-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">240 ········</span><span·class="p"·data-group-id="4699068722-22">{</span><span·class="ss">io_reply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IoServer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="4699068722-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
241 ······</span><span·class="n">Data</span><span·class="w">241 ······</span><span·class="n">Data</span><span·class="w">
242 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Notice·that·the·last·element·in·the·<code·class="inline">Request</code>·tuple·(<code·class="inline">[$\n]</code>)·is·appended·to242 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>Notice·that·the·last·element·in·the·<code·class="inline">Request</code>·tuple·(<code·class="inline">[$\n]</code>)·is·appended·to
243 the·argument·list·when·the·function·is·called.·The·function·is·to·be·called243 the·argument·list·when·the·function·is·called.·The·function·is·to·be·called
244 like·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·[·State,·Data·|·ExtraArgs·])</code></a>·by244 like·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·[·State,·Data·|·ExtraArgs·])</code></a>·by
245 the·I/O·server.</p></li></ul><p>A·fixed·number·of·characters·is·requested·using·the·following·<code·class="inline">Request</code>:</p><pre><code·class="text">{get_chars,·Encoding,·Prompt,·N}</code></pre><ul><li><code·class="inline">Encoding</code>·and·<code·class="inline">Prompt</code>·as·for·<code·class="inline">get_until</code>.</li><li><code·class="inline">N</code>·is·the·number·of·characters·to·be·read·from·the·I/O·device.</li></ul><p>A·single·line·(as·in·former·example)·is·requested·with·the·following·<code·class="inline">Request</code>:</p><pre><code·class="text">{get_line,·Encoding,·Prompt}</code></pre><ul><li><code·class="inline">Encoding</code>·and·<code·class="inline">Prompt</code>·as·for·<code·class="inline">get_until</code>.</li></ul><p>Clearly,·<code·class="inline">get_chars</code>·and·<code·class="inline">get_line</code>·could·be·implemented·with·the·<code·class="inline">get_until</code>245 the·I/O·server.</p></li></ul><p>A·fixed·number·of·characters·is·requested·using·the·following·<code·class="inline">Request</code>:</p><pre><code·class="text">{get_chars,·Encoding,·Prompt,·N}</code></pre><ul><li><code·class="inline">Encoding</code>·and·<code·class="inline">Prompt</code>·as·for·<code·class="inline">get_until</code>.</li><li><code·class="inline">N</code>·is·the·number·of·characters·to·be·read·from·the·I/O·device.</li></ul><p>A·single·line·(as·in·former·example)·is·requested·with·the·following·<code·class="inline">Request</code>:</p><pre><code·class="text">{get_line,·Encoding,·Prompt}</code></pre><ul><li><code·class="inline">Encoding</code>·and·<code·class="inline">Prompt</code>·as·for·<code·class="inline">get_until</code>.</li></ul><p>Clearly,·<code·class="inline">get_chars</code>·and·<code·class="inline">get_line</code>·could·be·implemented·with·the·<code·class="inline">get_until</code>
246 request·(and·indeed·they·were·originally),·but·demands·for·efficiency·have·made246 request·(and·indeed·they·were·originally),·but·demands·for·efficiency·have·made
247 these·additions·necessary.</p><p>The·I/O·server·replies·to·the·client·with·an·<code·class="inline">io_reply</code>·tuple,·where·element247 these·additions·necessary.</p><p>The·I/O·server·replies·to·the·client·with·an·<code·class="inline">io_reply</code>·tuple,·where·element
Offset 273, 18 lines modifiedOffset 273, 18 lines modified
273 forms.·However,·the·I/O·server·is·to·convert·the·results·to·binaries·whenever273 forms.·However,·the·I/O·server·is·to·convert·the·results·to·binaries·whenever
274 possible·(that·is,·when·the·function·supplied·to·<code·class="inline">get_until</code>·returns·a·list).274 possible·(that·is,·when·the·function·supplied·to·<code·class="inline">get_until</code>·returns·a·list).
275 This·is·done·in·the·example·in·section275 This·is·done·in·the·example·in·section
276 <a·href="io_protocol.html#example_io_server">An·Annotated·and·Working·Example·I/O·Server</a>.</p><p>An·I/O·server·in·binary·mode·affects·the·data·sent·to·the·client,·so·that·it276 <a·href="io_protocol.html#example_io_server">An·Annotated·and·Working·Example·I/O·Server</a>.</p><p>An·I/O·server·in·binary·mode·affects·the·data·sent·to·the·client,·so·that·it
277 must·be·able·to·handle·binary·data.·For·convenience,·the·modes·of·an·I/O·server277 must·be·able·to·handle·binary·data.·For·convenience,·the·modes·of·an·I/O·server
278 can·be·set·and·retrieved·using·the·following·I/O·requests:</p><pre><code·class="text">{setopts,·Opts}</code></pre><ul><li><code·class="inline">Opts</code>·is·a·list·of·options·in·the·format·recognized·by·the·<a·href="proplists.html"><code·class="inline">proplists</code></a>278 can·be·set·and·retrieved·using·the·following·I/O·requests:</p><pre><code·class="text">{setopts,·Opts}</code></pre><ul><li><code·class="inline">Opts</code>·is·a·list·of·options·in·the·format·recognized·by·the·<a·href="proplists.html"><code·class="inline">proplists</code></a>
279 module·(and·by·the·I/O·server).</li></ul><p>As·an·example,·the·I/O·server·for·the·interactive·shell·(in·<code·class="inline">group.erl</code>)279 module·(and·by·the·I/O·server).</li></ul><p>As·an·example,·the·I/O·server·for·the·interactive·shell·(in·<code·class="inline">group.erl</code>)
280 understands·the·following·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5923912803-1">{</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5923912803-2">(</span><span·class="p"·data-group-id="5923912803-2">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·284,·SHA:·c4149d120c9843d8feddcd49b5481ee94676dcb9181f6a2a69814751ce3a97fe·...·]-3">)</span><span·class="w">280 understands·the·following·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8027825036-1">{</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="8027825036-2">(</span><span·class="p"·data-group-id="8027825036-2">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·284,·SHA:·7f4b00ed50c35ad0160f35863316a94d5d95f3b881e72cb106b7c87fd20d22ce·...·]-3">)</span><span·class="w">
281 </span><span·class="p"·data-group-id="5923912803-4">{</span><span·class="ss">echo</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5923912803-5">(</span><span·class="p"·data-group-id="5923912803-5">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·6e1d14f64f3bc61e4928ae5cf1e460eb38add1c975a22d183b7b7ce819ea7e14·...·]-4">}</span><span·class="w">281 </span><span·class="p"·data-group-id="8027825036-4">{</span><span·class="ss">echo</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">boolean</span><span·class="p"·data-group-id="8027825036-5">(</span><span·class="p"·data-group-id="8027825036-5">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·cda1a4eec63b476469c25a47de4c6216b706c55c97c484a197d945e5b44b59ab·...·]-4">}</span><span·class="w">
282 </span><span·class="p"·data-group-id="5923912803-6">{</span><span·class="ss">expand_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5923912803-7">(</span><span·class="p"·data-group-id="5923912803-7">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·8c2698a2fd5101782902930c7be0b426680b655d68305a4a17454841bfc22f13·...·]-6">}</span><span·class="w">282 </span><span·class="p"·data-group-id="8027825036-6">{</span><span·class="ss">expand_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="8027825036-7">(</span><span·class="p"·data-group-id="8027825036-7">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·47268def2f2529cec84e02d3eabb588a6b6c0ab308e2642eaa02e003d1a51270·...·]-6">}</span><span·class="w">
283 </span><span·class="p"·data-group-id="5923912803-8">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="o">/</span><span·class="ss">latin1</span><span·class="p"·data-group-id="5923912803-8">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·237,·SHA:·32f4db9244b0096adcc021756e5ef5965a28aa021996a1a2c2993e9feed02091·...·]-9">)</span></code></pre><p>Options·<code·class="inline">binary</code>·and·<code·class="inline">encoding</code>·are·common·for·all·I/O·servers·in·OTP,·while283 </span><span·class="p"·data-group-id="8027825036-8">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="o">/</span><span·class="ss">latin1</span><span·class="p"·data-group-id="8027825036-8">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·237,·SHA:·48ba3b208f9259ffdeb31ecf124367423e61a6a73ccf19d6bd8ecd4022c00548·...·]-9">)</span></code></pre><p>Options·<code·class="inline">binary</code>·and·<code·class="inline">encoding</code>·are·common·for·all·I/O·servers·in·OTP,·while
284 <code·class="inline">echo</code>·and·<code·class="inline">expand</code>·are·valid·only·for·this·I/O·server.·Option·<code·class="inline">unicode</code>284 <code·class="inline">echo</code>·and·<code·class="inline">expand</code>·are·valid·only·for·this·I/O·server.·Option·<code·class="inline">unicode</code>
285 notifies·how·characters·are·put·on·the·physical·I/O·device,·that·is,·if·the285 notifies·how·characters·are·put·on·the·physical·I/O·device,·that·is,·if·the
286 terminal·itself·is·Unicode-aware.·It·does·not·affect·how·characters·are·sent·in286 terminal·itself·is·Unicode-aware.·It·does·not·affect·how·characters·are·sent·in
287 the·I/O·protocol,·where·each·request·contains·encoding·information·for·the287 the·I/O·protocol,·where·each·request·contains·encoding·information·for·the
288 provided·or·returned·data.</p><p>The·I/O·server·is·to·send·one·of·the·following·as·<code·class="inline">Reply</code>:</p><pre><code·class="text">ok288 provided·or·returned·data.</p><p>The·I/O·server·is·to·send·one·of·the·following·as·<code·class="inline">Reply</code>:</p><pre><code·class="text">ok
289 {error,·Error}</code></pre><p>An·error·(preferably·<code·class="inline">enotsup</code>)·is·to·be·expected·if·the·option·is·not·supported289 {error,·Error}</code></pre><p>An·error·(preferably·<code·class="inline">enotsup</code>)·is·to·be·expected·if·the·option·is·not·supported
290 by·the·I/O·server·(like·if·an·<code·class="inline">echo</code>·option·is·sent·in·a·<code·class="inline">setopts</code>·request·to·a290 by·the·I/O·server·(like·if·an·<code·class="inline">echo</code>·option·is·sent·in·a·<code·class="inline">setopts</code>·request·to·a
Offset 299, 17 lines modifiedOffset 299, 17 lines modified
299 </h2>299 </h2>
300 <p>The·<code·class="inline">Request</code>·element·can·in·itself·contain·many·<code·class="inline">Request</code>s·by·using·the300 <p>The·<code·class="inline">Request</code>·element·can·in·itself·contain·many·<code·class="inline">Request</code>s·by·using·the
301 following·format:</p><pre><code·class="text">{requests,·Requests}</code></pre><ul><li><code·class="inline">Requests</code>·is·a·list·of·valid·<code·class="inline">io_request</code>·tuples·for·the·protocol.·They·must301 following·format:</p><pre><code·class="text">{requests,·Requests}</code></pre><ul><li><code·class="inline">Requests</code>·is·a·list·of·valid·<code·class="inline">io_request</code>·tuples·for·the·protocol.·They·must
302 be·executed·in·the·order·that·they·appear·in·the·list.·The·execution·is·to302 be·executed·in·the·order·that·they·appear·in·the·list.·The·execution·is·to
303 continue·until·one·of·the·requests·results·in·an·error·or·the·list·is303 continue·until·one·of·the·requests·results·in·an·error·or·the·list·is
304 consumed.·The·result·of·the·last·request·is·sent·back·to·the·client.</li></ul><p>The·I/O·server·can,·for·a·list·of·requests,·send·any·of·the·following·valid304 consumed.·The·result·of·the·last·request·is·sent·back·to·the·client.</li></ul><p>The·I/O·server·can,·for·a·list·of·requests,·send·any·of·the·following·valid
305 results·in·the·reply,·depending·on·the·requests·in·the·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">305 results·in·the·reply,·depending·on·the·requests·in·the·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">ok</span><span·class="w">
306 </span><span·class="p"·data-group-id="2762422649-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="2762422649-1">}</span><span·class="w">306 </span><span·class="p"·data-group-id="0946487655-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p"·data-group-id="0946487655-1">}</span><span·class="w">
307 </span><span·class="p"·data-group-id="2762422649-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Options</span><span·class="p"·data-group-id="2762422649-2">}</span><span·class="w">307 </span><span·class="p"·data-group-id="0946487655-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Options</span><span·class="p"·data-group-id="0946487655-2">}</span><span·class="w">
308 </span><span·class="p"·data-group-id="2762422649-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p"·data-group-id="2762422649-3">}</span></code></pre><h2·id="optional-i-o-request"·class="section-heading">308 </span><span·class="p"·data-group-id="0946487655-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p"·data-group-id="0946487655-3">}</span></code></pre><h2·id="optional-i-o-request"·class="section-heading">
Max diff block lines reached; 153040/188864 bytes (81.03%) of diff not shown.
47.9 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/json.html
    
Offset 977, 16 lines modifiedOffset 977, 16 lines modified
977 </h2>977 </h2>
978 <ul><li><code·class="inline">error(unexpected_end)</code>·if·<code·class="inline">Binary</code>·contains·incomplete·JSON·value</li><li><code·class="inline">error({invalid_byte,·Byte})</code>·if·<code·class="inline">Binary</code>·contains·unexpected·byte·or·invalid·UTF-8·byte</li><li><code·class="inline">error({unexpected_sequence,·Bytes})</code>·if·<code·class="inline">Binary</code>·contains·invalid·UTF-8·escape</li></ul><h2·id="decode/1-example"·class="section-heading">978 <ul><li><code·class="inline">error(unexpected_end)</code>·if·<code·class="inline">Binary</code>·contains·incomplete·JSON·value</li><li><code·class="inline">error({invalid_byte,·Byte})</code>·if·<code·class="inline">Binary</code>·contains·unexpected·byte·or·invalid·UTF-8·byte</li><li><code·class="inline">error({unexpected_sequence,·Bytes})</code>·if·<code·class="inline">Binary</code>·contains·invalid·UTF-8·escape</li></ul><h2·id="decode/1-example"·class="section-heading">
979 ··<a·href="#decode/1-example"·class="hover-link">979 ··<a·href="#decode/1-example"·class="hover-link">
980 ····<i·class="ri-link-m"·aria-hidden="true"></i>980 ····<i·class="ri-link-m"·aria-hidden="true"></i>
981 ··</a>981 ··</a>
982 ··<span·class="text">Example</span>982 ··<span·class="text">Example</span>
983 </h2>983 </h2>
984 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="8511589847-1">(</span><span·class="p"·data-group-id="8511589847-2">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="8511589847-2">&gt;&gt;</span><span·class="p"·data-group-id="8511589847-1">)</span><span·class="p">.</span><span·class="w"> 
985 </span><span·class="p"·data-group-id="8511589847-3">#{</span><span·class="p"·data-group-id="8511589847-4">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="8511589847-4">&gt;&gt;</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·128,·SHA:·7d1a1ec1f7360a266b7c93261cf2da6890489108190c6144071c17ca376d4331·...·]>984 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="0435696883-1">(</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·237,·SHA:·d4eb9d5f1174f27ff7369c1b2358a1434c98b2a79769a51b7769dab09bbff2ce·...·]>
 985 </span><span·class="p"·data-group-id="0435696883-3">#{</span><span·class="p"·data-group-id="0435696883-4">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="0435696883-4">&gt;&gt;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0435696883-3">}</span></code></pre>
986 ··</section>986 ··</section>
987 </section>987 </section>
988 <section·class="detail"·id="decode/3">988 <section·class="detail"·id="decode/3">
  
989 ··<div·class="detail-header">989 ··<div·class="detail-header">
990 ····<a·href="#decode/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">990 ····<a·href="#decode/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
991 ······<i·class="ri-link-m"·aria-hidden="true"></i>991 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1028, 17 lines modifiedOffset 1028, 17 lines modified
1028 </h2>1028 </h2>
1029 <ul><li><code·class="inline">error({invalid_byte,·Byte})</code>·if·<code·class="inline">Binary</code>·contains·unexpected·byte·or·invalid·UTF-8·byte</li><li><code·class="inline">error({unexpected_sequence,·Bytes})</code>·if·<code·class="inline">Binary</code>·contains·invalid·UTF-8·escape</li><li><code·class="inline">error(unexpected_end)</code>·if·<code·class="inline">Binary</code>·contains·incomplete·JSON·value</li></ul><h2·id="decode/3-example"·class="section-heading">1029 <ul><li><code·class="inline">error({invalid_byte,·Byte})</code>·if·<code·class="inline">Binary</code>·contains·unexpected·byte·or·invalid·UTF-8·byte</li><li><code·class="inline">error({unexpected_sequence,·Bytes})</code>·if·<code·class="inline">Binary</code>·contains·invalid·UTF-8·escape</li><li><code·class="inline">error(unexpected_end)</code>·if·<code·class="inline">Binary</code>·contains·incomplete·JSON·value</li></ul><h2·id="decode/3-example"·class="section-heading">
1030 ··<a·href="#decode/3-example"·class="hover-link">1030 ··<a·href="#decode/3-example"·class="hover-link">
1031 ····<i·class="ri-link-m"·aria-hidden="true"></i>1031 ····<i·class="ri-link-m"·aria-hidden="true"></i>
1032 ··</a>1032 ··</a>
1033 ··<span·class="text">Example</span>1033 ··<span·class="text">Example</span>
1034 </h2>1034 </h2>
1035 <p>Decoding·object·keys·as·atoms:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Push</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1509523092-1">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="1509523092-1">)</span><span[·...·truncated·by·diffoscope;·len:·624,·SHA:·4e8298d0773e9aabe5d06918f1523c81bdbd5019fd1acd69f3fd255ff0b64e27·...·]-2">]</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="gp·unselectable">1035 <p>Decoding·object·keys·as·atoms:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Push</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3981619347-1">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="3981619347-1">)</span><span[·...·truncated·by·diffoscope;·len:·624,·SHA:·2c0d596e63512c3fc10c104add2b152cfe91ea95db1ef31249b1a41153e357cf·...·]-2">]</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="gp·unselectable">
1036 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="1509523092-5">(</span><span·class="p"·data-group-id="1509523092-6">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="1509523092-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·351,·SHA:·a65796fac74c6f0382704e7424c44f5bab63d460a6be4f1dcb27b0f062022157·...·]-5">)</span><span·class="p">.</span><span·class="w">1036 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="3981619347-5">(</span><span·class="p"·data-group-id="3981619347-6">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="3981619347-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·351,·SHA:·bb8d63d8afaecad16ec39bdb85d1439c756174ac1b8af2547b399baac39b3303·...·]-5">)</span><span·class="p">.</span><span·class="w">
1037 </span><span·class="p"·data-group-id="1509523092-8">{</span><span·class="p"·data-group-id="1509523092-9">#{</span><span·class="ss">foo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1509523092-9">}</span[·...·truncated·by·diffoscope;·len:·238,·SHA:·eb7c4b3ace33ba21290abcf2621cbc8eb1a25e1d5d84b1c31cb0af63589afaaf·...·]-8">}</span></code></pre>1037 </span><span·class="p"·data-group-id="3981619347-8">{</span><span·class="p"·data-group-id="3981619347-9">#{</span><span·class="ss">foo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="3981619347-9">}</span[·...·truncated·by·diffoscope;·len:·238,·SHA:·4becc7212c37653873b22d85fda49ad2ff52bfbcc2f3087ebc165850aa99d30c·...·]-8">}</span></code></pre>
1038 ··</section>1038 ··</section>
1039 </section>1039 </section>
1040 <section·class="detail"·id="decode_continue/2">1040 <section·class="detail"·id="decode_continue/2">
  
1041 ··<div·class="detail-header">1041 ··<div·class="detail-header">
1042 ····<a·href="#decode_continue/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1042 ····<a·href="#decode_continue/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1043 ······<i·class="ri-link-m"·aria-hidden="true"></i>1043 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1061, 19 lines modifiedOffset 1061, 19 lines modified
1061 ··········<pre·translate="no"><span·class="attribute">-spec</span>·decode_continue(<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()·|·end_of_input,·Opaque·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->1061 ··········<pre·translate="no"><span·class="attribute">-spec</span>·decode_continue(<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()·|·end_of_input,·Opaque·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>())·->
1062 ·························{Result·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Acc·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}·|1062 ·························{Result·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Acc·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()}·|
1063 ·························{continue,·<a·href="#t:continuation_state/0">continuation_state</a>()}.</pre>1063 ·························{continue,·<a·href="#t:continuation_state/0">continuation_state</a>()}.</pre>
  
1064 ······</div>1064 ······</div>
  
1065 <p>Continue·parsing·a·stream·of·bytes·of·a·JSON·value.</p><p>Similar·to·<a·href="#decode_start/3"><code·class="inline">decode_start/3</code></a>,·if·the·function·returns·<code·class="inline">{continue,·State}</code>·and1065 <p>Continue·parsing·a·stream·of·bytes·of·a·JSON·value.</p><p>Similar·to·<a·href="#decode_start/3"><code·class="inline">decode_start/3</code></a>,·if·the·function·returns·<code·class="inline">{continue,·State}</code>·and
1066 there·is·no·more·data,·use·<code·class="inline">end_of_input</code>·instead·of·a·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="9057239116-1">{</span><span·class="ss">continue</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9057239116-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_start</span><span·class="p"·data-group-id="9057239116-2">(</span><span·class="p"·data-group-id="9057239116-3">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:&quot;</span><span·class="p"·data-group-id="9057239116-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9057239116-4">#{</span><span·class="p"·data-group-id="9057239116-4">}</span><span·class="p"·data-group-id="9057239116-2">)</span><span·class="p">.</span><span·class="gp·unselectable"> 
1067 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_continue</span><span·class="p"·data-group-id="9057239116-5">(</span><span·class="p"·data-group-id="9057239116-6">&lt;&lt;</span><span·class="s">&quot;1}&quot;</span><span·class="p"·data-group-id="9057239116-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9057239116-5">)</span><span·class="p">.</span><span·class="w"> 
1068 </span><span·class="p"·data-group-id="9057239116-7">{</span><span·class="p"·data-group-id="9057239116-8">#{</span><span·class="ss">foo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p[·...·truncated·by·diffoscope;·len:·1244,·SHA:·7a2c21befcdb3e9cb92cd158de6a529874712f05093988dd092bb3827135d4cf·...·]-2">)</span><span·class="p">.</span><span·class="gp·unselectable">1066 there·is·no·more·data,·use·<code·class="inline">end_of_input</code>·instead·of·a·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="9424586166-1">{</span><span·class="ss">cont[·...·truncated·by·diffoscope;·len:·797,·SHA:·73c88dd1dd70b4aa3f9946bfc4cfce0cea8438a96e48b11a1d893a19b3cb2d09·...·]-2">)</span><span·class="p">.</span><span·class="gp·unselectable">
 1067 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_continue</span><span·class="p"·data-group-id="9424586166-5">(</span><span·class="p"·data-group-id="9424586166-6">&lt;&lt;</span><span·class="s">&quot;1}&quot;</span><span·class="p"·data-group-id="9424586166-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9424586166-5">)</span><span·class="p">.</span><span·class="w">
 1068 </span><span·class="p"·data-group-id="9424586166-7">{</span><span·class="p"·data-group-id="9424586166-8">#{</span><span·class="ss">foo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="9424586166-8">}</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9424586166-9">&lt;&lt;</span><span·class="p"·data-group-id="9424586166-9">&gt;&gt;</span><span·class="p"·data-group-id="9424586166-7">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="5794274837-1">{</span><span·class="ss">continue</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="5794274837-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_start</span><span·class="p"·data-group-id="5794274837-2">(</span><span·class="p"·data-group-id="5794274837-3">&lt;&lt;</span><span·class="s">&quot;123&quot;</span><span·class="p"·data-group-id="5794274837-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5794274837-4">#{</span><span·class="p"·data-group-id="5794274837-4">}</span><span·class="p"·data-group-id="5794274837-2">)</span><span·class="p">.</span><span·class="gp·unselectable">
1069 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_continue</span><span·class="p"·data-group-id="9136544413-5">(</span><span·class="ss">end_of_input</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9136544413-5">)</span><span·class="p">.</span><span·class="w">1069 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_continue</span><span·class="p"·data-group-id="5794274837-5">(</span><span·class="ss">end_of_input</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="5794274837-5">)</span><span·class="p">.</span><span·class="w">
1070 </span><span·class="p"·data-group-id="9136544413-6">{</span><span·class="mi">123</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9136544413-7">&lt;&lt;</span><span·class="p"·data-group-id="9136544413-7">&gt;&gt;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·e022aa2fa17029ac49a71fe261c49e17915da7c295ebb94e5dadc842c85daddb·...·]-6">}</span></code></pre>1070 </span><span·class="p"·data-group-id="5794274837-6">{</span><span·class="mi">123</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5794274837-7">&lt;&lt;</span><span·class="p"·data-group-id="5794274837-7">&gt;&gt;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·3a559f6358ca64aa8340122286974b56ef790d6fd8a0744b04eac2544bac36f2·...·]-6">}</span></code></pre>
1071 ··</section>1071 ··</section>
1072 </section>1072 </section>
1073 <section·class="detail"·id="decode_start/3">1073 <section·class="detail"·id="decode_start/3">
  
1074 ··<div·class="detail-header">1074 ··<div·class="detail-header">
1075 ····<a·href="#decode_start/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1075 ····<a·href="#decode_start/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1076 ······<i·class="ri-link-m"·aria-hidden="true"></i>1076 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1131, 16 lines modifiedOffset 1131, 16 lines modified
  
1131 <p>Generates·JSON·corresponding·to·<code·class="inline">Term</code>.</p><p>Supports·basic·data·mapping:</p><table><thead><tr><th·style="text-align:·left;"><strong>Erlang</strong></th><th·style="text-align:·left;"><strong>JSON</strong></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">integer()·|·float()</code></td><td·style="text-align:·left;">Number</td></tr><tr><td·style="text-align:·left;"><code·class="inline">true·|·false</code></td><td·style="text-align:·left;">Boolean</td></tr><tr><td·style="text-align:·left;"><code·class="inline">null</code></td><td·style="text-align:·left;">Null</td></tr><tr><td·style="text-align:·left;"><code·class="inline">binary()</code></td><td·style="text-align:·left;">String</td></tr><tr><td·style="text-align:·left;"><code·class="inline">atom()</code></td><td·style="text-align:·left;">String</td></tr><tr><td·style="text-align:·left;"><code·class="inline">list()</code></td><td·style="text-align:·left;">Array</td></tr><tr><td·style="text-align:·left;"><code·class="inline">#{binary()·=&gt;·_}</code></td><td·style="text-align:·left;">Object</td></tr><tr><td·style="text-align:·left;"><code·class="inline">#{atom()·=&gt;·_}</code></td><td·style="text-align:·left;">Object</td></tr><tr><td·style="text-align:·left;"><code·class="inline">#{integer()·=&gt;·_}</code></td><td·style="text-align:·left;">Object</td></tr></tbody></table><p>This·is·equivalent·to·<code·class="inline">encode(Term,·fun·json:encode_value/2)</code>.</p><h2·id="encode/1-examples"·class="section-heading">1131 <p>Generates·JSON·corresponding·to·<code·class="inline">Term</code>.</p><p>Supports·basic·data·mapping:</p><table><thead><tr><th·style="text-align:·left;"><strong>Erlang</strong></th><th·style="text-align:·left;"><strong>JSON</strong></th></tr></thead><tbody><tr><td·style="text-align:·left;"><code·class="inline">integer()·|·float()</code></td><td·style="text-align:·left;">Number</td></tr><tr><td·style="text-align:·left;"><code·class="inline">true·|·false</code></td><td·style="text-align:·left;">Boolean</td></tr><tr><td·style="text-align:·left;"><code·class="inline">null</code></td><td·style="text-align:·left;">Null</td></tr><tr><td·style="text-align:·left;"><code·class="inline">binary()</code></td><td·style="text-align:·left;">String</td></tr><tr><td·style="text-align:·left;"><code·class="inline">atom()</code></td><td·style="text-align:·left;">String</td></tr><tr><td·style="text-align:·left;"><code·class="inline">list()</code></td><td·style="text-align:·left;">Array</td></tr><tr><td·style="text-align:·left;"><code·class="inline">#{binary()·=&gt;·_}</code></td><td·style="text-align:·left;">Object</td></tr><tr><td·style="text-align:·left;"><code·class="inline">#{atom()·=&gt;·_}</code></td><td·style="text-align:·left;">Object</td></tr><tr><td·style="text-align:·left;"><code·class="inline">#{integer()·=&gt;·_}</code></td><td·style="text-align:·left;">Object</td></tr></tbody></table><p>This·is·equivalent·to·<code·class="inline">encode(Term,·fun·json:encode_value/2)</code>.</p><h2·id="encode/1-examples"·class="section-heading">
1132 ··<a·href="#encode/1-examples"·class="hover-link">1132 ··<a·href="#encode/1-examples"·class="hover-link">
1133 ····<i·class="ri-link-m"·aria-hidden="true"></i>1133 ····<i·class="ri-link-m"·aria-hidden="true"></i>
1134 ··</a>1134 ··</a>
1135 ··<span·class="text">Examples</span>1135 ··<span·class="text">Examples</span>
1136 </h2>1136 </h2>
1137 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">iolist_to_binary</span><span·class="p"·data-group-id="5621798314-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="5621798314-2">(</span><span·class="p"·data-group-id="5621798314-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·363,·SHA:·e14513273bd4e518dcb3da55b6e1b263546fc6fbf732b822c77707afb6c359a5·...·]-1">)</span><span·class="p">.</span><span·class="w">1137 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">iolist_to_binary</span><span·class="p"·data-group-id="6441120493-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="6441120493-2">(</span><span·class="p"·data-group-id="6441120493-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·363,·SHA:·cccfdb8b8456c2234aa3dede0fd5c545f10fd81394f843c50900e8463a800b98·...·]-1">)</span><span·class="p">.</span><span·class="w">
1138 </span><span·class="p"·data-group-id="5621798314-5">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:\&quot;bar\&quot;}&quot;</span><span·class="p"·data-group-id="5621798314-5">&gt;&gt;</span></code></pre>1138 </span><span·class="p"·data-group-id="6441120493-5">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:\&quot;bar\&quot;}&quot;</span><span·class="p"·data-group-id="6441120493-5">&gt;&gt;</span></code></pre>
1139 ··</section>1139 ··</section>
1140 </section>1140 </section>
1141 <section·class="detail"·id="encode/2">1141 <section·class="detail"·id="encode/2">
  
1142 ··<div·class="detail-header">1142 ··<div·class="detail-header">
1143 ····<a·href="#encode/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1143 ····<a·href="#encode/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1144 ······<i·class="ri-link-m"·aria-hidden="true"></i>1144 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1171, 19 lines modifiedOffset 1171, 19 lines modified
1171 to·help·in·constructing·such·callbacks.</p><h2·id="encode/2-examples"·class="section-heading">1171 to·help·in·constructing·such·callbacks.</p><h2·id="encode/2-examples"·class="section-heading">
1172 ··<a·href="#encode/2-examples"·class="hover-link">1172 ··<a·href="#encode/2-examples"·class="hover-link">
1173 ····<i·class="ri-link-m"·aria-hidden="true"></i>1173 ····<i·class="ri-link-m"·aria-hidden="true"></i>
1174 ··</a>1174 ··</a>
1175 ··<span·class="text">Examples</span>1175 ··<span·class="text">Examples</span>
1176 </h2>1176 </h2>
1177 <p>An·encoder·that·uses·a·heuristic·to·differentiate·object-like1177 <p>An·encoder·that·uses·a·heuristic·to·differentiate·object-like
1178 lists·of·key-value·pairs·from·plain·lists:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="3174579955-1">(</span><span·class="p"·data-group-id="3174579955-2">[</span><span·class="p"·data-group-id="3174579955-3">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·772,·SHA:·e6c8d50240dd124346e78ab7c3df9df39fc28fec17b493c56d52574e318ebe25·...·]-4">)</span><span·class="p">;</span><span·class="gp·unselectable">1178 lists·of·key-value·pairs·from·plain·lists:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="9503135278-1">(</span><span·class="p"·data-group-id="9503135278-2">[</span><span·class="p"·data-group-id="9503135278-3">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·772,·SHA:·e92833de93790a0de2258c4466e61bef39ea4736e695f9d368e4e822c0110eef·...·]-4">)</span><span·class="p">;</span><span·class="gp·unselectable">
1179 &gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="3174579955-5">(</span><span·class="n">Other</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encode</span><span·class="p"·data-group-id="3174579955-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·287,·SHA:·f8ddc5b38fff3bdcbe55cc3052bc760bbe017f5a3ec4075703e88d5007c954bd·...·]-6">)</span><span·class="p">.</span><span·class="gp·unselectable">1179 &gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="9503135278-5">(</span><span·class="n">Other</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encode</span><span·class="p"·data-group-id="9503135278-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·287,·SHA:·ddbc4022c763383cfa4ff437f365574a55d48d6f5b0bea94b8d7dcd84c77fb96·...·]-6">)</span><span·class="p">.</span><span·class="gp·unselectable">
1180 &gt;·</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="3174579955-7">(</span><span·class="n">Value</span><span·class="p"·data-group-id="3174579955-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encode</[·...·truncated·by·diffoscope;·len:·783,·SHA:·1faebc27a767ec2c351fcbf3f6bfc31724fef6e78cd0e8e4448709cf124afabb·...·]-8">)</span><span·class="p">.</span><span·class="gp·unselectable">1180 &gt;·</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="9503135278-7">(</span><span·class="n">Value</span><span·class="p"·data-group-id="9503135278-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encode</[·...·truncated·by·diffoscope;·len:·783,·SHA:·1b6a530029cc9e9e64d13ad004894218b03ca7038f69269a0787a475ac847a4d·...·]-8">)</span><span·class="p">.</span><span·class="gp·unselectable">
1181 &gt;·</span><span·class="nf">iolist_to_binary</span><span·class="p"·data-group-id="3174579955-11">(</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="3174579955-12">(</span><span·class="p"·data-group-id="3174579955-13">[</span><span·class="p"·data-group-id="3174579955-14">{</span><span·class="ss">a</span><span·cla[·...·truncated·by·diffoscope;·len:·604,·SHA:·edde36882b7096bc1c01584bb01b8934fb87c627ed51869925db55eed203af98·...·]-11">)</span><span·class="p">.</span><span·class="w">1181 &gt;·</span><span·class="nf">iolist_to_binary</span><span·class="p"·data-group-id="9503135278-11">(</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="9503135278-12">(</span><span·class="p"·data-group-id="9503135278-13">[</span><span·class="p"·data-group-id="9503135278-14">{</span><span·class="ss">a</span><span·cla[·...·truncated·by·diffoscope;·len:·604,·SHA:·669ef201af9e829e9dfd18909638999694b5e379573c8c37d7c6f75a6c859e29·...·]-11">)</span><span·class="p">.</span><span·class="w">
1182 </span><span·class="p"·data-group-id="3174579955-17">&lt;&lt;</span><span·class="s">&quot;{\&quot;a\&quot;:[],\&quot;b\&quot;:1}&quot;</span><span·class="p"·data-group-id="3174579955-17">&gt;&gt;</span></code></pre>1182 </span><span·class="p"·data-group-id="9503135278-17">&lt;&lt;</span><span·class="s">&quot;{\&quot;a\&quot;:[],\&quot;b\&quot;:1}&quot;</span><span·class="p"·data-group-id="9503135278-17">&gt;&gt;</span></code></pre>
1183 ··</section>1183 ··</section>
1184 </section>1184 </section>
1185 <section·class="detail"·id="encode_atom/2">1185 <section·class="detail"·id="encode_atom/2">
  
1186 ··<div·class="detail-header">1186 ··<div·class="detail-header">
1187 ····<a·href="#encode_atom/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1187 ····<a·href="#encode_atom/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1188 ······<i·class="ri-link-m"·aria-hidden="true"></i>1188 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1542, 19 lines modifiedOffset 1542, 19 lines modified
  
1542 ······<div·class="specs">1542 ······<div·class="specs">
  
1543 ··········<pre·translate="no"><span·class="attribute">-spec</span>·format(Term·::·<a·href="#t:encode_value/0">encode_value</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:iodata/0">iodata</a>().</pre>1543 ··········<pre·translate="no"><span·class="attribute">-spec</span>·format(Term·::·<a·href="#t:encode_value/0">encode_value</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:iodata/0">iodata</a>().</pre>
  
1544 ······</div>1544 ······</div>
  
1545 <p>Generates·formatted·JSON·corresponding·to·<code·class="inline">Term</code>.</p><p>Similiar·to·<a·href="#encode/1"><code·class="inline">encode/1</code></a>·but·with·added·whitespaces·for·formatting.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="9991643782-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9991643782-2">(</span><span·class="p"·data-group-id="9991643782-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·539,·SHA:·1eac9770a6e9daa640fee99e67ec033d7438d5cb91fb335b8671828b0c697443·...·]2-1">)</span><span·class="p">.</span><span·class="w">1545 <p>Generates·formatted·JSON·corresponding·to·<code·class="inline">Term</code>.</p><p>Similiar·to·<a·href="#encode/1"><code·class="inline">encode/1</code></a>·but·with·added·whitespaces·for·formatting.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="8056488762-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8056488762-2">(</span><span·class="p"·data-group-id="8056488762-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·539,·SHA:·7e0aad2dbad3b19bf7d710b3baa519b5591af018aef9d4fe8fb63bc09a354235·...·]2-1">)</span><span·class="p">.</span><span·class="w">
1546 </span><span·class="p"·data-group-id="9991643782-5">{</span><span·class="w">1546 </span><span·class="p"·data-group-id="8056488762-5">{</span><span·class="w">
1547 ··</span><span·class="s">&quot;baz&quot;</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">52</span><span·class="p">,</span><span·class="w">1547 ··</span><span·class="s">&quot;baz&quot;</span><span·class="p">:</span><span·class="w">·</span><span·class="mi">52</span><span·class="p">,</span><span·class="w">
1548 ··</span><span·class="s">&quot;foo&quot;</span><span·class="p">:</span><span·class="w">·</span><span·class="s">&quot;bar&quot;</span><span·class="w">1548 ··</span><span·class="s">&quot;foo&quot;</span><span·class="p">:</span><span·class="w">·</span><span·class="s">&quot;bar&quot;</span><span·class="w">
1549 </span><span·class="p"·data-group-id="9991643782-5">}</span><span·class="w">1549 </span><span·class="p"·data-group-id="8056488762-5">}</span><span·class="w">
1550 </span><span·class="ss">ok</span></code></pre>1550 </span><span·class="ss">ok</span></code></pre>
1551 ··</section>1551 ··</section>
1552 </section>1552 </section>
1553 <section·class="detail"·id="format/2">1553 <section·class="detail"·id="format/2">
  
1554 ··<div·class="detail-header">1554 ··<div·class="detail-header">
1555 ····<a·href="#format/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1555 ····<a·href="#format/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1607, 28 lines modifiedOffset 1607, 28 lines modified
1607 ··········<pre·translate="no"><span·class="attribute">-spec</span>·format(Term·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Encoder·::·<a·href="#t:formatter/0">formatter</a>(),·Options·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:iodata/0">iodata</a>().</pre>1607 ··········<pre·translate="no"><span·class="attribute">-spec</span>·format(Term·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Encoder·::·<a·href="#t:formatter/0">formatter</a>(),·Options·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:iodata/0">iodata</a>().</pre>
  
1608 ······</div>1608 ······</div>
  
1609 <p>Generates·formatted·JSON·corresponding·to·<code·class="inline">Term</code>.</p><p>Similar·to·<a·href="#encode/2"><code·class="inline">encode/2</code></a>,·can·be·customised·with·the·<code·class="inline">Encoder</code>·callback·and·<code·class="inline">Options</code>.</p><p><code·class="inline">Options</code>·can·include·'indent'·to·specify·number·of·spaces·per·level·and·'max'·which·loosely·limits1609 <p>Generates·formatted·JSON·corresponding·to·<code·class="inline">Term</code>.</p><p>Similar·to·<a·href="#encode/2"><code·class="inline">encode/2</code></a>,·can·be·customised·with·the·<code·class="inline">Encoder</code>·callback·and·<code·class="inline">Options</code>.</p><p><code·class="inline">Options</code>·can·include·'indent'·to·specify·number·of·spaces·per·level·and·'max'·which·loosely·limits
1610 the·width·of·lists.</p><p>The·<code·class="inline">Encoder</code>·will·get·a·'State'·argument·which·contains·the·'Options'·maps·merged·with·other·data1610 the·width·of·lists.</p><p>The·<code·class="inline">Encoder</code>·will·get·a·'State'·argument·which·contains·the·'Options'·maps·merged·with·other·data
1611 when·recursing·through·'Term'.</p><p><a·href="#format_value/3"><code·class="inline">format_value/3</code></a>·or·various·<code·class="inline">encode_*</code>·functions·in·this·module·can·be·used1611 when·recursing·through·'Term'.</p><p><a·href="#format_value/3"><code·class="inline">format_value/3</code></a>·or·various·<code·class="inline">encode_*</code>·functions·in·this·module·can·be·used
1612 to·help·in·constructing·such·callbacks.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">formatter</span><span·class="p"·data-group-id="9822647735-1">(</span><span·class="p"·data-group-id="9822647735-2">{</span><span·class="ss">posix_time</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SysTimeSecs</span><span·class="p"·data-group-id="9822647735-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·182,·SHA:·74d8dbc83ba2b1bbf069eb37632dc56e2ecf97334b52f3bdf0a1058beb034049·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1612 to·help·in·constructing·such·callbacks.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">formatter</span><span·class="p"·data-group-id="0958633970-1">(</span><span·class="p"·data-group-id="0958633970-2">{</span><span·class="ss">posix_time</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SysTimeSecs</span><span·class="p"·data-group-id="0958633970-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·182,·SHA:·a724a21f24d39fd7d7b7db524f699056b1afb1b406ae05589b540a1490ced932·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1613 ····</span><span·class="n">TimeStr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="9822647735-3">(</span><span·class="n">SysTimeSecs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9822647735-4">[</span><span·class="p"·data-group-id="9822647735-5">{</span><span·class="ss">offset</span><span·class="p">[·...·truncated·by·diffoscope;·len:·215,·SHA:·75823edbb65b790b6f389d0fc68df7fa5fc45ff683240acb106a9432348bca08·...·]-3">)</span><span·class="p">,</span><span·class="w">1613 ····</span><span·class="n">TimeStr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">system_time_to_rfc3339</span><span·class="p"·data-group-id="0958633970-3">(</span><span·class="n">SysTimeSecs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0958633970-4">[</span><span·class="p"·data-group-id="0958633970-5">{</span><span·class="ss">offset</span><span·class="p">[·...·truncated·by·diffoscope;·len:·215,·SHA:·57fabf4189e60e1f6f2d88802527f0b1403a9ea4c74b9a0470f3dc74b5bc139e·...·]-3">)</span><span·class="p">,</span><span·class="w">
1614 ····</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format_value</span><span·class="p"·data-group-id="9822647735-6">(</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_binary</span><span·class="p"·data-group-id="9822647735-7">(</span><span·class="n">TimeStr</span><span·class="p"·data-group-id="9822647735-7">)</span[·...·truncated·by·diffoscope;·len:·195,·SHA:·68085a92e6573d1d160ea11505ac4912147d11a401d3e7159c9c7135056efa89·...·]-6">)</span><span·class="p">;</span><span·class="gp·unselectable">1614 ····</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format_value</span><span·class="p"·data-group-id="0958633970-6">(</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_binary</span><span·class="p"·data-group-id="0958633970-7">(</span><span·class="n">TimeStr</span><span·class="p"·data-group-id="0958633970-7">)</span[·...·truncated·by·diffoscope;·len:·195,·SHA:·2b19861b17450c8aa9331a76b8a7cd9497bc185cba89ac66502b9771a38ff202·...·]-6">)</span><span·class="p">;</span><span·class="gp·unselectable">
1615 &gt;·</span><span·class="nf">formatter</span><span·class="p"·data-group-id="9822647735-8">(</span><span·class="n">Other</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="9822647735-8">)</span>[·...·truncated·by·diffoscope;·len:·439,·SHA:·b2f13480eddf85c4da9cc7ade4610e434413aedceb4105430785ce163b8b7256·...·]-9">)</span><span·class="p">.</span><span·class="w">1615 &gt;·</span><span·class="nf">formatter</span><span·class="p"·data-group-id="0958633970-8">(</span><span·class="n">Other</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Encode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="0958633970-8">)</span>[·...·truncated·by·diffoscope;·len:·439,·SHA:·30e518280a88aa68b418f8845a79955699547a29aa310162e6e9da2d0592a658·...·]-9">)</span><span·class="p">.</span><span·class="w">
1616 </span><span·class="o">&gt;</span><span·class="gp·unselectable">1616 </span><span·class="o">&gt;</span><span·class="gp·unselectable">
Max diff block lines reached; 2152/48919 bytes (4.40%) of diff not shown.
164 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/lists.html
    
Offset 1157, 16 lines modifiedOffset 1157, 16 lines modified
  
1157 ······<div·class="specs">1157 ······<div·class="specs">
  
1158 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append(ListOfLists)·->·List1·when·ListOfLists·::·[List],·List·::·[T],·List1·::·[T],·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1158 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append(ListOfLists)·->·List1·when·ListOfLists·::·[List],·List·::·[T],·List1·::·[T],·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1159 ······</div>1159 ······</div>
  
1160 <p>Returns·a·list·in·which·all·the·sublists·of·<code·class="inline">ListOfLists</code>·have·been·appended.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="0328898583-1">(</span><span·class="p"·data-group-id="0328898583-2">[</span><span·class="p"·data-group-id="0328898583-3">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·767,·SHA:·9a39ffcdc1db4211f7ad1e2ed308206a98277e31e4ca2bce7e6599f2b3c58a6e·...·]-1">)</span><span·class="p">.</span><span·class="w">1160 <p>Returns·a·list·in·which·all·the·sublists·of·<code·class="inline">ListOfLists</code>·have·been·appended.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1829015608-1">(</span><span·class="p"·data-group-id="1829015608-2">[</span><span·class="p"·data-group-id="1829015608-3">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·767,·SHA:·384ccef74383a39645cf792dc56a8b4e2662f56552f85c9662796269c546a100·...·]-1">)</span><span·class="p">.</span><span·class="w">
1161 </span><span·class="p"·data-group-id="0328898583-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·7581518ca21b6300baac46c3e90301278e5b52e189cbad3289ceb4d54be91b75·...·]-6">]</span></code></pre>1161 </span><span·class="p"·data-group-id="1829015608-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·e9abd566a1b01bf1e5a8355cb0e95209ea114447424fdf5708645160123403b2·...·]-6">]</span></code></pre>
1162 ··</section>1162 ··</section>
1163 </section>1163 </section>
1164 <section·class="detail"·id="append/2">1164 <section·class="detail"·id="append/2">
  
1165 ··<div·class="detail-header">1165 ··<div·class="detail-header">
1166 ····<a·href="#append/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1166 ····<a·href="#append/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1167 ······<i·class="ri-link-m"·aria-hidden="true"></i>1167 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1185, 15 lines modifiedOffset 1185, 15 lines modified
1185 ······<div·class="specs">1185 ······<div·class="specs">
  
1186 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append(List1,·List2)·->·List3·when·List1·::·[T],·List2·::·[T],·List3·::·[T],·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1186 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append(List1,·List2)·->·List3·when·List1·::·[T],·List2·::·[T],·List3·::·[T],·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1187 ······</div>1187 ······</div>
  
1188 <p>Returns·a·new·list·<code·class="inline">List3</code>,·which·is·made·from·the·elements·of·<code·class="inline">List1</code>·followed1188 <p>Returns·a·new·list·<code·class="inline">List3</code>,·which·is·made·from·the·elements·of·<code·class="inline">List1</code>·followed
1189 by·the·elements·of·<code·class="inline">List2</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="9373366435-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;def&quot;</span><span·class="p"·data-group-id="9373366435-1">)</span><span·class="p">.</span><span·class="w">1189 by·the·elements·of·<code·class="inline">List2</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="8286751694-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;def&quot;</span><span·class="p"·data-group-id="8286751694-1">)</span><span·class="p">.</span><span·class="w">
1190 </span><span·class="s">&quot;abcdef&quot;</span></code></pre><p><code·class="inline">lists:append(A,·B)</code>·is·equivalent·to·<code·class="inline">A·++·B</code>.</p>1190 </span><span·class="s">&quot;abcdef&quot;</span></code></pre><p><code·class="inline">lists:append(A,·B)</code>·is·equivalent·to·<code·class="inline">A·++·B</code>.</p>
1191 ··</section>1191 ··</section>
1192 </section>1192 </section>
1193 <section·class="detail"·id="concat/1">1193 <section·class="detail"·id="concat/1">
  
1194 ··<div·class="detail-header">1194 ··<div·class="detail-header">
1195 ····<a·href="#concat/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1195 ····<a·href="#concat/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1214, 15 lines modifiedOffset 1214, 15 lines modified
  
1214 ··········<pre·translate="no"><span·class="attribute">-spec</span>·concat(Things)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()1214 ··········<pre·translate="no"><span·class="attribute">-spec</span>·concat(Things)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>()
1215 ················when·Things·::·[Thing],·Thing·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:float/0">float</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>().</pre>1215 ················when·Things·::·[Thing],·Thing·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:float/0">float</a>()·|·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:string/0">string</a>().</pre>
  
1216 ······</div>1216 ······</div>
  
1217 <p>Concatenates·the·text·representation·of·the·elements·of·<code·class="inline">Things</code>.·The·elements1217 <p>Concatenates·the·text·representation·of·the·elements·of·<code·class="inline">Things</code>.·The·elements
1218 of·<code·class="inline">Things</code>·can·be·atoms,·integers,·floats,·or·strings.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">concat</span><span·class="p"·data-group-id="8361021538-1">(</span><span·class="p"·data-group-id="8361021538-2">[</span><span·class="ss">doc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;/&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</[·...·truncated·by·diffoscope;·len:·255,·SHA:·e9c6b40a0ff4c72a6cfec56da034638b1ba2865a328d7db9005eab44c2d654c5·...·]-1">)</span><span·class="p">.</span><span·class="w">1218 of·<code·class="inline">Things</code>·can·be·atoms,·integers,·floats,·or·strings.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">concat</span><span·class="p"·data-group-id="0666426934-1">(</span><span·class="p"·data-group-id="0666426934-2">[</span><span·class="ss">doc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;/&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</[·...·truncated·by·diffoscope;·len:·255,·SHA:·d9a9b721d668680a2748c0326c0377c5b794d7c90ea4b79346dcc75179f26fa9·...·]-1">)</span><span·class="p">.</span><span·class="w">
1219 </span><span·class="s">&quot;doc/file.3&quot;</span></code></pre>1219 </span><span·class="s">&quot;doc/file.3&quot;</span></code></pre>
1220 ··</section>1220 ··</section>
1221 </section>1221 </section>
1222 <section·class="detail"·id="delete/2">1222 <section·class="detail"·id="delete/2">
  
1223 ··<div·class="detail-header">1223 ··<div·class="detail-header">
1224 ····<a·href="#delete/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1224 ····<a·href="#delete/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1325, 16 lines modifiedOffset 1325, 16 lines modified
  
1325 ······<div·class="specs">1325 ······<div·class="specs">
  
1326 ··········<pre·translate="no"><span·class="attribute">-spec</span>·duplicate(N,·Elem)·->·List·when·N·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Elem·::·T,·List·::·[T],·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1326 ··········<pre·translate="no"><span·class="attribute">-spec</span>·duplicate(N,·Elem)·->·List·when·N·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Elem·::·T,·List·::·[T],·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1327 ······</div>1327 ······</div>
  
1328 <p>Returns·a·list·containing·<code·class="inline">N</code>·copies·of·term·<code·class="inline">Elem</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">duplicate</span><span·class="p"·data-group-id="1729348948-1">(</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">xx</span><span·class="p"·data-group-id="1729348948-1">)</span><span·class="p">.</span><span·class="w">1328 <p>Returns·a·list·containing·<code·class="inline">N</code>·copies·of·term·<code·class="inline">Elem</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">duplicate</span><span·class="p"·data-group-id="1759263802-1">(</span><span·class="mi">5</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">xx</span><span·class="p"·data-group-id="1759263802-1">)</span><span·class="p">.</span><span·class="w">
1329 </span><span·class="p"·data-group-id="1729348948-2">[</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·5c7c680c6e7358ecb007f3681a1015999e7cea48d76e28cf906bcc526095fff0·...·]-2">]</span></code></pre>1329 </span><span·class="p"·data-group-id="1759263802-2">[</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·7402c1e3456875f077e9351cd650760fb07751a4b22a422a3e769614eaa4bbe4·...·]-2">]</span></code></pre>
1330 ··</section>1330 ··</section>
1331 </section>1331 </section>
1332 <section·class="detail"·id="enumerate/1">1332 <section·class="detail"·id="enumerate/1">
  
1333 ··<div·class="detail-header">1333 ··<div·class="detail-header">
1334 ····<a·href="#enumerate/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1334 ····<a·href="#enumerate/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1335 ······<i·class="ri-link-m"·aria-hidden="true"></i>1335 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1421, 20 lines modifiedOffset 1421, 20 lines modified
1421 ·······················T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1421 ·······················T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1422 ······</div>1422 ······</div>
  
1423 <p>Returns·<code·class="inline">List1</code>·with·each·element·<code·class="inline">H</code>·replaced·by·a·tuple·of·form·<code·class="inline">{I,·H}</code>·where1423 <p>Returns·<code·class="inline">List1</code>·with·each·element·<code·class="inline">H</code>·replaced·by·a·tuple·of·form·<code·class="inline">{I,·H}</code>·where
1424 <code·class="inline">I</code>·is·the·position·of·<code·class="inline">H</code>·in·<code·class="inline">List1</code>.·The·enumeration·starts·with·<code·class="inline">Index</code>·and1424 <code·class="inline">I</code>·is·the·position·of·<code·class="inline">H</code>·in·<code·class="inline">List1</code>.·The·enumeration·starts·with·<code·class="inline">Index</code>·and
1425 increases·by·<code·class="inline">Step</code>·in·each·step.</p><p>That·is,·<a·href="#enumerate/3"><code·class="inline">enumerate/3</code></a>·behaves·as·if·it·had·been·defined·as1425 increases·by·<code·class="inline">Step</code>·in·each·step.</p><p>That·is,·<a·href="#enumerate/3"><code·class="inline">enumerate/3</code></a>·behaves·as·if·it·had·been·defined·as
1426 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">enumerate</span><span·class="p"·data-group-id="4733817458-1">(</span><span·class="n">I</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="4733817458-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1426 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">enumerate</span><span·class="p"·data-group-id="8770650082-1">(</span><span·class="n">I</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="8770650082-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1427 ··</span><span·class="p"·data-group-id="4733817458-2">{</span><span·class="n">List1</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</span><span·class="p"·data-group-id="4733817458-2">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·1130,·SHA:·daf336fa7dae2fadb1776ff90ddef9e9b3ba9d19237b017af18d1c822c872329·...·]-3">)</span><span·class="p">,</span><span·class="w">1427 ··</span><span·class="p"·data-group-id="8770650082-2">{</span><span·class="n">List1</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</span><span·class="p"·data-group-id="8770650082-2">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·1130,·SHA:·1cf32520d4ac94ff9728786c5f73ec6688c50cc2703210d10b14f5e3919be59f·...·]-3">)</span><span·class="p">,</span><span·class="w">
1428 ··</span><span·class="n">List1</span><span·class="p">.</span></code></pre><p>The·default·values·for·<code·class="inline">Index</code>·and·<code·class="inline">Step</code>·are·both·<code·class="inline">1</code>.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">enumerate</span><span·class="p"·data-group-id="3033342036-1">(</span><span·class="p"·data-group-id="3033342036-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="3033342036-2">]</span><span·class="p"·data-group-id="3033342036-1">)</span><span·class="p">.</span><span·class="w"> 
1429 </span><span·class="p"·data-group-id="3033342036-3">[</span><span·class="p"·data-group-id="3033342036-4">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="3033342036-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="3033342036-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="3033342036-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="3033342036-6">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="3033342036-6">}</span><span·class="p"·data-group-id="3033342036-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">enumerate</span><span·class="p"·data-group-id="6828077117-1">(</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6828077117-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="6828077117-2">]</span><span·class="p"·data-group-id="6828077117-1">)</span><span·class="p">.</span><span·class="w"> 
1430 </span><span·class="p"·data-group-id="6828077117-3">[</span><span·class="p"·data-group-id="6828077117-4">{</span><span·class="mi">10</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="6828077117-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="6828077117-5">{</span><span·class="mi">11</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="6828077117-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="6828077117-6">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="6828077117-6">}</span><span·class="p"·data-group-id="6828077117-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">enumerate</span><span·class="p"·data-group-id="9665553145-1">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9665553145-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="9665553145-2">]</span><span·class="p"·data-group-id="9665553145-1">)</span><span·class="p">.</span><span·class="w"> 
1431 </span><span·class="p"·data-group-id="9665553145-3">[</span><span·class="p"·data-group-id="9665553145-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="9665553145-4">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·505,·SHA:·5dc2e13b8d9dee870621103ed38210b2e66fe523a167e6edc71a4c2270640150·...·]>1428 ··</span><span·class="n">List1</span><span·class="p">.</span></code></pre><p>The·default·values·for·<code·class="inline">Index</code>·and·<code·class="inline">Step</code>·are·both·<code·class="inline">1</code>.</p><p><em>Examples:</em></p><pre><code·class=[·...·truncated·by·diffoscope;·len:·533,·SHA:·0fd487ee7a80823c71c878e59aae78d1aabb6df2df0622033c8b0b0c07c645ff·...·]>
 1429 </span><span·class="p"·data-group-id="0946513838-3">[</span><span·class="p"·data-group-id="0946513838-4">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="0946513838-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="0946513838-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="0946513838-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="0946513838-6">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="0946513838-6">}</span><span·class="p"·data-group-id="0946513838-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">enumerate</span><span·class="p"·data-group-id="7997085110-1">(</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7997085110-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="7997085110-2">]</span><span·class="p"·data-group-id="7997085110-1">)</span><span·class="p">.</span><span·class="w">
 1430 </span><span·class="p"·data-group-id="7997085110-3">[</span><span·class="p"·data-group-id="7997085110-4">{</span><span·class="mi">10</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7997085110-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="7997085110-5">{</span><span·class="mi">11</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="7997085110-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="7997085110-6">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="7997085110-6">}</span><span·class="p"·data-group-id="7997085110-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">enumerate</span><span·class="p"·data-group-id="2432423044-1">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2432423044-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="2432423044-2">]</span><span·class="p"·data-group-id="2432423044-1">)</span><span·class="p">.</span><span·class="w">
 1431 </span><span·class="p"·data-group-id="2432423044-3">[</span><span·class="p"·data-group-id="2432423044-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="2432423044-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="2432423044-5">{</span><span·class="o">-</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="2432423044-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="2432423044-6">{</span><span·class="o">-</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="2432423044-6">}</span><span·class="p"·data-group-id="2432423044-3">]</span></code></pre>
1432 ··</section>1432 ··</section>
1433 </section>1433 </section>
1434 <section·class="detail"·id="filter/2">1434 <section·class="detail"·id="filter/2">
  
1435 ··<div·class="detail-header">1435 ··<div·class="detail-header">
1436 ····<a·href="#filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1436 ····<a·href="#filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1437 ······<i·class="ri-link-m"·aria-hidden="true"></i>1437 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1491, 23 lines modifiedOffset 1491, 23 lines modified
1491 ·······················Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1491 ·······················Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1492 ······</div>1492 ······</div>
  
1493 <p>Calls·<code·class="inline">Fun(Elem)</code>·on·successive·elements·<code·class="inline">Elem</code>·of·<code·class="inline">List1</code>·in·order·to·update·or1493 <p>Calls·<code·class="inline">Fun(Elem)</code>·on·successive·elements·<code·class="inline">Elem</code>·of·<code·class="inline">List1</code>·in·order·to·update·or
1494 remove·elements·from·<code·class="inline">List1</code>.</p><p><code·class="inline">Fun/1</code>·must·return·either·a·Boolean·or·a·tuple·<code·class="inline">{true,·Value}</code>.·The·function1494 remove·elements·from·<code·class="inline">List1</code>.</p><p><code·class="inline">Fun/1</code>·must·return·either·a·Boolean·or·a·tuple·<code·class="inline">{true,·Value}</code>.·The·function
1495 returns·the·list·of·elements·for·which·<code·class="inline">Fun</code>·returns·a·new·value,·where·a·value1495 returns·the·list·of·elements·for·which·<code·class="inline">Fun</code>·returns·a·new·value,·where·a·value
1496 of·<code·class="inline">true</code>·is·synonymous·with·<code·class="inline">{true,·Elem}</code>.</p><p>That·is,·<code·class="inline">filtermap</code>·behaves·as·if·it·had·been·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">filtermap</span><span·class="p"·data-group-id="3457639727-1">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="3457639727-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1496 of·<code·class="inline">true</code>·is·synonymous·with·<code·class="inline">{true,·Elem}</code>.</p><p>That·is,·<code·class="inline">filtermap</code>·behaves·as·if·it·had·been·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">filtermap</span><span·class="p"·data-group-id="0863777044-1">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="0863777044-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1497 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="3457639727-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3457639727-3">(</span><span·class="n">Elem</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="3457639727-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1497 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="0863777044-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0863777044-3">(</span><span·class="n">Elem</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0863777044-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1498 ·······················</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p"·data-group-id="3457639727-4">(</span><span·class="n">Elem</span><span·class="p"·data-group-id="3457639727-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">1498 ·······················</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Fun</span><span·class="p"·data-group-id="0863777044-4">(</span><span·class="n">Elem</span><span·class="p"·data-group-id="0863777044-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1499 ···························</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">;</span><span·class="w">1499 ···························</span><span·class="ss">false</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">;</span><span·class="w">
1500 ···························</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3457639727-5">[</span><span·class="n">Elem</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="3457639727-5">]</span><span·class="p">;</span><span·class="w">1500 ···························</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0863777044-5">[</span><span·class="n">Elem</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="0863777044-5">]</span><span·class="p">;</span><span·class="w">
1501 ···························</span><span·class="p"·data-group-id="3457639727-6">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="3457639727-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·147,·SHA:·6902af930ff953f5631407259be4cce803eb9b7a61ebcf0e7066c55fb3ad6ffd·...·]-7">]</span><span·class="w">1501 ···························</span><span·class="p"·data-group-id="0863777044-6">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="0863777044-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·147,·SHA:·07223f381c77e9dfb90a18ceb9adbaae42adc7bfa3fccb0c0ecd169b85f278dd·...·]-7">]</span><span·class="w">
1502 ·······················</span><span·class="k">end</span><span·class="w">1502 ·······················</span><span·class="k">end</span><span·class="w">
1503 ················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3457639727-8">[</span><span·class="p"·data-group-id="3457639727-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="3457639727-2">)</span><span·class="p">.</span></code></pre><p><em>Example:[·...·truncated·by·diffoscope;·len:·1819,·SHA:·6bff3abe2e6502186f185984350c5172bfd365800cd8f8ef433f2f782136dfab·...·]-1">)</span><span·class="p">.</span><span·class="w">1503 ················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0863777044-8">[</span><span·class="p"·data-group-id="0863777044-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="0863777044-2">)</span><span·class="p">.</span></code></pre><p><em>Example:[·...·truncated·by·diffoscope;·len:·1819,·SHA:·3ff5b60c4af77f44a23ddb392142a280916a8668603450e8145750c451bc366c·...·]-1">)</span><span·class="p">.</span><span·class="w">
1504 </span><span·class="p"·data-group-id="4657133248-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4657133248-5">]</span></code></pre>1504 </span><span·class="p"·data-group-id="2134796409-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2134796409-5">]</span></code></pre>
1505 ··</section>1505 ··</section>
1506 </section>1506 </section>
1507 <section·class="detail"·id="flatlength/1">1507 <section·class="detail"·id="flatlength/1">
  
1508 ··<div·class="detail-header">1508 ··<div·class="detail-header">
1509 ····<a·href="#flatlength/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1509 ····<a·href="#flatlength/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1510 ······<i·class="ri-link-m"·aria-hidden="true"></i>1510 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1554, 17 lines modifiedOffset 1554, 17 lines modified
1554 ··········<pre·translate="no"><span·class="attribute">-spec</span>·flatmap(Fun,·List1)·->·List21554 ··········<pre·translate="no"><span·class="attribute">-spec</span>·flatmap(Fun,·List1)·->·List2
1555 ·················when·Fun·::·fun((A)·->·[B]),·List1·::·[A],·List2·::·[B],·A·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·B·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>1555 ·················when·Fun·::·fun((A)·->·[B]),·List1·::·[A],·List2·::·[B],·A·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·B·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
1556 ······</div>1556 ······</div>
  
1557 <p>Takes·a·function·from·<code·class="inline">A</code>s·to·lists·of·<code·class="inline">B</code>s,·and·a·list·of·<code·class="inline">A</code>s·(<code·class="inline">List1</code>)·and1557 <p>Takes·a·function·from·<code·class="inline">A</code>s·to·lists·of·<code·class="inline">B</code>s,·and·a·list·of·<code·class="inline">A</code>s·(<code·class="inline">List1</code>)·and
1558 produces·a·list·of·<code·class="inline">B</code>s·by·applying·the·function·to·every·element·in·<code·class="inline">List1</code>·and1558 produces·a·list·of·<code·class="inline">B</code>s·by·applying·the·function·to·every·element·in·<code·class="inline">List1</code>·and
1559 appending·the·resulting·lists.</p><p>That·is,·<code·class="inline">flatmap</code>·behaves·as·if·it·had·been·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">flatmap</span><span·class="p"·data-group-id="3375122622-1">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="3375122622-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1559 appending·the·resulting·lists.</p><p>That·is,·<code·class="inline">flatmap</code>·behaves·as·if·it·had·been·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">flatmap</span><span·class="p"·data-group-id="3238310005-1">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="3238310005-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1560 ····</span><span·class="nf">append</span><span·class="p"·data-group-id="3375122622-2">(</span><span·class="nf">map</span><span·class="p"·data-group-id="3375122622-3">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="3375122622-3">)</span>[·...·truncated·by·diffoscope;·len:·1072,·SHA:·b44af339dc7050ac0607e15436c4ee49f9bc37fb563bbe7974303a9b950fdb81·...·]-1">)</span><span·class="p">.</span><span·class="w">1560 ····</span><span·class="nf">append</span><span·class="p"·data-group-id="3238310005-2">(</span><span·class="nf">map</span><span·class="p"·data-group-id="3238310005-3">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="3238310005-3">)</span>[·...·truncated·by·diffoscope;·len:·1072,·SHA:·30bae6fcdaf8667278751092e22e03d8136eadaf77e3c3beafbec958e388a32d·...·]-1">)</span><span·class="p">.</span><span·class="w">
1561 </span><span·class="p"·data-group-id="2508257884-5">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="[·...·truncated·by·diffoscope;·len:·77,·SHA:·77eafd5389e30009b62a9ba1216ed3d4e77681c51c9a420fce8fbfb8ffa558de·...·]-5">]</span></code></pre>1561 </span><span·class="p"·data-group-id="7627221796-5">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">c</span><span·class="[·...·truncated·by·diffoscope;·len:·77,·SHA:·354b14a09dfdd17a574b508f0daa0b1220abd78551701b7f9d7f088437fa0127·...·]-5">]</span></code></pre>
1562 ··</section>1562 ··</section>
1563 </section>1563 </section>
1564 <section·class="detail"·id="flatten/1">1564 <section·class="detail"·id="flatten/1">
Max diff block lines reached; 127328/168065 bytes (75.76%) of diff not shown.
205 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/maps.html
    
Offset 731, 18 lines modifiedOffset 731, 18 lines modified
731 ····················Pred·::·fun((Key,·Value)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()),731 ····················Pred·::·fun((Key,·Value)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()),
732 ····················MapOrIter·::·#{Key·=>·Value}·|·<a·href="#t:iterator/2">iterator</a>(Key,·Value),732 ····················MapOrIter·::·#{Key·=>·Value}·|·<a·href="#t:iterator/2">iterator</a>(Key,·Value),
733 ····················Map·::·#{Key·=>·Value}.</pre>733 ····················Map·::·#{Key·=>·Value}.</pre>
  
734 ······</div>734 ······</div>
  
735 <p>Returns·a·map·<code·class="inline">Map</code>·for·which·predicate·<code·class="inline">Pred</code>·holds·true·in·<code·class="inline">MapOrIter</code>.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">MapOrIter</code>·is·not·a·map·or735 <p>Returns·a·map·<code·class="inline">Map</code>·for·which·predicate·<code·class="inline">Pred</code>·holds·true·in·<code·class="inline">MapOrIter</code>.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">MapOrIter</code>·is·not·a·map·or
736 valid·iterator,·or·with·<code·class="inline">badarg</code>·if·<code·class="inline">Pred</code>·is·not·a·function·of·arity·2.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1808514196-1">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·813,·SHA:·66dcf9d53c5983c674daea631a63f717354cc4989190c1aa4e21d628e7207036·...·]-1">}</span><span·class="p">,</span><span·class="w">736 valid·iterator,·or·with·<code·class="inline">badarg</code>·if·<code·class="inline">Pred</code>·is·not·a·function·of·arity·2.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2438643160-1">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·813,·SHA:·23cd96884ef19284970236b58c88fe8636fb14f97afbabf829adab2aed8ef854·...·]-1">}</span><span·class="p">,</span><span·class="w">
737 ··</span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1808514196-2">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="1808514196-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">is_atom</span><s[·...·truncated·by·diffoscope;·len:·425,·SHA:·e9b0ad739fcf8caaa1712c6c7242c4d08b49387ddb4ad1e0ff7a123c686d330d·...·]-4">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">737 ··</span><span·class="n">Pred</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2438643160-2">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="2438643160-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">is_atom</span><s[·...·truncated·by·diffoscope;·len:·425,·SHA:·94844a91b7023f017c5ae60fe43a86e3c8883774983403ba8df5e38047433687·...·]-4">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
738 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="1808514196-5">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="n">M</span><span·class="p"·data-group-id="1808514196-5">)</span><span·class="p">.</span><span·class="w">738 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="2438643160-5">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="n">M</span><span·class="p"·data-group-id="2438643160-5">)</span><span·class="p">.</span><span·class="w">
739 </span><span·class="p"·data-group-id="1808514196-6">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">c</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·d05686edabefc7e976ab210077fbe19663f12d9a3dcf5e8889daa05c2fd3539c·...·]-6">}</span></code></pre>739 </span><span·class="p"·data-group-id="2438643160-6">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">c</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·a9c8c54c8bc10327615dbb5b65bb593b127b543e694751d7e8a9415ba27ce880·...·]-6">}</span></code></pre>
740 ··</section>740 ··</section>
741 </section>741 </section>
742 <section·class="detail"·id="filtermap/2">742 <section·class="detail"·id="filtermap/2">
  
743 ··<div·class="detail-header">743 ··<div·class="detail-header">
744 ····<a·href="#filtermap/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">744 ····<a·href="#filtermap/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
745 ······<i·class="ri-link-m"·aria-hidden="true"></i>745 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 771, 18 lines modifiedOffset 771, 18 lines modified
771 ······</div>771 ······</div>
  
772 <p>Returns·a·map·<code·class="inline">Map</code>·that·is·the·result·of·calling·<code·class="inline">Fun(Key,·Value1)</code>·for·every772 <p>Returns·a·map·<code·class="inline">Map</code>·that·is·the·result·of·calling·<code·class="inline">Fun(Key,·Value1)</code>·for·every
773 <code·class="inline">Key</code>·to·value·<code·class="inline">Value1</code>·association·in·<code·class="inline">MapOrIter</code>·in·any·order.</p><p>If·<code·class="inline">Fun(Key,·Value1)</code>·returns·<code·class="inline">true</code>,·the·association·is·copied·to·the·result773 <code·class="inline">Key</code>·to·value·<code·class="inline">Value1</code>·association·in·<code·class="inline">MapOrIter</code>·in·any·order.</p><p>If·<code·class="inline">Fun(Key,·Value1)</code>·returns·<code·class="inline">true</code>,·the·association·is·copied·to·the·result
774 map.·If·it·returns·<code·class="inline">false</code>,·the·association·is·not·copied.·If·it·returns774 map.·If·it·returns·<code·class="inline">false</code>,·the·association·is·not·copied.·If·it·returns
775 <code·class="inline">{true,·NewValue}</code>,·the·value·for·<code·class="inline">Key</code>·is·replaced·with·<code·class="inline">NewValue</code>·in·the775 <code·class="inline">{true,·NewValue}</code>,·the·value·for·<code·class="inline">Key</code>·is·replaced·with·<code·class="inline">NewValue</code>·in·the
776 result·map.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">MapOrIter</code>·is·not·a·map·or776 result·map.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">MapOrIter</code>·is·not·a·map·or
777 valid·iterator,·or·with·<code·class="inline">badarg</code>·if·<code·class="inline">Fun</code>·is·not·a·function·of·arity·2.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1630495203-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="1630495203-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_atom</span><sp[·...·truncated·by·diffoscope;·len:·976,·SHA:·5bbe9f088f0340089e380cff460ddae4477ba2b7db99fca7b1d814f3b5bf42c3·...·]03-5">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">777 valid·iterator,·or·with·<code·class="inline">badarg</code>·if·<code·class="inline">Fun</code>·is·not·a·function·of·arity·2.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9975372103-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="9975372103-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_atom</span><sp[·...·truncated·by·diffoscope;·len:·976,·SHA:·b2959dc6bee96d9172236ebb0c4aa5e1137eea512b7471578b95752cc41ca307·...·]03-5">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
778 ··</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1630495203-6">#{</span><span·class="ss">k1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;k2&quot;</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·305,·SHA:·00c65c99f3320f7bfae1e92d082f3a69220736fe8d9d0c59a675b3700511d399·...·]03-6">}</span><span·class="p">,</span><span·class="w">778 ··</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9975372103-6">#{</span><span·class="ss">k1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;k2&quot;</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·305,·SHA:·0aee74fa6e141a6415e1cfdeb28b668be907ba6f42a632085d9f6891b8707ead·...·]03-6">}</span><span·class="p">,</span><span·class="w">
779 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">filtermap</span><span·class="p"·data-group-id="1630495203-7">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="1630495203-7">)</span><span·class="p">.</span><span·class="w">779 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">filtermap</span><span·class="p"·data-group-id="9975372103-7">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="9975372103-7">)</span><span·class="p">.</span><span·class="w">
780 </span><span·class="p"·data-group-id="1630495203-8">#{</span><span·class="ss">k1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;k2&quot;</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·95,·SHA:·6b376876b8a6c7a05be9bddf395f101ad3a6a6fef2f9cb09140904edd7440221·...·]03-8">}</span></code></pre>780 </span><span·class="p"·data-group-id="9975372103-8">#{</span><span·class="ss">k1</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;k2&quot;</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·95,·SHA:·f482da4cefca152718c0216927001600d811adc35a5635fae4c3b47844f743cd·...·]03-8">}</span></code></pre>
781 ··</section>781 ··</section>
782 </section>782 </section>
783 <section·class="detail"·id="find/2">783 <section·class="detail"·id="find/2">
  
784 ··<div·class="detail-header">784 ··<div·class="detail-header">
785 ····<a·href="#find/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">785 ····<a·href="#find/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
786 ······<i·class="ri-link-m"·aria-hidden="true"></i>786 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 803, 18 lines modifiedOffset 803, 18 lines modified
803 ······<div·class="specs">803 ······<div·class="specs">
  
804 ··········<pre·translate="no"><span·class="attribute">-spec</span>·find(Key,·Map)·->·{ok,·Value}·|·error·when·Map·::·#{Key·=>·Value,·_·=>·_}.</pre>804 ··········<pre·translate="no"><span·class="attribute">-spec</span>·find(Key,·Map)·->·{ok,·Value}·|·error·when·Map·::·#{Key·=>·Value,·_·=>·_}.</pre>
  
805 ······</div>805 ······</div>
  
806 <p>Returns·a·tuple·<code·class="inline">{ok,·Value}</code>,·where·<code·class="inline">Value</code>·is·the·value·associated·with·<code·class="inline">Key</code>,806 <p>Returns·a·tuple·<code·class="inline">{ok,·Value}</code>,·where·<code·class="inline">Value</code>·is·the·value·associated·with·<code·class="inline">Key</code>,
807 or·<code·class="inline">error</code>·if·no·value·is·associated·with·<code·class="inline">Key</code>·in·<code·class="inline">Map</code>.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">Map</code>·is·not·a·map.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6039065758-1">#{</span><span·class="s">&quot;hi&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="6039065758-1">}</span><span·class="p">,</span><span·class="w">807 or·<code·class="inline">error</code>·if·no·value·is·associated·with·<code·class="inline">Key</code>·in·<code·class="inline">Map</code>.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">Map</code>·is·not·a·map.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3827522747-1">#{</span><span·class="s">&quot;hi&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="3827522747-1">}</span><span·class="p">,</span><span·class="w">
808 ··</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;hi&quot;</span><span·class="p">,</span><span·class="w">808 ··</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;hi&quot;</span><span·class="p">,</span><span·class="w">
809 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="6039065758-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="6039065758-2">)</span><span·class="p">.</span><span·class="w">809 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="3827522747-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="3827522747-2">)</span><span·class="p">.</span><span·class="w">
810 </span><span·class="p"·data-group-id="6039065758-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="6039065758-3">}</span></code></pre>810 </span><span·class="p"·data-group-id="3827522747-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="3827522747-3">}</span></code></pre>
811 ··</section>811 ··</section>
812 </section>812 </section>
813 <section·class="detail"·id="fold/3">813 <section·class="detail"·id="fold/3">
  
814 ··<div·class="detail-header">814 ··<div·class="detail-header">
815 ····<a·href="#fold/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">815 ····<a·href="#fold/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
816 ······<i·class="ri-link-m"·aria-hidden="true"></i>816 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 845, 17 lines modifiedOffset 845, 17 lines modified
845 ······</div>845 ······</div>
  
846 <p>Calls·<code·class="inline">F(Key,·Value,·AccIn)</code>·for·every·<code·class="inline">Key</code>·to·value·<code·class="inline">Value</code>·association·in846 <p>Calls·<code·class="inline">F(Key,·Value,·AccIn)</code>·for·every·<code·class="inline">Key</code>·to·value·<code·class="inline">Value</code>·association·in
847 <code·class="inline">MapOrIter</code>·in·any·order.·Function·<code·class="inline">fun·F/3</code>·must·return·a·new·accumulator,847 <code·class="inline">MapOrIter</code>·in·any·order.·Function·<code·class="inline">fun·F/3</code>·must·return·a·new·accumulator,
848 which·is·passed·to·the·next·successive·call.·This·function·returns·the·final848 which·is·passed·to·the·next·successive·call.·This·function·returns·the·final
849 value·of·the·accumulator.·The·initial·accumulator·value·<code·class="inline">Init</code>·is·returned·if849 value·of·the·accumulator.·The·initial·accumulator·value·<code·class="inline">Init</code>·is·returned·if
850 the·map·is·empty.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">MapOrIter</code>·is·not·a·map·or850 the·map·is·empty.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">MapOrIter</code>·is·not·a·map·or
851 valid·iterator,·or·with·<code·class="inline">badarg</code>·if·<code·class="inline">Fun</code>·is·not·a·function·of·arity·3.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0487554089-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p">,</span><span·class="n">AccIn</span><span·class="p"·data-group-id="0487554089-1">)</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·167,·SHA:·ee22f713ae99d3ad152f094ead6e5c8662c256ceaf7bd92a565c90bd3c752d31·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">AccIn</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">V</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">851 valid·iterator,·or·with·<code·class="inline">badarg</code>·if·<code·class="inline">Fun</code>·is·not·a·function·of·arity·3.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9621930070-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p">,</span><span·class="n">AccIn</span><span·class="p"·data-group-id="9621930070-1">)</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·167,·SHA:·f2d9e75009aa58c0f4e74a36a462afa7d5cf95610a34b02b246a4150a3945471·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">AccIn</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">V</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
852 ··</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0487554089-3">#{</span><span·class="s">&quot;k1&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;k2&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·318,·SHA:·24df2503f10d20905966d77101f00afb1485790ebdf8e1c839ec4aecaf5b0138·...·]-3">}</span><span·class="p">,</span><span·class="w">852 ··</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9621930070-3">#{</span><span·class="s">&quot;k1&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;k2&quot;</span><span·clas[·...·truncated·by·diffoscope;·len:·318,·SHA:·121821e2394de939aeaafc56bb499e6bd8dee0d8d0ab3fb7bd5fbe98c9f828bf·...·]-3">}</span><span·class="p">,</span><span·class="w">
853 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">fold</span><span·class="p"·data-group-id="0487554089-4">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="0487554089-4">)</span><span·class="p">.</span><span·class="w">853 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">fold</span><span·class="p"·data-group-id="9621930070-4">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="9621930070-4">)</span><span·class="p">.</span><span·class="w">
854 </span><span·class="mi">6</span></code></pre>854 </span><span·class="mi">6</span></code></pre>
855 ··</section>855 ··</section>
856 </section>856 </section>
857 <section·class="detail"·id="foreach/2">857 <section·class="detail"·id="foreach/2">
  
858 ··<div·class="detail-header">858 ··<div·class="detail-header">
859 ····<a·href="#foreach/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">859 ····<a·href="#foreach/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 910, 16 lines modifiedOffset 910, 16 lines modified
910 ······<div·class="specs">910 ······<div·class="specs">
  
911 ··········<pre·translate="no"><span·class="attribute">-spec</span>·from_keys(Keys,·Value)·->·Map·when·Keys·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0">list</a>(),·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>().</pre>911 ··········<pre·translate="no"><span·class="attribute">-spec</span>·from_keys(Keys,·Value)·->·Map·when·Keys·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0">list</a>(),·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>().</pre>
  
912 ······</div>912 ······</div>
  
913 <p>Takes·a·list·of·keys·and·a·value·and·builds·a·map·where·all·keys·point·to·the913 <p>Takes·a·list·of·keys·and·a·value·and·builds·a·map·where·all·keys·point·to·the
914 same·value.·The·key·can·be·in·any·order,·and·keys·and·value·can·be·of·any·term.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Keys</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2125281386-1">[</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;c&quot;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·351,·SHA:·c6236a6980006ac79c9905ce2149c232cf0bde77ee80e7a955010713a74ba9c0·...·]-2">)</span><span·class="p">.</span><span·class="w">914 same·value.·The·key·can·be·in·any·order,·and·keys·and·value·can·be·of·any·term.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Keys</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5834142885-1">[</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;c&quot;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·351,·SHA:·350aafb27402274385716ad408c152255aff03396a3fa28960b430d2b09959c2·...·]-2">)</span><span·class="p">.</span><span·class="w">
915 </span><span·class="p"·data-group-id="2125281386-3">#{</span><span·class="s">&quot;a&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="s">&quot;b&quot;</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·270,·SHA:·071a18e52f0ba821ad16e8fa5f050c074d36543e2cbbd696ca56057792706414·...·]-3">}</span></code></pre>915 </span><span·class="p"·data-group-id="5834142885-3">#{</span><span·class="s">&quot;a&quot;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="s">&quot;b&quot;</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·270,·SHA:·3b5d40d1e1e1706436d8ad3bae7d03cd59221469aa377e6ee6dda1060545a95c·...·]-3">}</span></code></pre>
916 ··</section>916 ··</section>
917 </section>917 </section>
918 <section·class="detail"·id="from_list/1">918 <section·class="detail"·id="from_list/1">
  
919 ··<div·class="detail-header">919 ··<div·class="detail-header">
920 ····<a·href="#from_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">920 ····<a·href="#from_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
921 ······<i·class="ri-link-m"·aria-hidden="true"></i>921 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 941, 17 lines modifiedOffset 941, 17 lines modified
  
941 ··········<pre·translate="no"><span·class="attribute">-spec</span>·from_list(List)·->·Map·when·List·::·[{Key,·Value}],·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>().</pre>941 ··········<pre·translate="no"><span·class="attribute">-spec</span>·from_list(List)·->·Map·when·List·::·[{Key,·Value}],·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>().</pre>
  
942 ······</div>942 ······</div>
  
943 <p>Takes·a·list·of·key-value·tuples·elements·and·builds·a·map.·The·associations·can943 <p>Takes·a·list·of·key-value·tuples·elements·and·builds·a·map.·The·associations·can
944 be·in·any·order,·and·both·keys·and·values·in·the·association·can·be·of·any·term.</p><p>If·the·same·key·appears·more·than·once,·the·latter·(right-most)·value·is·used944 be·in·any·order,·and·both·keys·and·values·in·the·association·can·be·of·any·term.</p><p>If·the·same·key·appears·more·than·once,·the·latter·(right-most)·value·is·used
945 and·the·previous·values·are·ignored.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">List</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7718544738-1">[</span><span·class="p"·data-group-id="7718544738-2">{</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="ss">ignored</span><span·class="p"·data-group-id="7718544738-2">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·660,·SHA:·cb56b285464bc4c6a2961ca26f7a67279a2d4808848ff40e9461301dde4f955e·...·]-1">]</span><span·class="p">,</span><span·class="w">945 and·the·previous·values·are·ignored.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">List</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5096689154-1">[</span><span·class="p"·data-group-id="5096689154-2">{</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="ss">ignored</span><span·class="p"·data-group-id="5096689154-2">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·660,·SHA:·01540473cc6aebead446f5ef4d699df96848addf438cd76296d7a8819c12562b·...·]-1">]</span><span·class="p">,</span><span·class="w">
946 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="7718544738-6">(</span><span·class="n">List</span><span·class="p"·data-group-id="7718544738-6">)</span><span·class="p">.</span><span·class="w">946 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="5096689154-6">(</span><span·class="n">List</span><span·class="p"·data-group-id="5096689154-6">)</span><span·class="p">.</span><span·class="w">
947 </span><span·class="p"·data-group-id="7718544738-7">#{</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">value_three</span><span·class="p">,</span><span·class="mi">1337</span><span·class="w">·</span><span·class="p">=&gt[·...·truncated·by·diffoscope;·len:·278,·SHA:·543cbfcc0dc45a4a2cf7fa845c402c5cdc23b0ee652144259b1044e736f870f6·...·]-7">}</span></code></pre>947 </span><span·class="p"·data-group-id="5096689154-7">#{</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">value_three</span><span·class="p">,</span><span·class="mi">1337</span><span·class="w">·</span><span·class="p">=&gt[·...·truncated·by·diffoscope;·len:·278,·SHA:·d8a8c083e3991b64ef7bae4c426bff0fe1018464bb809c5950c23bbf629a91b0·...·]-7">}</span></code></pre>
948 ··</section>948 ··</section>
949 </section>949 </section>
950 <section·class="detail"·id="get/2">950 <section·class="detail"·id="get/2">
  
951 ··<div·class="detail-header">951 ··<div·class="detail-header">
952 ····<a·href="#get/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">952 ····<a·href="#get/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
953 ······<i·class="ri-link-m"·aria-hidden="true"></i>953 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 973, 16 lines modifiedOffset 973, 16 lines modified
  
973 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get(Key,·Map)·->·Value·when·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>(),·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>973 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get(Key,·Map)·->·Value·when·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:map/0">map</a>(),·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
974 ······</div>974 ······</div>
  
975 <p>Returns·value·<code·class="inline">Value</code>·associated·with·<code·class="inline">Key</code>·if·<code·class="inline">Map</code>·contains·<code·class="inline">Key</code>.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">Map</code>·is·not·a·map,·or·with·a975 <p>Returns·value·<code·class="inline">Value</code>·associated·with·<code·class="inline">Key</code>·if·<code·class="inline">Map</code>·contains·<code·class="inline">Key</code>.</p><p>The·call·fails·with·a·<code·class="inline">{badmap,Map}</code>·exception·if·<code·class="inline">Map</code>·is·not·a·map,·or·with·a
976 <code·class="inline">{badkey,Key}</code>·exception·if·no·value·is·associated·with·<code·class="inline">Key</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1337</span><span·class="p">,</span><span·class="w">976 <code·class="inline">{badkey,Key}</code>·exception·if·no·value·is·associated·with·<code·class="inline">Key</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Key</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1337</span><span·class="p">,</span><span·class="w">
977 ··</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3625558067-1">#{</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">value_two</span><span·class="p">,</span><span·class="mi">1337</span><span·class="w">·</span><span·class="p">=&gt;<[·...·truncated·by·diffoscope;·len:·276,·SHA:·915b6a7bfa75e6eeec53e7469407ef0ac2a4db637110bcc9674359e3b9b7c9fb·...·]-1">}</span><span·class="p">,</span><span·class="w">977 ··</span><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0867498959-1">#{</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">value_two</span><span·class="p">,</span><span·class="mi">1337</span><span·class="w">·</span><span·class="p">=&gt;<[·...·truncated·by·diffoscope;·len:·276,·SHA:·a6fd4a1a050a0e55cef92a205f544f06fada4424c7513ff2325916443e9331c7·...·]-1">}</span><span·class="p">,</span><span·class="w">
978 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="3625558067-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="3625558067-2">)</span><span·class="p">.</span><span·class="w">978 ··</span><span·class="nc">maps</span><span·class="p">:</span><span·class="nf">get</span><span·class="p"·data-group-id="0867498959-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="0867498959-2">)</span><span·class="p">.</span><span·class="w">
979 </span><span·class="s">&quot;value·one&quot;</span></code></pre>979 </span><span·class="s">&quot;value·one&quot;</span></code></pre>
980 ··</section>980 ··</section>
981 </section>981 </section>
982 <section·class="detail"·id="get/3">982 <section·class="detail"·id="get/3">
  
983 ··<div·class="detail-header">983 ··<div·class="detail-header">
984 ····<a·href="#get/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">984 ····<a·href="#get/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1004, 19 lines modifiedOffset 1004, 19 lines modified
Max diff block lines reached; 173060/209531 bytes (82.59%) of diff not shown.
140 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/ms_transform.html
    
Offset 150, 55 lines modifiedOffset 150, 55 lines modified
150 ··</a>150 ··</a>
151 ··<span·class="text">Example·1</span>151 ··<span·class="text">Example·1</span>
152 </h2>152 </h2>
153 <p>Using·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·and·a·match·specification,·one·can·filter·out·rows·of·a153 <p>Using·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·and·a·match·specification,·one·can·filter·out·rows·of·a
154 table·and·construct·a·list·of·tuples·containing·relevant·parts·of·the·data·in154 table·and·construct·a·list·of·tuples·containing·relevant·parts·of·the·data·in
155 these·rows.·One·can·use·<a·href="ets.html#foldl/3"><code·class="inline">ets:foldl/3</code></a>·instead,·but·the·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·call·is155 these·rows.·One·can·use·<a·href="ets.html#foldl/3"><code·class="inline">ets:foldl/3</code></a>·instead,·but·the·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·call·is
156 far·more·efficient.·Without·the·translation·provided·by·<code·class="inline">ms_transform</code>,·one·must156 far·more·efficient.·Without·the·translation·provided·by·<code·class="inline">ms_transform</code>,·one·must
157 struggle·with·writing·match·specifications·terms·to·accommodate·this.</p><p>Consider·a·simple·table·of·employees:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8799150225-1">(</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8799150225-2">{</span><span·class="ss">empno</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%Employee·number·as·a·string,·the·key</span><span·class="w">157 struggle·with·writing·match·specifications·terms·to·accommodate·this.</p><p>Consider·a·simple·table·of·employees:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2642674740-1">(</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2642674740-2">{</span><span·class="ss">empno</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%Employee·number·as·a·string,·the·key</span><span·class="w">
158 ··············</span><span·class="ss">surname</span><span·class="p">,</span><span·class="w">···</span><span·class="c1">%Surname·of·the·employee</span><span·class="w">158 ··············</span><span·class="ss">surname</span><span·class="p">,</span><span·class="w">···</span><span·class="c1">%Surname·of·the·employee</span><span·class="w">
159 ··············</span><span·class="ss">givenname</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%Given·name·of·employee</span><span·class="w">159 ··············</span><span·class="ss">givenname</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%Given·name·of·employee</span><span·class="w">
160 ··············</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">······</span><span·class="c1">%Department,·one·of·{dev,sales,prod,adm}</span><span·class="w">160 ··············</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">······</span><span·class="c1">%Department,·one·of·{dev,sales,prod,adm}</span><span·class="w">
161 ··············</span><span·class="ss">empyear</span><span·class="p"·data-group-id="8799150225-2">}</span><span·class="p"·data-group-id="8799150225-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%Year·the·employee·was·employed</span></code></pre><p>We·create·the·table·using:</p><pre><code·class="text">ets:new([·...·truncated·by·diffoscope;·len:·641,·SHA:·f8984954ed8fd3bae330f5a71d2e7d6f2cea38974aa7675afb52dbb6978f124d·...·]-2">}</span><span·class="p">,</span><span·class="w">161 ··············</span><span·class="ss">empyear</span><span·class="p"·data-group-id="2642674740-2">}</span><span·class="p"·data-group-id="2642674740-1">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%Year·the·employee·was·employed</span></code></pre><p>We·create·the·table·using:</p><pre><code·class="text">ets:new([·...·truncated·by·diffoscope;·len:·641,·SHA:·60f0a28c9a699b35ebd60d31244685112c109e48fa7b1e40c1f3809c5d2fd651·...·]-2">}</span><span·class="p">,</span><span·class="w">
162 ·</span><span·class="p"·data-group-id="8339906103-3">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;041231&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·128,·SHA:·1a4922052a0d309b5886d8c3be5461187f12c25f879144d3c48ecb62c17eeb3d·...·]-3">}</span><span·class="p">,</span><span·class="w">162 ·</span><span·class="p"·data-group-id="1551903730-3">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;041231&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·128,·SHA:·bb14fb8dcda6dfa23adca6d938df6a3ba930a2af6449c37db28d4cc288d7d9ec·...·]-3">}</span><span·class="p">,</span><span·class="w">
163 ·</span><span·class="p"·data-group-id="8339906103-4">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;052341&quot;</span><span·class="p">,</span><span·class="s">&quot;Smith&quot;</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·129,·SHA:·525d3499976ad2f3e2e91261c1c5864d5105ba6e6487ffe7d8890fa6a7798c15·...·]-4">}</span><span·class="p">,</span><span·class="w">163 ·</span><span·class="p"·data-group-id="1551903730-4">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;052341&quot;</span><span·class="p">,</span><span·class="s">&quot;Smith&quot;</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·129,·SHA:·791b2584bb6e5a57f2d9df69ec2f22acf1a04c18a12e426a28d2cffb2648bde5·...·]-4">}</span><span·class="p">,</span><span·class="w">
164 ·</span><span·class="p"·data-group-id="8339906103-5">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;076324&quot;</span><span·class="p">,</span><span·class="s">&quot;Smith&quot;</span><span·class="p">,</span><span·class="s">&quot;Ella&quot;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·131,·SHA:·4c66319d8ad07c011af2626f5b8b1b2faa7cf23c5e9ad7081294f09cef0aabf0·...·]-5">}</span><span·class="p">,</span><span·class="w">164 ·</span><span·class="p"·data-group-id="1551903730-5">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;076324&quot;</span><span·class="p">,</span><span·class="s">&quot;Smith&quot;</span><span·class="p">,</span><span·class="s">&quot;Ella&quot;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·131,·SHA:·20c2173bce69263c2341a0ee03d27791684fdfea2c994260be936897c4ae9d3c·...·]-5">}</span><span·class="p">,</span><span·class="w">
165 ·</span><span·class="p"·data-group-id="8339906103-6">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;122334&quot;</span><span·class="p">,</span><span·class="s">&quot;Weston&quot;</span><span·class="p">,</span><span·class="s">&quot;Anna&quot;</span><span·class="p[·...·truncated·by·diffoscope;·len:·131,·SHA:·3cb8f95ecc32fa3340bfcb9c39820c899adde1c78a06ac08b699fdf77128fe2f·...·]-6">}</span><span·class="p">,</span><span·class="w">165 ·</span><span·class="p"·data-group-id="1551903730-6">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;122334&quot;</span><span·class="p">,</span><span·class="s">&quot;Weston&quot;</span><span·class="p">,</span><span·class="s">&quot;Anna&quot;</span><span·class="p[·...·truncated·by·diffoscope;·len:·131,·SHA:·cfa1daae85ae96c20e0e6b313348daed59789620aa561c3f98c2990ad507a58b·...·]-6">}</span><span·class="p">,</span><span·class="w">
166 ·</span><span·class="p"·data-group-id="8339906103-7">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;535216&quot;</span><span·class="p">,</span><span·class="s">&quot;Chalker&quot;</span><span·class="p">,</span><span·class="s">&quot;Samuel&quot;</span><span·class[·...·truncated·by·diffoscope;·len:·133,·SHA:·be98b7d1ff1d9c00e0899934bfe140e3a683b662a3ad28677d8014ecec6d22cb·...·]-7">}</span><span·class="p">,</span><span·class="w">166 ·</span><span·class="p"·data-group-id="1551903730-7">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;535216&quot;</span><span·class="p">,</span><span·class="s">&quot;Chalker&quot;</span><span·class="p">,</span><span·class="s">&quot;Samuel&quot;</span><span·class[·...·truncated·by·diffoscope;·len:·133,·SHA:·cf06457d42ac6ce52a7f0ae73f7629012e06540bde2a3afb5928b7d7214724d1·...·]-7">}</span><span·class="p">,</span><span·class="w">
167 ·</span><span·class="p"·data-group-id="8339906103-8">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;789789&quot;</span><span·class="p">,</span><span·class="s">&quot;Harrysson&quot;</span><span·class="p">,</span><span·class="s">&quot;Joe&quot;</span><span·class=[·...·truncated·by·diffoscope;·len:·132,·SHA:·99f6817a10c5e3660acb31b3f9c518d57f0e04bab2ad047a6edf3caa88605f83·...·]-8">}</span><span·class="p">,</span><span·class="w">167 ·</span><span·class="p"·data-group-id="1551903730-8">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;789789&quot;</span><span·class="p">,</span><span·class="s">&quot;Harrysson&quot;</span><span·class="p">,</span><span·class="s">&quot;Joe&quot;</span><span·class=[·...·truncated·by·diffoscope;·len:·132,·SHA:·e7025886c565a6f7da9ac1b386f739d2e7955ff1f4d43fba9e0a6f375ebd246a·...·]-8">}</span><span·class="p">,</span><span·class="w">
168 ·</span><span·class="p"·data-group-id="8339906103-9">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;963721&quot;</span><span·class="p">,</span><span·class="s">&quot;Scott&quot;</span><span·class="p">,</span><span·class="s">&quot;Juliana&quot;</span><span·class=[·...·truncated·by·diffoscope;·len:·132,·SHA:·6edc732c655c481c817812398e508cb807efd749803b6a97f3834f2f9288a2af·...·]-9">}</span><span·class="p">,</span><span·class="w">168 ·</span><span·class="p"·data-group-id="1551903730-9">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;963721&quot;</span><span·class="p">,</span><span·class="s">&quot;Scott&quot;</span><span·class="p">,</span><span·class="s">&quot;Juliana&quot;</span><span·class=[·...·truncated·by·diffoscope;·len:·132,·SHA:·96fa27ae3c0a901ce328a0d589588f6035e1e632abea048083576e9c420aea1c·...·]-9">}</span><span·class="p">,</span><span·class="w">
169 ·</span><span·class="p"·data-group-id="8339906103-10">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;989891&quot;</span><span·class="p">,</span><span·class="s">&quot;Brown&quot;</span><span·class="p">,</span><span·class="s">&quot;Gabriel&quot;</span><span·class[·...·truncated·by·diffoscope;·len:·188,·SHA:·cb9809626b852c2566cc6f2a28ea580797641365e0fd2ad5de244ea34aa6e2bb·...·]-1">]</span></code></pre><p>Assuming·that·we·want·the·employee·numbers·of·everyone·in·the·sales·department,169 ·</span><span·class="p"·data-group-id="1551903730-10">{</span><span·class="ss">emp</span><span·class="p">,</span><span·class="s">&quot;989891&quot;</span><span·class="p">,</span><span·class="s">&quot;Brown&quot;</span><span·class="p">,</span><span·class="s">&quot;Gabriel&quot;</span><span·class[·...·truncated·by·diffoscope;·len:·188,·SHA:·841578bc2bf3ce074e887d61623fe66ed978cef730e16a7a3346deb1ffcf67f4·...·]-1">]</span></code></pre><p>Assuming·that·we·want·the·employee·numbers·of·everyone·in·the·sales·department,
170 there·are·several·ways.</p><p><a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="2298486049-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2298486049-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#[·...·truncated·by·diffoscope;·len:·437,·SHA:·33065920391c70080e670f9a847563b0b857d7dfd3d3ae7c06a8bcd300da79d5·...·]-1">)</span><span·class="p">.</span><span·class="w">170 there·are·several·ways.</p><p><a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">match</span><span·class="p"·data-group-id="0685282840-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0685282840-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#[·...·truncated·by·diffoscope;·len:·437,·SHA:·1ab315bd475c3f56ffc097325f06169ebc76c630868a3370ef29e670b030b396·...·]-1">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="2298486049-3">[</span><span·class="p"·data-group-id="2298486049-4">[</span><span·class="s">&quot;011103&quot;</span><span·class="p"·data-group-id="2298486049-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="2298486049-5">[</span><span·clas[·...·truncated·by·diffoscope;·len:·125,·SHA:·d152d83550ecdb79e721c40fa24b58b49cbc85ea0d91e44f5386c60860752020·...·]-3">]</span></code></pre><p><a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·uses·a·simpler·type·of·match·specification,·but·it·is·still171 </span><span·class="p"·data-group-id="0685282840-3">[</span><span·class="p"·data-group-id="0685282840-4">[</span><span·class="s">&quot;011103&quot;</span><span·class="p"·data-group-id="0685282840-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="0685282840-5">[</span><span·clas[·...·truncated·by·diffoscope;·len:·125,·SHA:·e764023a33fbd237222f93aba0ed7aa3fb8f5cb0a5082c5a26ba462d8e45af3d·...·]-3">]</span></code></pre><p><a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·uses·a·simpler·type·of·match·specification,·but·it·is·still
172 unreadable,·and·one·has·little·control·over·the·returned·result.·It·is·always·a172 unreadable,·and·one·has·little·control·over·the·returned·result.·It·is·always·a
173 list·of·lists.</p><p><a·href="ets.html#foldl/3"><code·class="inline">ets:foldl/3</code></a>·or·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·can·be·used·to·avoid·the·nested·lists:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="7384864824-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7384864824-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="7384864824-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·700,·SHA:·4f287abf919582f314a7f8ff0416bfdcde660fd6a308e9ee15106432fa0af7dd·...·]-4">]</span><span·class="p">;</span><span·class="w">173 list·of·lists.</p><p><a·href="ets.html#foldl/3"><code·class="inline">ets:foldl/3</code></a>·or·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·can·be·used·to·avoid·the·nested·lists:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="1392305536-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1392305536-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="1392305536-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·700,·SHA:·216734583c33fc23c4970039d8c9f79dd396642741e6887c4f64254fdcfdebfc·...·]-4">]</span><span·class="p">;</span><span·class="w">
174 ·············</span><span·class="p"·data-group-id="7384864824-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="7384864824-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">174 ·············</span><span·class="p"·data-group-id="1392305536-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="1392305536-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">
175 ··········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">175 ··········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
176 ··········</span><span·class="p"·data-group-id="7384864824-6">[</span><span·class="p"·data-group-id="7384864824-6">]</span><span·class="p">,</span><span·class="w">176 ··········</span><span·class="p"·data-group-id="1392305536-6">[</span><span·class="p"·data-group-id="1392305536-6">]</span><span·class="p">,</span><span·class="w">
177 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="7384864824-1">)</span><span·class="p">.</span></code></pre><p>The·result·is·<code·class="inline">[&quot;011103&quot;,&quot;076324&quot;]</code>.·The·fun·is·straightforward,·so·the·only177 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="1392305536-1">)</span><span·class="p">.</span></code></pre><p>The·result·is·<code·class="inline">[&quot;011103&quot;,&quot;076324&quot;]</code>.·The·fun·is·straightforward,·so·the·only
178 problem·is·that·all·the·data·from·the·table·must·be·transferred·from·the·table178 problem·is·that·all·the·data·from·the·table·must·be·transferred·from·the·table
179 to·the·calling·process·for·filtering.·That·is·inefficient·compared·to·the179 to·the·calling·process·for·filtering.·That·is·inefficient·compared·to·the
180 <a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·call·where·the·filtering·can·be·done·&quot;inside&quot;·the·emulator·and180 <a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·call·where·the·filtering·can·be·done·&quot;inside&quot;·the·emulator·and
181 only·the·result·is·transferred·to·the·process.</p><p>Consider·a·&quot;pure&quot;·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·call·that·does·what·<code·class="inline">ets:foldr</code>·does:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="6280282600-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6280282600-2">[</span><span·class="p"·data-group-id="6280282600-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·996,·SHA:·cdabc54de7884c9b002550d14d65af289c7afd2dc489a818892989be7a944cfe·...·]-1">)</span><span·class="p">.</span></code></pre><p>Although·the·record·syntax·is·used,·it·is·still·hard·to·read·and·even·harder·to181 only·the·result·is·transferred·to·the·process.</p><p>Consider·a·&quot;pure&quot;·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·call·that·does·what·<code·class="inline">ets:foldr</code>·does:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="8455004066-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8455004066-2">[</span><span·class="p"·data-group-id="8455004066-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·996,·SHA:·8cd9e5bdf79bf347e0cf62cb7b9be6baf7da89d8b4f971c3053fea60893401f8·...·]-1">)</span><span·class="p">.</span></code></pre><p>Although·the·record·syntax·is·used,·it·is·still·hard·to·read·and·even·harder·to
182 write.·The·first·element·of·the·tuple,182 write.·The·first·element·of·the·tuple,
183 <code·class="inline">#emp{empno·=·'$1',·dept·=·sales,·_='_'}</code>,·tells·what·to·match.·Elements·not183 <code·class="inline">#emp{empno·=·'$1',·dept·=·sales,·_='_'}</code>,·tells·what·to·match.·Elements·not
184 matching·this·are·not·returned,·as·in·the·<a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·example.·The·second184 matching·this·are·not·returned,·as·in·the·<a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·example.·The·second
185 element,·the·empty·list,·is·a·list·of·guard·expressions,·which·we·do·not·need.185 element,·the·empty·list,·is·a·list·of·guard·expressions,·which·we·do·not·need.
186 The·third·element·is·the·list·of·expressions·constructing·the·return·value·(in186 The·third·element·is·the·list·of·expressions·constructing·the·return·value·(in
187 ETS·this·is·almost·always·a·list·containing·one·single·term).·In·our·case·<code·class="inline">'$1'</code>187 ETS·this·is·almost·always·a·list·containing·one·single·term).·In·our·case·<code·class="inline">'$1'</code>
188 is·bound·to·the·employee·number·in·the·head·(first·element·of·the·tuple),·and188 is·bound·to·the·employee·number·in·the·head·(first·element·of·the·tuple),·and
189 hence·the·employee·number·is·returned.·The·result·is·<code·class="inline">[&quot;011103&quot;,&quot;076324&quot;]</code>,·as189 hence·the·employee·number·is·returned.·The·result·is·<code·class="inline">[&quot;011103&quot;,&quot;076324&quot;]</code>,·as
190 in·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·example,·but·the·result·is·retrieved·much·more·efficiently190 in·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·example,·but·the·result·is·retrieved·much·more·efficiently
191 in·terms·of·execution·speed·and·memory·consumption.</p><p>Using·<a·href="ets.html#fun2ms/1"><code·class="inline">ets:fun2ms/1</code></a>,·we·can·combine·the·ease·of·use·of·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·and191 in·terms·of·execution·speed·and·memory·consumption.</p><p>Using·<a·href="ets.html#fun2ms/1"><code·class="inline">ets:fun2ms/1</code></a>,·we·can·combine·the·ease·of·use·of·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·and
192 the·efficiency·of·the·pure·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6004014288-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="6004014288-1">)</span><span·class="p">.</span><span·class="w">192 the·efficiency·of·the·pure·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="5802764158-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="5802764158-1">)</span><span·class="p">.</span><span·class="w">
  
193 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="6004014288-2">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="6004014288-3">(</span><span·class="w">193 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="5802764158-2">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="5802764158-3">(</span><span·class="w">
194 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="6004014288-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="6004014288-5">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·265,·SHA:·2de98fb1c6e88626520a2367d56c37d315a67131e764b1f2fbfc06aeca8dc178·...·]8-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="5802764158-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="5802764158-5">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·265,·SHA:·c1bcc071a89c220b55f2822e6fab221f5c029a6c97d6c48186be1b9549b51b7d·...·]8-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ······························</span><span·class="n">E</span><span·class="w">195 ······························</span><span·class="n">E</span><span·class="w">
196 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="6004014288-3">)</span><span·class="p"·data-group-id="6004014288-2">)</span><span·class="p">.</span></code></pre><p>This·example·requires·no·special·knowledge·of·match·specifications·to196 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="5802764158-3">)</span><span·class="p"·data-group-id="5802764158-2">)</span><span·class="p">.</span></code></pre><p>This·example·requires·no·special·knowledge·of·match·specifications·to
197 understand.·The·head·of·the·fun·matches·what·you·want·to·filter·out·and·the·body197 understand.·The·head·of·the·fun·matches·what·you·want·to·filter·out·and·the·body
198 returns·what·you·want·returned.·As·long·as·the·fun·can·be·kept·within·the·limits198 returns·what·you·want·returned.·As·long·as·the·fun·can·be·kept·within·the·limits
199 of·the·match·specifications,·there·is·no·need·to·transfer·all·table·data·to·the199 of·the·match·specifications,·there·is·no·need·to·transfer·all·table·data·to·the
200 process·for·filtering·as·in·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·example.·It·is·easier·to·read·than200 process·for·filtering·as·in·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·example.·It·is·easier·to·read·than
201 the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·example,·as·the·select·call·in·itself·discards·anything·that201 the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·example,·as·the·select·call·in·itself·discards·anything·that
202 does·not·match,·while·the·fun·of·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·call·needs·to·handle·both·the202 does·not·match,·while·the·fun·of·the·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·call·needs·to·handle·both·the
203 elements·matching·and·the·ones·not·matching.</p><p>In·the·<a·href="ets.html#fun2ms/1"><code·class="inline">ets:fun2ms/1</code></a>·example·above,·it·is·needed·to·include·<code·class="inline">ms_transform.hrl</code>203 elements·matching·and·the·ones·not·matching.</p><p>In·the·<a·href="ets.html#fun2ms/1"><code·class="inline">ets:fun2ms/1</code></a>·example·above,·it·is·needed·to·include·<code·class="inline">ms_transform.hrl</code>
Offset 212, 90 lines modifiedOffset 212, 90 lines modified
212 ····<i·class="ri-link-m"·aria-hidden="true"></i>212 ····<i·class="ri-link-m"·aria-hidden="true"></i>
213 ··</a>213 ··</a>
214 ··<span·class="text">Example·2</span>214 ··<span·class="text">Example·2</span>
215 </h2>215 </h2>
216 <p>Assume·that·we·want·to·get·all·the·employee·numbers·of·employees·hired·before216 <p>Assume·that·we·want·to·get·all·the·employee·numbers·of·employees·hired·before
217 year·2000.·Using·<a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·is·not·an·alternative·here,·as·relational217 year·2000.·Using·<a·href="ets.html#match/2"><code·class="inline">ets:match/2</code></a>·is·not·an·alternative·here,·as·relational
218 operators·cannot·be·expressed·there.·Once·again,·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·can·do·it218 operators·cannot·be·expressed·there.·Once·again,·<a·href="ets.html#foldr/3"><code·class="inline">ets:foldr/3</code></a>·can·do·it
219 (slowly,·but·correct):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="9081460212-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9081460212-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="9081460212-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·900,·SHA:·462c5c5c4ae53d9a5b545e01ab899b2738c15887b8ffa7355154e9a0a3ba7dff·...·]-4">]</span><span·class="p">;</span><span·class="w">219 (slowly,·but·correct):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="7575179246-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7575179246-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="7575179246-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·900,·SHA:·76c01b81ae5cfbc1cc7f0318dd98f04108541988a1599b941dd363e192ed0122·...·]-4">]</span><span·class="p">;</span><span·class="w">
220 ··················</span><span·class="p"·data-group-id="9081460212-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="9081460212-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">220 ··················</span><span·class="p"·data-group-id="7575179246-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="7575179246-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">
221 ··········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">221 ··········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
222 ··········</span><span·class="p"·data-group-id="9081460212-6">[</span><span·class="p"·data-group-id="9081460212-6">]</span><span·class="p">,</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="7575179246-6">[</span><span·class="p"·data-group-id="7575179246-6">]</span><span·class="p">,</span><span·class="w">
223 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="9081460212-1">)</span><span·class="p">.</span></code></pre><p>The·result·is·<code·class="inline">[&quot;052341&quot;,&quot;076324&quot;,&quot;535216&quot;,&quot;789789&quot;,&quot;989891&quot;]</code>,·as·expected.·The223 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="7575179246-1">)</span><span·class="p">.</span></code></pre><p>The·result·is·<code·class="inline">[&quot;052341&quot;,&quot;076324&quot;,&quot;535216&quot;,&quot;789789&quot;,&quot;989891&quot;]</code>,·as·expected.·The
224 equivalent·expression·using·a·handwritten·match·specification·would·look·like224 equivalent·expression·using·a·handwritten·match·specification·would·look·like
225 this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="6882382582-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6882382582-2">[</span><span·class="p"·data-group-id="6882382582-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·551,·SHA:·92deab7d92bb54237bb97aca52f05a257ce88a424678af6a820414eab779600a·...·]-4">}</span><span·class="p">,</span><span·class="w">225 this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="9833413741-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9833413741-2">[</span><span·class="p"·data-group-id="9833413741-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·551,·SHA:·0f3ffacb1ddfb9946e40320e05c3b850bc358eb151dfa6e49d18b36d3ceb6748·...·]-4">}</span><span·class="p">,</span><span·class="w">
226 ·····················</span><span·class="p"·data-group-id="6882382582-5">[</span><span·class="p"·data-group-id="6882382582-6">{</span><span·class="ss">&#39;&lt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·111,·SHA:·d901744e2cd1c33d37274d4ae4dec90cf1460a3038041d8e7206f6444d0fa223·...·]-5">]</span><span·class="p">,</span><span·class="w">226 ·····················</span><span·class="p"·data-group-id="9833413741-5">[</span><span·class="p"·data-group-id="9833413741-6">{</span><span·class="ss">&#39;&lt;&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·111,·SHA:·c7875e10843af0cbe7993690f265397578f45efc9739a1f4b114c582e2c3dff2·...·]-5">]</span><span·class="p">,</span><span·class="w">
227 ·····················</span><span·class="p"·data-group-id="6882382582-7">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6882382582-7">]</span><span·class="p"·data-group-id="6882382582-3">}</span><span·class="p"·data-group-id="6882382582-2">]</span><span·class="p"·data-group-id="68823825[·...·truncated·by·diffoscope;·len:·2,·SHA:·a46e37632fa6ca51a13fe39a567b3c23b28c2f47d8af6be9bd63e030e214ba38·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·gives·the·same·result.·<code·class="inline">[{'&lt;',·'$2',·2000}]</code>·is·in·the·guard·part·and227 ·····················</span><span·class="p"·data-group-id="9833413741-7">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9833413741-7">]</span><span·class="p"·data-group-id="9833413741-3">}</span><span·class="p"·data-group-id="9833413741-2">]</span><span·class="p"·data-group-id="98334137[·...·truncated·by·diffoscope;·len:·2,·SHA:·3d914f9348c9cc0ff8a79716700b9fcd4d2f3e711608004eb8f138bcba7f14d9·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·gives·the·same·result.·<code·class="inline">[{'&lt;',·'$2',·2000}]</code>·is·in·the·guard·part·and
228 therefore·discards·anything·that·does·not·have·an·<code·class="inline">empyear</code>·(bound·to·<code·class="inline">'$2'</code>·in228 therefore·discards·anything·that·does·not·have·an·<code·class="inline">empyear</code>·(bound·to·<code·class="inline">'$2'</code>·in
229 the·head)·less·than·2000,·as·the·guard·in·the·<code·class="inline">foldr/3</code>·example.</p><p>We·write·it·using·<a·href="ets.html#fun2ms/1"><code·class="inline">ets:fun2ms/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0627803187-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="0627803187-1">)</span><span·class="p">.</span><span·class="w">229 the·head)·less·than·2000,·as·the·guard·in·the·<code·class="inline">foldr/3</code>·example.</p><p>We·write·it·using·<a·href="ets.html#fun2ms/1"><code·class="inline">ets:fun2ms/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8865953201-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="8865953201-1">)</span><span·class="p">.</span><span·class="w">
  
230 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="0627803187-2">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="0627803187-3">(</span><span·class="w">230 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="8865953201-2">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="8865953201-3">(</span><span·class="w">
231 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="0627803187-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="0627803187-5">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·264,·SHA:·f4b3d1e32a4c8386f34e0f1758b4df6c76e7713710df2d3fb410b028e8201f5f·...·]-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">2000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="8865953201-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="8865953201-5">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·264,·SHA:·dcafcc584a9f71363ca898b51b1e8df50a9fb341aaf23ed27574f14473cf41a3·...·]-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">2000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ···························</span><span·class="n">E</span><span·class="w">232 ···························</span><span·class="n">E</span><span·class="w">
233 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="0627803187-3">)</span><span·class="p"·data-group-id="0627803187-2">)</span><span·class="p">.</span></code></pre><h2·id="module-example-3"·class="section-heading">233 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="8865953201-3">)</span><span·class="p"·data-group-id="8865953201-2">)</span><span·class="p">.</span></code></pre><h2·id="module-example-3"·class="section-heading">
234 ··<a·href="#module-example-3"·class="hover-link">234 ··<a·href="#module-example-3"·class="hover-link">
235 ····<i·class="ri-link-m"·aria-hidden="true"></i>235 ····<i·class="ri-link-m"·aria-hidden="true"></i>
236 ··</a>236 ··</a>
237 ··<span·class="text">Example·3</span>237 ··<span·class="text">Example·3</span>
238 </h2>238 </h2>
239 <p>Assume·that·we·want·the·whole·object·matching·instead·of·only·one·element.·One239 <p>Assume·that·we·want·the·whole·object·matching·instead·of·only·one·element.·One
240 alternative·is·to·assign·a·variable·to·every·part·of·the·record·and·build·it·up240 alternative·is·to·assign·a·variable·to·every·part·of·the·record·and·build·it·up
241 once·again·in·the·body·of·the·fun,·but·the·following·is·easier:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="3775833580-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="3775833580-2">(</span><span·class="w">241 once·again·in·the·body·of·the·fun,·but·the·following·is·easier:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="1888920662-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="1888920662-2">(</span><span·class="w">
242 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="3775833580-3">(</span><span·class="n">Obj</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="3775833580-4">{</span><span·class="ss">empno</span><sp[·...·truncated·by·diffoscope;·len:·362,·SHA:·fe6ad6b2eb405fd4d9c5be10167a62ac78988b9cf0ca42127ebadb7a82d889fd·...·]-3">)</span><span·class="w">242 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="1888920662-3">(</span><span·class="n">Obj</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="1888920662-4">{</span><span·class="ss">empno</span><sp[·...·truncated·by·diffoscope;·len:·362,·SHA:·21b3af07bfaa8d2b47f654b8e94653eb21193c6b639c0bbb797c556a67bcb77b·...·]-3">)</span><span·class="w">
243 ·························</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">2000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">243 ·························</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">2000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
244 ······························</span><span·class="n">Obj</span><span·class="w">244 ······························</span><span·class="n">Obj</span><span·class="w">
245 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="3775833580-2">)</span><span·class="p"·data-group-id="3775833580-1">)</span><span·class="p">.</span></code></pre><p>As·in·ordinary·Erlang·matching,·you·can·bind·a·variable·to·the·whole·matched245 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="1888920662-2">)</span><span·class="p"·data-group-id="1888920662-1">)</span><span·class="p">.</span></code></pre><p>As·in·ordinary·Erlang·matching,·you·can·bind·a·variable·to·the·whole·matched
246 object·using·a·&quot;match·inside·the·match&quot;,·that·is,·a·<code·class="inline">=</code>.·Unfortunately·in·funs246 object·using·a·&quot;match·inside·the·match&quot;,·that·is,·a·<code·class="inline">=</code>.·Unfortunately·in·funs
247 translated·to·match·specifications,·it·is·allowed·only·at·the·&quot;top-level&quot;,·that247 translated·to·match·specifications,·it·is·allowed·only·at·the·&quot;top-level&quot;,·that
248 is,·matching·the·<em>whole</em>·object·arriving·to·be·matched·into·a·separate·variable.248 is,·matching·the·<em>whole</em>·object·arriving·to·be·matched·into·a·separate·variable.
249 If·you·are·used·to·writing·match·specifications·by·hand,·we·mention·that249 If·you·are·used·to·writing·match·specifications·by·hand,·we·mention·that
250 variable·A·is·simply·translated·into·'$_'.·Alternatively,·pseudo·function250 variable·A·is·simply·translated·into·'$_'.·Alternatively,·pseudo·function
251 <code·class="inline">object/0</code>·also·returns·the·whole·matched·object,·see·section251 <code·class="inline">object/0</code>·also·returns·the·whole·matched·object,·see·section
252 <a·href="ms_transform.html#warnings_and_restrictions">Warnings·and·Restrictions</a>.</p><h2·id="module-example-4"·class="section-heading">252 <a·href="ms_transform.html#warnings_and_restrictions">Warnings·and·Restrictions</a>.</p><h2·id="module-example-4"·class="section-heading">
253 ··<a·href="#module-example-4"·class="hover-link">253 ··<a·href="#module-example-4"·class="hover-link">
254 ····<i·class="ri-link-m"·aria-hidden="true"></i>254 ····<i·class="ri-link-m"·aria-hidden="true"></i>
255 ··</a>255 ··</a>
256 ··<span·class="text">Example·4</span>256 ··<span·class="text">Example·4</span>
257 </h2>257 </h2>
258 <p>This·example·concerns·the·body·of·the·fun.·Assume·that·all·employee·numbers258 <p>This·example·concerns·the·body·of·the·fun.·Assume·that·all·employee·numbers
259 beginning·with·zero·(<code·class="inline">0</code>)·must·be·changed·to·begin·with·one·(<code·class="inline">1</code>)·instead,·and259 beginning·with·zero·(<code·class="inline">0</code>)·must·be·changed·to·begin·with·one·(<code·class="inline">1</code>)·instead,·and
260 that·we·want·to·create·the·list·<code·class="inline">[{&lt;Old·empno&gt;,&lt;New·empno&gt;}]</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="6694923207-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="6694923207-2">(</span><span·class="w">260 that·we·want·to·create·the·list·<code·class="inline">[{&lt;Old·empno&gt;,&lt;New·empno&gt;}]</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="6996767218-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="6996767218-2">(</span><span·class="w">
261 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="6694923207-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="6694923207-4">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·319,·SHA:·e54616012f85e710ccce30034789020cce66f50ba5a5c9b866f7debdf19fda79·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">261 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="6996767218-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="6996767218-4">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·319,·SHA:·a1b2e9684fbed93be1aac94d2ae7962406e78fe074ab98eaa75f910151c2f4a9·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ······························</span><span·class="p"·data-group-id="6694923207-6">{</span><span·class="p"·data-group-id="6694923207-7">[</span><span·class="sc">$0</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="6694923207-7">]</span><span·class="p">,</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·196,·SHA:·f5ef85585935b85ebb05f84944711165be8d22b8f255e08f797a1b92336c15db·...·]-6">}</span><span·class="w">262 ······························</span><span·class="p"·data-group-id="6996767218-6">{</span><span·class="p"·data-group-id="6996767218-7">[</span><span·class="sc">$0</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="6996767218-7">]</span><span·class="p">,</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·196,·SHA:·a7746961f371be38270944f764dee0973a2b4138b29b129c01770f3d2e8cee98·...·]-6">}</span><span·class="w">
263 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="6694923207-2">)</span><span·class="p"·data-group-id="6694923207-1">)</span><span·class="p">.</span></code></pre><p>This·query·hits·the·feature·of·partially·bound·keys·in·table·type·<code·class="inline">ordered_set</code>,263 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="6996767218-2">)</span><span·class="p"·data-group-id="6996767218-1">)</span><span·class="p">.</span></code></pre><p>This·query·hits·the·feature·of·partially·bound·keys·in·table·type·<code·class="inline">ordered_set</code>,
264 so·that·not·the·whole·table·needs·to·be·searched,·only·the·part·containing·keys264 so·that·not·the·whole·table·needs·to·be·searched,·only·the·part·containing·keys
265 beginning·with·<code·class="inline">0</code>·is·looked·into.</p><h2·id="module-example-5"·class="section-heading">265 beginning·with·<code·class="inline">0</code>·is·looked·into.</p><h2·id="module-example-5"·class="section-heading">
266 ··<a·href="#module-example-5"·class="hover-link">266 ··<a·href="#module-example-5"·class="hover-link">
267 ····<i·class="ri-link-m"·aria-hidden="true"></i>267 ····<i·class="ri-link-m"·aria-hidden="true"></i>
268 ··</a>268 ··</a>
269 ··<span·class="text">Example·5</span>269 ··<span·class="text">Example·5</span>
270 </h2>270 </h2>
271 <p>The·fun·can·have·many·clauses.·Assume·that·we·want·to·do·the·following:</p><ul><li>If·an·employee·started·before·1997,·return·the·tuple271 <p>The·fun·can·have·many·clauses.·Assume·that·we·want·to·do·the·following:</p><ul><li>If·an·employee·started·before·1997,·return·the·tuple
272 <code·class="inline">{inventory,·&lt;employee·number&gt;}</code>.</li><li>If·an·employee·started·1997·or·later,·but·before·2001,·return272 <code·class="inline">{inventory,·&lt;employee·number&gt;}</code>.</li><li>If·an·employee·started·1997·or·later,·but·before·2001,·return
273 <code·class="inline">{rookie,·&lt;employee·number&gt;}</code>.</li><li>For·all·other·employees,·return·<code·class="inline">{newbie,·&lt;employee·number&gt;}</code>,·except·for273 <code·class="inline">{rookie,·&lt;employee·number&gt;}</code>.</li><li>For·all·other·employees,·return·<code·class="inline">{newbie,·&lt;employee·number&gt;}</code>,·except·for
274 those·named·<code·class="inline">Smith</code>·as·they·would·be·affronted·by·anything·other·than·the·tag274 those·named·<code·class="inline">Smith</code>·as·they·would·be·affronted·by·anything·other·than·the·tag
275 <code·class="inline">guru</code>·and·that·is·also·what·is·returned·for·their·numbers:275 <code·class="inline">guru</code>·and·that·is·also·what·is·returned·for·their·numbers:
276 <code·class="inline">{guru,·&lt;employee·number&gt;}</code>.</li></ul><p>This·is·accomplished·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="5450890829-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="5450890829-2">(</span><span·class="w">276 <code·class="inline">{guru,·&lt;employee·number&gt;}</code>.</li></ul><p>This·is·accomplished·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="2509412487-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">fun2ms</span><span·class="p"·data-group-id="2509412487-2">(</span><span·class="w">
277 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="5450890829-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="5450890829-4">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·304,·SHA:·c3b47d01a80c005fd5531c3f2c12cdacca8899275b07d2d67c2a2d8a575304a5·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">277 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="2509412487-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="2509412487-4">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·304,·SHA:·c5564d8490d90d83e39ba310ad6086d2dbbae94512c1dc3a3f0f5132b9f85b3a·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
278 ······························</span><span·class="p"·data-group-id="5450890829-5">{</span><span·class="ss">guru</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="5450890829-5">}</span><span·class="p">;</span><span·class="w">278 ······························</span><span·class="p"·data-group-id="2509412487-5">{</span><span·class="ss">guru</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="2509412487-5">}</span><span·class="p">;</span><span·class="w">
279 ·························</span><span·class="p"·data-group-id="5450890829-6">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="5450890829-7">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·264,·SHA:·e89b168855b10909c114c5cf118b89083f06c551a799cc4e265ad2607a6bde9b·...·]-6">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">1997</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">279 ·························</span><span·class="p"·data-group-id="2509412487-6">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="2509412487-7">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><span[·...·truncated·by·diffoscope;·len:·264,·SHA:·34aafec3b5df84ffd6dcedb0bbb9b0c25019a8c52814d2d1aee2a929898582dc·...·]-6">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="mi">1997</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">
280 ······························</span><span·class="p"·data-group-id="5450890829-8">{</span><span·class="ss">inventory</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="5450890829-8">}</span><span·class="p">;</span><span·class="w">280 ······························</span><span·class="p"·data-group-id="2509412487-8">{</span><span·class="ss">inventory</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="2509412487-8">}</span><span·class="p">;</span><span·class="w">
281 ·························</span><span·class="p"·data-group-id="5450890829-9">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="5450890829-10">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><spa[·...·truncated·by·diffoscope;·len:·266,·SHA:·3d67754a1a65521aba4f033e1b3bd552c141e6bc5cc661a2924ba47247b4c055·...·]-9">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">2001</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">281 ·························</span><span·class="p"·data-group-id="2509412487-9">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="2509412487-10">{</span><span·class="ss">empno</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">E</span><spa[·...·truncated·by·diffoscope;·len:·266,·SHA:·ee96b3aff746ecc28e300d3223314d98d19a944b7f454c26d8478897acfc00bf·...·]-9">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">2001</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 75304/142895 bytes (52.70%) of diff not shown.
40.4 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/notes.html
    
Offset 135, 33 lines modifiedOffset 135, 33 lines modified
135 ··<a·href="#fixed-bugs-and-malfunctions"·class="hover-link">135 ··<a·href="#fixed-bugs-and-malfunctions"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>138 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
139 </h3>139 </h3>
140 <ul><li><p>Made·it·possible·to·expand·help·text·displayed·by·pressing·^[h·by·pressing·^[h·again.</p><p>Own·Id:·OTP-19260·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8884"·title="">PR-8884</a></p></li><li><p>Defining·a·fun·in·the·shell·using·the·syntax·<code·class="inline">fun·Name/Arity</code>·would·fail.·This·has·been·corrected·so·that·the·following·now·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nb">is_atom</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">140 <ul><li><p>Made·it·possible·to·expand·help·text·displayed·by·pressing·^[h·by·pressing·^[h·again.</p><p>Own·Id:·OTP-19260·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8884"·title="">PR-8884</a></p></li><li><p>Defining·a·fun·in·the·shell·using·the·syntax·<code·class="inline">fun·Name/Arity</code>·would·fail.·This·has·been·corrected·so·that·the·following·now·works:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="nb">is_atom</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
141 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">141 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">
142 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="5356168334-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="5356168334-1">)</span><span·class="p">.</span><span·class="w">142 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="5695176937-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="5695176937-1">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="ss">true</span><span·class="gp·unselectable">143 </span><span·class="ss">true</span><span·class="gp·unselectable">
144 3&gt;·</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">144 3&gt;·</span><span·class="n">Id</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">145 </span><span·class="p">#</span><span·class="n">Fun</span><span·class="p">.</span><span·class="ss">erl</span><span·class="p">.</span><span·class="mf">42.18682967</span><span·class="o">&gt;</span><span·class="gp·unselectable">
146 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="5356168334-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5356168334-2">)</span><span·class="p">.</span><span·class="w">146 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="5695176937-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5695176937-2">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">147 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">
148 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="5356168334-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="5356168334-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">I</span><span·class="p">.</span><span·class="w">148 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="5695176937-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="5695176937-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">I</span><span·class="p">.</span><span·class="w">
149 </span><span·class="ss">ok</span><span·class="gp·unselectable">149 </span><span·class="ss">ok</span><span·class="gp·unselectable">
150 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="5356168334-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5356168334-4">)</span><span·class="p">.</span><span·class="w">150 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="5695176937-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5695176937-4">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="mi">42</span></code></pre><p>The·Debugger·has·also·been·corrected·to·correctly·handle·this·syntax·for·a·BIF.</p><p>Own·Id:·OTP-19322·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8963"·title="">GH-8963</a>,·<a·href="https://github.com/erlang/otp/pull/8987"·title="">PR-8987</a></p></li><li><p>Fixed·a·bug·where·completion·of·'fun('·would·cause·the·shell·to·crash.</p><p>Own·Id:·OTP-19351·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9043"·title="">PR-9043</a></p></li><li><p>Fixed·a·bug·causing·the·shell·to·crash·while·trying·to·complete·an·expression·starting·with·a·'/'·or·a·variable·followed·by·'('·or·'/'.·E.g.·Foo/·and·Foo(.</p><p>Own·Id:·OTP-19361·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9078"·title="">PR-9078</a></p></li><li><p><a·href="zip.html#extract/2"><code·class="inline">zip:extract/2</code></a>·with·<code·class="inline">keep_old_files</code>·now·respects·the·<code·class="inline">cwd</code>·option.</p><p>Own·Id:·OTP-19370·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9097"·title="">PR-9097</a>,·<a·href="https://github.com/erlang/otp/issues/9087"·title="">GH-9087</a></p></li><li><p>Fixed·an·error·in·uri_string:percent_decode·spec</p><p>Own·Id:·OTP-19380·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8755"·title="">GH-8755</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">151 </span><span·class="mi">42</span></code></pre><p>The·Debugger·has·also·been·corrected·to·correctly·handle·this·syntax·for·a·BIF.</p><p>Own·Id:·OTP-19322·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8963"·title="">GH-8963</a>,·<a·href="https://github.com/erlang/otp/pull/8987"·title="">PR-8987</a></p></li><li><p>Fixed·a·bug·where·completion·of·'fun('·would·cause·the·shell·to·crash.</p><p>Own·Id:·OTP-19351·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9043"·title="">PR-9043</a></p></li><li><p>Fixed·a·bug·causing·the·shell·to·crash·while·trying·to·complete·an·expression·starting·with·a·'/'·or·a·variable·followed·by·'('·or·'/'.·E.g.·Foo/·and·Foo(.</p><p>Own·Id:·OTP-19361·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9078"·title="">PR-9078</a></p></li><li><p><a·href="zip.html#extract/2"><code·class="inline">zip:extract/2</code></a>·with·<code·class="inline">keep_old_files</code>·now·respects·the·<code·class="inline">cwd</code>·option.</p><p>Own·Id:·OTP-19370·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9097"·title="">PR-9097</a>,·<a·href="https://github.com/erlang/otp/issues/9087"·title="">GH-9087</a></p></li><li><p>Fixed·an·error·in·uri_string:percent_decode·spec</p><p>Own·Id:·OTP-19380·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8755"·title="">GH-8755</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
152 ··<a·href="#improvements-and-new-features"·class="hover-link">152 ··<a·href="#improvements-and-new-features"·class="hover-link">
153 ····<i·class="ri-link-m"·aria-hidden="true"></i>153 ····<i·class="ri-link-m"·aria-hidden="true"></i>
154 ··</a>154 ··</a>
155 ··<span·class="text">Improvements·and·New·Features</span>155 ··<span·class="text">Improvements·and·New·Features</span>
156 </h3>156 </h3>
157 <ul><li><p>Updated·shell·docs·to·display·the·type·spec,·that·is,·<code·class="inline">h(erlang,·min,·2)</code>)·now·prints·the·type·spec·and·documentation·in·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">h</span><span·class="p"·data-group-id="2637734956-1">(</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="ss">min</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2637734956-1">)</span><span·class="p">.</span><span·class="w">157 <ul><li><p>Updated·shell·docs·to·display·the·type·spec,·that·is,·<code·class="inline">h(erlang,·min,·2)</code>)·now·prints·the·type·spec·and·documentation·in·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">h</span><span·class="p"·data-group-id="4471137822-1">(</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="ss">min</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4471137822-1">)</span><span·class="p">.</span><span·class="w">
158 </span><span·class="w">158 </span><span·class="w">
159 ··</span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">min</span><span·class="p"·data-group-id="2637734956-2">(</span><span·class="n">Term1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term2</span><span·class="p"·data-group-id="2637734956-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Minimum</span><span·class="w">159 ··</span><span·class="p">-</span><span·class="na">spec</span><span·class="w">·</span><span·class="nf">min</span><span·class="p"·data-group-id="4471137822-2">(</span><span·class="n">Term1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term2</span><span·class="p"·data-group-id="4471137822-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Minimum</span><span·class="w">
160 ···············</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Term1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="2637734956-3">(</span><span·class="p"·data-group-id="2637734956-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·421,·SHA:·ec123da962d0ee16e1314baf2798ea1944817c7252904c114e083b7c85b572bb·...·]-5">)</span><span·class="p">.</span><span·class="w">160 ···············</span><span·class="k">when</span><span·class="w">·</span><span·class="n">Term1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="4471137822-3">(</span><span·class="p"·data-group-id="4471137822-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·421,·SHA:·8bd9b97ee3fbbc1b775fa01bb7cb941e627dbcf6fb41d6b6b68ba5245c4c52b9·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
161 ··</span><span·class="n">Returns</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">smallest</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="n">Term1</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">Term2</span><span·class="p">.</span><span·class="w">·</span><span·class="n">If</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">terms</span><span·class="w">·</span><span·class="ss">compare</span><span·class="w">·</span><span·class="ss">equal</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="ss">operator</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term1</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">returned</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19234·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8544"·title="">GH-8544</a>,·<a·href="https://github.com/erlang/otp/pull/8833"·title="">PR-8833</a></p></li><li><p>The·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:io_device/0"><code·class="inline">file:io_device/0</code></a>·type·has·been·updated·to·clearly·show·the·difference·between·a·<code·class="inline">raw</code>·and·<code·class="inline">cooked</code>·IoDevice.</p><p>Own·Id:·OTP-19301·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8956"·title="">PR-8956</a></p></li><li><p>Added·<a·href="json.html#format_key_value_list/3"><code·class="inline">json:format_key_value_list/3</code></a>·and161 ··</span><span·class="n">Returns</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">smallest</span><span·class="w">·</span><span·class="k">of</span><span·class="w">·</span><span·class="n">Term1</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">Term2</span><span·class="p">.</span><span·class="w">·</span><span·class="n">If</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="ss">terms</span><span·class="w">·</span><span·class="ss">compare</span><span·class="w">·</span><span·class="ss">equal</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="ss">the</span><span·class="w">·</span><span·class="o">==</span><span·class="w">·</span><span·class="ss">operator</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term1</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">returned</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19234·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8544"·title="">GH-8544</a>,·<a·href="https://github.com/erlang/otp/pull/8833"·title="">PR-8833</a></p></li><li><p>The·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#t:io_device/0"><code·class="inline">file:io_device/0</code></a>·type·has·been·updated·to·clearly·show·the·difference·between·a·<code·class="inline">raw</code>·and·<code·class="inline">cooked</code>·IoDevice.</p><p>Own·Id:·OTP-19301·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8956"·title="">PR-8956</a></p></li><li><p>Added·<a·href="json.html#format_key_value_list/3"><code·class="inline">json:format_key_value_list/3</code></a>·and
162 <a·href="json.html#format_key_value_list_checked/3"><code·class="inline">json:format_key_value_list_checked/3</code></a>.</p><p>Own·Id:·OTP-19320·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8889"·title="">PR-8889</a></p></li><li><p>Improved·documentation·of·<a·href="../../../../erts-15.2.2/doc/html/time_correction.html#timers">timers</a>.</p><p>Own·Id:·OTP-19360·Aux·Id:·ERIERL-1149,·<a·href="https://github.com/erlang/otp/pull/9062"·title="">PR-9062</a></p></li><li><p>Added·logging·support·to·<a·href="io.html#t:user/0"><code·class="inline">io:user/0</code></a>,·<a·href="io.html#t:standard_io/0"><code·class="inline">io:standard_io/0</code></a>·and·<a·href="io.html#t:standard_error/0"><code·class="inline">io:standard_error/0</code></a>.·See·<a·href="io.html#setopts/2"><code·class="inline">io:setopts/2</code></a>·for·more·details.</p><p>Own·Id:·OTP-19372·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8947"·title="">PR-8947</a></p></li></ul><h2·id="stdlib-6-1-2"·class="section-heading">162 <a·href="json.html#format_key_value_list_checked/3"><code·class="inline">json:format_key_value_list_checked/3</code></a>.</p><p>Own·Id:·OTP-19320·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8889"·title="">PR-8889</a></p></li><li><p>Improved·documentation·of·<a·href="../../../../erts-15.2.2/doc/html/time_correction.html#timers">timers</a>.</p><p>Own·Id:·OTP-19360·Aux·Id:·ERIERL-1149,·<a·href="https://github.com/erlang/otp/pull/9062"·title="">PR-9062</a></p></li><li><p>Added·logging·support·to·<a·href="io.html#t:user/0"><code·class="inline">io:user/0</code></a>,·<a·href="io.html#t:standard_io/0"><code·class="inline">io:standard_io/0</code></a>·and·<a·href="io.html#t:standard_error/0"><code·class="inline">io:standard_error/0</code></a>.·See·<a·href="io.html#setopts/2"><code·class="inline">io:setopts/2</code></a>·for·more·details.</p><p>Own·Id:·OTP-19372·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8947"·title="">PR-8947</a></p></li></ul><h2·id="stdlib-6-1-2"·class="section-heading">
163 ··<a·href="#stdlib-6-1-2"·class="hover-link">163 ··<a·href="#stdlib-6-1-2"·class="hover-link">
164 ····<i·class="ri-link-m"·aria-hidden="true"></i>164 ····<i·class="ri-link-m"·aria-hidden="true"></i>
165 ··</a>165 ··</a>
166 ··<span·class="text">STDLIB·6.1.2</span>166 ··<span·class="text">STDLIB·6.1.2</span>
Offset 233, 16 lines modifiedOffset 233, 16 lines modified
233 <a·href="binary.html#split/2"><code·class="inline">binary:split/2,3</code></a></p><p>The·call·<code·class="inline">binary:copy(&lt;&lt;1:1&gt;&gt;,·0)</code>·would·return·an·empty·binary·instead·of·raising·an·exception.·Similarly,·calls·to·<a·href="binary.html#part/2"><code·class="inline">binary:part/2,3</code></a>·attempting·to·extract·0·bytes·at·position·0·of·a·bitstring·would·return·an·empty·binary·instead·of·raising·an·exception.</p><p>Own·Id:·OTP-18743·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7607"·title="">PR-7607</a>,·<a·href="https://github.com/erlang/otp/pull/7628"·title="">PR-7628</a></p></li><li><p>The·documentation·for·the·preprocessor·now·mentions·that·<code·class="inline">defined(Name)</code>·can·be·called·in·the·condition·for·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·directive·to·test·whether·<code·class="inline">Name</code>·is·the·name·of·a·defined·macro.·(This·feature·was·implemented·in·OTP·21.)</p><p>If·a·function·call·in·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·with·a·name·that·is·not·the·name·of·a·guard·BIF,·there·would·not·be·a·compilation·error,·but·would·instead·cause·the·lines·following·the·directive·to·be·skipped.·This·has·now·been·changed·to·be·a·compilation·error.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18784·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/7706"·title="">GH-7706</a>,·<a·href="https://github.com/erlang/otp/pull/7726"·title="">PR-7726</a></p></li><li><p><code·class="inline">get_until</code>·requests·using·the·I/O·protocol·now·correctly·return·a·binary·or·list·when·<code·class="inline">eof</code>·is·the·last·item·returned·by·the·callback.</p><p>Own·Id:·OTP-18930·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7993"·title="">PR-7993</a>,·<a·href="https://github.com/erlang/otp/issues/4992"·title="">GH-4992</a></p></li><li><p>The·error·handling·the·<code·class="inline">simple_one_for_one</code>·supervisor·has·been·enhanced.·A·transient·child·returning·<code·class="inline">ignore</code>·will·no·longer·cause·a·crash.</p><p>Also,·automatic·shutdown·has·been·disabled·because·it·does·not·make·sense·for·this·supervisor·type.·That·is·was·allowed·is·considered·a·bug.·Therefore,·we·don't·consider·this·an·incompatible·change.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-19029·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8230"·title="">PR-8230</a></p></li><li><p>Fix·shell·expansion·to·not·crash·when·expanding·a·map·with·non-atom·keys·and·to·not·list·zero·arity·functions·when·an·argument·has·been·given.</p><p>Own·Id:·OTP-19073·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8375"·title="">PR-8375</a>,·<a·href="https://github.com/erlang/otp/issues/8366"·title="">GH-8366</a>,·<a·href="https://github.com/erlang/otp/issues/8365"·title="">GH-8365</a>,·<a·href="https://github.com/erlang/otp/issues/8364"·title="">GH-8364</a></p></li></ul><h3·id="improvements-and-new-features-2"·class="section-heading">233 <a·href="binary.html#split/2"><code·class="inline">binary:split/2,3</code></a></p><p>The·call·<code·class="inline">binary:copy(&lt;&lt;1:1&gt;&gt;,·0)</code>·would·return·an·empty·binary·instead·of·raising·an·exception.·Similarly,·calls·to·<a·href="binary.html#part/2"><code·class="inline">binary:part/2,3</code></a>·attempting·to·extract·0·bytes·at·position·0·of·a·bitstring·would·return·an·empty·binary·instead·of·raising·an·exception.</p><p>Own·Id:·OTP-18743·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7607"·title="">PR-7607</a>,·<a·href="https://github.com/erlang/otp/pull/7628"·title="">PR-7628</a></p></li><li><p>The·documentation·for·the·preprocessor·now·mentions·that·<code·class="inline">defined(Name)</code>·can·be·called·in·the·condition·for·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·directive·to·test·whether·<code·class="inline">Name</code>·is·the·name·of·a·defined·macro.·(This·feature·was·implemented·in·OTP·21.)</p><p>If·a·function·call·in·an·<code·class="inline">-if</code>·or·<code·class="inline">-elif</code>·with·a·name·that·is·not·the·name·of·a·guard·BIF,·there·would·not·be·a·compilation·error,·but·would·instead·cause·the·lines·following·the·directive·to·be·skipped.·This·has·now·been·changed·to·be·a·compilation·error.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18784·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/7706"·title="">GH-7706</a>,·<a·href="https://github.com/erlang/otp/pull/7726"·title="">PR-7726</a></p></li><li><p><code·class="inline">get_until</code>·requests·using·the·I/O·protocol·now·correctly·return·a·binary·or·list·when·<code·class="inline">eof</code>·is·the·last·item·returned·by·the·callback.</p><p>Own·Id:·OTP-18930·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7993"·title="">PR-7993</a>,·<a·href="https://github.com/erlang/otp/issues/4992"·title="">GH-4992</a></p></li><li><p>The·error·handling·the·<code·class="inline">simple_one_for_one</code>·supervisor·has·been·enhanced.·A·transient·child·returning·<code·class="inline">ignore</code>·will·no·longer·cause·a·crash.</p><p>Also,·automatic·shutdown·has·been·disabled·because·it·does·not·make·sense·for·this·supervisor·type.·That·is·was·allowed·is·considered·a·bug.·Therefore,·we·don't·consider·this·an·incompatible·change.</p><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-19029·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8230"·title="">PR-8230</a></p></li><li><p>Fix·shell·expansion·to·not·crash·when·expanding·a·map·with·non-atom·keys·and·to·not·list·zero·arity·functions·when·an·argument·has·been·given.</p><p>Own·Id:·OTP-19073·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8375"·title="">PR-8375</a>,·<a·href="https://github.com/erlang/otp/issues/8366"·title="">GH-8366</a>,·<a·href="https://github.com/erlang/otp/issues/8365"·title="">GH-8365</a>,·<a·href="https://github.com/erlang/otp/issues/8364"·title="">GH-8364</a></p></li></ul><h3·id="improvements-and-new-features-2"·class="section-heading">
234 ··<a·href="#improvements-and-new-features-2"·class="hover-link">234 ··<a·href="#improvements-and-new-features-2"·class="hover-link">
235 ····<i·class="ri-link-m"·aria-hidden="true"></i>235 ····<i·class="ri-link-m"·aria-hidden="true"></i>
236 ··</a>236 ··</a>
237 ··<span·class="text">Improvements·and·New·Features</span>237 ··<span·class="text">Improvements·and·New·Features</span>
238 </h3>238 </h3>
239 <ul><li><p>The·functions·<a·href="sets.html#is_equal/2"><code·class="inline">is_equal/2</code></a>,·<a·href="sets.html#map/2"><code·class="inline">map/2</code></a>,·and·<a·href="sets.html#filtermap/2"><code·class="inline">filtermap/2</code></a>·have·been·added·to·the·modules·<a·href="sets.html"><code·class="inline">sets</code></a>,·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>,·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>.</p><p>Own·Id:·OTP-18622·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7183"·title="">PR-7183</a>,·<a·href="https://github.com/erlang/otp/pull/7232"·title="">PR-7232</a></p></li><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.239 <ul><li><p>The·functions·<a·href="sets.html#is_equal/2"><code·class="inline">is_equal/2</code></a>,·<a·href="sets.html#map/2"><code·class="inline">map/2</code></a>,·and·<a·href="sets.html#filtermap/2"><code·class="inline">filtermap/2</code></a>·have·been·added·to·the·modules·<a·href="sets.html"><code·class="inline">sets</code></a>,·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>,·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>.</p><p>Own·Id:·OTP-18622·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7183"·title="">PR-7183</a>,·<a·href="https://github.com/erlang/otp/pull/7232"·title="">PR-7232</a></p></li><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.
240 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="6587577833-1">(</span><span·class="p"·data-group-id="6587577833-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">240 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="3178424365-1">(</span><span·class="p"·data-group-id="3178424365-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
241 </span><span·class="nf">a</span><span·class="p"·data-group-id="6587577833-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="6587577833-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>Erlang/OTP·26·and·earlier·would·emit·a·diagnostic·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch241 </span><span·class="nf">a</span><span·class="p"·data-group-id="3178424365-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="3178424365-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>Erlang/OTP·26·and·earlier·would·emit·a·diagnostic·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch
242 %····6|·a(_)·-&gt;·error.242 %····6|·a(_)·-&gt;·error.
243 %·····|·^</code></pre><p>while·in·Erlang/OTP·27·the·diagnostic·is·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch:·function·a·with·arities·0·and·1·is·regarded·as·two·distinct·functions.·Is·the·number·of·arguments·incorrect·or·is·the·semicolon·in·a/0·unwanted?243 %·····|·^</code></pre><p>while·in·Erlang/OTP·27·the·diagnostic·is·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch:·function·a·with·arities·0·and·1·is·regarded·as·two·distinct·functions.·Is·the·number·of·arguments·incorrect·or·is·the·semicolon·in·a/0·unwanted?
244 %····6|·a(_)·-&gt;·error.244 %····6|·a(_)·-&gt;·error.
245 %·····|·^</code></pre><p>Own·Id:·OTP-18648·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7383"·title="">PR-7383</a></p></li><li><p><a·href="zip.html#create/2"><code·class="inline">zip:create/2,3</code></a>·will·now·tolerate·POSIX·timestamps·in·the·provided·<code·class="inline">file_info</code>·records.</p><p>Own·Id:·OTP-18668</p></li><li><p>The·callback·function·<a·href="gen_statem.html#c:handle_event/4"><code·class="inline">gen_statem:handle_event/4</code></a>·has·been·cached·in·the·<code·class="inline">gen_statem</code>·engine·to·optimize·callback·call·speed.</p><p>Own·Id:·OTP-18671·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7419"·title="">PR-7419</a></p></li><li><p>The·type·<code·class="inline">beam_lib:beam/0</code>·is·now·exported.</p><p>Own·Id:·OTP-18716·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7534"·title="">PR-7534</a></p></li><li><p>The·documentation·for·the·<a·href="binary.html"><code·class="inline">binary</code></a>·module·has·been·improved.</p><p>Own·Id:·OTP-18741·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7585"·title="">PR-7585</a></p></li><li><p><a·href="binary.html#replace/3"><code·class="inline">binary:replace/3,4</code></a>·now·supports·using·a·fun·for·supplying·the·replacement·binary.</p><p>Own·Id:·OTP-18742·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7590"·title="">PR-7590</a></p></li><li><p>Triple-Quoted·Strings·has·been·implemented·as·per·<a·href="https://www.erlang.org/eeps/eep-0064">EEP·64</a>.·See·<a·href="../../../../doc/system/data_types.html#string">String</a>·in·the·Reference·Manual.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;245 %·····|·^</code></pre><p>Own·Id:·OTP-18648·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7383"·title="">PR-7383</a></p></li><li><p><a·href="zip.html#create/2"><code·class="inline">zip:create/2,3</code></a>·will·now·tolerate·POSIX·timestamps·in·the·provided·<code·class="inline">file_info</code>·records.</p><p>Own·Id:·OTP-18668</p></li><li><p>The·callback·function·<a·href="gen_statem.html#c:handle_event/4"><code·class="inline">gen_statem:handle_event/4</code></a>·has·been·cached·in·the·<code·class="inline">gen_statem</code>·engine·to·optimize·callback·call·speed.</p><p>Own·Id:·OTP-18671·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7419"·title="">PR-7419</a></p></li><li><p>The·type·<code·class="inline">beam_lib:beam/0</code>·is·now·exported.</p><p>Own·Id:·OTP-18716·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7534"·title="">PR-7534</a></p></li><li><p>The·documentation·for·the·<a·href="binary.html"><code·class="inline">binary</code></a>·module·has·been·improved.</p><p>Own·Id:·OTP-18741·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7585"·title="">PR-7585</a></p></li><li><p><a·href="binary.html#replace/3"><code·class="inline">binary:replace/3,4</code></a>·now·supports·using·a·fun·for·supplying·the·replacement·binary.</p><p>Own·Id:·OTP-18742·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7590"·title="">PR-7590</a></p></li><li><p>Triple-Quoted·Strings·has·been·implemented·as·per·<a·href="https://www.erlang.org/eeps/eep-0064">EEP·64</a>.·See·<a·href="../../../../doc/system/data_types.html#string">String</a>·in·the·Reference·Manual.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;
246 ···a246 ···a
247 ···b247 ···b
248 ···c248 ···c
Offset 257, 30 lines modifiedOffset 257, 30 lines modified
257 ····.257 ····.
258 ····.258 ····.
259 ····.259 ····.
260 &lt;0.90.0&gt;··············erlang:apply/2························2586····75011····0260 &lt;0.90.0&gt;··············erlang:apply/2························2586····75011····0
261 my_label··············c:pinfo/2·······························51261 my_label··············c:pinfo/2·······························51
262 4&gt;·proc_lib:get_label(self()).262 4&gt;·proc_lib:get_label(self()).
263 my_label</code></pre><p>Own·Id:·OTP-18789·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7720"·title="">PR-7720</a>,·<a·href="https://github.com/erlang/otp/pull/8003"·title="">PR-8003</a></p></li><li><p><code·class="inline">-callback</code>·attributes·has·been·added·to·modules·<a·href="sys.html"><code·class="inline">sys</code></a>·and·<a·href="erl_error.html"><code·class="inline">erl_error</code></a>.</p><p>Own·Id:·OTP-18793·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7703"·title="">PR-7703</a></p></li><li><p>Several·new·functions·that·accept·funs·have·been·added·to·module·<a·href="timer.html"><code·class="inline">timer</code></a>.</p><p>Functions·<a·href="timer.html#apply_after/2"><code·class="inline">apply_after/2</code></a>,·<a·href="timer.html#apply_interval/2"><code·class="inline">apply_interval/2</code></a>,·and·<code·class="inline">apply_repeatedly/2</code>·accept·a·nullary·fun·as·the·second·argument,·while··functions·<a·href="timer.html#apply_after/3"><code·class="inline">apply_after/3</code></a>,·<a·href="timer.html#apply_interval/3"><code·class="inline">apply_interval/3</code></a>,·and·<code·class="inline">apply_repeatedly/3</code>·accept·an·n-ary·fun·as·the·second·and·a·list·of·n·arguments·for·the·fun·as·the·third·argument.</p><p>Own·Id:·OTP-18808·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7649"·title="">PR-7649</a></p></li><li><p>Sigils·on·string·literals·have·been·implemented·as·per·<a·href="https://www.erlang.org/eeps/eep-0066">EEP·66</a>,·that·is:·binary·and·string·sigils·in·verbatim·and·escape·characters·variants,·as·well·as·a·default·(vanilla)·Sigil.··All·for·ordinary·strings·and·for·triple-quoted·strings·(EEP·64).·See·<a·href="../../../../doc/system/data_types.html#sigil">Sigils·in·the·Reference·Manual</a>.</p><p>Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">~&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">263 my_label</code></pre><p>Own·Id:·OTP-18789·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7720"·title="">PR-7720</a>,·<a·href="https://github.com/erlang/otp/pull/8003"·title="">PR-8003</a></p></li><li><p><code·class="inline">-callback</code>·attributes·has·been·added·to·modules·<a·href="sys.html"><code·class="inline">sys</code></a>·and·<a·href="erl_error.html"><code·class="inline">erl_error</code></a>.</p><p>Own·Id:·OTP-18793·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7703"·title="">PR-7703</a></p></li><li><p>Several·new·functions·that·accept·funs·have·been·added·to·module·<a·href="timer.html"><code·class="inline">timer</code></a>.</p><p>Functions·<a·href="timer.html#apply_after/2"><code·class="inline">apply_after/2</code></a>,·<a·href="timer.html#apply_interval/2"><code·class="inline">apply_interval/2</code></a>,·and·<code·class="inline">apply_repeatedly/2</code>·accept·a·nullary·fun·as·the·second·argument,·while··functions·<a·href="timer.html#apply_after/3"><code·class="inline">apply_after/3</code></a>,·<a·href="timer.html#apply_interval/3"><code·class="inline">apply_interval/3</code></a>,·and·<code·class="inline">apply_repeatedly/3</code>·accept·an·n-ary·fun·as·the·second·and·a·list·of·n·arguments·for·the·fun·as·the·third·argument.</p><p>Own·Id:·OTP-18808·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7649"·title="">PR-7649</a></p></li><li><p>Sigils·on·string·literals·have·been·implemented·as·per·<a·href="https://www.erlang.org/eeps/eep-0066">EEP·66</a>,·that·is:·binary·and·string·sigils·in·verbatim·and·escape·characters·variants,·as·well·as·a·default·(vanilla)·Sigil.··All·for·ordinary·strings·and·for·triple-quoted·strings·(EEP·64).·See·<a·href="../../../../doc/system/data_types.html#sigil">Sigils·in·the·Reference·Manual</a>.</p><p>Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">~&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">
264 </span><span·class="p"·data-group-id="4870781628-1">&lt;&lt;</span><span·class="s">&quot;Björn&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4870781628-1">&gt;&gt;</span><span·class="gp·unselectable">264 </span><span·class="p"·data-group-id="4813851145-1">&lt;&lt;</span><span·class="s">&quot;Björn&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4813851145-1">&gt;&gt;</span><span·class="gp·unselectable">
265 2&gt;·</span><span·class="s">~b&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">265 2&gt;·</span><span·class="s">~b&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">
266 </span><span·class="p"·data-group-id="4870781628-2">&lt;&lt;</span><span·class="s">&quot;Björn&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4870781628-2">&gt;&gt;</span><span·class="gp·unselectable">266 </span><span·class="p"·data-group-id="4813851145-2">&lt;&lt;</span><span·class="s">&quot;Björn&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4813851145-2">&gt;&gt;</span><span·class="gp·unselectable">
267 3&gt;·</span><span·class="s">~S&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">267 3&gt;·</span><span·class="s">~S&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">
268 </span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="gp·unselectable">268 </span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="gp·unselectable">
269 4&gt;·</span><span·class="s">~B&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">269 4&gt;·</span><span·class="s">~B&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">
270 </span><span·class="p"·data-group-id="4870781628-3">&lt;&lt;</span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="p"·data-group-id="4870781628-3">&gt;&gt;</span></code></pre><p>Own·Id:·OTP-18825·Aux·Id:·OTP-18750,·<a·href="https://github.com/erlang/otp/pull/7684"·title="">PR-7684</a></p></li><li><p>Functions·<a·href="shell.html#default_multiline_prompt/1"><code·class="inline">shell:default_multiline_prompt/1</code></a>,·<a·href="shell.html#inverted_space_prompt/1"><code·class="inline">shell:inverted_space_prompt/1</code></a>,·and·270 </span><span·class="p"·data-group-id="4813851145-3">&lt;&lt;</span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="p"·data-group-id="4813851145-3">&gt;&gt;</span></code></pre><p>Own·Id:·OTP-18825·Aux·Id:·OTP-18750,·<a·href="https://github.com/erlang/otp/pull/7684"·title="">PR-7684</a></p></li><li><p>Functions·<a·href="shell.html#default_multiline_prompt/1"><code·class="inline">shell:default_multiline_prompt/1</code></a>,·<a·href="shell.html#inverted_space_prompt/1"><code·class="inline">shell:inverted_space_prompt/1</code></a>,·and·
271 <a·href="shell.html#prompt_width/1"><code·class="inline">shell:prompt_width/1</code></a>·have·been·exported·to·help·with·custom·prompt·implementations.</p><p>Own·Id:·OTP-18834·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7675"·title="">PR-7675</a>,·<a·href="https://github.com/erlang/otp/pull/7816"·title="">PR-7816</a></p></li><li><p>The·shell·now·pages·long·output·from·the·documentation·help·command·(<code·class="inline">h(Module)</code>),·auto·completions·and·the·search·command.</p><p>Own·Id:·OTP-18846·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7845"·title="">PR-7845</a></p></li><li><p>The·<code·class="inline">M-h</code>·hotkey·(Alt/Option-h)·now·outputs·help·for·the·module·or·function·directly·before·the·cursor.</p><p>Own·Id:·OTP-18847·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7846"·title="">PR-7846</a></p></li><li><p>Added·support·for·adding·a·custom·code·formatter·that·formats·your·multi-line·shell·commands·in·your·preferred·formatting·on·submission.·See·<code·class="inline">shell:format_shell_func/</code>·and·<a·href="shell.html#erl_pp_format_func/1"><code·class="inline">shell:erl_pp_format_func/1</code></a>.</p><p>Own·Id:·OTP-18848·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7847"·title="">PR-7847</a></p></li><li><p>Added·shell·functions·for·viewing,·forgetting·and·saving·locally·defined·functions,·types·and·records.</p><p>Own·Id:·OTP-18852·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7844"·title="">PR-7844</a></p></li><li><p>Added·<a·href="string.html#jaro_similarity/2"><code·class="inline">string:jaro_similarity/2</code></a>,·which·can·be·used·to·calculate·the·similarity·between·two·strings.</p><p>Own·Id:·OTP-18865·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7879"·title="">PR-7879</a></p></li><li><p>The·new·function·<a·href="ets.html#update_element/4"><code·class="inline">ets:update_element/4</code></a>·is·similar·to·<a·href="ets.html#update_element/3"><code·class="inline">ets:update_element/3</code></a>,·but·takes·a·default·tuple·as·the·fourth·argument,·which·will·be·inserted·if·no·previous·record·with·that·key·exists.</p><p>Own·Id:·OTP-18870·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7857"·title="">PR-7857</a></p></li><li><p>Added·functions·to·retrieve·the·next·higher·or·lower·key/element·from·<a·href="gb_trees.html"><code·class="inline">gb_trees</code></a>·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>,·as·well·as·returning·iterators·that·start·at·given·keys/elements.</p><p>Own·Id:·OTP-18874·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7745"·title="">PR-7745</a></p></li><li><p>When·the·shell·built-in·function·<a·href="c.html#c/1"·title=""><code·class="inline">c/1,2</code></a>·is·used·to·re-compile·a·module,·the·current·working·directory·of·the·original·compilation·is·now·added·to·the·include·path.</p><p>Own·Id:·OTP-18908·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7957"·title="">PR-7957</a></p></li><li><p>The·<code·class="inline">timer</code>·module·now·uses·a·private·table·for·its·internal·state,·slightly·improving·its·performance.</p><p>Own·Id:·OTP-18914·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7973"·title="">PR-7973</a></p></li><li><p><a·href="https://www.erlang.org/eeps/eep-0059">EEP-59·-·Documentation·Attributes</a>·has·been·implemented.</p><p>Documentation·attributes·can·be·used·to·document·functions,·types,·callbacks,·and·modules.271 <a·href="shell.html#prompt_width/1"><code·class="inline">shell:prompt_width/1</code></a>·have·been·exported·to·help·with·custom·prompt·implementations.</p><p>Own·Id:·OTP-18834·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7675"·title="">PR-7675</a>,·<a·href="https://github.com/erlang/otp/pull/7816"·title="">PR-7816</a></p></li><li><p>The·shell·now·pages·long·output·from·the·documentation·help·command·(<code·class="inline">h(Module)</code>),·auto·completions·and·the·search·command.</p><p>Own·Id:·OTP-18846·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7845"·title="">PR-7845</a></p></li><li><p>The·<code·class="inline">M-h</code>·hotkey·(Alt/Option-h)·now·outputs·help·for·the·module·or·function·directly·before·the·cursor.</p><p>Own·Id:·OTP-18847·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7846"·title="">PR-7846</a></p></li><li><p>Added·support·for·adding·a·custom·code·formatter·that·formats·your·multi-line·shell·commands·in·your·preferred·formatting·on·submission.·See·<code·class="inline">shell:format_shell_func/</code>·and·<a·href="shell.html#erl_pp_format_func/1"><code·class="inline">shell:erl_pp_format_func/1</code></a>.</p><p>Own·Id:·OTP-18848·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7847"·title="">PR-7847</a></p></li><li><p>Added·shell·functions·for·viewing,·forgetting·and·saving·locally·defined·functions,·types·and·records.</p><p>Own·Id:·OTP-18852·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7844"·title="">PR-7844</a></p></li><li><p>Added·<a·href="string.html#jaro_similarity/2"><code·class="inline">string:jaro_similarity/2</code></a>,·which·can·be·used·to·calculate·the·similarity·between·two·strings.</p><p>Own·Id:·OTP-18865·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7879"·title="">PR-7879</a></p></li><li><p>The·new·function·<a·href="ets.html#update_element/4"><code·class="inline">ets:update_element/4</code></a>·is·similar·to·<a·href="ets.html#update_element/3"><code·class="inline">ets:update_element/3</code></a>,·but·takes·a·default·tuple·as·the·fourth·argument,·which·will·be·inserted·if·no·previous·record·with·that·key·exists.</p><p>Own·Id:·OTP-18870·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7857"·title="">PR-7857</a></p></li><li><p>Added·functions·to·retrieve·the·next·higher·or·lower·key/element·from·<a·href="gb_trees.html"><code·class="inline">gb_trees</code></a>·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>,·as·well·as·returning·iterators·that·start·at·given·keys/elements.</p><p>Own·Id:·OTP-18874·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7745"·title="">PR-7745</a></p></li><li><p>When·the·shell·built-in·function·<a·href="c.html#c/1"·title=""><code·class="inline">c/1,2</code></a>·is·used·to·re-compile·a·module,·the·current·working·directory·of·the·original·compilation·is·now·added·to·the·include·path.</p><p>Own·Id:·OTP-18908·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7957"·title="">PR-7957</a></p></li><li><p>The·<code·class="inline">timer</code>·module·now·uses·a·private·table·for·its·internal·state,·slightly·improving·its·performance.</p><p>Own·Id:·OTP-18914·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7973"·title="">PR-7973</a></p></li><li><p><a·href="https://www.erlang.org/eeps/eep-0059">EEP-59·-·Documentation·Attributes</a>·has·been·implemented.</p><p>Documentation·attributes·can·be·used·to·document·functions,·types,·callbacks,·and·modules.
272 The·keyword·<code·class="inline">-moduledoc·&quot;Documentation·here&quot;.</code>·is·used·to·document·modules,·while·<code·class="inline">-doc·&quot;Documentation·here&quot;.</code>·can·be·used·on·top·of·functions,·types,·and·callbacks·to·document·them,·respectively.</p><ul><li><p>Types,·callbacks,·and·function·documentation·can·be·set·to·<code·class="inline">hidden</code>·either·via·<code·class="inline">-doc·false</code>·or·<code·class="inline">-doc·hidden</code>.·When·documentation·attributes·mark·a·type·as·hidden,·they·will·not·be·part·of·the·documentation.</p></li><li><p>The·documentation·from·<code·class="inline">moduledoc</code>·and·<code·class="inline">doc</code>·gets·added·by·default·to·the·binary·beam·file,·following·the·format·of·<a·href="https://www.erlang.org/eeps/eep-0048">EEP-48</a>.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_doc</code>·will·raise·a·warning·when272 The·keyword·<code·class="inline">-moduledoc·&quot;Documentation·here&quot;.</code>·is·used·to·document·modules,·while·<code·class="inline">-doc·&quot;Documentation·here&quot;.</code>·can·be·used·on·top·of·functions,·types,·and·callbacks·to·document·them,·respectively.</p><ul><li><p>Types,·callbacks,·and·function·documentation·can·be·set·to·<code·class="inline">hidden</code>·either·via·<code·class="inline">-doc·false</code>·or·<code·class="inline">-doc·hidden</code>.·When·documentation·attributes·mark·a·type·as·hidden,·they·will·not·be·part·of·the·documentation.</p></li><li><p>The·documentation·from·<code·class="inline">moduledoc</code>·and·<code·class="inline">doc</code>·gets·added·by·default·to·the·binary·beam·file,·following·the·format·of·<a·href="https://www.erlang.org/eeps/eep-0048">EEP-48</a>.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_doc</code>·will·raise·a·warning·when
273 <code·class="inline">-doc</code>·attributes·are·missing·in·exported·functions,·types,·and·callbacks.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_spec_documented</code>·will·raise·a·warning·when273 <code·class="inline">-doc</code>·attributes·are·missing·in·exported·functions,·types,·and·callbacks.</p></li><li><p>Using·the·compiler·flag·<code·class="inline">warn_missing_spec_documented</code>·will·raise·a·warning·when
274 spec·attributes·are·missing·in·documented·functions,·types,·and·callbacks.</p></li><li><p><code·class="inline">moduledoc</code>s·and·<code·class="inline">doc</code>s·may·refer·to·external·files·to·be·embedded,·such·as·<code·class="inline">-doc·{file,·&quot;README.md&quot;}.</code>,·which·refers·to·the·file·<code·class="inline">README.md</code>·found·in·the·current·working·directory.</p></li><li><p>The·compiler·warns·about·exported·functions·whose·specs·refer·to·hidden·types.·Thus,·there·will·be·warnings·when·a·hidden·type·(meaning,·the·type·is·not·part·of·the·documentation)·gets·used·in·an·exported·function.</p></li></ul><p>Own·Id:·OTP-18916·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7936"·title="">PR-7936</a></p></li><li><p>New·<a·href="ets.html"><code·class="inline">ets</code></a>·functions·<a·href="ets.html#first_lookup/1"><code·class="inline">ets:first_lookup/1</code></a>,·<a·href="ets.html#next_lookup/2"><code·class="inline">ets:next_lookup/2</code></a>,·<a·href="ets.html#prev_lookup/2"><code·class="inline">ets:prev_lookup/2</code></a>·and·<a·href="ets.html#last_lookup/1"><code·class="inline">ets:last_lookup/1</code></a>.·Example:·<code·class="inline">ets:next_lookup/1</code>·is·equivalent·to·<a·href="ets.html#next/2"><code·class="inline">ets:next/2</code></a>·followed·by·<a·href="ets.html#lookup/2"><code·class="inline">ets:lookup/2</code></a>·with·the·next·key.·The·new·combined·functions·are·more·efficient·and·with·guaranteed·atomicity.</p><p>Own·Id:·OTP-18923·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/6791"·title="">PR-6791</a></p></li><li><p>The·<code·class="inline">maybe</code>·expression·is·now·enabled·by·default.</p><p>To·use·<code·class="inline">maybe</code>·as·an·atom,·it·needs·to·be·single-quoted.·Alternatively,·the·<code·class="inline">maybe</code>·expression·can·be·disabled·by·disabling·the·<code·class="inline">maybe_expr</code>·feature.·That·can·be·done·by·placing·the·following·the·line·at·the·beginning·of·an·Erlang·source·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">feature</span><span·class="p"·data-group-id="1299000252-1">(</span><span·class="ss">maybe_expr</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disable</span><span·class="p"·data-group-id="1299000252-1">)</span><span·class="p">.</span></code></pre><p>Another·way·to·disable·the·<[·...·truncated·by·diffoscope;·len:·688,·SHA:·54dc1e4ebb3e0581119debf2b143a3dd477bf7a3c09507c8790b5ebe216f234b·...·]-1">)</span><span·class="p">.</span><span·class="w">274 spec·attributes·are·missing·in·documented·functions,·types,·and·callbacks.</p></li><li><p><code·class="inline">moduledoc</code>s·and·<code·class="inline">doc</code>s·may·refer·to·external·files·to·be·embedded,·such·as·<code·class="inline">-doc·{file,·&quot;README.md&quot;}.</code>,·which·refers·to·the·file·<code·class="inline">README.md</code>·found·in·the·current·working·directory.</p></li><li><p>The·compiler·warns·about·exported·functions·whose·specs·refer·to·hidden·types.·Thus,·there·will·be·warnings·when·a·hidden·type·(meaning,·the·type·is·not·part·of·the·documentation)·gets·used·in·an·exported·function.</p></li></ul><p>Own·Id:·OTP-18916·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7936"·title="">PR-7936</a></p></li><li><p>New·<a·href="ets.html"><code·class="inline">ets</code></a>·functions·<a·href="ets.html#first_lookup/1"><code·class="inline">ets:first_lookup/1</code></a>,·<a·href="ets.html#next_lookup/2"><code·class="inline">ets:next_lookup/2</code></a>,·<a·href="ets.html#prev_lookup/2"><code·class="inline">ets:prev_lookup/2</code></a>·and·<a·href="ets.html#last_lookup/1"><code·class="inline">ets:last_lookup/1</code></a>.·Example:·<code·class="inline">ets:next_lookup/1</code>·is·equivalent·to·<a·href="ets.html#next/2"><code·class="inline">ets:next/2</code></a>·followed·by·<a·href="ets.html#lookup/2"><code·class="inline">ets:lookup/2</code></a>·with·the·next·key.·The·new·combined·functions·are·more·efficient·and·with·guaranteed·atomicity.</p><p>Own·Id:·OTP-18923·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/6791"·title="">PR-6791</a></p></li><li><p>The·<code·class="inline">maybe</code>·expression·is·now·enabled·by·default.</p><p>To·use·<code·class="inline">maybe</code>·as·an·atom,·it·needs·to·be·single-quoted.·Alternatively,·the·<code·class="inline">maybe</code>·expression·can·be·disabled·by·disabling·the·<code·class="inline">maybe_expr</code>·feature.·That·can·be·done·by·placing·the·following·the·line·at·the·beginning·of·an·Erlang·source·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">feature</span><span·class="p"·data-group-id="0780222284-1">(</span><span·class="ss">maybe_expr</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">disable</span><span·class="p"·data-group-id="0780222284-1">)</span><span·class="p">.</span></code></pre><p>Another·way·to·disable·the·<[·...·truncated·by·diffoscope;·len:·688,·SHA:·a07a941eb26eba1be92fdedc612a84cff7fe89a776a6b5f248ffdecbba3654c4·...·]-1">)</span><span·class="p">.</span><span·class="w">
275 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5022189672-2">(</span><span·class="p"·data-group-id="5022189672-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5022189672-3">]</span><span·class="p"·data-group-id="5022189672-2">)</span><span·class="p">.</span><span·class="w">275 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2414062754-2">(</span><span·class="p"·data-group-id="2414062754-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2414062754-3">]</span><span·class="p"·data-group-id="2414062754-2">)</span><span·class="p">.</span><span·class="w">
276 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5022189672-4">(</span><span·class="ss">r</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5022189672-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·109,·SHA:·dd26dbb22f35c1d78d2eb8e0e95ca7e493494a89e4f739c5deba96cbc5914d41·...·]-4">)</span><span·class="p">.</span><span·class="w">276 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2414062754-4">(</span><span·class="ss">r</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2414062754-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·109,·SHA:·96f9e497b5f3576f514f4ac8d9c856a8222c631519410f8ab09850840164c5bf·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
277 </span><span·class="nf">f</span><span·class="p"·data-group-id="5022189672-6">(</span><span·class="p"·data-group-id="5022189672-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">277 </span><span·class="nf">f</span><span·class="p"·data-group-id="2414062754-6">(</span><span·class="p"·data-group-id="2414062754-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
278 ····</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="5022189672-7">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="mi">1</span><span·class="p"·data-group-id="5022189672-7">}</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="5022189672-8">{</span><span[·...·truncated·by·diffoscope;·len:·110,·SHA:·9ae75ae479bebc2f16d67398ff758f0913db5a59622f66204bb255f205464701·...·]-8">}</span><span·class="p">.</span></code></pre><p>The·compiler·raises·the·following·warning:</p><pre><code·class="text">1&gt;·c(t).278 ····</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="2414062754-7">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="mi">1</span><span·class="p"·data-group-id="2414062754-7">}</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="2414062754-8">{</span><span[·...·truncated·by·diffoscope;·len:·110,·SHA:·20d4dc8ff2ad05b8e1841691faa85a0303279462312a511ffd918d72ec09e8fb·...·]-8">}</span><span·class="p">.</span></code></pre><p>The·compiler·raises·the·following·warning:</p><pre><code·class="text">1&gt;·c(t).
279 t.erl:6:12:·Warning:·expression·updates·a·literal279 t.erl:6:12:·Warning:·expression·updates·a·literal
280 %····6|·····#r{a=1}#r{b=2}.280 %····6|·····#r{a=1}#r{b=2}.
281 %·····|············^</code></pre><p>Own·Id:·OTP-18951·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8069"·title="">PR-8069</a></p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>Optimized·<code·class="inline">ets:foldl</code>·and·<code·class="inline">ets:foldr</code>·to·use·new·<code·class="inline">ets:next_lookup</code>.·Also·made·them·immune·against·table·renaming.</p><p>Own·Id:·OTP-18993·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8048"·title="">PR-8048</a></p></li><li><p>Windows·now·supports·all·functions·in·<a·href="math.html"><code·class="inline">math</code></a>.</p><p>Own·Id:·OTP-19001·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8164"·title="">PR-8164</a></p></li><li><p><a·href="erl_lint.html"><code·class="inline">erl_lint</code></a>·(and·by·extension·the·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html"><code·class="inline">compiler</code></a>)·will·now·warn·for·code·using·deprecated·callbacks.</p><p>The·only·callback·currenly·deprecated·is·<code·class="inline">format_status/2</code>·in·<a·href="gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="gen_server.html#c:format_status/2"><code·class="inline">gen_statem</code></a>.</p><p>You·can·use·<code·class="inline">nowarn_deprecated_callback</code>·to·silence·the·warning.</p><p>Own·Id:·OTP-19010·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8205"·title="">PR-8205</a></p></li><li><p>There·is·a·new·module·<a·href="json.html"><code·class="inline">json</code></a>·for·encoding·and·decoding·<a·href="https://en.wikipedia.org/wiki/JSON">JSON</a>.</p><p>Both·encoding·and·decoding·can·be·customized.·Decoding·can·be·done·in·a·SAX-like·fashion·and·handle·multiple·documents·and·streams·of·data.</p><p>Own·Id:·OTP-19020·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8111"·title="">PR-8111</a></p></li></ul><h2·id="stdlib-5-2-3-3"·class="section-heading">281 %·····|············^</code></pre><p>Own·Id:·OTP-18951·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8069"·title="">PR-8069</a></p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>Optimized·<code·class="inline">ets:foldl</code>·and·<code·class="inline">ets:foldr</code>·to·use·new·<code·class="inline">ets:next_lookup</code>.·Also·made·them·immune·against·table·renaming.</p><p>Own·Id:·OTP-18993·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8048"·title="">PR-8048</a></p></li><li><p>Windows·now·supports·all·functions·in·<a·href="math.html"><code·class="inline">math</code></a>.</p><p>Own·Id:·OTP-19001·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8164"·title="">PR-8164</a></p></li><li><p><a·href="erl_lint.html"><code·class="inline">erl_lint</code></a>·(and·by·extension·the·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html"><code·class="inline">compiler</code></a>)·will·now·warn·for·code·using·deprecated·callbacks.</p><p>The·only·callback·currenly·deprecated·is·<code·class="inline">format_status/2</code>·in·<a·href="gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="gen_server.html#c:format_status/2"><code·class="inline">gen_statem</code></a>.</p><p>You·can·use·<code·class="inline">nowarn_deprecated_callback</code>·to·silence·the·warning.</p><p>Own·Id:·OTP-19010·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8205"·title="">PR-8205</a></p></li><li><p>There·is·a·new·module·<a·href="json.html"><code·class="inline">json</code></a>·for·encoding·and·decoding·<a·href="https://en.wikipedia.org/wiki/JSON">JSON</a>.</p><p>Both·encoding·and·decoding·can·be·customized.·Decoding·can·be·done·in·a·SAX-like·fashion·and·handle·multiple·documents·and·streams·of·data.</p><p>Own·Id:·OTP-19020·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8111"·title="">PR-8111</a></p></li></ul><h2·id="stdlib-5-2-3-3"·class="section-heading">
282 ··<a·href="#stdlib-5-2-3-3"·class="hover-link">282 ··<a·href="#stdlib-5-2-3-3"·class="hover-link">
283 ····<i·class="ri-link-m"·aria-hidden="true"></i>283 ····<i·class="ri-link-m"·aria-hidden="true"></i>
284 ··</a>284 ··</a>
285 ··<span·class="text">STDLIB·5.2.3.3</span>285 ··<span·class="text">STDLIB·5.2.3.3</span>
123 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/orddict.html
    
Offset 138, 21 lines modifiedOffset 138, 21 lines modified
138 ··<a·href="#module-notes"·class="hover-link">138 ··<a·href="#module-notes"·class="hover-link">
139 ····<i·class="ri-link-m"·aria-hidden="true"></i>139 ····<i·class="ri-link-m"·aria-hidden="true"></i>
140 ··</a>140 ··</a>
141 ··<span·class="text">Notes</span>141 ··<span·class="text">Notes</span>
142 </h2>142 </h2>
143 <p><a·href=""·id="notes"></a></p><p>Functions·<a·href="#append/3"><code·class="inline">append/3</code></a>·and·<a·href="#append_list/3"><code·class="inline">append_list/3</code></a>·are143 <p><a·href=""·id="notes"></a></p><p>Functions·<a·href="#append/3"><code·class="inline">append/3</code></a>·and·<a·href="#append_list/3"><code·class="inline">append_list/3</code></a>·are
144 included·so·that·keyed·values·can·be·stored·in·a·list·<em>accumulator</em>,·for144 included·so·that·keyed·values·can·be·stored·in·a·list·<em>accumulator</em>,·for
145 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">D0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="1581062844-1">(</span><span·class="p"·data-group-id="1581062844-1">)</span><span·class="p">,</span><span·class="w">145 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">D0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="3945916746-1">(</span><span·class="p"·data-group-id="3945916746-1">)</span><span·class="p">,</span><span·class="w">
146 ··</span><span·class="n">D1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">store</span><span·class="p"·data-group-id="1581062844-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1581062844-3">[</span><span·class="p"·data-group-id="1581062844-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·63,·SHA:·d9bf966eb7e56cc99b61071505083c028141a1953f3fbf233914f219fe712b74·...·]-2">)</span><span·class="p">,</span><span·class="w">146 ··</span><span·class="n">D1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">store</span><span·class="p"·data-group-id="3945916746-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3945916746-3">[</span><span·class="p"·data-group-id="3945916746-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·63,·SHA:·9fd9d859870c53471350e8da64cd6a1b8bec38eb03e3625429d9d2854e7fc01b·...·]-2">)</span><span·class="p">,</span><span·class="w">
147 ··</span><span·class="n">D2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1581062844-4">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p"·data-group-id="1581062844-4">)</span><span·class="p">,</span><span·class="w">147 ··</span><span·class="n">D2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3945916746-4">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D1</span><span·class="p"·data-group-id="3945916746-4">)</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="n">D3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1581062844-5">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p"·data-group-id="1581062844-5">)</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="n">D3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3945916746-5">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D2</span><span·class="p"·data-group-id="3945916746-5">)</span><span·class="p">,</span><span·class="w">
149 ··</span><span·class="n">D4</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1581062844-6">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D3</span><span·class="p"·data-group-id="1581062844-6">)</span><span·class="p">,</span><span·class="w">149 ··</span><span·class="n">D4</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3945916746-6">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">f3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D3</span><span·class="p"·data-group-id="3945916746-6">)</span><span·class="p">,</span><span·class="w">
150 ··</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="1581062844-7">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D4</span><span·class="p"·data-group-id="1581062844-7">)</span><span·class="p">.</span><span·class="w">150 ··</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="3945916746-7">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="n">D4</span><span·class="p"·data-group-id="3945916746-7">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="p"·data-group-id="1581062844-8">[</span><span·class="ss">f1</span><span·class="p">,</span><span·class="ss">f2</span><span·class="p">,</span><span·class="ss">f3</span><span·class="p"·data-group-id="1581062844-8">]</span></code></pre><p>This·saves·the·trouble·of·first·fetching·a·keyed·value,·appending·a·new·value·to151 </span><span·class="p"·data-group-id="3945916746-8">[</span><span·class="ss">f1</span><span·class="p">,</span><span·class="ss">f2</span><span·class="p">,</span><span·class="ss">f3</span><span·class="p"·data-group-id="3945916746-8">]</span></code></pre><p>This·saves·the·trouble·of·first·fetching·a·keyed·value,·appending·a·new·value·to
152 the·list·of·stored·values,·and·storing·the·result.</p><p>Function·<a·href="#fetch/2"><code·class="inline">fetch/2</code></a>·is·to·be·used·if·the·key·is·known·to·be·in·the152 the·list·of·stored·values,·and·storing·the·result.</p><p>Function·<a·href="#fetch/2"><code·class="inline">fetch/2</code></a>·is·to·be·used·if·the·key·is·known·to·be·in·the
153 dictionary,·otherwise·function·<a·href="#find/2"><code·class="inline">find/2</code></a>.</p><h2·id="module-see-also"·class="section-heading">153 dictionary,·otherwise·function·<a·href="#find/2"><code·class="inline">find/2</code></a>.</p><h2·id="module-see-also"·class="section-heading">
154 ··<a·href="#module-see-also"·class="hover-link">154 ··<a·href="#module-see-also"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">See·Also</span>157 ··<span·class="text">See·Also</span>
158 </h2>158 </h2>
Offset 527, 24 lines modifiedOffset 527, 24 lines modified
527 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append(Key,·Value,·Orddict1)·->·Orddict2527 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append(Key,·Value,·Orddict1)·->·Orddict2
528 ················when·Orddict1·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value),·Orddict2·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>528 ················when·Orddict1·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value),·Orddict2·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>
  
529 ······</div>529 ······</div>
  
530 <p>Appends·a·new·<code·class="inline">Value</code>·to·the·current·list·of·values·associated·with·<code·class="inline">Key</code>.·An530 <p>Appends·a·new·<code·class="inline">Value</code>·to·the·current·list·of·values·associated·with·<code·class="inline">Key</code>.·An
531 exception·is·generated·if·the·initial·value·associated·with·<code·class="inline">Key</code>·is·not·a·list531 exception·is·generated·if·the·initial·value·associated·with·<code·class="inline">Key</code>·is·not·a·list
532 of·values.</p><p>See·also·section·<a·href="orddict.html#module-notes">Notes</a>.</p><p><em>Example·1:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="8991141821-1">(</span><span·class="p"·data-group-id="8991141821-2">[</span><span·class="p"·data-group-id="8991141821-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8991141821-4">[</span><s[·...·truncated·by·diffoscope;·len:·198,·SHA:·0d0af6802c5aa9867305ce2eac7382893af4d5a58a58cd196d33bc329a728794·...·]-1">)</span><span·class="p">.</span><span·class="w">532 of·values.</p><p>See·also·section·<a·href="orddict.html#module-notes">Notes</a>.</p><p><em>Example·1:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="3783562393-1">(</span><span·class="p"·data-group-id="3783562393-2">[</span><span·class="p"·data-group-id="3783562393-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3783562393-4">[</span><s[·...·truncated·by·diffoscope;·len:·198,·SHA:·3c7f61a8ef2e4e2edb73556487abc9e5b7d7480406490b71ad89279fd5215e53·...·]-1">)</span><span·class="p">.</span><span·class="w">
533 </span><span·class="p"·data-group-id="8991141821-5">[</span><span·class="p"·data-group-id="8991141821-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="8991141821-7">[</span><span·class="p"·data-group-id="8991141821-7">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·37b90aabf1abc420dc145e992506b5ad75054861b43490d78bfc2025345104a9·...·]-5">]</span><span·class="gp·unselectable">533 </span><span·class="p"·data-group-id="3783562393-5">[</span><span·class="p"·data-group-id="3783562393-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3783562393-7">[</span><span·class="p"·data-group-id="3783562393-7">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·fabb6407393a18dc5f13abb98ac99162360a7d4b0c9ac52087bfce6a01184b44·...·]-5">]</span><span·class="gp·unselectable">
534 2&gt;·</span><span·class="n">OrdDict2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="8991141821-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="8991141821-8">)</span><span·class="p">.</span><span·class="w">534 2&gt;·</span><span·class="n">OrdDict2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3783562393-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="3783562393-8">)</span><span·class="p">.</span><span·class="w">
535 </span><span·class="p"·data-group-id="8991141821-9">[</span><span·class="p"·data-group-id="8991141821-10">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="8991141821-11">[</span><span·class="mi">1</span><span·class="p"·data-group-id="8991141821-11">]</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·8877ca085059974981f4cb87eacec6a8514eda5cc86bb9af1c509a9a86137d91·...·]-9">]</span><span·class="gp·unselectable">535 </span><span·class="p"·data-group-id="3783562393-9">[</span><span·class="p"·data-group-id="3783562393-10">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3783562393-11">[</span><span·class="mi">1</span><span·class="p"·data-group-id="3783562393-11">]</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·4641d8a7e47931e5b7fa7cd1b920481530fd334f7185f2da344eeafce7fcddef·...·]-9">]</span><span·class="gp·unselectable">
536 3&gt;·</span><span·class="n">OrdDict3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="8991141821-12">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict2</span><span·class="p"·data-group-id="8991141821-12">)</span><span·class="p">.</span><span·class="w">536 3&gt;·</span><span·class="n">OrdDict3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3783562393-12">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict2</span><span·class="p"·data-group-id="3783562393-12">)</span><span·class="p">.</span><span·class="w">
537 </span><span·class="p"·data-group-id="8991141821-13">[</span><span·class="p"·data-group-id="8991141821-14">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="8991141821-15">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·8cd66898f9b79c20dd788f88d1c1266215acf40615280ead7fb30cd777073242·...·]-13">]</span><span·class="gp·unselectable">537 </span><span·class="p"·data-group-id="3783562393-13">[</span><span·class="p"·data-group-id="3783562393-14">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3783562393-15">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·123eb5ddb55c64cc9710408ea828d19ec6d6d2e760b237aeb334c00b48ccd7e3·...·]-13">]</span><span·class="gp·unselectable">
538 4&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="8991141821-16">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict3</span><span·class="p"·data-group-id="8991141821-16">)</span><span·class="p">.</span><span·class="w">538 4&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3783562393-16">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict3</span><span·class="p"·data-group-id="3783562393-16">)</span><span·class="p">.</span><span·class="w">
539 </span><span·class="p"·data-group-id="8991141821-17">[</span><span·class="p"·data-group-id="8991141821-18">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="8991141821-19">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8991141821-19">]</span><span·class="p"·data-group-id="8991141821-18">}</span><span·class="p">,</span><span·class="p"·data-group-id="8991141821-20">{</span><span·class="ss">y</span><span·class="p">,</span><span·class="p"·data-group-id="8991141821-21">[</span><span·class="mi">3</span><span·class="p"·data-group-id="8991141821-21">]</span><span·class="p"·data-group-id="8991141821-20">}</span><span·class="p"·data-group-id="8991141821-17">]</span></code></pre><p><em>Example·2:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="8299995159-1">(</span><span·class="p"·data-group-id="8299995159-2">[</span><span·class="p"·data-group-id="8299995159-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">no_list</span><span·class="p"·data-group-id="8299995159-3">}</span><span·class="p"·data-group-id="8299995159-2">]</span><span·class="p"·data-group-id="8299995159-1">)</span><span·class="p">.</span><span·class="w"> 
540 </span><span·class="p"·data-group-id="8299995159-4">[</span><span·class="p"·data-group-id="8299995159-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">no_list</span><span·class="p"·data-group-id="8299995159-5">}</span><span·class="p"·data-group-id="8299995159-4">]</[·...·truncated·by·diffoscope;·len:·33,·SHA:·b2e352d8309445f25b55be1913f1379d4d74b8b1a31e1190b1cf594ab0bdcba8·...·]">539 </span><span·class="p"·data-group-id="3783562393-17">[</span><span·class="p"·data-group-id="3783562393-18">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3783562393-19">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·1255,·SHA:·0ea10640d1aad21734635ab0b001e851f11755136ee44377fc2b902163354785·...·]">
 540 </span><span·class="p"·data-group-id="1971044205-4">[</span><span·class="p"·data-group-id="1971044205-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">no_list</span><span·class="p"·data-group-id="1971044205-5">}</span><span·class="p"·data-group-id="1971044205-4">]</span><span·class="gp·unselectable">
541 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="8299995159-6">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="8299995159-6">)</span><span·class="p">.</span><span·class="w">541 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1971044205-6">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="1971044205-6">)</span><span·class="p">.</span><span·class="w">
542 </span><span·class="gt">**·exception·error:·bad·argument542 </span><span·class="gt">**·exception·error:·bad·argument
543 ·····in·operator··++/2543 ·····in·operator··++/2
544 ········called·as·no_list·++·[1]</span></code></pre>544 ········called·as·no_list·++·[1]</span></code></pre>
545 ··</section>545 ··</section>
546 </section>546 </section>
547 <section·class="detail"·id="append_list/3">547 <section·class="detail"·id="append_list/3">
  
Offset 571, 20 lines modifiedOffset 571, 20 lines modified
571 ·························Orddict1·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value),571 ·························Orddict1·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value),
572 ·························Orddict2·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>572 ·························Orddict2·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>
  
573 ······</div>573 ······</div>
  
574 <p>Appends·a·list·of·values·<code·class="inline">ValList</code>·to·the·current·list·of·values·associated·with574 <p>Appends·a·list·of·values·<code·class="inline">ValList</code>·to·the·current·list·of·values·associated·with
575 <code·class="inline">Key</code>.·An·exception·is·generated·if·the·initial·value·associated·with·<code·class="inline">Key</code>·is575 <code·class="inline">Key</code>.·An·exception·is·generated·if·the·initial·value·associated·with·<code·class="inline">Key</code>·is
576 not·a·list·of·values.</p><p>See·also·section·<a·href="orddict.html#module-notes">Notes</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="1843489325-1">(</span><span·class="p"·data-group-id="1843489325-2">[</span><span·class="p"·data-group-id="1843489325-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1843489325-4">[</span><s[·...·truncated·by·diffoscope;·len:·197,·SHA:·c98d9da824e9a5063ffd69963aec3955fb9e96b46a9b554d047cb5c5997fca37·...·]5-1">)</span><span·class="p">.</span><span·class="w">576 not·a·list·of·values.</p><p>See·also·section·<a·href="orddict.html#module-notes">Notes</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="0128338605-1">(</span><span·class="p"·data-group-id="0128338605-2">[</span><span·class="p"·data-group-id="0128338605-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0128338605-4">[</span><s[·...·truncated·by·diffoscope;·len:·197,·SHA:·89e45a17380718f3af3db838a9408d54f2a42e664dd668e690c9d64c184f7b35·...·]5-1">)</span><span·class="p">.</span><span·class="w">
577 </span><span·class="p"·data-group-id="1843489325-5">[</span><span·class="p"·data-group-id="1843489325-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="1843489325-7">[</span><span·class="p"·data-group-id="1843489325-7">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·67,·SHA:·a38d45b81bce2ce88671b28f00a44bc7538b9d7b9826018a0620d328d9994e54·...·]5-5">]</span><span·class="gp·unselectable">577 </span><span·class="p"·data-group-id="0128338605-5">[</span><span·class="p"·data-group-id="0128338605-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="0128338605-7">[</span><span·class="p"·data-group-id="0128338605-7">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·67,·SHA:·e46ebe394742497fa15312f4c5282b4d51e76d1c104428565826f7331b342956·...·]5-5">]</span><span·class="gp·unselectable">
578 2&gt;·</span><span·class="n">OrdDict2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append_list</span><span·class="p"·data-group-id="1843489325-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1843489325-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="184[·...·truncated·by·diffoscope;·len:·138,·SHA:·ea560275600645a5d00848bfde2eabf2c6ac5392cb886925e300f2714b76fc71·...·]5-8">)</span><span·class="p">.</span><span·class="w">578 2&gt;·</span><span·class="n">OrdDict2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append_list</span><span·class="p"·data-group-id="0128338605-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0128338605-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="012[·...·truncated·by·diffoscope;·len:·138,·SHA:·c60b07959f8759720363c99018a0ed9080b69b71dd81b29f835ce5eb36c9f68e·...·]5-8">)</span><span·class="p">.</span><span·class="w">
579 </span><span·class="p"·data-group-id="1843489325-10">[</span><span·class="p"·data-group-id="1843489325-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="1843489325-12">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·146,·SHA:·0f824139044a2540df7881e9c5513ce34a79c7d522e8fc6ceefb6a311c1b1302·...·]5-10">]</span><span·class="gp·unselectable">579 </span><span·class="p"·data-group-id="0128338605-10">[</span><span·class="p"·data-group-id="0128338605-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="0128338605-12">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·146,·SHA:·cc4e7485970540470d13396f56c57a38f0baf73e0c7829908cdd79ec1a399054·...·]5-10">]</span><span·class="gp·unselectable">
580 3&gt;·</span><span·class="n">OrdDict3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append_list</span><span·class="p"·data-group-id="1843489325-13">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1843489325-14">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·141,·SHA:·96473699071d18a223a2b43eb62482822986142ca259bd8fc7d52d11e020fe3d·...·]5-13">)</span><span·class="p">.</span><span·class="w">580 3&gt;·</span><span·class="n">OrdDict3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">append_list</span><span·class="p"·data-group-id="0128338605-13">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0128338605-14">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·141,·SHA:·6272e627cb85c203e85d89b5729b8ecc6be451e14ee9531086bdeffcc5efcfea·...·]5-13">)</span><span·class="p">.</span><span·class="w">
581 </span><span·class="p"·data-group-id="1843489325-15">[</span><span·class="p"·data-group-id="1843489325-16">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="1843489325-17">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·509,·SHA:·c564edf58de45903f7ed61b4e1e42f0b13624f00fefc483128bb1a8913791964·...·]5-15">]</span></code></pre>581 </span><span·class="p"·data-group-id="0128338605-15">[</span><span·class="p"·data-group-id="0128338605-16">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="0128338605-17">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·509,·SHA:·9f054291b64a4c805cd4a40dc936f86ab1024cb0b1f45c1ad006978096321d73·...·]5-15">]</span></code></pre>
582 ··</section>582 ··</section>
583 </section>583 </section>
584 <section·class="detail"·id="erase/2">584 <section·class="detail"·id="erase/2">
  
585 ··<div·class="detail-header">585 ··<div·class="detail-header">
586 ····<a·href="#erase/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">586 ····<a·href="#erase/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
587 ······<i·class="ri-link-m"·aria-hidden="true"></i>587 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 603, 18 lines modifiedOffset 603, 18 lines modified
603 ······<div·class="specs">603 ······<div·class="specs">
  
604 ··········<pre·translate="no"><span·class="attribute">-spec</span>·erase(Key,·Orddict1)·->·Orddict2604 ··········<pre·translate="no"><span·class="attribute">-spec</span>·erase(Key,·Orddict1)·->·Orddict2
605 ···············when·Orddict1·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value),·Orddict2·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>605 ···············when·Orddict1·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value),·Orddict2·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>
  
606 ······</div>606 ······</div>
  
607 <p>Erases·all·items·with·a·specified·key·from·a·dictionary.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="4095192885-1">(</span><span·class="p"·data-group-id="4095192885-2">[</span><span·class="p"·data-group-id="4095192885-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·369,·SHA:·cc8e9fe2d3975751916fe0c0503f518d44fd8b1e2b16bf30ef8841ebf39b3d48·...·]-1">)</span><span·class="p">.</span><span·class="w">607 <p>Erases·all·items·with·a·specified·key·from·a·dictionary.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="0293988271-1">(</span><span·class="p"·data-group-id="0293988271-2">[</span><span·class="p"·data-group-id="0293988271-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·369,·SHA:·4afad70c735c16fabdf6baf0903de6854c1457877298a1d265c74a2533a9773b·...·]-1">)</span><span·class="p">.</span><span·class="w">
608 </span><span·class="p"·data-group-id="4095192885-5">[</span><span·class="p"·data-group-id="4095192885-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4095192885-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·f012ea204bed9597aa0274632f13a8cf8d7c47f28cee02994b08b21c0ae03cae·...·]-5">]</span><span·class="gp·unselectable">608 </span><span·class="p"·data-group-id="0293988271-5">[</span><span·class="p"·data-group-id="0293988271-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0293988271-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·4a64ca95d7a48491d102b7be4644215c409fca164877794f66c306b78a0c5ffa·...·]-5">]</span><span·class="gp·unselectable">
609 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">erase</span><span·class="p"·data-group-id="4095192885-8">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="4095192885-8">)</span><span·class="p">.</span><span·class="w">609 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">erase</span><span·class="p"·data-group-id="0293988271-8">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="0293988271-8">)</span><span·class="p">.</span><span·class="w">
610 </span><span·class="p"·data-group-id="4095192885-9">[</span><span·class="p"·data-group-id="4095192885-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4095192885-10">}</span><span·class="p"·data-group-id="4095192885-9">]</span></code></pre>610 </span><span·class="p"·data-group-id="0293988271-9">[</span><span·class="p"·data-group-id="0293988271-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0293988271-10">}</span><span·class="p"·data-group-id="0293988271-9">]</span></code></pre>
611 ··</section>611 ··</section>
612 </section>612 </section>
613 <section·class="detail"·id="fetch/2">613 <section·class="detail"·id="fetch/2">
  
614 ··<div·class="detail-header">614 ··<div·class="detail-header">
615 ····<a·href="#fetch/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">615 ····<a·href="#fetch/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
616 ······<i·class="ri-link-m"·aria-hidden="true"></i>616 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 634, 19 lines modifiedOffset 634, 19 lines modified
  
634 ··········<pre·translate="no"><span·class="attribute">-spec</span>·fetch(Key,·Orddict)·->·Value·when·Orddict·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>634 ··········<pre·translate="no"><span·class="attribute">-spec</span>·fetch(Key,·Orddict)·->·Value·when·Orddict·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value).</pre>
  
635 ······</div>635 ······</div>
  
636 <p>Returns·the·value·associated·with·<code·class="inline">Key</code>·in·dictionary·<code·class="inline">Orddict</code>.·This·function636 <p>Returns·the·value·associated·with·<code·class="inline">Key</code>·in·dictionary·<code·class="inline">Orddict</code>.·This·function
637 assumes·that·the·<code·class="inline">Key</code>·is·present·in·the·dictionary.·An·exception·is·generated637 assumes·that·the·<code·class="inline">Key</code>·is·present·in·the·dictionary.·An·exception·is·generated
638 if·<code·class="inline">Key</code>·is·not·in·the·dictionary.</p><p>See·also·section·<a·href="orddict.html#module-notes">Notes</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="5867093616-1">(</span><span·class="p"·data-group-id="5867093616-2">[</span><span·class="p"·data-group-id="5867093616-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·369,·SHA:·1fe84ad4a732c518a94e75a0b3734a631fede4954ada2b64cb2cd1a0020457c6·...·]-1">)</span><span·class="p">.</span><span·class="w">638 if·<code·class="inline">Key</code>·is·not·in·the·dictionary.</p><p>See·also·section·<a·href="orddict.html#module-notes">Notes</a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="6919717751-1">(</span><span·class="p"·data-group-id="6919717751-2">[</span><span·class="p"·data-group-id="6919717751-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·369,·SHA:·4bccc79dc0c74e0b40257dda59bbb35155e7b2b02402240457d13cec3b143fa3·...·]-1">)</span><span·class="p">.</span><span·class="w">
639 </span><span·class="p"·data-group-id="5867093616-5">[</span><span·class="p"·data-group-id="5867093616-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5867093616-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·0e23704fb93c4b923cc8f670bbdd4eecbe5a25de6b804413ff11fa01869bafc4·...·]-5">]</span><span·class="gp·unselectable">639 </span><span·class="p"·data-group-id="6919717751-5">[</span><span·class="p"·data-group-id="6919717751-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6919717751-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·1a8c54ec9db289c122e8117fd415a8710e72a538de6d674208f0f46bb2df1fe2·...·]-5">]</span><span·class="gp·unselectable">
640 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="5867093616-8">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="5867093616-8">)</span><span·class="p">.</span><span·class="w">640 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="6919717751-8">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="6919717751-8">)</span><span·class="p">.</span><span·class="w">
641 </span><span·class="mi">1</span><span·class="gp·unselectable">641 </span><span·class="mi">1</span><span·class="gp·unselectable">
642 3&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="5867093616-9">(</span><span·class="ss">missing</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="5867093616-9">)</span><span·class="p">.</span><span·class="w">642 3&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch</span><span·class="p"·data-group-id="6919717751-9">(</span><span·class="ss">missing</span><span·class="p">,</span><span·class="w">·</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="6919717751-9">)</span><span·class="p">.</span><span·class="w">
643 </span><span·class="gt">**·exception·error:·no·function·clause·matching·orddict:fetch(missing,[])</span></code></pre>643 </span><span·class="gt">**·exception·error:·no·function·clause·matching·orddict:fetch(missing,[])</span></code></pre>
644 ··</section>644 ··</section>
645 </section>645 </section>
646 <section·class="detail"·id="fetch_keys/1">646 <section·class="detail"·id="fetch_keys/1">
  
647 ··<div·class="detail-header">647 ··<div·class="detail-header">
648 ····<a·href="#fetch_keys/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">648 ····<a·href="#fetch_keys/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 665, 18 lines modifiedOffset 665, 18 lines modified
  
665 ······<div·class="specs">665 ······<div·class="specs">
  
666 ··········<pre·translate="no"><span·class="attribute">-spec</span>·fetch_keys(Orddict)·->·Keys·when·Orddict·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()),·Keys·::·[Key].</pre>666 ··········<pre·translate="no"><span·class="attribute">-spec</span>·fetch_keys(Orddict)·->·Keys·when·Orddict·::·<a·href="#t:orddict/2">orddict</a>(Key,·Value·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()),·Keys·::·[Key].</pre>
  
667 ······</div>667 ······</div>
  
668 <p>Returns·a·list·of·all·keys·in·a·dictionary.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="2923013714-1">(</span><span·class="p"·data-group-id="2923013714-2">[</span><span·class="p"·data-group-id="2923013714-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·369,·SHA:·a74a94183905d108925369c7aaacb04ebb624fb388d5edc6ad952c5b4d0077f8·...·]-1">)</span><span·class="p">.</span><span·class="w">668 <p>Returns·a·list·of·all·keys·in·a·dictionary.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">OrdDict1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="7885667675-1">(</span><span·class="p"·data-group-id="7885667675-2">[</span><span·class="p"·data-group-id="7885667675-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·369,·SHA:·e6493095775642b36cc78e5bde093b7adb876189e8983f08cdbbf221b5722b8b·...·]-1">)</span><span·class="p">.</span><span·class="w">
669 </span><span·class="p"·data-group-id="2923013714-5">[</span><span·class="p"·data-group-id="2923013714-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2923013714-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·4102d700c7018332d3459dbe6cb2ac13d0f173c7c95e7c80289daf26c1b19ba8·...·]-5">]</span><span·class="gp·unselectable">669 </span><span·class="p"·data-group-id="7885667675-5">[</span><span·class="p"·data-group-id="7885667675-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7885667675-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·2a8e4487a71fdc50d1b9d286329255a116ef720b89d798200cd162486be4f321·...·]-5">]</span><span·class="gp·unselectable">
670 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch_keys</span><span·class="p"·data-group-id="2923013714-8">(</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="2923013714-8">)</span><span·class="p">.</span><span·class="w">670 2&gt;·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">fetch_keys</span><span·class="p"·data-group-id="7885667675-8">(</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="7885667675-8">)</span><span·class="p">.</span><span·class="w">
671 </span><span·class="p"·data-group-id="2923013714-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="2923013714-9">]</span></code></pre>671 </span><span·class="p"·data-group-id="7885667675-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="7885667675-9">]</span></code></pre>
672 ··</section>672 ··</section>
673 </section>673 </section>
674 <section·class="detail"·id="filter/2">674 <section·class="detail"·id="filter/2">
  
675 ··<div·class="detail-header">675 ··<div·class="detail-header">
676 ····<a·href="#filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">676 ····<a·href="#filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
677 ······<i·class="ri-link-m"·aria-hidden="true"></i>677 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 699, 18 lines modifiedOffset 699, 18 lines modified
Max diff block lines reached; 81810/126290 bytes (64.78%) of diff not shown.
90.3 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/peer.html
    
Offset 157, 135 lines modifiedOffset 157, 135 lines modified
157 employs·a·number·of·techniques·to·speed·up·testing·and·reliably·shut·down·peer157 employs·a·number·of·techniques·to·speed·up·testing·and·reliably·shut·down·peer
158 nodes:</p><ul><li>peers·start·linked·to·test·runner·process.·If·the·test·case·fails,·the·peer158 nodes:</p><ul><li>peers·start·linked·to·test·runner·process.·If·the·test·case·fails,·the·peer
159 node·is·stopped·automatically,·leaving·no·rogue·nodes·running·in·the159 node·is·stopped·automatically,·leaving·no·rogue·nodes·running·in·the
160 background</li><li>arguments·used·to·start·the·peer·are·saved·in·the·control·process·state·for160 background</li><li>arguments·used·to·start·the·peer·are·saved·in·the·control·process·state·for
161 manual·analysis.·If·the·test·case·fails,·the·CRASH·REPORT·contains·these161 manual·analysis.·If·the·test·case·fails,·the·CRASH·REPORT·contains·these
162 arguments</li><li>multiple·test·cases·can·run·concurrently·speeding·up·overall·testing·process,162 arguments</li><li>multiple·test·cases·can·run·concurrently·speeding·up·overall·testing·process,
163 peer·node·names·are·unique·even·when·there·are·multiple·instances·of·the·same163 peer·node·names·are·unique·even·when·there·are·multiple·instances·of·the·same
164 test·suite·running·in·parallel</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="6053766775-1">(</span><span·class="ss">my_SUITE</span><span·class="p"·data-group-id="6053766775-1">)</span><span·class="p">.</span><span·class="w">164 test·suite·running·in·parallel</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2530037475-1">(</span><span·class="ss">my_SUITE</span><span·class="p"·data-group-id="2530037475-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="6053766775-2">(</span><span·class="ss">ct_suite</span><span·class="p"·data-group-id="6053766775-2">)</span><span·class="p">.</span><span·class="w">165 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="2530037475-2">(</span><span·class="ss">ct_suite</span><span·class="p"·data-group-id="2530037475-2">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6053766775-3">(</span><span·class="p"·data-group-id="6053766775-4">[</span><span·class="ss">all</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">groups</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·114,·SHA:·790ef03ad86d5dbd9f976e7cb2fbae38864ab456ff3b63e7c201747bd2bc9af9·...·]75-3">)</span><span·class="p">.</span><span·class="w">166 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2530037475-3">(</span><span·class="p"·data-group-id="2530037475-4">[</span><span·class="ss">all</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">groups</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·114,·SHA:·3ca66eacdbc14e4a4e13c9999796dbdec0e9b70d9c2c69af03196b6828cb9064·...·]75-3">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6053766775-5">(</span><span·class="p"·data-group-id="6053766775-6">[</span><span·class="ss">basic</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">args</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·504,·SHA:·bc030888ebb9e9d2b8d78477d2195d10d6fd095368b9c50d568f3825d5d616be·...·]75-5">)</span><span·class="p">.</span><span·class="w">167 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2530037475-5">(</span><span·class="p"·data-group-id="2530037475-6">[</span><span·class="ss">basic</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">args</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·504,·SHA:·c60aa0e486cf6ef299c31c5a78f1b1784c87192ea7f8b7ef833311b26be6fa43·...·]75-5">)</span><span·class="p">.</span><span·class="w">
168 </span><span·class="w">168 </span><span·class="w">
169 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6053766775-7">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="6053766775-7">)</span><span·class="p">.</span><span·class="w">169 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="2530037475-7">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="2530037475-7">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="nf">groups</span><span·class="p"·data-group-id="6053766775-8">(</span><span·class="p"·data-group-id="6053766775-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">170 </span><span·class="nf">groups</span><span·class="p"·data-group-id="2530037475-8">(</span><span·class="p"·data-group-id="2530037475-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
171 ····</span><span·class="p"·data-group-id="6053766775-9">[</span><span·class="p"·data-group-id="6053766775-10">{</span><span·class="ss">quick</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6053766775-11">[</span><span·class="ss">parallel</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·22,·SHA:·2a47ceba0f57be06a4a29d821ab8b301a6a5ae9b367c62546fcb37002935cefb·...·]75-11">]</span><span·class="p">,</span><span·class="w">171 ····</span><span·class="p"·data-group-id="2530037475-9">[</span><span·class="p"·data-group-id="2530037475-10">{</span><span·class="ss">quick</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2530037475-11">[</span><span·class="ss">parallel</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·22,·SHA:·260eb9d8274abef7dff0f9f371ceea2b09cacfce25d5566397addb97507b79a6·...·]75-11">]</span><span·class="p">,</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="6053766775-12">[</span><span·class="ss">basic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">args</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">named</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·262,·SHA:·b876fae50134017f21df2b8051cbb6944ce4bfee353b951e1ecdac42f906b80c·...·]75-9">]</span><span·class="p">.</span><span·class="w">172 ········</span><span·class="p"·data-group-id="2530037475-12">[</span><span·class="ss">basic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">args</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">named</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·262,·SHA:·0296a04dfe53a44e9070b5cd53de91285f959b48b820c524ae4f4e38d3bf256c·...·]75-9">]</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">all</span><span·class="p"·data-group-id="6053766775-13">(</span><span·class="p"·data-group-id="6053766775-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">173 </span><span·class="nf">all</span><span·class="p"·data-group-id="2530037475-13">(</span><span·class="p"·data-group-id="2530037475-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="6053766775-14">[</span><span·class="p"·data-group-id="6053766775-15">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">quick</span><span·class="p"·data-group-id="6053766775-15">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·20,·SHA:·76ac20743ee86417c9f47aa1785676a4a8b69ea150c5635faf103072e5d31078·...·]75-14">]</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="2530037475-14">[</span><span·class="p"·data-group-id="2530037475-15">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">quick</span><span·class="p"·data-group-id="2530037475-15">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·20,·SHA:·a2300718834fd0eb8201ce0b7b3a6dff0cfa504739830e2371efccc679ab5ecf·...·]75-14">]</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">basic</span><span·class="p"·data-group-id="6053766775-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6053766775-16">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="6053766775-17[·...·truncated·by·diffoscope;·len:·78,·SHA:·d83dd3d0471bef778d1d892b9ad41233d7cfcfc7dd366d8b35013e3fd393118a·...·]75-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 </span><span·class="nf">basic</span><span·class="p"·data-group-id="2530037475-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2530037475-16">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="2530037475-17[·...·truncated·by·diffoscope;·len:·78,·SHA:·6114724fd50acc2285cac7036a52fe12e43777e75d3a5c8cab8f3a5c08203bd2·...·]75-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="6053766775-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Node</span><span·class="p"·data-group-id="60[·...·truncated·by·diffoscope;·len:·240,·SHA:·87f57bf552af9c90143a7c4c654e67b6d430b10346f4c69fec23a1948193d940·...·]75-19">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="p"·data-group-id="2530037475-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Node</span><span·class="p"·data-group-id="25[·...·truncated·by·diffoscope;·len:·240,·SHA:·581eec55e22829fe95ceea5411eaff637d5e0355f5deb8befc13e58e0e444e0b·...·]75-19">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6053766775-20">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="6053766775-20">)</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2530037475-20">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2530037475-20">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">args</span><span·class="p"·data-group-id="6053766775-21">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6053766775-21">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="6053766775-22[·...·truncated·by·diffoscope;·len:·78,·SHA:·d83dd3d0471bef778d1d892b9ad41233d7cfcfc7dd366d8b35013e3fd393118a·...·]75-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 </span><span·class="nf">args</span><span·class="p"·data-group-id="2530037475-21">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2530037475-21">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="2530037475-22[·...·truncated·by·diffoscope;·len:·78,·SHA:·6114724fd50acc2285cac7036a52fe12e43777e75d3a5c8cab8f3a5c08203bd2·...·]75-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="c1">%%·specify·additional·arguments·to·the·new·node</span><span·class="w">179 ····</span><span·class="c1">%%·specify·additional·arguments·to·the·new·node</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="6053766775-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Node</span><span·class="p"·data-group-id="60[·...·truncated·by·diffoscope;·len:·480,·SHA:·6e41540ffb59f90727bbab75427b4a45006bca7aa3d0f7a2c5fab63cde2c30fd·...·]75-24">)</span><span·class="p">,</span><span·class="w">180 ····</span><span·class="p"·data-group-id="2530037475-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Node</span><span·class="p"·data-group-id="25[·...·truncated·by·diffoscope;·len:·480,·SHA:·84769caf7af6623ffe9065541da113fae381a25cc2f722c581ab38f1a1e71448·...·]75-24">)</span><span·class="p">,</span><span·class="w">
181 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6053766775-26">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="6053766775-26">)</span><span·class="p">.</span><span·class="w">181 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2530037475-26">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2530037475-26">)</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="nf">named</span><span·class="p"·data-group-id="6053766775-27">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6053766775-27">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="6053766775-28[·...·truncated·by·diffoscope;·len:·78,·SHA:·d83dd3d0471bef778d1d892b9ad41233d7cfcfc7dd366d8b35013e3fd393118a·...·]75-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 </span><span·class="nf">named</span><span·class="p"·data-group-id="2530037475-27">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2530037475-27">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="2530037475-28[·...·truncated·by·diffoscope;·len:·78,·SHA:·6114724fd50acc2285cac7036a52fe12e43777e75d3a5c8cab8f3a5c08203bd2·...·]75-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ····</span><span·class="c1">%%·pass·test·case·name·down·to·function·starting·nodes</span><span·class="w">183 ····</span><span·class="c1">%%·pass·test·case·name·down·to·function·starting·nodes</span><span·class="w">
184 ····</span><span·class="n">Peer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_node_impl</span><span·class="p"·data-group-id="6053766775-29">(</span><span·class="ss">named_test</span><span·class="p"·data-group-id="6053766775-29">)</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="n">Peer</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">start_node_impl</span><span·class="p"·data-group-id="2530037475-29">(</span><span·class="ss">named_test</span><span·class="p"·data-group-id="2530037475-29">)</span><span·class="p">,</span><span·class="w">
185 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6053766775-30">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="6053766775-30">)</span><span·class="p">.</span><span·class="w">185 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2530037475-30">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2530037475-30">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">start_node_impl</span><span·class="p"·data-group-id="6053766775-31">(</span><span·class="n">ActualTestCase</span><span·class="p"·data-group-id="6053766775-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">186 </span><span·class="nf">start_node_impl</span><span·class="p"·data-group-id="2530037475-31">(</span><span·class="n">ActualTestCase</span><span·class="p"·data-group-id="2530037475-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="p"·data-group-id="6053766775-32">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="6053766775-32">}</span><sp[·...·truncated·by·diffoscope;·len:·633,·SHA:·0c07b0a9947f52403411df1b3d8272a3c2aa05284460fb84bedd6c14d204138e·...·]75-33">)</span><span·class="p">,</span><span·class="w">187 ····</span><span·class="p"·data-group-id="2530037475-32">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="2530037475-32">}</span><sp[·...·truncated·by·diffoscope;·len:·633,·SHA:·fb41b58bac1bd02be0101d005271a8a62c388230607c79b01eef46b2427eb319·...·]75-33">)</span><span·class="p">,</span><span·class="w">
188 ····</span><span·class="c1">%%·extra·setup·needed·for·multiple·test·cases</span><span·class="w">188 ····</span><span·class="c1">%%·extra·setup·needed·for·multiple·test·cases</span><span·class="w">
189 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rpc</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="6053766775-36">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">set_env</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·333,·SHA:·4a0eef04ff8695be39db13136a1e6f1cefa4a1123f89df357c3f4947cd5f3256·...·]75-36">)</span><span·class="p">,</span><span·class="w">189 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rpc</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="2530037475-36">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">application</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">set_env</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·333,·SHA:·2628f1ad03d27f67f2e977c0100d258f4fde472347cf89c32f0b039dcd1a19dd·...·]75-36">)</span><span·class="p">,</span><span·class="w">
190 ····</span><span·class="n">Peer</span><span·class="p">.</span><span·class="w">190 ····</span><span·class="n">Peer</span><span·class="p">.</span><span·class="w">
  
191 </span><span·class="nf">restart_node</span><span·class="p"·data-group-id="6053766775-38">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6053766775-38">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="6053766775-39[·...·truncated·by·diffoscope;·len:·78,·SHA:·d83dd3d0471bef778d1d892b9ad41233d7cfcfc7dd366d8b35013e3fd393118a·...·]75-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 </span><span·class="nf">restart_node</span><span·class="p"·data-group-id="2530037475-38">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2530037475-38">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="2530037475-39[·...·truncated·by·diffoscope;·len:·78,·SHA:·6114724fd50acc2285cac7036a52fe12e43777e75d3a5c8cab8f3a5c08203bd2·...·]75-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">CT_PEER_NAME</span><span·class="p"·data-group-id="6053766775-40">(</span><span·class="p"·data-group-id="6053766775-40">)</span><span·class="p">,</span><span·class="w">192 ····</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">CT_PEER_NAME</span><span·class="p"·data-group-id="2530037475-40">(</span><span·class="p"·data-group-id="2530037475-40">)</span><span·class="p">,</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="6053766775-41">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="6053766775-41">}</span><sp[·...·truncated·by·diffoscope;·len:·456,·SHA:·49b1ec1c832340229dfa59784c51439f032cd0e4a8f7eb8a1e8e5c681685f518·...·]75-42">)</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="p"·data-group-id="2530037475-41">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="2530037475-41">}</span><sp[·...·truncated·by·diffoscope;·len:·456,·SHA:·35d0569c2e8933f8cc106632f266c17432f008935ac6c3448ecdb56c0484d108·...·]75-42">)</span><span·class="p">,</span><span·class="w">
194 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6053766775-44">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="6053766775-44">)</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2530037475-44">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2530037475-44">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="c1">%%·restart·the·node·with·the·same·name·as·before</span><span·class="w">195 ····</span><span·class="c1">%%·restart·the·node·with·the·same·name·as·before</span><span·class="w">
196 ····</span><span·class="p"·data-group-id="6053766775-45">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="6053766775-45">}</span><s[·...·truncated·by·diffoscope;·len:·756,·SHA:·0a9dc8b6eb12898320a204122fc797770a47a4571b29a0a0634471af0bfc5184·...·]75-46">)</span><span·class="p">,</span><span·class="w">196 ····</span><span·class="p"·data-group-id="2530037475-45">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="2530037475-45">}</span><s[·...·truncated·by·diffoscope;·len:·756,·SHA:·155f2a887a5e2d4879c188c75262c175f3e4ca0135f6c7f2b26ef86600a8892c·...·]75-46">)</span><span·class="p">,</span><span·class="w">
197 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6053766775-49">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="6053766775-49">)</span><span·class="p">.</span></code></pre><p>The·next·example·demonstrates·how·to·start·multiple·nodes·concurrently:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">multi_node</span><span·class="p"·data-group-id="2537252964-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2537252964-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="2537252964-2">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2537252964-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
198 ····</span><span·class="n">Peers</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2537252964-3">[</span><span·class="o">?</span><span·class="n">CT_PEER</span><span·class="p"·data-group-id="2537252964-4">(</span><span·clas[·...·truncated·by·diffoscope;·len:·567,·SHA:·8cb94f4a9f0d29bf1dc045b74d0e2384fc1b13014ba6e6837cdbbf6ec90485bc·...·]</span><span·class="w">197 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2530037475-49">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="2530037475-49">)</span><span·class="p">.</span></code></pre><p>The·next·examp[·...·truncated·by·diffoscope;·len:·564,·SHA:·c4d67fc9b9049f66edbc2a0902880b5708e3de9922f8774da8cf3c0c4113996c·...·]</span><span·class="w">
 198 ····</span><span·class="n">Peers</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9942301971-3">[</span><span·class="o">?</span><span·class="n">CT_PEER</span><span·class="p"·data-group-id="9942301971-4">(</span><span·class="p"·data-group-id="9942301971-5">#{</span><span·class="ss">wait_boot</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9942301971-6">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9942301971-7">(</span><span·class="p"·data-group-id="9942301971-7">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tag</span><span·class="p"·data-group-id="9942301971-6">}</span><span·class="p"·data-group-id="9942301971-5">}</span><span·class="p"·data-group-id="9942301971-4">)</span><span·class="w">
199 ········</span><span·class="p">||</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="2537252964-8">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="2537252964-8">)</span><span·class="p"·data-group-id="2537252964-3">]</span><span·class="p">,</span><span·class="w">199 ········</span><span·class="p">||</span><span·class="w">·</span><span·class="p">_</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="9942301971-8">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="9942301971-8">)</span><span·class="p"·data-group-id="9942301971-3">]</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="c1">%%·wait·for·all·nodes·to·complete·boot·process,·get·their·names:</span><span·class="w">200 ····</span><span·class="c1">%%·wait·for·all·nodes·to·complete·boot·process,·get·their·names:</span><span·class="w">
201 ····</span><span·class="p">_</span><span·class="n">Nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2537252964-9">[</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="2537252964-10">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2537252964-11">{</sp[·...·truncated·by·diffoscope;·len:·279,·SHA:·f789a4cd5cee4b7600cb330e61c764c00917526be399c21a53af581cba8986b0·...·]-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">·</span><span·class="k">end</span><span·class="w">201 ····</span><span·class="p">_</span><span·class="n">Nodes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9942301971-9">[</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="9942301971-10">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9942301971-11">{</sp[·...·truncated·by·diffoscope;·len:·279,·SHA:·98e10a79300227a33d7e8b1272ae3f365f7615347a32cb8b2dcd166633c96f09·...·]-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Node</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
202 ········</span><span·class="p">||</span><span·class="w">·</span><span·class="p"·data-group-id="2537252964-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p"·data-group-id="2537252964-12">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·67,·SHA:·8adc6c3992f5cc162c25b2be36dd38ad39c2bcf04e113ac1dd12b46f311c4462·...·]-9">]</span><span·class="p">,</span><span·class="w">202 ········</span><span·class="p">||</span><span·class="w">·</span><span·class="p"·data-group-id="9942301971-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p"·data-group-id="9942301971-12">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·67,·SHA:·3abef02795b1127dc5bfd339709de2e6447b6ad15e03504415e501684027e4a1·...·]-9">]</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="2537252964-13">[</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2537252964-14">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2537252964-14">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·409,·SHA:·49f5b35c889d61dba9f1aca6a12bad72c80b222d5691cbe4f871390c1cc9d5fc·...·]-13">]</span><span·class="p">.</span></code></pre><p>Start·a·peer·on·a·different·host.·Requires·<code·class="inline">ssh</code>·key-based·authentication·set203 ····</span><span·class="p"·data-group-id="9942301971-13">[</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="9942301971-14">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="9942301971-14">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·409,·SHA:·97f08f5a2ff8c1c0e1ffbcd4a10cf3260e5dd4ee393c79ade7512d3ee34c3aaf·...·]-13">]</span><span·class="p">.</span></code></pre><p>Start·a·peer·on·a·different·host.·Requires·<code·class="inline">ssh</code>·key-based·authentication·set
204 up,·allowing·&quot;another_host&quot;·connection·without·password·prompt.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Ssh</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">find_executable</span><span·class="p"·data-group-id="2720955116-1">(</span><span·class="s">&quot;ssh&quot;</span><span·class="p"·data-group-id="2720955116-1">)</span><span·class="p">,</span><span·class="w">204 up,·allowing·&quot;another_host&quot;·connection·without·password·prompt.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Ssh</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">find_executable</span><span·class="p"·data-group-id="3566539082-1">(</span><span·class="s">&quot;ssh&quot;</span><span·class="p"·data-group-id="3566539082-1">)</span><span·class="p">,</span><span·class="w">
205 </span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="2720955116-2">(</span><span·class="p"·data-group-id="2720955116-3">#{</span><span·class="ss">exec</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2720955116-4">{</span><span·class="n">Ssh</sp[·...·truncated·by·diffoscope;·len:·331,·SHA:·8977f6d33c37b1b5f3dbb3379075e943aee6143ac312b209db8ebd161bea2dea·...·]-4">}</span><span·class="p">,</span><span·class="w">205 </span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="3566539082-2">(</span><span·class="p"·data-group-id="3566539082-3">#{</span><span·class="ss">exec</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3566539082-4">{</span><span·class="n">Ssh</sp[·...·truncated·by·diffoscope;·len:·331,·SHA:·5b9a59624b28544c3661c812463776c54037f4dd02047dada97f0c34b1ec98eb·...·]-4">}</span><span·class="p">,</span><span·class="w">
206 ····</span><span·class="ss">connection</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">standard_io</span><span·class="p"·data-group-id="2720955116-3">}</span><span·class="p"·data-group-id="2720955116-2">)</span><span·class="p">,</span></code></pre><p>The·following·Common·Test·case·demonstrates·Docker·integration,·starting·two206 ····</span><span·class="ss">connection</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">standard_io</span><span·class="p"·data-group-id="3566539082-3">}</span><span·class="p"·data-group-id="3566539082-2">)</span><span·class="p">,</span></code></pre><p>The·following·Common·Test·case·demonstrates·Docker·integration,·starting·two
207 containers·with·hostnames·&quot;one&quot;·and·&quot;two&quot;.·In·this·example·Erlang·nodes·running207 containers·with·hostnames·&quot;one&quot;·and·&quot;two&quot;.·In·this·example·Erlang·nodes·running
208 inside·containers·form·an·Erlang·cluster.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">docker</span><span·class="p"·data-group-id="1003404078-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1003404078-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="1003404078-2">([·...·truncated·by·diffoscope;·len:·77,·SHA:·3cf154479af91e77f3184da2aec75985076beb06d6567492b18df2956c20a919·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 inside·containers·form·an·Erlang·cluster.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">docker</span><span·class="p"·data-group-id="2094637404-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2094637404-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_list</span><span·class="p"·data-group-id="2094637404-2">([·...·truncated·by·diffoscope;·len:·77,·SHA:·7edf1ff26f9b151290e5f2100d5fea6ac5713e2a8b4b92f81ccfc8db330a16c3·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ····</span><span·class="n">Docker</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">find_executable</span><span·class="p"·data-group-id="1003404078-3">(</span><span·class="s">&quot;docker&quot;</span><span·class="p"·data-group-id="1003404078-3">)</span><span·class="p">,</span><span·class="w">209 ····</span><span·class="n">Docker</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">os</span><span·class="p">:</span><span·class="nf">find_executable</span><span·class="p"·data-group-id="2094637404-3">(</span><span·class="s">&quot;docker&quot;</span><span·class="p"·data-group-id="2094637404-3">)</span><span·class="p">,</span><span·class="w">
210 ····</span><span·class="n">PrivDir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="1003404078-4">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="1003404078-4">)</span><span·class="p">,</span><span·class="w">210 ····</span><span·class="n">PrivDir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="2094637404-4">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="2094637404-4">)</span><span·class="p">,</span><span·class="w">
211 ····</span><span·class="nf">build_release</span><span·class="p"·data-group-id="1003404078-5">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="1003404078-5">)</span><span·class="p">,</span><span·class="w">211 ····</span><span·class="nf">build_release</span><span·class="p"·data-group-id="2094637404-5">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="2094637404-5">)</span><span·class="p">,</span><span·class="w">
212 ····</span><span·class="nf">build_image</span><span·class="p"·data-group-id="1003404078-6">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="1003404078-6">)</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="nf">build_image</span><span·class="p"·data-group-id="2094637404-6">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="2094637404-6">)</span><span·class="p">,</span><span·class="w">
  
213 ····</span><span·class="c1">%%·start·two·Docker·containers</span><span·class="w">213 ····</span><span·class="c1">%%·start·two·Docker·containers</span><span·class="w">
214 ····</span><span·class="p"·data-group-id="1003404078-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="1003404078-7">}</span><span[·...·truncated·by·diffoscope;·len:·247,·SHA:·2a8764cbfe974d6d636b47f46e8c00d2c1ff53368df104a998ab7bf09abb3e88·...·]-9">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">lambda</span><span·class="p">,</span><span·class="w">214 ····</span><span·class="p"·data-group-id="2094637404-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node</span><span·class="p"·data-group-id="2094637404-7">}</span><span[·...·truncated·by·diffoscope;·len:·247,·SHA:·1b2e4b30be2988d1dfc198233aa8e1c15f7dfc76fcbd3fc5fa6e8a7e570a8b4f·...·]-9">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">lambda</span><span·class="p">,</span><span·class="w">
215 ········</span><span·class="ss">connection</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">standard_io</span><span·class="p">,</span><span·class="w">215 ········</span><span·class="ss">connection</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">standard_io</span><span·class="p">,</span><span·class="w">
216 ········</span><span·class="ss">exec</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-10">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-11">[</span><span·class="s">&quot;run&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">[·...·truncated·by·diffoscope;·len:·483,·SHA:·60f667f873e63781b414f9b4735b38274ac1023cd53553b72a889466d3039309·...·]-8">)</span><span·class="p">,</span><span·class="w">216 ········</span><span·class="ss">exec</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-10">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-11">[</span><span·class="s">&quot;run&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">[·...·truncated·by·diffoscope;·len:·483,·SHA:·6cde596661d97ed7b9a5dfb735db5483ddf06d09139271975e493c52c5fcf39b·...·]-8">)</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="p"·data-group-id="1003404078-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node2</span><span·class="p"·data-group-id="1003404078-12">}</span><[·...·truncated·by·diffoscope;·len:·252,·SHA:·107336efeb782a730c72e2ec1355630765834c8292fd90533861e3515a81a6b1·...·]-14">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">lambda</span><span·class="p">,</span><span·class="w">217 ····</span><span·class="p"·data-group-id="2094637404-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Peer2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Node2</span><span·class="p"·data-group-id="2094637404-12">}</span><[·...·truncated·by·diffoscope;·len:·252,·SHA:·6210346b89d2ba61663419bcf117ee6edb76f0443a326059c54cbaea2beee6ac·...·]-14">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">lambda</span><span·class="p">,</span><span·class="w">
218 ········</span><span·class="ss">connection</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">standard_io</span><span·class="p">,</span><span·class="w">218 ········</span><span·class="ss">connection</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">standard_io</span><span·class="p">,</span><span·class="w">
219 ········</span><span·class="ss">exec</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-15">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-16">[</span><span·class="s">&quot;run&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">[·...·truncated·by·diffoscope;·len:·484,·SHA:·2ea1c757052d80b580d8ebc3d486a5dff473a4355e371c6d5f65492e94d123e9·...·]-13">)</span><span·class="p">,</span><span·class="w">219 ········</span><span·class="ss">exec</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-15">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-16">[</span><span·class="s">&quot;run&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">[·...·truncated·by·diffoscope;·len:·484,·SHA:·5e8b48348253a3cf80157cb1fc7dc4f435b60490cbedd072becb468461dea343·...·]-13">)</span><span·class="p">,</span><span·class="w">
  
220 ····</span><span·class="c1">%%·find·IP·address·of·the·second·node·using·alternative·connection·RPC</span><span·class="w">220 ····</span><span·class="c1">%%·find·IP·address·of·the·second·node·using·alternative·connection·RPC</span><span·class="w">
221 ····</span><span·class="p"·data-group-id="1003404078-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ips</span><span·class="p"·data-group-id="1003404078-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·510,·SHA:·b93b88d9e7a6875444c309c9b159b250bf91243ae8a07649a890351d9eac847a·...·]-18">)</span><span·class="p">,</span><span·class="w">221 ····</span><span·class="p"·data-group-id="2094637404-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ips</span><span·class="p"·data-group-id="2094637404-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·510,·SHA:·1859c90ebaa2d9db923e8c46b95fa1b9ed2b9e6a8e18a4bd2ff5f472ffefa8dd·...·]-18">)</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="1003404078-20">{</span><span·class="s">&quot;eth0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Eth0</span><span·class="p"·data-group-id="1003404078-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·372,·SHA:·6bb845bd3acf8802b6f440d52c2218d8f1d2e06cd829d90220728fb5742f36e3·...·]-21">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="p"·data-group-id="2094637404-20">{</span><span·class="s">&quot;eth0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Eth0</span><span·class="p"·data-group-id="2094637404-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·372,·SHA:·4e3671dc84325d54407a8bf711914dd05844094330402935bbf3498c4d656810·...·]-21">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="1003404078-22">{</span><span·class="ss">addr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ip</span><span·class="p"·data-group-id="1003404078-22">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·349,·SHA:·03a3301d89712dab15a8f46d0eec4b7d937ea542997e3cca0e61545291f21810·...·]-23">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="2094637404-22">{</span><span·class="ss">addr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ip</span><span·class="p"·data-group-id="2094637404-22">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·349,·SHA:·c7f7c42241e34721a07f2186b18e029bd2147000e2dce9b9b3f5d7637dab2fba·...·]-23">)</span><span·class="p">,</span><span·class="w">
  
224 ····</span><span·class="c1">%%·make·first·node·to·discover·second·one</span><span·class="w">224 ····</span><span·class="c1">%%·make·first·node·to·discover·second·one</span><span·class="w">
225 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="1003404078-24">(</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inet_db</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">set_lookup</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·288,·SHA:·0f0c3c8ae2b5b04b1538bbbe9b1e97ae1132e6d7bc92d060a964b6c870d0d6b6·...·]-24">)</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="2094637404-24">(</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inet_db</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">set_lookup</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·288,·SHA:·fd76a1889469b5c34fe0309a28d615d3cc97c194691914499840c74db9b8f525·...·]-24">)</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="1003404078-27">(</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inet_db</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">add_host</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·369,·SHA:·e9fe1132c825505a404787c4786247b26b3c2c0bf65a0a2faa98c8b7265542a6·...·]-27">)</span><span·class="p">,</span><span·class="w">226 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="2094637404-27">(</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inet_db</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">add_host</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·369,·SHA:·92dae144dcb692ad0b7a70a49ac37b595a94c9604d4bc6473ebcd71c138674d7·...·]-27">)</span><span·class="p">,</span><span·class="w">
  
227 ····</span><span·class="c1">%%·join·a·cluster</span><span·class="w">227 ····</span><span·class="c1">%%·join·a·cluster</span><span·class="w">
228 ····</span><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="1003404078-30">(</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">net_kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">connect_node</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·185,·SHA:·360ba5951742085f21e7f14f56867c330746c8b917144c652917ec2660b2ec57·...·]-30">)</span><span·class="p">,</span><span·class="w">228 ····</span><span·class="ss">true</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="2094637404-30">(</span><span·class="n">Peer</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">net_kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">connect_node</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·185,·SHA:·26660a3a2c67e19b56580ab8f8e724c40658e0cb3174771bef18b3b0bc27012c·...·]-30">)</span><span·class="p">,</span><span·class="w">
229 ····</span><span·class="c1">%%·verify·that·second·peer·node·has·only·the·first·node·visible</span><span·class="w">229 ····</span><span·class="c1">%%·verify·that·second·peer·node·has·only·the·first·node·visible</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="1003404078-32">[</span><span·class="n">Node</span><span·class="p"·data-group-id="1003404078-32">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span>[·...·truncated·by·diffoscope;·len:·434,·SHA:·1cf20367658ad6217712edaf33b29c46468329d8bf6979ae8aee369601c7685c·...·]-33">)</span><span·class="p">,</span><span·class="w">230 ····</span><span·class="p"·data-group-id="2094637404-32">[</span><span·class="n">Node</span><span·class="p"·data-group-id="2094637404-32">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">call</span>[·...·truncated·by·diffoscope;·len:·434,·SHA:·efb51e8ac786ed227906ee4b581f714fe16df06f6451e012804fed96160739ae·...·]-33">)</span><span·class="p">,</span><span·class="w">
  
231 ····</span><span·class="c1">%%·stop·peers,·causing·containers·to·also·stop</span><span·class="w">231 ····</span><span·class="c1">%%·stop·peers,·causing·containers·to·also·stop</span><span·class="w">
232 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="1003404078-35">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="1003404078-35">)</span><span·class="p">,</span><span·class="w">232 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2094637404-35">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="2094637404-35">)</span><span·class="p">,</span><span·class="w">
233 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="1003404078-36">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="1003404078-36">)</span><span·class="p">.</span><span·class="w">233 ····</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2094637404-36">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2094637404-36">)</span><span·class="p">.</span><span·class="w">
  
234 </span><span·class="nf">build_release</span><span·class="p"·data-group-id="1003404078-37">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="1003404078-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 </span><span·class="nf">build_release</span><span·class="p"·data-group-id="2094637404-37">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="2094637404-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
235 ····</span><span·class="c1">%%·load·sasl.app·file,·otherwise·application:get_key·will·fail</span><span·class="w">235 ····</span><span·class="c1">%%·load·sasl.app·file,·otherwise·application:get_key·will·fail</span><span·class="w">
236 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">load</span><span·class="p"·data-group-id="1003404078-38">(</span><span·class="ss">sasl</span><span·class="p"·data-group-id="1003404078-38">)</span><span·class="p">,</span><span·class="w">236 ····</span><span·class="nc">application</span><span·class="p">:</span><span·class="nf">load</span><span·class="p"·data-group-id="2094637404-38">(</span><span·class="ss">sasl</span><span·class="p"·data-group-id="2094637404-38">)</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="c1">%%·create·*.rel·-·release·file</span><span·class="w">237 ····</span><span·class="c1">%%·create·*.rel·-·release·file</span><span·class="w">
238 ····</span><span·class="n">RelFile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="1003404078-39">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;lambda.rel&quot;</span><span·class="p"·data-group-id="1003404078-39">)</span><span·class="p">,</span><span·class="w">238 ····</span><span·class="n">RelFile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="2094637404-39">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;lambda.rel&quot;</span><span·class="p"·data-group-id="2094637404-39">)</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="n">Release</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-40">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-41">{</span><span·class="s">&quot;lambda&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·70,·SHA:·d7cc3642ec6bf337dc4a20493f34e814f03f85c7dd06b308535e4e5c25b9a72a·...·]-41">}</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="n">Release</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-40">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-41">{</span><span·class="s">&quot;lambda&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·70,·SHA:·3a4ce96955c2b92afed2be29f5801b9c47d99d1db594e0820487d3adb0b3813c·...·]-41">}</span><span·class="p">,</span><span·class="w">
240 ········</span><span·class="p"·data-group-id="1003404078-42">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="1003404078-43">(</span><span·class="s[·...·truncated·by·diffoscope;·len:·112,·SHA:·3fa64c7d46b23d6352354626fde38ea04135a4837e9f3b030dd7a95b58dc7aaf·...·]-42">}</span><span·class="p">,</span><span·class="w">240 ········</span><span·class="p"·data-group-id="2094637404-42">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="2094637404-43">(</span><span·class="s[·...·truncated·by·diffoscope;·len:·112,·SHA:·fe606d45bb46a1c2803812b9a7d570bd368b3383eaba6001bf1899f6202e5c7e·...·]-42">}</span><span·class="p">,</span><span·class="w">
241 ········</span><span·class="p"·data-group-id="1003404078-44">[</span><span·class="p"·data-group-id="1003404078-45">{</span><span·class="n">App</span><span·class="p">,</span><span·class="w">·</span><span·class="k">begin</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-46">{</span[·...·truncated·by·diffoscope;·len:·691,·SHA:·d82b39b6e2ff84a23fea2632905b773686c6dedf5f1a78896eb04589ed646991·...·]-45">}</span><span·class="w">241 ········</span><span·class="p"·data-group-id="2094637404-44">[</span><span·class="p"·data-group-id="2094637404-45">{</span><span·class="n">App</span><span·class="p">,</span><span·class="w">·</span><span·class="k">begin</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-46">{</span[·...·truncated·by·diffoscope;·len:·691,·SHA:·18e62cd3af7bbef5df6885a59da9092e06c82425789d0c811a76938ab63ce0d1·...·]-45">}</span><span·class="w">
242 ············</span><span·class="p">||</span><span·class="w">·</span><span·class="n">App</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-48">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sasl</span><span·class="p"·data-group-id="1003404078-48">]</[·...·truncated·by·diffoscope;·len:·100,·SHA:·412d813db18cf463351386e6dbb23235dab89aeddfe6845b21f330d9a3805d38·...·]-40">}</span><span·class="p">,</span><span·class="w">242 ············</span><span·class="p">||</span><span·class="w">·</span><span·class="n">App</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-48">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stdlib</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">sasl</span><span·class="p"·data-group-id="2094637404-48">]</[·...·truncated·by·diffoscope;·len:·100,·SHA:·4089ef6a6f558d754ebf0cb45751675796ef49365e49d38809416ccb56152b54·...·]-40">}</span><span·class="p">,</span><span·class="w">
243 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write_file</span><span·class="p"·data-group-id="1003404078-49">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="1003404078-50">(</span><span·class="nc">lists</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·62,·SHA:·79b8d7ea124d7aa45eb16cc5a87528bafa96453696fb9e151e74c947f6b5ebff·...·]-51">(</span><span·class="w">243 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write_file</span><span·class="p"·data-group-id="2094637404-49">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="2094637404-50">(</span><span·class="nc">lists</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·62,·SHA:·6af2ee7dd6696f07b3f1344b2df9306389493d48e6b864f436437ef5e898efe7·...·]-51">(</span><span·class="w">
244 ········</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1003404078-52">(</span><span·class="s">&quot;~tp.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-53">[</span><span·class="n">Release</span><span·class="p"·data-group-id="1003404078-53">]</span><span·cl[·...·truncated·by·diffoscope;·len:·195,·SHA:·cbe9a9eaa5a039df466c480ffe9eb63bbd77719bd1312c70a62377f46f99800c·...·]-49">)</span><span·class="p">,</span><span·class="w">244 ········</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2094637404-52">(</span><span·class="s">&quot;~tp.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-53">[</span><span·class="n">Release</span><span·class="p"·data-group-id="2094637404-53">]</span><span·cl[·...·truncated·by·diffoscope;·len:·195,·SHA:·71887aae9322603c8e58fe09c5227a64dfad1fe1327dfc7417d755fc64a3c612·...·]-49">)</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="n">RelFileNoExt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="1003404078-54">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;lambda&quot;</span><span·class="p"·data-group-id="1003404078-54">)</span><span·class="p">,</span><span·class="w">245 ····</span><span·class="n">RelFileNoExt</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="2094637404-54">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;lambda&quot;</span><span·class="p"·data-group-id="2094637404-54">)</span><span·class="p">,</span><span·class="w">
  
246 ····</span><span·class="c1">%%·create·boot·script</span><span·class="w">246 ····</span><span·class="c1">%%·create·boot·script</span><span·class="w">
247 ····</span><span·class="p"·data-group-id="1003404078-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">systools_make</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-56">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·292,·SHA:·81fc57f190f2e586bcdfbbce6e49c772732429c65c1cdd09d3afa9f828e3e752·...·]-57">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="p"·data-group-id="2094637404-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">systools_make</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-56">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·292,·SHA:·ce271076a9cdf4a0e7b62c92e5a9b3f4c8a45a8b437a1b64503ba45c21daafdf·...·]-57">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">
248 ········</span><span·class="p"·data-group-id="1003404078-58">[</span><span·class="ss">silent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-59">{</span><span·class="ss">outdir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dir</sp[·...·truncated·by·diffoscope;·len:·152,·SHA:·363c51143516c509b57e2eb761e3a4d3a1b762c47a55229444f7bce01fc4c774·...·]-57">)</span><span·class="p">,</span><span·class="w">248 ········</span><span·class="p"·data-group-id="2094637404-58">[</span><span·class="ss">silent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-59">{</span><span·class="ss">outdir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dir</sp[·...·truncated·by·diffoscope;·len:·152,·SHA:·3500c381fadfdda7fff8207319574f25f86419cb1cd62b971cecb7850b671fd6·...·]-57">)</span><span·class="p">,</span><span·class="w">
249 ····</span><span·class="c1">%%·package·release·into·*.tar.gz</span><span·class="w">249 ····</span><span·class="c1">%%·package·release·into·*.tar.gz</span><span·class="w">
250 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">systools</span><span·class="p">:</span><span·class="nf">make_tar</span><span·class="p"·data-group-id="1003404078-60">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1003404078-61">[</span><span·class="p"·data-group-id="1003404078-62">{</span><span·class="ss">erts</span><span·class="p[·...·truncated·by·diffoscope;·len:·375,·SHA:·6b1b7464805dd6a2653d7e4c93a39ee31a4081f14dfc78a596c820db7146e411·...·]-60">)</span><span·class="p">.</span><span·class="w">250 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">systools</span><span·class="p">:</span><span·class="nf">make_tar</span><span·class="p"·data-group-id="2094637404-60">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2094637404-61">[</span><span·class="p"·data-group-id="2094637404-62">{</span><span·class="ss">erts</span><span·class="p[·...·truncated·by·diffoscope;·len:·375,·SHA:·df547eda6ed26c9b85b514e31f9aee3bf61dd25289ecf317cfa96c4b9f2bf1a9·...·]-60">)</span><span·class="p">.</span><span·class="w">
  
251 </span><span·class="nf">build_image</span><span·class="p"·data-group-id="1003404078-64">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="1003404078-64">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">251 </span><span·class="nf">build_image</span><span·class="p"·data-group-id="2094637404-64">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="2094637404-64">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
252 ····</span><span·class="c1">%%·Create·Dockerfile·example,·working·only·for·Ubuntu·20.04</span><span·class="w">252 ····</span><span·class="c1">%%·Create·Dockerfile·example,·working·only·for·Ubuntu·20.04</span><span·class="w">
253 ····</span><span·class="c1">%%·Expose·port·4445,·and·make·Erlang·distribution·to·listen</span><span·class="w">253 ····</span><span·class="c1">%%·Expose·port·4445,·and·make·Erlang·distribution·to·listen</span><span·class="w">
254 ····</span><span·class="c1">%%··on·this·port,·and·connect·to·it·without·EPMD</span><span·class="w">254 ····</span><span·class="c1">%%··on·this·port,·and·connect·to·it·without·EPMD</span><span·class="w">
255 ····</span><span·class="c1">%%·Set·cookie·on·both·nodes·to·be·the·same.</span><span·class="w">255 ····</span><span·class="c1">%%·Set·cookie·on·both·nodes·to·be·the·same.</span><span·class="w">
256 ····</span><span·class="n">BuildScript</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="1003404078-65">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Dockerfile&quot;</span><span·class="p"·data-group-id="1003404078-65">)</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="n">BuildScript</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="2094637404-65">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Dockerfile&quot;</span><span·class="p"·data-group-id="2094637404-65">)</span><span·class="p">,</span><span·class="w">
257 ····</span><span·class="n">Dockerfile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">257 ····</span><span·class="n">Dockerfile</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
258 ······</span><span·class="s">&quot;FROM·ubuntu:20.04·as·runner\n&quot;</span><span·class="w">258 ······</span><span·class="s">&quot;FROM·ubuntu:20.04·as·runner\n&quot;</span><span·class="w">
259 ······</span><span·class="s">&quot;EXPOSE·4445\n&quot;</span><span·class="w">259 ······</span><span·class="s">&quot;EXPOSE·4445\n&quot;</span><span·class="w">
260 ······</span><span·class="s">&quot;WORKDIR·/opt/lambda\n&quot;</span><span·class="w">260 ······</span><span·class="s">&quot;WORKDIR·/opt/lambda\n&quot;</span><span·class="w">
261 ······</span><span·class="s">&quot;COPY·lambda.tar.gz·/tmp\n&quot;</span><span·class="w">261 ······</span><span·class="s">&quot;COPY·lambda.tar.gz·/tmp\n&quot;</span><span·class="w">
262 ······</span><span·class="s">&quot;RUN·tar·-zxvf·/tmp/lambda.tar.gz·-C·/opt/lambda\n&quot;</span><span·class="w">262 ······</span><span·class="s">&quot;RUN·tar·-zxvf·/tmp/lambda.tar.gz·-C·/opt/lambda\n&quot;</span><span·class="w">
263 ······</span><span·class="s">&quot;ENTRYPOINT·[\&quot;/opt/lambda/erts-&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="1003404078-66">(</span><span·class="ss">version</span><span·class="p"·data-group-id="1003404078-66">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">263 ······</span><span·class="s">&quot;ENTRYPOINT·[\&quot;/opt/lambda/erts-&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="2094637404-66">(</span><span·class="ss">version</span><span·class="p"·data-group-id="2094637404-66">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">
264 ······</span><span·class="s">&quot;/bin/dyn_erl\&quot;,·\&quot;-boot\&quot;,·\&quot;/opt/lambda/releases/1.0.0/start\&quot;,&quot;</span><span·class="w">264 ······</span><span·class="s">&quot;/bin/dyn_erl\&quot;,·\&quot;-boot\&quot;,·\&quot;/opt/lambda/releases/1.0.0/start\&quot;,&quot;</span><span·class="w">
265 ······</span><span·class="s">&quot;·\&quot;-kernel\&quot;,·\&quot;inet_dist_listen_min\&quot;,·\&quot;4445\&quot;,&quot;</span><span·class="w">265 ······</span><span·class="s">&quot;·\&quot;-kernel\&quot;,·\&quot;inet_dist_listen_min\&quot;,·\&quot;4445\&quot;,&quot;</span><span·class="w">
266 ······</span><span·class="s">&quot;·\&quot;-erl_epmd_port\&quot;,·\&quot;4445\&quot;,&quot;</span><span·class="w">266 ······</span><span·class="s">&quot;·\&quot;-erl_epmd_port\&quot;,·\&quot;4445\&quot;,&quot;</span><span·class="w">
267 ······</span><span·class="s">&quot;·\&quot;-setcookie\&quot;,·\&quot;secret\&quot;]\n&quot;</span><span·class="p">,</span><span·class="w">267 ······</span><span·class="s">&quot;·\&quot;-setcookie\&quot;,·\&quot;secret\&quot;]\n&quot;</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 7885/92291 bytes (8.54%) of diff not shown.
19.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/proc_lib.html
    
Offset 969, 29 lines modifiedOffset 969, 29 lines modified
969 the·start·function·used.</p><p>If·neither·this·function·nor·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·is·called·by·the969 the·start·function·used.</p><p>If·neither·this·function·nor·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·is·called·by·the
970 started·process,·the·start·function·returns·an·error·tuple·when·the·started970 started·process,·the·start·function·returns·an·error·tuple·when·the·started
971 process·exits,·or·when·the·start·function·time-out·(if·used)·has·passed,·see971 process·exits,·or·when·the·start·function·time-out·(if·used)·has·passed,·see
972 <a·href="#start/5"><code·class="inline">start/3,4,5</code></a>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·use·this·function·to·return·an·error·indicating·that·the·process·start972 <a·href="#start/5"><code·class="inline">start/3,4,5</code></a>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·use·this·function·to·return·an·error·indicating·that·the·process·start
973 failed.·When·doing·so·the·start·function·can·return·before·the·failing·process973 failed.·When·doing·so·the·start·function·can·return·before·the·failing·process
974 has·exited,·which·may·block·VM·resources·required·for·a·new·start·attempt·to974 has·exited,·which·may·block·VM·resources·required·for·a·new·start·attempt·to
975 succeed.·Use·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·for·that·purpose.</p></section><p>The·following·example·illustrates·how·this·function·and·<a·href="#start_link/3"><code·class="inline">proc_lib:start_link/3</code></a>975 succeed.·Use·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·for·that·purpose.</p></section><p>The·following·example·illustrates·how·this·function·and·<a·href="#start_link/3"><code·class="inline">proc_lib:start_link/3</code></a>
976 are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5135813673-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="5135813673-1">)</span><span·class="p">.</span><span·class="w">976 are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4182067028-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="4182067028-1">)</span><span·class="p">.</span><span·class="w">
977 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5135813673-2">(</span><span·class="p"·data-group-id="5135813673-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5135813673-3">]</span><span·class="p"·data-group-id="5135813673-2">)</span><span·class="p">.</span><span·class="w">977 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4182067028-2">(</span><span·class="p"·data-group-id="4182067028-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4182067028-3">]</span><span·class="p"·data-group-id="4182067028-2">)</span><span·class="p">.</span><span·class="w">
978 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="5135813673-4">(</span><span·class="p"·data-group-id="5135813673-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5135813673-5">]</span><span·class="p"·data-group-id="5135813673-4">)</span><span·class="p">.</span><span·class="w">978 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4182067028-4">(</span><span·class="p"·data-group-id="4182067028-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4182067028-5">]</span><span·class="p"·data-group-id="4182067028-4">)</span><span·class="p">.</span><span·class="w">
  
979 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="5135813673-6">(</span><span·class="p"·data-group-id="5135813673-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">979 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="4182067028-6">(</span><span·class="p"·data-group-id="4182067028-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
980 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="5135813673-7">(</span><span·class="ss">my_proc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5135813673-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·799692e224d5a8381e08bd8df135c2def5fad8be3a57381173a56d48676b06f9·...·]-7">)</span><span·class="p">.</span><span·class="w">980 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4182067028-7">(</span><span·class="ss">my_proc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4182067028-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·f0cca815fbb1a5c2f738d87a720a3d297a414b65c64e41ee0879cbe0b32f1979·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
981 </span><span·class="nf">init</span><span·class="p"·data-group-id="5135813673-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="5135813673-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">981 </span><span·class="nf">init</span><span·class="p"·data-group-id="4182067028-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="4182067028-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
982 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">do_initialization</span><span·class="p"·data-group-id="5135813673-11">(</span><span·class="p"·data-group-id="5135813673-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">982 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">do_initialization</span><span·class="p"·data-group-id="4182067028-11">(</span><span·class="p"·data-group-id="4182067028-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
983 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">983 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
984 ············</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_ack</span><span·class="p"·data-group-id="5135813673-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5135813673-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·b9ceebbcf482e5b41693d1619982c1e04b218f1e281885691bc1bd533d872097·...·]-12">)</span><span·class="p">;</span><span·class="w">984 ············</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_ack</span><span·class="p"·data-group-id="4182067028-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4182067028-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·dfe7ce865ba95845bbde3cd5c450eeeabcdd326bb1f1f1513a54f604a88e028f·...·]-12">)</span><span·class="p">;</span><span·class="w">
985 ········</span><span·class="p"·data-group-id="5135813673-15">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="5135813673-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">985 ········</span><span·class="p"·data-group-id="4182067028-15">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="4182067028-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
986 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="5135813673-16">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="5135813673-16">)</span><span·class="w">986 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="4182067028-16">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="4182067028-16">)</span><span·class="w">
987 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">987 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
988 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5135813673-17">(</span><span·class="p"·data-group-id="5135813673-17">)</span><span·class="p">.</span><span·class="w">988 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4182067028-17">(</span><span·class="p"·data-group-id="4182067028-17">)</span><span·class="p">.</span><span·class="w">
  
989 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>989 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>
990 ··</section>990 ··</section>
991 </section>991 </section>
992 <section·class="detail"·id="init_fail/2">992 <section·class="detail"·id="init_fail/2">
  
993 ··<div·class="detail-header">993 ··<div·class="detail-header">
Offset 1052, 29 lines modifiedOffset 1052, 29 lines modified
1052 to·<code·class="inline">Exception</code>.·The·start·function·then·returns·<code·class="inline">Ret</code>.</p><p>See·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#raise/3"><code·class="inline">erlang:raise/3</code></a>·for·a·description·of·<code·class="inline">Class</code>,·<code·class="inline">Reason</code>·and·<code·class="inline">Stacktrace</code>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·consider·catching·the·exception·from·this·function.·That·would·defeat1052 to·<code·class="inline">Exception</code>.·The·start·function·then·returns·<code·class="inline">Ret</code>.</p><p>See·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#raise/3"><code·class="inline">erlang:raise/3</code></a>·for·a·description·of·<code·class="inline">Class</code>,·<code·class="inline">Reason</code>·and·<code·class="inline">Stacktrace</code>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·consider·catching·the·exception·from·this·function.·That·would·defeat
1053 its·purpose.·A·process·started·by·a·<a·href="#start/3"><code·class="inline">start[_link|_monitor]/3,4,5</code></a>1053 its·purpose.·A·process·started·by·a·<a·href="#start/3"><code·class="inline">start[_link|_monitor]/3,4,5</code></a>
1054 function·should·end·in·a·value·(that·will·be·ignored)·or·an·exception·that1054 function·should·end·in·a·value·(that·will·be·ignored)·or·an·exception·that
1055 will·be·handled·by·this·module.·See·<a·href="proc_lib.html">Description</a>.</p></section><p>If·neither·this·function·nor·<a·href="#init_ack/1"><code·class="inline">init_ack/1,2</code></a>·is·called·by·the1055 will·be·handled·by·this·module.·See·<a·href="proc_lib.html">Description</a>.</p></section><p>If·neither·this·function·nor·<a·href="#init_ack/1"><code·class="inline">init_ack/1,2</code></a>·is·called·by·the
1056 started·process,·the·start·function·returns·an·error·tuple·when·the·started1056 started·process,·the·start·function·returns·an·error·tuple·when·the·started
1057 process·exits,·or·when·the·start·function·time-out·(if·used)·has·passed,·see1057 process·exits,·or·when·the·start·function·time-out·(if·used)·has·passed,·see
1058 <a·href="#start/3"><code·class="inline">start/3,4,5</code></a>.</p><p>The·following·example·illustrates·how·this·function·and·<a·href="#start_link/3"><code·class="inline">proc_lib:start_link/3</code></a>1058 <a·href="#start/3"><code·class="inline">start/3,4,5</code></a>.</p><p>The·following·example·illustrates·how·this·function·and·<a·href="#start_link/3"><code·class="inline">proc_lib:start_link/3</code></a>
1059 can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3136349008-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="3136349008-1">)</span><span·class="p">.</span><span·class="w">1059 can·be·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4861123123-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="4861123123-1">)</span><span·class="p">.</span><span·class="w">
1060 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3136349008-2">(</span><span·class="p"·data-group-id="3136349008-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3136349008-3">]</span><span·class="p"·data-group-id="3136349008-2">)</span><span·class="p">.</span><span·class="w"> 
1061 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3136349008-4">(</span><span·class="p"·data-group-id="3136349008-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3136349008-5">]</span><span·class="p"·data-group-id="3136349008-4">)</span><span·class="p">.</span><span·class="w">1060 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4861123123-2">(</span><span·class="p"·data-group-id="4861123123-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4861123123-3">]</span><span·class="p"·data-group-id="4861123123-2">)</span><span·class="p">.</span><span·class="w">
 1061 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4861123123-4">(</span><span·class="p"·data-group-id="4861123123-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4861123123-5">]</span><span·class="p"·data-group-id="4861123123-4">)</span><span·class="p">.</span><span·class="w">
  
1062 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="3136349008-6">(</span><span·class="p"·data-group-id="3136349008-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1062 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="4861123123-6">(</span><span·class="p"·data-group-id="4861123123-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1063 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="3136349008-7">(</span><span·class="ss">my_proc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3136349008-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·f85673881d4df74298c4fe6a027b5f413bbaea028c62312ba51af3be73d8ee02·...·]-7">)</span><span·class="p">.</span><span·class="w">1063 ····</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="4861123123-7">(</span><span·class="ss">my_proc</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4861123123-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·49098af7969cdde3f62dac2cb4e3be6f37de17305627fe24b283874a94efef7e·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
1064 </span><span·class="nf">init</span><span·class="p"·data-group-id="3136349008-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="3136349008-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1064 </span><span·class="nf">init</span><span·class="p"·data-group-id="4861123123-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="4861123123-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1065 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">do_initialization</span><span·class="p"·data-group-id="3136349008-11">(</span><span·class="p"·data-group-id="3136349008-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">1065 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">do_initialization</span><span·class="p"·data-group-id="4861123123-11">(</span><span·class="p"·data-group-id="4861123123-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1066 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1066 ········</span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1067 ············</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_ack</span><span·class="p"·data-group-id="3136349008-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3136349008-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·7c38eed6e2ca46ce575fb83294e7a2d2ce241418361a7c7d4364d8738eb08751·...·]-12">)</span><span·class="p">;</span><span·class="w">1067 ············</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_ack</span><span·class="p"·data-group-id="4861123123-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4861123123-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·994d88a7fb41e18c934ba576409e8ea83508a68d5b47be7dd9a2c76fd6e54c11·...·]-12">)</span><span·class="p">;</span><span·class="w">
1068 ········</span><span·class="p"·data-group-id="3136349008-15">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="3136349008-15">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1068 ········</span><span·class="p"·data-group-id="4861123123-15">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reason</span><span·class="p"·data-group-id="4861123123-15">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Error</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1069 ············</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_fail</span><span·class="p"·data-group-id="3136349008-16">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3136349008-17">{</span><span·class="nb">exit</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·db3446a68d8826a83c25ceca6768c3167a90bc7aab81fa39aa179076bbb670dc·...·]-16">)</span><span·class="w">1069 ············</span><span·class="nc">proc_lib</span><span·class="p">:</span><span·class="nf">init_fail</span><span·class="p"·data-group-id="4861123123-16">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Error</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4861123123-17">{</span><span·class="nb">exit</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·b306f45e43697984d7cfa9599de60c116b4aaf83e80b55542ddfa38db94f7671·...·]-16">)</span><span·class="w">
1070 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">1070 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
1071 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3136349008-18">(</span><span·class="p"·data-group-id="3136349008-18">)</span><span·class="p">.</span><span·class="w">1071 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4861123123-18">(</span><span·class="p"·data-group-id="4861123123-18">)</span><span·class="p">.</span><span·class="w">
  
1072 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>1072 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre>
1073 ··</section>1073 ··</section>
1074 </section>1074 </section>
1075 <section·class="detail"·id="initial_call/1">1075 <section·class="detail"·id="initial_call/1">
  
1076 ··<div·class="detail-header">1076 ··<div·class="detail-header">
30.5 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/proplists.html
    
Offset 522, 15 lines modifiedOffset 522, 15 lines modified
  
522 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append_values(Key,·ListIn)·->·ListOut·when·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·ListIn·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],·ListOut·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>522 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append_values(Key,·ListIn)·->·ListOut·when·Key·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>(),·ListIn·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],·ListOut·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>
  
523 ······</div>523 ······</div>
  
524 <p>Similar·to·<a·href="#get_all_values/2"><code·class="inline">get_all_values/2</code></a>,·but·each·value·is·wrapped·in·a·list·unless·it·is524 <p>Similar·to·<a·href="#get_all_values/2"><code·class="inline">get_all_values/2</code></a>,·but·each·value·is·wrapped·in·a·list·unless·it·is
525 already·itself·a·list.·The·resulting·list·of·lists·is·concatenated.·This·is525 already·itself·a·list.·The·resulting·list·of·lists·is·concatenated.·This·is
526 often·useful·for·&quot;incremental&quot;·options.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append_values</span><span·class="p"·data-group-id="3118735558-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3118735558-2">[</span><span·class="p"·data-group-id="3118735558-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1837,·SHA:·c8e8614a481712818cf3b0af210c04216dc97e5202f9ddc7837e045aa9f8f09f·...·]-1">]</span></code></pre>526 often·useful·for·&quot;incremental&quot;·options.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append_values</span><span·class="p"·data-group-id="4199766952-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4199766952-2">[</span><span·class="p"·data-group-id="4199766952-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1837,·SHA:·e200813ca60eb1f4f98ec519527d0a325662e39db19fa2a8dced0cb1599d1016·...·]-1">]</span></code></pre>
527 ··</section>527 ··</section>
528 </section>528 </section>
529 <section·class="detail"·id="compact/1">529 <section·class="detail"·id="compact/1">
  
530 ··<div·class="detail-header">530 ··<div·class="detail-header">
531 ····<a·href="#compact/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">531 ····<a·href="#compact/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
532 ······<i·class="ri-link-m"·aria-hidden="true"></i>532 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 610, 18 lines modifiedOffset 610, 18 lines modified
610 ······</div>610 ······</div>
  
611 <p>Expands·particular·properties·to·corresponding·sets·of·properties·(or·other611 <p>Expands·particular·properties·to·corresponding·sets·of·properties·(or·other
612 terms).</p><p>For·each·pair·<code·class="inline">{Property,·Expansion}</code>·in·<code·class="inline">Expansions</code>:·if·<code·class="inline">E</code>·is·the612 terms).</p><p>For·each·pair·<code·class="inline">{Property,·Expansion}</code>·in·<code·class="inline">Expansions</code>:·if·<code·class="inline">E</code>·is·the
613 first·entry·in·<code·class="inline">ListIn</code>·with·the·same·key·as·<code·class="inline">Property</code>,·and·<code·class="inline">E</code>·and·<code·class="inline">Property</code>613 first·entry·in·<code·class="inline">ListIn</code>·with·the·same·key·as·<code·class="inline">Property</code>,·and·<code·class="inline">E</code>·and·<code·class="inline">Property</code>
614 have·equivalent·normal·forms,·then·<code·class="inline">E</code>·is·replaced·with·the·terms·in614 have·equivalent·normal·forms,·then·<code·class="inline">E</code>·is·replaced·with·the·terms·in
615 <code·class="inline">Expansion</code>,·and·any·following·entries·with·the·same·key·are·deleted·from615 <code·class="inline">Expansion</code>,·and·any·following·entries·with·the·same·key·are·deleted·from
616 <code·class="inline">ListIn</code>.</p><p>For·example,·the·following·expressions·all·return·<code·class="inline">[fie,·bar,·baz,·fum]</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expand</span><span·class="p"·data-group-id="6628638369-1">(</span><span·class="p"·data-group-id="6628638369-2">[</span><span·class="p"·data-group-id="6628638369-3">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6628638369-4">[</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">baz</span><span·class="p"·data-group-id="6628638369-4">]</span><span·class="p"·data-group-id="6628638369-3">}</span><span·class="p"·data-group-id="6628638369-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6628638369-5">[</span><span·class="ss">fie</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">fum</span><span·class="p"·data-group-id="6628638369-5">]</span><span·class="p"·data-group-id="6628638369-1">)</span><span·class="w"> 
617 </span><span·class="nf">expand</span><span·class="p"·data-group-id="6628638369-6">(</span><span·class="p"·data-group-id="6628638369-7">[</span><span·class="p"·data-group-id="6628638369-8">{</span><span·class="p"·data-group-id="6628638369-9">{</span><span·cl[·...·truncated·by·diffoscope;·len:·888,·SHA:·ca1eeb1b2ab473e08407dc9f3f3a3e6368a5e672b74aba3ecb72efaaa00d32e6·...·]">)</span><span·class="w">616 <code·class="inline">ListIn</code>.</p><p>For·example,·the·following·expressions·all·return·<code·class="inline">[fie,·bar,·baz,·fum]</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expand</span><span·class="p"·data-group-id="499[·...·truncated·by·diffoscope;·len:·888,·SHA:·9583e516fcd6f51286ce0616f188ae8362847545ff9ba5269866aa40ecb5b566·...·]">)</span><span·class="w">
 617 </span><span·class="nf">expand</span><span·class="p"·data-group-id="4996956293-6">(</span><span·class="p"·data-group-id="4996956293-7">[</span><span·class="p"·data-group-id="4996956293-8">{</span><span·class="p"·data-group-id="4996956293-9">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="4996956293-9">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4996956293-10">[</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">baz</span><span·class="p"·data-group-id="4996956293-10">]</span><span·class="p"·data-group-id="4996956293-8">}</span><span·class="p"·data-group-id="4996956293-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4996956293-11">[</span><span·class="ss">fie</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">fum</span><span·class="p"·data-group-id="4996956293-11">]</span><span·class="p"·data-group-id="4996956293-6">)</span><span·class="w">
618 </span><span·class="nf">expand</span><span·class="p"·data-group-id="6628638369-12">(</span><span·class="p"·data-group-id="6628638369-13">[</span><span·class="p"·data-group-id="6628638369-14">{</span><span·class="p"·data-group-id="6628638369-15">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·1012,·SHA:·c0390c721e0ff80bb5f3f8c06f28692809df5e206265b9d81a47633ea7e94b8d·...·]-12">)</span></code></pre><p>However,·no·expansion·is·done·in·the·following·call·because·<code·class="inline">{foo,·false}</code>618 </span><span·class="nf">expand</span><span·class="p"·data-group-id="4996956293-12">(</span><span·class="p"·data-group-id="4996956293-13">[</span><span·class="p"·data-group-id="4996956293-14">{</span><span·class="p"·data-group-id="4996956293-15">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·1012,·SHA:·f9d6d2b97b95f3a604c0965bf12014224209e8f8d6707dd1a8dee1b63b14f132·...·]-12">)</span></code></pre><p>However,·no·expansion·is·done·in·the·following·call·because·<code·class="inline">{foo,·false}</code>
619 shadows·<code·class="inline">foo</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expand</span><span·class="p"·data-group-id="1259517943-1">(</span><span·class="p"·data-group-id="1259517943-2">[</span><span·class="p"·data-group-id="1259517943-3">{</span><span·class="p"·data-group-id="1259517943-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·1073,·SHA:·11a4f9c6386d2fe80396f4638c793fe26d470425e16fc5f28fee20d6cfc90137·...·]-1">)</span></code></pre><p>Notice·that·if·the·original·property·term·is·to·be·preserved·in·the·result·when619 shadows·<code·class="inline">foo</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expand</span><span·class="p"·data-group-id="6308292046-1">(</span><span·class="p"·data-group-id="6308292046-2">[</span><span·class="p"·data-group-id="6308292046-3">{</span><span·class="p"·data-group-id="6308292046-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·1073,·SHA:·6dec37480b4c30fed3f97ba1049e23d9b752ebd6c00311ee6a502ffd38da312b·...·]-1">)</span></code></pre><p>Notice·that·if·the·original·property·term·is·to·be·preserved·in·the·result·when
620 expanded,·it·must·be·included·in·the·expansion·list.·The·inserted·terms·are·not620 expanded,·it·must·be·included·in·the·expansion·list.·The·inserted·terms·are·not
621 expanded·recursively.·If·<code·class="inline">Expansions</code>·contains·more·than·one·property·with·the621 expanded·recursively.·If·<code·class="inline">Expansions</code>·contains·more·than·one·property·with·the
622 same·key,·only·the·first·occurrence·is·used.</p><p>See·also·<a·href="#normalize/2"><code·class="inline">normalize/2</code></a>.</p>622 same·key,·only·the·first·occurrence·is·used.</p><p>See·also·<a·href="#normalize/2"><code·class="inline">normalize/2</code></a>.</p>
623 ··</section>623 ··</section>
624 </section>624 </section>
625 <section·class="detail"·id="from_map/1">625 <section·class="detail"·id="from_map/1">
  
Offset 992, 15 lines modifiedOffset 992, 15 lines modified
992 ···············when·List·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],·Keys·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],·Lists·::·[[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()]],·Rest·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>992 ···············when·List·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],·Keys·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()],·Lists·::·[[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()]],·Rest·::·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>()].</pre>
  
993 ······</div>993 ······</div>
  
994 <p>Partitions·<code·class="inline">List</code>·into·a·list·of·sublists·and·a·remainder.</p><p><code·class="inline">Lists</code>·contains·one·sublist·for·each·key·in·<code·class="inline">Keys</code>,·in·the·corresponding·order.994 <p>Partitions·<code·class="inline">List</code>·into·a·list·of·sublists·and·a·remainder.</p><p><code·class="inline">Lists</code>·contains·one·sublist·for·each·key·in·<code·class="inline">Keys</code>,·in·the·corresponding·order.
995 The·relative·order·of·the·elements·in·each·sublist·is·preserved·from·the·original·<code·class="inline">List</code>.995 The·relative·order·of·the·elements·in·each·sublist·is·preserved·from·the·original·<code·class="inline">List</code>.
996 <code·class="inline">Rest</code>·contains·the·elements·in·<code·class="inline">List</code>·that·are·not·associated·with·any·of·the996 <code·class="inline">Rest</code>·contains·the·elements·in·<code·class="inline">List</code>·that·are·not·associated·with·any·of·the
997 specified·keys,·also·with·their·original·relative·order·preserved.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">split</span><span·class="p"·data-group-id="6302184132-1">(</span><span·class="p"·data-group-id="6302184132-2">[</span><span·class="p"·data-group-id="6302184132-3">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·3432,·SHA:·213ff7d7a0621449afbfcd85027072e0715f96a54fe0b237c7b9d0ce67d8542f·...·]-1">}</span></code></pre>997 specified·keys,·also·with·their·original·relative·order·preserved.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">split</span><span·class="p"·data-group-id="3831661158-1">(</span><span·class="p"·data-group-id="3831661158-2">[</span><span·class="p"·data-group-id="3831661158-3">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·3432,·SHA:·ddaede54bc35d3e3467fdbe4e4c4d286a7350fcb4066b384ed79c1e439621286·...·]-1">}</span></code></pre>
998 ··</section>998 ··</section>
999 </section>999 </section>
1000 <section·class="detail"·id="substitute_aliases/2">1000 <section·class="detail"·id="substitute_aliases/2">
  
1001 ··<div·class="detail-header">1001 ··<div·class="detail-header">
1002 ····<a·href="#substitute_aliases/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1002 ····<a·href="#substitute_aliases/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1003 ······<i·class="ri-link-m"·aria-hidden="true"></i>1003 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1109, 15 lines modifiedOffset 1109, 15 lines modified
1109 ······</div>1109 ······</div>
  
1110 <p>Converts·the·property·list·<code·class="inline">List</code>·to·a·map.</p><p>Shorthand·atom·values·in·<code·class="inline">List</code>·will·be·expanded·to·an·association·of·the·form1110 <p>Converts·the·property·list·<code·class="inline">List</code>·to·a·map.</p><p>Shorthand·atom·values·in·<code·class="inline">List</code>·will·be·expanded·to·an·association·of·the·form
1111 <code·class="inline">Atom·=&gt;·true</code>.·Tuples·of·the·form·<code·class="inline">{Key,·Value}</code>·in·<code·class="inline">List</code>·will·be·converted·to1111 <code·class="inline">Atom·=&gt;·true</code>.·Tuples·of·the·form·<code·class="inline">{Key,·Value}</code>·in·<code·class="inline">List</code>·will·be·converted·to
1112 an·association·of·the·form·<code·class="inline">Key·=&gt;·Value</code>.·Anything·else·will·be·silently1112 an·association·of·the·form·<code·class="inline">Key·=&gt;·Value</code>.·Anything·else·will·be·silently
1113 ignored.</p><p>If·the·same·key·appears·in·<code·class="inline">List</code>·multiple·times,·the·value·of·the·one·appearing1113 ignored.</p><p>If·the·same·key·appears·in·<code·class="inline">List</code>·multiple·times,·the·value·of·the·one·appearing
1114 nearest·to·the·head·of·<code·class="inline">List</code>·will·be·in·the·result·map,·that·is·the·value·that1114 nearest·to·the·head·of·<code·class="inline">List</code>·will·be·in·the·result·map,·that·is·the·value·that
1115 would·be·returned·by·a·call·to·<a·href="#get_value/2"><code·class="inline">get_value(Key,·List)</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">to_map</span><span·class="p"·data-group-id="3182241757-1">(</span><span·class="p"·data-group-id="3182241757-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3182241757-3">{</span><span·class="ss">b</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1354,·SHA:·7dea4ee34be5dabfa07adcaae332cd1f998038a9ef56031ff501d403a754b1d5·...·]-1">}</span></code></pre>1115 would·be·returned·by·a·call·to·<a·href="#get_value/2"><code·class="inline">get_value(Key,·List)</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">to_map</span><span·class="p"·data-group-id="5907095893-1">(</span><span·class="p"·data-group-id="5907095893-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5907095893-3">{</span><span·class="ss">b</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1354,·SHA:·950a37cc9376f1cc0689d778e2acfa0faa3e41ea97260a787eb8adb0efbfffe8·...·]-1">}</span></code></pre>
1116 ··</section>1116 ··</section>
1117 </section>1117 </section>
1118 <section·class="detail"·id="to_map/2">1118 <section·class="detail"·id="to_map/2">
  
1119 ··<div·class="detail-header">1119 ··<div·class="detail-header">
1120 ····<a·href="#to_map/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1120 ····<a·href="#to_map/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1121 ······<i·class="ri-link-m"·aria-hidden="true"></i>1121 ······<i·class="ri-link-m"·aria-hidden="true"></i>
216 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/qlc.html
    
Offset 281, 58 lines modifiedOffset 281, 58 lines modified
281 traverses·objects·from·many·tables·or·lists·after·each·other.·If,·for·example,281 traverses·objects·from·many·tables·or·lists·after·each·other.·If,·for·example,
282 you·want·to·traverse·all·answers·to·a·query·<code·class="inline">QH</code>·and·then·finish·off·by·a·term282 you·want·to·traverse·all·answers·to·a·query·<code·class="inline">QH</code>·and·then·finish·off·by·a·term
283 <code·class="inline">{finished}</code>,·you·can·do·that·by·calling·<code·class="inline">qlc:append(QH,·[{finished}])</code>.283 <code·class="inline">{finished}</code>,·you·can·do·that·by·calling·<code·class="inline">qlc:append(QH,·[{finished}])</code>.
284 <a·href="#append/2"><code·class="inline">append/2</code></a>·first·returns·all·objects·of·<code·class="inline">QH</code>,·then·<code·class="inline">{finished}</code>.284 <a·href="#append/2"><code·class="inline">append/2</code></a>·first·returns·all·objects·of·<code·class="inline">QH</code>,·then·<code·class="inline">{finished}</code>.
285 If·a·tuple·<code·class="inline">{finished}</code>·exists·among·the·answers·to·<code·class="inline">QH</code>,·it·is·returned·twice285 If·a·tuple·<code·class="inline">{finished}</code>·exists·among·the·answers·to·<code·class="inline">QH</code>,·it·is·returned·twice
286 from·<a·href="#append/2"><code·class="inline">append/2</code></a>.</p><p>As·another·example,·consider·concatenating·the·answers·to·two·queries·<code·class="inline">QH1</code>·and286 from·<a·href="#append/2"><code·class="inline">append/2</code></a>.</p><p>As·another·example,·consider·concatenating·the·answers·to·two·queries·<code·class="inline">QH1</code>·and
287 <code·class="inline">QH2</code>·while·removing·all·duplicates.·This·is·accomplished·by·using·option287 <code·class="inline">QH2</code>·while·removing·all·duplicates.·This·is·accomplished·by·using·option
288 <code·class="inline">unique</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="5921112837-1">(</span><span·class="p"·data-group-id="5921112837-2">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·cl[·...·truncated·by·diffoscope;·len:·657,·SHA:·47cb7771edb151c837c6f82c064f189ea61af1ae8009f0131589965c119a7510·...·]-1">)</span></code></pre><p>The·cost·is·substantial:·every·returned·answer·is·stored·in·an·ETS·table.·Before288 <code·class="inline">unique</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="6298117699-1">(</span><span·class="p"·data-group-id="6298117699-2">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·cl[·...·truncated·by·diffoscope;·len:·657,·SHA:·0029152a91270bd9fc011a9ead984d245cde6224133002c9cdebb02442e43c0b·...·]-1">)</span></code></pre><p>The·cost·is·substantial:·every·returned·answer·is·stored·in·an·ETS·table.·Before
289 returning·an·answer,·it·is·looked·up·in·the·ETS·table·to·check·if·it·has·already289 returning·an·answer,·it·is·looked·up·in·the·ETS·table·to·check·if·it·has·already
290 been·returned.·Without·the·<code·class="inline">unique</code>·option,·all·answers·to·<code·class="inline">QH1</code>·would·be290 been·returned.·Without·the·<code·class="inline">unique</code>·option,·all·answers·to·<code·class="inline">QH1</code>·would·be
291 returned·followed·by·all·answers·to·<code·class="inline">QH2</code>.·The·<code·class="inline">unique</code>·option·keeps·the·order291 returned·followed·by·all·answers·to·<code·class="inline">QH2</code>.·The·<code·class="inline">unique</code>·option·keeps·the·order
292 between·the·remaining·answers.</p><p>If·the·order·of·the·answers·is·not·important,·there·is·an·alternative·to·the292 between·the·remaining·answers.</p><p>If·the·order·of·the·answers·is·not·important,·there·is·an·alternative·to·the
293 <code·class="inline">unique</code>·option,·namely·to·sort·the·answers·uniquely:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="2214207875-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="2214207875-2">(</span><span·class="p"·data-group-id="2214207875-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·839,·SHA:·c0818a1c5bdc93bdeb0103628f135a7b141d1a87555aff6cbd15a6946764cb1c·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·query·also·removes·duplicates·but·the·answers·are·sorted.·If·there·are·many293 <code·class="inline">unique</code>·option,·namely·to·sort·the·answers·uniquely:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="5213174674-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="5213174674-2">(</span><span·class="p"·data-group-id="5213174674-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·839,·SHA:·6dcc4d194d5690f633b9e6956e41c4f3e1603e02a28b34ce29c072beb1355ac5·...·]-1">)</span><span·class="p">.</span></code></pre><p>This·query·also·removes·duplicates·but·the·answers·are·sorted.·If·there·are·many
294 answers,·temporary·files·are·used.·Notice·that·to·get·the·first·unique·answer,294 answers,·temporary·files·are·used.·Notice·that·to·get·the·first·unique·answer,
295 all·answers·must·be·found·and·sorted.·Both·alternatives·find·duplicates·by295 all·answers·must·be·found·and·sorted.·Both·alternatives·find·duplicates·by
296 comparing·answers,·that·is,·if·<code·class="inline">A1</code>·and·<code·class="inline">A2</code>·are·answers·found·in·that·order,296 comparing·answers,·that·is,·if·<code·class="inline">A1</code>·and·<code·class="inline">A2</code>·are·answers·found·in·that·order,
297 then·<code·class="inline">A2</code>·is·a·removed·if·<code·class="inline">A1·==·A2</code>.</p><p>To·return·only·a·few·answers,·cursors·can·be·used.·The·following·code·returns·no297 then·<code·class="inline">A2</code>·is·a·removed·if·<code·class="inline">A1·==·A2</code>.</p><p>To·return·only·a·few·answers,·cursors·can·be·used.·The·following·code·returns·no
298 more·than·five·answers·using·an·ETS·table·for·storing·the·unique·answers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">cursor</span><span·class="p"·data-group-id="5580920325-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="5580920325-2">(</span><span·class="p"·data-group-id="5580920325-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·791,·SHA:·490e881868d8f66f335f258a493012282287f6744293e0d03cbb50a17cd9657a·...·]-1">)</span><span·class="p">,</span><span·class="w">298 more·than·five·answers·using·an·ETS·table·for·storing·the·unique·answers:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">C</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">cursor</span><span·class="p"·data-group-id="6692512568-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="6692512568-2">(</span><span·class="p"·data-group-id="6692512568-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·791,·SHA:·fd79bb55048b12243b915a89bbf27809682eb7b29b248198614aa0fea00ff09e·...·]-1">)</span><span·class="p">,</span><span·class="w">
299 </span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">next_answers</span><span·class="p"·data-group-id="5580920325-6">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="5580920325-6">)</span><span·class="p">,</span><span·class="w">299 </span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">next_answers</span><span·class="p"·data-group-id="6692512568-6">(</span><span·class="n">C</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5</span><span·class="p"·data-group-id="6692512568-6">)</span><span·class="p">,</span><span·class="w">
300 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">delete_cursor</span><span·class="p"·data-group-id="5580920325-7">(</span><span·class="n">C</span><span·class="p"·data-group-id="5580920325-7">)</span><span·class="p">,</span><span·class="w">300 </span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">delete_cursor</span><span·class="p"·data-group-id="6692512568-7">(</span><span·class="n">C</span><span·class="p"·data-group-id="6692512568-7">)</span><span·class="p">,</span><span·class="w">
301 </span><span·class="n">R</span><span·class="p">.</span></code></pre><p>QLCs·are·convenient·for·stating·constraints·on·data·from·two·or·more·tables.·The301 </span><span·class="n">R</span><span·class="p">.</span></code></pre><p>QLCs·are·convenient·for·stating·constraints·on·data·from·two·or·more·tables.·The
302 following·example·does·a·natural·join·on·two·query·handles·on·position·2:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="8778793282-1">(</span><span·class="p"·data-group-id="8778793282-2">[</span><span·class="p"·data-group-id="8778793282-3">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span[·...·truncated·by·diffoscope;·len:·85,·SHA:·b535683db92ebce2be384970ba8649a11794be8870d1ae13800c23d17f722596·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">302 following·example·does·a·natural·join·on·two·query·handles·on·position·2:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="4165100690-1">(</span><span·class="p"·data-group-id="4165100690-2">[</span><span·class="p"·data-group-id="4165100690-3">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span[·...·truncated·by·diffoscope;·len:·85,·SHA:·4ee59434473418a8c89f7eb67f527d9655062065a370e27a6fdcd7e189ec99ae·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
303 ··········</span><span·class="p"·data-group-id="8778793282-4">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span·class="p"·data-group-id="8778793282-4">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH1</span><span·class="p">,</span><span·class="w">303 ··········</span><span·class="p"·data-group-id="4165100690-4">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span·class="p"·data-group-id="4165100690-4">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH1</span><span·class="p">,</span><span·class="w">
304 ··········</span><span·class="p"·data-group-id="8778793282-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="8778793282-5">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH2</span><span·class="p">,</span><span·class="w">304 ··········</span><span·class="p"·data-group-id="4165100690-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="4165100690-5">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH2</span><span·class="p">,</span><span·class="w">
305 ··········</span><span·class="n">X2</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Y2</span><span·class="p"·data-group-id="8778793282-2">]</span><span·class="p"·data-group-id="8778793282-1">)</span></code></pre><p>The·<code·class="inline">qlc</code>·module·evaluates·this·differently·depending·on·the·query·handles·<code·class="inline">QH1</code>305 ··········</span><span·class="n">X2</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Y2</span><span·class="p"·data-group-id="4165100690-2">]</span><span·class="p"·data-group-id="4165100690-1">)</span></code></pre><p>The·<code·class="inline">qlc</code>·module·evaluates·this·differently·depending·on·the·query·handles·<code·class="inline">QH1</code>
306 and·<code·class="inline">QH2</code>.·If,·for·example,·<code·class="inline">X2</code>·is·matched·against·the·key·of·a·QLC·table,·the306 and·<code·class="inline">QH2</code>.·If,·for·example,·<code·class="inline">X2</code>·is·matched·against·the·key·of·a·QLC·table,·the
307 lookup·join·method·traverses·the·objects·of·<code·class="inline">QH2</code>·while·looking·up·key·values·in307 lookup·join·method·traverses·the·objects·of·<code·class="inline">QH2</code>·while·looking·up·key·values·in
308 the·table.·However,·if·not·<code·class="inline">X2</code>·or·<code·class="inline">Y2</code>·is·matched·against·the·key·or·an·indexed308 the·table.·However,·if·not·<code·class="inline">X2</code>·or·<code·class="inline">Y2</code>·is·matched·against·the·key·or·an·indexed
309 position·of·a·QLC·table,·the·merge·join·method·ensures·that·<code·class="inline">QH1</code>·and·<code·class="inline">QH2</code>·are309 position·of·a·QLC·table,·the·merge·join·method·ensures·that·<code·class="inline">QH1</code>·and·<code·class="inline">QH2</code>·are
310 both·sorted·on·position·2·and·next·do·the·join·by·traversing·the·objects·one·by310 both·sorted·on·position·2·and·next·do·the·join·by·traversing·the·objects·one·by
311 one.</p><p>Option·<code·class="inline">join</code>·can·be·used·to·force·the·<code·class="inline">qlc</code>·module·to·use·a·certain·join311 one.</p><p>Option·<code·class="inline">join</code>·can·be·used·to·force·the·<code·class="inline">qlc</code>·module·to·use·a·certain·join
312 method.·For·the·rest·of·this·section·it·is·assumed·that·the·excessively·slow312 method.·For·the·rest·of·this·section·it·is·assumed·that·the·excessively·slow
313 join·method·called·&quot;nested·loop&quot;·has·been·chosen:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="6281532410-1">(</span><span·class="p"·data-group-id="6281532410-2">[</span><span·class="p"·data-group-id="6281532410-3">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span[·...·truncated·by·diffoscope;·len:·85,·SHA:·4ebcc2d31b124f89b59a1447c7c21eaeeb8f8397d83a088c19681b4bfeb75790·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">313 join·method·called·&quot;nested·loop&quot;·has·been·chosen:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="9684111597-1">(</span><span·class="p"·data-group-id="9684111597-2">[</span><span·class="p"·data-group-id="9684111597-3">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span[·...·truncated·by·diffoscope;·len:·85,·SHA:·465accb0f9318340510a5d8492ed5d42628b1f89f11c706b559b06e3155ba47a·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
314 ··········</span><span·class="p"·data-group-id="6281532410-4">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span·class="p"·data-group-id="6281532410-4">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH1</span><span·class="p">,</span><span·class="w">314 ··········</span><span·class="p"·data-group-id="9684111597-4">{</span><span·class="n">X1</span><span·class="p">,</span><span·class="n">X2</span><span·class="p">,</span><span·class="n">X3</span><span·class="p"·data-group-id="9684111597-4">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH1</span><span·class="p">,</span><span·class="w">
315 ··········</span><span·class="p"·data-group-id="6281532410-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="6281532410-5">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH2</span><span·class="p">,</span><span·class="w">315 ··········</span><span·class="p"·data-group-id="9684111597-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="9684111597-5">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">QH2</span><span·class="p">,</span><span·class="w">
316 ··········</span><span·class="n">X2</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Y2</span><span·class="p"·data-group-id="6281532410-2">]</span><span·class="p">,</span><span·class="w">316 ··········</span><span·class="n">X2</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span·class="n">Y2</span><span·class="p"·data-group-id="9684111597-2">]</span><span·class="p">,</span><span·class="w">
317 ······</span><span·class="p"·data-group-id="6281532410-6">{</span><span·class="ss">join</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nested_loop</span><span·class="p"·data-group-id="6281532410-6">}</span><span·class="p"·data-group-id="6281532410-1">)</span></code></pre><p>In·this·case·the·filter·is·applied·to·every·possible·pair·of·answers·to·<code·class="inline">QH1</code>317 ······</span><span·class="p"·data-group-id="9684111597-6">{</span><span·class="ss">join</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nested_loop</span><span·class="p"·data-group-id="9684111597-6">}</span><span·class="p"·data-group-id="9684111597-1">)</span></code></pre><p>In·this·case·the·filter·is·applied·to·every·possible·pair·of·answers·to·<code·class="inline">QH1</code>
318 and·<code·class="inline">QH2</code>,·one·at·a·time.·If·there·are·M·answers·to·<code·class="inline">QH1</code>·and·N·answers·to318 and·<code·class="inline">QH2</code>,·one·at·a·time.·If·there·are·M·answers·to·<code·class="inline">QH1</code>·and·N·answers·to
319 <code·class="inline">QH2</code>,·the·filter·is·run·M*N·times.</p><p>If·<code·class="inline">QH2</code>·is·a·call·to·the·function·for·<a·href="gb_trees.html"><code·class="inline">gb_trees</code></a>,·as·defined·in·section319 <code·class="inline">QH2</code>,·the·filter·is·run·M*N·times.</p><p>If·<code·class="inline">QH2</code>·is·a·call·to·the·function·for·<a·href="gb_trees.html"><code·class="inline">gb_trees</code></a>,·as·defined·in·section
320 <a·href="qlc.html#implementing_a_qlc_table">Implementing·a·QLC·Table</a>,·then320 <a·href="qlc.html#implementing_a_qlc_table">Implementing·a·QLC·Table</a>,·then
321 <a·href="qlc.html#gb_table"><code·class="inline">gb_table:table/1</code>·</a>,·the·iterator·for·the·gb-tree·is321 <a·href="qlc.html#gb_table"><code·class="inline">gb_table:table/1</code>·</a>,·the·iterator·for·the·gb-tree·is
322 initiated·for·each·answer·to·<code·class="inline">QH1</code>.·The·objects·of·the·gb-tree·are·then·returned322 initiated·for·each·answer·to·<code·class="inline">QH1</code>.·The·objects·of·the·gb-tree·are·then·returned
323 one·by·one.·This·is·probably·the·most·efficient·way·of·traversing·the·table·in323 one·by·one.·This·is·probably·the·most·efficient·way·of·traversing·the·table·in
324 that·case,·as·it·takes·minimal·computational·power·to·get·the·following·object.324 that·case,·as·it·takes·minimal·computational·power·to·get·the·following·object.
325 But·if·<code·class="inline">QH2</code>·is·not·a·table·but·a·more·complicated·QLC,·it·can·be·more·efficient325 But·if·<code·class="inline">QH2</code>·is·not·a·table·but·a·more·complicated·QLC,·it·can·be·more·efficient
326 to·use·some·RAM·memory·for·collecting·the·answers·in·a·cache,·particularly·if326 to·use·some·RAM·memory·for·collecting·the·answers·in·a·cache,·particularly·if
327 there·are·only·a·few·answers.·It·must·then·be·assumed·that·evaluating·<code·class="inline">QH2</code>·has327 there·are·only·a·few·answers.·It·must·then·be·assumed·that·evaluating·<code·class="inline">QH2</code>·has
328 no·side·effects·so·that·the·meaning·of·the·query·does·not·change·if·<code·class="inline">QH2</code>·is328 no·side·effects·so·that·the·meaning·of·the·query·does·not·change·if·<code·class="inline">QH2</code>·is
329 evaluated·only·once.·One·way·of·caching·the·answers·is·to·evaluate·<code·class="inline">QH2</code>·first329 evaluated·only·once.·One·way·of·caching·the·answers·is·to·evaluate·<code·class="inline">QH2</code>·first
330 of·all·and·substitute·the·list·of·answers·for·<code·class="inline">QH2</code>·in·the·query.·Another·way·is330 of·all·and·substitute·the·list·of·answers·for·<code·class="inline">QH2</code>·in·the·query.·Another·way·is
331 to·use·option·<code·class="inline">cache</code>.·It·is·expressed·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">QH2</span><span·class="err">&#39;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="2458131355-1">(</span><span·class="p"·data-group-id="2458131355-2">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·cl[·...·truncated·by·diffoscope;·len:·394,·SHA:·c5d0714c4c24c3e6def1493334adacfcb15a4f059a3a12ae27ad69889172198e·...·]-1">)</span></code></pre><p>or·only</p><pre><code·class="text">QH2'·=·qlc:q([X·||·X·&lt;-·QH2],·cache)</code></pre><p>The·effect·of·option·<code·class="inline">cache</code>·is·that·when·generator·<code·class="inline">QH2'</code>·is·run·the·first331 to·use·option·<code·class="inline">cache</code>.·It·is·expressed·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">QH2</span><span·class="err">&#39;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="9917735220-1">(</span><span·class="p"·data-group-id="9917735220-2">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="o">&lt;-</span><span·cl[·...·truncated·by·diffoscope;·len:·394,·SHA:·e0bb201b6af9f263b11753fcf08729770a1e91ffd70d63e8dbdaffac26751aab·...·]-1">)</span></code></pre><p>or·only</p><pre><code·class="text">QH2'·=·qlc:q([X·||·X·&lt;-·QH2],·cache)</code></pre><p>The·effect·of·option·<code·class="inline">cache</code>·is·that·when·generator·<code·class="inline">QH2'</code>·is·run·the·first
332 time,·every·answer·is·stored·in·an·ETS·table.·When·the·next·answer·of·<code·class="inline">QH1</code>·is332 time,·every·answer·is·stored·in·an·ETS·table.·When·the·next·answer·of·<code·class="inline">QH1</code>·is
333 tried,·answers·to·<code·class="inline">QH2'</code>·are·copied·from·the·ETS·table,·which·is·very·fast.·As333 tried,·answers·to·<code·class="inline">QH2'</code>·are·copied·from·the·ETS·table,·which·is·very·fast.·As
334 for·option·<code·class="inline">unique</code>·the·cost·is·a·possibly·substantial·amount·of·RAM·memory.</p><p>Option·<code·class="inline">{cache, list}</code>·offers·the·possibility·to·store·the·answers·in·a·list·on334 for·option·<code·class="inline">unique</code>·the·cost·is·a·possibly·substantial·amount·of·RAM·memory.</p><p>Option·<code·class="inline">{cache, list}</code>·offers·the·possibility·to·store·the·answers·in·a·list·on
335 the·process·heap.·This·has·the·potential·of·being·faster·than·ETS·tables,·as335 the·process·heap.·This·has·the·potential·of·being·faster·than·ETS·tables,·as
336 there·is·no·need·to·copy·answers·from·the·table.·However,·it·can·often·result·in336 there·is·no·need·to·copy·answers·from·the·table.·However,·it·can·often·result·in
337 slower·evaluation·because·of·more·garbage·collections·of·the·process·heap·and337 slower·evaluation·because·of·more·garbage·collections·of·the·process·heap·and
338 increased·RAM·memory·consumption·because·of·larger·heaps.·Another·drawback·with338 increased·RAM·memory·consumption·because·of·larger·heaps.·Another·drawback·with
Offset 346, 70 lines modifiedOffset 346, 70 lines modified
346 is·needed·to·pinpoint·the·generators·that·are·to·be·cached.</p><p><a·href=""·id="implementing_a_qlc_table"></a></p><h2·id="module-implementing-a-qlc-table"·class="section-heading">346 is·needed·to·pinpoint·the·generators·that·are·to·be·cached.</p><p><a·href=""·id="implementing_a_qlc_table"></a></p><h2·id="module-implementing-a-qlc-table"·class="section-heading">
347 ··<a·href="#module-implementing-a-qlc-table"·class="hover-link">347 ··<a·href="#module-implementing-a-qlc-table"·class="hover-link">
348 ····<i·class="ri-link-m"·aria-hidden="true"></i>348 ····<i·class="ri-link-m"·aria-hidden="true"></i>
349 ··</a>349 ··</a>
350 ··<span·class="text">Implementing·a·QLC·Table</span>350 ··<span·class="text">Implementing·a·QLC·Table</span>
351 </h2>351 </h2>
352 <p>As·an·example·of·how·to·use·function·<a·href="#table/2"><code·class="inline">table/2</code></a>,·the·implementation·of·a·QLC352 <p>As·an·example·of·how·to·use·function·<a·href="#table/2"><code·class="inline">table/2</code></a>,·the·implementation·of·a·QLC
353 table·for·the·<a·href="gb_trees.html"><code·class="inline">gb_trees</code></a>·module·is·given:</p><p><a·href=""·id="gb_table"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9373153447-1">(</span><span·class="ss">gb_table</span><span·class="p"·data-group-id="9373153447-1">)</span><span·class="p">.</span><span·class="w">353 table·for·the·<a·href="gb_trees.html"><code·class="inline">gb_trees</code></a>·module·is·given:</p><p><a·href=""·id="gb_table"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8195529087-1">(</span><span·class="ss">gb_table</span><span·class="p"·data-group-id="8195529087-1">)</span><span·class="p">.</span><span·class="w">
354 </span><span·class="w">354 </span><span·class="w">
355 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9373153447-2">(</span><span·class="p"·data-group-id="9373153447-3">[</span><span·class="ss">table</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9373153447-3">]</span><span·class="p"·data-group-id="9373153447-2">)</span><span·class="p">.</span><span·class="w">355 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8195529087-2">(</span><span·class="p"·data-group-id="8195529087-3">[</span><span·class="ss">table</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8195529087-3">]</span><span·class="p"·data-group-id="8195529087-2">)</span><span·class="p">.</span><span·class="w">
  
356 </span><span·class="nf">table</span><span·class="p"·data-group-id="9373153447-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="9373153447-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">356 </span><span·class="nf">table</span><span·class="p"·data-group-id="8195529087-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="8195529087-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
357 ····</span><span·class="n">TF</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9373153447-5">(</span><span·class="p"·data-group-id="9373153447-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="9373153447-6">(</span><span·class="nc">gb_[·...·truncated·by·diffoscope;·len:·428,·SHA:·30c50a7529dfe8ed655277fa078c1db8d2d35de34034b910ae02a785f61dc329·...·]7-6">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">357 ····</span><span·class="n">TF</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="8195529087-5">(</span><span·class="p"·data-group-id="8195529087-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="8195529087-6">(</span><span·class="nc">gb_[·...·truncated·by·diffoscope;·len:·428,·SHA:·584dff9b83303fb9ce542980115a5650310a3828226f2fc1cec695614e2c0b27·...·]7-6">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
358 ····</span><span·class="n">InfoFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9373153447-9">(</span><span·class="ss">num_of_objects</span><span·class="p"·data-group-id="9373153447-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class[·...·truncated·by·diffoscope;·len:·135,·SHA:·05d01b0a033cac64d6e5df98fd2bb6708d1c42acdd738a75ba45299fe22e6a43·...·]7-10">)</span><span·class="p">;</span><span·class="w">358 ····</span><span·class="n">InfoFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="8195529087-9">(</span><span·class="ss">num_of_objects</span><span·class="p"·data-group-id="8195529087-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class[·...·truncated·by·diffoscope;·len:·135,·SHA:·c56ca23370b4904adcfb63f886adf8670045551f8c2b9406f1e01cb54b287f2d·...·]7-10">)</span><span·class="p">;</span><span·class="w">
359 ·················</span><span·class="p"·data-group-id="9373153447-11">(</span><span·class="ss">keypos</span><span·class="p"·data-group-id="9373153447-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">359 ·················</span><span·class="p"·data-group-id="8195529087-11">(</span><span·class="ss">keypos</span><span·class="p"·data-group-id="8195529087-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">;</span><span·class="w">
360 ·················</span><span·class="p"·data-group-id="9373153447-12">(</span><span·class="ss">is_sorted_key</span><span·class="p"·data-group-id="9373153447-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">360 ·················</span><span·class="p"·data-group-id="8195529087-12">(</span><span·class="ss">is_sorted_key</span><span·class="p"·data-group-id="8195529087-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
361 ·················</span><span·class="p"·data-group-id="9373153447-13">(</span><span·class="ss">is_unique_objects</span><span·class="p"·data-group-id="9373153447-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">361 ·················</span><span·class="p"·data-group-id="8195529087-13">(</span><span·class="ss">is_unique_objects</span><span·class="p"·data-group-id="8195529087-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">;</span><span·class="w">
362 ·················</span><span·class="p"·data-group-id="9373153447-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="9373153447-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">362 ·················</span><span·class="p"·data-group-id="8195529087-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="8195529087-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">
363 ··············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">363 ··············</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
364 ····</span><span·class="n">LookupFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">364 ····</span><span·class="n">LookupFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
365 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="9373153447-15">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ks</span><span·class="p"·data-group-id="9373153447-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">365 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="8195529087-15">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ks</span><span·class="p"·data-group-id="8195529087-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
366 ················</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatmap</span><span·class="p"·data-group-id="9373153447-16">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9373153447-17">(</span><span·class="n">K</span><span·class="p"·data-group-id="9373153447-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">366 ················</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatmap</span><span·class="p"·data-group-id="8195529087-16">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8195529087-17">(</span><span·class="n">K</span><span·class="p"·data-group-id="8195529087-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
367 ······································</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="9373153447-18">(</span><span·class="n">K</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="9373153447-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">367 ······································</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">lookup</span><span·class="p"·data-group-id="8195529087-18">(</span><span·class="n">K</span><span·class="p">,</span><span·class="w">·</span><span·class="n">T</span><span·class="p"·data-group-id="8195529087-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
368 ··········································</span><span·class="p"·data-group-id="9373153447-19">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="9373153447-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·272,·SHA:·276214688efdc1e4311a8da2b1d1ed8f35bc8c621236bf877390b35c270c75cb·...·]7-20">]</span><span·class="p">;</span><span·class="w">368 ··········································</span><span·class="p"·data-group-id="8195529087-19">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p"·data-group-id="8195529087-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·272,·SHA:·c466fcdee85d502ab9105ffa61292b6de2e416b7499b9b7024e50d66547a2390·...·]7-20">]</span><span·class="p">;</span><span·class="w">
369 ··········································</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9373153447-22">[</span><span·class="p"·data-group-id="9373153447-22">]</span><span·class="w">369 ··········································</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8195529087-22">[</span><span·class="p"·data-group-id="8195529087-22">]</span><span·class="w">
370 ······································</span><span·class="k">end</span><span·class="w">370 ······································</span><span·class="k">end</span><span·class="w">
371 ······························</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ks</span><span·class="p"·data-group-id="9373153447-16">)</span><span·class="w">371 ······························</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ks</span><span·class="p"·data-group-id="8195529087-16">)</span><span·class="w">
372 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">372 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
373 ····</span><span·class="n">FormatFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">373 ····</span><span·class="n">FormatFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
374 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="9373153447-23">(</span><span·class="p"·data-group-id="9373153447-24">{</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NElements</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementF[·...·truncated·by·diffoscope;·len:·103,·SHA:·3e0d30c3e841fef345915c14d1c23d7ae7119e860cfa5f645ece9f6d92eba8eb·...·]7-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">374 ········</span><span·class="nf">fun</span><span·class="p"·data-group-id="8195529087-23">(</span><span·class="p"·data-group-id="8195529087-24">{</span><span·class="ss">all</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NElements</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementF[·...·truncated·by·diffoscope;·len:·103,·SHA:·029dd61bf7fc8358e97c84c244899607ec7529646967411bf963d94c70184e0e·...·]7-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
375 ················</span><span·class="n">ValsS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9373153447-25">(</span><span·class="s">&quot;gb_trees:from_orddict(</span><span·class="si">~w</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">375 ················</span><span·class="n">ValsS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8195529087-25">(</span><span·class="s">&quot;gb_trees:from_orddict(</span><span·class="si">~w</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">
376 ······································</span><span·class="p"·data-group-id="9373153447-26">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9373153447-27">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NElements</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·186,·SHA:·84996afa61468256e9e1e5b822cdf8586af1e6de60799307d3423752dad252ea·...·]7-25">)</span><span·class="p">,</span><span·class="w">376 ······································</span><span·class="p"·data-group-id="8195529087-26">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="8195529087-27">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NElements</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·186,·SHA:·31d5ac6a662c81a95c4cfe4a7b53f5f3322e750aaf2791b90a74a861a4417dde·...·]7-25">)</span><span·class="p">,</span><span·class="w">
377 ················</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9373153447-28">(</span><span·class="s">&quot;gb_table:table(</span><span·class="si">~s</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9373153447-29">[</span><span·class="n">ValsS</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·4b47b3a7f12550700d537b2608bb4041b2818cbdb940ad70f8287947d594207b·...·]7-28">)</span><span·class="p">;</span><span·class="w">377 ················</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8195529087-28">(</span><span·class="s">&quot;gb_table:table(</span><span·class="si">~s</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8195529087-29">[</span><span·class="n">ValsS</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·034a4423be7d53fb1837c455541fb56ea3b50719924bc6841d51977e582435f7·...·]7-28">)</span><span·class="p">;</span><span·class="w">
378 ···········</span><span·class="p"·data-group-id="9373153447-30">(</span><span·class="p"·data-group-id="9373153447-31">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">KeyValues</s[·...·truncated·by·diffoscope;·len:·283,·SHA:·4d454be60325c69b2e30221df91d2320f4625d1487b5913e79b4a05bd81829d3·...·]7-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">378 ···········</span><span·class="p"·data-group-id="8195529087-30">(</span><span·class="p"·data-group-id="8195529087-31">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">KeyValues</s[·...·truncated·by·diffoscope;·len:·283,·SHA:·a77d80f91d6fd6fe517b579223612ddbe65d428bd312c72458e79a21a44d0bb1·...·]7-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
379 ················</span><span·class="n">ValsS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9373153447-32">(</span><span·class="s">&quot;gb_trees:from_orddict(</span><span·class="si">~w</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">379 ················</span><span·class="n">ValsS</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8195529087-32">(</span><span·class="s">&quot;gb_trees:from_orddict(</span><span·class="si">~w</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">
380 ······································</span><span·class="p"·data-group-id="9373153447-33">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9373153447-34">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·186,·SHA:·2e31fdb9f28241fae835831542a83a498b421aa44a3bdb54e32a48f46e20e567·...·]7-32">)</span><span·class="p">,</span><span·class="w">380 ······································</span><span·class="p"·data-group-id="8195529087-33">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="8195529087-34">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·186,·SHA:·b9d50a543e512add2dd303d239910f87a847451a27febf065a3145bc7903e619·...·]7-32">)</span><span·class="p">,</span><span·class="w">
381 ················</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="9373153447-35">(</span><span·class="s">&quot;lists:flatmap(fun(K)·-&gt;·&quot;</span><span·class="w">381 ················</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8195529087-35">(</span><span·class="s">&quot;lists:flatmap(fun(K)·-&gt;·&quot;</span><span·class="w">
382 ······························</span><span·class="s">&quot;case·gb_trees:lookup(K,·</span><span·class="si">~s</span><span·class="s">)·of·&quot;</span><span·class="w">382 ······························</span><span·class="s">&quot;case·gb_trees:lookup(K,·</span><span·class="si">~s</span><span·class="s">)·of·&quot;</span><span·class="w">
383 ······························</span><span·class="s">&quot;{value,·V}·-&gt;·[{K,V}];none·-&gt;·[]·end·&quot;</span><span·class="w">383 ······························</span><span·class="s">&quot;{value,·V}·-&gt;·[{K,V}];none·-&gt;·[]·end·&quot;</span><span·class="w">
384 ······························</span><span·class="s">&quot;end,·</span><span·class="si">~w</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">384 ······························</span><span·class="s">&quot;end,·</span><span·class="si">~w</span><span·class="s">)&quot;</span><span·class="p">,</span><span·class="w">
385 ······························</span><span·class="p"·data-group-id="9373153447-36">[</span><span·class="n">ValsS</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9373153447-37">[</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="9373153447-38">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·417,·SHA:·4c2e128bc93fb35c3b346e17b9cad33975d4e29f594575e165f4fae9164a75fc·...·]7-35">)</span><span·class="w">385 ······························</span><span·class="p"·data-group-id="8195529087-36">[</span><span·class="n">ValsS</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8195529087-37">[</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="8195529087-38">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·417,·SHA:·b32480e9029fc9349b64b8b3850b4fdd976ba22e75cb3826134112e3ffef7e05·...·]7-35">)</span><span·class="w">
386 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">386 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
387 ····</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">table</span><span·class="p"·data-group-id="9373153447-39">(</span><span·class="n">TF</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9373153447-40">[</span><span·class="p"·data-group-id="9373153447-41">{</span><span·class="ss">info_fun</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·2a2f5275e2448f6f4aad81fc3edf286a7c0fc806af47b2dcca2ba4b9ff6e8eb6·...·]7-42">}</span><span·class="p">,</span><span·class="w">387 ····</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">table</span><span·class="p"·data-group-id="8195529087-39">(</span><span·class="n">TF</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8195529087-40">[</span><span·class="p"·data-group-id="8195529087-41">{</span><span·class="ss">info_fun</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·c787789cbfa0eedef59a70763496b055a636be16fd41f13473a2f8925895740a·...·]7-42">}</span><span·class="p">,</span><span·class="w">
388 ···················</span><span·class="p"·data-group-id="9373153447-43">{</span><span·class="ss">lookup_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LookupFun</span><span·class="p"·data-group-id="9373153447-43">}</span><span·class="p">,</span><span·class="p"·data-group-id="9373153447[·...·truncated·by·diffoscope;·len:·257,·SHA:·b92bf8f5b11cfd5f13cfb073553439280e6d7bd8ef0350d83b7c1ccfe7d8af55·...·]7-39">)</span><span·class="p">.</span><span·class="w">388 ···················</span><span·class="p"·data-group-id="8195529087-43">{</span><span·class="ss">lookup_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="n">LookupFun</span><span·class="p"·data-group-id="8195529087-43">}</span><span·class="p">,</span><span·class="p"·data-group-id="8195529087[·...·truncated·by·diffoscope;·len:·257,·SHA:·1b9faa547d98751fcc0b7708c9379219e29fe7fbcd27dc74610d479029680f14·...·]7-39">)</span><span·class="p">.</span><span·class="w">
  
389 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="9373153447-45">(</span><span·class="p"·data-group-id="9373153447-46">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class[·...·truncated·by·diffoscope;·len:·83,·SHA:·6e5c020c6396abf09024dc12e3964bd750b32def90a1dd25b406f9f8ec098919·...·]7-45">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">389 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="8195529087-45">(</span><span·class="p"·data-group-id="8195529087-46">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class[·...·truncated·by·diffoscope;·len:·83,·SHA:·bebdb7a67917ad043c478549d2d9486ae39bfe09909907ec66d0955e2babf13d·...·]7-45">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
390 ····</span><span·class="p"·data-group-id="9373153447-47">[</span><span·class="p"·data-group-id="9373153447-48">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="9373153447-48">}</span><span·class="w">·</span><span·class="p">|</span><span[·...·truncated·by·diffoscope;·len:·676,·SHA:·df3b8e773e7b3b98c00003c7958d0d47a38b113f71869db769aa0a899ad5d2d3·...·]7-47">]</span><span·class="p">;</span><span·class="w">390 ····</span><span·class="p"·data-group-id="8195529087-47">[</span><span·class="p"·data-group-id="8195529087-48">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="8195529087-48">}</span><span·class="w">·</span><span·class="p">|</span><span[·...·truncated·by·diffoscope;·len:·676,·SHA:·2d3ac4576716e1069b4bda60cae38404295fff4c96937478875e6c7c91153edb·...·]7-47">]</span><span·class="p">;</span><span·class="w">
391 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="9373153447-52">(</span><span·class="ss">none</span><span·class="p"·data-group-id="9373153447-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">391 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="8195529087-52">(</span><span·class="ss">none</span><span·class="p"·data-group-id="8195529087-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
392 ····</span><span·class="p"·data-group-id="9373153447-53">[</span><span·class="p"·data-group-id="9373153447-53">]</span><span·class="p">.</span><span·class="w">392 ····</span><span·class="p"·data-group-id="8195529087-53">[</span><span·class="p"·data-group-id="8195529087-53">]</span><span·class="p">.</span><span·class="w">
  
393 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9373153447-54">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="9373153447-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">393 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="8195529087-54">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="8195529087-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
394 ····</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9373153447-55">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·e273c2ed69ef009a7764ab117b6c4a9164d8896217dab20c154036c3a94f45e4·...·]7-55">)</span><span·class="p">;</span><span·class="w">394 ····</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="8195529087-55">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·addc835672b054c1019b13f5eca134c9434a0a9dc004d1542ba180429dd6c4ad·...·]7-55">)</span><span·class="p">;</span><span·class="w">
395 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9373153447-56">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NElements</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="9373153447-56">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">395 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="8195529087-56">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NElements</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="8195529087-56">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
396 ····</span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="9373153447-57">(</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">iterator</span><span·class="p"·data-group-id="9373153447-58">(</span><span·class="n">T</span><span·class="p"·data-group-id="9373153447-58">)</span><span·class="[·...·truncated·by·diffoscope;·len:·188,·SHA:·ee0c57af9961b31d29c4149ef2739348b936883d22b63aafd3432c234c24dd57·...·]7-57">)</span><span·class="p">.</span><span·class="w">396 ····</span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="8195529087-57">(</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">iterator</span><span·class="p"·data-group-id="8195529087-58">(</span><span·class="n">T</span><span·class="p"·data-group-id="8195529087-58">)</span><span·class="[·...·truncated·by·diffoscope;·len:·188,·SHA:·915e1fe801957aeb2a2237ae8dd618374746388059af9bcfbac8283e928c81a6·...·]7-57">)</span><span·class="p">.</span><span·class="w">
  
397 </span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="9373153447-59">(</span><span·class="p">_</span><span·class="n">I</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">EFun</span><span·class="[·...·truncated·by·diffoscope;·len:·27,·SHA:·0403877951e7af45c5fa0a3db886eba84a319455513dfddf8a1f805886152ad4·...·]7-59">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">397 </span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="8195529087-59">(</span><span·class="p">_</span><span·class="n">I</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">EFun</span><span·class="[·...·truncated·by·diffoscope;·len:·27,·SHA:·2b5e564e01b7aa931e0e10e0f7f01a465d2ff2feba153b38a95b1e38b06a5c78·...·]7-59">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
398 ····</span><span·class="ss">&#39;...&#39;</span><span·class="p">;</span><span·class="w">398 ····</span><span·class="ss">&#39;...&#39;</span><span·class="p">;</span><span·class="w">
399 </span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="9373153447-60">(</span><span·class="n">I0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EFun</span><span·class="p"·data-group-id="9373153447-60">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">399 </span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="8195529087-60">(</span><span·class="n">I0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EFun</span><span·class="p"·data-group-id="8195529087-60">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
400 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">next</span><span·class="p"·data-group-id="9373153447-61">(</span><span·class="n">I0</span><span·class="p"·data-group-id="9373153447-61">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">400 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">next</span><span·class="p"·data-group-id="8195529087-61">(</span><span·class="n">I0</span><span·class="p"·data-group-id="8195529087-61">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
401 ········</span><span·class="p"·data-group-id="9373153447-62">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p">,</span><span·class="w">·</span><span·class="n">I</span><span·class="p"·data-group-id="9373153447-62">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">401 ········</span><span·class="p"·data-group-id="8195529087-62">{</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V</span><span·class="p">,</span><span·class="w">·</span><span·class="n">I</span><span·class="p"·data-group-id="8195529087-62">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
402 ············</span><span·class="p"·data-group-id="9373153447-63">[</span><span·class="n">EFun</span><span·class="p"·data-group-id="9373153447-64">(</span><span·class="p"·data-group-id="9373153447-65">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·553,·SHA:·25b466ede26d58844e82b549c88be034acd44eedc74955c1d1018767c1b4e9bc·...·]7-63">]</span><span·class="p">;</span><span·class="w">402 ············</span><span·class="p"·data-group-id="8195529087-63">[</span><span·class="n">EFun</span><span·class="p"·data-group-id="8195529087-64">(</span><span·class="p"·data-group-id="8195529087-65">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·553,·SHA:·37c8e6a9c836bf15f49c8b0a4b9b08bbdd91c823df36b3482335022c4178cc82·...·]7-63">]</span><span·class="p">;</span><span·class="w">
403 ········</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">403 ········</span><span·class="ss">none</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
404 ············</span><span·class="p"·data-group-id="9373153447-67">[</span><span·class="p"·data-group-id="9373153447-67">]</span><span·class="w">404 ············</span><span·class="p"·data-group-id="8195529087-67">[</span><span·class="p"·data-group-id="8195529087-67">]</span><span·class="w">
405 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p><code·class="inline">TF</code>·is·the·traversal·function.·The·<code·class="inline">qlc</code>·module·requires·that·there·is·a·way·of405 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p><code·class="inline">TF</code>·is·the·traversal·function.·The·<code·class="inline">qlc</code>·module·requires·that·there·is·a·way·of
406 traversing·all·objects·of·the·data·structure.·<code·class="inline">gb_trees</code>·has·an·iterator406 traversing·all·objects·of·the·data·structure.·<code·class="inline">gb_trees</code>·has·an·iterator
407 function·suitable·for·that·purpose.·Notice·that·for·each·object·returned,·a·new407 function·suitable·for·that·purpose.·Notice·that·for·each·object·returned,·a·new
408 fun·is·created.·As·long·as·the·list·is·not·terminated·by·<code·class="inline">[]</code>,·it·is·assumed408 fun·is·created.·As·long·as·the·list·is·not·terminated·by·<code·class="inline">[]</code>,·it·is·assumed
409 that·the·tail·of·the·list·is·a·nullary·function·and·that·calling·the·function409 that·the·tail·of·the·list·is·a·nullary·function·and·that·calling·the·function
Max diff block lines reached; 156927/221488 bytes (70.85%) of diff not shown.
159 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/queue.html
    
Offset 713, 18 lines modifiedOffset 713, 18 lines modified
713 ······<div·class="specs">713 ······<div·class="specs">
  
714 ··········<pre·translate="no"><span·class="attribute">-spec</span>·all(Pred,·Q·::·<a·href="#t:queue/1">queue</a>(Item))·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>714 ··········<pre·translate="no"><span·class="attribute">-spec</span>·all(Pred,·Q·::·<a·href="#t:queue/1">queue</a>(Item))·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>
  
715 ······</div>715 ······</div>
  
716 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">Pred(Item)</code>·returns·<code·class="inline">true</code>·for·all·items·<code·class="inline">Item</code>·in·<code·class="inline">Q</code>,716 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">Pred(Item)</code>·returns·<code·class="inline">true</code>·for·all·items·<code·class="inline">Item</code>·in·<code·class="inline">Q</code>,
717 otherwise·<code·class="inline">false</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="0474831656-1">(</span><span·class="p"·data-group-id="0474831656-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·053b49a95776b1eb79751272f7cf25def7db046c6d5589757586238a5285ae99·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">717 otherwise·<code·class="inline">false</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="1710892215-1">(</span><span·class="p"·data-group-id="1710892215-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·f73aca841558e44f6e9cb297ddcfd8e6b83d380bcbca17fa64416c4e5f1ee1f1·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
718 2&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">all</span><span·class="p"·data-group-id="0474831656-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0474831656-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="0474831656-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·102e98baf0e62f9e3f32ade1c53cbd7103dea7a1d06c3d032bcd9f6ec6c02ab4·...·]-3">)</span><span·class="p">.</span><span·class="w">718 2&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">all</span><span·class="p"·data-group-id="1710892215-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1710892215-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="1710892215-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·cd0b0f8b255e645f93a88a1a71a6ca9b1e6f0223a38186a484a8494bdc307308·...·]-3">)</span><span·class="p">.</span><span·class="w">
719 </span><span·class="ss">false</span><span·class="gp·unselectable">719 </span><span·class="ss">false</span><span·class="gp·unselectable">
720 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">all</span><span·class="p"·data-group-id="0474831656-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0474831656-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="0474831656-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·39736ca27c0268fcc8d95e7c67e96efdc4268c85a39bb2e8d2445da473f23ff2·...·]-5">)</span><span·class="p">.</span><span·class="w">720 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">all</span><span·class="p"·data-group-id="1710892215-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1710892215-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="1710892215-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·8e4f2d90ab9f76422d710ec9524fbac0f31f63be23714a3097d5cc16b1a9673a·...·]-5">)</span><span·class="p">.</span><span·class="w">
721 </span><span·class="ss">true</span></code></pre>721 </span><span·class="ss">true</span></code></pre>
722 ··</section>722 ··</section>
723 </section>723 </section>
724 <section·class="detail"·id="any/2">724 <section·class="detail"·id="any/2">
  
725 ··<div·class="detail-header">725 ··<div·class="detail-header">
726 ····<a·href="#any/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">726 ····<a·href="#any/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 746, 18 lines modifiedOffset 746, 18 lines modified
746 ······<div·class="specs">746 ······<div·class="specs">
  
747 ··········<pre·translate="no"><span·class="attribute">-spec</span>·any(Pred,·Q·::·<a·href="#t:queue/1">queue</a>(Item))·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>747 ··········<pre·translate="no"><span·class="attribute">-spec</span>·any(Pred,·Q·::·<a·href="#t:queue/1">queue</a>(Item))·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()).</pre>
  
748 ······</div>748 ······</div>
  
749 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">Pred(Item)</code>·returns·<code·class="inline">true</code>·for·at·least·one·item·<code·class="inline">Item</code>·in749 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">Pred(Item)</code>·returns·<code·class="inline">true</code>·for·at·least·one·item·<code·class="inline">Item</code>·in
750 <code·class="inline">Q</code>,·otherwise·<code·class="inline">false</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="7846670188-1">(</span><span·class="p"·data-group-id="7846670188-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·b4e81a82e3ad603ff676b3e0240d7dc9daebdca52cfa1fcd48c68c1323199104·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">750 <code·class="inline">Q</code>,·otherwise·<code·class="inline">false</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="1992491064-1">(</span><span·class="p"·data-group-id="1992491064-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·468c6197ab0ee0408245691ef839ccf1eb16fde8928eaa075dc9c7f0671ed6c9·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
751 2&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">any</span><span·class="p"·data-group-id="7846670188-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7846670188-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="7846670188-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·315,·SHA:·577bd927a82312df9068181966b8adf56897dcce03588ec60a062210c3f5b25c·...·]-3">)</span><span·class="p">.</span><span·class="w">751 2&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">any</span><span·class="p"·data-group-id="1992491064-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1992491064-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="1992491064-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·315,·SHA:·08cbacecbb51ec6783f5938644709ceb91e1c40003bf1f79ce5d538a6e5ae54f·...·]-3">)</span><span·class="p">.</span><span·class="w">
752 </span><span·class="ss">false</span><span·class="gp·unselectable">752 </span><span·class="ss">false</span><span·class="gp·unselectable">
753 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">any</span><span·class="p"·data-group-id="7846670188-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7846670188-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="7846670188-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·a4d7dc4c64f7ff45d4ab5b3313da8cf7cb4d4da921fe282b5ef68ad9fabc36e9·...·]-5">)</span><span·class="p">.</span><span·class="w">753 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">any</span><span·class="p"·data-group-id="1992491064-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1992491064-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="1992491064-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·ac45322e76c2ea3669b3f4505406e98e88da2199b31fa17826a13746fd0822d6·...·]-5">)</span><span·class="p">.</span><span·class="w">
754 </span><span·class="ss">true</span></code></pre>754 </span><span·class="ss">true</span></code></pre>
755 ··</section>755 ··</section>
756 </section>756 </section>
757 <section·class="detail"·id="delete/2">757 <section·class="detail"·id="delete/2">
  
758 ··<div·class="detail-header">758 ··<div·class="detail-header">
759 ····<a·href="#delete/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">759 ····<a·href="#delete/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 779, 17 lines modifiedOffset 779, 17 lines modified
779 ······<div·class="specs">779 ······<div·class="specs">
  
780 ··········<pre·translate="no"><span·class="attribute">-spec</span>·delete(Item,·Q1)·->·Q2·when·Item·::·T,·Q1·::·<a·href="#t:queue/1">queue</a>(T),·Q2·::·<a·href="#t:queue/1">queue</a>(T),·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>780 ··········<pre·translate="no"><span·class="attribute">-spec</span>·delete(Item,·Q1)·->·Q2·when·Item·::·T,·Q1·::·<a·href="#t:queue/1">queue</a>(T),·Q2·::·<a·href="#t:queue/1">queue</a>(T),·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
781 ······</div>781 ······</div>
  
782 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·first·item·matching·<code·class="inline">Item</code>·is·deleted,·if·there782 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·first·item·matching·<code·class="inline">Item</code>·is·deleted,·if·there
783 is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="4345360107-1">(</span><span·class="p"·data-group-id="4345360107-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·8931dca21df374ffeb9734183e44cb3893de7ef357863f7723406d2dbfcfbcc5·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">783 is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="3359191488-1">(</span><span·class="p"·data-group-id="3359191488-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·39b5fbc45f06f93ca5177c9007ddfa5032236cba693568b983705c28f0d2a817·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
784 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="4345360107-3">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Queue</span><span·class="p"·data-group-id="4345360107-3">)</span><span·class="p">.</span><span·class="gp·unselectable">784 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="3359191488-3">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Queue</span><span·class="p"·data-group-id="3359191488-3">)</span><span·class="p">.</span><span·class="gp·unselectable">
785 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="4345360107-4">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Queue1</span><span·class="p"·data-group-id="4345360107-4">)</span><span·class="p">.</span><span·class="w">785 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">member</span><span·class="p"·data-group-id="3359191488-4">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Queue1</span><span·class="p"·data-group-id="3359191488-4">)</span><span·class="p">.</span><span·class="w">
786 </span><span·class="ss">false</span></code></pre>786 </span><span·class="ss">false</span></code></pre>
787 ··</section>787 ··</section>
788 </section>788 </section>
789 <section·class="detail"·id="delete_r/2">789 <section·class="detail"·id="delete_r/2">
  
790 ··<div·class="detail-header">790 ··<div·class="detail-header">
791 ····<a·href="#delete_r/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">791 ····<a·href="#delete_r/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 811, 18 lines modifiedOffset 811, 18 lines modified
811 ······<div·class="specs">811 ······<div·class="specs">
  
812 ··········<pre·translate="no"><span·class="attribute">-spec</span>·delete_r(Item,·Q1)·->·Q2·when·Item·::·T,·Q1·::·<a·href="#t:queue/1">queue</a>(T),·Q2·::·<a·href="#t:queue/1">queue</a>(T),·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>812 ··········<pre·translate="no"><span·class="attribute">-spec</span>·delete_r(Item,·Q1)·->·Q2·when·Item·::·T,·Q1·::·<a·href="#t:queue/1">queue</a>(T),·Q2·::·<a·href="#t:queue/1">queue</a>(T),·T·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
813 ······</div>813 ······</div>
  
814 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·last·item·matching·<code·class="inline">Item</code>·is·deleted,·if·there814 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·last·item·matching·<code·class="inline">Item</code>·is·deleted,·if·there
815 is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="3026630920-1">(</span><span·class="p"·data-group-id="3026630920-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·183,·SHA:·292e1cc1e082397f8fa2fa2d133fc18be7cc11ac7e5c3e193a4bae6bb58575af·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">815 is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="0112947332-1">(</span><span·class="p"·data-group-id="0112947332-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·183,·SHA:·52798ec2d8db5c3e5745daba5400dbf46ff9d1e3a2b25cb4fd1d77b4df2acc86·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
816 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete_r</span><span·class="p"·data-group-id="3026630920-3">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Queue</span><span·class="p"·data-group-id="3026630920-3">)</span><span·class="p">.</span><span·class="gp·unselectable">816 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete_r</span><span·class="p"·data-group-id="0112947332-3">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Queue</span><span·class="p"·data-group-id="0112947332-3">)</span><span·class="p">.</span><span·class="gp·unselectable">
817 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="3026630920-4">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="3026630920-4">)</span><span·class="p">.</span><span·class="w">817 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="0112947332-4">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="0112947332-4">)</span><span·class="p">.</span><span·class="w">
818 </span><span·class="p"·data-group-id="3026630920-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·afa7c8b0e595534d35f07fca9e27601b7db7de6e55907a9e0e587b7ad46e19e0·...·]-5">]</span></code></pre>818 </span><span·class="p"·data-group-id="0112947332-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·4a9060e2fb5170cb67e62db05e8c38c82b8e7382be8098f3b0bd2eb6eeac9ff6·...·]-5">]</span></code></pre>
819 ··</section>819 ··</section>
820 </section>820 </section>
821 <section·class="detail"·id="delete_with/2">821 <section·class="detail"·id="delete_with/2">
  
822 ··<div·class="detail-header">822 ··<div·class="detail-header">
823 ····<a·href="#delete_with/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">823 ····<a·href="#delete_with/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
824 ······<i·class="ri-link-m"·aria-hidden="true"></i>824 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 848, 18 lines modifiedOffset 848, 18 lines modified
848 ·························Q1·::·<a·href="#t:queue/1">queue</a>(Item),848 ·························Q1·::·<a·href="#t:queue/1">queue</a>(Item),
849 ·························Q2·::·<a·href="#t:queue/1">queue</a>(Item),849 ·························Q2·::·<a·href="#t:queue/1">queue</a>(Item),
850 ·························Item·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>850 ·························Item·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
851 ······</div>851 ······</div>
  
852 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·first·item·for·which·<code·class="inline">Pred</code>·returns·<code·class="inline">true</code>·is852 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·first·item·for·which·<code·class="inline">Pred</code>·returns·<code·class="inline">true</code>·is
853 deleted,·if·there·is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="5029682214-1">(</span><span·class="p"·data-group-id="5029682214-2">[</span><span·class="mi">100</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·cl[·...·truncated·by·diffoscope;·len:·184,·SHA:·e656a360ff36524ce951f5317525d8dfd7d25679461ceb248ba674026cee292a·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">853 deleted,·if·there·is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="5341227230-1">(</span><span·class="p"·data-group-id="5341227230-2">[</span><span·class="mi">100</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·cl[·...·truncated·by·diffoscope;·len:·184,·SHA:·3600bb29ad03b7767686fbcef47757621f345ae1c20acb4b24faf17efc3105cb·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
854 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete_with</span><span·class="p"·data-group-id="5029682214-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5029682214-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="5029682214-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·263,·SHA:·9c34e9936a5d6340a795afb44ae16d7b7f394f7d6fc44e4104569939e0b148d6·...·]-3">)</span><span·class="p">.</span><span·class="gp·unselectable">854 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete_with</span><span·class="p"·data-group-id="5341227230-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5341227230-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="5341227230-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·263,·SHA:·19579254ec6247e78113b4c5ce2b1c59c72a0e558c65b6186a5b9efe2d0e3061·...·]-3">)</span><span·class="p">.</span><span·class="gp·unselectable">
855 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="5029682214-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="5029682214-5">)</span><span·class="p">.</span><span·class="w">855 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="5341227230-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="5341227230-5">)</span><span·class="p">.</span><span·class="w">
856 </span><span·class="p"·data-group-id="5029682214-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4d5ad70406e757beda03ddb3e84e82528d4dc69de213a2983e2692ee4d80b19e·...·]-6">]</span></code></pre>856 </span><span·class="p"·data-group-id="5341227230-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·c2b2d803c02ae4c7969a4ca5a24386987c95900ae9adbe7864811b58a90b5209·...·]-6">]</span></code></pre>
857 ··</section>857 ··</section>
858 </section>858 </section>
859 <section·class="detail"·id="delete_with_r/2">859 <section·class="detail"·id="delete_with_r/2">
  
860 ··<div·class="detail-header">860 ··<div·class="detail-header">
861 ····<a·href="#delete_with_r/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">861 ····<a·href="#delete_with_r/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
862 ······<i·class="ri-link-m"·aria-hidden="true"></i>862 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 885, 18 lines modifiedOffset 885, 18 lines modified
885 ···························Q1·::·<a·href="#t:queue/1">queue</a>(Item),885 ···························Q1·::·<a·href="#t:queue/1">queue</a>(Item),
886 ···························Q2·::·<a·href="#t:queue/1">queue</a>(Item),886 ···························Q2·::·<a·href="#t:queue/1">queue</a>(Item),
887 ···························Item·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>887 ···························Item·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
888 ······</div>888 ······</div>
  
889 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·last·item·for·which·<code·class="inline">Pred</code>·returns·<code·class="inline">true</code>·is889 <p>Returns·a·copy·of·<code·class="inline">Q1</code>·where·the·last·item·for·which·<code·class="inline">Pred</code>·returns·<code·class="inline">true</code>·is
890 deleted,·if·there·is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="1477255585-1">(</span><span·class="p"·data-group-id="1477255585-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·185,·SHA:·f0698520ef95261bb9f87c27fe01babf85220c683961aa40573f9bc4728b27ff·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">890 deleted,·if·there·is·such·an·item.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="3681262844-1">(</span><span·class="p"·data-group-id="3681262844-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·185,·SHA:·552b56043538d8db90b736a00ed163b0df08e5ea9409bdd3c18b2740826539a5·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
891 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete_with</span><span·class="p"·data-group-id="1477255585-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1477255585-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="1477255585-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·265,·SHA:·9c5f6a01550a9567c6fffa9398805162475569c3f8a9480f175f774ae35d49da·...·]-3">)</span><span·class="p">.</span><span·class="gp·unselectable">891 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">delete_with</span><span·class="p"·data-group-id="3681262844-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3681262844-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="3681262844-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·265,·SHA:·42fac35ac21c1fddd7ae868c9df3bd8330ca51d0e80473e3543f3c5afed99b7b·...·]-3">)</span><span·class="p">.</span><span·class="gp·unselectable">
892 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="1477255585-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="1477255585-5">)</span><span·class="p">.</span><span·class="w">892 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="3681262844-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="3681262844-5">)</span><span·class="p">.</span><span·class="w">
893 </span><span·class="p"·data-group-id="1477255585-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·3bcfdbce062323e500f00e8a9f33b9306c0f3ee180489ed996c8c864c4923e6a·...·]-6">]</span></code></pre>893 </span><span·class="p"·data-group-id="3681262844-6">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·081223d2aa07a31b64ba1fd2059e78c8f3ddb49a443d5ccc377d9e1bd38db1e0·...·]-6">]</span></code></pre>
894 ··</section>894 ··</section>
895 </section>895 </section>
896 <section·class="detail"·id="filter/2">896 <section·class="detail"·id="filter/2">
  
897 ··<div·class="detail-header">897 ··<div·class="detail-header">
898 ····<a·href="#filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">898 ····<a·href="#filter/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
899 ······<i·class="ri-link-m"·aria-hidden="true"></i>899 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 917, 27 lines modifiedOffset 917, 27 lines modified
917 ··········<pre·translate="no"><span·class="attribute">-spec</span>·filter(Fun,·Q1·::·<a·href="#t:queue/1">queue</a>(Item))·->·Q2·::·<a·href="#t:queue/1">queue</a>(Item)·when·Fun·::·fun((Item)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()·|·[Item]).</pre>917 ··········<pre·translate="no"><span·class="attribute">-spec</span>·filter(Fun,·Q1·::·<a·href="#t:queue/1">queue</a>(Item))·->·Q2·::·<a·href="#t:queue/1">queue</a>(Item)·when·Fun·::·fun((Item)·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>()·|·[Item]).</pre>
  
918 ······</div>918 ······</div>
  
919 <p>Returns·a·queue·<code·class="inline">Q2</code>·that·is·the·result·of·calling·<code·class="inline">Fun(Item)</code>·on·all·items·in919 <p>Returns·a·queue·<code·class="inline">Q2</code>·that·is·the·result·of·calling·<code·class="inline">Fun(Item)</code>·on·all·items·in
920 <code·class="inline">Q1</code>.</p><p>If·<code·class="inline">Fun(Item)</code>·returns·<code·class="inline">true</code>,·<code·class="inline">Item</code>·is·copied·to·the·result·queue.·If·it920 <code·class="inline">Q1</code>.</p><p>If·<code·class="inline">Fun(Item)</code>·returns·<code·class="inline">true</code>,·<code·class="inline">Item</code>·is·copied·to·the·result·queue.·If·it
921 returns·<code·class="inline">false</code>,·<code·class="inline">Item</code>·is·not·copied.·If·it·returns·a·list,·the·list·elements921 returns·<code·class="inline">false</code>,·<code·class="inline">Item</code>·is·not·copied.·If·it·returns·a·list,·the·list·elements
922 are·inserted·instead·of·<code·class="inline">Item</code>·in·the·result·queue.</p><p><em>Example·1:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="2472937630-1">(</span><span·class="p"·data-group-id="2472937630-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·60a85b6b571ead5980cc54f8500cb19281d87bc79cb9c5c2149696cae073822b·...·]-1">)</span><span·class="p">.</span><span·class="w">922 are·inserted·instead·of·<code·class="inline">Item</code>·in·the·result·queue.</p><p><em>Example·1:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Queue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="1104113983-1">(</span><span·class="p"·data-group-id="1104113983-2">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·134,·SHA:·3a1a03c19f40ca5efa9c24f099819b2bc64d8919b5166213a5a356395e978e91·...·]-1">)</span><span·class="p">.</span><span·class="w">
923 </span><span·class="p"·data-group-id="2472937630-3">{</span><span·class="p"·data-group-id="2472937630-4">[</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2472937630-4">]</span><span[·...·truncated·by·diffoscope;·len:·240,·SHA:·91e3513fb7830500fc055523a4e447192bda975dada3ab7b64c9e2579c1dcf40·...·]-3">}</span><span·class="gp·unselectable">923 </span><span·class="p"·data-group-id="1104113983-3">{</span><span·class="p"·data-group-id="1104113983-4">[</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1104113983-4">]</span><span[·...·truncated·by·diffoscope;·len:·240,·SHA:·5288e30e4cad366c75c781805b58b67dedad099b441d6db381f777cb37a2ce54·...·]-3">}</span><span·class="gp·unselectable">
924 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="2472937630-6">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2472937630-7">(</span><span·class="n">E</span><span·class="p"·data-group-id="2472937630-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·53fabc04c1e9e36e07e4269d6b5e294a1ac3dac8ab7a09396da04c80a67b3156·...·]-6">)</span><span·class="p">.</span><span·class="w">924 2&gt;·</span><span·class="n">Queue1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">filter</span><span·class="p"·data-group-id="1104113983-6">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1104113983-7">(</span><span·class="n">E</span><span·class="p"·data-group-id="1104113983-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·396754c8d32d247753233579b6c3dafca197610a49e177d4a99d585b4a69099b·...·]-6">)</span><span·class="p">.</span><span·class="w">
925 </span><span·class="p"·data-group-id="2472937630-8">{</span><span·class="p"·data-group-id="2472937630-9">[</span><span·class="mi">5</span><span·class="p"·data-group-id="2472937630-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="2472937630-10">[</span><span·class="mi">3</span>[·...·truncated·by·diffoscope;·len:·144,·SHA:·489c9de3e41ca8c03d056d465128cb6ba5092f6ca985bb8029dd09817d17ca0c·...·]-8">}</span><span·class="gp·unselectable">925 </span><span·class="p"·data-group-id="1104113983-8">{</span><span·class="p"·data-group-id="1104113983-9">[</span><span·class="mi">5</span><span·class="p"·data-group-id="1104113983-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="1104113983-10">[</span><span·class="mi">3</span>[·...·truncated·by·diffoscope;·len:·144,·SHA:·76f3bb129031c5a44cb534156ddd04f1a54756acca3f28e81cc4389c9ac3b55f·...·]-8">}</span><span·class="gp·unselectable">
926 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="2472937630-11">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="2472937630-11">)</span><span·class="p">.</span><span·class="w">926 3&gt;·</span><span·class="nc">queue</span><span·class="p">:</span><span·class="nf">to_list</span><span·class="p"·data-group-id="1104113983-11">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="1104113983-11">)</span><span·class="p">.</span><span·class="w">
927 </span><span·class="p"·data-group-id="2472937630-12">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="2472937630-12">]</span></code></pre><p>So,·<code·class="inline">Fun(Item)</code>·returning·<code·class="inline">[Item]</code>·is·thereby·semantically·equivalent·to927 </span><span·class="p"·data-group-id="1104113983-12">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="1104113983-12">]</span></code></pre><p>So,·<code·class="inline">Fun(Item)</code>·returning·<code·class="inline">[Item]</code>·is·thereby·semantically·equivalent·to
928 returning·<code·class="inline">true</code>,·just·as·returning·<code·class="inline">[]</code>·is·semantically·equivalent·to·returning928 returning·<code·class="inline">true</code>,·just·as·returning·<code·class="inline">[]</code>·is·semantically·equivalent·to·returning
Max diff block lines reached; 116442/163025 bytes (71.43%) of diff not shown.
28.2 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/rand.html
    
Offset 197, 32 lines modifiedOffset 197, 32 lines modified
197 or·be·an·explicit·argument·and·return·value.</p><p>The·functions·with·implicit·state·operates·on·a·state·stored197 or·be·an·explicit·argument·and·return·value.</p><p>The·functions·with·implicit·state·operates·on·a·state·stored
198 in·the·process·dictionary·under·the·key·<code·class="inline">rand_seed</code>.··If·that·key198 in·the·process·dictionary·under·the·key·<code·class="inline">rand_seed</code>.··If·that·key
199 doesn't·exist·when·the·function·is·called,·<a·href="#seed/1"><code·class="inline">seed/1</code></a>·is·called·automatically199 doesn't·exist·when·the·function·is·called,·<a·href="#seed/1"><code·class="inline">seed/1</code></a>·is·called·automatically
200 with·the·<a·href="#default-algorithm"><em>default·algorithm</em></a>·and·creates200 with·the·<a·href="#default-algorithm"><em>default·algorithm</em></a>·and·creates
201 a·reasonably·unpredictable·seed.</p><p>The·functions·with·explicit·state·don't·use·the·process·dictionary.</p><h4><em>Examples</em></h4><p>Simple·use;·create·and·seed·the201 a·reasonably·unpredictable·seed.</p><p>The·functions·with·explicit·state·don't·use·the·process·dictionary.</p><h4><em>Examples</em></h4><p>Simple·use;·create·and·seed·the
202 <a·href="#default-algorithm"><em>default·algorithm</em></a>·with·a·non-fixed·seed,202 <a·href="#default-algorithm"><em>default·algorithm</em></a>·with·a·non-fixed·seed,
203 if·not·already·done,·and·generate·two·uniformly·distibuted203 if·not·already·done,·and·generate·two·uniformly·distibuted
204 floating·point·numbers.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">R0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="6581171859-1">(</span><span·class="p"·data-group-id="6581171859-1">)</span><span·class="p">,</span><span·class="w">204 floating·point·numbers.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">R0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="2447013733-1">(</span><span·class="p"·data-group-id="2447013733-1">)</span><span·class="p">,</span><span·class="w">
205 </span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="6581171859-2">(</span><span·class="p"·data-group-id="6581171859-2">)</span><span·class="p">,</span></code></pre><p>Use·a·specified·algorithm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o"[·...·truncated·by·diffoscope;·len:·240,·SHA:·eca7c42c6627870438b046123b13b2de297102b658dec3ce16740742bb0c2ccc·...·]-1">)</span><span·class="p">,</span><span·class="w">205 </span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="2447013733-2">(</span><span·class="p"·data-group-id="2447013733-2">)</span><span·class="p">,</span></code></pre><p>Use·a·specified·algorithm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o"[·...·truncated·by·diffoscope;·len:·240,·SHA:·cc2d3f3e2bc2eb964f7415b6ded36fc492c93ffba97ea833bbc20db5587a6f54·...·]-1">)</span><span·class="p">,</span><span·class="w">
206 </span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="6535055618-2">(</span><span·class="p"·data-group-id="6535055618-2">)</span><span·class="p">,</span></code></pre><p>Use·a·specified·algorithm·with·a·fixed·seed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·595,·SHA:·a6e1be5fa0df16e35a871e9ada979cfa23154b257cfe1d54b6a6ef052074d9e4·...·]-1">)</span><span·class="p">,</span><span·class="w">206 </span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="7862521662-2">(</span><span·class="p"·data-group-id="7862521662-2">)</span><span·class="p">,</span></code></pre><p>Use·a·specified·algorithm·with·a·fixed·seed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·595,·SHA:·e0734251087afd0c682285e2bf67f3396c846f5f71ec09f88694fc9aa9cc22d6·...·]-1">)</span><span·class="p">,</span><span·class="w">
207 </span><span·class="n">R3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="4837895416-3">(</span><span·class="p"·data-group-id="4837895416-3">)</span><span·class="p">,</span></code></pre><p>Use·the·functional·API·with·a·non-fixed·seed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">S0</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·258,·SHA:·63f09a8b1c15b8389ef5f2c63e60ef16cf9373358477ae2219f2353e5bdee0c1·...·]-1">)</span><span·class="p">,</span><span·class="w">207 </span><span·class="n">R3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="5453697768-3">(</span><span·class="p"·data-group-id="5453697768-3">)</span><span·class="p">,</span></code></pre><p>Use·the·functional·API·with·a·non-fixed·seed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">S0</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·258,·SHA:·29ea72caa7ee590bb7b67e4329171a37497017bef159ad377e3ffb2909c851b6·...·]-1">)</span><span·class="p">,</span><span·class="w">
208 </span><span·class="p"·data-group-id="5298457043-2">{</span><span·class="n">R4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S1</span><span·class="p"·data-group-id="5298457043-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·654,·SHA:·a519c7f800fef2d15390c2c4c4d69be322b2e917ca3a69555955634cb06c01d6·...·]-1">)</span><span·class="p">,</span><span·class="w">208 </span><span·class="p"·data-group-id="9237877097-2">{</span><span·class="n">R4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S1</span><span·class="p"·data-group-id="9237877097-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·654,·SHA:·fd590fa25851343328b0df1e43900328e6244fb2ffe258d09a28d2bd85ad234b·...·]-1">)</span><span·class="p">,</span><span·class="w">
209 </span><span·class="n">R6</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="1704657269-2">(</span><span·class="p"·data-group-id="1704657269-2">)</span><span·class="p">,</span><span·class="w">209 </span><span·class="n">R6</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="4131808067-2">(</span><span·class="p"·data-group-id="4131808067-2">)</span><span·class="p">,</span><span·class="w">
210 </span><span·class="n">SND0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">math</span><span·class="p">:</span><span·class="nf">sqrt</span><span·class="p"·data-group-id="1704657269-3">(</span><span·class="o">-</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nc">math</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="170[·...·truncated·by·diffoscope;·len:·2113,·SHA:·bc989ab3d49641f0619bc0c5cbaca11d07e94d780917e6b4f0816f2c37cf0fbe·...·]-2">)</span><span·class="p">,</span></code></pre><h4>Quality·of·the·Generated·Numbers</h4><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·builtin·random·number·generator·algorithms·are·not·cryptographically210 </span><span·class="n">SND0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">math</span><span·class="p">:</span><span·class="nf">sqrt</span><span·class="p"·data-group-id="4131808067-3">(</span><span·class="o">-</span><span·class="mi">2</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="nc">math</span><span·class="p">:</span><span·class="nf">log</span><span·class="p"·data-group-id="413[·...·truncated·by·diffoscope;·len:·2113,·SHA:·a2ae2ba270b73331ba17ed3f45f635f1ab37e4b21bb7065a76afc61c7e012935·...·]-2">)</span><span·class="p">,</span></code></pre><h4>Quality·of·the·Generated·Numbers</h4><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·builtin·random·number·generator·algorithms·are·not·cryptographically
211 strong.·If·a·cryptographically·strong·random·number·generator·is·needed,211 strong.·If·a·cryptographically·strong·random·number·generator·is·needed,
212 use·something·like·<a·href="../../../../lib/crypto-5.5.2/doc/html/crypto.html#rand_seed/0"><code·class="inline">crypto:rand_seed/0</code></a>.</p></section><p>For·all·these·generators·except·<code·class="inline">exro928ss</code>·and·<code·class="inline">exsss</code>·the·lowest·bit(s)212 use·something·like·<a·href="../../../../lib/crypto-5.5.2/doc/html/crypto.html#rand_seed/0"><code·class="inline">crypto:rand_seed/0</code></a>.</p></section><p>For·all·these·generators·except·<code·class="inline">exro928ss</code>·and·<code·class="inline">exsss</code>·the·lowest·bit(s)
213 have·got·a·slightly·less·random·behaviour·than·all·other·bits.213 have·got·a·slightly·less·random·behaviour·than·all·other·bits.
214 1·bit·for·<code·class="inline">exrop</code>·(and·<code·class="inline">exsp</code>),·and·3·bits·for·<code·class="inline">exs1024s</code>.·See·for·example214 1·bit·for·<code·class="inline">exrop</code>·(and·<code·class="inline">exsp</code>),·and·3·bits·for·<code·class="inline">exs1024s</code>.·See·for·example
215 this·explanation·in·the215 this·explanation·in·the
216 <a·href="http://xoroshiro.di.unimi.it/xoroshiro128plus.c">Xoroshiro128+</a>216 <a·href="http://xoroshiro.di.unimi.it/xoroshiro128plus.c">Xoroshiro128+</a>
217 generator·source·code:</p><blockquote><p>Beside·passing·BigCrush,·this·generator·passes·the·PractRand·test·suite217 generator·source·code:</p><blockquote><p>Beside·passing·BigCrush,·this·generator·passes·the·PractRand·test·suite
218 up·to·(and·included)·16TB,·with·the·exception·of·binary·rank·tests,218 up·to·(and·included)·16TB,·with·the·exception·of·binary·rank·tests,
219 which·fail·due·to·the·lowest·bit·being·an·LFSR;·all·other·bits·pass·all219 which·fail·due·to·the·lowest·bit·being·an·LFSR;·all·other·bits·pass·all
220 tests.·We·suggest·to·use·a·sign·test·to·extract·a·random·Boolean·value.</p></blockquote><p>If·this·is·a·problem;·to·generate·a·boolean·with·these·algorithms,220 tests.·We·suggest·to·use·a·sign·test·to·extract·a·random·Boolean·value.</p></blockquote><p>If·this·is·a·problem;·to·generate·a·boolean·with·these·algorithms,
221 use·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1402927740-1">(</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="1402927740-2">(</span><span·class="mi">256</span><span·class="p"·data-group-id="1402927740-2">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·2110,·SHA:·547945a2a8753fed2e91b3220505c57140be87639a24f8868810563006543d72·...·]-1">)</span></code></pre><p>The·floating·point·generating·functions·in·this·module·waste·the·lowest·bits221 use·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5512613434-1">(</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="5512613434-2">(</span><span·class="mi">256</span><span·class="p"·data-group-id="5512613434-2">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·2110,·SHA:·1d6f3d73b90762f4a87788283768104bf7fd9759fb6254f659730cf31c399a8d·...·]-1">)</span></code></pre><p>The·floating·point·generating·functions·in·this·module·waste·the·lowest·bits
222 when·converting·from·an·integer·so·they·avoid·this·snag.</p><h2·id="module-niche-algorithms"·class="section-heading">222 when·converting·from·an·integer·so·they·avoid·this·snag.</p><h2·id="module-niche-algorithms"·class="section-heading">
223 ··<a·href="#module-niche-algorithms"·class="hover-link">223 ··<a·href="#module-niche-algorithms"·class="hover-link">
224 ····<i·class="ri-link-m"·aria-hidden="true"></i>224 ····<i·class="ri-link-m"·aria-hidden="true"></i>
225 ··</a>225 ··</a>
226 ··<span·class="text"><a·href=""·id="niche-algorithms"></a>·Niche·algorithms</span>226 ··<span·class="text"><a·href=""·id="niche-algorithms"></a>·Niche·algorithms</span>
227 </h2>227 </h2>
228 <p>The·<a·href="#niche-algorithms-api">niche·algorithms·API</a>·contains228 <p>The·<a·href="#niche-algorithms-api">niche·algorithms·API</a>·contains
Offset 1871, 18 lines modifiedOffset 1871, 18 lines modified
  
1871 <p>Generate·a·uniformly·distributed·random·number·<code·class="inline">0.0 =&lt; X &lt; 1.0</code>.</p><p>From·the·specified·<code·class="inline">State</code>,·generates·a·random·number·<code·class="inline">X ::</code> <a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:float/0"><code·class="inline">float/0</code></a>,1871 <p>Generate·a·uniformly·distributed·random·number·<code·class="inline">0.0 =&lt; X &lt; 1.0</code>.</p><p>From·the·specified·<code·class="inline">State</code>,·generates·a·random·number·<code·class="inline">X ::</code> <a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:float/0"><code·class="inline">float/0</code></a>,
1872 uniformly·distributed·in·the·value·range·<code·class="inline">0.0·=&lt;·X·&lt;·1.0</code>.1872 uniformly·distributed·in·the·value·range·<code·class="inline">0.0·=&lt;·X·&lt;·1.0</code>.
1873 Returns·the·number·<code·class="inline">X</code>·and·the·updated·<code·class="inline">NewState</code>.</p><p>The·generated·numbers·are·on·the·form·<code·class="inline">N * 2.0^(-53)</code>,·that·is;1873 Returns·the·number·<code·class="inline">X</code>·and·the·updated·<code·class="inline">NewState</code>.</p><p>The·generated·numbers·are·on·the·form·<code·class="inline">N * 2.0^(-53)</code>,·that·is;
1874 equally·spaced·in·the·interval.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>This·function·may·return·exactly·<code·class="inline">0.0</code>·which·can·be·fatal·for·certain1874 equally·spaced·in·the·interval.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>This·function·may·return·exactly·<code·class="inline">0.0</code>·which·can·be·fatal·for·certain
1875 applications.·If·that·is·undesired·you·can·use·<code·class="inline">(1.0 - rand:uniform())</code>1875 applications.·If·that·is·undesired·you·can·use·<code·class="inline">(1.0 - rand:uniform())</code>
1876 to·get·the·interval·<code·class="inline">0.0 &lt; X =&lt; 1.0</code>,·or·instead·use·<a·href="#uniform_real/0"><code·class="inline">uniform_real/0</code></a>.</p><p>If·neither·endpoint·is·desired·you·can·achieve·the·range1876 to·get·the·interval·<code·class="inline">0.0 &lt; X =&lt; 1.0</code>,·or·instead·use·<a·href="#uniform_real/0"><code·class="inline">uniform_real/0</code></a>.</p><p>If·neither·endpoint·is·desired·you·can·achieve·the·range
1877 <code·class="inline">0.0 &lt; X &lt; 1.0</code>·using·test·and·re-try·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_uniform</span><span·class="p"·data-group-id="3401074083-1">(</span><span·class="p"·data-group-id="3401074083-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1877 <code·class="inline">0.0 &lt; X &lt; 1.0</code>·using·test·and·re-try·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_uniform</span><span·class="p"·data-group-id="9375192712-1">(</span><span·class="p"·data-group-id="9375192712-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1878 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="3401074083-2">(</span><span·class="p"·data-group-id="3401074083-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">1878 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="9375192712-2">(</span><span·class="p"·data-group-id="9375192712-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1879 ········</span><span·class="n">X</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="mf">0.0</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="p">;</span><span·class="w">1879 ········</span><span·class="n">X</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="mf">0.0</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="w">·</span><span·class="n">X</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">X</span><span·class="p">;</span><span·class="w">
1880 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">my_uniform</span><span·class="p"·data-group-id="3401074083-3">(</span><span·class="p"·data-group-id="3401074083-3">)</span><span·class="w">1880 ········</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">my_uniform</span><span·class="p"·data-group-id="9375192712-3">(</span><span·class="p"·data-group-id="9375192712-3">)</span><span·class="w">
1881 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre></section>1881 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre></section>
1882 ··</section>1882 ··</section>
1883 </section>1883 </section>
1884 <section·class="detail"·id="uniform_s/2">1884 <section·class="detail"·id="uniform_s/2">
  
1885 ··<div·class="detail-header">1885 ··<div·class="detail-header">
1886 ····<a·href="#uniform_s/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1886 ····<a·href="#uniform_s/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 2027, 15 lines modifiedOffset 2027, 15 lines modified
2027 a·new·state·<a·href="#t:mwc59_state/0"><code·class="inline">CX1</code></a>,·according·to·a·Multiply·With·Carry2027 a·new·state·<a·href="#t:mwc59_state/0"><code·class="inline">CX1</code></a>,·according·to·a·Multiply·With·Carry
2028 generator,·which·is·an·efficient·implementation·of2028 generator,·which·is·an·efficient·implementation·of
2029 a·Multiplicative·Congruential·Generator·with·a·power·of·2·multiplier2029 a·Multiplicative·Congruential·Generator·with·a·power·of·2·multiplier
2030 and·a·prime·modulus.</p><p>This·generator·uses·the·multiplier·<code·class="inline">2^32</code>·and·the·modulus2030 and·a·prime·modulus.</p><p>This·generator·uses·the·multiplier·<code·class="inline">2^32</code>·and·the·modulus
2031 <code·class="inline">16#7fa6502 * 2^32 - 1</code>,·which·have·been·selected,·in·collaboration·with2031 <code·class="inline">16#7fa6502 * 2^32 - 1</code>,·which·have·been·selected,·in·collaboration·with
2032 Sebastiano·Vigna,·to·avoid·bignum·operations·and·still·get2032 Sebastiano·Vigna,·to·avoid·bignum·operations·and·still·get
2033 good·statistical·quality.·It·has·been·named·&quot;MWC59&quot;·and·can·be·written·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">C</span><span·class="err"> </span><span·class="o">=</span><span·class="err"> </span><span·class="n">CX0</span><span·class="err"> </span><span·class="ow">bsr</span><span·class="err"> </span><span·class="mi">32</span><span·class="w">2033 good·statistical·quality.·It·has·been·named·&quot;MWC59&quot;·and·can·be·written·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">C</span><span·class="err"> </span><span·class="o">=</span><span·class="err"> </span><span·class="n">CX0</span><span·class="err"> </span><span·class="ow">bsr</span><span·class="err"> </span><span·class="mi">32</span><span·class="w">
2034 </span><span·class="n">X</span><span·class="err"> </span><span·class="o">=</span><span·class="err"> </span><span·class="n">CX0</span><span·class="err"> </span><span·class="ow">band</span><span·class="err"> </span><span·class="p"·data-group-id="4400020225-1">(</span><span·class="p"·data-group-id="4400020225-2">(</span><span·class="mi">1</span><span·class="err"> </span><span·class="ow">bsl</span><span·class="err"> </span><span·class="mi">32</span><span·class="p"·data-group-id="4400020225-2">)</spa[·...·truncated·by·diffoscope;·len:·92,·SHA:·1f2179adbeafbf3133ab4f77748cb301af4d2c8f97bd64a8cdb0d28a27194318·...·]-1">)</span><span·class="p">)</span><span·class="w">2034 </span><span·class="n">X</span><span·class="err"> </span><span·class="o">=</span><span·class="err"> </span><span·class="n">CX0</span><span·class="err"> </span><span·class="ow">band</span><span·class="err"> </span><span·class="p"·data-group-id="7811747212-1">(</span><span·class="p"·data-group-id="7811747212-2">(</span><span·class="mi">1</span><span·class="err"> </span><span·class="ow">bsl</span><span·class="err"> </span><span·class="mi">32</span><span·class="p"·data-group-id="7811747212-2">)</spa[·...·truncated·by·diffoscope;·len:·92,·SHA:·154d0eb93c9599aef1e68b882e3ac1b09f14c08e3d3d47ad98ce7f8de0288836·...·]-1">)</span><span·class="p">)</span><span·class="w">
2035 </span><span·class="n">CX1</span><span·class="err"> </span><span·class="o">=</span><span·class="err"> </span><span·class="mi">16#7fa6502</span><span·class="err"> </span><span·class="o">*</span><span·class="err"> </span><span·class="n">X</span><span·class="err"> </span><span·class="o">+</span><span·class="err"> </span><span·class="n">C</span></code></pre><p>Because·the·generator·uses·a·multiplier·that·is·a·power·of·2·it·gets2035 </span><span·class="n">CX1</span><span·class="err"> </span><span·class="o">=</span><span·class="err"> </span><span·class="mi">16#7fa6502</span><span·class="err"> </span><span·class="o">*</span><span·class="err"> </span><span·class="n">X</span><span·class="err"> </span><span·class="o">+</span><span·class="err"> </span><span·class="n">C</span></code></pre><p>Because·the·generator·uses·a·multiplier·that·is·a·power·of·2·it·gets
2036 statistical·flaws·for·collision·tests·and·birthday·spacings·tests2036 statistical·flaws·for·collision·tests·and·birthday·spacings·tests
2037 in·2·and·3·dimensions,·and·these·caveats·apply·even·when·looking2037 in·2·and·3·dimensions,·and·these·caveats·apply·even·when·looking
2038 only·at·the·MWC·&quot;digit&quot;,·that·is·the·low·32·bits·(the·multiplier)2038 only·at·the·MWC·&quot;digit&quot;,·that·is·the·low·32·bits·(the·multiplier)
2039 of·the·generator·state.··The·higher·bits·of·the·state·are·worse.</p><p>The·quality·of·the·output·value·improves·much·by·using·a·scrambler,2039 of·the·generator·state.··The·higher·bits·of·the·state·are·worse.</p><p>The·quality·of·the·output·value·improves·much·by·using·a·scrambler,
2040 instead·of·just·taking·the·low·bits.2040 instead·of·just·taking·the·low·bits.
2041 Function·<a·href="#mwc59_value32/1"><code·class="inline">mwc59_value32</code></a>·is·a·fast·scrambler2041 Function·<a·href="#mwc59_value32/1"><code·class="inline">mwc59_value32</code></a>·is·a·fast·scrambler
4.27 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/random.html
    
Offset 458, 17 lines modifiedOffset 458, 17 lines modified
458 ······<div·class="specs">458 ······<div·class="specs">
  
459 ··········<pre·translate="no"><span·class="attribute">-spec</span>·seed(A1,·A2,·A3)·->·undefined·|·<a·href="#t:ran/0">ran</a>()·when·A1·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>().</pre>459 ··········<pre·translate="no"><span·class="attribute">-spec</span>·seed(A1,·A2,·A3)·->·undefined·|·<a·href="#t:ran/0">ran</a>()·when·A1·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:integer/0">integer</a>().</pre>
  
460 ······</div>460 ······</div>
  
461 <p>Seeds·random·number·generation·with·integer·values·in·the·process·dictionary·and461 <p>Seeds·random·number·generation·with·integer·values·in·the·process·dictionary·and
462 returns·the·old·state.</p><p>The·following·is·an·easy·way·of·obtaining·a·unique·value·to·seed·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">random</span><span·class="p">:</span><span·class="nf">seed</span><span·class="p"·data-group-id="4216360748-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="4216360748-2">(</span><span·class="p"·data-group-id="4216360748-3">[</span><span·class="nf">node</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·0e49fbe438279ece9ab97de56965b166de2d013e69a6b0107e327cfb0e78d4a0·...·]-2">)</span><span·class="p">,</span><span·class="w">462 returns·the·old·state.</p><p>The·following·is·an·easy·way·of·obtaining·a·unique·value·to·seed·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">random</span><span·class="p">:</span><span·class="nf">seed</span><span·class="p"·data-group-id="9904519912-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="9904519912-2">(</span><span·class="p"·data-group-id="9904519912-3">[</span><span·class="nf">node</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·b5212b855858aa7af60e9b5d759ae134ab643ce810b7a1eac13e8835ae57c04c·...·]-2">)</span><span·class="p">,</span><span·class="w">
463 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="4216360748-5">(</span><span·class="p"·data-group-id="4216360748-5">)</span><span·class="p">,</span><span·class="w">463 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">monotonic_time</span><span·class="p"·data-group-id="9904519912-5">(</span><span·class="p"·data-group-id="9904519912-5">)</span><span·class="p">,</span><span·class="w">
464 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">unique_integer</span><span·class="p"·data-group-id="4216360748-6">(</span><span·class="p"·data-group-id="4216360748-6">)</span><span·class="p"·data-group-id="4216360748-1">)</span></code></pre><p>For·details,·see·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#monotonic_time/0"><code·class="inline">erlang:monotonic_time/0</code></a>,464 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">unique_integer</span><span·class="p"·data-group-id="9904519912-6">(</span><span·class="p"·data-group-id="9904519912-6">)</span><span·class="p"·data-group-id="9904519912-1">)</span></code></pre><p>For·details,·see·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#monotonic_time/0"><code·class="inline">erlang:monotonic_time/0</code></a>,
465 and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>465 and·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>
466 ··</section>466 ··</section>
467 </section>467 </section>
468 <section·class="detail"·id="uniform/0">468 <section·class="detail"·id="uniform/0">
  
469 ··<div·class="detail-header">469 ··<div·class="detail-header">
470 ····<a·href="#uniform/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">470 ····<a·href="#uniform/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
114 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/re.html
    
Offset 1371, 17 lines modifiedOffset 1371, 17 lines modified
1371 been·passed,·<a·href="#run/2"><code·class="inline">run/2,3</code></a>·is·committed·to·find·a·match·at·the·current1371 been·passed,·<a·href="#run/2"><code·class="inline">run/2,3</code></a>·is·committed·to·find·a·match·at·the·current
1372 starting·point,·or·not·at·all,·for·example:</p><pre><code·class="text">a+(*COMMIT)b</code></pre><p>This·matches·&quot;xxaab&quot;·but·not·&quot;aacaab&quot;.·It·can·be·thought·of·as·a·kind·of·dynamic1372 starting·point,·or·not·at·all,·for·example:</p><pre><code·class="text">a+(*COMMIT)b</code></pre><p>This·matches·&quot;xxaab&quot;·but·not·&quot;aacaab&quot;.·It·can·be·thought·of·as·a·kind·of·dynamic
1373 anchor,·or·&quot;I've·started,·so·I·must·finish&quot;.·The·name·of·the·most·recently1373 anchor,·or·&quot;I've·started,·so·I·must·finish&quot;.·The·name·of·the·most·recently
1374 passed·(<em>MARK)·in·the·path·is·passed·back·when·(</em>COMMIT)·forces·a·match·failure.</p><p>If·more·than·one·backtracking·verb·exists·in·a·pattern,·a·different·one·that1374 passed·(<em>MARK)·in·the·path·is·passed·back·when·(</em>COMMIT)·forces·a·match·failure.</p><p>If·more·than·one·backtracking·verb·exists·in·a·pattern,·a·different·one·that
1375 follows·(<em>COMMIT)·can·be·triggered·first,·so·merely·passing·(</em>COMMIT)·during·a1375 follows·(<em>COMMIT)·can·be·triggered·first,·so·merely·passing·(</em>COMMIT)·during·a
1376 match·does·not·always·guarantee·that·a·match·must·be·at·this·starting·point.</p><p>Notice·that·(*COMMIT)·at·the·start·of·a·pattern·is·not·the·same·as·an·anchor,1376 match·does·not·always·guarantee·that·a·match·must·be·at·this·starting·point.</p><p>Notice·that·(*COMMIT)·at·the·start·of·a·pattern·is·not·the·same·as·an·anchor,
1377 unless·the·PCRE·start-of-match·optimizations·are·turned·off,·as·shown·in·the1377 unless·the·PCRE·start-of-match·optimizations·are·turned·off,·as·shown·in·the
1378 following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="7143036727-1">(</span><span·class="s">&quot;xyzabc&quot;</span><span·class="p">,</span><span·class="s">&quot;(*COMMIT)abc&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7143036727-2">[</span><span·class="p"·data-group-id="7143036727-3">[·...·truncated·by·diffoscope;·len:·288,·SHA:·d9fa5ecd9e2009ae8dfa855ee528e2c0e5fa71a12086db1b50da108f897ede9d·...·]7-1">)</span><span·class="p">.</span><span·class="w">1378 following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="9093983307-1">(</span><span·class="s">&quot;xyzabc&quot;</span><span·class="p">,</span><span·class="s">&quot;(*COMMIT)abc&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9093983307-2">[</span><span·class="p"·data-group-id="9093983307-3">[·...·truncated·by·diffoscope;·len:·288,·SHA:·99edfed5a7b0c078c0bbdd92797ae971c8dda634f92cef075e546b27f214e186·...·]7-1">)</span><span·class="p">.</span><span·class="w">
1379 </span><span·class="p"·data-group-id="7143036727-4">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="7143036727-5">[</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="7143036727-5">]</span><span·class="p"·data-group-id="714303[·...·truncated·by·diffoscope;·len:·3,·SHA:·12f26af0dcdfae8fe4331d6a4c369edd549220cdeb119b3b1831b2a2cf77f281·...·]7-4">}</span><span·class="gp·unselectable">1379 </span><span·class="p"·data-group-id="9093983307-4">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="9093983307-5">[</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="9093983307-5">]</span><span·class="p"·data-group-id="909398[·...·truncated·by·diffoscope;·len:·3,·SHA:·5426d2ca50f244fb43fe9eafc82da08f33f3b4f8d9140802bd0102e780b629d6·...·]7-4">}</span><span·class="gp·unselectable">
1380 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="7143036727-6">(</span><span·class="s">&quot;xyzabc&quot;</span><span·class="p">,</span><span·class="s">&quot;(*COMMIT)abc&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7143036727-7">[</span><span·class="p"·data-group-id="7143036727-8">[·...·truncated·by·diffoscope;·len:·353,·SHA:·fe3531fa9417172f1c1919cb8818d53f5db0ac458a0c8ed8e916f9e2d4564c42·...·]7-6">)</span><span·class="p">.</span><span·class="w">1380 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="9093983307-6">(</span><span·class="s">&quot;xyzabc&quot;</span><span·class="p">,</span><span·class="s">&quot;(*COMMIT)abc&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9093983307-7">[</span><span·class="p"·data-group-id="9093983307-8">[·...·truncated·by·diffoscope;·len:·353,·SHA:·5095dd4197f1e6fbbc095fd744e2ab4d21e6e66b37f4fb55aaf3b5ba3781ea80·...·]7-6">)</span><span·class="p">.</span><span·class="w">
1381 </span><span·class="ss">nomatch</span></code></pre><p>For·this·pattern,·PCRE·knows·that·any·match·must·start·with·&quot;a&quot;,·so·the1381 </span><span·class="ss">nomatch</span></code></pre><p>For·this·pattern,·PCRE·knows·that·any·match·must·start·with·&quot;a&quot;,·so·the
1382 optimization·skips·along·the·subject·to·&quot;a&quot;·before·applying·the·pattern·to·the1382 optimization·skips·along·the·subject·to·&quot;a&quot;·before·applying·the·pattern·to·the
1383 first·set·of·data.·The·match·attempt·then·succeeds.·In·the·second·call·the1383 first·set·of·data.·The·match·attempt·then·succeeds.·In·the·second·call·the
1384 <code·class="inline">no_start_optimize</code>·disables·the·optimization·that·skips·along·to·the·first1384 <code·class="inline">no_start_optimize</code>·disables·the·optimization·that·skips·along·to·the·first
1385 character.·The·pattern·is·now·applied·starting·at·&quot;x&quot;,·and·so·the·(*COMMIT)1385 character.·The·pattern·is·now·applied·starting·at·&quot;x&quot;,·and·so·the·(*COMMIT)
1386 causes·the·match·to·fail·without·trying·any·other·starting·points.</p><p>The·following·verb·causes·the·match·to·fail·at·the·current·starting·position·in1386 causes·the·match·to·fail·without·trying·any·other·starting·points.</p><p>The·following·verb·causes·the·match·to·fail·at·the·current·starting·position·in
1387 the·subject·if·there·is·a·later·matching·failure·that·causes·backtracking·to1387 the·subject·if·there·is·a·later·matching·failure·that·causes·backtracking·to
Offset 2084, 40 lines modifiedOffset 2084, 40 lines modified
  
2084 ··········<pre·translate="no"><span·class="attribute">-spec</span>·inspect(MP,·Item)·->·{namelist,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()]}·when·MP·::·<a·href="#t:mp/0">mp</a>(),·Item·::·namelist.</pre>2084 ··········<pre·translate="no"><span·class="attribute">-spec</span>·inspect(MP,·Item)·->·{namelist,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:binary/0">binary</a>()]}·when·MP·::·<a·href="#t:mp/0">mp</a>(),·Item·::·namelist.</pre>
  
2085 ······</div>2085 ······</div>
  
2086 <p>Takes·a·compiled·regular·expression·and·an·item,·and·returns·the·relevant·data2086 <p>Takes·a·compiled·regular·expression·and·an·item,·and·returns·the·relevant·data
2087 from·the·regular·expression.</p><p>The·only·supported·item·is·<code·class="inline">namelist</code>,·which·returns·the·tuple·<code·class="inline">{namelist,·[binary()]}</code>,2087 from·the·regular·expression.</p><p>The·only·supported·item·is·<code·class="inline">namelist</code>,·which·returns·the·tuple·<code·class="inline">{namelist,·[binary()]}</code>,
2088 containing·the·names·of·all·(unique)·named·subpatterns·in·the·regular·expression.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="9956865145-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="9956865145-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span·cl[·...·truncated·by·diffoscope;·len:·216,·SHA:·ca81b22b80555afb04b76a32fb76f51dcb5c9accf020800b098332e60c456606·...·]5-2">)</span><span·class="p">.</span><span·class="w">2088 containing·the·names·of·all·(unique)·named·subpatterns·in·the·regular·expression.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="3393692985-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="3393692985-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span·cl[·...·truncated·by·diffoscope;·len:·216,·SHA:·234fc55ed3538e2a3a1db5044044d7ab8706e6e1bf861cf84d2523ab7d99cb8d·...·]5-2">)</span><span·class="p">.</span><span·class="w">
2089 </span><span·class="p"·data-group-id="9956865145-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9956865145-4">{</span><span·class="ss">re_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">2089 </span><span·class="p"·data-group-id="3393692985-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3393692985-4">{</span><span·class="ss">re_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
2090 ················</span><span·class="p"·data-group-id="9956865145-5">&lt;&lt;</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="w">2090 ················</span><span·class="p"·data-group-id="3393692985-5">&lt;&lt;</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="w">
2091 ··················</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9956865145-5">&gt;&gt;</span><span·class="p"·data-group-id="9956865145-4">}</span><span·class="p"·data-group-id="9956865145-3">}</span><span·class="gp·unselectable">2091 ··················</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3393692985-5">&gt;&gt;</span><span·class="p"·data-group-id="3393692985-4">}</span><span·class="p"·data-group-id="3393692985-3">}</span><span·class="gp·unselectable">
2092 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="9956865145-6">(</span><span·class="n">MP</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="9956865145-6">)</span><span·class="p">.</span><span·class="w">2092 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="3393692985-6">(</span><span·class="n">MP</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="3393692985-6">)</span><span·class="p">.</span><span·class="w">
2093 </span><span·class="p"·data-group-id="9956865145-7">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="9956865145-8">[</span><span·class="p"·data-group-id="9956865145-9">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·488,·SHA:·c0b2cbd06c3baad2eee1a91971947207d486aef1f9f5feb2e5eaac7c53c7ed6f·...·]5-7">}</span><span·class="gp·unselectable">2093 </span><span·class="p"·data-group-id="3393692985-7">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="3393692985-8">[</span><span·class="p"·data-group-id="3393692985-9">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·488,·SHA:·9cc58e57d16da2a9d86f1fc4813be0f5dd4d8b14074570eafe8247dbcc6e6988·...·]5-7">}</span><span·class="gp·unselectable">
2094 3&gt;·</span><span·class="p"·data-group-id="9956865145-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MPD</span><span·class="p"·data-group-id="9956865145-12">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span[·...·truncated·by·diffoscope;·len:·384,·SHA:·7acd581b93cebc192d4a7f8f58afc8d948559e61ed5e9ef35cedbb62dcf7f0c1·...·]5-13">)</span><span·class="p">.</span><span·class="w">2094 3&gt;·</span><span·class="p"·data-group-id="3393692985-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MPD</span><span·class="p"·data-group-id="3393692985-12">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span[·...·truncated·by·diffoscope;·len:·384,·SHA:·e2fdc80baa8820ac54c4ae3bdb2346abcdd9c468f2e24ed6086a91081a08722c·...·]5-13">)</span><span·class="p">.</span><span·class="w">
2095 </span><span·class="p"·data-group-id="9956865145-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9956865145-16">{</span><span·class="ss">re_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">2095 </span><span·class="p"·data-group-id="3393692985-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3393692985-16">{</span><span·class="ss">re_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
2096 ················</span><span·class="p"·data-group-id="9956865145-17">&lt;&lt;</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="w">2096 ················</span><span·class="p"·data-group-id="3393692985-17">&lt;&lt;</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="w">
2097 ··················</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9956865145-17">&gt;&gt;</span><span·class="p"·data-group-id="9956865145-16">}</span><span·class="p"·data-group-id="9956865145-15">}</span><span·class="gp·unselectable">2097 ··················</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3393692985-17">&gt;&gt;</span><span·class="p"·data-group-id="3393692985-16">}</span><span·class="p"·data-group-id="3393692985-15">}</span><span·class="gp·unselectable">
2098 4&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="9956865145-18">(</span><span·class="n">MPD</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="9956865145-18">)</span><span·class="p">.</span><span·class="w">2098 4&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="3393692985-18">(</span><span·class="n">MPD</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="3393692985-18">)</span><span·class="p">.</span><span·class="w">
2099 </span><span·class="p"·data-group-id="9956865145-19">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="9956865145-20">[</span><span·class="p"·data-group-id="9956865145-21">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·311,·SHA:·c7395709ea794cba322e9f7e2a0363129dcdbc155109a4908a9f10883bf48608·...·]5-19">}</span></code></pre><p>Notice·in·the·second·example·that·the·duplicate·name·only·occurs·once·in·the2099 </span><span·class="p"·data-group-id="3393692985-19">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="3393692985-20">[</span><span·class="p"·data-group-id="3393692985-21">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·311,·SHA:·aeda2b368914f72ec3db1cf59fc9ab8d1b36ff0770c9eda474c85cfefa9cfb42·...·]5-19">}</span></code></pre><p>Notice·in·the·second·example·that·the·duplicate·name·only·occurs·once·in·the
2100 returned·list,·and·that·the·list·is·in·alphabetical·order·regardless·of·where2100 returned·list,·and·that·the·list·is·in·alphabetical·order·regardless·of·where
2101 the·names·are·positioned·in·the·regular·expression.·The·order·of·the·names·is2101 the·names·are·positioned·in·the·regular·expression.·The·order·of·the·names·is
2102 the·same·as·the·order·of·captured·subexpressions·if·<code·class="inline">{capture,·all_names}</code>·is2102 the·same·as·the·order·of·captured·subexpressions·if·<code·class="inline">{capture,·all_names}</code>·is
2103 specified·as·an·option·to·<a·href="#run/3"><code·class="inline">run/3</code></a>.·You·can·therefore·create·a·name-to-value2103 specified·as·an·option·to·<a·href="#run/3"><code·class="inline">run/3</code></a>.·You·can·therefore·create·a·name-to-value
2104 mapping·from·the·result·of·<a·href="#run/3"><code·class="inline">run/3</code></a>·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="1237605758-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="1237605758-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span·cl[·...·truncated·by·diffoscope;·len:·217,·SHA:·b9b5642975f789b123bade4bf725bdfaf94236a9e494b2ec0b3f5e5f516dd9b0·...·]-2">)</span><span·class="p">.</span><span·class="w">2104 mapping·from·the·result·of·<a·href="#run/3"><code·class="inline">run/3</code></a>·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="5099724271-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="5099724271-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span·cl[·...·truncated·by·diffoscope;·len:·217,·SHA:·8bcd94aa4c039c021a20b4f2b4edf8be05c06967f5d592d90f739b346732d473·...·]-2">)</span><span·class="p">.</span><span·class="w">
2105 </span><span·class="p"·data-group-id="1237605758-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1237605758-4">{</span><span·class="ss">re_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">2105 </span><span·class="p"·data-group-id="5099724271-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5099724271-4">{</span><span·class="ss">re_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
2106 ················</span><span·class="p"·data-group-id="1237605758-5">&lt;&lt;</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="w">2106 ················</span><span·class="p"·data-group-id="5099724271-5">&lt;&lt;</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">82</span><span·class="p">,</span><span·class="mi">67</span><span·class="p">,</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">119</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="w">
2107 ··················</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1237605758-5">&gt;&gt;</span><span·class="p"·data-group-id="1237605758-4">}</span><span·class="p"·data-group-id="1237605758-3">}</span><span·class="gp·unselectable">2107 ··················</span><span·class="mi">255</span><span·class="p">,</span><span·class="mi">255</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5099724271-5">&gt;&gt;</span><span·class="p"·data-group-id="5099724271-4">}</span><span·class="p"·data-group-id="5099724271-3">}</span><span·class="gp·unselectable">
2108 2&gt;·</span><span·class="p"·data-group-id="1237605758-6">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="1237605758-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·251,·SHA:·9baa72e49f6352d44a3432d50b81dead1ab903603a2510515b7683b6b8c4cb8c·...·]-7">)</span><span·class="p">.</span><span·class="w">2108 2&gt;·</span><span·class="p"·data-group-id="5099724271-6">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="5099724271-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·251,·SHA:·c197927603af4ea21b7381ba91bd6dc4c2708998c1b14b520c4fe39e284764cb·...·]-7">)</span><span·class="p">.</span><span·class="w">
2109 </span><span·class="p"·data-group-id="1237605758-8">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="1237605758-9">[</span><span·class="p"·data-group-id="1237605758-10">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="1237605758-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1237605758-11">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group-id="1237605758-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1237605758-12">&lt;&lt;</span><span·class="s">&quot;C&quot;</span><span·class="p"·data-group-id="1237605758-12">&gt;&gt;</span><span·class="p"·data-group-id="1237605758-9">]</span><span·class="p"·data-group-id="1237605758-8">}</span><span·class="gp·unselectable"> 
2110 3&gt;·</span><span·class="p"·data-group-id="1237605758-13">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="1237605758-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="1237605758-14">(</span><span·class="s">&quot;AA&quot;</span><span·class="p">,</span><span·class="n">MP</span><span·class="p">,</span><span·class="p"·data-group-id="1237605758-15">[</span><span·class="p"·data-group-id="1237605758-16">{</span><span·class="ss">capture</span><span·class="p">,</span><span·class="ss">all_names</span><span·class="p">,</span><span·class="ss">binary</span><span·class="p"·data-group-id="1237605758-16">}</span><span·class="p"·data-group-id="1237605758-15">]</span><span·class="p"·data-group-id="1237605758-14">)</span><span·class="p">.</span><span·class="w"> 
2111 </span><span·class="p"·data-group-id="1237605758-17">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="1237605758-18">[</span><span·class="p"·data-group-id="1237605758-19">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·422,·SHA:·5a30193bd94ea5f107003164c021f8490fe3e9972e245cce15c2a41fae32b67f·...·]">}</span><span·class="gp·unselectable">2109 </span><span·class="p"·data-group-id="5099724271-8">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="5099724271-9">[</span><span·class="p"·data-group-id="5099724271-10">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·493,·SHA:·104e1ed09cf06b698d4646eac1eb9a347ea1c3d0358949fccf59e527f3db8b4b·...·]">}</span><span·class="gp·unselectable">
 2110 3&gt;·</span><span·class="p"·data-group-id="5099724271-13">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="5099724271-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="5099724271-14">(</span><span·class="s">&quot;AA&quot;</span><span·class="p">,</span><span·class="n">MP</span><span·class="p">,</span><span·class="p"·data-group-id="5099724271-15">[</span><span·class="p"·data-group-id="5099724271-16">{</span><span·class="ss">capture</span><span·class="p">,</span><span·class="ss">all_names</span><span·class="p">,</span><span·class="ss">binary</span><span·class="p"·data-group-id="5099724271-16">}</span><span·class="p"·data-group-id="5099724271-15">]</span><span·class="p"·data-group-id="5099724271-14">)</span><span·class="p">.</span><span·class="w">
 2111 </span><span·class="p"·data-group-id="5099724271-17">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="5099724271-18">[</span><span·class="p"·data-group-id="5099724271-19">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="5099724271-19">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5099724271-20">&lt;&lt;</span><span·class="p"·data-group-id="5099724271-20">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5099724271-21">&lt;&lt;</span><span·class="p"·data-group-id="5099724271-21">&gt;&gt;</span><span·class="p"·data-group-id="5099724271-18">]</span><span·class="p"·data-group-id="5099724271-17">}</span><span·class="gp·unselectable">
2112 4&gt;·</span><span·class="n">NameMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">zip</span><span·class="p"·data-group-id="1237605758-22">(</span><span·class="n">N</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="1237605758-22">)</span><span·class="p">.</span><span·class="w">2112 4&gt;·</span><span·class="n">NameMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">zip</span><span·class="p"·data-group-id="5099724271-22">(</span><span·class="n">N</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="5099724271-22">)</span><span·class="p">.</span><span·class="w">
2113 </span><span·class="p"·data-group-id="1237605758-23">[</span><span·class="p"·data-group-id="1237605758-24">{</span><span·class="p"·data-group-id="1237605758-25">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="1237605758-25">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1128,·SHA:·58cdd4d2e6a0a291dae257e8292e06514162942856f8ba90c3bf042c9f287095·...·]-23">]</span></code></pre>2113 </span><span·class="p"·data-group-id="5099724271-23">[</span><span·class="p"·data-group-id="5099724271-24">{</span><span·class="p"·data-group-id="5099724271-25">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="5099724271-25">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1128,·SHA:·601420923e36432f2a8c1eb220f9148c4c0e7a8cf6af5667ccc794f0c2553cf0·...·]-23">]</span></code></pre>
2114 ··</section>2114 ··</section>
2115 </section>2115 </section>
2116 <section·class="detail"·id="replace/3">2116 <section·class="detail"·id="replace/3">
  
2117 ··<div·class="detail-header">2117 ··<div·class="detail-header">
2118 ····<a·href="#replace/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2118 ····<a·href="#replace/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
2119 ······<i·class="ri-link-m"·aria-hidden="true"></i>2119 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 2198, 24 lines modifiedOffset 2198, 24 lines modified
2198 both·the·regular·expression·and·<code·class="inline">Subject</code>·are·to·specified·as·valid·Unicode2198 both·the·regular·expression·and·<code·class="inline">Subject</code>·are·to·specified·as·valid·Unicode
2199 <code·class="inline">charlist()</code>s.</p><p>If·the·replacement·is·given·as·a·string,·it·can·contain·the·special·character2199 <code·class="inline">charlist()</code>s.</p><p>If·the·replacement·is·given·as·a·string,·it·can·contain·the·special·character
2200 <code·class="inline">&amp;</code>,·which·inserts·the·whole·matching·expression·in·the·result,·and·the·special2200 <code·class="inline">&amp;</code>,·which·inserts·the·whole·matching·expression·in·the·result,·and·the·special
2201 sequence·<code·class="inline">\</code>N·(where·N·is·an·integer·&gt;·0),·<code·class="inline">\g</code>N,·or·<code·class="inline">\g{</code>N<code·class="inline">}</code>,·resulting·in·the2201 sequence·<code·class="inline">\</code>N·(where·N·is·an·integer·&gt;·0),·<code·class="inline">\g</code>N,·or·<code·class="inline">\g{</code>N<code·class="inline">}</code>,·resulting·in·the
2202 subexpression·number·N,·is·inserted·in·the·result.·If·no·subexpression·with·that2202 subexpression·number·N,·is·inserted·in·the·result.·If·no·subexpression·with·that
2203 number·is·generated·by·the·regular·expression,·nothing·is·inserted.</p><p>To·insert·an·&amp;·or·a·\·in·the·result,·precede·it·with·a·\.·Notice·that·Erlang2203 number·is·generated·by·the·regular·expression,·nothing·is·inserted.</p><p>To·insert·an·&amp;·or·a·\·in·the·result,·precede·it·with·a·\.·Notice·that·Erlang
2204 already·gives·a·special·meaning·to·\·in·literal·strings,·so·a·single·\·must·be2204 already·gives·a·special·meaning·to·\·in·literal·strings,·so·a·single·\·must·be
2205 written·as·<code·class="inline">&quot;\\&quot;</code>·and·therefore·a·double·\·as·<code·class="inline">&quot;\\\\&quot;</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">replace</span><span·class="p"·data-group-id="7006990547-1">(</span><span·class="s">&quot;abcd&quot;</span><span·class="p">,</span><span·class="s">&quot;c&quot;</span><span·class="p">,</span><span·class="s">&quot;[&amp;]&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7006990547-2">[·...·truncated·by·diffoscope;·len:·290,·SHA:·8c54e90609ec1b9bd6e8a2f9e3c7a723d75f01240bff57886969729107cc0735·...·]-1">)</span><span·class="p">.</span><span·class="w">2205 written·as·<code·class="inline">&quot;\\&quot;</code>·and·therefore·a·double·\·as·<code·class="inline">&quot;\\\\&quot;</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">replace</span><span·class="p"·data-group-id="3604379228-1">(</span><span·class="s">&quot;abcd&quot;</span><span·class="p">,</span><span·class="s">&quot;c&quot;</span><span·class="p">,</span><span·class="s">&quot;[&amp;]&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3604379228-2">[·...·truncated·by·diffoscope;·len:·290,·SHA:·130c7896e78305b8dd01904803c3a3ff6230d8f9952b444c18913328a32bb71a·...·]-1">)</span><span·class="p">.</span><span·class="w">
2206 </span><span·class="s">&quot;ab[c]d&quot;</span></code></pre><p>while</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">replace</span><span·class="p"·data-group-id="4060764829-1">(</span><span·class="s">&quot;abcd&quot;</span><span·class="p">,</span><span·class="s">&quot;c&quot;</span><span·class="p">,</span><span·class="s">&quot;[\\&amp;]&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4060764829-2[·...·truncated·by·diffoscope;·len:·291,·SHA:·92fad59ac1558a26f180db054d1be34ccb6809267e233abff3c159860629e0e1·...·]9-1">)</span><span·class="p">.</span><span·class="w">2206 </span><span·class="s">&quot;ab[c]d&quot;</span></code></pre><p>while</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">replace</span><span·class="p"·data-group-id="9447821949-1">(</span><span·class="s">&quot;abcd&quot;</span><span·class="p">,</span><span·class="s">&quot;c&quot;</span><span·class="p">,</span><span·class="s">&quot;[\\&amp;]&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9447821949-2[·...·truncated·by·diffoscope;·len:·291,·SHA:·bb9c295dbffc4d7a0861d016b41006a2e7ae21be386e830f2bd8237cdeb0454c·...·]9-1">)</span><span·class="p">.</span><span·class="w">
2207 </span><span·class="s">&quot;ab[&amp;]d&quot;</span></code></pre><p>If·the·replacement·is·given·as·a·fun,·it·will·be·called·with·the·whole·matching2207 </span><span·class="s">&quot;ab[&amp;]d&quot;</span></code></pre><p>If·the·replacement·is·given·as·a·fun,·it·will·be·called·with·the·whole·matching
2208 expression·as·the·first·argument·and·a·list·of·subexpression·matches·in·the2208 expression·as·the·first·argument·and·a·list·of·subexpression·matches·in·the
2209 order·in·which·they·appear·in·the·regular·expression.·The·returned·value·will·be2209 order·in·which·they·appear·in·the·regular·expression.·The·returned·value·will·be
2210 inserted·in·the·result.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">replace</span><span·class="p"·data-group-id="2063618418-1">(</span><span·class="s">&quot;abcd&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.(.)&quot;</span><span·class="p">,</span><span·class="w">2210 inserted·in·the·result.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">replace</span><span·class="p"·data-group-id="6652981812-1">(</span><span·class="s">&quot;abcd&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.(.)&quot;</span><span·class="p">,</span><span·class="w">
2211 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="2063618418-2">(</span><span·class="n">Whole</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2063618418-3">[</span><span·class="p"·data-group-id="2063618418-4">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·133,·SHA:·1cf4a1164b59a34bbc2ba6834ba9cf61511629a198bbf3420e8851d1f32466c9·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">2211 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="6652981812-2">(</span><span·class="n">Whole</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6652981812-3">[</span><span·class="p"·data-group-id="6652981812-4">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·133,·SHA:·6da553ebee9e4956d88c303b4b0893a6a08bf06a9b1126cf34b9b484f664a3a3·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2212 ·········</span><span·class="p"·data-group-id="2063618418-5">&lt;&lt;</span><span·class="sc">$#</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Whole</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$-</sp[·...·truncated·by·diffoscope;·len:·492,·SHA:·38bd5ee68d39c0b378fd1440d14b8186a9b1c6bb03e073ed5a80320facf2794a·...·]-5">&gt;&gt;</span><span·class="w">2212 ·········</span><span·class="p"·data-group-id="6652981812-5">&lt;&lt;</span><span·class="sc">$#</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Whole</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="sc">$-</sp[·...·truncated·by·diffoscope;·len:·492,·SHA:·04adda614889d87e0f59e67c42ee838a3a2ac62ab34e1144feee2f2d9be19d66·...·]-5">&gt;&gt;</span><span·class="w">
2213 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">2213 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
2214 ····</span><span·class="p"·data-group-id="2063618418-7">[</span><span·class="p"·data-group-id="2063618418-8">{</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">list</span><span·class="p"·data-group-id="2063618418-8">}</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·3071c72d7532d58591e6db6925383c38ce8e87aa162a5ce95fcee2cb77c9b852·...·]-1">)</span><span·class="p">.</span><span·class="w">2214 ····</span><span·class="p"·data-group-id="6652981812-7">[</span><span·class="p"·data-group-id="6652981812-8">{</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">list</span><span·class="p"·data-group-id="6652981812-8">}</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·4aaa30e92c2a371d79e12d558982ad1d7b24d3e62670a2ffdacff25a221fda45·...·]-1">)</span><span·class="p">.</span><span·class="w">
2215 </span><span·class="s">&quot;#ab-B#cd&quot;</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Non-matching·optional·subexpressions·will·not·be·included·in·the·list·of2215 </span><span·class="s">&quot;#ab-B#cd&quot;</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Non-matching·optional·subexpressions·will·not·be·included·in·the·list·of
2216 subexpression·matches·if·they·are·the·last·subexpressions·in·the·regular2216 subexpression·matches·if·they·are·the·last·subexpressions·in·the·regular
2217 expression.</p><p><em>Example:</em></p><p>The·regular·expression·<code·class="inline">&quot;(a)(b)?(c)?&quot;</code>·(&quot;a&quot;,·optionally·followed·by·&quot;b&quot;,2217 expression.</p><p><em>Example:</em></p><p>The·regular·expression·<code·class="inline">&quot;(a)(b)?(c)?&quot;</code>·(&quot;a&quot;,·optionally·followed·by·&quot;b&quot;,
2218 optionally·followed·by·&quot;c&quot;)·will·create·the·following·subexpression·lists:</p><ul><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;,·&lt;&lt;&quot;b&quot;&gt;&gt;,·&lt;&lt;&quot;c&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;abc&quot;</code></li><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;,·&lt;&lt;&gt;&gt;,·&lt;&lt;&quot;c&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;acx&quot;</code></li><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;,·&lt;&lt;&quot;b&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;abx&quot;</code></li><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;axx&quot;</code></li></ul></section><p>As·with·<a·href="#run/3"><code·class="inline">run/3</code></a>,·compilation·errors·raise·the·<code·class="inline">badarg</code>·exception.2218 optionally·followed·by·&quot;c&quot;)·will·create·the·following·subexpression·lists:</p><ul><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;,·&lt;&lt;&quot;b&quot;&gt;&gt;,·&lt;&lt;&quot;c&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;abc&quot;</code></li><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;,·&lt;&lt;&gt;&gt;,·&lt;&lt;&quot;c&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;acx&quot;</code></li><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;,·&lt;&lt;&quot;b&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;abx&quot;</code></li><li><code·class="inline">[&lt;&lt;&quot;a&quot;&gt;&gt;]</code>·when·applied·to·the·string·<code·class="inline">&quot;axx&quot;</code></li></ul></section><p>As·with·<a·href="#run/3"><code·class="inline">run/3</code></a>,·compilation·errors·raise·the·<code·class="inline">badarg</code>·exception.
2219 <a·href="#compile/2"><code·class="inline">compile/2</code></a>·can·be·used·to·get·more·information·about·the·error.</p>2219 <a·href="#compile/2"><code·class="inline">compile/2</code></a>·can·be·used·to·get·more·information·about·the·error.</p>
2220 ··</section>2220 ··</section>
2221 </section>2221 </section>
Offset 2320, 27 lines modifiedOffset 2320, 27 lines modified
2320 any·matching·subexpressions·(or·as·specified·by·option·<code·class="inline">capture</code>.·The2320 any·matching·subexpressions·(or·as·specified·by·option·<code·class="inline">capture</code>.·The
2321 <code·class="inline">Captured</code>·part·of·the·return·value·is·hence·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>s·when2321 <code·class="inline">Captured</code>·part·of·the·return·value·is·hence·a·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>·of·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>s·when
2322 this·option·is·specified.</p><p>The·interaction·of·option·<code·class="inline">global</code>·with·a·regular·expression·that·matches·an2322 this·option·is·specified.</p><p>The·interaction·of·option·<code·class="inline">global</code>·with·a·regular·expression·that·matches·an
2323 empty·string·surprises·some·users.·When·option·<code·class="inline">global</code>·is·specified,2323 empty·string·surprises·some·users.·When·option·<code·class="inline">global</code>·is·specified,
2324 <a·href="#run/3"><code·class="inline">run/3</code></a>·handles·empty·matches·in·the·same·way·as·Perl:·a2324 <a·href="#run/3"><code·class="inline">run/3</code></a>·handles·empty·matches·in·the·same·way·as·Perl:·a
2325 zero-length·match·at·any·point·is·also·retried·with·options2325 zero-length·match·at·any·point·is·also·retried·with·options
2326 <code·class="inline">[anchored,·notempty_atstart]</code>.·If·that·search·gives·a·result·of·length·&gt;·0,2326 <code·class="inline">[anchored,·notempty_atstart]</code>.·If·that·search·gives·a·result·of·length·&gt;·0,
2327 the·result·is·included.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="1163468758-1">(</span><span·class="s">&quot;cat&quot;</span><span·class="p">,</span><span·class="s">&quot;(|at)&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1163468758-2">[</span><span·class="ss">global</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·b738bb22ba293e8d598fe19731912dff15f5be4d13fa3d32d50696f321426a9f·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·following·matchings·are·performed:</p><ul><li><p><strong>At·offset·<code·class="inline">0</code></strong>·-·The·regular·expression·<code·class="inline">(|at)</code>·first·match·at·the2327 the·result·is·included.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="4117604495-1">(</span><span·class="s">&quot;cat&quot;</span><span·class="p">,</span><span·class="s">&quot;(|at)&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4117604495-2">[</span><span·class="ss">global</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·472f486fb7739a252d647d2eb7ff814b0282e0ddcaf4b6cc23da566df51ddcd3·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·following·matchings·are·performed:</p><ul><li><p><strong>At·offset·<code·class="inline">0</code></strong>·-·The·regular·expression·<code·class="inline">(|at)</code>·first·match·at·the
2328 initial·position·of·string·<code·class="inline">cat</code>,·giving·the·result·set·<code·class="inline">[{0,0},{0,0}]</code>·(the2328 initial·position·of·string·<code·class="inline">cat</code>,·giving·the·result·set·<code·class="inline">[{0,0},{0,0}]</code>·(the
2329 second·<code·class="inline">{0,0}</code>·is·because·of·the·subexpression·marked·by·the·parentheses).2329 second·<code·class="inline">{0,0}</code>·is·because·of·the·subexpression·marked·by·the·parentheses).
2330 As·the·length·of·the·match·is·0,·we·do·not·advance·to·the·next·position·yet.</p></li><li><p><strong>At·offset·<code·class="inline">0</code>·with·<code·class="inline">[anchored,·notempty_atstart]</code></strong>·-·The·search·is2330 As·the·length·of·the·match·is·0,·we·do·not·advance·to·the·next·position·yet.</p></li><li><p><strong>At·offset·<code·class="inline">0</code>·with·<code·class="inline">[anchored,·notempty_atstart]</code></strong>·-·The·search·is
2331 retried·with·options·<code·class="inline">[anchored,·notempty_atstart]</code>·at·the·same·position,2331 retried·with·options·<code·class="inline">[anchored,·notempty_atstart]</code>·at·the·same·position,
2332 which·does·not·give·any·interesting·result·of·longer·length,·so·the·search2332 which·does·not·give·any·interesting·result·of·longer·length,·so·the·search
2333 position·is·advanced·to·the·next·character·(<code·class="inline">a</code>).</p></li><li><p><strong>At·offset·<code·class="inline">1</code></strong>·-·The·search·results·in·<code·class="inline">[{1,0},{1,0}]</code>,·so·this·search·is2333 position·is·advanced·to·the·next·character·(<code·class="inline">a</code>).</p></li><li><p><strong>At·offset·<code·class="inline">1</code></strong>·-·The·search·results·in·<code·class="inline">[{1,0},{1,0}]</code>,·so·this·search·is
2334 also·repeated·with·the·extra·options.</p></li><li><p><strong>At·offset·<code·class="inline">1</code>·with·<code·class="inline">[anchored,·notempty_atstart]</code></strong>·-·Alternative·<code·class="inline">ab</code>·is2334 also·repeated·with·the·extra·options.</p></li><li><p><strong>At·offset·<code·class="inline">1</code>·with·<code·class="inline">[anchored,·notempty_atstart]</code></strong>·-·Alternative·<code·class="inline">ab</code>·is
2335 found·and·the·result·is·[{1,2},{1,2}].·The·result·is·added·to·the·list2335 found·and·the·result·is·[{1,2},{1,2}].·The·result·is·added·to·the·list
2336 of·results·and·the·position·in·the·search·string·is·advanced·two·steps.</p></li><li><p><strong>At·offset·<code·class="inline">3</code></strong>·-·The·search·once·again·matches·the·empty·string,·giving2336 of·results·and·the·position·in·the·search·string·is·advanced·two·steps.</p></li><li><p><strong>At·offset·<code·class="inline">3</code></strong>·-·The·search·once·again·matches·the·empty·string,·giving
2337 <code·class="inline">[{3,0},{3,0}]</code>.</p></li><li><p><strong>At·offset·<code·class="inline">1</code>·with·<code·class="inline">[anchored,·notempty_atstart]</code></strong>·-·This·gives·no·result2337 <code·class="inline">[{3,0},{3,0}]</code>.</p></li><li><p><strong>At·offset·<code·class="inline">1</code>·with·<code·class="inline">[anchored,·notempty_atstart]</code></strong>·-·This·gives·no·result
2338 of·length·&gt;·0·and·we·are·at·the·last·position,·so·the·global·search·is2338 of·length·&gt;·0·and·we·are·at·the·last·position,·so·the·global·search·is
2339 complete.</p></li></ul><p>The·result·of·the·call·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7668514066-1">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="7668514066-2">[</span><span·class="p"·data-group-id="7668514066-3">[</span><span·class="p"·data-group-id="7668514066-4">{</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·2008,·SHA:·526c588b6a74fc170fd53c36e9a14fb03b3ca638c3c9fec04db89119f30ce286·...·]-1">}</span></code></pre></li><li><p><strong><code·class="inline">notempty</code></strong>·-·An·empty·string·is·not·considered·to·be·a·valid·match·if·this2339 complete.</p></li></ul><p>The·result·of·the·call·is:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6876947919-1">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="6876947919-2">[</span><span·class="p"·data-group-id="6876947919-3">[</span><span·class="p"·data-group-id="6876947919-4">{</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·2008,·SHA:·0c88e5b429419e079481f50a2eefaca24fe02350ecadb94ad66d4e1ca2911c91·...·]-1">}</span></code></pre></li><li><p><strong><code·class="inline">notempty</code></strong>·-·An·empty·string·is·not·considered·to·be·a·valid·match·if·this
2340 option·is·specified.·If·alternatives·in·the·pattern·exist,·they·are·tried.·If2340 option·is·specified.·If·alternatives·in·the·pattern·exist,·they·are·tried.·If
2341 all·the·alternatives·match·the·empty·string,·the·entire·match·fails.</p><p><em>Example:</em></p><p>If·the·following·pattern·is·applied·to·a·string·not·beginning·with·&quot;a&quot;·or·&quot;b&quot;,2341 all·the·alternatives·match·the·empty·string,·the·entire·match·fails.</p><p><em>Example:</em></p><p>If·the·following·pattern·is·applied·to·a·string·not·beginning·with·&quot;a&quot;·or·&quot;b&quot;,
2342 it·would·normally·match·the·empty·string·at·the·start·of·the·subject:</p><pre><code·class="text">a?b?</code></pre><p>With·option·<code·class="inline">notempty</code>,·this·match·is·invalid,·so·<a·href="#run/3"><code·class="inline">run/3</code></a>·searches2342 it·would·normally·match·the·empty·string·at·the·start·of·the·subject:</p><pre><code·class="text">a?b?</code></pre><p>With·option·<code·class="inline">notempty</code>,·this·match·is·invalid,·so·<a·href="#run/3"><code·class="inline">run/3</code></a>·searches
2343 further·into·the·string·for·occurrences·of·&quot;a&quot;·or·&quot;b&quot;.</p></li><li><p><strong><code·class="inline">notempty_atstart</code></strong>·-·Like·<code·class="inline">notempty</code>,·except·that·an·empty·string·match2343 further·into·the·string·for·occurrences·of·&quot;a&quot;·or·&quot;b&quot;.</p></li><li><p><strong><code·class="inline">notempty_atstart</code></strong>·-·Like·<code·class="inline">notempty</code>,·except·that·an·empty·string·match
2344 that·is·not·at·the·start·of·the·subject·is·permitted.·If·the·pattern·is2344 that·is·not·at·the·start·of·the·subject·is·permitted.·If·the·pattern·is
2345 anchored,·such·a·match·can·occur·only·if·the·pattern·contains·\K.</p><p>Perl·has·no·direct·equivalent·of·<code·class="inline">notempty</code>·or·<code·class="inline">notempty_atstart</code>,·but·it·does2345 anchored,·such·a·match·can·occur·only·if·the·pattern·contains·\K.</p><p>Perl·has·no·direct·equivalent·of·<code·class="inline">notempty</code>·or·<code·class="inline">notempty_atstart</code>,·but·it·does
2346 make·a·special·case·of·a·pattern·match·of·the·empty·string·within·its·split()2346 make·a·special·case·of·a·pattern·match·of·the·empty·string·within·its·split()
Offset 2403, 20 lines modifiedOffset 2403, 20 lines modified
2403 than·the·total·number·of·calls,·because·not·all·calls·to·match()·are2403 than·the·total·number·of·calls,·because·not·all·calls·to·match()·are
2404 recursive.·This·limit·is·of·use·only·if·it·is·set·smaller·than2404 recursive.·This·limit·is·of·use·only·if·it·is·set·smaller·than
2405 match_limit.</p><p>Limiting·the·recursion·depth·limits·the·amount·of·machine·stack·that2405 match_limit.</p><p>Limiting·the·recursion·depth·limits·the·amount·of·machine·stack·that
2406 can·be·used,·or,·when·PCRE·has·been·compiled·to·use·memory·on·the·heap2406 can·be·used,·or,·when·PCRE·has·been·compiled·to·use·memory·on·the·heap
2407 instead·of·the·stack,·the·amount·of·heap·memory·that·can·be·used.</p></blockquote><p>The·Erlang·VM·uses·a·PCRE·library·where·heap·memory·is·used·when·regular2407 instead·of·the·stack,·the·amount·of·heap·memory·that·can·be·used.</p></blockquote><p>The·Erlang·VM·uses·a·PCRE·library·where·heap·memory·is·used·when·regular
2408 expression·match·recursion·occurs.·This·therefore·limits·the·use·of·machine2408 expression·match·recursion·occurs.·This·therefore·limits·the·use·of·machine
2409 heap,·not·C·stack.</p><p>Specifying·a·lower·value·can·result·in·matches·with·deep·recursion·failing,2409 heap,·not·C·stack.</p><p>Specifying·a·lower·value·can·result·in·matches·with·deep·recursion·failing,
2410 when·they·should·have·matched:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="4074911697-1">(</span><span·class="s">&quot;aaaaaaaaaaaaaz&quot;</span><span·class="p">,</span><span·class="s">&quot;(a+)*z&quot;</span><span·class="p"·data-group-id="4074911697-1">)</span><span·class="p">.</span><span·class="w">2410 when·they·should·have·matched:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="2313051746-1">(</span><span·class="s">&quot;aaaaaaaaaaaaaz&quot;</span><span·class="p">,</span><span·class="s">&quot;(a+)*z&quot;</span><span·class="p"·data-group-id="2313051746-1">)</span><span·class="p">.</span><span·class="w">
2411 </span><span·class="p"·data-group-id="4074911697-2">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="4074911697-3">[</span><span·class="p"·data-group-id="4074911697-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">14</span>[·...·truncated·by·diffoscope;·len:·352,·SHA:·8fc50a2f7b4a70a1ee0bf6523feb4e75f6ce461e8363414c2b969e4ab5db4017·...·]-2">}</span><span·class="gp·unselectable">2411 </span><span·class="p"·data-group-id="2313051746-2">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="2313051746-3">[</span><span·class="p"·data-group-id="2313051746-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">14</span>[·...·truncated·by·diffoscope;·len:·352,·SHA:·6eec14015529a99baf835251502b97d8f4bd719fcf7d25a5e71beefa5f3eef26·...·]-2">}</span><span·class="gp·unselectable">
2412 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="4074911697-6">(</span><span·class="s">&quot;aaaaaaaaaaaaaz&quot;</span><span·class="p">,</span><span·class="s">&quot;(a+)*z&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4074911697-7">[</span><span·class="p"·data-group-id="4074911697-8[·...·truncated·by·diffoscope;·len:·251,·SHA:·98aaa81cf0d63afd24f481ec5ad01c046815203a3c4a9ad47ff98298ced5a030·...·]-6">)</span><span·class="p">.</span><span·class="w">2412 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="2313051746-6">(</span><span·class="s">&quot;aaaaaaaaaaaaaz&quot;</span><span·class="p">,</span><span·class="s">&quot;(a+)*z&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2313051746-7">[</span><span·class="p"·data-group-id="2313051746-8[·...·truncated·by·diffoscope;·len:·251,·SHA:·40120199ec26c1fc29eb4d28a87c99631071a396e47617cee1623a512fa14881·...·]-6">)</span><span·class="p">.</span><span·class="w">
2413 </span><span·class="ss">nomatch</span><span·class="gp·unselectable">2413 </span><span·class="ss">nomatch</span><span·class="gp·unselectable">
2414 3&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="4074911697-9">(</span><span·class="s">&quot;aaaaaaaaaaaaaz&quot;</span><span·class="p">,</span><span·class="s">&quot;(a+)*z&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4074911697-10">[</span><span·class="p"·data-group-id="4074911697-[·...·truncated·by·diffoscope;·len:·316,·SHA:·b834f16032387db2181daa3e4351973dba94b80417639e32531b7c5a6bb4508b·...·]-9">)</span><span·class="p">.</span><span·class="w">2414 3&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="2313051746-9">(</span><span·class="s">&quot;aaaaaaaaaaaaaz&quot;</span><span·class="p">,</span><span·class="s">&quot;(a+)*z&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2313051746-10">[</span><span·class="p"·data-group-id="2313051746-[·...·truncated·by·diffoscope;·len:·316,·SHA:·df912771eb71bd885a72e35e686c68d207c020f312f46089ae89447d8561c891·...·]-9">)</span><span·class="p">.</span><span·class="w">
2415 </span><span·class="p"·data-group-id="4074911697-12">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">match_limit_recursion</span><span·class="p"·data-group-id="4074911697-12">}</span></code></pre><p>This·option·and·option·<code·class="inline">match_limit</code>·are·only·to·be·used·in·rare·cases.2415 </span><span·class="p"·data-group-id="2313051746-12">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">match_limit_recursion</span><span·class="p"·data-group-id="2313051746-12">}</span></code></pre><p>This·option·and·option·<code·class="inline">match_limit</code>·are·only·to·be·used·in·rare·cases.
Max diff block lines reached; 51701/116526 bytes (44.37%) of diff not shown.
7.12 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/sets.html
    
Offset 152, 19 lines modifiedOffset 152, 19 lines modified
152 <p>The·following·functions·in·this·module·also·exist·and·provide·the·same152 <p>The·following·functions·in·this·module·also·exist·and·provide·the·same
153 functionality·in·the·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·and·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·modules.·That·is,·by·only153 functionality·in·the·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·and·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·modules.·That·is,·by·only
154 changing·the·module·name·for·each·call,·you·can·try·out·different·set154 changing·the·module·name·for·each·call,·you·can·try·out·different·set
155 representations.</p><ul><li><a·href="#add_element/2"><code·class="inline">add_element/2</code></a></li><li><a·href="#del_element/2"><code·class="inline">del_element/2</code></a></li><li><a·href="#filter/2"><code·class="inline">filter/2</code></a></li><li><a·href="#filtermap/2"><code·class="inline">filtermap/2</code></a></li><li><a·href="#fold/3"><code·class="inline">fold/3</code></a></li><li><a·href="#from_list/1"><code·class="inline">from_list/1</code></a></li><li><a·href="#intersection/1"><code·class="inline">intersection/1</code></a></li><li><a·href="#intersection/2"><code·class="inline">intersection/2</code></a></li><li><a·href="#is_element/2"><code·class="inline">is_element/2</code></a></li><li><a·href="#is_empty/1"><code·class="inline">is_empty/1</code></a></li><li><a·href="#is_equal/2"><code·class="inline">is_equal/2</code></a></li><li><a·href="#is_set/1"><code·class="inline">is_set/1</code></a></li><li><a·href="#is_subset/2"><code·class="inline">is_subset/2</code></a></li><li><a·href="#map/2"><code·class="inline">map/2</code></a></li><li><a·href="#new/0"><code·class="inline">new/0</code></a></li><li><a·href="#size/1"><code·class="inline">size/1</code></a></li><li><a·href="#subtract/2"><code·class="inline">subtract/2</code></a></li><li><a·href="#to_list/1"><code·class="inline">to_list/1</code></a></li><li><a·href="#union/1"><code·class="inline">union/1</code></a></li><li><a·href="#union/2"><code·class="inline">union/2</code></a></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>While·the·three·set·implementations·offer·the·same·<em>functionality</em>·with155 representations.</p><ul><li><a·href="#add_element/2"><code·class="inline">add_element/2</code></a></li><li><a·href="#del_element/2"><code·class="inline">del_element/2</code></a></li><li><a·href="#filter/2"><code·class="inline">filter/2</code></a></li><li><a·href="#filtermap/2"><code·class="inline">filtermap/2</code></a></li><li><a·href="#fold/3"><code·class="inline">fold/3</code></a></li><li><a·href="#from_list/1"><code·class="inline">from_list/1</code></a></li><li><a·href="#intersection/1"><code·class="inline">intersection/1</code></a></li><li><a·href="#intersection/2"><code·class="inline">intersection/2</code></a></li><li><a·href="#is_element/2"><code·class="inline">is_element/2</code></a></li><li><a·href="#is_empty/1"><code·class="inline">is_empty/1</code></a></li><li><a·href="#is_equal/2"><code·class="inline">is_equal/2</code></a></li><li><a·href="#is_set/1"><code·class="inline">is_set/1</code></a></li><li><a·href="#is_subset/2"><code·class="inline">is_subset/2</code></a></li><li><a·href="#map/2"><code·class="inline">map/2</code></a></li><li><a·href="#new/0"><code·class="inline">new/0</code></a></li><li><a·href="#size/1"><code·class="inline">size/1</code></a></li><li><a·href="#subtract/2"><code·class="inline">subtract/2</code></a></li><li><a·href="#to_list/1"><code·class="inline">to_list/1</code></a></li><li><a·href="#union/1"><code·class="inline">union/1</code></a></li><li><a·href="#union/2"><code·class="inline">union/2</code></a></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>While·the·three·set·implementations·offer·the·same·<em>functionality</em>·with
156 respect·to·the·aforementioned·functions,·their·overall·<em>behavior</em>·may·differ.156 respect·to·the·aforementioned·functions,·their·overall·<em>behavior</em>·may·differ.
157 As·mentioned,·this·module·considers·elements·as·different·if·and·only·if·they157 As·mentioned,·this·module·considers·elements·as·different·if·and·only·if·they
158 do·not·match·(<code·class="inline">=:=</code>),·while·both·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·consider·elements158 do·not·match·(<code·class="inline">=:=</code>),·while·both·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·consider·elements
159 as·different·if·and·only·if·they·do·not·compare·equal·(<code·class="inline">==</code>).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">is_element</span><span·class="p"·data-group-id="9146559903-1">(</span><span·class="mf">1.0</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="9146559903-2">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·204,·SHA:·c56bf476752f8097c7348df51a487220a01c52377f5f82bc7bd6527015fbd1e7·...·]-1">)</span><span·class="p">.</span><span·class="w">159 as·different·if·and·only·if·they·do·not·compare·equal·(<code·class="inline">==</code>).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">is_element</span><span·class="p"·data-group-id="2744067728-1">(</span><span·class="mf">1.0</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="2744067728-2">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·204,·SHA:·97b742d8bbdcea8b3fce04d8ace75f25b869d28b8069491d0b59bcde73a16dcc·...·]-1">)</span><span·class="p">.</span><span·class="w">
160 </span><span·class="ss">false</span><span·class="gp·unselectable">160 </span><span·class="ss">false</span><span·class="gp·unselectable">
161 2&gt;·</span><span·class="nc">ordsets</span><span·class="p">:</span><span·class="nf">is_element</span><span·class="p"·data-group-id="9146559903-4">(</span><span·class="mf">1.0</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ordsets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="9146559903-5">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·bca5341cd9cf22ba8bab7071336e97fc988d5193ac91295a49a9a435c7f804da·...·]-4">)</span><span·class="p">.</span><span·class="w">161 2&gt;·</span><span·class="nc">ordsets</span><span·class="p">:</span><span·class="nf">is_element</span><span·class="p"·data-group-id="2744067728-4">(</span><span·class="mf">1.0</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">ordsets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="2744067728-5">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·080aa9b311e8c5238b775cfa99ee9720256c2c97439ececb54e5d8b69e0aca3f·...·]-4">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="ss">true</span><span·class="gp·unselectable">162 </span><span·class="ss">true</span><span·class="gp·unselectable">
163 2&gt;·</span><span·class="nc">gb_sets</span><span·class="p">:</span><span·class="nf">is_element</span><span·class="p"·data-group-id="9146559903-7">(</span><span·class="mf">1.0</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">gb_sets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="9146559903-8">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·b89878f3196e5070b17969bb0a976afdfb26b572603e7013c2740d603604b65a·...·]-7">)</span><span·class="p">.</span><span·class="w">163 2&gt;·</span><span·class="nc">gb_sets</span><span·class="p">:</span><span·class="nf">is_element</span><span·class="p"·data-group-id="2744067728-7">(</span><span·class="mf">1.0</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">gb_sets</span><span·class="p">:</span><span·class="nf">from_list</span><span·class="p"·data-group-id="2744067728-8">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·a6825823c772556174f0d38c5710a648680e3ea318173359c5b7c1c5f46df8e6·...·]-7">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="ss">true</span></code></pre></section><h2·id="module-see-also"·class="section-heading">164 </span><span·class="ss">true</span></code></pre></section><h2·id="module-see-also"·class="section-heading">
165 ··<a·href="#module-see-also"·class="hover-link">165 ··<a·href="#module-see-also"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">See·Also</span>168 ··<span·class="text">See·Also</span>
169 </h2>169 </h2>
170 <p><a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>,·<a·href="ordsets.html"><code·class="inline">ordsets</code></a></p>170 <p><a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>,·<a·href="ordsets.html"><code·class="inline">ordsets</code></a></p>
73.1 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/shell.html
    
Offset 162, 15 lines modifiedOffset 162, 15 lines modified
162 used·by·the·compiler·are·unavailable·at·runtime.·So,·to·read·the·record·syntax162 used·by·the·compiler·are·unavailable·at·runtime.·So,·to·read·the·record·syntax
163 and·print·tuples·as·records·when·possible,·record·definitions·must·be·maintained163 and·print·tuples·as·records·when·possible,·record·definitions·must·be·maintained
164 by·the·shell·itself.</p><p>The·shell·commands·for·reading,·defining,·forgetting,·listing,·and·printing164 by·the·shell·itself.</p><p>The·shell·commands·for·reading,·defining,·forgetting,·listing,·and·printing
165 records·are·described·below.·Notice·that·each·job·has·its·own·set·of·record165 records·are·described·below.·Notice·that·each·job·has·its·own·set·of·record
166 definitions.·To·facilitate·matters,·record·definitions·in·modules166 definitions.·To·facilitate·matters,·record·definitions·in·modules
167 <code·class="inline">shell_default</code>·and·<code·class="inline">user_default</code>·(if·loaded)·are·read·each·time·a·new·job·is167 <code·class="inline">shell_default</code>·and·<code·class="inline">user_default</code>·(if·loaded)·are·read·each·time·a·new·job·is
168 started.·For·example,·adding·the·following·line·to·<code·class="inline">user_default</code>·makes·the168 started.·For·example,·adding·the·following·line·to·<code·class="inline">user_default</code>·makes·the
169 definition·of·<code·class="inline">file_info</code>·readily·available·in·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="2835604301-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="2835604301-1">)</span><span·class="p">.</span></code></pre><p>The·shell·runs·in·two·modes:</p><ul><li><code·class="inline">Normal·(possibly·restricted)</code>·mode,·in·which·commands·can·be·edited·and169 definition·of·<code·class="inline">file_info</code>·readily·available·in·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8985919207-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="8985919207-1">)</span><span·class="p">.</span></code></pre><p>The·shell·runs·in·two·modes:</p><ul><li><code·class="inline">Normal·(possibly·restricted)</code>·mode,·in·which·commands·can·be·edited·and
170 expressions·evaluated</li><li>Job·Control·Mode,·<code·class="inline">JCL</code>,·in·which·jobs·can·be·started,·killed,·detached,·and170 expressions·evaluated</li><li>Job·Control·Mode,·<code·class="inline">JCL</code>,·in·which·jobs·can·be·started,·killed,·detached,·and
171 connected</li></ul><p>Only·the·currently·connected·job·can·'talk'·to·the·shell.</p><h2·id="module-shell-commands"·class="section-heading">171 connected</li></ul><p>Only·the·currently·connected·job·can·'talk'·to·the·shell.</p><h2·id="module-shell-commands"·class="section-heading">
172 ··<a·href="#module-shell-commands"·class="hover-link">172 ··<a·href="#module-shell-commands"·class="hover-link">
173 ····<i·class="ri-link-m"·aria-hidden="true"></i>173 ····<i·class="ri-link-m"·aria-hidden="true"></i>
174 ··</a>174 ··</a>
175 ··<span·class="text">Shell·Commands</span>175 ··<span·class="text">Shell·Commands</span>
176 </h2>176 </h2>
Offset 230, 114 lines modifiedOffset 230, 114 lines modified
230 ··<a·href="#module-example"·class="hover-link">230 ··<a·href="#module-example"·class="hover-link">
231 ····<i·class="ri-link-m"·aria-hidden="true"></i>231 ····<i·class="ri-link-m"·aria-hidden="true"></i>
232 ··</a>232 ··</a>
233 ··<span·class="text">Example</span>233 ··<span·class="text">Example</span>
234 </h2>234 </h2>
235 <p>The·following·example·is·a·long·dialog·with·the·shell.·Commands·starting·with235 <p>The·following·example·is·a·long·dialog·with·the·shell.·Commands·starting·with
236 <code·class="inline">&gt;</code>·are·inputs·to·the·shell.·All·other·lines·are·output·from·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">strider</span><span·class="w">·</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">236 <code·class="inline">&gt;</code>·are·inputs·to·the·shell.·All·other·lines·are·output·from·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="ss">strider</span><span·class="w">·</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">
237 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="1603613454-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="1603613454-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·364,·SHA:·c56de265cafc614b682d834a5e0192462548c78ac5b7d684f96df396b71007c5·...·]-3">]</span><span·class="w">237 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="4165551641-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="4165551641-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·364,·SHA:·0df3312b0ecc0460911abc2c9d47a5242e322a7796e1f6d614f8fb0e1399aabd·...·]-3">]</span><span·class="w">
  
238 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="1603613454-4">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="1603613454-4">)</span><span·class="gp·unselectable">238 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="4165551641-4">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4165551641-4">)</span><span·class="gp·unselectable">
239 1&gt;·</span><span·class="n">Str</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;abcd&quot;</span><span·class="p">.</span><span·class="w">239 1&gt;·</span><span·class="n">Str</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;abcd&quot;</span><span·class="p">.</span><span·class="w">
240 </span><span·class="s">&quot;abcd&quot;</span></code></pre><p>Command·1·sets·variable·<code·class="inline">Str</code>·to·string·<code·class="inline">&quot;abcd&quot;</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">L</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">length</span><span·class="p"·data-group-id="2300345342-1">(</span><span·class="n">Str</span><span·class="p"·data-group-id="2300345342-1">)</span><span·class="p">.</span><span·class="w">240 </span><span·class="s">&quot;abcd&quot;</span></code></pre><p>Command·1·sets·variable·<code·class="inline">Str</code>·to·string·<code·class="inline">&quot;abcd&quot;</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">L</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">length</span><span·class="p"·data-group-id="6271569704-1">(</span><span·class="n">Str</span><span·class="p"·data-group-id="6271569704-1">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="mi">4</span></code></pre><p>Command·2·sets·<code·class="inline">L</code>·to·the·length·of·string·<code·class="inline">Str</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="n">Descriptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2033344189-1">{</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="2033344189-2">(</span><span·class="n">Str</span><span·class="p"·data-group-id="2033344189-2">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·b9cfbfadfb4f7332a833b393eabb2e8d8ad44fa9dfcf7109fecf36c45853d3d6·...·]-1">}</span><span·class="p">.</span><span·class="w">241 </span><span·class="mi">4</span></code></pre><p>Command·2·sets·<code·class="inline">L</code>·to·the·length·of·string·<code·class="inline">Str</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="n">Descriptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2463732094-1">{</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="2463732094-2">(</span><span·class="n">Str</span><span·class="p"·data-group-id="2463732094-2">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·b06540a0fea89c25cc8df86baa833053746e195e0728d23ecf4ebd4ef01b9871·...·]-1">}</span><span·class="p">.</span><span·class="w">
242 </span><span·class="p"·data-group-id="2033344189-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="2033344189-3">}</span></code></pre><p>Command·3·builds·the·tuple·<code·class="inline">Descriptor</code>,·evaluating·the·BIF242 </span><span·class="p"·data-group-id="2463732094-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="2463732094-3">}</span></code></pre><p>Command·3·builds·the·tuple·<code·class="inline">Descriptor</code>,·evaluating·the·BIF
243 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#list_to_atom/1"><code·class="inline">list_to_atom/1</code>·</a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="n">L</span><span·class="p">.</span><span·class="w">243 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#list_to_atom/1"><code·class="inline">list_to_atom/1</code>·</a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="n">L</span><span·class="p">.</span><span·class="w">
244 </span><span·class="mi">4</span></code></pre><p>Command·4·prints·the·value·of·variable·<code·class="inline">L</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nf">b</span><span·class="p"·data-group-id="4382426890-1">(</span><span·class="p"·data-group-id="4382426890-1">)</span><span·class="p">.</span><span·class="w">244 </span><span·class="mi">4</span></code></pre><p>Command·4·prints·the·value·of·variable·<code·class="inline">L</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nf">b</span><span·class="p"·data-group-id="2358775165-1">(</span><span·class="p"·data-group-id="2358775165-1">)</span><span·class="p">.</span><span·class="w">
245 </span><span·class="n">Descriptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4382426890-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="4382426890-2">}</span><span·class="w">245 </span><span·class="n">Descriptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2358775165-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="2358775165-2">}</span><span·class="w">
246 </span><span·class="n">L</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">246 </span><span·class="n">L</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4</span><span·class="w">
247 </span><span·class="n">Str</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;abcd&quot;</span><span·class="w">247 </span><span·class="n">Str</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;abcd&quot;</span><span·class="w">
248 </span><span·class="ss">ok</span></code></pre><p>Command·5·evaluates·the·internal·shell·command·<code·class="inline">b()</code>,·which·is·an·abbreviation248 </span><span·class="ss">ok</span></code></pre><p>Command·5·evaluates·the·internal·shell·command·<code·class="inline">b()</code>,·which·is·an·abbreviation
249 of·&quot;bindings&quot;.·This·prints·the·current·shell·variables·and·their·bindings.·<code·class="inline">ok</code>249 of·&quot;bindings&quot;.·This·prints·the·current·shell·variables·and·their·bindings.·<code·class="inline">ok</code>
250 at·the·end·is·the·return·value·of·function·<code·class="inline">b()</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="9720885266-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="9720885266-1">)</span><span·class="p">.</span><span·class="w">250 at·the·end·is·the·return·value·of·function·<code·class="inline">b()</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="8292318305-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="8292318305-1">)</span><span·class="p">.</span><span·class="w">
251 </span><span·class="ss">ok</span></code></pre><p>Command·6·evaluates·the·internal·shell·command·<code·class="inline">f(L)</code>·(abbreviation·of251 </span><span·class="ss">ok</span></code></pre><p>Command·6·evaluates·the·internal·shell·command·<code·class="inline">f(L)</code>·(abbreviation·of
252 &quot;forget&quot;).·The·value·of·variable·<code·class="inline">L</code>·is·removed.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nf">b</span><span·class="p"·data-group-id="8244022986-1">(</span><span·class="p"·data-group-id="8244022986-1">)</span><span·class="p">.</span><span·class="w">252 &quot;forget&quot;).·The·value·of·variable·<code·class="inline">L</code>·is·removed.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nf">b</span><span·class="p"·data-group-id="3967968918-1">(</span><span·class="p"·data-group-id="3967968918-1">)</span><span·class="p">.</span><span·class="w">
253 </span><span·class="n">Descriptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8244022986-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="8244022986-2">}</span><span·class="w">253 </span><span·class="n">Descriptor</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3967968918-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="3967968918-2">}</span><span·class="w">
254 </span><span·class="n">Str</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;abcd&quot;</span><span·class="w">254 </span><span·class="n">Str</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;abcd&quot;</span><span·class="w">
255 </span><span·class="ss">ok</span></code></pre><p>Command·7·prints·the·new·bindings.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="2454024652-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="2454024652-1">)</span><span·class="p">.</span><span·class="w">255 </span><span·class="ss">ok</span></code></pre><p>Command·7·prints·the·new·bindings.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">8&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="0451031162-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="0451031162-1">)</span><span·class="p">.</span><span·class="w">
256 </span><span·class="ss">ok</span></code></pre><p>Command·8·has·no·effect,·as·<code·class="inline">L</code>·has·no·value.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="p"·data-group-id="9848833775-1">{</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="9848833775-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">256 </span><span·class="ss">ok</span></code></pre><p>Command·8·has·no·effect,·as·<code·class="inline">L</code>·has·no·value.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="p"·data-group-id="0377451262-1">{</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="0377451262-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">
257 </span><span·class="p"·data-group-id="9848833775-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="9848833775-2">}</span></code></pre><p>Command·9·performs·a·pattern·matching·operation·on·<code·class="inline">Descriptor</code>,·binding·a·new257 </span><span·class="p"·data-group-id="0377451262-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="0377451262-2">}</span></code></pre><p>Command·9·performs·a·pattern·matching·operation·on·<code·class="inline">Descriptor</code>,·binding·a·new
258 value·to·<code·class="inline">L</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">10&gt;·</span><span·class="n">L</span><span·class="p">.</span><span·class="w">258 value·to·<code·class="inline">L</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">10&gt;·</span><span·class="n">L</span><span·class="p">.</span><span·class="w">
259 </span><span·class="mi">4</span></code></pre><p>Command·10·prints·the·current·value·of·<code·class="inline">L</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">11&gt;·</span><span·class="p"·data-group-id="8094292626-1">{</span><span·class="n">P</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Q</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p"·data-group-id="8094292626-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">259 </span><span·class="mi">4</span></code></pre><p>Command·10·prints·the·current·value·of·<code·class="inline">L</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">11&gt;·</span><span·class="p"·data-group-id="4814463799-1">{</span><span·class="n">P</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Q</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p"·data-group-id="4814463799-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">
260 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·{4,abcd}</span></code></pre><p>Command·11·tries·to·match·<code·class="inline">{P,·Q,·R}</code>·against·<code·class="inline">Descriptor</code>,·which·is·<code·class="inline">{4,·abc}</code>.260 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·{4,abcd}</span></code></pre><p>Command·11·tries·to·match·<code·class="inline">{P,·Q,·R}</code>·against·<code·class="inline">Descriptor</code>,·which·is·<code·class="inline">{4,·abc}</code>.
261 The·match·fails·and·none·of·the·new·variables·become·bound.·The·printout261 The·match·fails·and·none·of·the·new·variables·become·bound.·The·printout
262 starting·with·&quot;<code·class="inline">**·exception·error:</code>&quot;·is·not·the·value·of·the·expression·(the262 starting·with·&quot;<code·class="inline">**·exception·error:</code>&quot;·is·not·the·value·of·the·expression·(the
263 expression·had·no·value·because·its·evaluation·failed),·but·a·warning·printed·by263 expression·had·no·value·because·its·evaluation·failed),·but·a·warning·printed·by
264 the·system·to·inform·the·user·that·an·error·has·occurred.·The·values·of·the264 the·system·to·inform·the·user·that·an·error·has·occurred.·The·values·of·the
265 other·variables·(<code·class="inline">L</code>,·<code·class="inline">Str</code>,·and·so·on)·are·unchanged.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">12&gt;·</span><span·class="n">P</span><span·class="p">.</span><span·class="w">265 other·variables·(<code·class="inline">L</code>,·<code·class="inline">Str</code>,·and·so·on)·are·unchanged.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">12&gt;·</span><span·class="n">P</span><span·class="p">.</span><span·class="w">
266 </span><span·class="gt">*·1:1:·variable·&#39;P&#39;·is·unbound</span><span·class="gp·unselectable">266 </span><span·class="gt">*·1:1:·variable·&#39;P&#39;·is·unbound</span><span·class="gp·unselectable">
267 13&gt;·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">267 13&gt;·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">
268 </span><span·class="p"·data-group-id="0138730984-1">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="0138730984-1">}</span></code></pre><p>Commands·12·and·13·show·that·<code·class="inline">P</code>·is·unbound·because·the·previous·command·failed,268 </span><span·class="p"·data-group-id="3482175076-1">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="3482175076-1">}</span></code></pre><p>Commands·12·and·13·show·that·<code·class="inline">P</code>·is·unbound·because·the·previous·command·failed,
269 and·that·<code·class="inline">Descriptor</code>·has·not·changed.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">14</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3655275726-1">{</span><span·class="n">P</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Q</span><span·class="p"·data-group-id="3655275726-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">269 and·that·<code·class="inline">Descriptor</code>·has·not·changed.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">14</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2256829999-1">{</span><span·class="n">P</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Q</span><span·class="p"·data-group-id="2256829999-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Descriptor</span><span·class="p">.</span><span·class="w">
270 </span><span·class="p"·data-group-id="3655275726-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="3655275726-2">}</span><span·class="gp·unselectable">270 </span><span·class="p"·data-group-id="2256829999-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="2256829999-2">}</span><span·class="gp·unselectable">
271 15&gt;·</span><span·class="n">P</span><span·class="p">.</span><span·class="w">271 15&gt;·</span><span·class="n">P</span><span·class="p">.</span><span·class="w">
272 </span><span·class="mi">4</span></code></pre><p>Commands·14·and·15·show·a·correct·match·where·<code·class="inline">P</code>·and·<code·class="inline">Q</code>·are·bound.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">16&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="8935661216-1">(</span><span·class="p"·data-group-id="8935661216-1">)</span><span·class="p">.</span><span·class="w">272 </span><span·class="mi">4</span></code></pre><p>Commands·14·and·15·show·a·correct·match·where·<code·class="inline">P</code>·and·<code·class="inline">Q</code>·are·bound.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">16&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="4198944420-1">(</span><span·class="p"·data-group-id="4198944420-1">)</span><span·class="p">.</span><span·class="w">
273 </span><span·class="ss">ok</span></code></pre><p>Command·16·clears·all·bindings.</p><p>The·next·few·commands·assume·that·<code·class="inline">test1:demo(X)</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">demo</span><span·class="p"·data-group-id="0091205759-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="0091205759-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">273 </span><span·class="ss">ok</span></code></pre><p>Command·16·clears·all·bindings.</p><p>The·next·few·commands·assume·that·<code·class="inline">test1:demo(X)</code>·is·defined·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">demo</span><span·class="p"·data-group-id="7701104784-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="7701104784-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
274 </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="nf">put</span><span·class="p"·data-group-id="0091205759-2">(</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">worked</span><span·class="p"·data-group-id="0091205759-2">)</span><span·class="p">,</span><span·class="w">274 </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="nf">put</span><span·class="p"·data-group-id="7701104784-2">(</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">worked</span><span·class="p"·data-group-id="7701104784-2">)</span><span·class="p">,</span><span·class="w">
275 </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">275 </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="n">X</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
276 </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="n">X</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">17&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="3124720905-1">(</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hello</span><span·class="p"·data-group-id="3124720905-1">)</span><span·class="p">.</span><span·class="w">276 </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="err"> </span><span·class="n">X</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">17&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="2817006931-1">(</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hello</span><span·class="p"·data-group-id="2817006931-1">)</span><span·class="p">.</span><span·class="w">
277 </span><span·class="ss">undefined</span><span·class="gp·unselectable">277 </span><span·class="ss">undefined</span><span·class="gp·unselectable">
278 18&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="3124720905-2">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="3124720905-2">)</span><span·class="p">.</span><span·class="w">278 18&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="2817006931-2">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="2817006931-2">)</span><span·class="p">.</span><span·class="w">
279 </span><span·class="ss">hello</span></code></pre><p>Commands·17·and·18·set·and·inspect·the·value·of·item·<code·class="inline">aa</code>·in·the·process279 </span><span·class="ss">hello</span></code></pre><p>Commands·17·and·18·set·and·inspect·the·value·of·item·<code·class="inline">aa</code>·in·the·process
280 dictionary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">19&gt;·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">test1</span><span·class="p">:</span><span·class="nf">demo</span><span·class="p"·data-group-id="9347817186-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="9347817186-1">)</span><span·class="p">.</span><span·class="w">280 dictionary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">19&gt;·</span><span·class="n">Y</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">test1</span><span·class="p">:</span><span·class="nf">demo</span><span·class="p"·data-group-id="4614681689-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="4614681689-1">)</span><span·class="p">.</span><span·class="w">
281 </span><span·class="mi">11</span></code></pre><p>Command·19·evaluates·<code·class="inline">test1:demo(1)</code>.·The·evaluation·succeeds·and·the·changes281 </span><span·class="mi">11</span></code></pre><p>Command·19·evaluates·<code·class="inline">test1:demo(1)</code>.·The·evaluation·succeeds·and·the·changes
282 made·in·the·process·dictionary·become·visible·to·the·shell.·The·new·value·of282 made·in·the·process·dictionary·become·visible·to·the·shell.·The·new·value·of
283 dictionary·item·<code·class="inline">aa</code>·can·be·seen·in·command·20.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">20&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="5135976265-1">(</span><span·class="p"·data-group-id="5135976265-1">)</span><span·class="p">.</span><span·class="w">283 dictionary·item·<code·class="inline">aa</code>·can·be·seen·in·command·20.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">20&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="6738048984-1">(</span><span·class="p"·data-group-id="6738048984-1">)</span><span·class="p">.</span><span·class="w">
284 </span><span·class="p"·data-group-id="5135976265-2">[</span><span·class="p"·data-group-id="5135976265-3">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="ss">worked</span><span·class="p"·data-group-id="5135976265-3">}</span><span·class="p"·data-group-id="5135976265-2">]</span><span·class="gp·unselectable">284 </span><span·class="p"·data-group-id="6738048984-2">[</span><span·class="p"·data-group-id="6738048984-3">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="ss">worked</span><span·class="p"·data-group-id="6738048984-3">}</span><span·class="p"·data-group-id="6738048984-2">]</span><span·class="gp·unselectable">
285 21&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="5135976265-4">(</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hello</span><span·class="p"·data-group-id="5135976265-4">)</span><span·class="p">.</span><span·class="w">285 21&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="6738048984-4">(</span><span·class="ss">aa</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">hello</span><span·class="p"·data-group-id="6738048984-4">)</span><span·class="p">.</span><span·class="w">
286 </span><span·class="ss">worked</span><span·class="gp·unselectable">286 </span><span·class="ss">worked</span><span·class="gp·unselectable">
287 22&gt;·</span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">test1</span><span·class="p">:</span><span·class="nf">demo</span><span·class="p"·data-group-id="5135976265-5">(</span><span·class="mi">2</span><span·class="p"·data-group-id="5135976265-5">)</span><span·class="p">.</span><span·class="w">287 22&gt;·</span><span·class="n">Z</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">test1</span><span·class="p">:</span><span·class="nf">demo</span><span·class="p"·data-group-id="6738048984-5">(</span><span·class="mi">2</span><span·class="p"·data-group-id="6738048984-5">)</span><span·class="p">.</span><span·class="w">
288 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·1288 </span><span·class="gt">**·exception·error:·no·match·of·right·hand·side·value·1
289 ·····in·function··test1:demo/1</span></code></pre><p>Commands·21·and·22·change·the·value·of·dictionary·item·<code·class="inline">aa</code>·to·<code·class="inline">hello</code>·and·call289 ·····in·function··test1:demo/1</span></code></pre><p>Commands·21·and·22·change·the·value·of·dictionary·item·<code·class="inline">aa</code>·to·<code·class="inline">hello</code>·and·call
290 <code·class="inline">test1:demo(2)</code>.·Evaluation·fails·and·the·changes·made·to·the·dictionary·in290 <code·class="inline">test1:demo(2)</code>.·Evaluation·fails·and·the·changes·made·to·the·dictionary·in
291 <code·class="inline">test1:demo(2)</code>,·before·the·error·occurred,·are·discarded.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">23&gt;·</span><span·class="n">Z</span><span·class="p">.</span><span·class="w">291 <code·class="inline">test1:demo(2)</code>,·before·the·error·occurred,·are·discarded.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">23&gt;·</span><span·class="n">Z</span><span·class="p">.</span><span·class="w">
292 </span><span·class="gt">*·1:1:·variable·&#39;Z&#39;·is·unbound</span><span·class="gp·unselectable">292 </span><span·class="gt">*·1:1:·variable·&#39;Z&#39;·is·unbound</span><span·class="gp·unselectable">
293 24&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="8351744343-1">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="8351744343-1">)</span><span·class="p">.</span><span·class="w">293 24&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="1084032678-1">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="1084032678-1">)</span><span·class="p">.</span><span·class="w">
294 </span><span·class="ss">hello</span></code></pre><p>Commands·23·and·24·show·that·<code·class="inline">Z</code>·was·not·bound·and·that·dictionary·item·<code·class="inline">aa</code>·has294 </span><span·class="ss">hello</span></code></pre><p>Commands·23·and·24·show·that·<code·class="inline">Z</code>·was·not·bound·and·that·dictionary·item·<code·class="inline">aa</code>·has
295 retained·its·original·value.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">25&gt;·</span><span·class="nf">erase</span><span·class="p"·data-group-id="8635914953-1">(</span><span·class="p"·data-group-id="8635914953-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">put</span><span·class="p"·data-group-id="8635914953-2">(</span><span·class="ss">aa</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·9658ffb1e98d38e0177c36432ac90404c70dba39829467a81ec12da8738d9b76·...·]-2">)</span><span·class="p">.</span><span·class="w">295 retained·its·original·value.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">25&gt;·</span><span·class="nf">erase</span><span·class="p"·data-group-id="4779636112-1">(</span><span·class="p"·data-group-id="4779636112-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">put</span><span·class="p"·data-group-id="4779636112-2">(</span><span·class="ss">aa</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·6dae4d52576fc8a1cffdac5def8b82f8386e36bb8f67d0ef7ab84c73333592a3·...·]-2">)</span><span·class="p">.</span><span·class="w">
296 </span><span·class="ss">undefined</span><span·class="gp·unselectable">296 </span><span·class="ss">undefined</span><span·class="gp·unselectable">
297 26&gt;·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8635914953-3">(</span><span·class="ss">test1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">demo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8635914953-4">[</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·b6e6caaf32146ec1af7374b82b4a53c3d39580b26f0f5d8cfbc009acae226412·...·]-3">)</span><span·class="p">.</span><span·class="w">297 26&gt;·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4779636112-3">(</span><span·class="ss">test1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">demo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4779636112-4">[</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·28752573951b57d7111f6e8cfbbae61092c872f63735c3353c5cb1ed6f1aab35·...·]-3">)</span><span·class="p">.</span><span·class="w">
298 </span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">298 </span><span·class="o">&lt;</span><span·class="mf">0.57</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
299 27&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="8635914953-5">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="8635914953-5">)</span><span·class="p">.</span><span·class="w">299 27&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="4779636112-5">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="4779636112-5">)</span><span·class="p">.</span><span·class="w">
300 </span><span·class="ss">hello</span></code></pre><p>Commands·25,·26,·and·27·show·the·effect·of·evaluating·<code·class="inline">test1:demo(1)</code>·in·the300 </span><span·class="ss">hello</span></code></pre><p>Commands·25,·26,·and·27·show·the·effect·of·evaluating·<code·class="inline">test1:demo(1)</code>·in·the
301 background.·In·this·case,·the·expression·is·evaluated·in·a·newly·spawned301 background.·In·this·case,·the·expression·is·evaluated·in·a·newly·spawned
302 process.·Any·changes·made·in·the·process·dictionary·are·local·to·the·newly302 process.·Any·changes·made·in·the·process·dictionary·are·local·to·the·newly
303 spawned·process·and·therefore·not·visible·to·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">28&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0355906861-1">(</span><span·class="s">&quot;hello·hello\n&quot;</span><span·class="p"·data-group-id="0355906861-1">)</span><span·class="p">.</span><span·class="w">303 spawned·process·and·therefore·not·visible·to·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">28&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4579389937-1">(</span><span·class="s">&quot;hello·hello\n&quot;</span><span·class="p"·data-group-id="4579389937-1">)</span><span·class="p">.</span><span·class="w">
304 </span><span·class="ss">hello</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">304 </span><span·class="ss">hello</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">
305 </span><span·class="ss">ok</span><span·class="gp·unselectable">305 </span><span·class="ss">ok</span><span·class="gp·unselectable">
306 29&gt;·</span><span·class="nf">e</span><span·class="p"·data-group-id="0355906861-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="0355906861-2">)</span><span·class="p">.</span><span·class="w">306 29&gt;·</span><span·class="nf">e</span><span·class="p"·data-group-id="4579389937-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="4579389937-2">)</span><span·class="p">.</span><span·class="w">
307 </span><span·class="ss">hello</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">307 </span><span·class="ss">hello</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">
308 </span><span·class="ss">ok</span><span·class="gp·unselectable">308 </span><span·class="ss">ok</span><span·class="gp·unselectable">
309 30&gt;·</span><span·class="nf">v</span><span·class="p"·data-group-id="0355906861-3">(</span><span·class="mi">28</span><span·class="p"·data-group-id="0355906861-3">)</span><span·class="p">.</span><span·class="w">309 30&gt;·</span><span·class="nf">v</span><span·class="p"·data-group-id="4579389937-3">(</span><span·class="mi">28</span><span·class="p"·data-group-id="4579389937-3">)</span><span·class="p">.</span><span·class="w">
310 </span><span·class="ss">ok</span></code></pre><p>Commands·28,·29·and·30·use·the·history·facilities·of·the·shell.·Command·29310 </span><span·class="ss">ok</span></code></pre><p>Commands·28,·29·and·30·use·the·history·facilities·of·the·shell.·Command·29
311 re-evaluates·command·28.·Command·30·uses·the·value·(result)·of·command·28.·In311 re-evaluates·command·28.·Command·30·uses·the·value·(result)·of·command·28.·In
312 the·cases·of·a·pure·function·(a·function·with·no·side·effects),·the·result·is312 the·cases·of·a·pure·function·(a·function·with·no·side·effects),·the·result·is
313 the·same.·For·a·function·with·side·effects,·the·result·can·be·different.</p><p>The·next·few·commands·show·some·record·manipulation.·It·is·assumed·that·<code·class="inline">ex.erl</code>313 the·same.·For·a·function·with·side·effects,·the·result·can·be·different.</p><p>The·next·few·commands·show·some·record·manipulation.·It·is·assumed·that·<code·class="inline">ex.erl</code>
314 defines·a·record·as·follows:</p><p><code·class="inline">-record(rec,·{a,·b·=·val()}).</code></p><p><code·class="inline">val()·-&gt;</code><br/>    <code·class="inline">3.</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">31&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="5110479499-1">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="5110479499-1">)</span><span·class="p">.</span><span·class="w">314 defines·a·record·as·follows:</p><p><code·class="inline">-record(rec,·{a,·b·=·val()}).</code></p><p><code·class="inline">val()·-&gt;</code><br/>    <code·class="inline">3.</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">31&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="2918481207-1">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="2918481207-1">)</span><span·class="p">.</span><span·class="w">
315 </span><span·class="p"·data-group-id="5110479499-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">ex</span><span·class="p"·data-group-id="5110479499-2">}</span><span·class="gp·unselectable">315 </span><span·class="p"·data-group-id="2918481207-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">ex</span><span·class="p"·data-group-id="2918481207-2">}</span><span·class="gp·unselectable">
316 32&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="5110479499-3">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="5110479499-3">)</span><span·class="p">.</span><span·class="w">316 32&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="2918481207-3">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="2918481207-3">)</span><span·class="p">.</span><span·class="w">
317 </span><span·class="p"·data-group-id="5110479499-4">[</span><span·class="ss">rec</span><span·class="p"·data-group-id="5110479499-4">]</span></code></pre><p>Commands·31·and·32·compile·file·<code·class="inline">ex.erl</code>·and·read·the·record·definitions·in317 </span><span·class="p"·data-group-id="2918481207-4">[</span><span·class="ss">rec</span><span·class="p"·data-group-id="2918481207-4">]</span></code></pre><p>Commands·31·and·32·compile·file·<code·class="inline">ex.erl</code>·and·read·the·record·definitions·in
318 <code·class="inline">ex.beam</code>.·If·the·compiler·did·not·output·any·record·definitions·on·the·BEAM318 <code·class="inline">ex.beam</code>.·If·the·compiler·did·not·output·any·record·definitions·on·the·BEAM
319 file,·<code·class="inline">rr(ex)</code>·tries·to·read·record·definitions·from·the·source·file·instead.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">33&gt;·</span><span·class="nf">rl</span><span·class="p"·data-group-id="3029337050-1">(</span><span·class="ss">rec</span><span·class="p"·data-group-id="3029337050-1">)</span><span·class="p">.</span><span·class="w">319 file,·<code·class="inline">rr(ex)</code>·tries·to·read·record·definitions·from·the·source·file·instead.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">33&gt;·</span><span·class="nf">rl</span><span·class="p"·data-group-id="8514438275-1">(</span><span·class="ss">rec</span><span·class="p"·data-group-id="8514438275-1">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="3029337050-2">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="p"·data-group-id="3029337050-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·243,·SHA:·a606b15d9d4cdd9bec306aea3285ef5e60c70ad4fd307f743648e8dcad138b67·...·]-2">)</span><span·class="p">.</span><span·class="w">320 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8514438275-2">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="p"·data-group-id="8514438275-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·cl[·...·truncated·by·diffoscope;·len:·243,·SHA:·7b75ea83f171a84a954b518f8c17beb78d0aa9cadad2d6735353ffe855cb8117·...·]-2">)</span><span·class="p">.</span><span·class="w">
321 </span><span·class="ss">ok</span></code></pre><p>Command·33·prints·the·definition·of·the·record·named·<code·class="inline">rec</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">34&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="5825946481-1">{</span><span·class="p"·data-group-id="5825946481-1">}</span><span·class="p">.</span><span·class="w">321 </span><span·class="ss">ok</span></code></pre><p>Command·33·prints·the·definition·of·the·record·named·<code·class="inline">rec</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">34&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="7491502582-1">{</span><span·class="p"·data-group-id="7491502582-1">}</span><span·class="p">.</span><span·class="w">
322 </span><span·class="gt">**·exception·error:·undefined·shell·command·val/0</span></code></pre><p>Command·34·tries·to·create·a·<code·class="inline">rec</code>·record,·but·fails·as·function·<code·class="inline">val/0</code>·is322 </span><span·class="gt">**·exception·error:·undefined·shell·command·val/0</span></code></pre><p>Command·34·tries·to·create·a·<code·class="inline">rec</code>·record,·but·fails·as·function·<code·class="inline">val/0</code>·is
323 undefined.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">35&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6533939829-1">{</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="6533939829-1">}</span><span·class="p">.</span><span·class="w">323 undefined.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">35&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="0882916533-1">{</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="0882916533-1">}</span><span·class="p">.</span><span·class="w">
324 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6533939829-2">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">3</span><span·class="p"·data-group-id="6533939829-2">}</span></code></pre><p>Command·35·shows·the·workaround:·explicitly·assign·values·to·record·fields·that 
325 cannot·otherwise·be·initialized.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">36&gt;·</span><span·class="nf">rp</span><span·class="p"·data-group-id="1180296802-1">(</span><span·class="nf">v</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·224,·SHA:·cb695e0101f9ea56c463547c0f8ae2085968ccc0e04733563248dd0f5360820a·...·]324 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="0882916533-2">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"[·...·truncated·by·diffoscope;·len:·279,·SHA:·571450e132a98e957dc4d5557bc1dee4e7aecd2ff7506dfbc18b8547fb8ad3ec·...·]
 325 cannot·otherwise·be·initialized.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">36&gt;·</span><span·class="nf">rp</span><span·class="p"·data-group-id="9650975986-1">(</span><span·class="nf">v</span><span·class="p"·data-group-id="9650975986-2">(</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="9650975986-2">)</span><span·class="p"·data-group-id="9650975986-1">)</span><span·class="p">.</span><span·class="w">
326 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1180296802-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·f84a3e8ee54549b051eb8d7f8450337b7aa3d4338eafc93b9c3adebebaa38378·...·]-3">}</span><span·class="w">326 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9650975986-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·6373069e7d3888cc676ef59e108f8c7b94fb3ea2e9a9efc2ee4eae17df2a43ff·...·]-3">}</span><span·class="w">
327 </span><span·class="ss">ok</span></code></pre><p>Command·36·prints·the·newly·created·record·using·record·definitions·maintained327 </span><span·class="ss">ok</span></code></pre><p>Command·36·prints·the·newly·created·record·using·record·definitions·maintained
328 by·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">37&gt;·</span><span·class="nf">rd</span><span·class="p"·data-group-id="5923416516-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5923416516-2">{</span><span·class="ss">f</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·273,·SHA:·0537c47613f06bd2bf29ddd1cb57a82c7888f5d3990afe9859ce5443bf47085f·...·]-1">)</span><span·class="p">.</span><span·class="w">328 by·the·shell.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">37&gt;·</span><span·class="nf">rd</span><span·class="p"·data-group-id="1318475915-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1318475915-2">{</span><span·class="ss">f</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·273,·SHA:·23de862d9c4d51d6c6a7213a1dc5fff2cbfb3adca1bfd30d067b111062f7be1d·...·]-1">)</span><span·class="p">.</span><span·class="w">
329 </span><span·class="ss">rec</span></code></pre><p>Command·37·defines·a·record·directly·in·the·shell.·The·definition·replaces·the329 </span><span·class="ss">rec</span></code></pre><p>Command·37·defines·a·record·directly·in·the·shell.·The·definition·replaces·the
330 one·read·from·file·<code·class="inline">ex.beam</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">38&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9923657013-1">{</span><span·class="p"·data-group-id="9923657013-1">}</span><span·class="p">.</span><span·class="w">330 one·read·from·file·<code·class="inline">ex.beam</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">38&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9415731859-1">{</span><span·class="p"·data-group-id="9415731859-1">}</span><span·class="p">.</span><span·class="w">
331 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9923657013-2">{</span><span·class="ss">f</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9923657013-3">[</span><span·class="p"·data-group-id="9923657013-3">]</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·9,·SHA:·28eff30b0e2e21549cdc8c241b9befafb9d39f48ef1346cc582a5bd7e2d81e62·...·]-2">}</span><span·class="w">331 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9415731859-2">{</span><span·class="ss">f</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9415731859-3">[</span><span·class="p"·data-group-id="9415731859-3">]</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·9,·SHA:·84519fa71c4d1e3eccadbd9fd9c008f3b677648ba054c4bf912f24a7b63c5661·...·]-2">}</span><span·class="w">
332 </span><span·class="ss">ok</span></code></pre><p>Command·38·creates·a·record·using·the·new·definition,·and·prints·the·result.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">39&gt;·</span><span·class="nf">rd</span><span·class="p"·data-group-id="3432637187-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3432637187-2">{</span><span·class="ss">c</span><span·class="p"·data-group-id="3432637187-2">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·12,·SHA:·ad844680dfd71ffb5e36f939434f4fb2bcf80d14630f61f75e8c6ed8ddb7e129·...·]7-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p">.</span><span·class="w">332 </span><span·class="ss">ok</span></code></pre><p>Command·38·creates·a·record·using·the·new·definition,·and·prints·the·result.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">39&gt;·</span><span·class="nf">rd</span><span·class="p"·data-group-id="4211607007-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4211607007-2">{</span><span·class="ss">c</span><span·class="p"·data-group-id="4211607007-2">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·12,·SHA:·1505c47a5b05e08ce1a9bcca85b7c2a99cae17d641d84994c91cbef964e4f150·...·]7-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·class="p">.</span><span·class="w">
333 </span><span·class="gt">*·1:15:·variable·&#39;A&#39;·is·unbound</span><span·class="gp·unselectable">333 </span><span·class="gt">*·1:15:·variable·&#39;A&#39;·is·unbound</span><span·class="gp·unselectable">
334 40&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="3432637187-3">{</span><span·class="p"·data-group-id="3432637187-3">}</span><span·class="p">.</span><span·class="w">334 40&gt;·</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="4211607007-3">{</span><span·class="p"·data-group-id="4211607007-3">}</span><span·class="p">.</span><span·class="w">
335 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="3432637187-4">{</span><span·class="ss">c</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="3432637187-4">}</span><span·class="w">335 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="4211607007-4">{</span><span·class="ss">c</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="4211607007-4">}</span><span·class="w">
336 </span><span·class="ss">ok</span></code></pre><p>Command·39·and·40·show·that·record·definitions·are·updated·as·side·effects.·The336 </span><span·class="ss">ok</span></code></pre><p>Command·39·and·40·show·that·record·definitions·are·updated·as·side·effects.·The
337 evaluation·of·the·command·fails,·but·the·definition·of·<code·class="inline">rec</code>·has·been·carried337 evaluation·of·the·command·fails,·but·the·definition·of·<code·class="inline">rec</code>·has·been·carried
338 out.</p><p>For·the·next·command,·it·is·assumed·that·<code·class="inline">test1:loop(N)</code>·is·defined·as·follows:</p><p><code·class="inline">loop(N)·-&gt;</code><br/>    <code·class="inline">io:format(&quot;Hello·Number:·~w~n&quot;,·[N]),</code><br/>    <code·class="inline">loop(N+1).</code></p><pre><code·class="text">41&gt;·test1:loop(0).338 out.</p><p>For·the·next·command,·it·is·assumed·that·<code·class="inline">test1:loop(N)</code>·is·defined·as·follows:</p><p><code·class="inline">loop(N)·-&gt;</code><br/>    <code·class="inline">io:format(&quot;Hello·Number:·~w~n&quot;,·[N]),</code><br/>    <code·class="inline">loop(N+1).</code></p><pre><code·class="text">41&gt;·test1:loop(0).
Max diff block lines reached; 22920/74685 bytes (30.69%) of diff not shown.
3.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/shell_default.html
    
Offset 125, 18 lines modifiedOffset 125, 18 lines modified
125 ····<small·class="app-vsn"·translate="no">(stdlib·v6.2)</small>125 ····<small·class="app-vsn"·translate="no">(stdlib·v6.2)</small>
  
126 ··</h1>126 ··</h1>
  
  
127 ····<section·id="moduledoc">127 ····<section·id="moduledoc">
128 <p>Customizing·the·Erlang·environment.</p><p>The·functions·in·this·module·are·called·when·no·module·name·is·specified·in·a128 <p>Customizing·the·Erlang·environment.</p><p>The·functions·in·this·module·are·called·when·no·module·name·is·specified·in·a
129 shell·command.</p><p>Consider·the·following·shell·dialog:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="6049221780-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="6049221780-1">)</span><span·class="p">.</span><span·class="w">129 shell·command.</p><p>Consider·the·following·shell·dialog:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="7863619792-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="7863619792-1">)</span><span·class="p">.</span><span·class="w">
130 </span><span·class="s">&quot;cba&quot;</span><span·class="gp·unselectable">130 </span><span·class="s">&quot;cba&quot;</span><span·class="gp·unselectable">
131 2&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="6049221780-2">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="6049221780-2">)</span><span·class="p">.</span><span·class="w">131 2&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="7863619792-2">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="7863619792-2">)</span><span·class="p">.</span><span·class="w">
132 </span><span·class="p"·data-group-id="6049221780-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p"·data-group-id="6049221780-3">}</span></code></pre><p>In·command·one,·module·<a·href="lists.html"><code·class="inline">lists</code></a>·is·called.·In·command·two,·no·module·name·is132 </span><span·class="p"·data-group-id="7863619792-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p"·data-group-id="7863619792-3">}</span></code></pre><p>In·command·one,·module·<a·href="lists.html"><code·class="inline">lists</code></a>·is·called.·In·command·two,·no·module·name·is
133 specified.·The·shell·searches·module·<code·class="inline">user_default</code>·followed·by·module133 specified.·The·shell·searches·module·<code·class="inline">user_default</code>·followed·by·module
134 <code·class="inline">shell_default</code>·for·function·<code·class="inline">c/1</code>.</p><p><code·class="inline">shell_default</code>·is·intended·for·&quot;system·wide&quot;·customizations·to·the·shell.134 <code·class="inline">shell_default</code>·for·function·<code·class="inline">c/1</code>.</p><p><code·class="inline">shell_default</code>·is·intended·for·&quot;system·wide&quot;·customizations·to·the·shell.
135 <code·class="inline">user_default</code>·is·intended·for·&quot;local&quot;·or·individual·user·customizations.</p><h2·id="module-hint"·class="section-heading">135 <code·class="inline">user_default</code>·is·intended·for·&quot;local&quot;·or·individual·user·customizations.</p><h2·id="module-hint"·class="section-heading">
136 ··<a·href="#module-hint"·class="hover-link">136 ··<a·href="#module-hint"·class="hover-link">
137 ····<i·class="ri-link-m"·aria-hidden="true"></i>137 ····<i·class="ri-link-m"·aria-hidden="true"></i>
138 ··</a>138 ··</a>
139 ··<span·class="text">Hint</span>139 ··<span·class="text">Hint</span>
8.02 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/slave.html
    
Offset 367, 15 lines modifiedOffset 367, 15 lines modified
367 ······</div>367 ······</div>
  
368 <p>Starts·a·number·of·pseudo·servers.·A·pseudo·server·is·a·server·with·a·registered368 <p>Starts·a·number·of·pseudo·servers.·A·pseudo·server·is·a·server·with·a·registered
369 name·that·does·nothing·but·pass·on·all·message·to·the·real·server·that·executes369 name·that·does·nothing·but·pass·on·all·message·to·the·real·server·that·executes
370 at·a·master·node.·A·pseudo·server·is·an·intermediary·that·only·has·the·same370 at·a·master·node.·A·pseudo·server·is·an·intermediary·that·only·has·the·same
371 registered·name·as·the·real·server.</p><p>For·example,·if·you·have·started·a·slave·node·<code·class="inline">N</code>·and·want·to·execute·<code·class="inline">pxw</code>371 registered·name·as·the·real·server.</p><p>For·example,·if·you·have·started·a·slave·node·<code·class="inline">N</code>·and·want·to·execute·<code·class="inline">pxw</code>
372 graphics·code·on·this·node,·you·can·start·server·<code·class="inline">pxw_server</code>·as·a·pseudo·server372 graphics·code·on·this·node,·you·can·start·server·<code·class="inline">pxw_server</code>·as·a·pseudo·server
373 at·the·slave·node.·This·is·illustrated·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">rpc</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8402507787-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">slave</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pseudo</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·462,·SHA:·ec4f30f6e7fd161f35e0302d7d295f9b8814beaffc5960bba05a68fc67357731·...·]-1">)</span><span·class="p">.</span></code></pre>373 at·the·slave·node.·This·is·illustrated·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">rpc</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="4360419815-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">slave</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pseudo</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·462,·SHA:·70b5a8831c70bb68e32057e3e467ab710f66dea650f2f0db4332353300103bbe·...·]-1">)</span><span·class="p">.</span></code></pre>
374 ··</section>374 ··</section>
375 </section>375 </section>
376 <section·class="detail"·id="relay/1">376 <section·class="detail"·id="relay/1">
  
377 ··<div·class="detail-header">377 ··<div·class="detail-header">
378 ····<a·href="#relay/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">378 ····<a·href="#relay/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
379 ······<i·class="ri-link-m"·aria-hidden="true"></i>379 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 513, 17 lines modifiedOffset 513, 17 lines modified
513 as·fully·qualified·names;·short·names·can·also·be·used.·This·is·the·same513 as·fully·qualified·names;·short·names·can·also·be·used.·This·is·the·same
514 condition·that·applies·to·names·of·distributed·Erlang·nodes.</p><p>The·name·of·the·started·node·becomes·<code·class="inline">Name@Host</code>.</p><p>The·slave·node·resets·its·<a·href="io.html#t:user/0"><code·class="inline">io:user/0</code></a>·process·so·that·all·terminal·I/O·that·is514 condition·that·applies·to·names·of·distributed·Erlang·nodes.</p><p>The·name·of·the·started·node·becomes·<code·class="inline">Name@Host</code>.</p><p>The·slave·node·resets·its·<a·href="io.html#t:user/0"><code·class="inline">io:user/0</code></a>·process·so·that·all·terminal·I/O·that·is
515 produced·at·the·slave·is·automatically·relayed·to·the·master.·Also,·the·file515 produced·at·the·slave·is·automatically·relayed·to·the·master.·Also,·the·file
516 server·is·relayed·to·the·master.</p><p>Argument·<code·class="inline">Args</code>·is·used·to·set·<code·class="inline">erl</code>·command-line·arguments.·It·is516 server·is·relayed·to·the·master.</p><p>Argument·<code·class="inline">Args</code>·is·used·to·set·<code·class="inline">erl</code>·command-line·arguments.·It·is
517 passed·to·the·new·node·and·can·be·used·for·a·variety·of·purposes;·see517 passed·to·the·new·node·and·can·be·used·for·a·variety·of·purposes;·see
518 <a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html"><code·class="inline">erl(1)</code></a>.</p><p>As·an·example,·suppose·that·you·want·to·start·a·slave·node·at·host·<code·class="inline">H</code>·with·node518 <a·href="../../../../erts-15.2.2/doc/html/erl_cmd.html"><code·class="inline">erl(1)</code></a>.</p><p>As·an·example,·suppose·that·you·want·to·start·a·slave·node·at·host·<code·class="inline">H</code>·with·node
519 name·<code·class="inline">Name@H</code>·and·want·the·slave·node·to·have·the·following·properties:</p><ul><li>Directory·<code·class="inline">Dir</code>·is·to·be·added·to·the·code·path.</li><li>The·Mnesia·directory·is·to·be·set·to·<code·class="inline">M</code>.</li><li>The·Unix·<code·class="inline">DISPLAY</code>·environment·variable·is·to·be·set·to·the·display·of·the519 name·<code·class="inline">Name@H</code>·and·want·the·slave·node·to·have·the·following·properties:</p><ul><li>Directory·<code·class="inline">Dir</code>·is·to·be·added·to·the·code·path.</li><li>The·Mnesia·directory·is·to·be·set·to·<code·class="inline">M</code>.</li><li>The·Unix·<code·class="inline">DISPLAY</code>·environment·variable·is·to·be·set·to·the·display·of·the
520 master·node.</li></ul><p>The·following·code·is·executed·to·achieve·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;·-env·DISPLAY·&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nc">net_adm</span><span·class="p">:</span><span·class="nf">localhost</span><span·class="p"·data-group-id="6337708470-1">(</span><span·class="p"·data-group-id="6337708470-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;:0·&quot;</span><span·class="p">,</span><span·class="w">520 master·node.</li></ul><p>The·following·code·is·executed·to·achieve·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;·-env·DISPLAY·&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nc">net_adm</span><span·class="p">:</span><span·class="nf">localhost</span><span·class="p"·data-group-id="3637436644-1">(</span><span·class="p"·data-group-id="3637436644-1">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;:0·&quot;</span><span·class="p">,</span><span·class="w">
521 </span><span·class="n">Arg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;-mnesia_dir·&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;·-pa·&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">E</span><span·class="p">,</span><span·class="w">521 </span><span·class="n">Arg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;-mnesia_dir·&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">M</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="s">&quot;·-pa·&quot;</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">E</span><span·class="p">,</span><span·class="w">
522 </span><span·class="nc">slave</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="6337708470-2">(</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arg</span><span·class="p"·data-group-id="6337708470-2">)</span><span·class="p">.</span></code></pre><p>The·function·returns·<code·class="inline">{ok,·Node}</code>,·where·<code·class="inline">Node</code>·is·the·name·of·the·new·node,522 </span><span·class="nc">slave</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3637436644-2">(</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Arg</span><span·class="p"·data-group-id="3637436644-2">)</span><span·class="p">.</span></code></pre><p>The·function·returns·<code·class="inline">{ok,·Node}</code>,·where·<code·class="inline">Node</code>·is·the·name·of·the·new·node,
523 otherwise·<code·class="inline">{error,·Reason}</code>,·where·<code·class="inline">Reason</code>·can·be·one·of:</p><ul><li><p><strong><code·class="inline">timeout</code></strong>·-·The·master·node·failed·to·get·in·contact·with·the·slave·node.523 otherwise·<code·class="inline">{error,·Reason}</code>,·where·<code·class="inline">Reason</code>·can·be·one·of:</p><ul><li><p><strong><code·class="inline">timeout</code></strong>·-·The·master·node·failed·to·get·in·contact·with·the·slave·node.
524 This·can·occur·in·a·number·of·circumstances:</p><ul><li>Erlang/OTP·is·not·installed·on·the·remote·host.</li><li>The·file·system·on·the·other·host·has·a·different·structure·to·the·the524 This·can·occur·in·a·number·of·circumstances:</p><ul><li>Erlang/OTP·is·not·installed·on·the·remote·host.</li><li>The·file·system·on·the·other·host·has·a·different·structure·to·the·the
525 master.</li><li>The·Erlang·nodes·have·different·cookies.</li></ul></li><li><p><strong><code·class="inline">no_rsh</code></strong>·-·No·remote·shell·program·was·found·on·the·computer.·Note·that525 master.</li><li>The·Erlang·nodes·have·different·cookies.</li></ul></li><li><p><strong><code·class="inline">no_rsh</code></strong>·-·No·remote·shell·program·was·found·on·the·computer.·Note·that
526 <code·class="inline">ssh</code>·is·used·by·default,·but·this·can·be·overridden·with·the·<code·class="inline">-rsh</code>·flag.</p></li><li><p><strong><code·class="inline">{already_running,·Node}</code></strong>·-·A·node·with·name·<code·class="inline">Name@Host</code>·already·exists.</p></li></ul>526 <code·class="inline">ssh</code>·is·used·by·default,·but·this·can·be·overridden·with·the·<code·class="inline">-rsh</code>·flag.</p></li><li><p><strong><code·class="inline">{already_running,·Node}</code></strong>·-·A·node·with·name·<code·class="inline">Name@Host</code>·already·exists.</p></li></ul>
527 ··</section>527 ··</section>
528 </section>528 </section>
529 <section·class="detail"·id="start_link/1">529 <section·class="detail"·id="start_link/1">
392 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/sofs.html
    
Offset 258, 19 lines modifiedOffset 258, 19 lines modified
258 However,·this·optimization·can·only·be·used·when·the·elements·of·the·unordered258 However,·this·optimization·can·only·be·used·when·the·elements·of·the·unordered
259 set·are·atomic·or·ordered·sets.·It·must·also·be·the·case·that·the·type·of·the259 set·are·atomic·or·ordered·sets.·It·must·also·be·the·case·that·the·type·of·the
260 elements·matches·some·clause·of·Fun·(the·type·of·the·created·set·is·the·result260 elements·matches·some·clause·of·Fun·(the·type·of·the·created·set·is·the·result
261 of·applying·Fun·to·the·type·of·the·given·set),·and·that·Fun·does·nothing·but261 of·applying·Fun·to·the·type·of·the·given·set),·and·that·Fun·does·nothing·but
262 selecting,·duplicating,·or·rearranging·parts·of·the·elements.</li><li>Specifying·a·SetFun·as·an·integer·I·is·equivalent·to·specifying262 selecting,·duplicating,·or·rearranging·parts·of·the·elements.</li><li>Specifying·a·SetFun·as·an·integer·I·is·equivalent·to·specifying
263 <code·class="inline">{external,·fun(X) -&gt;·element(I, X) end}</code>,·but·is·to·be·preferred,·as·it·makes263 <code·class="inline">{external,·fun(X) -&gt;·element(I, X) end}</code>,·but·is·to·be·preferred,·as·it·makes
264 it·possible·to·handle·this·case·even·more·efficiently.</li></ul><p>Examples·of·SetFuns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">fun</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="ss">union</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">264 it·possible·to·handle·this·case·even·more·efficiently.</li></ul><p>Examples·of·SetFuns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">fun</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="ss">union</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">
265 </span><span·class="nf">fun</span><span·class="p"·data-group-id="1950993245-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="1950993245-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">partition</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·b57b5a709b4c0243206409208317100808d2c7e1e1d111b0a48c9e86be77294e·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">265 </span><span·class="nf">fun</span><span·class="p"·data-group-id="4028144568-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="4028144568-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">partition</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·99c9400a1c8b9fe683a2e69745463a452923862e92511f6d0779a9163f40938b·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
266 </span><span·class="p"·data-group-id="1950993245-3">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1950993245-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="1950993245-4">)</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·7a86643264eaafda5d27aaaf8d692168a357f07bbd15ffa006c72ca12dec1396·...·]-3">}</span><span·class="w">266 </span><span·class="p"·data-group-id="4028144568-3">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4028144568-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="4028144568-4">)</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·503ef835a4b16142d6da1436811067f5d29149500d0f72853028d915cff7e392·...·]-3">}</span><span·class="w">
267 </span><span·class="p"·data-group-id="1950993245-5">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1950993245-6">(</span><span·class="p"·data-group-id="1950993245-7">{</span><span·class="n">A</sp[·...·truncated·by·diffoscope;·len:·550,·SHA:·b90d189b08af02b934104243fc029d7ba8d2762b6833b97edb6b38e115b0c259·...·]-5">}</span><span·class="w">267 </span><span·class="p"·data-group-id="4028144568-5">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4028144568-6">(</span><span·class="p"·data-group-id="4028144568-7">{</span><span·class="n">A</sp[·...·truncated·by·diffoscope;·len:·550,·SHA:·641ed31b4f11e27d31b08340c1aefc373d6606f1b4fdaf8e27cd6b1fe2794ea2·...·]-5">}</span><span·class="w">
268 </span><span·class="p"·data-group-id="1950993245-9">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1950993245-10">(</span><span·class="p"·data-group-id="1950993245-11">{</span><span·class="p">_</[·...·truncated·by·diffoscope;·len:·508,·SHA:·d49c3510f4d8b95e6d1c7f87beceb7080ec45b70ed47af2c81cb5f91c061ff4b·...·]-9">}</span><span·class="w">268 </span><span·class="p"·data-group-id="4028144568-9">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4028144568-10">(</span><span·class="p"·data-group-id="4028144568-11">{</span><span·class="p">_</[·...·truncated·by·diffoscope;·len:·508,·SHA:·2599aa10033d93fca58737c1b8375f95a6c5de716b9aa2100357edefd51c68f6·...·]-9">}</span><span·class="w">
269 </span><span·class="p"·data-group-id="1950993245-13">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1950993245-14">(</span><span·class="p"·data-group-id="1950993245-15">{</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·1025,·SHA:·feec2539658c4d6d45336b5dac360131cbd3917680c8701f40001f78f9091b7f·...·]-13">}</span><span·class="w">269 </span><span·class="p"·data-group-id="4028144568-13">{</span><span·class="ss">external</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4028144568-14">(</span><span·class="p"·data-group-id="4028144568-15">{</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·1025,·SHA:·d9fba2d34bfcce1ab4a65decac99de61e7287684cbc9540b4caa7e61952ec005·...·]-13">}</span><span·class="w">
270 </span><span·class="mi">2</span></code></pre><p>The·order·in·which·a·SetFun·is·applied·to·the·elements·of·an·unordered·set·is270 </span><span·class="mi">2</span></code></pre><p>The·order·in·which·a·SetFun·is·applied·to·the·elements·of·an·unordered·set·is
271 not·specified,·and·can·change·in·future·versions·of·this·module.</p><p>The·execution·time·of·the·functions·of·this·module·is·dominated·by·the·time·it271 not·specified,·and·can·change·in·future·versions·of·this·module.</p><p>The·execution·time·of·the·functions·of·this·module·is·dominated·by·the·time·it
272 takes·to·sort·lists.·When·no·sorting·is·needed,·the·execution·time·is·in·the272 takes·to·sort·lists.·When·no·sorting·is·needed,·the·execution·time·is·in·the
273 worst·case·proportional·to·the·sum·of·the·sizes·of·the·input·arguments·and·the273 worst·case·proportional·to·the·sum·of·the·sizes·of·the·input·arguments·and·the
274 returned·value.·A·few·functions·execute·in·constant·time:·<a·href="#from_external/2"><code·class="inline">from_external/2</code></a>,274 returned·value.·A·few·functions·execute·in·constant·time:·<a·href="#from_external/2"><code·class="inline">from_external/2</code></a>,
275 <a·href="#is_empty_set/1"><code·class="inline">is_empty_set/1</code></a>,·<a·href="#is_set/1"><code·class="inline">is_set/1</code></a>,·<a·href="#is_sofs_set/1"><code·class="inline">is_sofs_set/1</code></a>,·<a·href="#to_external/1"><code·class="inline">to_external/1</code></a>·<a·href="#type/1"><code·class="inline">type/1</code></a>.</p><p>The·functions·of·this·module·exit·the·process·with·a·<code·class="inline">badarg</code>,·<code·class="inline">bad_function</code>,275 <a·href="#is_empty_set/1"><code·class="inline">is_empty_set/1</code></a>,·<a·href="#is_set/1"><code·class="inline">is_set/1</code></a>,·<a·href="#is_sofs_set/1"><code·class="inline">is_sofs_set/1</code></a>,·<a·href="#to_external/1"><code·class="inline">to_external/1</code></a>·<a·href="#type/1"><code·class="inline">type/1</code></a>.</p><p>The·functions·of·this·module·exit·the·process·with·a·<code·class="inline">badarg</code>,·<code·class="inline">bad_function</code>,
276 or·<code·class="inline">type_mismatch</code>·message·when·given·badly·formed·arguments·or·sets·the·types276 or·<code·class="inline">type_mismatch</code>·message·when·given·badly·formed·arguments·or·sets·the·types
Offset 1796, 18 lines modifiedOffset 1796, 18 lines modified
  
1796 ······</div>1796 ······</div>
  
1797 <p>Returns·the·binary·relation·containing·the·elements·(E, Set)·such·that·Set1797 <p>Returns·the·binary·relation·containing·the·elements·(E, Set)·such·that·Set
1798 belongs·to·<code·class="inline">SetOfSets</code>·and·E·belongs·to·Set.</p><p>If·<code·class="inline">SetOfSets</code>·is·a·<a·href="sofs.html#partition">partition</a>·of·a·set·X·and·R·is·the1798 belongs·to·<code·class="inline">SetOfSets</code>·and·E·belongs·to·Set.</p><p>If·<code·class="inline">SetOfSets</code>·is·a·<a·href="sofs.html#partition">partition</a>·of·a·set·X·and·R·is·the
1799 equivalence·relation·in·X·induced·by·<code·class="inline">SetOfSets</code>,·then·the·returned·relation·is·the1799 equivalence·relation·in·X·induced·by·<code·class="inline">SetOfSets</code>,·then·the·returned·relation·is·the
1800 <a·href="sofs.html#canonical_map">canonical·map</a>·from·X·onto·the·equivalence·classes·with1800 <a·href="sofs.html#canonical_map">canonical·map</a>·from·X·onto·the·equivalence·classes·with
1801 respect·to·R.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Ss</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">from_term</span><span·class="p"·data-group-id="6904515506-1">(</span><span·class="p"·data-group-id="6904515506-2">[</span><span·class="p"·data-group-id="6904515506-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="6904515506-3">]</span><[·...·truncated·by·diffoscope;·len:·297,·SHA:·b5c1d7354f5207353acf713e4737cfe05fb470169b876ca1f0ca8f6b0880c648·...·]-1">)</span><span·class="p">,</span><span·class="w">1801 respect·to·R.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Ss</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">from_term</span><span·class="p"·data-group-id="2752484980-1">(</span><span·class="p"·data-group-id="2752484980-2">[</span><span·class="p"·data-group-id="2752484980-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="2752484980-3">]</span><[·...·truncated·by·diffoscope;·len:·297,·SHA:·16de480a3806440728de67fafeaa2dd230e496b2fe0f18ad9af1e8cf12eadc09·...·]-1">)</span><span·class="p">,</span><span·class="w">
1802 </span><span·class="n">CR</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">canonical_relation</span><span·class="p"·data-group-id="6904515506-5">(</span><span·class="n">Ss</span><span·class="p"·data-group-id="6904515506-5">)</span><span·class="p">,</span><span·class="w">1802 </span><span·class="n">CR</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">canonical_relation</span><span·class="p"·data-group-id="2752484980-5">(</span><span·class="n">Ss</span><span·class="p"·data-group-id="2752484980-5">)</span><span·class="p">,</span><span·class="w">
1803 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="6904515506-6">(</span><span·class="n">CR</span><span·class="p"·data-group-id="6904515506-6">)</span><span·class="p">.</span><span·class="w">1803 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="2752484980-6">(</span><span·class="n">CR</span><span·class="p"·data-group-id="2752484980-6">)</span><span·class="p">.</span><span·class="w">
1804 </span><span·class="p"·data-group-id="6904515506-7">[</span><span·class="p"·data-group-id="6904515506-8">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="6904515506-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span[·...·truncated·by·diffoscope;·len:·1231,·SHA:·2033db9169ff512b0f8d572c1b4fec824bccf673c48aa25fa94286e0f4606053·...·]-7">]</span></code></pre>1804 </span><span·class="p"·data-group-id="2752484980-7">[</span><span·class="p"·data-group-id="2752484980-8">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="2752484980-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span[·...·truncated·by·diffoscope;·len:·1231,·SHA:·a19d16eeb482d81b8c81d94c7353adb82eeb3f00533a05b21e1df447b33abb36·...·]-7">]</span></code></pre>
1805 ··</section>1805 ··</section>
1806 </section>1806 </section>
1807 <section·class="detail"·id="composite/2">1807 <section·class="detail"·id="composite/2">
  
1808 ··<div·class="detail-header">1808 ··<div·class="detail-header">
1809 ····<a·href="#composite/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1809 ····<a·href="#composite/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1810 ······<i·class="ri-link-m"·aria-hidden="true"></i>1810 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1827, 19 lines modifiedOffset 1827, 19 lines modified
  
1827 ··········<pre·translate="no"><span·class="attribute">-spec</span>·composite(Function1,·Function2)·->·Function31827 ··········<pre·translate="no"><span·class="attribute">-spec</span>·composite(Function1,·Function2)·->·Function3
1828 ···················when·Function1·::·<a·href="#t:a_function/0">a_function</a>(),·Function2·::·<a·href="#t:a_function/0">a_function</a>(),·Function3·::·<a·href="#t:a_function/0">a_function</a>().</pre>1828 ···················when·Function1·::·<a·href="#t:a_function/0">a_function</a>(),·Function2·::·<a·href="#t:a_function/0">a_function</a>(),·Function3·::·<a·href="#t:a_function/0">a_function</a>().</pre>
  
1829 ······</div>1829 ······</div>
  
1830 <p>Returns·the·<a·href="sofs.html#composite">composite</a>·of·the·functions·<code·class="inline">Function1</code>·and1830 <p>Returns·the·<a·href="sofs.html#composite">composite</a>·of·the·functions·<code·class="inline">Function1</code>·and
1831 <code·class="inline">Function2</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">a_function</span><span·class="p"·data-group-id="6983277028-1">(</span><span·class="p"·data-group-id="6983277028-2">[</span><span·class="p"·data-group-id="6983277028-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6983277028-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·89d13b7ee5a633548a9fed5fa1c8e8ec57ae5e8df4a4c33bc091415941f8dc78·...·]-1">)</span><span·class="p">,</span><span·class="w">1831 <code·class="inline">Function2</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">F1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">a_function</span><span·class="p"·data-group-id="5676537586-1">(</span><span·class="p"·data-group-id="5676537586-2">[</span><span·class="p"·data-group-id="5676537586-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5676537586-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·8ba3dc42c959bdaccca9396f03baf0f18ee8741e9f21d603157168c7baf806b2·...·]-1">)</span><span·class="p">,</span><span·class="w">
1832 </span><span·class="n">F2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">a_function</span><span·class="p"·data-group-id="6983277028-6">(</span><span·class="p"·data-group-id="6983277028-7">[</span><span·class="p"·data-group-id="6983277028-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="6983277028-8">}</span><[·...·truncated·by·diffoscope;·len:·503,·SHA:·0ba43e4c16800f291880894943e91633de0d9f63cf1a91cbc4cfa48ce0ef5613·...·]-6">)</span><span·class="p">,</span><span·class="w">1832 </span><span·class="n">F2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">a_function</span><span·class="p"·data-group-id="5676537586-6">(</span><span·class="p"·data-group-id="5676537586-7">[</span><span·class="p"·data-group-id="5676537586-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="5676537586-8">}</span><[·...·truncated·by·diffoscope;·len:·503,·SHA:·8ad5a8b94fdd1936c798aa8f3e20eee9eb2cb0a581ebfb8b30f1e49d27aecc0b·...·]-6">)</span><span·class="p">,</span><span·class="w">
1833 </span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">composite</span><span·class="p"·data-group-id="6983277028-11">(</span><span·class="n">F1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F2</span><span·class="p"·data-group-id="6983277028-11">)</span><span·class="p">,</span><span·class="w">1833 </span><span·class="n">F</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">composite</span><span·class="p"·data-group-id="5676537586-11">(</span><span·class="n">F1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F2</span><span·class="p"·data-group-id="5676537586-11">)</span><span·class="p">,</span><span·class="w">
1834 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="6983277028-12">(</span><span·class="n">F</span><span·class="p"·data-group-id="6983277028-12">)</span><span·class="p">.</span><span·class="w">1834 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="5676537586-12">(</span><span·class="n">F</span><span·class="p"·data-group-id="5676537586-12">)</span><span·class="p">.</span><span·class="w">
1835 </span><span·class="p"·data-group-id="6983277028-13">[</span><span·class="p"·data-group-id="6983277028-14">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="6983277028-14">}</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·402,·SHA:·05e78e7cb3d7dc7851e5ae1d271055c15ba85573aa616518432b416e414b9272·...·]-13">]</span></code></pre>1835 </span><span·class="p"·data-group-id="5676537586-13">[</span><span·class="p"·data-group-id="5676537586-14">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="5676537586-14">}</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·402,·SHA:·f200810d794acc46c35632ceda44ac61dffd53903ecae53c887be29a08e1cadd·...·]-13">]</span></code></pre>
1836 ··</section>1836 ··</section>
1837 </section>1837 </section>
1838 <section·class="detail"·id="constant_function/2">1838 <section·class="detail"·id="constant_function/2">
  
1839 ··<div·class="detail-header">1839 ··<div·class="detail-header">
1840 ····<a·href="#constant_function/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1840 ····<a·href="#constant_function/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1841 ······<i·class="ri-link-m"·aria-hidden="true"></i>1841 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1859, 19 lines modifiedOffset 1859, 19 lines modified
  
1859 ··········<pre·translate="no"><span·class="attribute">-spec</span>·constant_function(Set,·AnySet)·->·Function1859 ··········<pre·translate="no"><span·class="attribute">-spec</span>·constant_function(Set,·AnySet)·->·Function
1860 ···························when·AnySet·::·<a·href="#t:anyset/0">anyset</a>(),·Function·::·<a·href="#t:a_function/0">a_function</a>(),·Set·::·<a·href="#t:a_set/0">a_set</a>().</pre>1860 ···························when·AnySet·::·<a·href="#t:anyset/0">anyset</a>(),·Function·::·<a·href="#t:a_function/0">a_function</a>(),·Set·::·<a·href="#t:a_set/0">a_set</a>().</pre>
  
1861 ······</div>1861 ······</div>
  
1862 <p>Creates·the·<a·href="sofs.html#function">function</a>·that·maps·each·element·of·set·<code·class="inline">Set</code>1862 <p>Creates·the·<a·href="sofs.html#function">function</a>·that·maps·each·element·of·set·<code·class="inline">Set</code>
1863 onto·<code·class="inline">AnySet</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">S</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="7565642227-1">(</span><span·class="p"·data-group-id="7565642227-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="7565642227-2">]</span><span·class="p"·data-group-id="7565642227-1">)</span><span·class="p">,</span><span·class="w">1863 onto·<code·class="inline">AnySet</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">S</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="5744490740-1">(</span><span·class="p"·data-group-id="5744490740-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="5744490740-2">]</span><span·class="p"·data-group-id="5744490740-1">)</span><span·class="p">,</span><span·class="w">
1864 </span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">from_term</span><span·class="p"·data-group-id="7565642227-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="7565642227-3">)</span><span·class="p">,</span><span·class="w">1864 </span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">from_term</span><span·class="p"·data-group-id="5744490740-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="5744490740-3">)</span><span·class="p">,</span><span·class="w">
1865 </span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">constant_function</span><span·class="p"·data-group-id="7565642227-4">(</span><span·class="n">S</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="7565642227-4">)</span><span·class="p">,</span><span·class="w">1865 </span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">constant_function</span><span·class="p"·data-group-id="5744490740-4">(</span><span·class="n">S</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="5744490740-4">)</span><span·class="p">,</span><span·class="w">
1866 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="7565642227-5">(</span><span·class="n">R</span><span·class="p"·data-group-id="7565642227-5">)</span><span·class="p">.</span><span·class="w">1866 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="5744490740-5">(</span><span·class="n">R</span><span·class="p"·data-group-id="5744490740-5">)</span><span·class="p">.</span><span·class="w">
1867 </span><span·class="p"·data-group-id="7565642227-6">[</span><span·class="p"·data-group-id="7565642227-7">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7565642227-7">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·f56af8bbe1c1e85afbe0e5e46ccec90bbc6e55e1f2d8f11d9a3aaeb77d264bca·...·]-6">]</span></code></pre>1867 </span><span·class="p"·data-group-id="5744490740-6">[</span><span·class="p"·data-group-id="5744490740-7">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5744490740-7">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·f8f53ba5abde8951624783aea430a52067322bcb5a81aef628ce0b9131cf9d86·...·]-6">]</span></code></pre>
1868 ··</section>1868 ··</section>
1869 </section>1869 </section>
1870 <section·class="detail"·id="converse/1">1870 <section·class="detail"·id="converse/1">
  
1871 ··<div·class="detail-header">1871 ··<div·class="detail-header">
1872 ····<a·href="#converse/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1872 ····<a·href="#converse/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1873 ······<i·class="ri-link-m"·aria-hidden="true"></i>1873 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1889, 18 lines modifiedOffset 1889, 18 lines modified
  
1889 ······<div·class="specs">1889 ······<div·class="specs">
  
1890 ··········<pre·translate="no"><span·class="attribute">-spec</span>·converse(BinRel1)·->·BinRel2·when·BinRel1·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·BinRel2·::·<a·href="#t:binary_relation/0">binary_relation</a>().</pre>1890 ··········<pre·translate="no"><span·class="attribute">-spec</span>·converse(BinRel1)·->·BinRel2·when·BinRel1·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·BinRel2·::·<a·href="#t:binary_relation/0">binary_relation</a>().</pre>
  
1891 ······</div>1891 ······</div>
  
1892 <p>Returns·the·<a·href="sofs.html#converse">converse</a>·of·the·binary·relation·<code·class="inline">BinRel1</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">relation</span><span·class="p"·data-group-id="2873766261-1">(</span><span·class="p"·data-group-id="2873766261-2">[</span><span·class="p"·data-group-id="2873766261-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="2873766261-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·a9ecf88a79a75cf51f5ed8463429d4190fead22335fbc14b6480cbd7bf94b1e5·...·]-1">)</span><span·class="p">,</span><span·class="w">1892 <p>Returns·the·<a·href="sofs.html#converse">converse</a>·of·the·binary·relation·<code·class="inline">BinRel1</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">relation</span><span·class="p"·data-group-id="1470180034-1">(</span><span·class="p"·data-group-id="1470180034-2">[</span><span·class="p"·data-group-id="1470180034-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1470180034-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·71e5afbd6c6a0e0e83f506120e2405e7adaca0e02249078b954277b8d9ef9b34·...·]-1">)</span><span·class="p">,</span><span·class="w">
1893 </span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">converse</span><span·class="p"·data-group-id="2873766261-6">(</span><span·class="n">R1</span><span·class="p"·data-group-id="2873766261-6">)</span><span·class="p">,</span><span·class="w">1893 </span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">converse</span><span·class="p"·data-group-id="1470180034-6">(</span><span·class="n">R1</span><span·class="p"·data-group-id="1470180034-6">)</span><span·class="p">,</span><span·class="w">
1894 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="2873766261-7">(</span><span·class="n">R2</span><span·class="p"·data-group-id="2873766261-7">)</span><span·class="p">.</span><span·class="w">1894 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="1470180034-7">(</span><span·class="n">R2</span><span·class="p"·data-group-id="1470180034-7">)</span><span·class="p">.</span><span·class="w">
1895 </span><span·class="p"·data-group-id="2873766261-8">[</span><span·class="p"·data-group-id="2873766261-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2873766261-9">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·399,·SHA:·3989bf8b86e682f154233571d841a1b6c985ffcc64e40f9beda4b22137004639·...·]-8">]</span></code></pre>1895 </span><span·class="p"·data-group-id="1470180034-8">[</span><span·class="p"·data-group-id="1470180034-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1470180034-9">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·399,·SHA:·cfc803bcbb3719ef6f5f7374f3f521156a075dd53028b64a603ec98bac04a889·...·]-8">]</span></code></pre>
1896 ··</section>1896 ··</section>
1897 </section>1897 </section>
1898 <section·class="detail"·id="difference/2">1898 <section·class="detail"·id="difference/2">
  
1899 ··<div·class="detail-header">1899 ··<div·class="detail-header">
1900 ····<a·href="#difference/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1900 ····<a·href="#difference/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1901 ······<i·class="ri-link-m"·aria-hidden="true"></i>1901 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 2002, 18 lines modifiedOffset 2002, 18 lines modified
  
2002 ······<div·class="specs">2002 ······<div·class="specs">
  
2003 ··········<pre·translate="no"><span·class="attribute">-spec</span>·domain(BinRel)·->·Set·when·BinRel·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·Set·::·<a·href="#t:a_set/0">a_set</a>().</pre>2003 ··········<pre·translate="no"><span·class="attribute">-spec</span>·domain(BinRel)·->·Set·when·BinRel·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·Set·::·<a·href="#t:a_set/0">a_set</a>().</pre>
  
2004 ······</div>2004 ······</div>
  
2005 <p>Returns·the·<a·href="sofs.html#domain">domain</a>·of·the·binary·relation·<code·class="inline">BinRel</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">relation</span><span·class="p"·data-group-id="5513664981-1">(</span><span·class="p"·data-group-id="5513664981-2">[</span><span·class="p"·data-group-id="5513664981-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="5513664981-3">}</span><[·...·truncated·by·diffoscope;·len:·705,·SHA:·ec27e245058042d1946b1ff94e776dae64330dfa6105821ff7797deb65201f9b·...·]-1">)</span><span·class="p">,</span><span·class="w">2005 <p>Returns·the·<a·href="sofs.html#domain">domain</a>·of·the·binary·relation·<code·class="inline">BinRel</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">relation</span><span·class="p"·data-group-id="9726423445-1">(</span><span·class="p"·data-group-id="9726423445-2">[</span><span·class="p"·data-group-id="9726423445-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="9726423445-3">}</span><[·...·truncated·by·diffoscope;·len:·705,·SHA:·4e45cd15726532a0e12d902672dbf30cfa9c14f05bc6743ab60118f7e42eb99c·...·]-1">)</span><span·class="p">,</span><span·class="w">
2006 </span><span·class="n">S</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">domain</span><span·class="p"·data-group-id="5513664981-7">(</span><span·class="n">R</span><span·class="p"·data-group-id="5513664981-7">)</span><span·class="p">,</span><span·class="w">2006 </span><span·class="n">S</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">domain</span><span·class="p"·data-group-id="9726423445-7">(</span><span·class="n">R</span><span·class="p"·data-group-id="9726423445-7">)</span><span·class="p">,</span><span·class="w">
2007 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="5513664981-8">(</span><span·class="n">S</span><span·class="p"·data-group-id="5513664981-8">)</span><span·class="p">.</span><span·class="w">2007 </span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">to_external</span><span·class="p"·data-group-id="9726423445-8">(</span><span·class="n">S</span><span·class="p"·data-group-id="9726423445-8">)</span><span·class="p">.</span><span·class="w">
2008 </span><span·class="p"·data-group-id="5513664981-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5513664981-9">]</span></code></pre>2008 </span><span·class="p"·data-group-id="9726423445-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9726423445-9">]</span></code></pre>
2009 ··</section>2009 ··</section>
2010 </section>2010 </section>
2011 <section·class="detail"·id="drestriction/2">2011 <section·class="detail"·id="drestriction/2">
  
2012 ··<div·class="detail-header">2012 ··<div·class="detail-header">
2013 ····<a·href="#drestriction/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">2013 ····<a·href="#drestriction/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
2014 ······<i·class="ri-link-m"·aria-hidden="true"></i>2014 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 2033, 19 lines modifiedOffset 2033, 19 lines modified
  
2033 ··········<pre·translate="no"><span·class="attribute">-spec</span>·drestriction(BinRel1,·Set)·->·BinRel22033 ··········<pre·translate="no"><span·class="attribute">-spec</span>·drestriction(BinRel1,·Set)·->·BinRel2
2034 ······················when·BinRel1·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·BinRel2·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·Set·::·<a·href="#t:a_set/0">a_set</a>().</pre>2034 ······················when·BinRel1·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·BinRel2·::·<a·href="#t:binary_relation/0">binary_relation</a>(),·Set·::·<a·href="#t:a_set/0">a_set</a>().</pre>
  
2035 ······</div>2035 ······</div>
  
2036 <p>Returns·the·difference·between·the·binary·relation·<code·class="inline">BinRel1</code>·and·the2036 <p>Returns·the·difference·between·the·binary·relation·<code·class="inline">BinRel1</code>·and·the
2037 <a·href="sofs.html#restriction">restriction</a>·of·<code·class="inline">BinRel1</code>·to·<code·class="inline">Set</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">relation</span><span·class="p"·data-group-id="3179650218-1">(</span><span·class="p"·data-group-id="3179650218-2">[</span><span·class="p"·data-group-id="3179650218-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="3179650218-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·5395a2e42f4b1d5ec6d618db48e04821ecf4f2dccc55f8ae757a208ee187a471·...·]-1">)</span><span·class="p">,</span><span·class="w">2037 <a·href="sofs.html#restriction">restriction</a>·of·<code·class="inline">BinRel1</code>·to·<code·class="inline">Set</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">R1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">relation</span><span·class="p"·data-group-id="5626478656-1">(</span><span·class="p"·data-group-id="5626478656-2">[</span><span·class="p"·data-group-id="5626478656-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="5626478656-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·699170a2bde74bc36efea428a147b1e4b9498a78760ce9cc6c6d171035d09ec4·...·]-1">)</span><span·class="p">,</span><span·class="w">
2038 </span><span·class="n">S</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="3179650218-6">(</span><span·class="p"·data-group-id="3179650218-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="3179650218-7">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·2e5a23535e57e6370b072a9e9f6c4a4c2778558f2709bcf157524b7eb19b9fec·...·]-6">)</span><span·class="p">,</span><span·class="w">2038 </span><span·class="n">S</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="5626478656-6">(</span><span·class="p"·data-group-id="5626478656-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="5626478656-7">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·46d85c63ae52b2c2c1811a7471c0f7912b6158e132bc3e3ef30adae03a464b1b·...·]-6">)</span><span·class="p">,</span><span·class="w">
2039 </span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">drestriction</span><span·class="p"·data-group-id="3179650218-8">(</span><span·class="n">R1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class="p"·data-group-id="3179650218-8">)</span><span·class="p">,</span><span·class="w">2039 </span><span·class="n">R2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="nf">drestriction</span><span·class="p"·data-group-id="5626478656-8">(</span><span·class="n">R1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">S</span><span·class="p"·data-group-id="5626478656-8">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 352754/400872 bytes (88.00%) of diff not shown.
4.41 MB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/stdlib.epub
13.0 KB
zipinfo {}
Max HTML report size reached
524 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:46:04,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:00:08,·uncompressed·size·20,·method=store
35.8 KB
OEBPS/zip.xhtml
Max HTML report size reached
39.0 KB
OEBPS/uri_string_usage.xhtml
Max HTML report size reached
89.5 KB
OEBPS/uri_string.xhtml
Max HTML report size reached
159 KB
OEBPS/unicode_usage.xhtml
Max HTML report size reached
36.6 KB
OEBPS/unicode.xhtml
Max HTML report size reached
19.3 KB
OEBPS/timer.xhtml
Max HTML report size reached
12.9 KB
OEBPS/supervisor.xhtml
Max HTML report size reached
147 KB
OEBPS/string.xhtml
Max HTML report size reached
8.32 KB
OEBPS/stdlib_app.xhtml
Max HTML report size reached
392 KB
OEBPS/sofs.xhtml
Max HTML report size reached
7.93 KB
OEBPS/slave.xhtml
Max HTML report size reached
2.9 KB
OEBPS/shell_default.xhtml
    
Offset 20, 18 lines modifiedOffset 20, 18 lines modified
20 ····<h1·id="content">20 ····<h1·id="content">
21 shell_default·21 shell_default·
22 ····</h1>22 ····</h1>
  
  
23 ······<section·id="moduledoc"·class="docstring">23 ······<section·id="moduledoc"·class="docstring">
24 <p>Customizing·the·Erlang·environment.</p><p>The·functions·in·this·module·are·called·when·no·module·name·is·specified·in·a24 <p>Customizing·the·Erlang·environment.</p><p>The·functions·in·this·module·are·called·when·no·module·name·is·specified·in·a
25 shell·command.</p><p>Consider·the·following·shell·dialog:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">lists</samp><samp·class="p">:</samp><samp·class="nf">reverse</samp><samp·class="p"·data-group-id="6534939367-1">(</samp><samp·class="s">&quot;abc&quot;</samp><samp·class="p"·data-group-id="6534939367-1">)</samp><samp·class="p">.</samp><samp·class="w">25 shell·command.</p><p>Consider·the·following·shell·dialog:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">lists</samp><samp·class="p">:</samp><samp·class="nf">reverse</samp><samp·class="p"·data-group-id="2232292960-1">(</samp><samp·class="s">&quot;abc&quot;</samp><samp·class="p"·data-group-id="2232292960-1">)</samp><samp·class="p">.</samp><samp·class="w">
26 </samp><samp·class="s">&quot;cba&quot;</samp><samp·class="gp·unselectable">26 </samp><samp·class="s">&quot;cba&quot;</samp><samp·class="gp·unselectable">
27 2&gt;·</samp><samp·class="nf">c</samp><samp·class="p"·data-group-id="6534939367-2">(</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="6534939367-2">)</samp><samp·class="p">.</samp><samp·class="w">27 2&gt;·</samp><samp·class="nf">c</samp><samp·class="p"·data-group-id="2232292960-2">(</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="2232292960-2">)</samp><samp·class="p">.</samp><samp·class="w">
28 </samp><samp·class="p"·data-group-id="6534939367-3">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="6534939367-3">}</samp></code></pre><p>In·command·one,·module·<a·href="lists.xhtml"><code·class="inline">lists</code></a>·is·called.·In·command·two,·no·module·name·is28 </samp><samp·class="p"·data-group-id="2232292960-3">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="2232292960-3">}</samp></code></pre><p>In·command·one,·module·<a·href="lists.xhtml"><code·class="inline">lists</code></a>·is·called.·In·command·two,·no·module·name·is
29 specified.·The·shell·searches·module·<code·class="inline">user_default</code>·followed·by·module29 specified.·The·shell·searches·module·<code·class="inline">user_default</code>·followed·by·module
30 <code·class="inline">shell_default</code>·for·function·<code·class="inline">c/1</code>.</p><p><code·class="inline">shell_default</code>·is·intended·for·&quot;system·wide&quot;·customizations·to·the·shell.30 <code·class="inline">shell_default</code>·for·function·<code·class="inline">c/1</code>.</p><p><code·class="inline">shell_default</code>·is·intended·for·&quot;system·wide&quot;·customizations·to·the·shell.
31 <code·class="inline">user_default</code>·is·intended·for·&quot;local&quot;·or·individual·user·customizations.</p><h2·id="module-hint"·class="section-heading">31 <code·class="inline">user_default</code>·is·intended·for·&quot;local&quot;·or·individual·user·customizations.</p><h2·id="module-hint"·class="section-heading">
32 ··<a·href="#module-hint"·class="hover-link">32 ··<a·href="#module-hint"·class="hover-link">
33 ····<i·class="ri-link-m"·aria-hidden="true"></i>33 ····<i·class="ri-link-m"·aria-hidden="true"></i>
34 ··</a>34 ··</a>
35 ··<span·class="text">Hint</span>35 ··<span·class="text">Hint</span>
73.0 KB
OEBPS/shell.xhtml
Max HTML report size reached
7.03 KB
OEBPS/sets.xhtml
Max HTML report size reached
114 KB
OEBPS/re.xhtml
Max HTML report size reached
4.17 KB
OEBPS/random.xhtml
    
Offset 337, 17 lines modifiedOffset 337, 17 lines modified
337 ······<div·class="specs">337 ······<div·class="specs">
  
338 ··········<pre·translate="no"><span·class="attribute">-spec</span>·seed(A1,·A2,·A3)·->·undefined·|·<a·href="#t:ran/0">ran</a>()·when·A1·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:integer/0">integer</a>().</pre>338 ··········<pre·translate="no"><span·class="attribute">-spec</span>·seed(A1,·A2,·A3)·->·undefined·|·<a·href="#t:ran/0">ran</a>()·when·A1·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:integer/0">integer</a>().</pre>
  
339 ······</div>339 ······</div>
  
340 <p>Seeds·random·number·generation·with·integer·values·in·the·process·dictionary·and340 <p>Seeds·random·number·generation·with·integer·values·in·the·process·dictionary·and
341 returns·the·old·state.</p><p>The·following·is·an·easy·way·of·obtaining·a·unique·value·to·seed·with:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">random</samp><samp·class="p">:</samp><samp·class="nf">seed</samp><samp·class="p"·data-group-id="4423023467-1">(</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">phash2</samp><samp·class="p"·data-group-id="4423023467-2">(</samp><samp·class="p"·data-group-id="4423023467-3">[</samp><samp·class="nf">node</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·f3a25b77ade94190690059fa89112284bba1419e5c56b6b43fad23d0a853ce38·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">341 returns·the·old·state.</p><p>The·following·is·an·easy·way·of·obtaining·a·unique·value·to·seed·with:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">random</samp><samp·class="p">:</samp><samp·class="nf">seed</samp><samp·class="p"·data-group-id="8025336498-1">(</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">phash2</samp><samp·class="p"·data-group-id="8025336498-2">(</samp><samp·class="p"·data-group-id="8025336498-3">[</samp><samp·class="nf">node</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·f1df98f64a88b5fb02672e9bfa40c062d41e00ff1a4f7c07c62735bf31a8075d·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">
342 ············</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">monotonic_time</samp><samp·class="p"·data-group-id="4423023467-5">(</samp><samp·class="p"·data-group-id="4423023467-5">)</samp><samp·class="p">,</samp><samp·class="w">342 ············</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">monotonic_time</samp><samp·class="p"·data-group-id="8025336498-5">(</samp><samp·class="p"·data-group-id="8025336498-5">)</samp><samp·class="p">,</samp><samp·class="w">
343 ············</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">unique_integer</samp><samp·class="p"·data-group-id="4423023467-6">(</samp><samp·class="p"·data-group-id="4423023467-6">)</samp><samp·class="p"·data-group-id="4423023467-1">)</samp></code></pre><p>For·details,·see·<a·href="../../../../lib/../erts/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../lib/../erts/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../lib/../erts/doc/html/erlang.html#monotonic_time/0"><code·class="inline">erlang:monotonic_time/0</code></a>,343 ············</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">unique_integer</samp><samp·class="p"·data-group-id="8025336498-6">(</samp><samp·class="p"·data-group-id="8025336498-6">)</samp><samp·class="p"·data-group-id="8025336498-1">)</samp></code></pre><p>For·details,·see·<a·href="../../../../lib/../erts/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../lib/../erts/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../lib/../erts/doc/html/erlang.html#monotonic_time/0"><code·class="inline">erlang:monotonic_time/0</code></a>,
344 and·<a·href="../../../../lib/../erts/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>344 and·<a·href="../../../../lib/../erts/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>
345 ··</section>345 ··</section>
346 </section>346 </section>
347 <section·class="detail"·id="uniform/0">347 <section·class="detail"·id="uniform/0">
  
348 ··<div·class="detail-header">348 ··<div·class="detail-header">
349 ····<a·href="#uniform/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">349 ····<a·href="#uniform/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
28.1 KB
OEBPS/rand.xhtml
Max HTML report size reached
159 KB
OEBPS/queue.xhtml
Max HTML report size reached
216 KB
OEBPS/qlc.xhtml
Max HTML report size reached
30.4 KB
OEBPS/proplists.xhtml
Max HTML report size reached
18.9 KB
OEBPS/proc_lib.xhtml
Max HTML report size reached
90.2 KB
OEBPS/peer.xhtml
Max HTML report size reached
123 KB
OEBPS/orddict.xhtml
Max HTML report size reached
40.3 KB
OEBPS/notes.xhtml
Max HTML report size reached
140 KB
OEBPS/ms_transform.xhtml
Max HTML report size reached
205 KB
OEBPS/maps.xhtml
Max HTML report size reached
164 KB
OEBPS/lists.xhtml
Max HTML report size reached
47.8 KB
OEBPS/json.xhtml
Max HTML report size reached
184 KB
OEBPS/io_protocol.xhtml
Max HTML report size reached
13.2 KB
OEBPS/io_lib.xhtml
Max HTML report size reached
399 KB
OEBPS/io.xhtml
Max HTML report size reached
59.2 KB
OEBPS/gen_statem.xhtml
Max HTML report size reached
6.54 KB
OEBPS/gen_server.xhtml
Max HTML report size reached
182 KB
OEBPS/gen_fsm.xhtml
Max HTML report size reached
6.65 KB
OEBPS/gen_event.xhtml
Max HTML report size reached
83.3 KB
OEBPS/filename.xhtml
Max HTML report size reached
5.99 KB
OEBPS/filelib.xhtml
Max HTML report size reached
18.7 KB
OEBPS/file_sorter.xhtml
Max HTML report size reached
120 KB
OEBPS/ets.xhtml
Max HTML report size reached
74.0 KB
OEBPS/escript.xhtml
Max HTML report size reached
13.2 KB
OEBPS/erl_tar.xhtml
Max HTML report size reached
2.35 KB
OEBPS/erl_scan.xhtml
    
Offset 27, 15 lines modifiedOffset 27, 15 lines modified
27 tokens.</p><h2·id="module-error-information"·class="section-heading">27 tokens.</p><h2·id="module-error-information"·class="section-heading">
28 ··<a·href="#module-error-information"·class="hover-link">28 ··<a·href="#module-error-information"·class="hover-link">
29 ····<i·class="ri-link-m"·aria-hidden="true"></i>29 ····<i·class="ri-link-m"·aria-hidden="true"></i>
30 ··</a>30 ··</a>
31 ··<span·class="text">Error·Information</span>31 ··<span·class="text">Error·Information</span>
32 </h2>32 </h2>
33 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O33 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
34 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="5189507105-1">{</samp><samp·class="n">ErrorLocation</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="51895[·...·truncated·by·diffoscope;·len:·372,·SHA:·a9582a53a76ed0de20cbce4c0765f4cfbb8666baf9dd16fb1826988dddcc2306·...·]-1">)</samp></code></pre><h2·id="module-notes"·class="section-heading">34 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="5203006269-1">{</samp><samp·class="n">ErrorLocation</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="52030[·...·truncated·by·diffoscope;·len:·372,·SHA:·a7b2ef11610b9ced6db24c072e6b181df85ac1cc0ed3b52c6bb65f587d027f77·...·]-1">)</samp></code></pre><h2·id="module-notes"·class="section-heading">
35 ··<a·href="#module-notes"·class="hover-link">35 ··<a·href="#module-notes"·class="hover-link">
36 ····<i·class="ri-link-m"·aria-hidden="true"></i>36 ····<i·class="ri-link-m"·aria-hidden="true"></i>
37 ··</a>37 ··</a>
38 ··<span·class="text">Notes</span>38 ··<span·class="text">Notes</span>
39 </h2>39 </h2>
40 <p>The·continuation·of·the·first·call·to·the·re-entrant·input·functions·must·be40 <p>The·continuation·of·the·first·call·to·the·re-entrant·input·functions·must·be
41 <code·class="inline">[]</code>.·For·a·complete·description·of·how·the·re-entrant·input·scheme·works,·see41 <code·class="inline">[]</code>.·For·a·complete·description·of·how·the·re-entrant·input·scheme·works,·see
2.49 KB
OEBPS/erl_parse.xhtml
    
Offset 29, 15 lines modifiedOffset 29, 15 lines modified
29 (see·the·<a·href="erl_scan.xhtml"><code·class="inline">erl_scan</code></a>)·module.</p><h2·id="module-error-information"·class="section-heading">29 (see·the·<a·href="erl_scan.xhtml"><code·class="inline">erl_scan</code></a>)·module.</p><h2·id="module-error-information"·class="section-heading">
30 ··<a·href="#module-error-information"·class="hover-link">30 ··<a·href="#module-error-information"·class="hover-link">
31 ····<i·class="ri-link-m"·aria-hidden="true"></i>31 ····<i·class="ri-link-m"·aria-hidden="true"></i>
32 ··</a>32 ··</a>
33 ··<span·class="text">Error·Information</span>33 ··<span·class="text">Error·Information</span>
34 </h2>34 </h2>
35 <p>ErrorInfo·is·the·standard·ErrorInfo·structure·that·is·returned·from·all·I/O·modules.35 <p>ErrorInfo·is·the·standard·ErrorInfo·structure·that·is·returned·from·all·I/O·modules.
36 The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="9904663503-1">{</samp><samp·class="n">ErrorLine</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="990466350[·...·truncated·by·diffoscope;·len:·368,·SHA:·96d16607f875f7167a708e55f5d4854716ead80cd1acaf8a90c59e951b5a0a96·...·]-1">)</samp></code></pre><h2·id="module-see-also"·class="section-heading">36 The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="9143172276-1">{</samp><samp·class="n">ErrorLine</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="914317227[·...·truncated·by·diffoscope;·len:·368,·SHA:·6566167235f4e88242ee1e3bbf250f2dfae8f7833a9019bda0ae5d2d9033152c·...·]-1">)</samp></code></pre><h2·id="module-see-also"·class="section-heading">
37 ··<a·href="#module-see-also"·class="hover-link">37 ··<a·href="#module-see-also"·class="hover-link">
38 ····<i·class="ri-link-m"·aria-hidden="true"></i>38 ····<i·class="ri-link-m"·aria-hidden="true"></i>
39 ··</a>39 ··</a>
40 ··<span·class="text">See·Also</span>40 ··<span·class="text">See·Also</span>
41 </h2>41 </h2>
42 <p><a·href="erl_anno.xhtml"><code·class="inline">erl_anno</code></a>,·<a·href="erl_scan.xhtml"><code·class="inline">erl_scan</code></a>,·<a·href="io.xhtml"><code·class="inline">io</code></a>,·section·<a·href="../../../../lib/../erts/doc/html/absform.xhtml">The·Abstract·Format</a>42 <p><a·href="erl_anno.xhtml"><code·class="inline">erl_anno</code></a>,·<a·href="erl_scan.xhtml"><code·class="inline">erl_scan</code></a>,·<a·href="io.xhtml"><code·class="inline">io</code></a>,·section·<a·href="../../../../lib/../erts/doc/html/absform.xhtml">The·Abstract·Format</a>
43 in·the·ERTS·User's·Guide.</p>43 in·the·ERTS·User's·Guide.</p>
2.34 KB
OEBPS/erl_lint.xhtml
    
Offset 30, 15 lines modifiedOffset 30, 15 lines modified
30 your·own·Erlang·compiler.</p><h2·id="module-error-information"·class="section-heading">30 your·own·Erlang·compiler.</p><h2·id="module-error-information"·class="section-heading">
31 ··<a·href="#module-error-information"·class="hover-link">31 ··<a·href="#module-error-information"·class="hover-link">
32 ····<i·class="ri-link-m"·aria-hidden="true"></i>32 ····<i·class="ri-link-m"·aria-hidden="true"></i>
33 ··</a>33 ··</a>
34 ··<span·class="text">Error·Information</span>34 ··<span·class="text">Error·Information</span>
35 </h2>35 </h2>
36 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O36 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
37 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="8215495355-1">{</samp><samp·class="n">ErrorLine</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="821549535[·...·truncated·by·diffoscope;·len:·368,·SHA:·52c3298129affbaa7e23846c0ae90de3fe86d72eb1a5900621d6408a742d3cf1·...·]-1">)</samp></code></pre><h2·id="module-see-also"·class="section-heading">37 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="8179471771-1">{</samp><samp·class="n">ErrorLine</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="817947177[·...·truncated·by·diffoscope;·len:·368,·SHA:·65ab0996e575de3d3a7bd7f49a7207c4034ba9fdde7ffc5ec90fb919d0bf7eec·...·]-1">)</samp></code></pre><h2·id="module-see-also"·class="section-heading">
38 ··<a·href="#module-see-also"·class="hover-link">38 ··<a·href="#module-see-also"·class="hover-link">
39 ····<i·class="ri-link-m"·aria-hidden="true"></i>39 ····<i·class="ri-link-m"·aria-hidden="true"></i>
40 ··</a>40 ··</a>
41 ··<span·class="text">See·Also</span>41 ··<span·class="text">See·Also</span>
42 </h2>42 </h2>
43 <p><a·href="epp.xhtml"><code·class="inline">epp</code></a>,·<a·href="erl_parse.xhtml"><code·class="inline">erl_parse</code></a></p>43 <p><a·href="epp.xhtml"><code·class="inline">epp</code></a>,·<a·href="erl_parse.xhtml"><code·class="inline">erl_parse</code></a></p>
44 ······</section>44 ······</section>
8.35 KB
OEBPS/erl_eval.xhtml
Max HTML report size reached
25.7 KB
OEBPS/erl_error.xhtml
Max HTML report size reached
2.74 KB
OEBPS/epp.xhtml
    
Offset 31, 15 lines modifiedOffset 31, 15 lines modified
31 <code·class="inline">Latin-1</code>·and·<code·class="inline">UTF-8</code>,·where·the·case·of·the·characters·can·be·chosen·freely.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·coding:·utf-8</samp></code></pre><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·For·this·file·we·have·chosen·encoding·=·Latin-1</samp></code></pre><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·-*-·coding:·latin-1·-*-</samp></code></pre><h2·id="module-error-information"·class="section-heading">31 <code·class="inline">Latin-1</code>·and·<code·class="inline">UTF-8</code>,·where·the·case·of·the·characters·can·be·chosen·freely.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·coding:·utf-8</samp></code></pre><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·For·this·file·we·have·chosen·encoding·=·Latin-1</samp></code></pre><pre><code·class="makeup·erlang"·translate="no"><samp·class="c1">%%·-*-·coding:·latin-1·-*-</samp></code></pre><h2·id="module-error-information"·class="section-heading">
32 ··<a·href="#module-error-information"·class="hover-link">32 ··<a·href="#module-error-information"·class="hover-link">
33 ····<i·class="ri-link-m"·aria-hidden="true"></i>33 ····<i·class="ri-link-m"·aria-hidden="true"></i>
34 ··</a>34 ··</a>
35 ··<span·class="text">Error·Information</span>35 ··<span·class="text">Error·Information</span>
36 </h2>36 </h2>
37 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O37 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
38 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="9673899261-1">{</samp><samp·class="n">ErrorLine</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="96738992[·...·truncated·by·diffoscope;·len:·369,·SHA:·523f7a77e9fef3f68196991abcb6144445af176cc158c3c8e13c845bb4499fc8·...·]-1">)</samp></code></pre><h2·id="module-see-also"·class="section-heading">38 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="0154617999-1">{</samp><samp·class="n">ErrorLine</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ErrorDescriptor</samp><samp·class="p"·data-group-id="01546179[·...·truncated·by·diffoscope;·len:·369,·SHA:·1a53e4ab885e7b2be83e47417ff5cb11b7a33fc33f45d014b177144537d9928b·...·]-1">)</samp></code></pre><h2·id="module-see-also"·class="section-heading">
39 ··<a·href="#module-see-also"·class="hover-link">39 ··<a·href="#module-see-also"·class="hover-link">
40 ····<i·class="ri-link-m"·aria-hidden="true"></i>40 ····<i·class="ri-link-m"·aria-hidden="true"></i>
41 ··</a>41 ··</a>
42 ··<span·class="text">See·Also</span>42 ··<span·class="text">See·Also</span>
43 </h2>43 </h2>
44 <p><a·href="erl_parse.xhtml"><code·class="inline">erl_parse</code></a></p>44 <p><a·href="erl_parse.xhtml"><code·class="inline">erl_parse</code></a></p>
45 ······</section>45 ······</section>
19.4 KB
OEBPS/dict.xhtml
Max HTML report size reached
25.3 KB
OEBPS/dets.xhtml
Max HTML report size reached
1.22 KB
OEBPS/content.opf
1.18 KB
OEBPS/content.opf
Max HTML report size reached
12.2 KB
OEBPS/calendar.xhtml
Max HTML report size reached
2.09 KB
OEBPS/c.xhtml
    
Offset 1561, 15 lines modifiedOffset 1561, 15 lines modified
1561 ················Options·::·[Option]·|·Option,1561 ················Options·::·[Option]·|·Option,
1562 ················Option·::·<a·href="../../../../lib/compiler/doc/html/compile.html#t:option/0">compile:option</a>(),1562 ················Option·::·<a·href="../../../../lib/compiler/doc/html/compile.html#t:option/0">compile:option</a>(),
1563 ················Module·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:module/0">module</a>().</pre>1563 ················Module·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:module/0">module</a>().</pre>
  
1564 ······</div>1564 ······</div>
  
1565 <p>Compiles·and·then·loads·the·code·for·a·file·on·all·nodes.·<code·class="inline">Options</code>·defaults·to1565 <p>Compiles·and·then·loads·the·code·for·a·file·on·all·nodes.·<code·class="inline">Options</code>·defaults·to
1566 <code·class="inline">[]</code>.·Compilation·is·equivalent·to:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">compile</samp><samp·class="p">:</samp><samp·class="nf">file</samp><samp·class="p"·data-group-id="3525922333-1">(</samp><samp·class="n">File</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Options</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3525922333-2">[</samp><sa[·...·truncated·by·diffoscope;·len:·215,·SHA:·bcc518a7738def815eed0fbeced2695dd38fc2d247fbd0f2783666a8b536ee94·...·]-1">)</samp></code></pre>1566 <code·class="inline">[]</code>.·Compilation·is·equivalent·to:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">compile</samp><samp·class="p">:</samp><samp·class="nf">file</samp><samp·class="p"·data-group-id="8720369684-1">(</samp><samp·class="n">File</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Options</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8720369684-2">[</samp><sa[·...·truncated·by·diffoscope;·len:·215,·SHA:·f05b1169fd1505539fdc7a64ac895c7a47cf2ea94ab46aaeab870794600fd674·...·]-1">)</samp></code></pre>
1567 ··</section>1567 ··</section>
1568 </section>1568 </section>
1569 <section·class="detail"·id="ni/0">1569 <section·class="detail"·id="ni/0">
  
1570 ··<div·class="detail-header">1570 ··<div·class="detail-header">
1571 ····<a·href="#ni/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1571 ····<a·href="#ni/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1572 ······<i·class="ri-link-m"·aria-hidden="true"></i>1572 ······<i·class="ri-link-m"·aria-hidden="true"></i>
109 KB
OEBPS/binary.xhtml
Max HTML report size reached
25.3 KB
OEBPS/beam_lib.xhtml
Max HTML report size reached
10.3 KB
OEBPS/base64.xhtml
Max HTML report size reached
7.17 KB
OEBPS/assert_hrl.xhtml
Max HTML report size reached
24.9 KB
OEBPS/array.xhtml
Max HTML report size reached
125 KB
OEBPS/argparse.xhtml
Max HTML report size reached
8.42 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/stdlib_app.html
    
Offset 157, 21 lines modifiedOffset 157, 21 lines modified
157 string·and·returns·a·formatted·expressions·as·a·string.·See157 string·and·returns·a·formatted·expressions·as·a·string.·See
158 <a·href="shell.html#format_shell_func/1"><code·class="inline">shell:format_shell_func/1</code></a>·for·how·to·set·it·from·inside·the·shell.</p><p>If·instead·a·string·is·provided,·it·will·be·used·as·a·shell·command.·Your158 <a·href="shell.html#format_shell_func/1"><code·class="inline">shell:format_shell_func/1</code></a>·for·how·to·set·it·from·inside·the·shell.</p><p>If·instead·a·string·is·provided,·it·will·be·used·as·a·shell·command.·Your
159 command·must·include·<code·class="inline">${file}</code>·somewhere·in·the·string,·for·the·shell·to·know159 command·must·include·<code·class="inline">${file}</code>·somewhere·in·the·string,·for·the·shell·to·know
160 where·the·file·goes·in·the·command.</p><pre><code·class="text">-stdlib·format_shell_func·&quot;\&quot;emacs·-batch·\${file}·-l·~/erlang-format/emacs-format-file·-f·emacs-format-function\&quot;&quot;</code></pre><pre><code·class="text">-stdlib·format_shell_func·&quot;{shell,·erl_pp_format_func}&quot;</code></pre></li><li><p><strong><code·class="inline"·id="shell_prompt_func">shell_prompt_func·=·{Mod,·Func}·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·Erlang·shell·prompt·function.</p></li><li><p><strong><code·class="inline"·id="shell_multiline_prompt">shell_multiline_prompt·=·{Mod,·Func}·|·string()·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·multiline·shell·prompt·function.·The·multiline160 where·the·file·goes·in·the·command.</p><pre><code·class="text">-stdlib·format_shell_func·&quot;\&quot;emacs·-batch·\${file}·-l·~/erlang-format/emacs-format-file·-f·emacs-format-function\&quot;&quot;</code></pre><pre><code·class="text">-stdlib·format_shell_func·&quot;{shell,·erl_pp_format_func}&quot;</code></pre></li><li><p><strong><code·class="inline"·id="shell_prompt_func">shell_prompt_func·=·{Mod,·Func}·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·Erlang·shell·prompt·function.</p></li><li><p><strong><code·class="inline"·id="shell_multiline_prompt">shell_multiline_prompt·=·{Mod,·Func}·|·string()·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·multiline·shell·prompt·function.·The·multiline
161 prompt·function·takes·the·main·prompt·as·its·only·parameter.</p></li><li><p><strong><code·class="inline"·id="shell_saved_results">shell_saved_results·=·integer()·&gt;=·0</code></strong>·-·Can·be161 prompt·function·takes·the·main·prompt·as·its·only·parameter.</p></li><li><p><strong><code·class="inline"·id="shell_saved_results">shell_saved_results·=·integer()·&gt;=·0</code></strong>·-·Can·be
162 used·to·determine·how·many·results·are·saved·by·the·Erlang·shell.</p></li><li><p><strong><code·class="inline"·id="shell_session_slogan">shell_session_slogan·=·string()·|·fun()·-&gt;·string())</code></strong>·-·The·slogan·printed·when·starting·an·Erlang·shell.162 used·to·determine·how·many·results·are·saved·by·the·Erlang·shell.</p></li><li><p><strong><code·class="inline"·id="shell_session_slogan">shell_session_slogan·=·string()·|·fun()·-&gt;·string())</code></strong>·-·The·slogan·printed·when·starting·an·Erlang·shell.
163 Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">stdlib</span><span·class="w">·</span><span·class="ss">shell_session_slogan</span><span·class="w">·</span><span·class="ss">&#39;&quot;Test·slogan&quot;&#39;</span><span·class="w">163 Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">stdlib</span><span·class="w">·</span><span·class="ss">shell_session_slogan</span><span·class="w">·</span><span·class="ss">&#39;&quot;Test·slogan&quot;&#39;</span><span·class="w">
164 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="p"·data-group-id="2829972824-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="2829972824-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="2829972824-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1495,·SHA:·c9346ae3cb117abe58e3c13c537ff5d54a946e69d91e37435aeede3acf6dc998·...·]4-8">]</span><span·class="w">164 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="p"·data-group-id="4531971444-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="4531971444-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="4531971444-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1495,·SHA:·23102029624151c3d46f682f72995f4e2ae7fa39f28d73d5b7870c182c454341·...·]4-8">]</span><span·class="w">
  
165 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">165 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">
166 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre></li><li><p><strong><code·class="inline"·id="shell_slogan">shell_slogan·=·string()·|·fun(()·-&gt;·string())</code></strong>·-·The166 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre></li><li><p><strong><code·class="inline"·id="shell_slogan">shell_slogan·=·string()·|·fun(()·-&gt;·string())</code></strong>·-·The
167 slogan·printed·when·starting·the·Erlang·shell·subsystem.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">stdlib</span><span·class="w">·</span><span·class="ss">shell_slogan</span><span·class="w">·</span><span·class="ss">&#39;&quot;Test·slogan&quot;&#39;</span><span·class="w">167 slogan·printed·when·starting·the·Erlang·shell·subsystem.·Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">stdlib</span><span·class="w">·</span><span·class="ss">shell_slogan</span><span·class="w">·</span><span·class="ss">&#39;&quot;Test·slogan&quot;&#39;</span><span·class="w">
168 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">168 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">
169 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V13</span><span·class="p">.</span><span·class="mf">0.2</span><span·class="w">··</span><span·class="p"·data-group-id="3747978730-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="3747978730-1">)</span><span·class="w">169 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V13</span><span·class="p">.</span><span·class="mf">0.2</span><span·class="w">··</span><span·class="p"·data-group-id="8787695591-1">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="8787695591-1">)</span><span·class="w">
170 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre><p>The·default·is·the·return·value·of170 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre><p>The·default·is·the·return·value·of
171 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#system_info_system_version"><code·class="inline">erlang:system_info(system_version)</code></a>.</p></li><li><p><strong><code·class="inline"·id="shell_strings">shell_strings·=·boolean()</code></strong>·-·Can·be·used·to·determine171 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#system_info_system_version"><code·class="inline">erlang:system_info(system_version)</code></a>.</p></li><li><p><strong><code·class="inline"·id="shell_strings">shell_strings·=·boolean()</code></strong>·-·Can·be·used·to·determine
172 how·the·Erlang·shell·outputs·lists·of·integers.</p></li></ul><h2·id="see-also"·class="section-heading">172 how·the·Erlang·shell·outputs·lists·of·integers.</p></li></ul><h2·id="see-also"·class="section-heading">
173 ··<a·href="#see-also"·class="hover-link">173 ··<a·href="#see-also"·class="hover-link">
174 ····<i·class="ri-link-m"·aria-hidden="true"></i>174 ····<i·class="ri-link-m"·aria-hidden="true"></i>
175 ··</a>175 ··</a>
176 ··<span·class="text">See·Also</span>176 ··<span·class="text">See·Also</span>
147 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/string.html
    
Offset 145, 22 lines modifiedOffset 145, 22 lines modified
145 <a·href="#replace/3"><code·class="inline">replace/3</code></a>,·<a·href="#split/2"><code·class="inline">split/2</code></a>,·<a·href="#split/3"><code·class="inline">split/3</code></a>·and·<a·href="#trim/3"><code·class="inline">trim/3</code></a>.</p><p>Splitting·and·appending·strings·is·to·be·done·on·grapheme·clusters·borders.145 <a·href="#replace/3"><code·class="inline">replace/3</code></a>,·<a·href="#split/2"><code·class="inline">split/2</code></a>,·<a·href="#split/3"><code·class="inline">split/3</code></a>·and·<a·href="#trim/3"><code·class="inline">trim/3</code></a>.</p><p>Splitting·and·appending·strings·is·to·be·done·on·grapheme·clusters·borders.
146 There·is·no·verification·that·the·results·of·appending·strings·are·valid·or146 There·is·no·verification·that·the·results·of·appending·strings·are·valid·or
147 normalized.</p><p>Most·of·the·functions·expect·all·input·to·be·normalized·to·one·form,·see·for147 normalized.</p><p>Most·of·the·functions·expect·all·input·to·be·normalized·to·one·form,·see·for
148 example·<a·href="unicode.html#characters_to_nfc_list/1"><code·class="inline">unicode:characters_to_nfc_list/1</code></a>.</p><p>Language·or·locale·specific·handling·of·input·is·not·considered·in·any·function.</p><p>The·functions·can·crash·for·non-valid·input·strings.·For·example,·the·functions148 example·<a·href="unicode.html#characters_to_nfc_list/1"><code·class="inline">unicode:characters_to_nfc_list/1</code></a>.</p><p>Language·or·locale·specific·handling·of·input·is·not·considered·in·any·function.</p><p>The·functions·can·crash·for·non-valid·input·strings.·For·example,·the·functions
149 expect·UTF-8·binaries·but·not·all·functions·verify·that·all·binaries·are·encoded149 expect·UTF-8·binaries·but·not·all·functions·verify·that·all·binaries·are·encoded
150 correctly.</p><p>Unless·otherwise·specified·the·return·value·type·is·the·same·as·the·input·type.150 correctly.</p><p>Unless·otherwise·specified·the·return·value·type·is·the·same·as·the·input·type.
151 That·is,·binary·input·returns·binary·output,·list·input·returns·a·list·output,151 That·is,·binary·input·returns·binary·output,·list·input·returns·a·list·output,
152 and·mixed·input·can·return·a·mixed·output.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">trim</span><span·class="p"·data-group-id="9434361343-1">(</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="9434361343-1">)</span><span·class="p">.</span><span·class="w">152 and·mixed·input·can·return·a·mixed·output.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">trim</span><span·class="p"·data-group-id="7580029045-1">(</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="7580029045-1">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="s">&quot;sarah&quot;</span><span·class="gp·unselectable">153 </span><span·class="s">&quot;sarah&quot;</span><span·class="gp·unselectable">
154 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">trim</span><span·class="p"·data-group-id="9434361343-2">(</span><span·class="p"·data-group-id="9434361343-3">&lt;&lt;</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="9434361343-3">&gt;&gt;</span><span·class="p"·data-group-id="9434361343-2">)</span><span·class="p">.</span><span·class="w">154 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">trim</span><span·class="p"·data-group-id="7580029045-2">(</span><span·class="p"·data-group-id="7580029045-3">&lt;&lt;</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="7580029045-3">&gt;&gt;</span><span·class="p"·data-group-id="7580029045-2">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="p"·data-group-id="9434361343-4">&lt;&lt;</span><span·class="s">&quot;sarah&quot;</span><span·class="p"·data-group-id="9434361343-4">&gt;&gt;</span><span·class="gp·unselectable">155 </span><span·class="p"·data-group-id="7580029045-4">&lt;&lt;</span><span·class="s">&quot;sarah&quot;</span><span·class="p"·data-group-id="7580029045-4">&gt;&gt;</span><span·class="gp·unselectable">
156 3&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">lexemes</span><span·class="p"·data-group-id="9434361343-5">(</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&quot;</span><span·class="p"·data-group-id="9434361343-5">)</span><span·class="p">.</span><span·class="w">156 3&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">lexemes</span><span·class="p"·data-group-id="7580029045-5">(</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&quot;</span><span·class="p"·data-group-id="7580029045-5">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="9434361343-6">[</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="9434361343-6">]</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="7580029045-6">[</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="7580029045-6">]</span><span·class="gp·unselectable">
158 4&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">lexemes</span><span·class="p"·data-group-id="9434361343-7">(</span><span·class="p"·data-group-id="9434361343-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="9434361343-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&quot;</span><span·class="p"·data-group-id="9434361343-7">)</span><span·class="p">.</span><span·class="w"> 
159 </span><span·class="p"·data-group-id="9434361343-9">[</span><span·class="p"·data-group-id="9434361343-10">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="9434361343-10">&gt;&gt;</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·359,·SHA:·1d49477a1fb5db04cc0a167ac8e500a8cd8069a7f4a94783946bad4d3cf8cbe0·...·]>158 4&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">lexemes</span><span·class="p"·data-group-id="7580029045-7">(</span><span·class="p"·data-group-id="7580029045-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><sp[·...·truncated·by·diffoscope;·len:·233,·SHA:·ddec2fa4bee0903d311a8aa6d1c8605b6cc32b9de62c3cd08bd27215eaa6680b·...·]>
 159 </span><span·class="p"·data-group-id="7580029045-9">[</span><span·class="p"·data-group-id="7580029045-10">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="7580029045-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7580029045-11">&lt;&lt;</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="7580029045-11">&gt;&gt;</span><span·class="p"·data-group-id="7580029045-9">]</span></code></pre><p>This·module·has·been·reworked·in·Erlang/OTP·20·to·handle·<a·href="unicode.html#t:chardata/0"><code·class="inline">unicode:chardata/0</code></a>
160 and·operate·on·grapheme·clusters.·The160 and·operate·on·grapheme·clusters.·The
161 <a·href="string.html#obsolete-api-functions"><code·class="inline">old·functions</code></a>·that·only·work·on·Latin-1161 <a·href="string.html#obsolete-api-functions"><code·class="inline">old·functions</code></a>·that·only·work·on·Latin-1
162 lists·as·input·are·still·available·but·should·not·be·used,·they·will·be162 lists·as·input·are·still·available·but·should·not·be·used,·they·will·be
163 deprecated·in·a·future·release.</p><h2·id="module-notes"·class="section-heading">163 deprecated·in·a·future·release.</p><h2·id="module-notes"·class="section-heading">
164 ··<a·href="#module-notes"·class="hover-link">164 ··<a·href="#module-notes"·class="hover-link">
165 ····<i·class="ri-link-m"·aria-hidden="true"></i>165 ····<i·class="ri-link-m"·aria-hidden="true"></i>
166 ··</a>166 ··</a>
Offset 1062, 15 lines modifiedOffset 1062, 15 lines modified
  
1062 ··········<pre·translate="no"><span·class="attribute">-spec</span>·casefold(String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>())·->·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>().</pre>1062 ··········<pre·translate="no"><span·class="attribute">-spec</span>·casefold(String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>())·->·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>().</pre>
  
1063 ······</div>1063 ······</div>
  
1064 <p>Converts·<code·class="inline">String</code>·to·a·case-agnostic·comparable·string.·Function1064 <p>Converts·<code·class="inline">String</code>·to·a·case-agnostic·comparable·string.·Function
1065 <a·href="#casefold/1"><code·class="inline">casefold/1</code></a>·is·preferred·over·<a·href="#lowercase/1"><code·class="inline">lowercase/1</code></a>1065 <a·href="#casefold/1"><code·class="inline">casefold/1</code></a>·is·preferred·over·<a·href="#lowercase/1"><code·class="inline">lowercase/1</code></a>
1066 when·two·strings·are·to·be·compared·for·equality.·See·also·<a·href="#equal/4"><code·class="inline">equal/4</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">casefold</span><span·class="p"·data-group-id="0294241803-1">(</span><span·class="s">&quot;Ω·and··SHARP·S&quot;</span><span·class="p"·data-group-id="0294241803-1">)</span><span·class="p">.</span><span·class="w">1066 when·two·strings·are·to·be·compared·for·equality.·See·also·<a·href="#equal/4"><code·class="inline">equal/4</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">casefold</span><span·class="p"·data-group-id="7338656161-1">(</span><span·class="s">&quot;Ω·and··SHARP·S&quot;</span><span·class="p"·data-group-id="7338656161-1">)</span><span·class="p">.</span><span·class="w">
1067 </span><span·class="s">&quot;ω·and·ss·sharp·s&quot;</span></code></pre>1067 </span><span·class="s">&quot;ω·and·ss·sharp·s&quot;</span></code></pre>
1068 ··</section>1068 ··</section>
1069 </section>1069 </section>
1070 <section·class="detail"·id="chomp/1">1070 <section·class="detail"·id="chomp/1">
  
1071 ··<div·class="detail-header">1071 ··<div·class="detail-header">
1072 ····<a·href="#chomp/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1072 ····<a·href="#chomp/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1092, 17 lines modifiedOffset 1092, 17 lines modified
1092 ······<div·class="specs">1092 ······<div·class="specs">
  
1093 ··········<pre·translate="no"><span·class="attribute">-spec</span>·chomp(String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>())·->·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>().</pre>1093 ··········<pre·translate="no"><span·class="attribute">-spec</span>·chomp(String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>())·->·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>().</pre>
  
1094 ······</div>1094 ······</div>
  
1095 <p>Returns·a·string·where·any·trailing·<code·class="inline">\n</code>·or·<code·class="inline">\r\n</code>·have·been·removed·from1095 <p>Returns·a·string·where·any·trailing·<code·class="inline">\n</code>·or·<code·class="inline">\r\n</code>·have·been·removed·from
1096 <code·class="inline">String</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">182&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">chomp</span><span·class="p"·data-group-id="5893025943-1">(</span><span·class="p"·data-group-id="5893025943-2">&lt;&lt;</span><span·class="s">&quot;\nHello\n\n&quot;</span><span·class="p"·data-group-id="5893025943-2">&gt;&gt;</span><span·class="p"·data-group-id="5893025943-1">)</span><span·class="p">.</span><span·class="w">1096 <code·class="inline">String</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">182&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">chomp</span><span·class="p"·data-group-id="7673530760-1">(</span><span·class="p"·data-group-id="7673530760-2">&lt;&lt;</span><span·class="s">&quot;\nHello\n\n&quot;</span><span·class="p"·data-group-id="7673530760-2">&gt;&gt;</span><span·class="p"·data-group-id="7673530760-1">)</span><span·class="p">.</span><span·class="w">
1097 </span><span·class="p"·data-group-id="5893025943-3">&lt;&lt;</span><span·class="s">&quot;\nHello&quot;</span><span·class="p"·data-group-id="5893025943-3">&gt;&gt;</span><span·class="gp·unselectable">1097 </span><span·class="p"·data-group-id="7673530760-3">&lt;&lt;</span><span·class="s">&quot;\nHello&quot;</span><span·class="p"·data-group-id="7673530760-3">&gt;&gt;</span><span·class="gp·unselectable">
1098 183&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">chomp</span><span·class="p"·data-group-id="5893025943-4">(</span><span·class="s">&quot;\nHello\r\r\n&quot;</span><span·class="p"·data-group-id="5893025943-4">)</span><span·class="p">.</span><span·class="w">1098 183&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">chomp</span><span·class="p"·data-group-id="7673530760-4">(</span><span·class="s">&quot;\nHello\r\r\n&quot;</span><span·class="p"·data-group-id="7673530760-4">)</span><span·class="p">.</span><span·class="w">
1099 </span><span·class="s">&quot;\nHello\r&quot;</span></code></pre>1099 </span><span·class="s">&quot;\nHello\r&quot;</span></code></pre>
1100 ··</section>1100 ··</section>
1101 </section>1101 </section>
1102 <section·class="detail"·id="equal/2">1102 <section·class="detail"·id="equal/2">
  
1103 ··<div·class="detail-header">1103 ··<div·class="detail-header">
1104 ····<a·href="#equal/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1104 ····<a·href="#equal/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1189, 19 lines modifiedOffset 1189, 19 lines modified
  
1189 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">A</code>·and·<code·class="inline">B</code>·are·equal,·otherwise·<code·class="inline">false</code>.</p><p>If·<code·class="inline">IgnoreCase</code>·is·<code·class="inline">true</code>·the·function·does·<a·href="#casefold/1"><code·class="inline">casefold</code>ing</a>·on·the1189 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">A</code>·and·<code·class="inline">B</code>·are·equal,·otherwise·<code·class="inline">false</code>.</p><p>If·<code·class="inline">IgnoreCase</code>·is·<code·class="inline">true</code>·the·function·does·<a·href="#casefold/1"><code·class="inline">casefold</code>ing</a>·on·the
1190 fly·before·the·equality·test.</p><p>If·<code·class="inline">Norm</code>·is·not·<code·class="inline">none</code>·the·function·applies·normalization·on·the·fly·before·the1190 fly·before·the·equality·test.</p><p>If·<code·class="inline">Norm</code>·is·not·<code·class="inline">none</code>·the·function·applies·normalization·on·the·fly·before·the
1191 equality·test.·There·are·four·available·normalization·forms:1191 equality·test.·There·are·four·available·normalization·forms:
1192 <a·href="unicode.html#characters_to_nfc_list/1"><code·class="inline">nfc</code></a>,1192 <a·href="unicode.html#characters_to_nfc_list/1"><code·class="inline">nfc</code></a>,
1193 <a·href="unicode.html#characters_to_nfd_list/1"><code·class="inline">nfd</code></a>,1193 <a·href="unicode.html#characters_to_nfd_list/1"><code·class="inline">nfd</code></a>,
1194 <a·href="unicode.html#characters_to_nfkc_list/1"><code·class="inline">nfkc</code></a>,·and1194 <a·href="unicode.html#characters_to_nfkc_list/1"><code·class="inline">nfkc</code></a>,·and
1195 <a·href="unicode.html#characters_to_nfkd_list/1"><code·class="inline">nfkd</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">equal</span><span·class="p"·data-group-id="9704866067-1">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9704866067-2">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</spa[·...·truncated·by·diffoscope;·len:·103,·SHA:·5e5bec88e44c967c32e6e25575c63e5407298f79f514bc356f21cfce7cf6d6d8·...·]-1">)</span><span·class="p">.</span><span·class="w">1195 <a·href="unicode.html#characters_to_nfkd_list/1"><code·class="inline">nfkd</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">equal</span><span·class="p"·data-group-id="0190183201-1">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0190183201-2">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</spa[·...·truncated·by·diffoscope;·len:·103,·SHA:·6b80be42359dfa3bc655ec5671c3733b9e1e25e68127b4d44a5b2c1c5eea2d05·...·]-1">)</span><span·class="p">.</span><span·class="w">
1196 </span><span·class="ss">true</span><span·class="gp·unselectable">1196 </span><span·class="ss">true</span><span·class="gp·unselectable">
1197 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">equal</span><span·class="p"·data-group-id="9704866067-3">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_binary</span><span·class="p"·data-group-id="9704866067-4">[·...·truncated·by·diffoscope;·len:·140,·SHA:·42c537fe0412f48e8717e1705c909479c348ff55d66f90e700892f3612c827e5·...·]-3">)</span><span·class="p">.</span><span·class="w">1197 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">equal</span><span·class="p"·data-group-id="0190183201-3">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_binary</span><span·class="p"·data-group-id="0190183201-4">[·...·truncated·by·diffoscope;·len:·140,·SHA:·cc8ff4b33e9f20c6325a1a306b8b8aeffc03b7305d5dfdd589d29f5c4bbb1a74·...·]-3">)</span><span·class="p">.</span><span·class="w">
1198 </span><span·class="ss">false</span><span·class="gp·unselectable">1198 </span><span·class="ss">false</span><span·class="gp·unselectable">
1199 3&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">equal</span><span·class="p"·data-group-id="9704866067-5">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_binary</span><span·class="p"·data-group-id="9704866067-6">[·...·truncated·by·diffoscope;·len:·291,·SHA:·03f4cbd955010ee7d3b5b51f6a75c4952f2bdeb18845eeb02257a9bb48a108ff·...·]-5">)</span><span·class="p">.</span><span·class="w">1199 3&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">equal</span><span·class="p"·data-group-id="0190183201-5">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_binary</span><span·class="p"·data-group-id="0190183201-6">[·...·truncated·by·diffoscope;·len:·291,·SHA:·ef30c72502c093fcd239c84b22660fd9e4e9400a4e8f520a0dc0f1c5e1e9b2d8·...·]-5">)</span><span·class="p">.</span><span·class="w">
1200 </span><span·class="ss">true</span></code></pre>1200 </span><span·class="ss">true</span></code></pre>
1201 ··</section>1201 ··</section>
1202 </section>1202 </section>
1203 <section·class="detail"·id="find/2">1203 <section·class="detail"·id="find/2">
  
1204 ··<div·class="detail-header">1204 ··<div·class="detail-header">
1205 ····<a·href="#find/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1205 ····<a·href="#find/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1255, 21 lines modifiedOffset 1255, 21 lines modified
1255 ··············when·String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>(),·SearchPattern·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>(),·Dir·::·<a·href="#t:direction/0">direction</a>().</pre>1255 ··············when·String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>(),·SearchPattern·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>(),·Dir·::·<a·href="#t:direction/0">direction</a>().</pre>
  
1256 ······</div>1256 ······</div>
  
1257 <p>Removes·anything·before·<code·class="inline">SearchPattern</code>·in·<code·class="inline">String</code>·and·returns·the·remainder·of1257 <p>Removes·anything·before·<code·class="inline">SearchPattern</code>·in·<code·class="inline">String</code>·and·returns·the·remainder·of
1258 the·string·or·<code·class="inline">nomatch</code>·if·<code·class="inline">SearchPattern</code>·is·not·found.·<code·class="inline">Dir</code>,·which·can·be1258 the·string·or·<code·class="inline">nomatch</code>·if·<code·class="inline">SearchPattern</code>·is·not·found.·<code·class="inline">Dir</code>,·which·can·be
1259 <code·class="inline">leading</code>·or·<code·class="inline">trailing</code>,·indicates·from·which·direction·characters·are·to·be1259 <code·class="inline">leading</code>·or·<code·class="inline">trailing</code>,·indicates·from·which·direction·characters·are·to·be
1260 searched.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="2222462624-1">(</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.&quot;</span><span·class="p"·data-group-id="2222462624-1">)</span><span·class="p">.</span><span·class="w">1260 searched.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="7470805250-1">(</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;.&quot;</span><span·class="p"·data-group-id="7470805250-1">)</span><span·class="p">.</span><span·class="w">
1261 </span><span·class="s">&quot;..cd..ef&quot;</span><span·class="gp·unselectable">1261 </span><span·class="s">&quot;..cd..ef&quot;</span><span·class="gp·unselectable">
1262 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="2222462624-2">(</span><span·class="p"·data-group-id="2222462624-3">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="2222462624-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·137,·SHA:·47e60641f76e99e40448a6af0d07f5072a968f4aea8b354d91075c74876a09bd·...·]-2">)</span><span·class="p">.</span><span·class="w">1262 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="7470805250-2">(</span><span·class="p"·data-group-id="7470805250-3">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="7470805250-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·137,·SHA:·88881df7837f53f0c525ac3324438f7371cd68ae8dbe1cb7a89320039871f6e3·...·]-2">)</span><span·class="p">.</span><span·class="w">
1263 </span><span·class="p"·data-group-id="2222462624-4">&lt;&lt;</span><span·class="s">&quot;..ef&quot;</span><span·class="p"·data-group-id="2222462624-4">&gt;&gt;</span><span·class="gp·unselectable">1263 </span><span·class="p"·data-group-id="7470805250-4">&lt;&lt;</span><span·class="s">&quot;..ef&quot;</span><span·class="p"·data-group-id="7470805250-4">&gt;&gt;</span><span·class="gp·unselectable">
1264 3&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="2222462624-5">(</span><span·class="p"·data-group-id="2222462624-6">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="2222462624-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·135,·SHA:·b4116dbdbe1ca76c3e15be61aefa5ffce67978333c19a60bb48358266a0a8d4a·...·]-5">)</span><span·class="p">.</span><span·class="w">1264 3&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="7470805250-5">(</span><span·class="p"·data-group-id="7470805250-6">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="7470805250-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·135,·SHA:·09514abd44108963966bc61f75c9da6f46ebe7e680330b795b501985b40bf00d·...·]-5">)</span><span·class="p">.</span><span·class="w">
1265 </span><span·class="ss">nomatch</span><span·class="gp·unselectable">1265 </span><span·class="ss">nomatch</span><span·class="gp·unselectable">
1266 4&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="2222462624-7">(</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;x&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">trailing</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·1b2b6e94652f4a963ab12029b73c4cb579fc3b90d9813670e37c1e2be080b9ee·...·]-7">)</span><span·class="p">.</span><span·class="w">1266 4&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">find</span><span·class="p"·data-group-id="7470805250-7">(</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;x&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">trailing</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·12d6578453262f43b61e1fca70bc633af584f8fa0b3f9ac9e7ef006fa651bf17·...·]-7">)</span><span·class="p">.</span><span·class="w">
1267 </span><span·class="ss">nomatch</span></code></pre>1267 </span><span·class="ss">nomatch</span></code></pre>
1268 ··</section>1268 ··</section>
1269 </section>1269 </section>
1270 <section·class="detail"·id="is_empty/1">1270 <section·class="detail"·id="is_empty/1">
  
1271 ··<div·class="detail-header">1271 ··<div·class="detail-header">
1272 ····<a·href="#is_empty/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1272 ····<a·href="#is_empty/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1290, 17 lines modifiedOffset 1290, 17 lines modified
  
1290 ······<div·class="specs">1290 ······<div·class="specs">
  
1291 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_empty(String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>1291 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_empty(String·::·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>())·->·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>
  
1292 ······</div>1292 ······</div>
  
1293 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">String</code>·is·the·empty·string,·otherwise·<code·class="inline">false</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">is_empty</span><span·class="p"·data-group-id="2902629114-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="2902629114-1">)</span><span·class="p">.</span><span·class="w">1293 <p>Returns·<code·class="inline">true</code>·if·<code·class="inline">String</code>·is·the·empty·string,·otherwise·<code·class="inline">false</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">is_empty</span><span·class="p"·data-group-id="8060159678-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="8060159678-1">)</span><span·class="p">.</span><span·class="w">
1294 </span><span·class="ss">false</span><span·class="gp·unselectable">1294 </span><span·class="ss">false</span><span·class="gp·unselectable">
1295 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">is_empty</span><span·class="p"·data-group-id="2902629114-2">(</span><span·class="p"·data-group-id="2902629114-3">[</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2902629114-4">&lt;&lt;</span><span·class="p"·data-group-id="2902629114-4">&gt;&gt;</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·05c715acb64bfc7bbc03d6f230451ff891b0b787bee6222cd7ed1d95d03acb21·...·]-2">)</span><span·class="p">.</span><span·class="w">1295 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">is_empty</span><span·class="p"·data-group-id="8060159678-2">(</span><span·class="p"·data-group-id="8060159678-3">[</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8060159678-4">&lt;&lt;</span><span·class="p"·data-group-id="8060159678-4">&gt;&gt;</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·4556858d9dc14e710f5562d9554242c73f07cf726daa34561f5a4e7a9a4a31a8·...·]-2">)</span><span·class="p">.</span><span·class="w">
1296 </span><span·class="ss">true</span></code></pre>1296 </span><span·class="ss">true</span></code></pre>
1297 ··</section>1297 ··</section>
1298 </section>1298 </section>
1299 <section·class="detail"·id="jaro_similarity/2">1299 <section·class="detail"·id="jaro_similarity/2">
  
1300 ··<div·class="detail-header">1300 ··<div·class="detail-header">
1301 ····<a·href="#jaro_similarity/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1301 ····<a·href="#jaro_similarity/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1328, 21 lines modifiedOffset 1328, 21 lines modified
1328 ·····························Similarity·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:float/0">float</a>().</pre>1328 ·····························Similarity·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:float/0">float</a>().</pre>
  
1329 ······</div>1329 ······</div>
  
1330 <p>Returns·a·float·between·<code·class="inline">+0.0</code>·and·<code·class="inline">1.0</code>·representing·the1330 <p>Returns·a·float·between·<code·class="inline">+0.0</code>·and·<code·class="inline">1.0</code>·representing·the
1331 <a·href="https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance">Jaro·similarity</a>1331 <a·href="https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance">Jaro·similarity</a>
1332 between·the·given·strings.·Strings·with·a·higher·similarity·will·score·closer1332 between·the·given·strings.·Strings·with·a·higher·similarity·will·score·closer
1333 to·<code·class="inline">1.0</code>,·with·<code·class="inline">+0.0</code>·meaning·no·similarity·and·<code·class="inline">1.0</code>·meaning·an·exact·match.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">jaro_similarity</span><span·class="p"·data-group-id="2075194912-1">(</span><span·class="s">&quot;ditto&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ditto&quot;</span><span·class="p"·data-group-id="2075194912-1">)</span><span·class="p">.</span><span·class="w">1333 to·<code·class="inline">1.0</code>,·with·<code·class="inline">+0.0</code>·meaning·no·similarity·and·<code·class="inline">1.0</code>·meaning·an·exact·match.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">jaro_similarity</span><span·class="p"·data-group-id="4674766201-1">(</span><span·class="s">&quot;ditto&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;ditto&quot;</span><span·class="p"·data-group-id="4674766201-1">)</span><span·class="p">.</span><span·class="w">
1334 </span><span·class="mf">1.0</span><span·class="gp·unselectable">1334 </span><span·class="mf">1.0</span><span·class="gp·unselectable">
Max diff block lines reached; 122506/150560 bytes (81.37%) of diff not shown.
13.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/supervisor.html
    
Offset 154, 18 lines modifiedOffset 154, 18 lines modified
154 left.</p><p><a·href=""·id="sup_flags"></a></p><h3·id="module-supervisor-flags"·class="section-heading">154 left.</p><p><a·href=""·id="sup_flags"></a></p><h3·id="module-supervisor-flags"·class="section-heading">
155 ··<a·href="#module-supervisor-flags"·class="hover-link">155 ··<a·href="#module-supervisor-flags"·class="hover-link">
156 ····<i·class="ri-link-m"·aria-hidden="true"></i>156 ····<i·class="ri-link-m"·aria-hidden="true"></i>
157 ··</a>157 ··</a>
158 ··<span·class="text">Supervisor·flags</span>158 ··<span·class="text">Supervisor·flags</span>
159 </h3>159 </h3>
160 <p>The·supervisor·properties·are·defined·by·the·supervisor·flags.·The·type160 <p>The·supervisor·properties·are·defined·by·the·supervisor·flags.·The·type
161 definition·for·the·supervisor·flags·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sup_flags</span><span·class="p"·data-group-id="3842225269-1">(</span><span·class="p"·data-group-id="3842225269-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3842225269-2">#{</span><span·class="ss">strategy</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·dd54a159d391c9ac5ce710f725bed1268660c60a17971e950a3a940022391583·...·]-3">)</span><span·class="p">,</span><span·class="w">···········</span><span·class="c1">%·optional</span><span·class="w">161 definition·for·the·supervisor·flags·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sup_flags</span><span·class="p"·data-group-id="4313474986-1">(</span><span·class="p"·data-group-id="4313474986-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4313474986-2">#{</span><span·class="ss">strategy</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·f454d91ef34a99560ab1d517eb807dc8e87969f4a149c74b9346f7baefe95200·...·]-3">)</span><span·class="p">,</span><span·class="w">···········</span><span·class="c1">%·optional</span><span·class="w">
162 ················</span><span·class="ss">intensity</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="3842225269-4">(</span><span·class="p"·data-group-id="3842225269-4">)</span><span·class="p">,</span><span·class="w">···</span><span·class="c1">%·optional</span><span·class="w">162 ················</span><span·class="ss">intensity</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">non_neg_integer</span><span·class="p"·data-group-id="4313474986-4">(</span><span·class="p"·data-group-id="4313474986-4">)</span><span·class="p">,</span><span·class="w">···</span><span·class="c1">%·optional</span><span·class="w">
163 ················</span><span·class="ss">period</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="3842225269-5">(</span><span·class="p"·data-group-id="3842225269-5">)</span><span·class="p">,</span><span·class="w">··········</span><span·class="c1">%·optional</span><span·class="w">163 ················</span><span·class="ss">period</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="4313474986-5">(</span><span·class="p"·data-group-id="4313474986-5">)</span><span·class="p">,</span><span·class="w">··········</span><span·class="c1">%·optional</span><span·class="w">
164 ················</span><span·class="ss">auto_shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">auto_shutdown</span><span·class="p"·data-group-id="3842225269-6">(</span><span·class="p"·data-group-id="3842225269-6">)</span><span·class="p"·data-group-id="3842225269-2">}</span><span·class="w">·</span><span·class="c1">%·optional</span></code></pre><h4>Restart·Strategies</h4><p>A·supervisor·can·have·one·of·the·following·<em>restart·strategies</em>·specified·with164 ················</span><span·class="ss">auto_shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">auto_shutdown</span><span·class="p"·data-group-id="4313474986-6">(</span><span·class="p"·data-group-id="4313474986-6">)</span><span·class="p"·data-group-id="4313474986-2">}</span><span·class="w">·</span><span·class="c1">%·optional</span></code></pre><h4>Restart·Strategies</h4><p>A·supervisor·can·have·one·of·the·following·<em>restart·strategies</em>·specified·with
165 the·<code·class="inline">strategy</code>·key·in·the·above·map:</p><ul><li><p><code·class="inline">one_for_one</code>·-·If·one·child·process·terminates·and·is·to·be·restarted,·only165 the·<code·class="inline">strategy</code>·key·in·the·above·map:</p><ul><li><p><code·class="inline">one_for_one</code>·-·If·one·child·process·terminates·and·is·to·be·restarted,·only
166 that·child·process·is·affected.·This·is·the·default·restart·strategy.</p></li><li><p><code·class="inline">one_for_all</code>·-·If·one·child·process·terminates·and·is·to·be·restarted,·all166 that·child·process·is·affected.·This·is·the·default·restart·strategy.</p></li><li><p><code·class="inline">one_for_all</code>·-·If·one·child·process·terminates·and·is·to·be·restarted,·all
167 other·child·processes·are·terminated·and·then·all·child·processes·are167 other·child·processes·are·terminated·and·then·all·child·processes·are
168 restarted.</p></li><li><p><code·class="inline">rest_for_one</code>·-·If·one·child·process·terminates·and·is·to·be·restarted,·the168 restarted.</p></li><li><p><code·class="inline">rest_for_one</code>·-·If·one·child·process·terminates·and·is·to·be·restarted,·the
169 'rest'·of·the·child·processes·(that·is,·the·child·processes·after·the169 'rest'·of·the·child·processes·(that·is,·the·child·processes·after·the
170 terminated·child·process·in·the·start·order)·are·terminated.·Then·the170 terminated·child·process·in·the·start·order)·are·terminated.·Then·the
171 terminated·child·process·and·all·child·processes·after·it·are·restarted.</p></li><li><p><code·class="inline">simple_one_for_one</code>·-·A·simplified·<code·class="inline">one_for_one</code>·supervisor,·where·all·child171 terminated·child·process·and·all·child·processes·after·it·are·restarted.</p></li><li><p><code·class="inline">simple_one_for_one</code>·-·A·simplified·<code·class="inline">one_for_one</code>·supervisor,·where·all·child
Offset 201, 21 lines modifiedOffset 201, 21 lines modified
201 the·automatic·shutdowns·they·rely·on·will·not·happen.</p><p>It·is·up·to·implementors·to·take·proper·precautions·if·they·expect·that·their201 the·automatic·shutdowns·they·rely·on·will·not·happen.</p><p>It·is·up·to·implementors·to·take·proper·precautions·if·they·expect·that·their
202 applications·may·be·compiled·with·older·OTP·versions.</p></section><p><a·href=""·id="child_spec"></a></p><h3·id="module-child-specification"·class="section-heading">202 applications·may·be·compiled·with·older·OTP·versions.</p></section><p><a·href=""·id="child_spec"></a></p><h3·id="module-child-specification"·class="section-heading">
203 ··<a·href="#module-child-specification"·class="hover-link">203 ··<a·href="#module-child-specification"·class="hover-link">
204 ····<i·class="ri-link-m"·aria-hidden="true"></i>204 ····<i·class="ri-link-m"·aria-hidden="true"></i>
205 ··</a>205 ··</a>
206 ··<span·class="text">Child·specification</span>206 ··<span·class="text">Child·specification</span>
207 </h3>207 </h3>
208 <p>The·type·definition·of·a·child·specification·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">child_spec</span><span·class="p"·data-group-id="1339793350-1">(</span><span·class="p"·data-group-id="1339793350-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1339793350-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·a96020ce9667594748110b84f7a84e526cb78fda8c1491d0ba4eb9beeadcddc3·...·]-3">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·mandatory</span><span·class="w">208 <p>The·type·definition·of·a·child·specification·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">child_spec</span><span·class="p"·data-group-id="9600005751-1">(</span><span·class="p"·data-group-id="9600005751-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9600005751-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·9cf0eb404e9ebd4735aa71b7172e70a911da91d3647f5a9236b9534ab99c90f0·...·]-3">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·mandatory</span><span·class="w">
209 ·················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="1339793350-4">(</span><span·class="p"·data-group-id="1339793350-4">)</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·mandatory</span><span·class="w">209 ·················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="9600005751-4">(</span><span·class="p"·data-group-id="9600005751-4">)</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·mandatory</span><span·class="w">
210 ·················</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">restart</span><span·class="p"·data-group-id="1339793350-5">(</span><span·class="p"·data-group-id="1339793350-5">)</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·optional</span><span·class="w">210 ·················</span><span·class="ss">restart</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">restart</span><span·class="p"·data-group-id="9600005751-5">(</span><span·class="p"·data-group-id="9600005751-5">)</span><span·class="p">,</span><span·class="w">·········</span><span·class="c1">%·optional</span><span·class="w">
211 ·················</span><span·class="ss">significant</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">significant</span><span·class="p"·data-group-id="1339793350-6">(</span><span·class="p"·data-group-id="1339793350-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·optional</span><span·class="w">211 ·················</span><span·class="ss">significant</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">significant</span><span·class="p"·data-group-id="9600005751-6">(</span><span·class="p"·data-group-id="9600005751-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·optional</span><span·class="w">
212 ·················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="1339793350-7">(</span><span·class="p"·data-group-id="1339793350-7">)</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·optional</span><span·class="w">212 ·················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="9600005751-7">(</span><span·class="p"·data-group-id="9600005751-7">)</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·optional</span><span·class="w">
213 ·················</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">worker</span><span·class="p"·data-group-id="1339793350-8">(</span><span·class="p"·data-group-id="1339793350-8">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·optional</span><span·class="w">213 ·················</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">worker</span><span·class="p"·data-group-id="9600005751-8">(</span><span·class="p"·data-group-id="9600005751-8">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·optional</span><span·class="w">
214 ·················</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="1339793350-9">(</span><span·class="p"·data-group-id="1339793350-9">)</span><span·class="p"·data-group-id="1339793350-2">}</span><span·class="w">·········</span><span·class="c1">%·optional</span></code></pre><p>The·old·tuple·format·is·kept·for·backwards·compatibility,·see·<a·href="#t:child_spec/0"><code·class="inline">child_spec/0</code></a>,214 ·················</span><span·class="ss">modules</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="9600005751-9">(</span><span·class="p"·data-group-id="9600005751-9">)</span><span·class="p"·data-group-id="9600005751-2">}</span><span·class="w">·········</span><span·class="c1">%·optional</span></code></pre><p>The·old·tuple·format·is·kept·for·backwards·compatibility,·see·<a·href="#t:child_spec/0"><code·class="inline">child_spec/0</code></a>,
215 but·the·map·is·preferred.</p><ul><li><p><code·class="inline">id</code>·is·used·to·identify·the·child·specification·internally·by·the·supervisor.</p><p>The·<code·class="inline">id</code>·key·is·mandatory.</p><p>Notice·that·this·identifier·on·occations·has·been·called·&quot;name&quot;.·As·far·as215 but·the·map·is·preferred.</p><ul><li><p><code·class="inline">id</code>·is·used·to·identify·the·child·specification·internally·by·the·supervisor.</p><p>The·<code·class="inline">id</code>·key·is·mandatory.</p><p>Notice·that·this·identifier·on·occations·has·been·called·&quot;name&quot;.·As·far·as
216 possible,·the·terms·&quot;identifier&quot;·or·&quot;id&quot;·are·now·used·but·to·keep·backward216 possible,·the·terms·&quot;identifier&quot;·or·&quot;id&quot;·are·now·used·but·to·keep·backward
217 compatibility,·some·occurences·of·&quot;name&quot;·can·still·be·found,·for·example·in217 compatibility,·some·occurences·of·&quot;name&quot;·can·still·be·found,·for·example·in
218 error·messages.</p></li><li><p><code·class="inline">start</code>·defines·the·function·call·used·to·start·the·child·process.·It·must·be218 error·messages.</p></li><li><p><code·class="inline">start</code>·defines·the·function·call·used·to·start·the·child·process.·It·must·be
219 a·module-function-arguments·tuple·<code·class="inline">{M,F,A}</code>·used·as219 a·module-function-arguments·tuple·<code·class="inline">{M,F,A}</code>·used·as
220 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,F,A)</code></a>.</p><p>The·start·function·<em>must·create·and·link·to</em>·the·child·process,·and·must220 <a·href="../../../../erts-15.2.2/doc/html/erlang.html#apply/3"><code·class="inline">apply(M,F,A)</code></a>.</p><p>The·start·function·<em>must·create·and·link·to</em>·the·child·process,·and·must
221 return·<code·class="inline">{ok,Child}</code>·or·<code·class="inline">{ok,Child,Info}</code>,·where·<code·class="inline">Child</code>·is·the·pid·of·the221 return·<code·class="inline">{ok,Child}</code>·or·<code·class="inline">{ok,Child,Info}</code>,·where·<code·class="inline">Child</code>·is·the·pid·of·the
19.4 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/timer.html
    
Offset 142, 23 lines modifiedOffset 142, 23 lines modified
142 <a·href="../../../../erts-15.2.2/doc/html/time_correction.html"><em>Time·and·Time·Correction·in·Erlang</em></a>142 <a·href="../../../../erts-15.2.2/doc/html/time_correction.html"><em>Time·and·Time·Correction·in·Erlang</em></a>
143 ERTS·User's·guide.</p><h2·id="module-examples"·class="section-heading">143 ERTS·User's·guide.</p><h2·id="module-examples"·class="section-heading">
144 ··<a·href="#module-examples"·class="hover-link">144 ··<a·href="#module-examples"·class="hover-link">
145 ····<i·class="ri-link-m"·aria-hidden="true"></i>145 ····<i·class="ri-link-m"·aria-hidden="true"></i>
146 ··</a>146 ··</a>
147 ··<span·class="text">Examples</span>147 ··<span·class="text">Examples</span>
148 </h2>148 </h2>
149 <p><em>Example·1</em></p><p>The·following·example·shows·how·to·print·&quot;Hello·World!&quot;·in·5·seconds:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="9605680969-1">(</span><span·class="mi">5000</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">io</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">format</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·440,·SHA:·3b46ffe0458a43ded4e6d236d8d480de762fd3dddb5f964d3e80c8966b624de3·...·]-1">)</span><span·class="p">.</span><span·class="w">149 <p><em>Example·1</em></p><p>The·following·example·shows·how·to·print·&quot;Hello·World!&quot;·in·5·seconds:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="0295127473-1">(</span><span·class="mi">5000</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">io</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">format</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·440,·SHA:·d1e6a22934d67135ff9df3673d2be98a11187f307d7f625c3be4f3fd6e4e00ae·...·]-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="9605680969-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="9605680969-4">}</span><span·class="w">150 </span><span·class="p"·data-group-id="0295127473-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="0295127473-4">}</span><span·class="w">
151 </span><span·class="n">Hello</span><span·class="w">·</span><span·class="n">World</span><span·class="o">!</span></code></pre><p><em>Example·2</em></p><p>The·following·example·shows·a·process·performing·a·certain·action,·and·if·this151 </span><span·class="n">Hello</span><span·class="w">·</span><span·class="n">World</span><span·class="o">!</span></code></pre><p><em>Example·2</em></p><p>The·following·example·shows·a·process·performing·a·certain·action,·and·if·this
152 action·is·not·completed·within·a·certain·limit,·the·process·is·killed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5775140741-1">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5775140741-2">[</span><span·class="ss">foo</span><span[·...·truncated·by·diffoscope;·len:·164,·SHA:·7f834cf0bdf8df55ccd0eb6220c4cdeab0a0a8ddd90be7d63e818df51db735b5·...·]-1">)</span><span·class="p">,</span><span·class="w">152 action·is·not·completed·within·a·certain·limit,·the·process·is·killed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Pid</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="3494294620-1">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="k">fun</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3494294620-2">[</span><span·class="ss">foo</span><span[·...·truncated·by·diffoscope;·len:·164,·SHA:·b89371a9240408a6e05914683003992694efbc739d8554dd69393ed1b5a90885·...·]-1">)</span><span·class="p">,</span><span·class="w">
153 </span><span·class="c1">%%·If·pid·is·not·finished·in·10·seconds,·kill·him</span><span·class="w">153 </span><span·class="c1">%%·If·pid·is·not·finished·in·10·seconds,·kill·him</span><span·class="w">
154 </span><span·class="p"·data-group-id="5775140741-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p"·data-group-id="5775140741-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·460,·SHA:·5b24efbe395d015f671349a5a508297f52a94b31ce2708673991281b8dbfe231·...·]-4">)</span><span·class="p">,</span><span·class="w">154 </span><span·class="p"·data-group-id="3494294620-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">R</span><span·class="p"·data-group-id="3494294620-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·460,·SHA:·b3bcb9fe06e331b7880e6c787c1b99020adea72cf838406f3c354a0d5ab8cdc6·...·]-4">)</span><span·class="p">,</span><span·class="w">
155 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">155 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
156 </span><span·class="c1">%%·We·change·our·mind...</span><span·class="w">156 </span><span·class="c1">%%·We·change·our·mind...</span><span·class="w">
157 </span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">cancel</span><span·class="p"·data-group-id="5775140741-6">(</span><span·class="n">R</span><span·class="p"·data-group-id="5775140741-6">)</span><span·class="p">,</span><span·class="w">157 </span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">cancel</span><span·class="p"·data-group-id="3494294620-6">(</span><span·class="n">R</span><span·class="p"·data-group-id="3494294620-6">)</span><span·class="p">,</span><span·class="w">
158 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="module-notes"·class="section-heading">158 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="module-notes"·class="section-heading">
159 ··<a·href="#module-notes"·class="hover-link">159 ··<a·href="#module-notes"·class="hover-link">
160 ····<i·class="ri-link-m"·aria-hidden="true"></i>160 ····<i·class="ri-link-m"·aria-hidden="true"></i>
161 ··</a>161 ··</a>
162 ··<span·class="text">Notes</span>162 ··<span·class="text">Notes</span>
163 </h2>163 </h2>
164 <p>A·timer·can·always·be·removed·by·calling·<a·href="#cancel/1"><code·class="inline">cancel/1</code></a>.</p><p>An·interval·timer,·that·is,·a·timer·created·by·evaluating·any·of·the·functions164 <p>A·timer·can·always·be·removed·by·calling·<a·href="#cancel/1"><code·class="inline">cancel/1</code></a>.</p><p>An·interval·timer,·that·is,·a·timer·created·by·evaluating·any·of·the·functions
Offset 177, 28 lines modifiedOffset 177, 28 lines modified
177 process,·and·therefore·calls·to·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·in·those·functions·will·return·the·Pid177 process,·and·therefore·calls·to·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·in·those·functions·will·return·the·Pid
178 of·this·process,·which·is·different·from·the·process·that·called178 of·this·process,·which·is·different·from·the·process·that·called
179 <code·class="inline">timer:apply_*</code>.</p><p><em>Example</em></p><p>In·the·following·example,·the·intention·is·to·set·a·timer·to·execute·a·function179 <code·class="inline">timer:apply_*</code>.</p><p><em>Example</em></p><p>In·the·following·example,·the·intention·is·to·set·a·timer·to·execute·a·function
180 after·1·second,·which·performs·a·fictional·task,·and·then·wants·to·inform·the180 after·1·second,·which·performs·a·fictional·task,·and·then·wants·to·inform·the
181 process·which·set·the·timer·about·its·completion,·by·sending·it·a·<code·class="inline">done</code>181 process·which·set·the·timer·about·its·completion,·by·sending·it·a·<code·class="inline">done</code>
182 message.</p><p>Using·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·<em>inside</em>·the·timed·function,·the·code·below·does·not·work·as182 message.</p><p>Using·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·<em>inside</em>·the·timed·function,·the·code·below·does·not·work·as
183 intended.·The·task·gets·done,·but·the·<code·class="inline">done</code>·message·gets·sent·to·the·wrong183 intended.·The·task·gets·done,·but·the·<code·class="inline">done</code>·message·gets·sent·to·the·wrong
184 process·and·is·lost.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="7962940514-1">(</span><span·class="mi">1000</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7962940514-2">(</span><span·class="p"·data-group-id="7962940514-2">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·566,·SHA:·b538cda7fb0f7c96cb21365a41176423a15df0964e7a800d7cd01ed924729104·...·]-1">)</span><span·class="p">.</span><span·class="w">184 process·and·is·lost.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="2269405640-1">(</span><span·class="mi">1000</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2269405640-2">(</span><span·class="p"·data-group-id="2269405640-2">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·566,·SHA:·d150d9cfdf88b52f6d575547f5f4b0d6b80f2991d23b7d40d77ddac66cf10c61·...·]-1">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="7962940514-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="7962940514-5">}</span><span·class="gp·unselectable">185 </span><span·class="p"·data-group-id="2269405640-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="2269405640-5">}</span><span·class="gp·unselectable">
186 2&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">186 2&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
187 </span><span·class="c1">%%·...·5s·pass...</span><span·class="w">187 </span><span·class="c1">%%·...·5s·pass...</span><span·class="w">
188 </span><span·class="ss">timeout</span></code></pre><p>The·code·below·calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·in·the·process·which·sets·the·timer·and·assigns·it188 </span><span·class="ss">timeout</span></code></pre><p>The·code·below·calls·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>·in·the·process·which·sets·the·timer·and·assigns·it
189 to·a·variable,·which·is·then·used·in·the·function·to·send·the·<code·class="inline">done</code>·message·to,189 to·a·variable,·which·is·then·used·in·the·function·to·send·the·<code·class="inline">done</code>·message·to,
190 and·so·works·as·intended.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Target</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="7289990386-1">(</span><span·class="p"·data-group-id="7289990386-1">)</span><span·class="w">190 and·so·works·as·intended.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="n">Target</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9486855645-1">(</span><span·class="p"·data-group-id="9486855645-1">)</span><span·class="w">
191 </span><span·class="o">&lt;</span><span·class="mf">0.82</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">191 </span><span·class="o">&lt;</span><span·class="mf">0.82</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="gp·unselectable">
192 2&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="7289990386-2">(</span><span·class="mi">1000</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7289990386-3">(</span><span·class="p"·data-group-id="7289990386-3">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·461,·SHA:·67a9c0e35d782c2e7c9209e0b7e8c016ff9ffb4d05445dacf5f35411049d095c·...·]-2">)</span><span·class="p">.</span><span·class="w">192 2&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="9486855645-2">(</span><span·class="mi">1000</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9486855645-3">(</span><span·class="p"·data-group-id="9486855645-3">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·461,·SHA:·1e42273676d631dec2b725b5237882206302829b900f781e0b9570cad04fe2dc·...·]-2">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p"·data-group-id="7289990386-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="7289990386-5">}</span><span·class="gp·unselectable">193 </span><span·class="p"·data-group-id="9486855645-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="9486855645-5">}</span><span·class="gp·unselectable">
194 3&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">194 3&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
195 </span><span·class="c1">%%·...·1s·passes...</span><span·class="w">195 </span><span·class="c1">%%·...·1s·passes...</span><span·class="w">
196 </span><span·class="ss">done</span></code></pre><p>Another·option·is·to·pass·the·message·target·as·a·parameter·to·the·function.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="2897575584-1">(</span><span·class="mi">1000</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2897575584-2">(</span><span·class="n">Target</span><span·class="p"·data-group-id="2897575584-2">)</s[·...·truncated·by·diffoscope;·len:·778,·SHA:·d92e070ab6270a7aa6a14a600e74d342842de8f2dcdcc64f1ffb7b90671295ac·...·]-1">)</span><span·class="p">.</span><span·class="w">196 </span><span·class="ss">done</span></code></pre><p>Another·option·is·to·pass·the·message·target·as·a·parameter·to·the·function.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">apply_after</span><span·class="p"·data-group-id="5674499871-1">(</span><span·class="mi">1000</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5674499871-2">(</span><span·class="n">Target</span><span·class="p"·data-group-id="5674499871-2">)</s[·...·truncated·by·diffoscope;·len:·778,·SHA:·93ffccc6a998621000cbc0ca533140db1b49d9a233a93111f7153b75c05e0659·...·]-1">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="2897575584-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="2897575584-6">}</span><span·class="gp·unselectable">197 </span><span·class="p"·data-group-id="5674499871-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="5674499871-6">}</span><span·class="gp·unselectable">
198 2&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">198 2&gt;·</span><span·class="k">receive</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">done</span><span·class="w">·</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">5000</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">timeout</span><span·class="w">·</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
199 </span><span·class="c1">%%·...·1s·passes...</span><span·class="w">199 </span><span·class="c1">%%·...·1s·passes...</span><span·class="w">
200 </span><span·class="ss">done</span></code></pre>200 </span><span·class="ss">done</span></code></pre>
201 ····</section>201 ····</section>
  
202 </div>202 </div>
  
36.7 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/unicode.html
    
Offset 1031, 21 lines modifiedOffset 1031, 21 lines modified
1031 binaries·in·other·ways·are·split·on·non-UTF·character·boundaries.·An1031 binaries·in·other·ways·are·split·on·non-UTF·character·boundaries.·An
1032 <code·class="inline">incomplete</code>·tuple·is·then·returned·instead·of·the·<code·class="inline">error</code>·tuple.·It·consists·of1032 <code·class="inline">incomplete</code>·tuple·is·then·returned·instead·of·the·<code·class="inline">error</code>·tuple.·It·consists·of
1033 the·same·parts·as·the·<code·class="inline">error</code>·tuple,·but·the·tag·is·<code·class="inline">incomplete</code>·instead·of1033 the·same·parts·as·the·<code·class="inline">error</code>·tuple,·but·the·tag·is·<code·class="inline">incomplete</code>·instead·of
1034 <code·class="inline">error</code>·and·the·last·element·is·always·guaranteed·to·be·a·binary·consisting·of1034 <code·class="inline">error</code>·and·the·last·element·is·always·guaranteed·to·be·a·binary·consisting·of
1035 the·first·part·of·a·(so·far)·valid·UTF·character.</p><p>If·one·UTF·character·is·split·over·two·consecutive·binaries·in·the·<code·class="inline">Data</code>,·the1035 the·first·part·of·a·(so·far)·valid·UTF·character.</p><p>If·one·UTF·character·is·split·over·two·consecutive·binaries·in·the·<code·class="inline">Data</code>,·the
1036 conversion·succeeds.·This·means·that·a·character·can·be·decoded·from·a·range·of1036 conversion·succeeds.·This·means·that·a·character·can·be·decoded·from·a·range·of
1037 binaries·as·long·as·the·whole·range·is·specified·as·input·without·errors1037 binaries·as·long·as·the·whole·range·is·specified·as·input·without·errors
1038 occurring.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">decode_data</span><span·class="p"·data-group-id="1846781625-1">(</span><span·class="n">Data</span><span·class="p"·data-group-id="1846781625-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1038 occurring.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">decode_data</span><span·class="p"·data-group-id="8357979624-1">(</span><span·class="n">Data</span><span·class="p"·data-group-id="8357979624-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1039 ···</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_list</span><span·class="p"·data-group-id="1846781625-2">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p"·data-group-id="1846781625-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">1039 ···</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_list</span><span·class="p"·data-group-id="8357979624-2">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p"·data-group-id="8357979624-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1040 ······</span><span·class="p"·data-group-id="1846781625-3">{</span><span·class="ss">incomplete</span><span·class="p">,</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rest</span><span·class="p"·data-group-id="1846781625-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1040 ······</span><span·class="p"·data-group-id="8357979624-3">{</span><span·class="ss">incomplete</span><span·class="p">,</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rest</span><span·class="p"·data-group-id="8357979624-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1041 ············</span><span·class="n">More</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">get_some_more_data</span><span·class="p"·data-group-id="1846781625-4">(</span><span·class="p"·data-group-id="1846781625-4">)</span><span·class="p">,</span><span·class="w">1041 ············</span><span·class="n">More</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">get_some_more_data</span><span·class="p"·data-group-id="8357979624-4">(</span><span·class="p"·data-group-id="8357979624-4">)</span><span·class="p">,</span><span·class="w">
1042 ············</span><span·class="n">Encoded</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nf">decode_data</span><span·class="p"·data-group-id="1846781625-5">(</span><span·class="p"·data-group-id="1846781625-6">[</span><span·class="n">Rest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">More</span><span·class="p"·data-group-id="1846781625-6">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·3228b2ad8d9c9ddc6d5a415e715b615e47f60d449ad507d87daba003845e03ec·...·]-5">)</span><span·class="p">;</span><span·class="w">1042 ············</span><span·class="n">Encoded</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="nf">decode_data</span><span·class="p"·data-group-id="8357979624-5">(</span><span·class="p"·data-group-id="8357979624-6">[</span><span·class="n">Rest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">More</span><span·class="p"·data-group-id="8357979624-6">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·c63a6b3afcdedf75997fd3d5a680d2dfb08ab3c7fe184c905c43f39a20696d18·...·]-5">)</span><span·class="p">;</span><span·class="w">
1043 ······</span><span·class="p"·data-group-id="1846781625-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="1846781625-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1043 ······</span><span·class="p"·data-group-id="8357979624-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="8357979624-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1044 ············</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="1846781625-8">(</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="1846781625-8">)</span><span·class="p">;</span><span·class="w">1044 ············</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="8357979624-8">(</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="8357979624-8">)</span><span·class="p">;</span><span·class="w">
1045 ······</span><span·class="n">List</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1045 ······</span><span·class="n">List</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1046 ············</span><span·class="n">List</span><span·class="w">1046 ············</span><span·class="n">List</span><span·class="w">
1047 ···</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>However,·bit·strings·that·are·not·whole·bytes·are·not·allowed,·so·a·UTF1047 ···</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>However,·bit·strings·that·are·not·whole·bytes·are·not·allowed,·so·a·UTF
1048 character·must·be·split·along·8-bit·boundaries·to·ever·be·decoded.</p><p>A·<code·class="inline">badarg</code>·exception·is·thrown·for·the·following·cases:</p><ul><li>Any·parameters·are·of·the·wrong·type.</li><li>The·list·structure·is·invalid·(a·number·as·tail).</li><li>The·binaries·do·not·contain·whole·bytes·(bit·strings).</li></ul>1048 character·must·be·split·along·8-bit·boundaries·to·ever·be·decoded.</p><p>A·<code·class="inline">badarg</code>·exception·is·thrown·for·the·following·cases:</p><ul><li>Any·parameters·are·of·the·wrong·type.</li><li>The·list·structure·is·invalid·(a·number·as·tail).</li><li>The·binaries·do·not·contain·whole·bytes·(bit·strings).</li></ul>
1049 ··</section>1049 ··</section>
1050 </section>1050 </section>
1051 <section·class="detail"·id="characters_to_nfc_binary/1">1051 <section·class="detail"·id="characters_to_nfc_binary/1">
Offset 1070, 16 lines modifiedOffset 1070, 16 lines modified
1070 ······<div·class="specs">1070 ······<div·class="specs">
  
1071 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfc_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>1071 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfc_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>
  
1072 ······</div>1072 ······</div>
  
1073 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form1073 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form
1074 of·canonical·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·an·utf8·encoded·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfc_binary</span><span·class="p"·data-group-id="7323837960-1">(</span><span·class="p"·data-group-id="7323837960-2">[</span><span·class="p"·data-group-id="7323837960-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="7323837960-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·2fa938ba7a793d020258e1bc0679aef5c3d33d455f2b8521f92da2ed06155f9b·...·]-1">)</span><span·class="p">.</span><span·class="w">1074 of·canonical·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·an·utf8·encoded·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfc_binary</span><span·class="p"·data-group-id="5022010572-1">(</span><span·class="p"·data-group-id="5022010572-2">[</span><span·class="p"·data-group-id="5022010572-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="5022010572-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·dad626567569fe558914cddd4f2c900d83b6320cad8aaec720314dffbb609b43·...·]-1">)</span><span·class="p">.</span><span·class="w">
1075 </span><span·class="p"·data-group-id="7323837960-7">&lt;&lt;</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="7323837960-7">&gt;&gt;</span></code></pre>1075 </span><span·class="p"·data-group-id="5022010572-7">&lt;&lt;</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="5022010572-7">&gt;&gt;</span></code></pre>
1076 ··</section>1076 ··</section>
1077 </section>1077 </section>
1078 <section·class="detail"·id="characters_to_nfc_list/1">1078 <section·class="detail"·id="characters_to_nfc_list/1">
  
1079 ··<div·class="detail-header">1079 ··<div·class="detail-header">
1080 ····<a·href="#characters_to_nfc_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1080 ····<a·href="#characters_to_nfc_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1081 ······<i·class="ri-link-m"·aria-hidden="true"></i>1081 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1100, 15 lines modifiedOffset 1100, 15 lines modified
1100 ······<div·class="specs">1100 ······<div·class="specs">
  
1101 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfc_list(<a·href="#t:chardata/0">chardata</a>())·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()],·<a·href="#t:chardata/0">chardata</a>()}.</pre>1101 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfc_list(<a·href="#t:chardata/0">chardata</a>())·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()],·<a·href="#t:chardata/0">chardata</a>()}.</pre>
  
1102 ······</div>1102 ······</div>
  
1103 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form1103 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form
1104 of·canonical·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·a·list·of·characters.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfc_list</span><span·class="p"·data-group-id="3389290462-1">(</span><span·class="p"·data-group-id="3389290462-2">[</span><span·class="p"·data-group-id="3389290462-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="3389290462-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·6dd9dc1640179edcf676f77c12ca0ba4d436b7d8f0d59b9fd4e66e5e074f1b59·...·]-1">)</span><span·class="p">.</span><span·class="w">1104 of·canonical·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·a·list·of·characters.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfc_list</span><span·class="p"·data-group-id="0131720858-1">(</span><span·class="p"·data-group-id="0131720858-2">[</span><span·class="p"·data-group-id="0131720858-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="0131720858-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·a33decbe78adc22fdf1d22f434a4e1fd41880859bbdf25e7027c07e29f1abdc0·...·]-1">)</span><span·class="p">.</span><span·class="w">
1105 </span><span·class="s">&quot;abc..åäö&quot;</span></code></pre>1105 </span><span·class="s">&quot;abc..åäö&quot;</span></code></pre>
1106 ··</section>1106 ··</section>
1107 </section>1107 </section>
1108 <section·class="detail"·id="characters_to_nfd_binary/1">1108 <section·class="detail"·id="characters_to_nfd_binary/1">
  
1109 ··<div·class="detail-header">1109 ··<div·class="detail-header">
1110 ····<a·href="#characters_to_nfd_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1110 ····<a·href="#characters_to_nfd_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1130, 16 lines modifiedOffset 1130, 16 lines modified
1130 ······<div·class="specs">1130 ······<div·class="specs">
  
1131 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfd_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>1131 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfd_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>
  
1132 ······</div>1132 ······</div>
  
1133 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form1133 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form
1134 of·canonical·equivalent·Decomposed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·an·utf8·encoded·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_binary</span><span·class="p"·data-group-id="5128629043-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="5128629043-1">)</span><span·class="p">.</span><span·class="w">1134 of·canonical·equivalent·Decomposed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·an·utf8·encoded·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_binary</span><span·class="p"·data-group-id="7228204261-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="7228204261-1">)</span><span·class="p">.</span><span·class="w">
1135 </span><span·class="p"·data-group-id="5128629043-2">&lt;&lt;</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">46</span><span·class="p">,</span><span·class="mi">46</span><[·...·truncated·by·diffoscope;·len:·497,·SHA:·a50b4820244ef964f1d0a1799bf2fa29c2097281cdab785204302dd40159c0b1·...·]-2">&gt;&gt;</span></code></pre>1135 </span><span·class="p"·data-group-id="7228204261-2">&lt;&lt;</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">46</span><span·class="p">,</span><span·class="mi">46</span><[·...·truncated·by·diffoscope;·len:·497,·SHA:·92c7ab6a11672f90837648758859ff21861652adad7b8a7edb34ffd789ec8f4c·...·]-2">&gt;&gt;</span></code></pre>
1136 ··</section>1136 ··</section>
1137 </section>1137 </section>
1138 <section·class="detail"·id="characters_to_nfd_list/1">1138 <section·class="detail"·id="characters_to_nfd_list/1">
  
1139 ··<div·class="detail-header">1139 ··<div·class="detail-header">
1140 ····<a·href="#characters_to_nfd_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1140 ····<a·href="#characters_to_nfd_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1141 ······<i·class="ri-link-m"·aria-hidden="true"></i>1141 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1160, 16 lines modifiedOffset 1160, 16 lines modified
1160 ······<div·class="specs">1160 ······<div·class="specs">
  
1161 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfd_list(<a·href="#t:chardata/0">chardata</a>())·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()],·<a·href="#t:chardata/0">chardata</a>()}.</pre>1161 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfd_list(<a·href="#t:chardata/0">chardata</a>())·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()],·<a·href="#t:chardata/0">chardata</a>()}.</pre>
  
1162 ······</div>1162 ······</div>
  
1163 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form1163 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form
1164 of·canonical·equivalent·Decomposed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·a·list·of·characters.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_list</span><span·class="p"·data-group-id="0957111677-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="0957111677-1">)</span><span·class="p">.</span><span·class="w">1164 of·canonical·equivalent·Decomposed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·a·list·of·characters.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfd_list</span><span·class="p"·data-group-id="2350068001-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="2350068001-1">)</span><span·class="p">.</span><span·class="w">
1165 </span><span·class="p"·data-group-id="0957111677-2">[</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">46</span><span·class="p">,</span><span·class="mi">46</span><span·cl[·...·truncated·by·diffoscope;·len:·337,·SHA:·1e3bff147ce20cf161e2706c53af2edc0fe5ef82ef41ee951fd8edbd6069b356·...·]-2">]</span></code></pre>1165 </span><span·class="p"·data-group-id="2350068001-2">[</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">46</span><span·class="p">,</span><span·class="mi">46</span><span·cl[·...·truncated·by·diffoscope;·len:·337,·SHA:·27b7c1b940504e43373abca127fbfff36aeebba0c0be8d640cd7c6c5a8d304c5·...·]-2">]</span></code></pre>
1166 ··</section>1166 ··</section>
1167 </section>1167 </section>
1168 <section·class="detail"·id="characters_to_nfkc_binary/1">1168 <section·class="detail"·id="characters_to_nfkc_binary/1">
  
1169 ··<div·class="detail-header">1169 ··<div·class="detail-header">
1170 ····<a·href="#characters_to_nfkc_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1170 ····<a·href="#characters_to_nfkc_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1171 ······<i·class="ri-link-m"·aria-hidden="true"></i>1171 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1190, 16 lines modifiedOffset 1190, 16 lines modified
1190 ······<div·class="specs">1190 ······<div·class="specs">
  
1191 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfkc_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>1191 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfkc_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>
  
1192 ······</div>1192 ······</div>
  
1193 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form1193 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form
1194 of·compatibly·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·an·utf8·encoded·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfkc_binary</span><span·class="p"·data-group-id="7467502720-1">(</span><span·class="p"·data-group-id="7467502720-2">[</span><span·class="p"·data-group-id="7467502720-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="7467502720-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·856,·SHA:·aff320db75ad6058c1ad5537f1453e04c55a9681129841ca85ca849c614da4fa·...·]0-1">)</span><span·class="p">.</span><span·class="w">1194 of·compatibly·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·an·utf8·encoded·binary.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfkc_binary</span><span·class="p"·data-group-id="8676206970-1">(</span><span·class="p"·data-group-id="8676206970-2">[</span><span·class="p"·data-group-id="8676206970-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="8676206970-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·856,·SHA:·4f49a3116b0ddb19c031b528b9b0d28da3e5deba8ac878be1c7a64775ab7ab57·...·]0-1">)</span><span·class="p">.</span><span·class="w">
1195 </span><span·class="p"·data-group-id="7467502720-8">&lt;&lt;</span><span·class="s">&quot;abc..åäö32&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="7467502720-8">&gt;&gt;</span></code></pre>1195 </span><span·class="p"·data-group-id="8676206970-8">&lt;&lt;</span><span·class="s">&quot;abc..åäö32&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="8676206970-8">&gt;&gt;</span></code></pre>
1196 ··</section>1196 ··</section>
1197 </section>1197 </section>
1198 <section·class="detail"·id="characters_to_nfkc_list/1">1198 <section·class="detail"·id="characters_to_nfkc_list/1">
  
1199 ··<div·class="detail-header">1199 ··<div·class="detail-header">
1200 ····<a·href="#characters_to_nfkc_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1200 ····<a·href="#characters_to_nfkc_list/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1201 ······<i·class="ri-link-m"·aria-hidden="true"></i>1201 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1220, 15 lines modifiedOffset 1220, 15 lines modified
1220 ······<div·class="specs">1220 ······<div·class="specs">
  
1221 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfkc_list(<a·href="#t:chardata/0">chardata</a>())·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()],·<a·href="#t:chardata/0">chardata</a>()}.</pre>1221 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfkc_list(<a·href="#t:chardata/0">chardata</a>())·->·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:char/0">char</a>()],·<a·href="#t:chardata/0">chardata</a>()}.</pre>
  
1222 ······</div>1222 ······</div>
  
1223 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form1223 <p>Converts·a·possibly·deep·list·of·characters·and·binaries·into·a·Normalized·Form
1224 of·compatibly·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·a·list·of·characters.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfkc_list</span><span·class="p"·data-group-id="8067028496-1">(</span><span·class="p"·data-group-id="8067028496-2">[</span><span·class="p"·data-group-id="8067028496-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="8067028496-3">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·856,·SHA:·4a1f4dedd3db65e923425e538b65e0ca4c48f0104dfd3c75abff4c395762feb7·...·]-1">)</span><span·class="p">.</span><span·class="w">1224 of·compatibly·equivalent·Composed·characters·according·to·the·Unicode·standard.</p><p>Any·binaries·in·the·input·must·be·encoded·with·utf8·encoding.</p><p>The·result·is·a·list·of·characters.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_nfkc_list</span><span·class="p"·data-group-id="8483298064-1">(</span><span·class="p"·data-group-id="8483298064-2">[</span><span·class="p"·data-group-id="8483298064-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="8483298064-3">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·856,·SHA:·2fa429cc824251af7370f991fdf0da3025c5bb6fd1f13b8ea4830aa5506033d7·...·]-1">)</span><span·class="p">.</span><span·class="w">
1225 </span><span·class="s">&quot;abc..åäö32&quot;</span></code></pre>1225 </span><span·class="s">&quot;abc..åäö32&quot;</span></code></pre>
1226 ··</section>1226 ··</section>
1227 </section>1227 </section>
1228 <section·class="detail"·id="characters_to_nfkd_binary/1">1228 <section·class="detail"·id="characters_to_nfkd_binary/1">
  
1229 ··<div·class="detail-header">1229 ··<div·class="detail-header">
1230 ····<a·href="#characters_to_nfkd_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1230 ····<a·href="#characters_to_nfkd_binary/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 1251, 16 lines modifiedOffset 1251, 16 lines modified
  
1251 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfkd_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>1251 ··········<pre·translate="no"><span·class="attribute">-spec</span>·characters_to_nfkd_binary(<a·href="#t:chardata/0">chardata</a>())·->·<a·href="#t:unicode_binary/0">unicode_binary</a>()·|·{error,·<a·href="#t:unicode_binary/0">unicode_binary</a>(),·<a·href="#t:chardata/0">chardata</a>()}.</pre>
  
1252 ······</div>1252 ······</div>
  
Max diff block lines reached; 7843/37475 bytes (20.93%) of diff not shown.
159 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/unicode_usage.html
    
Offset 335, 28 lines modifiedOffset 335, 28 lines modified
335 communicating·externally.·Functions·and·bit·syntax·exist·to·encode·and·decode335 communicating·externally.·Functions·and·bit·syntax·exist·to·encode·and·decode
336 both·UTF-8,·UTF-16,·and·UTF-32·in·binaries.·However,·library·functions·dealing336 both·UTF-8,·UTF-16,·and·UTF-32·in·binaries.·However,·library·functions·dealing
337 with·binaries·and·Unicode·in·general·only·deal·with·the·default·encoding.</p><p>Character·data·can·be·combined·from·many·sources,·sometimes·available·in·a·mix337 with·binaries·and·Unicode·in·general·only·deal·with·the·default·encoding.</p><p>Character·data·can·be·combined·from·many·sources,·sometimes·available·in·a·mix
338 of·strings·and·binaries.·Erlang·has·for·long·had·the·concept·of·<code·class="inline">iodata</code>·or338 of·strings·and·binaries.·Erlang·has·for·long·had·the·concept·of·<code·class="inline">iodata</code>·or
339 <code·class="inline">iolist</code>s,·where·binaries·and·lists·can·be·combined·to·represent·a·sequence·of339 <code·class="inline">iolist</code>s,·where·binaries·and·lists·can·be·combined·to·represent·a·sequence·of
340 bytes.·In·the·same·way,·the·Unicode-aware·modules·often·allow·for·combinations340 bytes.·In·the·same·way,·the·Unicode-aware·modules·often·allow·for·combinations
341 of·binaries·and·lists,·where·the·binaries·have·characters·encoded·in·UTF-8·and341 of·binaries·and·lists,·where·the·binaries·have·characters·encoded·in·UTF-8·and
342 the·lists·contain·such·binaries·or·numbers·representing·Unicode·code·points:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="6716881939-1">(</span><span·class="p"·data-group-id="6716881939-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="6716881939-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·e611d2ed4e91250468fc2cb7ea2c19704db5004037cda3d7d0c401f80c5c4b52·...·]-2">)</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="ss">characters</span><span·class="w">·</span><span·class="ss">encoded</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">8</span><span·class="w">·</span><span·class="ss">coding</span><span·class="w">·</span><span·class="ss">standard</span><span·class="w">342 the·lists·contain·such·binaries·or·numbers·representing·Unicode·code·points:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="7738922195-1">(</span><span·class="p"·data-group-id="7738922195-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="7738922195-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·b871bb17854a1b5452a7f1fe0c0ef9e0414d2fb5238c5b19fa81a6390e2411a3·...·]-2">)</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="ss">characters</span><span·class="w">·</span><span·class="ss">encoded</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">8</span><span·class="w">·</span><span·class="ss">coding</span><span·class="w">·</span><span·class="ss">standard</span><span·class="w">
  
343 </span><span·class="nf">chardata</span><span·class="p"·data-group-id="6716881939-3">(</span><span·class="p"·data-group-id="6716881939-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">charlist</span><span·class="p"·data-group-id="6716881939-4">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·233,·SHA:·28135445d35cd13bdbf67c3cf7f3a9667dfc4e7437a6a6e8d8d43b7f4cfc452f·...·]-5">)</span><span·class="w">343 </span><span·class="nf">chardata</span><span·class="p"·data-group-id="7738922195-3">(</span><span·class="p"·data-group-id="7738922195-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">charlist</span><span·class="p"·data-group-id="7738922195-4">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·233,·SHA:·8e5eb9306e1191e3296da63477dd3c1b21c69ce4a3d265533e5c3541ce22cc07·...·]-5">)</span><span·class="w">
  
344 </span><span·class="nf">charlist</span><span·class="p"·data-group-id="6716881939-6">(</span><span·class="p"·data-group-id="6716881939-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">maybe_improper_list</span><span·class="p"·data-group-id="6716881939-7">(</span><span·class="[·...·truncated·by·diffoscope;·len:·536,·SHA:·86746f26dcb1c1b82331959786cacdd659ac6d4f761f917dffac563e14a2c3b9·...·]-10">)</span><span·class="p">,</span><span·class="w">344 </span><span·class="nf">charlist</span><span·class="p"·data-group-id="7738922195-6">(</span><span·class="p"·data-group-id="7738922195-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">maybe_improper_list</span><span·class="p"·data-group-id="7738922195-7">(</span><span·class="[·...·truncated·by·diffoscope;·len:·536,·SHA:·395a7ac3e0e5612138f9928138d81aba78fb63158b3022d2adcd092edaf1ac80·...·]-10">)</span><span·class="p">,</span><span·class="w">
345 ··</span><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="6716881939-11">(</span><span·class="p"·data-group-id="6716881939-11">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">nil</span><span·class="p"·data-group-id="6716881939-12">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·4255ca9ab87417b29a98ee3e0bfd88573614600efeced130b31ec8e815969c23·...·]-7">)</span></code></pre><p>The·module·<a·href="unicode.html"><code·class="inline">unicode</code></a>·even·supports·similar·mixes·with·binaries·containing345 ··</span><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="7738922195-11">(</span><span·class="p"·data-group-id="7738922195-11">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">nil</span><span·class="p"·data-group-id="7738922195-12">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·8c124cafce08ae77e692e3eed41ed19ad4dd8eb1c96d00ec6e59344c36963e5d·...·]-7">)</span></code></pre><p>The·module·<a·href="unicode.html"><code·class="inline">unicode</code></a>·even·supports·similar·mixes·with·binaries·containing
346 other·encodings·than·UTF-8,·but·that·is·a·special·case·to·allow·for·conversions346 other·encodings·than·UTF-8,·but·that·is·a·special·case·to·allow·for·conversions
347 to·and·from·external·data:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="9355264999-1">(</span><span·class="p"·data-group-id="9355264999-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="9355264999-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·4fc6b4bb6190e8c0735b1af81c3674df3642c4e62cc174031b3276183e478d5a·...·]-2">)</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="ss">characters</span><span·class="w">·</span><span·class="ss">coded</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="ss">user</span><span·class="o">-</span><span·class="ss">specified</span><span·class="w">347 to·and·from·external·data:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="7245790122-1">(</span><span·class="p"·data-group-id="7245790122-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">binary</span><span·class="p"·data-group-id="7245790122-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·4c781b23fe3163a3fcef25cc301863883ffef0b0a3ccf2ff312def499e7bb622·...·]-2">)</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="ss">characters</span><span·class="w">·</span><span·class="ss">coded</span><span·class="w">·</span><span·class="ss">in</span><span·class="w">·</span><span·class="ss">a</span><span·class="w">·</span><span·class="ss">user</span><span·class="o">-</span><span·class="ss">specified</span><span·class="w">
348 ··</span><span·class="n">Unicode</span><span·class="w">·</span><span·class="ss">encoding</span><span·class="w">·</span><span·class="ss">other</span><span·class="w">·</span><span·class="ss">than</span><span·class="w">·</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">8</span><span·class="w">·</span><span·class="p"·data-group-id="9355264999-3">(</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">16</span><span·class="w">·</span><span·class="ow">or</span><span·class="w">·</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">32</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·8e6b7f4c2c1d9fe40b93237260195acdf3817d5a2b604837b310b1eacaa39771·...·]-3">)</span><span·class="w">348 ··</span><span·class="n">Unicode</span><span·class="w">·</span><span·class="ss">encoding</span><span·class="w">·</span><span·class="ss">other</span><span·class="w">·</span><span·class="ss">than</span><span·class="w">·</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">8</span><span·class="w">·</span><span·class="p"·data-group-id="7245790122-3">(</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">16</span><span·class="w">·</span><span·class="ow">or</span><span·class="w">·</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">32</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·f4e043a702dab6756b4a50f86e683bf5c933afb9fc86a2d7038812d23bd42481·...·]-3">)</span><span·class="w">
  
349 </span><span·class="nf">external_chardata</span><span·class="p"·data-group-id="9355264999-4">(</span><span·class="p"·data-group-id="9355264999-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="9355264999-5">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·251,·SHA:·eac8a01d342a1b7897e569526872c7e2ef9e059fc8143f9944ef2a1cc572adcc·...·]-6">)</span><span·class="w">349 </span><span·class="nf">external_chardata</span><span·class="p"·data-group-id="7245790122-4">(</span><span·class="p"·data-group-id="7245790122-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="7245790122-5">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·251,·SHA:·fac0e1b3b4dde0d4ba85115545bb8fc6d177fcad7b2275f590d740b807086224·...·]-6">)</span><span·class="w">
  
350 </span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="9355264999-7">(</span><span·class="p"·data-group-id="9355264999-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">maybe_improper_list</span><span·class="p"·data-group-id="9355264999-8">(</span><span·class="nf">char</span><span·class="p"·data-group-id="9355264999-9">(</span><span·class="p"·data-group-id="9355264999-9">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="9355264999-10">(</span><span·class="p"·data-group-id="9355264999-10">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
351 ··</span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="9355264999-11">(</span><span·class="p"·data-group-id="9355264999-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">external_unicode_binary</span><sp[·...·truncated·by·diffoscope;·len:·432,·SHA:·bc7c97d2f665ba94893af631a54e47c102e549920d1dea807b7e1a2af4d03b4e·...·]">350 </span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="7245790122-7">(</span><span·class="p"·data-group-id="7245790122-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">maybe_imprope[·...·truncated·by·diffoscope;·len:·489,·SHA:·656d8137ae74224f984caf60430baa8c787c00dbb3260c9fcf31986caa47721d·...·]">
 351 ··</span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="7245790122-11">(</span><span·class="p"·data-group-id="7245790122-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="7245790122-12">(</span><span·class="p"·data-group-id="7245790122-12">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">nil</span><span·class="p"·data-group-id="7245790122-13">(</span><span·class="p"·data-group-id="7245790122-13">)</span><span·class="p"·data-group-id="7245790122-8">)</span></code></pre><h2·id="basic-language-support"·class="section-heading">
352 ··<a·href="#basic-language-support"·class="hover-link">352 ··<a·href="#basic-language-support"·class="hover-link">
353 ····<i·class="ri-link-m"·aria-hidden="true"></i>353 ····<i·class="ri-link-m"·aria-hidden="true"></i>
354 ··</a>354 ··</a>
355 ··<span·class="text">Basic·Language·Support</span>355 ··<span·class="text">Basic·Language·Support</span>
356 </h2>356 </h2>
357 <p><a·href=""·id="unicode_in_erlang"></a>·As·from·Erlang/OTP·R16,·Erlang·source·files·can·be357 <p><a·href=""·id="unicode_in_erlang"></a>·As·from·Erlang/OTP·R16,·Erlang·source·files·can·be
358 written·in·UTF-8·or·bytewise·(<code·class="inline">latin1</code>)·encoding.·For·information·about·how·to358 written·in·UTF-8·or·bytewise·(<code·class="inline">latin1</code>)·encoding.·For·information·about·how·to
Offset 396, 78 lines modifiedOffset 396, 78 lines modified
396 ··<a·href="#heuristic-string-detection"·class="hover-link">396 ··<a·href="#heuristic-string-detection"·class="hover-link">
397 ····<i·class="ri-link-m"·aria-hidden="true"></i>397 ····<i·class="ri-link-m"·aria-hidden="true"></i>
398 ··</a>398 ··</a>
399 ··<span·class="text">Heuristic·String·Detection</span>399 ··<span·class="text">Heuristic·String·Detection</span>
400 </h3>400 </h3>
401 <p>In·certain·output·functions·and·in·the·output·of·return·values·in·the·shell,401 <p>In·certain·output·functions·and·in·the·output·of·return·values·in·the·shell,
402 Erlang·tries·to·detect·string·data·in·lists·and·binaries·heuristically.402 Erlang·tries·to·detect·string·data·in·lists·and·binaries·heuristically.
403 Typically·you·will·see·heuristic·detection·in·a·situation·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="1107178934-1">[</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="1107178934-1">]</span><span·class="p">.</span><span·class="w">403 Typically·you·will·see·heuristic·detection·in·a·situation·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="4380894722-1">[</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="4380894722-1">]</span><span·class="p">.</span><span·class="w">
404 </span><span·class="s">&quot;abc&quot;</span><span·class="gp·unselectable">404 </span><span·class="s">&quot;abc&quot;</span><span·class="gp·unselectable">
405 2&gt;·</span><span·class="p"·data-group-id="1107178934-2">&lt;&lt;</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="1107178934-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">405 2&gt;·</span><span·class="p"·data-group-id="4380894722-2">&lt;&lt;</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="4380894722-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">
406 </span><span·class="p"·data-group-id="1107178934-3">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="1107178934-3">&gt;&gt;</span><span·class="gp·unselectable">406 </span><span·class="p"·data-group-id="4380894722-3">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="4380894722-3">&gt;&gt;</span><span·class="gp·unselectable">
407 3&gt;·</span><span·class="p"·data-group-id="1107178934-4">&lt;&lt;</span><span·class="mi">195</span><span·class="p">,</span><span·class="mi">165</span><span·class="p">,</span><span·class="mi">195</span><span·class="p">,</span><span·class="mi">164</span><span·class="p">,</span><span·class="mi">195</s[·...·truncated·by·diffoscope;·len:·96,·SHA:·b5191fc0780c042ba1fd38720776ee134dbd67ed12160dfd2c644f05b9e2b165·...·]-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">407 3&gt;·</span><span·class="p"·data-group-id="4380894722-4">&lt;&lt;</span><span·class="mi">195</span><span·class="p">,</span><span·class="mi">165</span><span·class="p">,</span><span·class="mi">195</span><span·class="p">,</span><span·class="mi">164</span><span·class="p">,</span><span·class="mi">195</s[·...·truncated·by·diffoscope;·len:·96,·SHA:·2780d294564ff11db26ac56ad5f7677454a29fd11fdd63afe01b5e9d96d9b2fb·...·]-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">
408 </span><span·class="p"·data-group-id="1107178934-5">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="1107178934-5">&gt;&gt;</span></code></pre><p>Here·the·shell·detects·lists·containing·printable·characters·or·binaries408 </span><span·class="p"·data-group-id="4380894722-5">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4380894722-5">&gt;&gt;</span></code></pre><p>Here·the·shell·detects·lists·containing·printable·characters·or·binaries
409 containing·printable·characters·in·bytewise·or·UTF-8·encoding.·But·what·is·a409 containing·printable·characters·in·bytewise·or·UTF-8·encoding.·But·what·is·a
410 printable·character?·One·view·is·that·anything·the·Unicode·standard·thinks·is410 printable·character?·One·view·is·that·anything·the·Unicode·standard·thinks·is
411 printable,·is·also·printable·according·to·the·heuristic·detection.·The·result·is411 printable,·is·also·printable·according·to·the·heuristic·detection.·The·result·is
412 then·that·almost·any·list·of·integers·are·deemed·a·string,·and·all·sorts·of412 then·that·almost·any·list·of·integers·are·deemed·a·string,·and·all·sorts·of
413 characters·are·printed,·maybe·also·characters·that·your·terminal·lacks·in·its413 characters·are·printed,·maybe·also·characters·that·your·terminal·lacks·in·its
414 font·set·(resulting·in·some·unappreciated·generic·output).·Another·way·is·to414 font·set·(resulting·in·some·unappreciated·generic·output).·Another·way·is·to
415 keep·it·backward·compatible·so·that·only·the·ISO·Latin-1·character·set·is·used415 keep·it·backward·compatible·so·that·only·the·ISO·Latin-1·character·set·is·used
416 to·detect·a·string.·A·third·way·is·to·let·the·user·decide·exactly·what·Unicode416 to·detect·a·string.·A·third·way·is·to·let·the·user·decide·exactly·what·Unicode
417 ranges·that·are·to·be·viewed·as·characters.</p><p>As·from·Erlang/OTP·R16B·you·can·select·the·ISO·Latin-1·range·or·the·whole417 ranges·that·are·to·be·viewed·as·characters.</p><p>As·from·Erlang/OTP·R16B·you·can·select·the·ISO·Latin-1·range·or·the·whole
418 Unicode·range·by·supplying·startup·flag·<code·class="inline">+pc·latin1</code>·or·<code·class="inline">+pc·unicode</code>,418 Unicode·range·by·supplying·startup·flag·<code·class="inline">+pc·latin1</code>·or·<code·class="inline">+pc·unicode</code>,
419 respectively.·For·backward·compatibility,·<code·class="inline">latin1</code>·is·default.·This·only419 respectively.·For·backward·compatibility,·<code·class="inline">latin1</code>·is·default.·This·only
420 controls·how·heuristic·string·detection·is·done.·More·ranges·are·expected·to·be420 controls·how·heuristic·string·detection·is·done.·More·ranges·are·expected·to·be
421 added·in·the·future,·enabling·tailoring·of·the·heuristics·to·the·language·and421 added·in·the·future,·enabling·tailoring·of·the·heuristics·to·the·language·and
422 region·relevant·to·the·user.</p><p>The·following·examples·show·the·two·startup·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">422 region·relevant·to·the·user.</p><p>The·following·examples·show·the·two·startup·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">
423 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="2179551689-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="2179551689-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·7cc958c2fb1140c4efe48087332c342170b48fc87bd8e92aa30efc2117b5ab75·...·]-5">]</span><span·class="w">423 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="4629037976-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="4629037976-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·ecbf757ed39ebc937338016d8777570d28b1c2d57832d1553c3c00122b00c346·...·]-5">]</span><span·class="w">
  
424 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="2179551689-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="2179551689-6">)</span><span·class="gp·unselectable">424 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="4629037976-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4629037976-6">)</span><span·class="gp·unselectable">
425 1&gt;·</span><span·class="p"·data-group-id="2179551689-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2179551689-7">]</span><span·class="p">.</span><span·class="w">425 1&gt;·</span><span·class="p"·data-group-id="4629037976-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="4629037976-7">]</span><span·class="p">.</span><span·class="w">
426 </span><span·class="p"·data-group-id="2179551689-8">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2179551689-8">]</span><span·class="gp·unselectable">426 </span><span·class="p"·data-group-id="4629037976-8">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="4629037976-8">]</span><span·class="gp·unselectable">
427 2&gt;·</span><span·class="p"·data-group-id="2179551689-9">[</span><span·class="mi">1070</span><span·class="p">,</span><span·class="mi">1085</span><span·class="p">,</span><span·class="mi">1080</span><span·class="p">,</span><span·class="mi">1082</span><span·class="p">,</span><span·class="mi">1086</spa[·...·truncated·by·diffoscope;·len:·95,·SHA:·b2257c489fd377780f661c33e3716d53c84ed60f049bf1012590770497562e7e·...·]-9">]</span><span·class="p">.</span><span·class="w">427 2&gt;·</span><span·class="p"·data-group-id="4629037976-9">[</span><span·class="mi">1070</span><span·class="p">,</span><span·class="mi">1085</span><span·class="p">,</span><span·class="mi">1080</span><span·class="p">,</span><span·class="mi">1082</span><span·class="p">,</span><span·class="mi">1086</spa[·...·truncated·by·diffoscope;·len:·95,·SHA:·ea6e8c370e14359c2b3ce8c267a8a16ea75ea429aa3469fc86cceb8f58c9787b·...·]-9">]</span><span·class="p">.</span><span·class="w">
428 </span><span·class="p"·data-group-id="2179551689-10">[</span><span·class="mi">1070</span><span·class="p">,</span><span·class="mi">1085</span><span·class="p">,</span><span·class="mi">1080</span><span·class="p">,</span><span·class="mi">1082</span><span·class="p">,</span><span·class="mi">1086</sp[·...·truncated·by·diffoscope;·len:·96,·SHA:·69377e25df9aeb07d989763408af98975733937becde7524fb7723f4e72f9196·...·]-10">]</span><span·class="gp·unselectable">428 </span><span·class="p"·data-group-id="4629037976-10">[</span><span·class="mi">1070</span><span·class="p">,</span><span·class="mi">1085</span><span·class="p">,</span><span·class="mi">1080</span><span·class="p">,</span><span·class="mi">1082</span><span·class="p">,</span><span·class="mi">1086</sp[·...·truncated·by·diffoscope;·len:·96,·SHA:·c4c44e963c9fb7f2b9974e0934dae7a21320eee2511d8ae6853e8360853ae989·...·]-10">]</span><span·class="gp·unselectable">
429 3&gt;·</span><span·class="p"·data-group-id="2179551689-11">[</span><span·class="mi">229</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">246</span><span·class="p"·data-group-id="2179551689-11">]</span><span·class="p">.</span><span·class="w">429 3&gt;·</span><span·class="p"·data-group-id="4629037976-11">[</span><span·class="mi">229</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">246</span><span·class="p"·data-group-id="4629037976-11">]</span><span·class="p">.</span><span·class="w">
430 </span><span·class="s">&quot;åäö&quot;</span><span·class="gp·unselectable">430 </span><span·class="s">&quot;åäö&quot;</span><span·class="gp·unselectable">
431 4&gt;·</span><span·class="p"·data-group-id="2179551689-12">&lt;&lt;</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">174</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">208</[·...·truncated·by·diffoscope;·len:·403,·SHA:·1a52828b1fb7570c16e70830285032b56c62bb5a41099ac7de0236dce97a4f36·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">431 4&gt;·</span><span·class="p"·data-group-id="4629037976-12">&lt;&lt;</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">174</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">208</[·...·truncated·by·diffoscope;·len:·403,·SHA:·fe4f7b57d57435f52b1202d9737bae3ed55716ce6ab849c6505b7aedba6884ac·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">
432 </span><span·class="p"·data-group-id="2179551689-13">&lt;&lt;</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">174</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">208</[·...·truncated·by·diffoscope;·len:·403,·SHA:·1a52828b1fb7570c16e70830285032b56c62bb5a41099ac7de0236dce97a4f36·...·]-13">&gt;&gt;</span><span·class="gp·unselectable">432 </span><span·class="p"·data-group-id="4629037976-13">&lt;&lt;</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">174</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">208</[·...·truncated·by·diffoscope;·len:·403,·SHA:·fe4f7b57d57435f52b1202d9737bae3ed55716ce6ab849c6505b7aedba6884ac·...·]-13">&gt;&gt;</span><span·class="gp·unselectable">
433 5&gt;·</span><span·class="p"·data-group-id="2179551689-14">&lt;&lt;</span><span·class="mi">229</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">228</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">246[·...·truncated·by·diffoscope;·len:·100,·SHA:·0e38616aa1668933d36e0d677b30aa9c1100b8875c7fc0fad9c779e857c566b1·...·]-14">&gt;&gt;</span><span·class="p">.</span><span·class="w">433 5&gt;·</span><span·class="p"·data-group-id="4629037976-14">&lt;&lt;</span><span·class="mi">229</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">228</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">246[·...·truncated·by·diffoscope;·len:·100,·SHA:·f9ee034b0104059b3f55921b5c733df60998c6e44f77883366fafee929f1c544·...·]-14">&gt;&gt;</span><span·class="p">.</span><span·class="w">
434 </span><span·class="p"·data-group-id="2179551689-15">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="2179551689-15">&gt;&gt;</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="w">434 </span><span·class="p"·data-group-id="4629037976-15">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="4629037976-15">&gt;&gt;</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="w">
435 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="9027978910-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="9027978910-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·781,·SHA:·eb08d9f21a733d7f49d4f8e6b87d75b7803fe533ccc4b9efb72af45642a9d18b·...·]-5">]</span><span·class="w">435 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="9466907793-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="9466907793-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·781,·SHA:·94a848372d7ac40d4cfffd76fcf52763096dbb3ce00a69b72e0e0d747c4f17f2·...·]-5">]</span><span·class="w">
  
436 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="9027978910-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="9027978910-6">)</span><span·class="gp·unselectable">436 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="9466907793-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="9466907793-6">)</span><span·class="gp·unselectable">
437 1&gt;·</span><span·class="p"·data-group-id="9027978910-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="9027978910-7">]</span><span·class="p">.</span><span·class="w">437 1&gt;·</span><span·class="p"·data-group-id="9466907793-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="9466907793-7">]</span><span·class="p">.</span><span·class="w">
438 </span><span·class="s">&quot;Ѐ&quot;</span><span·class="gp·unselectable">438 </span><span·class="s">&quot;Ѐ&quot;</span><span·class="gp·unselectable">
439 2&gt;·</span><span·class="p"·data-group-id="9027978910-8">[</span><span·class="mi">1070</span><span·class="p">,</span><span·class="mi">1085</span><span·class="p">,</span><span·class="mi">1080</span><span·class="p">,</span><span·class="mi">1082</span><span·class="p">,</span><span·class="mi">1086</span[·...·truncated·by·diffoscope;·len:·94,·SHA:·36cbb7760a58c3005d34acee9f6e26cb8632358ad19a498fa14490fbc99c2302·...·]-8">]</span><span·class="p">.</span><span·class="w">439 2&gt;·</span><span·class="p"·data-group-id="9466907793-8">[</span><span·class="mi">1070</span><span·class="p">,</span><span·class="mi">1085</span><span·class="p">,</span><span·class="mi">1080</span><span·class="p">,</span><span·class="mi">1082</span><span·class="p">,</span><span·class="mi">1086</span[·...·truncated·by·diffoscope;·len:·94,·SHA:·e2d1ffce5a9d5fba38fa2a1eaa906485b2ccb1f18dbaaf548b24af4447aaa721·...·]-8">]</span><span·class="p">.</span><span·class="w">
440 </span><span·class="s">&quot;Юникод&quot;</span><span·class="gp·unselectable">440 </span><span·class="s">&quot;Юникод&quot;</span><span·class="gp·unselectable">
441 3&gt;·</span><span·class="p"·data-group-id="9027978910-9">[</span><span·class="mi">229</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">246</span><span·class="p"·data-group-id="9027978910-9">]</span><span·class="p">.</span><span·class="w">441 3&gt;·</span><span·class="p"·data-group-id="9466907793-9">[</span><span·class="mi">229</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">246</span><span·class="p"·data-group-id="9466907793-9">]</span><span·class="p">.</span><span·class="w">
442 </span><span·class="s">&quot;åäö&quot;</span><span·class="gp·unselectable">442 </span><span·class="s">&quot;åäö&quot;</span><span·class="gp·unselectable">
443 4&gt;·</span><span·class="p"·data-group-id="9027978910-10">&lt;&lt;</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">174</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">208</s[·...·truncated·by·diffoscope;·len:·402,·SHA:·2d7f6e208b8ae9c639ed8087193875b5f4b7869dc6afe42671749d1c9eb6d2b4·...·]-10">&gt;&gt;</span><span·class="p">.</span><span·class="w">443 4&gt;·</span><span·class="p"·data-group-id="9466907793-10">&lt;&lt;</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">174</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">189</span><span·class="p">,</span><span·class="mi">208</s[·...·truncated·by·diffoscope;·len:·402,·SHA:·ffbac73a679060c14777e400844bafad00248d6d3e9fc2fadd501413c4edc349·...·]-10">&gt;&gt;</span><span·class="p">.</span><span·class="w">
444 </span><span·class="p"·data-group-id="9027978910-11">&lt;&lt;</span><span·class="s">&quot;Юникод&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="9027978910-11">&gt;&gt;</span><span·class="gp·unselectable">444 </span><span·class="p"·data-group-id="9466907793-11">&lt;&lt;</span><span·class="s">&quot;Юникод&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="9466907793-11">&gt;&gt;</span><span·class="gp·unselectable">
445 5&gt;·</span><span·class="p"·data-group-id="9027978910-12">&lt;&lt;</span><span·class="mi">229</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">228</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">246<[·...·truncated·by·diffoscope;·len:·99,·SHA:·b54b79bc7a357e57e3d191cf03863ca4166aa4e2f5066ac4315c92378780a384·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">445 5&gt;·</span><span·class="p"·data-group-id="9466907793-12">&lt;&lt;</span><span·class="mi">229</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">228</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p">,</span><span·class="mi">246<[·...·truncated·by·diffoscope;·len:·99,·SHA:·104aa8fdd652e80dcba1ed97d959e41419ff98881a343d3d53ef0b1084a4ce11·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">
446 </span><span·class="p"·data-group-id="9027978910-13">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="9027978910-13">&gt;&gt;</span></code></pre><p>In·the·examples,·you·can·see·that·the·default·Erlang·shell·interprets·only446 </span><span·class="p"·data-group-id="9466907793-13">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="9466907793-13">&gt;&gt;</span></code></pre><p>In·the·examples,·you·can·see·that·the·default·Erlang·shell·interprets·only
447 characters·from·the·ISO·Latin1·range·as·printable·and·only·detects·lists·or447 characters·from·the·ISO·Latin1·range·as·printable·and·only·detects·lists·or
448 binaries·with·those·&quot;printable&quot;·characters·as·containing·string·data.·The·valid448 binaries·with·those·&quot;printable&quot;·characters·as·containing·string·data.·The·valid
449 UTF-8·binary·containing·the·Russian·word·&quot;Юникод&quot;,·is·not·printed·as·a·string.449 UTF-8·binary·containing·the·Russian·word·&quot;Юникод&quot;,·is·not·printed·as·a·string.
450 When·started·with·all·Unicode·characters·printable·(<code·class="inline">+pc·unicode</code>),·the·shell450 When·started·with·all·Unicode·characters·printable·(<code·class="inline">+pc·unicode</code>),·the·shell
451 outputs·anything·containing·printable·Unicode·data·(in·binaries,·either·UTF-8·or451 outputs·anything·containing·printable·Unicode·data·(in·binaries,·either·UTF-8·or
452 bytewise·encoded)·as·string·data.</p><p>These·heuristics·are·also·used·by·<a·href="io.html#format/2"><code·class="inline">io:format/2</code></a>,·<a·href="io_lib.html#format/2"><code·class="inline">io_lib:format/2</code></a>,·and·friends452 bytewise·encoded)·as·string·data.</p><p>These·heuristics·are·also·used·by·<a·href="io.html#format/2"><code·class="inline">io:format/2</code></a>,·<a·href="io_lib.html#format/2"><code·class="inline">io_lib:format/2</code></a>,·and·friends
453 when·modifier·<code·class="inline">t</code>·is·used·with·<code·class="inline">~p</code>·or·<code·class="inline">~P</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">453 when·modifier·<code·class="inline">t</code>·is·used·with·<code·class="inline">~p</code>·or·<code·class="inline">~P</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="w">
454 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="4699354310-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="4699354310-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·6e9771e3a5f8f41ebcfbe1c8c775f5199f4451e936845e9693e525faa1cae245·...·]-5">]</span><span·class="w">454 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="6664298395-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="6664298395-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·c5c7a9528324b6bff4c09209d62a56040c162917a1efa754b22d2a24c67e9219·...·]-5">]</span><span·class="w">
  
455 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="4699354310-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4699354310-6">)</span><span·class="gp·unselectable">455 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="6664298395-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="6664298395-6">)</span><span·class="gp·unselectable">
456 1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="4699354310-7">(</span><span·class="s">&quot;~tp</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4699354310-8">[</span><span·class="p"·data-group-id="4699354310-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·1a4891dcaee80ae7bc448496f3afc266702204e47668761f203735f854fa191c·...·]-7">)</span><span·class="p">.</span><span·class="w">456 1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6664298395-7">(</span><span·class="s">&quot;~tp</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6664298395-8">[</span><span·class="p"·data-group-id="6664298395-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·75ad26a5bf5a69c069ae10dec4eec756ad78359aedefdcb2b1f645aee42a9b24·...·]-7">)</span><span·class="p">.</span><span·class="w">
457 </span><span·class="p"·data-group-id="4699354310-13">{</span><span·class="p"·data-group-id="4699354310-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="4699354310-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4699354310-15">&lt[·...·truncated·by·diffoscope;·len:·938,·SHA:·571e80e3a0f34b16f9011b156d0e6e778dfea286fffad8a76197c6b4ccba0942·...·]-13">}</span><span·class="w">457 </span><span·class="p"·data-group-id="6664298395-13">{</span><span·class="p"·data-group-id="6664298395-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="6664298395-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6664298395-15">&lt[·...·truncated·by·diffoscope;·len:·938,·SHA:·0b7efee757d033e8893750ce6a1a73a354fd3b38bdc29b7072de7e1221616f30·...·]-13">}</span><span·class="w">
458 </span><span·class="ss">ok</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="w">458 </span><span·class="ss">ok</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">+</span><span·class="ss">pc</span><span·class="w">·</span><span·class="ss">unicode</span><span·class="w">
459 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="1931551610-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="1931551610-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·40b1edaf8c7470fbd5d48cb07b029542e8065f91b6d93f8a9241015248dccc67·...·]-5">]</span><span·class="w">459 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="8035435978-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="8035435978-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·1c3852ba1cbb3a9d66a1e3803b6c0cadbda9b13021d142aca6533755867ac60d·...·]-5">]</span><span·class="w">
  
460 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="1931551610-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="1931551610-6">)</span><span·class="gp·unselectable">460 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="8035435978-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="8035435978-6">)</span><span·class="gp·unselectable">
461 1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1931551610-7">(</span><span·class="s">&quot;~tp</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1931551610-8">[</span><span·class="p"·data-group-id="1931551610-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·0eb8e9621a85b560e12b3514c5fe239fd7baa3edd41cab64f2b69eb80fda8911·...·]-7">)</span><span·class="p">.</span><span·class="w">461 1&gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8035435978-7">(</span><span·class="s">&quot;~tp</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8035435978-8">[</span><span·class="p"·data-group-id="8035435978-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·48cf07c6d5138bf52bb7990633f1ca64935587c2cddd63b592d9e3dfed4f8faa·...·]-7">)</span><span·class="p">.</span><span·class="w">
462 </span><span·class="p"·data-group-id="1931551610-13">{</span><span·class="p"·data-group-id="1931551610-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="1931551610-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1931551610-15">&lt[·...·truncated·by·diffoscope;·len:·443,·SHA:·dbdba9c696a5c7066d6d159a39ad458804e1b6e9aa69f149c1f5dc1ba4aa2aa1·...·]-13">}</span><span·class="w">462 </span><span·class="p"·data-group-id="8035435978-13">{</span><span·class="p"·data-group-id="8035435978-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="8035435978-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8035435978-15">&lt[·...·truncated·by·diffoscope;·len:·443,·SHA:·f099c41e9aaea873b7d959d68dad9e81232831dde1aef2766a051b1787f897dd·...·]-13">}</span><span·class="w">
463 </span><span·class="ss">ok</span></code></pre><p>Notice·that·this·only·affects·<em>heuristic</em>·interpretation·of·lists·and·binaries463 </span><span·class="ss">ok</span></code></pre><p>Notice·that·this·only·affects·<em>heuristic</em>·interpretation·of·lists·and·binaries
464 on·output.·For·example,·the·<code·class="inline">~ts</code>·format·sequence·always·outputs·a·valid·list·of464 on·output.·For·example,·the·<code·class="inline">~ts</code>·format·sequence·always·outputs·a·valid·list·of
465 characters,·regardless·of·the·<code·class="inline">+pc</code>·setting,·as·the·programmer·has·explicitly465 characters,·regardless·of·the·<code·class="inline">+pc</code>·setting,·as·the·programmer·has·explicitly
466 requested·string·output.</p><h2·id="the-interactive-shell"·class="section-heading">466 requested·string·output.</p><h2·id="the-interactive-shell"·class="section-heading">
467 ··<a·href="#the-interactive-shell"·class="hover-link">467 ··<a·href="#the-interactive-shell"·class="hover-link">
468 ····<i·class="ri-link-m"·aria-hidden="true"></i>468 ····<i·class="ri-link-m"·aria-hidden="true"></i>
469 ··</a>469 ··</a>
Offset 482, 47 lines modifiedOffset 482, 47 lines modified
482 example,·a·<code·class="inline">LANG</code>·environment·variable·can·be·set·as·follows:</p><pre><code·class="text">$·echo·$LANG482 example,·a·<code·class="inline">LANG</code>·environment·variable·can·be·set·as·follows:</p><pre><code·class="text">$·echo·$LANG
483 en_US.UTF-8</code></pre><p>Most·systems·handle·variable·<code·class="inline">LC_CTYPE</code>·before·<code·class="inline">LANG</code>,·so·if·that·is·set,·it483 en_US.UTF-8</code></pre><p>Most·systems·handle·variable·<code·class="inline">LC_CTYPE</code>·before·<code·class="inline">LANG</code>,·so·if·that·is·set,·it
484 must·be·set·to·<code·class="inline">UTF-8</code>:</p><pre><code·class="text">$·echo·$LC_CTYPE484 must·be·set·to·<code·class="inline">UTF-8</code>:</p><pre><code·class="text">$·echo·$LC_CTYPE
485 en_US.UTF-8</code></pre><p>The·<code·class="inline">LANG</code>·or·<code·class="inline">LC_CTYPE</code>·setting·are·to·be·consistent·with·what·the·terminal·is485 en_US.UTF-8</code></pre><p>The·<code·class="inline">LANG</code>·or·<code·class="inline">LC_CTYPE</code>·setting·are·to·be·consistent·with·what·the·terminal·is
486 capable·of.·There·is·no·portable·way·for·Erlang·to·ask·the·terminal·about·its486 capable·of.·There·is·no·portable·way·for·Erlang·to·ask·the·terminal·about·its
487 UTF-8·capacity,·we·have·to·rely·on·the·language·and·character·type·settings.</p><p>To·investigate·what·Erlang·thinks·about·the·terminal,·the·call487 UTF-8·capacity,·we·have·to·rely·on·the·language·and·character·type·settings.</p><p>To·investigate·what·Erlang·thinks·about·the·terminal,·the·call
488 <a·href="io.html#getopts/1"><code·class="inline">io:getopts()</code></a>·can·be·used·when·the·shell·is·started:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="n">LC_CTYPE</span><span·class="o">=</span><span·class="ss">en_US</span><span·class="p">.</span><span·class="n">ISO</span><span·class="o">-</span><span·class="mi">8859</span><span·class="o">-</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">488 <a·href="io.html#getopts/1"><code·class="inline">io:getopts()</code></a>·can·be·used·when·the·shell·is·started:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="n">LC_CTYPE</span><span·class="o">=</span><span·class="ss">en_US</span><span·class="p">.</span><span·class="n">ISO</span><span·class="o">-</span><span·class="mi">8859</span><span·class="o">-</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">
489 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="4756547047-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="4756547047-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·744d9c6e3c0c0e7e6e5d27534c40d274b27f97deb99d3396451de56121684162·...·]-5">]</span><span·class="w">489 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="2747199173-1">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="2747199173-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·bba5277273c0c733449904bd57cb178a63017f64ca495d3dc39e76b9b7db3fb6·...·]-5">]</span><span·class="w">
  
490 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="4756547047-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4756547047-6">)</span><span·class="gp·unselectable">490 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="2747199173-6">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="2747199173-6">)</span><span·class="gp·unselectable">
491 1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keyfind</span><span·class="p"·data-group-id="4756547047-7">(</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">getopts</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·0e892a28113f936d232fa9a6f1913f8f3e09d8850392b55238322246a97cad85·...·]-7">)</span><span·class="p">.</span><span·class="w">491 1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">keyfind</span><span·class="p"·data-group-id="2747199173-7">(</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">getopts</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·1896bd20339382e304b380241099789f70f73cea606cb99fc8c54806ef62d0f6·...·]-7">)</span><span·class="p">.</span><span·class="w">
492 </span><span·class="p"·data-group-id="4756547047-9">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="ss">latin1</span><span·class="p"·data-group-id="4756547047-9">}</span><span·class="gp·unselectable">492 </span><span·class="p"·data-group-id="2747199173-9">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="ss">latin1</span><span·class="p"·data-group-id="2747199173-9">}</span><span·class="gp·unselectable">
493 2&gt;·</span><span·class="nf">q</span><span·class="p"·data-group-id="4756547047-10">(</span><span·class="p"·data-group-id="4756547047-10">)</span><span·class="p">.</span><span·class="w">493 2&gt;·</span><span·class="nf">q</span><span·class="p"·data-group-id="2747199173-10">(</span><span·class="p"·data-group-id="2747199173-10">)</span><span·class="p">.</span><span·class="w">
494 </span><span·class="ss">ok</span><span·class="w">494 </span><span·class="ss">ok</span><span·class="w">
495 </span><span·class="sc">$·</span><span·class="n">LC_CTYPE</span><span·class="o">=</span><span·class="ss">en_US</span><span·class="p">.</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">8</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">495 </span><span·class="sc">$·</span><span·class="n">LC_CTYPE</span><span·class="o">=</span><span·class="ss">en_US</span><span·class="p">.</span><span·class="n">UTF</span><span·class="o">-</span><span·class="mi">8</span><span·class="w">·</span><span·class="ss">erl</span><span·class="w">
496 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="4756547047-11">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="4756547047-11">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·791,·SHA:·d626b615449b9e3fb4d0e3c1de25caa52f55ffa676b8db1d67c9346c581fb400·...·]-15">]</span><span·class="w">496 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="n">R16B</span><span·class="w">·</span><span·class="p"·data-group-id="2747199173-11">(</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">5.10</span><span·class="p">.</span><span·class="mi">1</span><span·class="p"·data-group-id="2747199173-11">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·791,·SHA:·6cc16eb09fd62eb91e5f8882b153cd707e6f299d321d9212e8964c80bcee4f76·...·]-15">]</span><span·class="w">
  
497 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="4756547047-16">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="4756547047-16">)</span><span·class="gp·unselectable">497 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V5</span><span·class="p">.</span><span·class="mf">10.1</span><span·class="w">··</span><span·class="p"·data-group-id="2747199173-16">(</span><span·class="ss">abort</span><span·class="w">·</span><span·class="ss">with</span><span·class="w">·</span><span·class="err">^</span><span·class="n">G</span><span·class="p"·data-group-id="2747199173-16">)</span><span·class="gp·unselectable">
Max diff block lines reached; 90969/162627 bytes (55.94%) of diff not shown.
89.6 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/uri_string.html
    
Offset 587, 19 lines modifiedOffset 587, 19 lines modified
587 ···························QueryString·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:error/0">error</a>().</pre>587 ···························QueryString·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:error/0">error</a>().</pre>
  
588 ······</div>588 ······</div>
  
589 <p>Composes·a·form-urlencoded·<code·class="inline">QueryString</code>·based·on·a·<code·class="inline">QueryList</code>,·a·list·of589 <p>Composes·a·form-urlencoded·<code·class="inline">QueryString</code>·based·on·a·<code·class="inline">QueryList</code>,·a·list·of
590 non-percent-encoded·key-value·pairs.</p><p>Form-urlencoding·is·defined·in·section·4.10.21.6·of·the·<a·href="https://www.w3.org/TR/html52/">HTML·5.2</a>590 non-percent-encoded·key-value·pairs.</p><p>Form-urlencoding·is·defined·in·section·4.10.21.6·of·the·<a·href="https://www.w3.org/TR/html52/">HTML·5.2</a>
591 specification·and·in·section·4.10.22.6·of·the·<a·href="https://www.w3.org/TR/html50/">HTML·5.0</a>591 specification·and·in·section·4.10.22.6·of·the·<a·href="https://www.w3.org/TR/html50/">HTML·5.0</a>
592 specification·for·non-UTF-8·encodings.</p><p>See·also·the·opposite·operation·<a·href="#dissect_query/1"><code·class="inline">dissect_query/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="5798987918-1">(</span><span·class="p"·data-group-id="5798987918-2">[</span><span·class="p"·data-group-id="5798987918-3">{</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·355,·SHA:·cb67897bc49a7e7162fdd1530493a68ecc4f23d17a770a42b685ffded7b6c781·...·]-1">)</span><span·class="p">.</span><span·class="w">592 specification·for·non-UTF-8·encodings.</p><p>See·also·the·opposite·operation·<a·href="#dissect_query/1"><code·class="inline">dissect_query/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="7969359323-1">(</span><span·class="p"·data-group-id="7969359323-2">[</span><span·class="p"·data-group-id="7969359323-3">{</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·355,·SHA:·6b53f969fd724ce3262653316224cccd2d46c7f21185adb71473bba45ed7f13a·...·]-1">)</span><span·class="p">.</span><span·class="w">
593 </span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="gp·unselectable">593 </span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="gp·unselectable">
594 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="5798987918-5">(</span><span·class="p"·data-group-id="5798987918-6">[</span><span·class="p"·data-group-id="5798987918-7">{</span><span·class="p"·data-group-id="5798987918-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·255,·SHA:·447f9df447ad353a812b22b4bde7d8dc76ee20599b51e30c805569416e736de7·...·]-7">}</span><span·class="p">,</span><span·class="gp·unselectable">594 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="7969359323-5">(</span><span·class="p"·data-group-id="7969359323-6">[</span><span·class="p"·data-group-id="7969359323-7">{</span><span·class="p"·data-group-id="7969359323-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·255,·SHA:·c7c633f0415a3fa6983c9b3bfbec6abad2445542004cc4a8438cd6a4fab17a96·...·]-7">}</span><span·class="p">,</span><span·class="gp·unselectable">
595 2&gt;·</span><span·class="p"·data-group-id="5798987918-10">{</span><span·class="p"·data-group-id="5798987918-11">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="5798987918-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5798987918-12">&l[·...·truncated·by·diffoscope;·len:·315,·SHA:·83cab2d89427d24de4dfe11d0f17eedcb81a9292d6ec8e43cf22aba91fc96ef2·...·]-5">)</span><span·class="p">.</span><span·class="w">595 2&gt;·</span><span·class="p"·data-group-id="7969359323-10">{</span><span·class="p"·data-group-id="7969359323-11">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="7969359323-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7969359323-12">&l[·...·truncated·by·diffoscope;·len:·315,·SHA:·7635c536f15efe7fe6f0fa3f15f611f1d7562edd62c6a2fadd1ee3ed3b4042e9·...·]-5">)</span><span·class="p">.</span><span·class="w">
596 </span><span·class="p"·data-group-id="5798987918-13">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="5798987918-13">&gt;&gt;</span></code></pre>596 </span><span·class="p"·data-group-id="7969359323-13">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="7969359323-13">&gt;&gt;</span></code></pre>
597 ··</section>597 ··</section>
598 </section>598 </section>
599 <section·class="detail"·id="compose_query/2">599 <section·class="detail"·id="compose_query/2">
  
600 ··<div·class="detail-header">600 ··<div·class="detail-header">
601 ····<a·href="#compose_query/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">601 ····<a·href="#compose_query/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
602 ······<i·class="ri-link-m"·aria-hidden="true"></i>602 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 632, 20 lines modifiedOffset 632, 20 lines modified
632 algorithm.</p><p>There·are·two·supported·encodings:·<code·class="inline">utf8</code>·(or·<code·class="inline">unicode</code>)·and·<code·class="inline">latin1</code>.</p><p>Each·character·in·the·entry's·name·and·value·that·cannot·be·expressed·using·the632 algorithm.</p><p>There·are·two·supported·encodings:·<code·class="inline">utf8</code>·(or·<code·class="inline">unicode</code>)·and·<code·class="inline">latin1</code>.</p><p>Each·character·in·the·entry's·name·and·value·that·cannot·be·expressed·using·the
633 selected·character·encoding,·is·replaced·by·a·string·consisting·of·a·U+0026633 selected·character·encoding,·is·replaced·by·a·string·consisting·of·a·U+0026
634 AMPERSAND·character·(&amp;),·a·&quot;#&quot;·(U+0023)·character,·one·or·more·ASCII·digits634 AMPERSAND·character·(&amp;),·a·&quot;#&quot;·(U+0023)·character,·one·or·more·ASCII·digits
635 representing·the·Unicode·code·point·of·the·character·in·base·ten,·and·finally·a635 representing·the·Unicode·code·point·of·the·character·in·base·ten,·and·finally·a
636 &quot;;&quot;·(U+003B)·character.</p><p>Bytes·that·are·out·of·the·range·0x2A,·0x2D,·0x2E,·0x30·to·0x39,·0x41·to·0x5A,636 &quot;;&quot;·(U+003B)·character.</p><p>Bytes·that·are·out·of·the·range·0x2A,·0x2D,·0x2E,·0x30·to·0x39,·0x41·to·0x5A,
637 0x5F,·0x61·to·0x7A,·are·percent-encoded·(U+0025·PERCENT·SIGN·character·(%)637 0x5F,·0x61·to·0x7A,·are·percent-encoded·(U+0025·PERCENT·SIGN·character·(%)
638 followed·by·uppercase·ASCII·hex·digits·representing·the·hexadecimal·value·of·the638 followed·by·uppercase·ASCII·hex·digits·representing·the·hexadecimal·value·of·the
639 byte).</p><p>See·also·the·opposite·operation·<a·href="#dissect_query/1"><code·class="inline">dissect_query/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="7410867041-1">(</span><span·class="p"·data-group-id="7410867041-2">[</span><span·class="p"·data-group-id="7410867041-3">{</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="7410867041-3">}</span><span·class="p">,</span><span·class="p"·data-group-id="7410867041-4">{</span><span·class="s">&quot;city&quot;</span><span·class="p">,</span><span·class="s">&quot;örebro&quot;</span><span·class="p"·data-group-id="7410867041-4">}</span><span·class="p"·data-group-id="7410867041-2">]</span><span·class="p">,</span><span·class="gp·unselectable"> 
640 1&gt;·</span><span·class="p"·data-group-id="7410867041-5">[</span><span·class="p"·data-group-id="7410867041-6">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·170,·SHA:·bbcd8a3a4d597da5f2b091a699a7b98cf8cd139d8229194cceb13bbbb6bfbbdd·...·]">639 byte).</p><p>See·also·the·opposite·operation·<a·href="#dissect_query/1"><code·class="inline">dissect_query/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">[·...·truncated·by·diffoscope;·len:·731,·SHA:·7e7f2a3fbb2163d7a738c7b12c2c3980f3fa6101c629996735a941fdcae5154e·...·]">
 640 1&gt;·</span><span·class="p"·data-group-id="7353996873-5">[</span><span·class="p"·data-group-id="7353996873-6">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="p"·data-group-id="7353996873-6">}</span><span·class="p"·data-group-id="7353996873-5">]</span><span·class="p"·data-group-id="7353996873-1">)</span><span·class="p">.</span><span·class="w">
641 </span><span·class="s">&quot;foo+bar=1&amp;city=%F6rebro&quot;</span><span·class="gp·unselectable">641 </span><span·class="s">&quot;foo+bar=1&amp;city=%F6rebro&quot;</span><span·class="gp·unselectable">
642 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="7410867041-7">(</span><span·class="p"·data-group-id="7410867041-8">[</span><span·class="p"·data-group-id="7410867041-9">{</span><span·class="p"·data-group-id="7410867041-10">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="7410867041-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7410867041-11">&lt;&lt;</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="7410867041-11">&gt;&gt;</span><span·class="p"·data-group-id="7410867041-9">}</span><span·class="p">,</span><span·class="gp·unselectable"> 
643 2&gt;·</span><span·class="p"·data-group-id="7410867041-12">{</span><span·class="p"·data-group-id="7410867041-13">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="7410867041-13">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·753,·SHA:·d9e40824a99791b08f64a5e55b8deac12706227b2b7a9c2d6742f6f43de0f66f·...·]">642 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="7353996873-7">(</span><span·class="p"·data-group-id="7353996873-8">[</span><span·class="p"·data-group-id="7353996873-9">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·436,·SHA:·49cd6cf304db07950215d8798eba9e9085c174889104a7d07c79144798eb9c8e·...·]">
 643 2&gt;·</span><span·class="p"·data-group-id="7353996873-12">{</span><span·class="p"·data-group-id="7353996873-13">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="7353996873-13">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7353996873-14">&lt;&lt;</span><span·class="s">&quot;東京&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="7353996873-14">&gt;&gt;</span><span·class="p"·data-group-id="7353996873-12">}</span><span·class="p"·data-group-id="7353996873-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7353996873-15">[</span><span·class="p"·data-group-id="7353996873-16">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="p"·data-group-id="7353996873-16">}</span><span·class="p"·data-group-id="7353996873-15">]</span><span·class="p"·data-group-id="7353996873-7">)</span><span·class="p">.</span><span·class="w">
644 </span><span·class="p"·data-group-id="7410867041-17">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%26%2326481%3B%26%2320140%3B&quot;</span><span·class="p"·data-group-id="7410867041-17">&gt;&gt;</span></code></pre>644 </span><span·class="p"·data-group-id="7353996873-17">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%26%2326481%3B%26%2320140%3B&quot;</span><span·class="p"·data-group-id="7353996873-17">&gt;&gt;</span></code></pre>
645 ··</section>645 ··</section>
646 </section>646 </section>
647 <section·class="detail"·id="dissect_query/1">647 <section·class="detail"·id="dissect_query/1">
  
648 ··<div·class="detail-header">648 ··<div·class="detail-header">
649 ····<a·href="#dissect_query/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">649 ····<a·href="#dissect_query/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
650 ······<i·class="ri-link-m"·aria-hidden="true"></i>650 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 671, 19 lines modifiedOffset 671, 19 lines modified
671 ···························QueryList·::·[{<a·href="unicode.html#t:chardata/0">unicode:chardata</a>(),·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>()·|·true}]·|·<a·href="#t:error/0">error</a>().</pre>671 ···························QueryList·::·[{<a·href="unicode.html#t:chardata/0">unicode:chardata</a>(),·<a·href="unicode.html#t:chardata/0">unicode:chardata</a>()·|·true}]·|·<a·href="#t:error/0">error</a>().</pre>
  
672 ······</div>672 ······</div>
  
673 <p>Dissects·an·urlencoded·<code·class="inline">QueryString</code>·and·returns·a·<code·class="inline">QueryList</code>,·a·list·of673 <p>Dissects·an·urlencoded·<code·class="inline">QueryString</code>·and·returns·a·<code·class="inline">QueryList</code>,·a·list·of
674 non-percent-encoded·key-value·pairs.</p><p>Form-urlencoding·is·defined·in·section·4.10.21.6·of·the·<a·href="https://www.w3.org/TR/html52/">HTML·5.2</a>674 non-percent-encoded·key-value·pairs.</p><p>Form-urlencoding·is·defined·in·section·4.10.21.6·of·the·<a·href="https://www.w3.org/TR/html52/">HTML·5.2</a>
675 specification·and·in·section·4.10.22.6·of·the·<a·href="https://www.w3.org/TR/html50/">HTML·5.0</a>675 specification·and·in·section·4.10.22.6·of·the·<a·href="https://www.w3.org/TR/html50/">HTML·5.0</a>
676 specification·for·non-UTF-8·encodings.</p><p>See·also·the·opposite·operation·<a·href="#compose_query/1"><code·class="inline">compose_query/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">dissect_query</span><span·class="p"·data-group-id="5085578334-1">(</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="5085578334-1">)</span><span·class="p">.</span><span·class="w">676 specification·for·non-UTF-8·encodings.</p><p>See·also·the·opposite·operation·<a·href="#compose_query/1"><code·class="inline">compose_query/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">dissect_query</span><span·class="p"·data-group-id="2470864695-1">(</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="2470864695-1">)</span><span·class="p">.</span><span·class="w">
677 </span><span·class="p"·data-group-id="5085578334-2">[</span><span·class="p"·data-group-id="5085578334-3">{</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="5085578334-3">}</span><span·class="p">,</span><span·class="p"·data-group-id="5085578334-4">{</span><span·class="s">&quot;city&quot;</span><span·class="p">,</span><span·class="s">&quot;örebro&quot;</span><span·class="p"·data-group-id="5085578334-4">}</span><span·class="p"·data-group-id="5085578334-2">]</span><span·class="gp·unselectable"> 
678 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">dissect_query</span><span·class="p"·data-group-id="5085578334-5">(</span><span·class="p"·data-group-id="5085578334-6">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp[·...·truncated·by·diffoscope;·len:·198,·SHA:·8f2157ce94a9c05c9dab75deaeed9e86712780273d2be769b2dc02c5f8b394b3·...·]">677 </span><span·class="p"·data-group-id="2470864695-2">[</span><span·class="p"·data-group-id="2470864695-3">{</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="2470864695[·...·truncated·by·diffoscope;·len:·327,·SHA:·6107d155656fd233c6aec78b2afcc3d2d4550158c1a6dc52b0e91b7f69701293·...·]">
 678 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">dissect_query</span><span·class="p"·data-group-id="2470864695-5">(</span><span·class="p"·data-group-id="2470864695-6">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%26%2326481%3B%26%2320140%3B&quot;</span><span·class="p"·data-group-id="2470864695-6">&gt;&gt;</span><span·class="p"·data-group-id="2470864695-5">)</span><span·class="p">.</span><span·class="w">
679 </span><span·class="p"·data-group-id="5085578334-7">[</span><span·class="p"·data-group-id="5085578334-8">{</span><span·class="p"·data-group-id="5085578334-9">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="5085578334-9">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·0033d78bf2ab178827c6702d52a447c1b636e6a57892e21b6daa02f9c5c4c43d·...·]-8">}</span><span·class="p">,</span><span·class="w">679 </span><span·class="p"·data-group-id="2470864695-7">[</span><span·class="p"·data-group-id="2470864695-8">{</span><span·class="p"·data-group-id="2470864695-9">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="2470864695-9">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·d462068c9097315932cfe72e8e64714a829dce1f86a5b12c8a68b0636dbf7dfd·...·]-8">}</span><span·class="p">,</span><span·class="w">
680 ·</span><span·class="p"·data-group-id="5085578334-11">{</span><span·class="p"·data-group-id="5085578334-12">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="5085578334-12">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5085578334-13">&l[·...·truncated·by·diffoscope;·len:·451,·SHA:·af7c6d959f00e4a5fe698d03ebbdeecdf52d9e790308e1b69971dde655f97e6e·...·]-7">]</span></code></pre>680 ·</span><span·class="p"·data-group-id="2470864695-11">{</span><span·class="p"·data-group-id="2470864695-12">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="2470864695-12">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2470864695-13">&l[·...·truncated·by·diffoscope;·len:·451,·SHA:·6b33ff13b3038911a5972d2dd617ddd662e47a321dcfb70bf879bf8f094fd197·...·]-7">]</span></code></pre>
681 ··</section>681 ··</section>
682 </section>682 </section>
683 <section·class="detail"·id="normalize/1">683 <section·class="detail"·id="normalize/1">
  
684 ··<div·class="detail-header">684 ··<div·class="detail-header">
685 ····<a·href="#normalize/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">685 ····<a·href="#normalize/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
686 ······<i·class="ri-link-m"·aria-hidden="true"></i>686 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 707, 22 lines modifiedOffset 707, 22 lines modified
707 ···················when·URI·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:uri_map/0">uri_map</a>(),·NormalizedURI·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:error/0">error</a>().</pre>707 ···················when·URI·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:uri_map/0">uri_map</a>(),·NormalizedURI·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:error/0">error</a>().</pre>
  
708 ······</div>708 ······</div>
  
709 <p>Transforms·an·<code·class="inline">URI</code>·into·a·normalized·form·using·Syntax-Based·Normalization·as709 <p>Transforms·an·<code·class="inline">URI</code>·into·a·normalized·form·using·Syntax-Based·Normalization·as
710 defined·by·<a·href="https://www.ietf.org/rfc/rfc3986.txt">RFC·3986</a>.</p><p>This·function·implements·case·normalization,·percent-encoding·normalization,710 defined·by·<a·href="https://www.ietf.org/rfc/rfc3986.txt">RFC·3986</a>.</p><p>This·function·implements·case·normalization,·percent-encoding·normalization,
711 path·segment·normalization·and·scheme·based·normalization·for·HTTP(S)·with·basic711 path·segment·normalization·and·scheme·based·normalization·for·HTTP(S)·with·basic
712 support·for·FTP,·SSH,·SFTP·and·TFTP.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="0211524794-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p"·data-group-id="0211524794-1">)</span><span·class="p">.</span><span·class="w">712 support·for·FTP,·SSH,·SFTP·and·TFTP.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6195342573-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p"·data-group-id="6195342573-1">)</span><span·class="p">.</span><span·class="w">
713 </span><span·class="s">&quot;/a/g&quot;</span><span·class="gp·unselectable">713 </span><span·class="s">&quot;/a/g&quot;</span><span·class="gp·unselectable">
714 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="0211524794-2">(</span><span·class="p"·data-group-id="0211524794-3">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="0211524794-3">&gt;&gt;</span><span·class="p"·data-group-id="0211524794-2">)</span><span·class="p">.</span><span·class="w">714 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6195342573-2">(</span><span·class="p"·data-group-id="6195342573-3">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="6195342573-3">&gt;&gt;</span><span·class="p"·data-group-id="6195342573-2">)</span><span·class="p">.</span><span·class="w">
715 </span><span·class="p"·data-group-id="0211524794-4">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id="0211524794-4">&gt;&gt;</span><span·class="gp·unselectable">715 </span><span·class="p"·data-group-id="6195342573-4">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id="6195342573-4">&gt;&gt;</span><span·class="gp·unselectable">
716 3&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="0211524794-5">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p"·data-group-id="0211524794-5">)</span><span·class="p">.</span><span·class="w">716 3&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6195342573-5">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p"·data-group-id="6195342573-5">)</span><span·class="p">.</span><span·class="w">
717 </span><span·class="s">&quot;http://localhost/&quot;</span><span·class="gp·unselectable">717 </span><span·class="s">&quot;http://localhost/&quot;</span><span·class="gp·unselectable">
718 4&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="0211524794-6">(</span><span·class="p"·data-group-id="0211524794-7">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p">,</span><span·class="gp·unselectable">718 4&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6195342573-6">(</span><span·class="p"·data-group-id="6195342573-7">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p">,</span><span·class="gp·unselectable">
719 4&gt;·</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;localhost-örebro&quot;</span><span·class="p"·data-group-id="0211524794-7">}</span><span·class="p"·data-group-id="0211524794-6">)</span><span·class="p">.</span><span·class="w">719 4&gt;·</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;localhost-örebro&quot;</span><span·class="p"·data-group-id="6195342573-7">}</span><span·class="p"·data-group-id="6195342573-6">)</span><span·class="p">.</span><span·class="w">
720 </span><span·class="s">&quot;http://localhost-%C3%B6rebro/a/g&quot;</span></code></pre>720 </span><span·class="s">&quot;http://localhost-%C3%B6rebro/a/g&quot;</span></code></pre>
721 ··</section>721 ··</section>
722 </section>722 </section>
723 <section·class="detail"·id="normalize/2">723 <section·class="detail"·id="normalize/2">
  
724 ··<div·class="detail-header">724 ··<div·class="detail-header">
725 ····<a·href="#normalize/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">725 ····<a·href="#normalize/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 749, 23 lines modifiedOffset 749, 23 lines modified
749 ·······················Options·::·[return_map],749 ·······················Options·::·[return_map],
750 ·······················NormalizedURI·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:uri_map/0">uri_map</a>()·|·<a·href="#t:error/0">error</a>().</pre>750 ·······················NormalizedURI·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:uri_map/0">uri_map</a>()·|·<a·href="#t:error/0">error</a>().</pre>
  
751 ······</div>751 ······</div>
  
752 <p>Same·as·<a·href="#normalize/1"><code·class="inline">normalize/1</code></a>·but·with·an·additional·<code·class="inline">Options</code>752 <p>Same·as·<a·href="#normalize/1"><code·class="inline">normalize/1</code></a>·but·with·an·additional·<code·class="inline">Options</code>
753 parameter,·that·controls·whether·the·normalized·URI·shall·be·returned·as·an753 parameter,·that·controls·whether·the·normalized·URI·shall·be·returned·as·an
754 uri_map().</p><p>There·is·one·supported·option:·<code·class="inline">return_map</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6928099827-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6928099827-2">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6928099827-2">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·96f0505d29d799cac4c32470f956d019d6935093a097d695255e58c99d742a59·...·]-1">)</span><span·class="p">.</span><span·class="w">754 uri_map().</p><p>There·is·one·supported·option:·<code·class="inline">return_map</code>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="1874167258-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1874167258-2">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="1874167258-2">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·16c717af8a66b9d180336c6dd31f7bafa03cb582f91d8d51129f7fb3346ae408·...·]-1">)</span><span·class="p">.</span><span·class="w">
755 </span><span·class="p"·data-group-id="6928099827-3">#{</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/a/g&quot;</span><span·class="p"·data-group-id="6928099827-3">}</span><span·class="gp·unselectable">755 </span><span·class="p"·data-group-id="1874167258-3">#{</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/a/g&quot;</span><span·class="p"·data-group-id="1874167258-3">}</span><span·class="gp·unselectable">
756 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6928099827-4">(</span><span·class="p"·data-group-id="6928099827-5">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="6928099827-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·168,·SHA:·4991045cc6733ab40114ae184e0ef98184f45daa8cf9371b02cffc938b5fa9f1·...·]-4">)</span><span·class="p">.</span><span·class="w">756 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="1874167258-4">(</span><span·class="p"·data-group-id="1874167258-5">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="1874167258-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·168,·SHA:·6abc52747c50182dbeb345ef8397cd37598ecfbe33600edd340e5380094410fc·...·]-4">)</span><span·class="p">.</span><span·class="w">
757 </span><span·class="p"·data-group-id="6928099827-7">#{</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6928099827-8">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·72,·SHA:·e01da2fd629bb8e629357460dbd4beb3478fb01a2d9e9317b7ae2e3e00580bba·...·]-7">}</span><span·class="gp·unselectable">757 </span><span·class="p"·data-group-id="1874167258-7">#{</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1874167258-8">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·72,·SHA:·18dd547d13459a192a23468c18b568d1dc843a313d64c3898e39ade90d89bb86·...·]-7">}</span><span·class="gp·unselectable">
758 3&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6928099827-9">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6928099827-10">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6928099827-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·4b087589651ad94f56a963bc16131a91107c1c695b0b4e0f3f5201208226c888·...·]-9">)</span><span·class="p">.</span><span·class="w">758 3&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="1874167258-9">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1874167258-10">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="1874167258-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·cbbdc1b27fb1d6771c0daa7e7456b654fe43be884ec3d26d4e0546f473df2301·...·]-9">)</span><span·class="p">.</span><span·class="w">
759 </span><span·class="p"·data-group-id="6928099827-11">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·290,·SHA:·6164326540b0b0ab8b09b1c2817ae05025671d7512df390d557887cb9682bc70·...·]-11">}</span><span·class="gp·unselectable">759 </span><span·class="p"·data-group-id="1874167258-11">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·290,·SHA:·a420dc1065fffd34b9ec2ba0a04315732f6c86fb2c0b24210ddb059a297824bc·...·]-11">}</span><span·class="gp·unselectable">
760 4&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="6928099827-12">(</span><span·class="p"·data-group-id="6928099827-13">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p">,</span><span·class="gp·unselectable">760 4&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="1874167258-12">(</span><span·class="p"·data-group-id="1874167258-13">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">80</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p">,</span><span·class="gp·unselectable">
761 4&gt;·</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;localhost-örebro&quot;</span><span·class="p"·data-group-id="6928099827-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6928099827-14">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6928099827-14">]</span><span·class="p"·data-group-id="6928099827-12">)</span><span·class="p">.</span><span·class="w">761 4&gt;·</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;localhost-örebro&quot;</span><span·class="p"·data-group-id="1874167258-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1874167258-14">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="1874167258-14">]</span><span·class="p"·data-group-id="1874167258-12">)</span><span·class="p">.</span><span·class="w">
762 </span><span·class="p"·data-group-id="6928099827-15">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·300,·SHA:·ebed65cda7494a6193ca607cc521cebad89c34458303a48eabebdc99d2fe3c7f·...·]-15">}</span></code></pre>762 </span><span·class="p"·data-group-id="1874167258-15">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·300,·SHA:·39df0b938318e6dd3439f73660054e58aa007b244b28328c7a9df8e3cecf0f35·...·]-15">}</span></code></pre>
763 ··</section>763 ··</section>
764 </section>764 </section>
765 <section·class="detail"·id="parse/1">765 <section·class="detail"·id="parse/1">
  
766 ··<div·class="detail-header">766 ··<div·class="detail-header">
767 ····<a·href="#parse/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">767 ····<a·href="#parse/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
768 ······<i·class="ri-link-m"·aria-hidden="true"></i>768 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 787, 22 lines modifiedOffset 787, 22 lines modified
  
787 ··········<pre·translate="no"><span·class="attribute">-spec</span>·parse(URIString)·->·URIMap·when·URIString·::·<a·href="#t:uri_string/0">uri_string</a>(),·URIMap·::·<a·href="#t:uri_map/0">uri_map</a>()·|·<a·href="#t:error/0">error</a>().</pre>787 ··········<pre·translate="no"><span·class="attribute">-spec</span>·parse(URIString)·->·URIMap·when·URIString·::·<a·href="#t:uri_string/0">uri_string</a>(),·URIMap·::·<a·href="#t:uri_map/0">uri_map</a>()·|·<a·href="#t:error/0">error</a>().</pre>
  
788 ······</div>788 ······</div>
  
789 <p>Parses·an·<a·href="https://www.ietf.org/rfc/rfc3986.txt">RFC·3986</a>·compliant789 <p>Parses·an·<a·href="https://www.ietf.org/rfc/rfc3986.txt">RFC·3986</a>·compliant
790 <a·href="#t:uri_string/0"><code·class="inline">uri_string/0</code></a>·into·a·<a·href="#t:uri_map/0"><code·class="inline">uri_map/0</code></a>,·that·holds·the·parsed·components·of·the790 <a·href="#t:uri_string/0"><code·class="inline">uri_string/0</code></a>·into·a·<a·href="#t:uri_map/0"><code·class="inline">uri_map/0</code></a>,·that·holds·the·parsed·components·of·the
791 <code·class="inline">URI</code>.·If·parsing·fails,·an·error·tuple·is·returned.</p><p>See·also·the·opposite·operation·<a·href="#recompose/1"><code·class="inline">recompose/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="0956691307-1">(</span><span·class="s">&quot;foo://user@example.com:8042/over/there?name=ferret#nose&quot;</span><span·class="p"·data-group-id="0956691307-1">)</span><span·class="p">.</span><span·class="w">791 <code·class="inline">URI</code>.·If·parsing·fails,·an·error·tuple·is·returned.</p><p>See·also·the·opposite·operation·<a·href="#recompose/1"><code·class="inline">recompose/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="1034995593-1">(</span><span·class="s">&quot;foo://user@example.com:8042/over/there?name=ferret#nose&quot;</span><span·class="p"·data-group-id="1034995593-1">)</span><span·class="p">.</span><span·class="w">
792 </span><span·class="p"·data-group-id="0956691307-2">#{</span><span·class="ss">fragment</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;nose&quot;</span><span·class="p">,</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;example.com&quot;</span><span·class="p">,</span><span·class="w">792 </span><span·class="p"·data-group-id="1034995593-2">#{</span><span·class="ss">fragment</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;nose&quot;</span><span·class="p">,</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;example.com&quot;</span><span·class="p">,</span><span·class="w">
793 ··</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/over/there&quot;</span><span·class="p">,</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">8042</span><span·class="p">,</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p">,</span><span·class="w">793 ··</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/over/there&quot;</span><span·class="p">,</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">8042</span><span·class="p">,</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p">,</span><span·class="w">
794 ··</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">userinfo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="0956691307-2">}</span><span·class="gp·unselectable">794 ··</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">userinfo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="1034995593-2">}</span><span·class="gp·unselectable">
795 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="0956691307-3">(</span><span·class="p"·data-group-id="0956691307-4">&lt;&lt;</span><span·class="s">&quot;foo://user@example.com:8042/over/there?name=ferret&quot;</span><span·class="p"·data-group-id="0956691307-4">&gt;&gt;</span><span·class="p"·data-group-id="0956691307-3">)</span><span·class="p">.</span><span·class="w"> 
796 </span><span·class="p"·data-group-id="0956691307-5">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0956691307-6">&lt;&lt;</span><span·class="s">&quot;example.c[·...·truncated·by·diffoscope;·len:·386,·SHA:·2c3c5f8f714eb387e3210321c35f80158ef1f29e63436afb21c65b91a67adf33·...·]</span><span·class="w">795 2&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="1034995593-3">(</span><span·class="p"·data-group-id="1034995593-4">&lt;&lt;</span><span·class="s">&quot;foo://user@example.co[·...·truncated·by·diffoscope;·len:·172,·SHA:·af6df7d4157acbf58175afd75b0536ec34cf89e9acb2e188ae0e7980d8b1a6b5·...·]</span><span·class="w">
 796 </span><span·class="p"·data-group-id="1034995593-5">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1034995593-6">&lt;&lt;</span><span·class="s">&quot;example.com&quot;</span><span·class="p"·data-group-id="1034995593-6">&gt;&gt;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1034995593-7">&lt;&lt;</span><span·class="s">&quot;/over/there&quot;</span><span·class="p"·data-group-id="1034995593-7">&gt;&gt;</span><span·class="p">,</span><span·class="w">
797 ··</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">8042</span><span·class="p">,</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0956691307-8">&lt;&lt;</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p"·data-group-id="0956691307-8">&gt;&gt;</span><span·class="p">,</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w"[·...·truncated·by·diffoscope;·len:·148,·SHA:·16f2642343a3420beed448d87067e23827980aa70dd29dd8e224ea20df6fda45·...·]-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">797 ··</span><span·class="ss">port</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">8042</span><span·class="p">,</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1034995593-8">&lt;&lt;</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p"·data-group-id="1034995593-8">&gt;&gt;</span><span·class="p">,</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w"[·...·truncated·by·diffoscope;·len:·148,·SHA:·957e03f293cbd21ac6531bdf4f1d88772baf5c05f198ba4c5a8b6dbc6fa25180·...·]-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">
798 ··</span><span·class="ss">userinfo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0956691307-10">&lt;&lt;</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="0956691307-10">&gt;&gt;</span><span·class="p"·data-group-id="0956691307-5">}</span></code></pre>798 ··</span><span·class="ss">userinfo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1034995593-10">&lt;&lt;</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="1034995593-10">&gt;&gt;</span><span·class="p"·data-group-id="1034995593-5">}</span></code></pre>
Max diff block lines reached; 45458/91571 bytes (49.64%) of diff not shown.
39.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/uri_string_usage.html
    
Offset 190, 27 lines modifiedOffset 190, 27 lines modified
190 URI·components·using·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.190 URI·components·using·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.
191 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·is·a·convenient·choice·for·enabling191 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·is·a·convenient·choice·for·enabling
192 operations·such·as·producing·standard·compliant·URIs·out·of·components·that·have192 operations·such·as·producing·standard·compliant·URIs·out·of·components·that·have
193 special·or·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.·It·is·easier193 special·or·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.·It·is·easier
194 to·explain·this·by·an·example.</p><p>Let's·say·that·we·would·like·to·create·the·following·URI·and·send·it·over·the194 to·explain·this·by·an·example.</p><p>Let's·say·that·we·would·like·to·create·the·following·URI·and·send·it·over·the
195 network:·<code·class="inline">http://cities/örebro?foo·bar</code>.·This·is·not·a·valid·URI·as·it·contains195 network:·<code·class="inline">http://cities/örebro?foo·bar</code>.·This·is·not·a·valid·URI·as·it·contains
196 characters·that·are·not·allowed·in·a·URI·such·as·&quot;ö&quot;·and·the·space.·We·can196 characters·that·are·not·allowed·in·a·URI·such·as·&quot;ö&quot;·and·the·space.·We·can
197 verify·this·by·parsing·the·URI:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="6743796852-1">(</span><span·class="s">&quot;http://cities/örebro?foo·bar&quot;</span><span·class="p"·data-group-id="6743796852-1">)</span><span·class="p">.</span><span·class="w">197 verify·this·by·parsing·the·URI:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="0811399916-1">(</span><span·class="s">&quot;http://cities/örebro?foo·bar&quot;</span><span·class="p"·data-group-id="0811399916-1">)</span><span·class="p">.</span><span·class="w">
198 ··</span><span·class="p"·data-group-id="6743796852-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">invalid_uri</span><span·class="p">,</span><span·class="s">&quot;:&quot;</span><span·class="p"·data-group-id="6743796852-2">}</span></code></pre><p>The·URI·parser·tries·all·possible·combinations·to·interpret·the·input·and·fails198 ··</span><span·class="p"·data-group-id="0811399916-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">invalid_uri</span><span·class="p">,</span><span·class="s">&quot;:&quot;</span><span·class="p"·data-group-id="0811399916-2">}</span></code></pre><p>The·URI·parser·tries·all·possible·combinations·to·interpret·the·input·and·fails
199 at·the·last·attempt·when·it·encounters·the·colon·character·<code·class="inline">&quot;:&quot;</code>.·Note,·that·the199 at·the·last·attempt·when·it·encounters·the·colon·character·<code·class="inline">&quot;:&quot;</code>.·Note,·that·the
200 inital·fault·occurs·when·the·parser·attempts·to·interpret·the·character·<code·class="inline">&quot;ö&quot;</code>200 inital·fault·occurs·when·the·parser·attempts·to·interpret·the·character·<code·class="inline">&quot;ö&quot;</code>
201 and·after·a·failure·back-tracks·to·the·point·where·it·has·another·possible201 and·after·a·failure·back-tracks·to·the·point·where·it·has·another·possible
202 parsing·alternative.</p><p>The·proper·way·to·solve·this·problem·is·to·use·<a·href="uri_string.html#recompose/1"><code·class="inline">uri_string:recompose/1</code></a>·with·a202 parsing·alternative.</p><p>The·proper·way·to·solve·this·problem·is·to·use·<a·href="uri_string.html#recompose/1"><code·class="inline">uri_string:recompose/1</code></a>·with·a
203 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·as·input:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">recompose</span><span·class="p"·data-group-id="9139584226-1">(</span><span·class="p"·data-group-id="9139584226-2">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;cities&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/örebro&quot;</span><span·class="p">,</span><span·class="w">203 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·as·input:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">recompose</span><span·class="p"·data-group-id="3800620502-1">(</span><span·class="p"·data-group-id="3800620502-2">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;cities&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/örebro&quot;</span><span·class="p">,</span><span·class="w">
204 ··</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="9139584226-2">}</span><span·class="p"·data-group-id="9139584226-1">)</span><span·class="p">.</span><span·class="w">204 ··</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="3800620502-2">}</span><span·class="p"·data-group-id="3800620502-1">)</span><span·class="p">.</span><span·class="w">
205 ··</span><span·class="s">&quot;http://cities/%C3%B6rebro?foo%20bar&quot;</span></code></pre><p>The·result·is·a·valid·URI·where·all·the·special·characters·are·encoded·as205 ··</span><span·class="s">&quot;http://cities/%C3%B6rebro?foo%20bar&quot;</span></code></pre><p>The·result·is·a·valid·URI·where·all·the·special·characters·are·encoded·as
206 defined·by·the·standard.·Applying·<a·href="uri_string.html#parse/1"><code·class="inline">uri_string:parse/1</code></a>·and206 defined·by·the·standard.·Applying·<a·href="uri_string.html#parse/1"><code·class="inline">uri_string:parse/1</code></a>·and
207 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>·on·the·URI·returns·the·original·input:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="3379635590-1">(</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="3379635590-2">(</span><span·class="s">&quot;http://cities/%C3%B6rebro?foo%20bar&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·b4c7545700e81305b94fed789a1194abbf351d60548b967537a62552bd00357f·...·]-1">)</span><span·class="p">.</span><span·class="w">207 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>·on·the·URI·returns·the·original·input:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="2830489294-1">(</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="2830489294-2">(</span><span·class="s">&quot;http://cities/%C3%B6rebro?foo%20bar&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·aad054946b6919064b0624f5caf83b40a85e48876f5d59efd9d806b32e30645b·...·]-1">)</span><span·class="p">.</span><span·class="w">
208 ··</span><span·class="p"·data-group-id="3379635590-3">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;cities&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/örebro&quot;</span><span·class="p">,</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="w">208 ··</span><span·class="p"·data-group-id="2830489294-3">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;cities&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/örebro&quot;</span><span·class="p">,</span><span·class="k">query</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p">,</span><span·class="w">
209 ··</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p"·data-group-id="3379635590-3">}</span></code></pre><p>This·symmetric·property·is·heavily·used·in·our·property·test·suite.</p><h2·id="percent-encoding"·class="section-heading">209 ··</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p"·data-group-id="2830489294-3">}</span></code></pre><p>This·symmetric·property·is·heavily·used·in·our·property·test·suite.</p><h2·id="percent-encoding"·class="section-heading">
210 ··<a·href="#percent-encoding"·class="hover-link">210 ··<a·href="#percent-encoding"·class="hover-link">
211 ····<i·class="ri-link-m"·aria-hidden="true"></i>211 ····<i·class="ri-link-m"·aria-hidden="true"></i>
212 ··</a>212 ··</a>
213 ··<span·class="text">Percent-encoding</span>213 ··<span·class="text">Percent-encoding</span>
214 </h2>214 </h2>
215 <p>As·you·have·seen·in·the·previous·chapter,·a·standard·URI·can·only·contain·a215 <p>As·you·have·seen·in·the·previous·chapter,·a·standard·URI·can·only·contain·a
216 strict·subset·of·the·US·ASCII·character·set,·moreover·the·allowed·set·of216 strict·subset·of·the·US·ASCII·character·set,·moreover·the·allowed·set·of
Offset 225, 72 lines modifiedOffset 225, 72 lines modified
225 <a·href="unicode_usage.html#what-unicode-is">Unicode</a>·and·it·is·encoded·using·a·single225 <a·href="unicode_usage.html#what-unicode-is">Unicode</a>·and·it·is·encoded·using·a·single
226 octet·<code·class="inline">0x20</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p><a·href="unicode_usage.html#what-unicode-is">Unicode</a>·is·backward·compatible·with·ASCII,226 octet·<code·class="inline">0x20</code>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p><a·href="unicode_usage.html#what-unicode-is">Unicode</a>·is·backward·compatible·with·ASCII,
227 the·encoding·of·the·first·128·characters·is·the·same·binary·value·as·in·ASCII.</p></section><p><a·href=""·id="percent_encoding"></a>·It·is·a·major·source·of·confusion·exactly·which227 the·encoding·of·the·first·128·characters·is·the·same·binary·value·as·in·ASCII.</p></section><p><a·href=""·id="percent_encoding"></a>·It·is·a·major·source·of·confusion·exactly·which
228 characters·will·be·percent-encoded.·In·order·to·make·it·easier·to·answer·this228 characters·will·be·percent-encoded.·In·order·to·make·it·easier·to·answer·this
229 question·the·library·provides·a·utility·function,229 question·the·library·provides·a·utility·function,
230 <a·href="uri_string.html#allowed_characters/0"><code·class="inline">uri_string:allowed_characters/0</code></a>,·that230 <a·href="uri_string.html#allowed_characters/0"><code·class="inline">uri_string:allowed_characters/0</code></a>,·that
231 lists·the·allowed·set·of·characters·in·each·major·URI·component,·and·also·in·the231 lists·the·allowed·set·of·characters·in·each·major·URI·component,·and·also·in·the
232 most·important·standard·character·sets.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">allowed_characters</span><span·class="p"·data-group-id="6094669470-1">(</span><span·class="p"·data-group-id="6094669470-1">)</span><span·class="p">.</span><span·class="w">232 most·important·standard·character·sets.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">allowed_characters</span><span·class="p"·data-group-id="2542639609-1">(</span><span·class="p"·data-group-id="2542639609-1">)</span><span·class="p">.</span><span·class="w">
233 ····</span><span·class="p"·data-group-id="6094669470-2">[</span><span·class="p"·data-group-id="6094669470-3">{</span><span·class="ss">scheme</span><span·class="p">,</span><span·class="w">233 ····</span><span·class="p"·data-group-id="2542639609-2">[</span><span·class="p"·data-group-id="2542639609-3">{</span><span·class="ss">scheme</span><span·class="p">,</span><span·class="w">
234 ·····</span><span·class="s">&quot;+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;</span><span·class="p"·data-group-id="6094669470-3">}</span><span·class="p">,</span><span·class="w">234 ·····</span><span·class="s">&quot;+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;</span><span·class="p"·data-group-id="2542639609-3">}</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="p"·data-group-id="6094669470-4">{</span><span·class="ss">userinfo</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="p"·data-group-id="2542639609-4">{</span><span·class="ss">userinfo</span><span·class="p">,</span><span·class="w">
236 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-.0123456789:;=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="6094669470-4">}</span><span·class="p">,</span><span·class="w">236 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-.0123456789:;=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="2542639609-4">}</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="6094669470-5">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="p"·data-group-id="2542639609-5">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">
238 ·····</span><span·class="s">&quot;!$&amp;&#39;()*+,-.0123456789:;=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="6094669470-5">}</span><span·class="p">,</span><span·class="w">238 ·····</span><span·class="s">&quot;!$&amp;&#39;()*+,-.0123456789:;=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="2542639609-5">}</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="p"·data-group-id="6094669470-6">{</span><span·class="ss">ipv4</span><span·class="p">,</span><span·class="s">&quot;.0123456789&quot;</span><span·class="p"·data-group-id="6094669470-6">}</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="p"·data-group-id="2542639609-6">{</span><span·class="ss">ipv4</span><span·class="p">,</span><span·class="s">&quot;.0123456789&quot;</span><span·class="p"·data-group-id="2542639609-6">}</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="6094669470-7">{</span><span·class="ss">ipv6</span><span·class="p">,</span><span·class="s">&quot;.0123456789:ABCDEFabcdef&quot;</span><span·class="p"·data-group-id="6094669470-7">}</span><span·class="p">,</span><span·class="w">240 ····</span><span·class="p"·data-group-id="2542639609-7">{</span><span·class="ss">ipv6</span><span·class="p">,</span><span·class="s">&quot;.0123456789:ABCDEFabcdef&quot;</span><span·class="p"·data-group-id="2542639609-7">}</span><span·class="p">,</span><span·class="w">
241 ····</span><span·class="p"·data-group-id="6094669470-8">{</span><span·class="ss">regname</span><span·class="p">,</span><span·class="w">241 ····</span><span·class="p"·data-group-id="2542639609-8">{</span><span·class="ss">regname</span><span·class="p">,</span><span·class="w">
242 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-.0123456789;=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="6094669470-8">}</span><span·class="p">,</span><span·class="w">242 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-.0123456789;=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="2542639609-8">}</span><span·class="p">,</span><span·class="w">
243 ····</span><span·class="p"·data-group-id="6094669470-9">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">243 ····</span><span·class="p"·data-group-id="2542639609-9">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">
244 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-./0123456789:;=@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="6094669470-9">}</span><span·class="p">,</span><span·class="w">244 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-./0123456789:;=@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="2542639609-9">}</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="6094669470-10">{</span><span·class="k">query</span><span·class="p">,</span><span·class="w">245 ····</span><span·class="p"·data-group-id="2542639609-10">{</span><span·class="k">query</span><span·class="p">,</span><span·class="w">
246 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="6094669470-10">}</span><span·class="p">,</span><span·class="w">246 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="2542639609-10">}</span><span·class="p">,</span><span·class="w">
247 ····</span><span·class="p"·data-group-id="6094669470-11">{</span><span·class="ss">fragment</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="p"·data-group-id="2542639609-11">{</span><span·class="ss">fragment</span><span·class="p">,</span><span·class="w">
248 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="6094669470-11">}</span><span·class="p">,</span><span·class="w">248 ·····</span><span·class="s">&quot;!$%&amp;&#39;()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="2542639609-11">}</span><span·class="p">,</span><span·class="w">
249 ····</span><span·class="p"·data-group-id="6094669470-12">{</span><span·class="ss">reserved</span><span·class="p">,</span><span·class="s">&quot;!#$&amp;&#39;()*+,/:;=?@[]&quot;</span><span·class="p"·data-group-id="6094669470-12">}</span><span·class="p">,</span><span·class="w">249 ····</span><span·class="p"·data-group-id="2542639609-12">{</span><span·class="ss">reserved</span><span·class="p">,</span><span·class="s">&quot;!#$&amp;&#39;()*+,/:;=?@[]&quot;</span><span·class="p"·data-group-id="2542639609-12">}</span><span·class="p">,</span><span·class="w">
250 ····</span><span·class="p"·data-group-id="6094669470-13">{</span><span·class="ss">unreserved</span><span·class="p">,</span><span·class="w">250 ····</span><span·class="p"·data-group-id="2542639609-13">{</span><span·class="ss">unreserved</span><span·class="p">,</span><span·class="w">
251 ·····</span><span·class="s">&quot;-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="6094669470-13">}</span><span·class="p"·data-group-id="6094669470-2">]</span></code></pre><p>If·a·URI·component·has·a·character·that·is·not·allowed,·it·will·be251 ·····</span><span·class="s">&quot;-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~&quot;</span><span·class="p"·data-group-id="2542639609-13">}</span><span·class="p"·data-group-id="2542639609-2">]</span></code></pre><p>If·a·URI·component·has·a·character·that·is·not·allowed,·it·will·be
252 percent-encoded·when·the·URI·is·produced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">recompose</span><span·class="p"·data-group-id="6893898341-1">(</span><span·class="p"·data-group-id="6893898341-2">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;https&quot;</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·444,·SHA:·43f47cf792d4084b3be5a7ca53cb0600b4a6206381ebb24fb0441e57a7d17883·...·]-1">)</span><span·class="p">.</span><span·class="w">252 percent-encoded·when·the·URI·is·produced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">recompose</span><span·class="p"·data-group-id="4454259125-1">(</span><span·class="p"·data-group-id="4454259125-2">#{</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;https&quot;</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·444,·SHA:·b974c5ae09bd453bf556b664e652e4aad91ed11bee21443cb8f64cdcd4136099·...·]-1">)</span><span·class="p">.</span><span·class="w">
253 ····</span><span·class="s">&quot;https://local%23host&quot;</span></code></pre><p>Consuming·a·URI·containing·percent-encoded·triplets·can·take·many·steps.·The253 ····</span><span·class="s">&quot;https://local%23host&quot;</span></code></pre><p>Consuming·a·URI·containing·percent-encoded·triplets·can·take·many·steps.·The
254 following·example·shows·how·to·handle·an·input·URI·that·is·not·normalized·and254 following·example·shows·how·to·handle·an·input·URI·that·is·not·normalized·and
255 contains·multiple·percent-encoded·triplets.·First,·the·input255 contains·multiple·percent-encoded·triplets.·First,·the·input
256 <a·href="uri_string.html#t:uri_string/0"><code·class="inline">uri_string()</code></a>·is·to·be·parsed·into·a256 <a·href="uri_string.html#t:uri_string/0"><code·class="inline">uri_string()</code></a>·is·to·be·parsed·into·a
257 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>.·The·parsing·only·splits·the·URI·into257 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>.·The·parsing·only·splits·the·URI·into
258 its·components·without·doing·any·decoding:</p><pre><code·class="text">····3&gt;·uri_string:parse(&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;).258 its·components·without·doing·any·decoding:</p><pre><code·class="text">····3&gt;·uri_string:parse(&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;).
259 ····#{host·=&gt;·&quot;%6C%6Fcal%23host&quot;,path·=&gt;·&quot;/%F6re%26bro%20&quot;,259 ····#{host·=&gt;·&quot;%6C%6Fcal%23host&quot;,path·=&gt;·&quot;/%F6re%26bro%20&quot;,
260 ······scheme·=&gt;·&quot;http&quot;}}</code></pre><p>The·input·is·a·valid·URI·but·how·can·you·decode·those·percent-encoded·octets?260 ······scheme·=&gt;·&quot;http&quot;}}</code></pre><p>The·input·is·a·valid·URI·but·how·can·you·decode·those·percent-encoded·octets?
261 You·can·try·to·normalize·the·input·with·<a·href="uri_string.html#normalize/1"><code·class="inline">uri_string:normalize/1</code></a>.·The·normalize261 You·can·try·to·normalize·the·input·with·<a·href="uri_string.html#normalize/1"><code·class="inline">uri_string:normalize/1</code></a>.·The·normalize
262 operation·decodes·those·percent-encoded·triplets·that·correspond·to·a·character262 operation·decodes·those·percent-encoded·triplets·that·correspond·to·a·character
263 in·the·unreserved·set.·Normalization·is·a·safe,·idempotent·operation·that263 in·the·unreserved·set.·Normalization·is·a·safe,·idempotent·operation·that
264 converts·a·URI·into·its·canonical·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="3860804697-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="3860804697-1">)</span><span·class="p">.</span><span·class="w">264 converts·a·URI·into·its·canonical·form:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">4</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="2930435551-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="2930435551-1">)</span><span·class="p">.</span><span·class="w">
265 ····</span><span·class="s">&quot;http://local%23host/%F6re%26bro%20&quot;</span><span·class="w">265 ····</span><span·class="s">&quot;http://local%23host/%F6re%26bro%20&quot;</span><span·class="w">
266 ····</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="3860804697-2">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3860804697-3">[</span><span·class="ss">return_map</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·53a2fe194c548d490fb678b045ae2322b59c255d26a741279d4a5330b99b5e48·...·]-2">)</span><span·class="p">.</span><span·class="w">266 ····</span><span·class="mi">5</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">normalize</span><span·class="p"·data-group-id="2930435551-2">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2930435551-3">[</span><span·class="ss">return_map</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·ed0eb9341b008d0aa534908b70d3d754d73b4e32cbab66f833303c0eb6c782eb·...·]-2">)</span><span·class="p">.</span><span·class="w">
267 ····</span><span·class="p"·data-group-id="3860804697-4">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;local%23host&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">267 ····</span><span·class="p"·data-group-id="2930435551-4">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;local%23host&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">
268 ······</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p"·data-group-id="3860804697-4">}</span></code></pre><p>There·are·still·a·few·percent-encoded·triplets·left·in·the·output.·At·this268 ······</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p"·data-group-id="2930435551-4">}</span></code></pre><p>There·are·still·a·few·percent-encoded·triplets·left·in·the·output.·At·this
269 point,·when·the·URI·is·already·parsed,·it·is·safe·to·apply·application·specific269 point,·when·the·URI·is·already·parsed,·it·is·safe·to·apply·application·specific
270 decoding·on·the·remaining·character·triplets.·Erlang/OTP·provides·a·function,270 decoding·on·the·remaining·character·triplets.·Erlang/OTP·provides·a·function,
271 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>·for·raw·percent·decoding·that·you·can·use·on·the271 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>·for·raw·percent·decoding·that·you·can·use·on·the
272 host·and·path·components,·or·on·the·whole·map:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="7604927350-1">(</span><span·class="s">&quot;local%23host&quot;</span><span·class="p"·data-group-id="7604927350-1">)</span><span·class="p">.</span><span·class="w">272 host·and·path·components,·or·on·the·whole·map:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">6</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="8311224864-1">(</span><span·class="s">&quot;local%23host&quot;</span><span·class="p"·data-group-id="8311224864-1">)</span><span·class="p">.</span><span·class="w">
273 ····</span><span·class="s">&quot;local#host&quot;</span><span·class="w">273 ····</span><span·class="s">&quot;local#host&quot;</span><span·class="w">
274 ····</span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="7604927350-2">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="7604927350-2">)</span><span·class="p">.</span><span·class="w">274 ····</span><span·class="mi">7</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="8311224864-2">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="8311224864-2">)</span><span·class="p">.</span><span·class="w">
275 ····</span><span·class="p"·data-group-id="7604927350-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">invalid_utf8</span><span·class="p">,</span><span·class="p"·data-group-id="7604927350-4">&lt;&lt;</span><span·class="s">&quot;/öre&amp;bro·&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·88,·SHA:·15efe470d097f200dd44fee9d5180fca6fa729f6e56d65d4fa2afa87a1d0e3ac·...·]-3">}</span><span·class="w">275 ····</span><span·class="p"·data-group-id="8311224864-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">invalid_utf8</span><span·class="p">,</span><span·class="p"·data-group-id="8311224864-4">&lt;&lt;</span><span·class="s">&quot;/öre&amp;bro·&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·88,·SHA:·a693a9ca0f31f450eeb3ace9d7e66d3daa3be83a41eb2361138f26abbf8e874d·...·]-3">}</span><span·class="w">
276 ····</span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="7604927350-5">(</span><span·class="p"·data-group-id="7604927350-6">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;local%23host&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">276 ····</span><span·class="mi">8</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="8311224864-5">(</span><span·class="p"·data-group-id="8311224864-6">#{</span><span·class="ss">host</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;local%23host&quot;</span><span·class="p">,</span><span·class="ss">path</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">
277 ····</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p"·data-group-id="7604927350-6">}</span><span·class="p"·data-group-id="7604927350-5">)</span><span·class="p">.</span><span·class="w">277 ····</span><span·class="ss">scheme</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;http&quot;</span><span·class="p"·data-group-id="8311224864-6">}</span><span·class="p"·data-group-id="8311224864-5">)</span><span·class="p">.</span><span·class="w">
278 ····</span><span·class="p"·data-group-id="7604927350-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="7604927350-8">{</span><span·class="ss">invalid</span><span·class="p">,</span><span·class="p"·data-group-id="7604927350-9">{</span><span·class="ss">pat[·...·truncated·by·diffoscope;·len:·517,·SHA:·c31d461f917447a48f5d3b15a41325b19701967d9e6c9b1f470c84f49361a087·...·]-7">}</span></code></pre><p>The·<code·class="inline">host</code>·was·successfully·decoded·but·the·path·contains·at·least·one·character278 ····</span><span·class="p"·data-group-id="8311224864-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="8311224864-8">{</span><span·class="ss">invalid</span><span·class="p">,</span><span·class="p"·data-group-id="8311224864-9">{</span><span·class="ss">pat[·...·truncated·by·diffoscope;·len:·517,·SHA:·e9a08260bf0c418eb178dce87c4222403d7d2226b6957c70d8af32e1ef8a4f67·...·]-7">}</span></code></pre><p>The·<code·class="inline">host</code>·was·successfully·decoded·but·the·path·contains·at·least·one·character
279 with·non-UTF-8·encoding.·In·order·to·be·able·to·decode·this,·you·have·to·make279 with·non-UTF-8·encoding.·In·order·to·be·able·to·decode·this,·you·have·to·make
280 assumptions·about·the·encoding·used·in·these·triplets.·The·most·obvious·choice280 assumptions·about·the·encoding·used·in·these·triplets.·The·most·obvious·choice
281 is·<em>latin-1</em>,·so·you·can·try·<a·href="uri_string.html#transcode/2"><code·class="inline">uri_string:transcode/2</code></a>,·to·transcode·the·path·to281 is·<em>latin-1</em>,·so·you·can·try·<a·href="uri_string.html#transcode/2"><code·class="inline">uri_string:transcode/2</code></a>,·to·transcode·the·path·to
282 UTF-8·and·run·the·percent-decode·operation·on·the·transcoded·string:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">9</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">transcode</span><span·class="p"·data-group-id="3082111747-1">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3082111747-2">[</span><span·class="p"·data-group-id="3082111747-3">{</span><span·class="ss">in_encoding</[·...·truncated·by·diffoscope;·len:·230,·SHA:·f7126a1a4f21768df8a99c1b42daa1e041e529c9033afc84d4b8d8586d93ad14·...·]-1">)</span><span·class="p">.</span><span·class="w">282 UTF-8·and·run·the·percent-decode·operation·on·the·transcoded·string:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">9</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">transcode</span><span·class="p"·data-group-id="8192731945-1">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8192731945-2">[</span><span·class="p"·data-group-id="8192731945-3">{</span><span·class="ss">in_encoding</[·...·truncated·by·diffoscope;·len:·230,·SHA:·28b81bcd4ecc7cb76256c28f70d7c9f6ad8dc8da1da5bc84e55e291856aea113·...·]-1">)</span><span·class="p">.</span><span·class="w">
283 ····</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="w">283 ····</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="w">
284 ····</span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="3082111747-4">(</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="3082111747-4">)</span><span·class="p">.</span><span·class="w">284 ····</span><span·class="mi">10</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="8192731945-4">(</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="8192731945-4">)</span><span·class="p">.</span><span·class="w">
285 ····</span><span·class="s">&quot;/öre&amp;bro·&quot;</span></code></pre><p>It·is·important·to·emphasize·that·it·is·not·safe·to·apply285 ····</span><span·class="s">&quot;/öre&amp;bro·&quot;</span></code></pre><p>It·is·important·to·emphasize·that·it·is·not·safe·to·apply
286 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>·directly·on·an·input·URI:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">11</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="8573583049-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="8573583049-1">)</span><span·class="p">.</span><span·class="w">286 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>·directly·on·an·input·URI:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="mi">11</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">percent_decode</span><span·class="p"·data-group-id="1783118636-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="1783118636-1">)</span><span·class="p">.</span><span·class="w">
287 ····</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="w">287 ····</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="w">
288 ····</span><span·class="mi">12</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="8573583049-2">(</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="p"·data-group-id="8573583049-2">)</span><span·class="p">.</span><span·class="w">288 ····</span><span·class="mi">12</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="1783118636-2">(</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="p"·data-group-id="1783118636-2">)</span><span·class="p">.</span><span·class="w">
289 ····</span><span·class="p"·data-group-id="8573583049-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">invalid_uri</span><span·class="p">,</span><span·class="s">&quot;:&quot;</span><span·class="p"·data-group-id="8573583049-3">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Percent-encoding·is·implemented·in·<a·href="uri_string.html#recompose/1"><code·class="inline">uri_string:recompose/1</code></a>·and·it·happens289 ····</span><span·class="p"·data-group-id="1783118636-3">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">invalid_uri</span><span·class="p">,</span><span·class="s">&quot;:&quot;</span><span·class="p"·data-group-id="1783118636-3">}</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Percent-encoding·is·implemented·in·<a·href="uri_string.html#recompose/1"><code·class="inline">uri_string:recompose/1</code></a>·and·it·happens
290 when·converting·a·<a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·into·a290 when·converting·a·<a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·into·a
291 <a·href="uri_string.html#t:uri_string/0"><code·class="inline">uri_string()</code></a>.·Applying·any·percent-encoding291 <a·href="uri_string.html#t:uri_string/0"><code·class="inline">uri_string()</code></a>.·Applying·any·percent-encoding
292 directly·on·an·input·URI·would·not·be·safe·just·as·in·the·case·of292 directly·on·an·input·URI·would·not·be·safe·just·as·in·the·case·of
293 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>,·the·output·could·be·an·invalid·URI.·Quoting293 <a·href="uri_string.html#percent_decode/1"><code·class="inline">uri_string:percent_decode/1</code></a>,·the·output·could·be·an·invalid·URI.·Quoting
294 functions·allow·users·to·perform·raw·percent·encoding·and·decoding·on294 functions·allow·users·to·perform·raw·percent·encoding·and·decoding·on
295 application·data·which·cannot·be·handled·automatically·by295 application·data·which·cannot·be·handled·automatically·by
296 <a·href="uri_string.html#recompose/1"><code·class="inline">uri_string:recompose/1</code></a>.·For·example·in·scenario·when·user·would·need·to·use296 <a·href="uri_string.html#recompose/1"><code·class="inline">uri_string:recompose/1</code></a>.·For·example·in·scenario·when·user·would·need·to·use
35.9 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2/doc/html/zip.html
    
Offset 1020, 37 lines modifiedOffset 1020, 37 lines modified
1020 <code·class="inline">Archive</code>,·starting·with·<code·class="inline">AccIn·==·Acc0</code>.</p><p><code·class="inline">FileInArchive</code>·is·the·name·that·the·file·has·in·the·archive.</p><p><code·class="inline">GetInfo</code>·is·a·fun·that·returns·information·about·the·file.</p><p><code·class="inline">GetBin</code>·returns·the·file·contents.</p><p>Both·<code·class="inline">GetInfo</code>·and·<code·class="inline">GetBin</code>·must·be·called·within·the·<code·class="inline">Fun</code>.·Their·behavior·is1020 <code·class="inline">Archive</code>,·starting·with·<code·class="inline">AccIn·==·Acc0</code>.</p><p><code·class="inline">FileInArchive</code>·is·the·name·that·the·file·has·in·the·archive.</p><p><code·class="inline">GetInfo</code>·is·a·fun·that·returns·information·about·the·file.</p><p><code·class="inline">GetBin</code>·returns·the·file·contents.</p><p>Both·<code·class="inline">GetInfo</code>·and·<code·class="inline">GetBin</code>·must·be·called·within·the·<code·class="inline">Fun</code>.·Their·behavior·is
1021 undefined·if·they·are·called·outside·the·context·of·<code·class="inline">Fun</code>.</p><p>The·<code·class="inline">Fun</code>·must·return·a·new·accumulator,·which·is·passed·to·the·next·call.1021 undefined·if·they·are·called·outside·the·context·of·<code·class="inline">Fun</code>.</p><p>The·<code·class="inline">Fun</code>·must·return·a·new·accumulator,·which·is·passed·to·the·next·call.
1022 <a·href="#foldl/3"><code·class="inline">foldl/3</code></a>·returns·the·final·accumulator·value.·<code·class="inline">Acc0</code>·is·returned1022 <a·href="#foldl/3"><code·class="inline">foldl/3</code></a>·returns·the·final·accumulator·value.·<code·class="inline">Acc0</code>·is·returned
1023 if·the·archive·is·empty.·It·is·not·necessary·to·iterate·over·all·files·in·the1023 if·the·archive·is·empty.·It·is·not·necessary·to·iterate·over·all·files·in·the
1024 archive.·The·iteration·can·be·ended·prematurely·in·a·controlled·manner·by1024 archive.·The·iteration·can·be·ended·prematurely·in·a·controlled·manner·by
1025 throwing·an·exception.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">.</span><span·class="w">1025 throwing·an·exception.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">.</span><span·class="w">
1026 </span><span·class="s">&quot;dummy.zip&quot;</span><span·class="gp·unselectable">1026 </span><span·class="s">&quot;dummy.zip&quot;</span><span·class="gp·unselectable">
1027 &gt;·</span><span·class="p"·data-group-id="0985808678-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0985808678-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·c[·...·truncated·by·diffoscope;·len:·1459,·SHA:·3f2ca622232c53c611eca896db34ea2355170015a3391e81a6502e8c74ba49e3·...·]-3">)</span><span·class="p">.</span><span·class="w">1027 &gt;·</span><span·class="p"·data-group-id="0157363850-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0157363850-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·c[·...·truncated·by·diffoscope;·len:·1459,·SHA:·4481e4d404d60f4f5835a364f398c0cd903c49f610c6cad8e0499e6ea306c80d·...·]-3">)</span><span·class="p">.</span><span·class="w">
1028 </span><span·class="p"·data-group-id="0985808678-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0985808678-11">{</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">,</span><span·class="w">1028 </span><span·class="p"·data-group-id="0157363850-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0157363850-11">{</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">,</span><span·class="w">
1029 ·····</span><span·class="p"·data-group-id="0985808678-12">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">74</span><span·class="p">,</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">171</span><span·class="p">,</span><span·class="mi">39</span><span·class="p">,</span><span·class="mi">212</span><span·class="p">,</span><span·class="mi">26</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">1029 ·····</span><span·class="p"·data-group-id="0157363850-12">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">74</span><span·class="p">,</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">171</span><span·class="p">,</span><span·class="mi">39</span><span·class="p">,</span><span·class="mi">212</span><span·class="p">,</span><span·class="mi">26</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
1030 ·······</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0985808678-12">&gt;&gt;</span><span·class="p"·data-group-id="0985808678-11">}</span><span·class="p"·data-group-id="0985808678-10">}</span><span·class="gp·unselectable">1030 ·······</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0157363850-12">&gt;&gt;</span><span·class="p"·data-group-id="0157363850-11">}</span><span·class="p"·data-group-id="0157363850-10">}</span><span·class="gp·unselectable">
1031 &gt;·</span><span·class="p"·data-group-id="0985808678-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FileSpec</span><span·class="p"·data-group-id="0985808678-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·1786,·SHA:·8967c014d8c206fd1ddd3d98336e615487876ce7a76c2a6d5287ceb65d440045·...·]-14">)</span><span·class="p">.</span><span·class="w">1031 &gt;·</span><span·class="p"·data-group-id="0157363850-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FileSpec</span><span·class="p"·data-group-id="0157363850-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·1786,·SHA:·84bed3712d9d283e4ae64084c58e6474c5e11949e5949ceae0ef21b9bff950bc·...·]-14">)</span><span·class="p">.</span><span·class="w">
1032 </span><span·class="p"·data-group-id="0985808678-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0985808678-23">[</span><span·class="p"·data-group-id="0985808678-24">{</span><span·class="s">&quot;bar&quot;</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·126,·SHA:·4a7faf253cecd270e605c20f034b34fd43d78cc410b0f44b322fe3c304978be4·...·]-25">&gt;&gt;</span><span·class="p">,</span><span·class="w">1032 </span><span·class="p"·data-group-id="0157363850-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0157363850-23">[</span><span·class="p"·data-group-id="0157363850-24">{</span><span·class="s">&quot;bar&quot;</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·126,·SHA:·bd8ad44035bd0315f8e44975700c9c8e741905ca85cbd70e5c184e3d224cccc0·...·]-25">&gt;&gt;</span><span·class="p">,</span><span·class="w">
1033 ······</span><span·class="p"·data-group-id="0985808678-26">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">1033 ······</span><span·class="p"·data-group-id="0157363850-26">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">
1034 ·················</span><span·class="p"·data-group-id="0985808678-27">{</span><span·class="p"·data-group-id="0985808678-28">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0985808678-28">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·f44640daaaeba2b605e9a25a035647a675cdc6ee34116014b666ddb26996294d·...·]-27">}</span><span·class="p">,</span><span·class="w">1034 ·················</span><span·class="p"·data-group-id="0157363850-27">{</span><span·class="p"·data-group-id="0157363850-28">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0157363850-28">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·3f22918b0864930ac2b8904280ee218d6932f631e91a178b21b173b0c0af1685·...·]-27">}</span><span·class="p">,</span><span·class="w">
1035 ·················</span><span·class="p"·data-group-id="0985808678-30">{</span><span·class="p"·data-group-id="0985808678-31">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0985808678-31">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·2673f9c70a2500052273c580b5569c6122a3e854f37d48989310dea8232f7b67·...·]-30">}</span><span·class="p">,</span><span·class="w">1035 ·················</span><span·class="p"·data-group-id="0157363850-30">{</span><span·class="p"·data-group-id="0157363850-31">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0157363850-31">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·0efda46c9cbcfd18c695bc4c6adb043f903ec320f5a7a454b7d0751fb79f6071·...·]-30">}</span><span·class="p">,</span><span·class="w">
1036 ·················</span><span·class="p"·data-group-id="0985808678-33">{</span><span·class="p"·data-group-id="0985808678-34">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0985808678-34">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·d83d1f8a963c6575919493ddf769a0e0a53cc2bcc75c4e4adae2ab0c9b8ae846·...·]-33">}</span><span·class="p">,</span><span·class="w">1036 ·················</span><span·class="p"·data-group-id="0157363850-33">{</span><span·class="p"·data-group-id="0157363850-34">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0157363850-34">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·b239d0b0b88e2eee81002d589143f0dbb0dc07a79adac86d858dd5624dff4734·...·]-33">}</span><span·class="p">,</span><span·class="w">
1037 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0985808678-26">}</span><span·class="p"·data-group-id="0985808678-24">}</span><span·class="p">,</span><span·class="w">1037 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0157363850-26">}</span><span·class="p"·data-group-id="0157363850-24">}</span><span·class="p">,</span><span·class="w">
1038 ·····</span><span·class="p"·data-group-id="0985808678-36">{</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0985808678-37">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="0985808678-37">&gt;&gt;</span><span·class="p">,</span><span·class="w">1038 ·····</span><span·class="p"·data-group-id="0157363850-36">{</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0157363850-37">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="0157363850-37">&gt;&gt;</span><span·class="p">,</span><span·class="w">
1039 ······</span><span·class="p"·data-group-id="0985808678-38">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">1039 ······</span><span·class="p"·data-group-id="0157363850-38">{</span><span·class="ss">file_info</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">regular</span><span·class="p">,</span><span·class="ss">read_write</span><span·class="p">,</span><span·class="w">
1040 ·················</span><span·class="p"·data-group-id="0985808678-39">{</span><span·class="p"·data-group-id="0985808678-40">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0985808678-40">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·853879e95ab77a3ae0d51012094c5569840ccb38a7f5a0858d054eae33c700b6·...·]-39">}</span><span·class="p">,</span><span·class="w">1040 ·················</span><span·class="p"·data-group-id="0157363850-39">{</span><span·class="p"·data-group-id="0157363850-40">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0157363850-40">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·0a8e0d2877da5836c2cf5d86d96b01008b25a1eecc2bcf9a95caba6d9afd313c·...·]-39">}</span><span·class="p">,</span><span·class="w">
1041 ·················</span><span·class="p"·data-group-id="0985808678-42">{</span><span·class="p"·data-group-id="0985808678-43">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0985808678-43">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·d1ea67085b9ebd7c07b12da8ed6443587684e9119104cfd4b7e6d67572fe62a8·...·]-42">}</span><span·class="p">,</span><span·class="w">1041 ·················</span><span·class="p"·data-group-id="0157363850-42">{</span><span·class="p"·data-group-id="0157363850-43">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0157363850-43">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·1e625d51e6d01fd13055b766a26960103091a990ad344fa0b7f7ddf13c0dc114·...·]-42">}</span><span·class="p">,</span><span·class="w">
1042 ·················</span><span·class="p"·data-group-id="0985808678-45">{</span><span·class="p"·data-group-id="0985808678-46">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0985808678-46">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·425ead093d2e0db796a2eb0c958f6ada4e493e8c564ad9d00f14b57a31569c3a·...·]-45">}</span><span·class="p">,</span><span·class="w">1042 ·················</span><span·class="p"·data-group-id="0157363850-45">{</span><span·class="p"·data-group-id="0157363850-46">{</span><span·class="mi">2010</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0157363850-46">}</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·864e61e94276eaf5544033bf640cd8651d620dedad942b8ea4cc720742ecd264·...·]-45">}</span><span·class="p">,</span><span·class="w">
1043 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0985808678-38">}</span><span·class="p"·data-group-id="0985808678-36">}</span><span·class="p"·data-group-id="0985808678-23">]</span><span·class="p"·data-group-id="0985808678-22">}</span><span·class="gp·unselectable">1043 ·················</span><span·class="mi">54</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0157363850-38">}</span><span·class="p"·data-group-id="0157363850-36">}</span><span·class="p"·data-group-id="0157363850-23">]</span><span·class="p"·data-group-id="0157363850-22">}</span><span·class="gp·unselectable">
1044 &gt;·</span><span·class="p"·data-group-id="0985808678-48">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0985808678-49">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span[·...·truncated·by·diffoscope;·len:·835,·SHA:·2084de322286779a76ab11ed1abec1ca7e9b9452fd55d29b4045bbe6d85b0c7b·...·]-50">)</span><span·class="p">.</span><span·class="w">1044 &gt;·</span><span·class="p"·data-group-id="0157363850-48">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0157363850-49">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span[·...·truncated·by·diffoscope;·len:·835,·SHA:·57b0d04a8371edc430595f0f36cc55d236dceece413dcccf145f2d5999223b6a·...·]-50">)</span><span·class="p">.</span><span·class="w">
1045 </span><span·class="p"·data-group-id="0985808678-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0985808678-54">{</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">,</span><span·class="w">1045 </span><span·class="p"·data-group-id="0157363850-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0157363850-54">{</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">,</span><span·class="w">
1046 ·····</span><span·class="p"·data-group-id="0985808678-55">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">74</span><span·class="p">,</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">171</span><span·class="p">,</span><span·class="mi">39</span><span·class="p">,</span><span·class="mi">212</span><span·class="p">,</span><span·class="mi">26</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">1046 ·····</span><span·class="p"·data-group-id="0157363850-55">&lt;&lt;</span><span·class="mi">80</span><span·class="p">,</span><span·class="mi">75</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">20</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">74</span><span·class="p">,</span><span·class="mi">152</span><span·class="p">,</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">60</span><span·class="p">,</span><span·class="mi">171</span><span·class="p">,</span><span·class="mi">39</span><span·class="p">,</span><span·class="mi">212</span><span·class="p">,</span><span·class="mi">26</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
1047 ·······</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0985808678-55">&gt;&gt;</span><span·class="p"·data-group-id="0985808678-54">}</span><span·class="p"·data-group-id="0985808678-53">}</span><span·class="gp·unselectable">1047 ·······</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0157363850-55">&gt;&gt;</span><span·class="p"·data-group-id="0157363850-54">}</span><span·class="p"·data-group-id="0157363850-53">}</span><span·class="gp·unselectable">
1048 &gt;·</span><span·class="k">catch</span><span·class="w">·</span><span·class="nc">zip</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="0985808678-56">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0985808678-57">(</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·1432,·SHA:·977a2b5b4ca800f72f7c353e6a83e73feeabebbeb4feaab713d2aae2ccbd497f·...·]-56">)</span><span·class="p">.</span><span·class="w">1048 &gt;·</span><span·class="k">catch</span><span·class="w">·</span><span·class="nc">zip</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="0157363850-56">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0157363850-57">(</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·1432,·SHA:·9a770a6cbfd6e752e5ca22340f126f09a630a270604914e4adfd45c0ed6b1e86·...·]-56">)</span><span·class="p">.</span><span·class="w">
1049 </span><span·class="p"·data-group-id="0985808678-63">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="0985808678-63">&gt;&gt;</span></code></pre>1049 </span><span·class="p"·data-group-id="0157363850-63">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="0157363850-63">&gt;&gt;</span></code></pre>
1050 ··</section>1050 ··</section>
1051 </section>1051 </section>
1052 <section·class="detail"·id="list_dir/1">1052 <section·class="detail"·id="list_dir/1">
  
1053 ··<div·class="detail-header">1053 ··<div·class="detail-header">
1054 ····<a·href="#list_dir/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1054 ····<a·href="#list_dir/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1055 ······<i·class="ri-link-m"·aria-hidden="true"></i>1055 ······<i·class="ri-link-m"·aria-hidden="true"></i>
8.92 KB
./usr/share/doc/erlang-doc/html/lib/syntax_tools-3.2.1/doc/html/erl_syntax.html
    
Offset 6602, 18 lines modifiedOffset 6602, 18 lines modified
  
6602 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_postcomments(<a·href="#t:syntaxTree/0">syntaxTree</a>())·->·[<a·href="#t:syntaxTree/0">syntaxTree</a>()].</pre>6602 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_postcomments(<a·href="#t:syntaxTree/0">syntaxTree</a>())·->·[<a·href="#t:syntaxTree/0">syntaxTree</a>()].</pre>
  
6603 ······</div>6603 ······</div>
  
6604 <p>Returns·the·associated·post-comments·of·a·node.</p><p>This·is·a·possibly·empty·list·of·abstract·comments,·in·top-down6604 <p>Returns·the·associated·post-comments·of·a·node.</p><p>This·is·a·possibly·empty·list·of·abstract·comments,·in·top-down
6605 textual·order.·When·the·code·is·formatted,·post-comments·are·typically6605 textual·order.·When·the·code·is·formatted,·post-comments·are·typically
6606 displayed·to·the·right·of·and/or·below·the·node.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3366033237-1">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="3366033237-1">}</span><span·class="w">·····</span><span·class="c1">%·Post-comment·of·tuple</span></code></pre><p>If·possible,·the·comment·should·be·moved·past·any·following·separator·characters6606 displayed·to·the·right·of·and/or·below·the·node.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7383869177-1">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Y</span><span·class="p"·data-group-id="7383869177-1">}</span><span·class="w">·····</span><span·class="c1">%·Post-comment·of·tuple</span></code></pre><p>If·possible,·the·comment·should·be·moved·past·any·following·separator·characters
6607 on·the·same·line,·rather·than·placing·the·separators·on·the·following·line.6607 on·the·same·line,·rather·than·placing·the·separators·on·the·following·line.
6608 For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="0211714785-1">(</span><span·class="p"·data-group-id="0211714785-2">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Xs</span><span·class="p"·data-group-id="0211714785-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·106,·SHA:·0c6901ee79dd2286c8cf663bdabc16269b4001b05f9f6aaf3b3f15d7ed09813e·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">6608 For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="9142229448-1">(</span><span·class="p"·data-group-id="9142229448-2">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Xs</span><span·class="p"·data-group-id="9142229448-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·106,·SHA:·2038962fe0158f9f2938d243aad9be243b4041f445630be25f0828aed2e56945·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
6609 ····</span><span·class="nf">foo</span><span·class="p"·data-group-id="0211714785-3">(</span><span·class="n">Xs</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">bar</span><span·class="p"·data-group-id="0211714785-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="0211714785-4">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·c99afb0d2d37ce54f8c439ed34db75af1ee866bbf310338319f436d763b95fc4·...·]-3">)</span><span·class="p">;</span><span·class="w">·····</span><span·class="c1">%·Post-comment·of·&#39;bar(X)&#39;·node</span><span·class="w">6609 ····</span><span·class="nf">foo</span><span·class="p"·data-group-id="9142229448-3">(</span><span·class="n">Xs</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">bar</span><span·class="p"·data-group-id="9142229448-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="9142229448-4">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·349ee7fe95a097416d22f91da292a3ba19cebe04b96f716d708359a5475948b8·...·]-3">)</span><span·class="p">;</span><span·class="w">·····</span><span·class="c1">%·Post-comment·of·&#39;bar(X)&#39;·node</span><span·class="w">
6610 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>(where·the·comment·is·moved·past·the·rightmost·&quot;<code·class="inline">)</code>&quot;·and·the·&quot;<code·class="inline">;</code>&quot;).</p><p><em>See·also:·</em><a·href="#comment/2"><code·class="inline">comment/2</code></a>,·<a·href="#get_attrs/1"><code·class="inline">get_attrs/1</code></a>,·<a·href="#get_precomments/1"><code·class="inline">get_precomments/1</code></a>,6610 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>(where·the·comment·is·moved·past·the·rightmost·&quot;<code·class="inline">)</code>&quot;·and·the·&quot;<code·class="inline">;</code>&quot;).</p><p><em>See·also:·</em><a·href="#comment/2"><code·class="inline">comment/2</code></a>,·<a·href="#get_attrs/1"><code·class="inline">get_attrs/1</code></a>,·<a·href="#get_precomments/1"><code·class="inline">get_precomments/1</code></a>,
6611 <a·href="#set_postcomments/2"><code·class="inline">set_postcomments/2</code></a>.</p>6611 <a·href="#set_postcomments/2"><code·class="inline">set_postcomments/2</code></a>.</p>
6612 ··</section>6612 ··</section>
6613 </section>6613 </section>
6614 <section·class="detail"·id="get_precomments/1">6614 <section·class="detail"·id="get_precomments/1">
  
6615 ··<div·class="detail-header">6615 ··<div·class="detail-header">
Offset 6636, 18 lines modifiedOffset 6636, 18 lines modified
6636 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_precomments(<a·href="#t:syntaxTree/0">syntaxTree</a>())·->·[<a·href="#t:syntaxTree/0">syntaxTree</a>()].</pre>6636 ··········<pre·translate="no"><span·class="attribute">-spec</span>·get_precomments(<a·href="#t:syntaxTree/0">syntaxTree</a>())·->·[<a·href="#t:syntaxTree/0">syntaxTree</a>()].</pre>
  
6637 ······</div>6637 ······</div>
  
6638 <p>Returns·the·associated·pre-comments·of·a·node.</p><p>This·is·a·possibly·empty·list·of·abstract·comments,·in·top-down6638 <p>Returns·the·associated·pre-comments·of·a·node.</p><p>This·is·a·possibly·empty·list·of·abstract·comments,·in·top-down
6639 textual·order.·When·the·code·is·formatted,·pre-comments·are·typically6639 textual·order.·When·the·code·is·formatted,·pre-comments·are·typically
6640 displayed·directly·above·the·node.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·Pre-comment·of·function</span><span·class="w">6640 displayed·directly·above·the·node.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·Pre-comment·of·function</span><span·class="w">
6641 </span><span·class="nf">foo</span><span·class="p"·data-group-id="3898171417-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="3898171417-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3898171417-2">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="3898171417-2">}</span><span·class="p">.</span></code></pre><p>If·possible,·the·comment·should·be·moved·before·any·preceding·separator 
6642 characters·on·the·same·line.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="0447490352-1">(</span><span·class="p"·data-group-id="0447490352-2">[</span><span·class="n">X</span><span·[·...·truncated·by·diffoscope;·len:·265,·SHA:·38c2877865e90281acb2800264723cbc9a78195d8fbe0400c742e93c664256b1·...·]6641 </span><span·class="nf">foo</span><span·class="p"·data-group-id="0985687902-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="0985687902-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·300,·SHA:·4f80fd1023b099b57a0af0a4698b1a19dd0dd9a92fb67087ebb494a94068902b·...·]
 6642 characters·on·the·same·line.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">foo</span><span·class="p"·data-group-id="9125091153-1">(</span><span·class="p"·data-group-id="9125091153-2">[</span><span·class="n">X</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Xs</span><span·class="p"·data-group-id="9125091153-2">]</span><span·class="p"·data-group-id="9125091153-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
6643 ····</span><span·class="c1">%·Pre-comment·of·&#39;bar(X)&#39;·node</span><span·class="w">6643 ····</span><span·class="c1">%·Pre-comment·of·&#39;bar(X)&#39;·node</span><span·class="w">
6644 ····</span><span·class="p"·data-group-id="0447490352-3">[</span><span·class="nf">bar</span><span·class="p"·data-group-id="0447490352-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="0447490352-4">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·194,·SHA:·387f4ac1a6abb6a2c0751bc61000788f06bffdff8499faad5a80b3065e76bfb1·...·]-3">]</span><span·class="p">;</span><span·class="w">6644 ····</span><span·class="p"·data-group-id="9125091153-3">[</span><span·class="nf">bar</span><span·class="p"·data-group-id="9125091153-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="9125091153-4">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·194,·SHA:·b357be8a71cf589d33870ca6f9efa2fcb307aba4172f380e48d35856ceb8e772·...·]-3">]</span><span·class="p">;</span><span·class="w">
6645 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>(where·the·comment·is·moved·before·the·&quot;<code·class="inline">[</code>&quot;).</p><p><em>See·also:·</em><a·href="#comment/2"><code·class="inline">comment/2</code></a>,·<a·href="#get_attrs/1"><code·class="inline">get_attrs/1</code></a>,·<a·href="#get_postcomments/1"><code·class="inline">get_postcomments/1</code></a>,6645 </span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>(where·the·comment·is·moved·before·the·&quot;<code·class="inline">[</code>&quot;).</p><p><em>See·also:·</em><a·href="#comment/2"><code·class="inline">comment/2</code></a>,·<a·href="#get_attrs/1"><code·class="inline">get_attrs/1</code></a>,·<a·href="#get_postcomments/1"><code·class="inline">get_postcomments/1</code></a>,
6646 <a·href="#set_precomments/2"><code·class="inline">set_precomments/2</code></a>.</p>6646 <a·href="#set_precomments/2"><code·class="inline">set_precomments/2</code></a>.</p>
6647 ··</section>6647 ··</section>
6648 </section>6648 </section>
6649 <section·class="detail"·id="has_comments/1">6649 <section·class="detail"·id="has_comments/1">
  
6650 ··<div·class="detail-header">6650 ··<div·class="detail-header">
42.2 KB
./usr/share/doc/erlang-doc/html/lib/syntax_tools-3.2.1/doc/html/merl.html
    
Offset 134, 38 lines modifiedOffset 134, 38 lines modified
134 Merl·itself,·see·the·documentation·of·<a·href="erl_syntax.html"><code·class="inline">erl_syntax</code></a>.</p><h3·id="module-quick-start"·class="section-heading">134 Merl·itself,·see·the·documentation·of·<a·href="erl_syntax.html"><code·class="inline">erl_syntax</code></a>.</p><h3·id="module-quick-start"·class="section-heading">
135 ··<a·href="#module-quick-start"·class="hover-link">135 ··<a·href="#module-quick-start"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Quick·start</span>138 ··<span·class="text">Quick·start</span>
139 </h3>139 </h3>
140 <p>To·enable·the·full·power·of·Merl,·your·module·needs·to·include·the·Merl·header140 <p>To·enable·the·full·power·of·Merl,·your·module·needs·to·include·the·Merl·header
141 file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="5431262983-1">(</span><span·class="s">&quot;syntax_tools/include/merl.hrl&quot;</span><span·class="p"·data-group-id="5431262983-1">)</span><span·class="p">.</span></code></pre><p>Then,·you·can·use·the·<code·class="inline">?Q(Text)</code>·macros·in·your·code·to·create·ASTs·or·match·on141 file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="9482271611-1">(</span><span·class="s">&quot;syntax_tools/include/merl.hrl&quot;</span><span·class="p"·data-group-id="9482271611-1">)</span><span·class="p">.</span></code></pre><p>Then,·you·can·use·the·<code·class="inline">?Q(Text)</code>·macros·in·your·code·to·create·ASTs·or·match·on
142 existing·ASTs.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tuple</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0400490763-1">(</span><span·class="s">&quot;{foo,·42}&quot;</span><span·class="p"·data-group-id="0400490763-1">)</span><span·class="p">,</span><span·class="w">142 existing·ASTs.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tuple</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="6815889380-1">(</span><span·class="s">&quot;{foo,·42}&quot;</span><span·class="p"·data-group-id="6815889380-1">)</span><span·class="p">,</span><span·class="w">
143 </span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0400490763-2">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="0400490763-2">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Tuple</span><span·class="p">,</span><span·class="w">143 </span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="6815889380-2">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="6815889380-2">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Tuple</span><span·class="p">,</span><span·class="w">
144 </span><span·class="n">Call</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0400490763-3">(</span><span·class="s">&quot;foo:bar(_@Number)&quot;</span><span·class="p"·data-group-id="0400490763-3">)</span></code></pre><p>Calling·<code·class="inline">merl:print(Call)</code>·will·then·print·the·following·code:</p><pre><code·class="mak[·...·truncated·by·diffoscope;·len:·225,·SHA:·dd8bf5a60ef49b7934743a50eb310702a421e1bb9aa69dae2a9a7acb20eb867b·...·]-1">)</span></code></pre><p>The·<code·class="inline">?Q</code>·macros·turn·the·quoted·code·fragments·into·ASTs,·and·lifts144 </span><span·class="n">Call</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="6815889380-3">(</span><span·class="s">&quot;foo:bar(_@Number)&quot;</span><span·class="p"·data-group-id="6815889380-3">)</span></code></pre><p>Calling·<code·class="inline">merl:print(Call)</code>·will·then·print·the·following·code:</p><pre><code·class="mak[·...·truncated·by·diffoscope;·len:·225,·SHA:·a16471b972ef7d6af000b4f4c7b65edacf9dfd8c09ce8b23878e1fa036be6770·...·]-1">)</span></code></pre><p>The·<code·class="inline">?Q</code>·macros·turn·the·quoted·code·fragments·into·ASTs,·and·lifts
145 metavariables·such·as·<code·class="inline">_@Tuple</code>·and·<code·class="inline">_@Number</code>·to·the·level·of·your·Erlang·code,145 metavariables·such·as·<code·class="inline">_@Tuple</code>·and·<code·class="inline">_@Number</code>·to·the·level·of·your·Erlang·code,
146 so·you·can·use·the·corresponding·Erlang·variables·<code·class="inline">Tuple</code>·and·<code·class="inline">Number</code>·directly.146 so·you·can·use·the·corresponding·Erlang·variables·<code·class="inline">Tuple</code>·and·<code·class="inline">Number</code>·directly.
147 This·is·the·most·straightforward·way·to·use·Merl,·and·in·many·cases·it's·all·you147 This·is·the·most·straightforward·way·to·use·Merl,·and·in·many·cases·it's·all·you
148 need.</p><p>You·can·even·write·case·switches·using·<code·class="inline">?Q</code>·macros·as·patterns.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">AST</span><span·class="w">·</span><span·class="k">of</span><span·class="w">148 need.</p><p>You·can·even·write·case·switches·using·<code·class="inline">?Q</code>·macros·as·patterns.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">AST</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
149 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="2706006981-1">(</span><span·class="s">&quot;{foo,·_@Foo}&quot;</span><span·class="p"·data-group-id="2706006981-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·92,·SHA:·d8b6baa2519bacbbac321dfbe6c8bc97b5b62bd4bcbdc6d916cc38bbb6ad089b·...·]-2">)</span><span·class="p">;</span><span·class="w">149 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0966021842-1">(</span><span·class="s">&quot;{foo,·_@Foo}&quot;</span><span·class="p"·data-group-id="0966021842-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·92,·SHA:·1a8058e7a295cfbce0b7acabe2d6b4949fb015f6c31740002425ede121e875d8·...·]-2">)</span><span·class="p">;</span><span·class="w">
150 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="2706006981-3">(</span><span·class="s">&quot;{bar,·_@Bar}&quot;</span><span·class="p"·data-group-id="2706006981-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nc">erl_syntax</span><span·class="p">:</span><[·...·truncated·by·diffoscope;·len:·391,·SHA:·0ced7c25cbab7c9096a3f4a165ab875ddf519b0f49c5ab633236e71faae7d420·...·]-5">)</span><span·class="p">;</span><span·class="w">150 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0966021842-3">(</span><span·class="s">&quot;{bar,·_@Bar}&quot;</span><span·class="p"·data-group-id="0966021842-3">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nc">erl_syntax</span><span·class="p">:</span><[·...·truncated·by·diffoscope;·len:·391,·SHA:·6ba7d42fc21c0ace8ba40bdd8e1a010e5e6c186d18da74aebd86b5cc67499a43·...·]-5">)</span><span·class="p">;</span><span·class="w">
151 ····</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle_default</span><span·class="p"·data-group-id="2706006981-6">(</span><span·class="p"·data-group-id="2706006981-6">)</span><span·class="w">151 ····</span><span·class="p">_</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">handle_default</span><span·class="p"·data-group-id="0966021842-6">(</span><span·class="p"·data-group-id="0966021842-6">)</span><span·class="w">
152 </span><span·class="k">end</span></code></pre><p>These·case·switches·only·allow·<code·class="inline">?Q(...)</code>·or·<code·class="inline">_</code>·as·clause·patterns,·and·the152 </span><span·class="k">end</span></code></pre><p>These·case·switches·only·allow·<code·class="inline">?Q(...)</code>·or·<code·class="inline">_</code>·as·clause·patterns,·and·the
153 guards·may·contain·any·expressions,·not·just·Erlang·guard·expressions.</p><p>If·the·macro·<code·class="inline">MERL_NO_TRANSFORM</code>·is·defined·before·the·<code·class="inline">merl.hrl</code>·header·file·is153 guards·may·contain·any·expressions,·not·just·Erlang·guard·expressions.</p><p>If·the·macro·<code·class="inline">MERL_NO_TRANSFORM</code>·is·defined·before·the·<code·class="inline">merl.hrl</code>·header·file·is
154 included,·the·parse·transform·used·by·Merl·will·be·disabled,·and·in·that·case,154 included,·the·parse·transform·used·by·Merl·will·be·disabled,·and·in·that·case,
155 the·match·expressions·<code·class="inline">?Q(...)·=·...</code>,·case·switches·using·<code·class="inline">?Q(...)</code>·patterns,155 the·match·expressions·<code·class="inline">?Q(...)·=·...</code>,·case·switches·using·<code·class="inline">?Q(...)</code>·patterns,
156 and·automatic·metavariables·like·<code·class="inline">_@Tuple</code>·cannot·be·used·in·your·code,·but·the156 and·automatic·metavariables·like·<code·class="inline">_@Tuple</code>·cannot·be·used·in·your·code,·but·the
157 Merl·macros·and·functions·still·work.·To·do·metavariable·substitution,·you·need157 Merl·macros·and·functions·still·work.·To·do·metavariable·substitution,·you·need
158 to·use·the·<code·class="inline">?Q(Text,·Map)</code>·macro.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tuple</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="9659311000-1">(</span><span·class="s">&quot;{foo,·_@bar,·_@baz}&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9659311000-2">[</span><span·class="p"·data-group-id="9659311000-3">{</span><span·class="ss">bar</span>[·...·truncated·by·diffoscope;·len:·452,·SHA:·9e581ba60e594fd175c38b554cf6ce67ff1b8943ca2ed1e78d652954cbd37f8c·...·]-1">)</span></code></pre><p>The·text·given·to·a·<code·class="inline">?Q(Text)</code>·macro·can·be·either·a·single·string·or·a·list·of158 to·use·the·<code·class="inline">?Q(Text,·Map)</code>·macro.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Tuple</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="9242161942-1">(</span><span·class="s">&quot;{foo,·_@bar,·_@baz}&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9242161942-2">[</span><span·class="p"·data-group-id="9242161942-3">{</span><span·class="ss">bar</span>[·...·truncated·by·diffoscope;·len:·452,·SHA:·1c5bf5de4d8673db6144b39d06010b534f895b4d2951cbdc248d48dfd43a2b75·...·]-1">)</span></code></pre><p>The·text·given·to·a·<code·class="inline">?Q(Text)</code>·macro·can·be·either·a·single·string·or·a·list·of
159 strings.·The·latter·is·useful·when·you·need·to·split·a·long·expression·over159 strings.·The·latter·is·useful·when·you·need·to·split·a·long·expression·over
160 multiple·lines.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="9700947832-1">(</span><span·class="p"·data-group-id="9700947832-2">[</span><span·class="s">&quot;case·_@Expr·of&quot;</span><span·class="p">,</span><span·class="w">160 multiple·lines.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="5941907224-1">(</span><span·class="p"·data-group-id="5941907224-2">[</span><span·class="s">&quot;case·_@Expr·of&quot;</span><span·class="p">,</span><span·class="w">
161 ····</span><span·class="s">&quot;··{foo,·X}·-&gt;·f(X);&quot;</span><span·class="p">,</span><span·class="w">161 ····</span><span·class="s">&quot;··{foo,·X}·-&gt;·f(X);&quot;</span><span·class="p">,</span><span·class="w">
162 ····</span><span·class="s">&quot;··{bar,·X}·-&gt;·g(X)&quot;</span><span·class="p">,</span><span·class="w">162 ····</span><span·class="s">&quot;··{bar,·X}·-&gt;·g(X)&quot;</span><span·class="p">,</span><span·class="w">
163 ····</span><span·class="s">&quot;··_·-&gt;·h(X)&quot;</span><span·class="w">163 ····</span><span·class="s">&quot;··_·-&gt;·h(X)&quot;</span><span·class="w">
164 </span><span·class="s">&quot;end&quot;</span><span·class="p"·data-group-id="9700947832-2">]</span><span·class="p"·data-group-id="9700947832-1">)</span></code></pre><p>If·there·is·a·syntax·error·somewhere·in·the·text·(like·the·missing·semicolon·in164 </span><span·class="s">&quot;end&quot;</span><span·class="p"·data-group-id="5941907224-2">]</span><span·class="p"·data-group-id="5941907224-1">)</span></code></pre><p>If·there·is·a·syntax·error·somewhere·in·the·text·(like·the·missing·semicolon·in
165 the·second·clause·above)·this·allows·Merl·to·generate·an·error·message·pointing165 the·second·clause·above)·this·allows·Merl·to·generate·an·error·message·pointing
166 to·the·exact·line·in·your·source·code.·(Just·remember·to·comma-separate·the166 to·the·exact·line·in·your·source·code.·(Just·remember·to·comma-separate·the
167 strings·in·the·list,·otherwise·Erlang·will·concatenate·the·string·fragments·as167 strings·in·the·list,·otherwise·Erlang·will·concatenate·the·string·fragments·as
168 if·they·were·a·single·string.)</p><h3·id="module-metavariable-syntax"·class="section-heading">168 if·they·were·a·single·string.)</p><h3·id="module-metavariable-syntax"·class="section-heading">
169 ··<a·href="#module-metavariable-syntax"·class="hover-link">169 ··<a·href="#module-metavariable-syntax"·class="hover-link">
170 ····<i·class="ri-link-m"·aria-hidden="true"></i>170 ····<i·class="ri-link-m"·aria-hidden="true"></i>
171 ··</a>171 ··</a>
Offset 180, 73 lines modifiedOffset 180, 73 lines modified
180 note·that·globs·only·matter·for·matching;·when·doing·substitutions,·a·non-glob180 note·that·globs·only·matter·for·matching;·when·doing·substitutions,·a·non-glob
181 variable·can·be·used·to·inject·a·sequence·of·elements,·and·vice·versa.)</p><p>If·the·name·after·the·prefix·and·any·lift·and·glob·markers·is·<code·class="inline">_</code>·or·<code·class="inline">0</code>,·the181 variable·can·be·used·to·inject·a·sequence·of·elements,·and·vice·versa.)</p><p>If·the·name·after·the·prefix·and·any·lift·and·glob·markers·is·<code·class="inline">_</code>·or·<code·class="inline">0</code>,·the
182 variable·is·treated·as·an·anonymous·catch-all·pattern·in·matches.·For·example,182 variable·is·treated·as·an·anonymous·catch-all·pattern·in·matches.·For·example,
183 <code·class="inline">_@_</code>,·<code·class="inline">_@@_</code>,·<code·class="inline">_@__</code>,·or·even·<code·class="inline">_@__@_</code>.</p><p>Finally,·if·the·name·without·any·prefixes·or·lift/glob·markers·begins·with·an183 <code·class="inline">_@_</code>,·<code·class="inline">_@@_</code>,·<code·class="inline">_@__</code>,·or·even·<code·class="inline">_@__@_</code>.</p><p>Finally,·if·the·name·without·any·prefixes·or·lift/glob·markers·begins·with·an
184 uppercase·character,·as·in·<code·class="inline">_@Foo</code>·or·<code·class="inline">_@_@Foo</code>,·it·will·become·a·variable·on184 uppercase·character,·as·in·<code·class="inline">_@Foo</code>·or·<code·class="inline">_@_@Foo</code>,·it·will·become·a·variable·on
185 the·Erlang·level,·and·can·be·used·to·easily·deconstruct·and·construct·syntax185 the·Erlang·level,·and·can·be·used·to·easily·deconstruct·and·construct·syntax
186 trees:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">Input</span><span·class="w">·</span><span·class="k">of</span><span·class="w">186 trees:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">Input</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
187 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="5949868295-1">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="5949868295-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·2d2e29278ab1f179ab45d9dff3d935c74dc73ecb0670f14d88a215700ff184ff·...·]-2">)</span><span·class="p">;</span><span·class="w">187 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="2506352981-1">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="2506352981-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·38ef753ae1afd8ebdb31d26383289ab2345a60a2e1ea8c677d8cce363adc8bf2·...·]-2">)</span><span·class="p">;</span><span·class="w">
188 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>We·refer·to·these·as·&quot;automatic·metavariables&quot;.·If·in·addition·the·name·ends188 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>We·refer·to·these·as·&quot;automatic·metavariables&quot;.·If·in·addition·the·name·ends
189 with·<code·class="inline">@</code>,·as·in·<code·class="inline">_@Foo@</code>,·the·value·of·the·variable·as·an·Erlang·term·will·be189 with·<code·class="inline">@</code>,·as·in·<code·class="inline">_@Foo@</code>,·the·value·of·the·variable·as·an·Erlang·term·will·be
190 automatically·converted·to·the·corresponding·abstract·syntax·tree·when·used·to190 automatically·converted·to·the·corresponding·abstract·syntax·tree·when·used·to
191 construct·a·larger·tree.·For·example,·in:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bar</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0794111257-1">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="0794111257-1">}</span><span·class="p">,</span><span·class="w">191 construct·a·larger·tree.·For·example,·in:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Bar</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8447960376-1">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="8447960376-1">}</span><span·class="p">,</span><span·class="w">
192 </span><span·class="n">Foo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0794111257-2">(</span><span·class="s">&quot;{foo,·_@Bar@}&quot;</span><span·class="p"·data-group-id="0794111257-2">)</span></code></pre><p>(where·Bar·is·just·some·term,·not·a·syntax·tree)·the·result·<code·class="inline">Foo</code>·will·be·a192 </span><span·class="n">Foo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="8447960376-2">(</span><span·class="s">&quot;{foo,·_@Bar@}&quot;</span><span·class="p"·data-group-id="8447960376-2">)</span></code></pre><p>(where·Bar·is·just·some·term,·not·a·syntax·tree)·the·result·<code·class="inline">Foo</code>·will·be·a
193 syntax·tree·representing·<code·class="inline">{foo,·{bar,·42}}</code>.·This·avoids·the·need·for·temporary193 syntax·tree·representing·<code·class="inline">{foo,·{bar,·42}}</code>.·This·avoids·the·need·for·temporary
194 variables·in·order·to·inject·data,·as·in</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">TmpBar</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_syntax</span><span·class="p">:</span><span·class="nf">abstract</span><span·class="p"·data-group-id="5761367184-1">(</span><span·class="n">Bar</span><span·class="p"·data-group-id="5761367184-1">)</span><span·class="p">,</span><span·class="w">194 variables·in·order·to·inject·data,·as·in</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">TmpBar</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_syntax</span><span·class="p">:</span><span·class="nf">abstract</span><span·class="p"·data-group-id="7387410258-1">(</span><span·class="n">Bar</span><span·class="p"·data-group-id="7387410258-1">)</span><span·class="p">,</span><span·class="w">
195 </span><span·class="n">Foo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="5761367184-2">(</span><span·class="s">&quot;{foo,·_@TmpBar}&quot;</span><span·class="p"·data-group-id="5761367184-2">)</span></code></pre><p>If·the·context·requires·an·integer·rather·than·a·variable,·an·atom,·or·a·string,195 </span><span·class="n">Foo</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7387410258-2">(</span><span·class="s">&quot;{foo,·_@TmpBar}&quot;</span><span·class="p"·data-group-id="7387410258-2">)</span></code></pre><p>If·the·context·requires·an·integer·rather·than·a·variable,·an·atom,·or·a·string,
196 you·cannot·use·the·uppercase·convention·to·mark·an·automatic·metavariable.196 you·cannot·use·the·uppercase·convention·to·mark·an·automatic·metavariable.
197 Instead,·if·the·integer·(without·the·<code·class="inline">909</code>-prefix·and·lift/glob·markers)·ends197 Instead,·if·the·integer·(without·the·<code·class="inline">909</code>-prefix·and·lift/glob·markers)·ends
198 in·a·<code·class="inline">9</code>,·the·integer·will·become·an·Erlang-level·variable·prefixed·with·<code·class="inline">Q</code>,198 in·a·<code·class="inline">9</code>,·the·integer·will·become·an·Erlang-level·variable·prefixed·with·<code·class="inline">Q</code>,
199 and·if·it·ends·with·<code·class="inline">99</code>·it·will·also·be·automatically·abstracted.·For·example,199 and·if·it·ends·with·<code·class="inline">99</code>·it·will·also·be·automatically·abstracted.·For·example,
200 the·following·will·increment·the·arity·of·the·exported·function·f:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">Form</span><span·class="w">·</span><span·class="k">of</span><span·class="w">200 the·following·will·increment·the·arity·of·the·exported·function·f:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">case</span><span·class="w">·</span><span·class="n">Form</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
201 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="3043588922-1">(</span><span·class="s">&quot;-export([f/90919]).&quot;</span><span·class="p"·data-group-id="3043588922-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">201 ····</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="1353661099-1">(</span><span·class="s">&quot;-export([f/90919]).&quot;</span><span·class="p"·data-group-id="1353661099-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ········</span><span·class="n">Q2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_syntax</span><span·class="p">:</span><span·class="nf">concrete</span><span·class="p"·data-group-id="3043588922-2">(</span><span·class="n">Q1</span><span·class="p"·data-group-id="3043588922-2">)</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">202 ········</span><span·class="n">Q2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">erl_syntax</span><span·class="p">:</span><span·class="nf">concrete</span><span·class="p"·data-group-id="1353661099-2">(</span><span·class="n">Q1</span><span·class="p"·data-group-id="1353661099-2">)</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
203 ········</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="3043588922-3">(</span><span·class="s">&quot;-export([f/909299]).&quot;</span><span·class="p"·data-group-id="3043588922-3">)</span><span·class="p">;</span><span·class="w">203 ········</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="1353661099-3">(</span><span·class="s">&quot;-export([f/909299]).&quot;</span><span·class="p"·data-group-id="1353661099-3">)</span><span·class="p">;</span><span·class="w">
204 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h3·id="module-when-to-use-the-various-forms-of-metavariables"·class="section-heading">204 ····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h3·id="module-when-to-use-the-various-forms-of-metavariables"·class="section-heading">
205 ··<a·href="#module-when-to-use-the-various-forms-of-metavariables"·class="hover-link">205 ··<a·href="#module-when-to-use-the-various-forms-of-metavariables"·class="hover-link">
206 ····<i·class="ri-link-m"·aria-hidden="true"></i>206 ····<i·class="ri-link-m"·aria-hidden="true"></i>
207 ··</a>207 ··</a>
208 ··<span·class="text">When·to·use·the·various·forms·of·metavariables</span>208 ··<span·class="text">When·to·use·the·various·forms·of·metavariables</span>
209 </h3>209 </h3>
210 <p>Merl·can·only·parse·a·fragment·of·text·if·it·follows·the·basic·syntactical·rules210 <p>Merl·can·only·parse·a·fragment·of·text·if·it·follows·the·basic·syntactical·rules
211 of·Erlang.·In·most·places,·a·normal·Erlang·variable·can·be·used·as·metavariable,211 of·Erlang.·In·most·places,·a·normal·Erlang·variable·can·be·used·as·metavariable,
212 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="4975663500-1">(</span><span·class="s">&quot;f(_@Arg)&quot;</span><span·class="p"·data-group-id="4975663500-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expr</span></code></pre><p>but·if·you·want·to·match·on·something·like·the·name·of·a·function,·you·have·to212 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7904023430-1">(</span><span·class="s">&quot;f(_@Arg)&quot;</span><span·class="p"·data-group-id="7904023430-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Expr</span></code></pre><p>but·if·you·want·to·match·on·something·like·the·name·of·a·function,·you·have·to
213 use·an·atom·as·metavariable:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="9665364541-1">(</span><span·class="s">&quot;&#39;@Name&#39;()·-&gt;·_@@_.&quot;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Function</span></code></pre><p>(note·the·anonymous·glob·variable·<code·class="inline">_@@_</code>·to·ignore·the·function·body).</p><p>In·some·contexts,·only·a·string·or·an·integer·is·allowed.·For·example,·the213 use·an·atom·as·metavariable:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="9919486594-1">(</span><span·class="s">&quot;&#39;@Name&#39;()·-&gt;·_@@_.&quot;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Function</span></code></pre><p>(note·the·anonymous·glob·variable·<code·class="inline">_@@_</code>·to·ignore·the·function·body).</p><p>In·some·contexts,·only·a·string·or·an·integer·is·allowed.·For·example,·the
214 directive·<code·class="inline">-file(Name,·Line)</code>·requires·that·<code·class="inline">Name</code>·is·a·string·literal·and214 directive·<code·class="inline">-file(Name,·Line)</code>·requires·that·<code·class="inline">Name</code>·is·a·string·literal·and
215 <code·class="inline">Line</code>·an·integer·literal:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="4978735666-1">(</span><span·class="s">&quot;-file(\&quot;&#39;@File\&quot;,·9090).&quot;</span><span·class="p"·data-group-id="4978735666-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class=[·...·truncated·by·diffoscope;·len:·174,·SHA:·0926da245b18cb1007849e8b691be9fea0a52409f19d7cf6e1c77f55b5b66fca·...·]-2">)</span><span·class="p">)</span><span·class="p">.</span></code></pre><p>This·will·extract·the·string·literal·<code·class="inline">&quot;foo.erl&quot;</code>·into·the·variable·<code·class="inline">Foo</code>.·Note215 <code·class="inline">Line</code>·an·integer·literal:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="1920187169-1">(</span><span·class="s">&quot;-file(\&quot;&#39;@File\&quot;,·9090).&quot;</span><span·class="p"·data-group-id="1920187169-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class=[·...·truncated·by·diffoscope;·len:·174,·SHA:·0cd7cedc97297f4eaa97cb8f2e324862a066386e45c16445653c3f41d381229a·...·]-2">)</span><span·class="p">)</span><span·class="p">.</span></code></pre><p>This·will·extract·the·string·literal·<code·class="inline">&quot;foo.erl&quot;</code>·into·the·variable·<code·class="inline">Foo</code>.·Note
216 the·use·of·the·anonymous·variable·<code·class="inline">9090</code>·to·ignore·the·line·number.·To·match·and216 the·use·of·the·anonymous·variable·<code·class="inline">9090</code>·to·ignore·the·line·number.·To·match·and
217 also·bind·a·metavariable·that·must·be·an·integer·literal,·we·can·use·the217 also·bind·a·metavariable·that·must·be·an·integer·literal,·we·can·use·the
218 convention·of·ending·the·integer·with·a·9,·turning·it·into·a·Q-prefixed·variable218 convention·of·ending·the·integer·with·a·9,·turning·it·into·a·Q-prefixed·variable
219 on·the·Erlang·level·(see·the·previous·section).</p><h4>Globs</h4><p>Whenever·you·want·to·match·out·a·number·of·elements·in·a·sequence·(zero·or·more)219 on·the·Erlang·level·(see·the·previous·section).</p><h4>Globs</h4><p>Whenever·you·want·to·match·out·a·number·of·elements·in·a·sequence·(zero·or·more)
220 rather·than·a·fixed·set·of·elements,·you·need·to·use·a·glob.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="9678341103-1">(</span><span·class="s">&quot;{_@@Elements}&quot;</span><span·class="p"·data-group-id="9678341103-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="[·...·truncated·by·diffoscope;·len:·358,·SHA:·90a08e2c48e5150d55ea63b17db3ba18efa65fca5128b89bfbde8bb743865e9a·...·]-2">)</span></code></pre><p>will·bind·Elements·to·the·list·of·individual·syntax·trees·representing·the·atoms220 rather·than·a·fixed·set·of·elements,·you·need·to·use·a·glob.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7812541227-1">(</span><span·class="s">&quot;{_@@Elements}&quot;</span><span·class="p"·data-group-id="7812541227-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="[·...·truncated·by·diffoscope;·len:·358,·SHA:·57a086a5a4c1519890894fc18ae7b2289c10d3be807d78e98ce1ff596d6d9074·...·]-2">)</span></code></pre><p>will·bind·Elements·to·the·list·of·individual·syntax·trees·representing·the·atoms
221 <code·class="inline">a</code>,·<code·class="inline">b</code>,·and·<code·class="inline">c</code>.·This·can·also·be·used·with·static·prefix·and·suffix·elements221 <code·class="inline">a</code>,·<code·class="inline">b</code>,·and·<code·class="inline">c</code>.·This·can·also·be·used·with·static·prefix·and·suffix·elements
222 in·the·sequence.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7825792038-1">(</span><span·class="s">&quot;{a,·b,·_@@Elements}&quot;</span><span·class="p"·data-group-id="7825792038-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7825792038-2">(</span><span·class="p"·data-group-id="7825792038-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">d</span><span·class="p"·data-group-id="7825792038-3">}</span><span·class="p"·data-group-id="7825792038-2">)</span></code></pre><p>will·bind·Elements·to·the·list·of·the·<code·class="inline">c</code>·and·<code·class="inline">d</code>·subtrees,·and</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="3008709651-1">(</span><span·class="s">&quot;{_@@Elements,·c,·d}&quot;</span><span·class="p"·data-group-id="3008709651-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="3008709651-2">(</span><span·class="p"·data-group-id="3008709651-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">d</span><span·class="p"·data-group-id="3008709651-3">}</span><span·class="p"·data-group-id="3008709651-2">)</span></code></pre><p>will·bind·Elements·to·the·list·of·the·<code·class="inline">a</code>·and·<code·class="inline">b</code>·subtrees.·You·can·even·use 
223 plain·metavariables·in·the·prefix·or·suffix:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="5069949108-1">(</span><span·class="s">&quot;{_@First,·_@@Rest}&quot;</span><span·[·...·truncated·by·diffoscope;·len:·1421,·SHA:·562a0cb2cfa4b0023b8d54f74eb098b06b38a94d22c3c9627860a7c67465acba·...·]222 in·the·sequence.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="6035270600-1">(</span><span·class="s">&quot;{a,·b,·_@@Elements}&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1720,·SHA:·ae787f12e91d66e34caeea072684374d600bd589d745618985610fef7a41eb21·...·]
 223 plain·metavariables·in·the·prefix·or·suffix:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7383377539-1">(</span><span·class="s">&quot;{_@First,·_@@Rest}&quot;</span><span·class="p"·data-group-id="7383377539-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7383377539-2">(</span><span·class="p"·data-group-id="7383377539-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id="7383377539-3">}</span><span·class="p"·data-group-id="7383377539-2">)</span></code></pre><p>or</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0920552416-1">(</span><span·class="s">&quot;{_@@_,·_@Last}&quot;</span><span·class="p"·data-group-id="0920552416-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="0920552416-2">(</span><span·class="p"·data-group-id="0920552416-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id="0920552416-3">}</span><span·class="p"·data-group-id="0920552416-2">)</span></code></pre><p>(ignoring·all·but·the·last·element).·However,·you·cannot·have·two·globs·as·part
224 of·the·same·sequence.</p><h4>Lifted·metavariables</h4><p>In·some·cases,·the·Erlang·syntax·rules·make·it·impossible·to·place·a224 of·the·same·sequence.</p><h4>Lifted·metavariables</h4><p>In·some·cases,·the·Erlang·syntax·rules·make·it·impossible·to·place·a
225 metavariable·directly·where·you·would·like·it.·For·example,·you·cannot·write:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="5871901974-1">(</span><span·class="s">&quot;-export([_@@Name]).&quot;</span><span·class="p"·data-group-id="5871901974-1">)</span></code></pre><p>to·match·out·all·name/arity·pairs·in·the·export·list,·or·to·insert·a·list·of225 metavariable·directly·where·you·would·like·it.·For·example,·you·cannot·write:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="7945817103-1">(</span><span·class="s">&quot;-export([_@@Name]).&quot;</span><span·class="p"·data-group-id="7945817103-1">)</span></code></pre><p>to·match·out·all·name/arity·pairs·in·the·export·list,·or·to·insert·a·list·of
226 exports·in·a·declaration,·because·the·Erlang·parser·only·allows·elements·on·the226 exports·in·a·declaration,·because·the·Erlang·parser·only·allows·elements·on·the
227 form·<code·class="inline">A/I</code>·(where·<code·class="inline">A</code>·is·an·atom·and·<code·class="inline">I</code>·an·integer)·in·the·export·list.·A227 form·<code·class="inline">A/I</code>·(where·<code·class="inline">A</code>·is·an·atom·and·<code·class="inline">I</code>·an·integer)·in·the·export·list.·A
228 variable·like·the·above·is·not·allowed,·but·neither·is·a·single·atom·or·integer,228 variable·like·the·above·is·not·allowed,·but·neither·is·a·single·atom·or·integer,
229 so·<code·class="inline">'@@Name'</code>·or·<code·class="inline">909919</code>·would·not·work·either.</p><p>What·you·have·to·do·in·such·cases·is·to·write·your·metavariable·in·a229 so·<code·class="inline">'@@Name'</code>·or·<code·class="inline">909919</code>·would·not·work·either.</p><p>What·you·have·to·do·in·such·cases·is·to·write·your·metavariable·in·a
230 syntactically·valid·position,·and·use·lifting·markers·to·denote·where·it·should230 syntactically·valid·position,·and·use·lifting·markers·to·denote·where·it·should
231 really·apply,·as·in:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="6878197847-1">(</span><span·class="s">&quot;-export([&#39;@_@Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="6878197847-1">)</span></code></pre><p>This·causes·the·variable·to·be·lifted·(after·parsing)·to·the·next·higher·level231 really·apply,·as·in:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="3252190105-1">(</span><span·class="s">&quot;-export([&#39;@_@Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="3252190105-1">)</span></code></pre><p>This·causes·the·variable·to·be·lifted·(after·parsing)·to·the·next·higher·level
232 in·the·syntax·tree,·replacing·that·entire·subtree.·In·this·case,·the232 in·the·syntax·tree,·replacing·that·entire·subtree.·In·this·case,·the
233 <code·class="inline">'@_@Name'/0</code>·will·be·replaced·with·<code·class="inline">'@@Name'</code>,·and·the·<code·class="inline">/0</code>·part·was·just·used233 <code·class="inline">'@_@Name'/0</code>·will·be·replaced·with·<code·class="inline">'@@Name'</code>,·and·the·<code·class="inline">/0</code>·part·was·just·used
234 as·dummy·notation·and·will·be·discarded.</p><p>You·may·even·need·to·apply·lifting·more·than·once.·To·match·the·entire·export234 as·dummy·notation·and·will·be·discarded.</p><p>You·may·even·need·to·apply·lifting·more·than·once.·To·match·the·entire·export
235 list·as·a·single·syntax·tree,·you·can·write:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="3574181724-1">(</span><span·class="s">&quot;-export([&#39;@__Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="3574181724-1">)</span></code></pre><p>using·two·underscores,·but·with·no·glob·marker·this·time.·This·will·make·the235 list·as·a·single·syntax·tree,·you·can·write:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">?</span><span·class="n">Q</span><span·class="p"·data-group-id="5288377488-1">(</span><span·class="s">&quot;-export([&#39;@__Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="5288377488-1">)</span></code></pre><p>using·two·underscores,·but·with·no·glob·marker·this·time.·This·will·make·the
236 entire·<code·class="inline">['@__Name'/0]</code>·part·be·replaced·with·<code·class="inline">'@Name'</code>.</p><p>Sometimes,·the·tree·structure·of·a·code·fragment·is·not·very·obvious,·and·parts236 entire·<code·class="inline">['@__Name'/0]</code>·part·be·replaced·with·<code·class="inline">'@Name'</code>.</p><p>Sometimes,·the·tree·structure·of·a·code·fragment·is·not·very·obvious,·and·parts
237 of·the·structure·may·be·invisible·when·printed·as·source·code.·For·instance,·a237 of·the·structure·may·be·invisible·when·printed·as·source·code.·For·instance,·a
238 simple·function·definition·like·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">zero</span><span·class="p"·data-group-id="6638911039-1">(</span><span·class="p"·data-group-id="6638911039-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span></code></pre><p>consists·of·the·name·(the·atom·<code·class="inline">zero</code>),·and·a·list·of·clauses·containing·the238 simple·function·definition·like·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">zero</span><span·class="p"·data-group-id="5285503705-1">(</span><span·class="p"·data-group-id="5285503705-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">.</span></code></pre><p>consists·of·the·name·(the·atom·<code·class="inline">zero</code>),·and·a·list·of·clauses·containing·the
239 single·clause·<code·class="inline">()·-&gt;·0</code>.·The·clause·consists·of·an·argument·list·(empty),·a239 single·clause·<code·class="inline">()·-&gt;·0</code>.·The·clause·consists·of·an·argument·list·(empty),·a
240 guard·(empty),·and·a·body·(which·is·always·a·list·of·expressions)·containing·the240 guard·(empty),·and·a·body·(which·is·always·a·list·of·expressions)·containing·the
241 single·expression·<code·class="inline">0</code>.·This·means·that·to·match·out·the·name·and·the·list·of241 single·expression·<code·class="inline">0</code>.·This·means·that·to·match·out·the·name·and·the·list·of
242 clauses·of·any·function,·you'll·need·to·use·a·pattern·like242 clauses·of·any·function,·you'll·need·to·use·a·pattern·like
243 <code·class="inline">?Q(&quot;'@Name'()·-&gt;·_@_@Body.&quot;)</code>,·using·a·dummy·clause·whose·body·is·a·glob·lifted243 <code·class="inline">?Q(&quot;'@Name'()·-&gt;·_@_@Body.&quot;)</code>,·using·a·dummy·clause·whose·body·is·a·glob·lifted
244 one·level.</p><p>To·visualize·the·structure·of·a·syntax·tree,·you·can·use·the·function244 one·level.</p><p>To·visualize·the·structure·of·a·syntax·tree,·you·can·use·the·function
245 <code·class="inline">merl:show(T)</code>,·which·prints·a·summary.·For·example,·entering</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="2198537116-1">(</span><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">quote</span><span·class="p"·data-group-id="2198537116-2">(</span><span·class="s">&quot;inc(X,·Y)·when·Y·&gt;·0·-&gt;·X·+·Y.&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·ad97635d705deda611fd0ac1a2fef8fdd89574b8b0b6ab9a0d01fe8a9bb75d1c·...·]-1">)</span></code></pre><p>in·the·Erlang·shell·will·print·the·following·(where·the·<code·class="inline">+</code>·signs·separate245 <code·class="inline">merl:show(T)</code>,·which·prints·a·summary.·For·example,·entering</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="7976109757-1">(</span><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">quote</span><span·class="p"·data-group-id="7976109757-2">(</span><span·class="s">&quot;inc(X,·Y)·when·Y·&gt;·0·-&gt;·X·+·Y.&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·e7f89b8cf3ad35244ecfa9af8128c741571dfb2d3436fba3f87d20b1f97cec04·...·]-1">)</span></code></pre><p>in·the·Erlang·shell·will·print·the·following·(where·the·<code·class="inline">+</code>·signs·separate
246 groups·of·subtrees·on·the·same·level):</p><pre><code·class="text">function:·inc(X,·Y)·when·...·-&gt;·X·+·Y.246 groups·of·subtrees·on·the·same·level):</p><pre><code·class="text">function:·inc(X,·Y)·when·...·-&gt;·X·+·Y.
247 ··atom:·inc247 ··atom:·inc
248 ··+248 ··+
249 ··clause:·(X,·Y)·when·...·-&gt;·X·+·Y249 ··clause:·(X,·Y)·when·...·-&gt;·X·+·Y
250 ····variable:·X250 ····variable:·X
251 ····variable:·Y251 ····variable:·Y
252 ····+252 ····+
6.24 KB
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/getting_started.html
    
Offset 124, 17 lines modifiedOffset 124, 17 lines modified
  
124 ····<span>Examples</span>124 ····<span>Examples</span>
125 ··</h1>125 ··</h1>
  
126 <p>The·<a·href="tftp.html#start/1">start/1</a>·function·starts·a·daemon·process·listening·for·UDP126 <p>The·<a·href="tftp.html#start/1">start/1</a>·function·starts·a·daemon·process·listening·for·UDP
127 packets·on·a·port.·When·it·receives·a·request·for·read·or·write,·it·spawns·a127 packets·on·a·port.·When·it·receives·a·request·for·read·or·write,·it·spawns·a
128 temporary·server·process·handling·the·transfer.</p><p>This·is·a·simple·example·of·starting·the·TFTP·server·and·reading·the·content·of128 temporary·server·process·handling·the·transfer.</p><p>This·is·a·simple·example·of·starting·the·TFTP·server·and·reading·the·content·of
129 a·sample·file·using·the·TFTP·client.</p><p><em>Step·1.</em>·Create·a·sample·file·to·be·used·for·the·transfer:</p><pre><code·class="text">······$·echo·&quot;Erlang/OTP·21&quot;·&gt;·file.txt</code></pre><p><em>Step·2.</em>·Start·the·TFTP·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0427472917-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="0427472917-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·483,·SHA:·ea30b916a630d64b52aa2c06dd665f7371b17d6fc563313a71f10643099778c6·...·]-2">)</span><span·class="p">.</span><span·class="w">129 a·sample·file·using·the·TFTP·client.</p><p><em>Step·1.</em>·Create·a·sample·file·to·be·used·for·the·transfer:</p><pre><code·class="text">······$·echo·&quot;Erlang/OTP·21&quot;·&gt;·file.txt</code></pre><p><em>Step·2.</em>·Start·the·TFTP·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5271355848-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="5271355848-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·483,·SHA:·c09c19c2da91d379f496190165a4bb290cb3d8b2e68ebbc0278906008b69a916·...·]-2">)</span><span·class="p">.</span><span·class="w">
130 ······</span><span·class="p"·data-group-id="0427472917-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.65</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="0427472917-5">}</span>[·...·truncated·by·diffoscope;·len:·896,·SHA:·223128a6e75c3223b59cbfd2469469133737691c4d85fa100c9816dc5b0d5957·...·]-1">)</span><span·class="p">.</span><span·class="w">130 ······</span><span·class="p"·data-group-id="5271355848-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.65</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5271355848-5">}</span>[·...·truncated·by·diffoscope;·len:·896,·SHA:·3e5d2246f416ad07a32d820b5b208801b7116ee3a443968c2db1323aab07460b·...·]-1">)</span><span·class="p">.</span><span·class="w">
131 ······</span><span·class="p"·data-group-id="5245481579-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5245481579-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="5245481579-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·134d8f4395178fffe4456d146ea70d4e589d4dd1b9246f3c20d9c968796151eb·...·]-4">}</span></code></pre>131 ······</span><span·class="p"·data-group-id="9724374256-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9724374256-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="9724374256-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·0785131f0efa803270e58ef52ff7aa8eff2c94f321632a0ce5019b119501f457·...·]-4">}</span></code></pre>
132 </div>132 </div>
  
133 <div·class="bottom-actions"·id="bottom-actions">133 <div·class="bottom-actions"·id="bottom-actions">
134 ··<div·class="bottom-actions-item">134 ··<div·class="bottom-actions-item">
  
135 ······<a·href="introduction.html"·class="bottom-actions-button"·rel="prev">135 ······<a·href="introduction.html"·class="bottom-actions-button"·rel="prev">
136 ········<span·class="subheader">136 ········<span·class="subheader">
88.2 KB
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/tftp.epub
2.39 KB
zipinfo {}
    
Offset 1, 16 lines modifiedOffset 1, 16 lines modified
1 Zip·file·size:·28826·bytes,·number·of·entries:·141 Zip·file·size:·28825·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:53·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:34·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·10:53·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Feb-13·09:34·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx·····5937·bx·defN·25-Feb-13·10:53·OEBPS/tftp_logger.xhtml4 ?rw-r--r--··6.1·unx·····5937·bx·defN·25-Feb-13·09:34·OEBPS/tftp_logger.xhtml
5 ?rw-r--r--··6.1·unx····38407·bx·defN·25-Feb-13·10:53·OEBPS/tftp.xhtml5 ?rw-r--r--··6.1·unx····38407·bx·defN·25-Feb-13·09:34·OEBPS/tftp.xhtml
6 ?rw-r--r--··6.1·unx·····8733·bx·defN·25-Feb-13·10:53·OEBPS/notes.xhtml6 ?rw-r--r--··6.1·unx·····8733·bx·defN·25-Feb-13·09:34·OEBPS/notes.xhtml
7 ?rw-r--r--··6.1·unx·····1184·bx·defN·25-Feb-13·10:53·OEBPS/nav.xhtml7 ?rw-r--r--··6.1·unx·····1184·bx·defN·25-Feb-13·09:34·OEBPS/nav.xhtml
8 ?rw-r--r--··6.1·unx·····1908·bx·defN·25-Feb-13·10:53·OEBPS/introduction.xhtml8 ?rw-r--r--··6.1·unx·····1908·bx·defN·25-Feb-13·09:34·OEBPS/introduction.xhtml
9 ?rw-r--r--··6.1·unx·····3736·bx·defN·25-Feb-13·10:53·OEBPS/getting_started.xhtml9 ?rw-r--r--··6.1·unx·····3736·bx·defN·25-Feb-13·09:34·OEBPS/getting_started.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:53·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:34·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:53·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:34·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1787·bx·defN·25-Feb-13·10:53·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1787·bx·defN·25-Feb-13·09:34·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:53·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:34·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:53·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:34·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:53·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:34·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·83736·bytes·uncompressed,·26384·bytes·compressed:··68.5%16 14·files,·83736·bytes·uncompressed,·26383·bytes·compressed:··68.5%
75.1 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:53:00,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:34:22,·uncompressed·size·20,·method=store
3.1 KB
OEBPS/tftp.xhtml
    
Offset 25, 15 lines modifiedOffset 25, 15 lines modified
25 ······<section·id="moduledoc"·class="docstring">25 ······<section·id="moduledoc"·class="docstring">
26 <p>Trivial·FTP.</p><p>Interface·module·for·the·<code·class="inline">tftp</code>·application.</p><h2·id="module-overwiew"·class="section-heading">26 <p>Trivial·FTP.</p><p>Interface·module·for·the·<code·class="inline">tftp</code>·application.</p><h2·id="module-overwiew"·class="section-heading">
27 ··<a·href="#module-overwiew"·class="hover-link">27 ··<a·href="#module-overwiew"·class="hover-link">
28 ····<i·class="ri-link-m"·aria-hidden="true"></i>28 ····<i·class="ri-link-m"·aria-hidden="true"></i>
29 ··</a>29 ··</a>
30 ··<span·class="text">Overwiew</span>30 ··<span·class="text">Overwiew</span>
31 </h2>31 </h2>
32 <p>This·is·a·complete·implementation·of·the·following·IETF·standards:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">1350</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">The</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Protocol</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7331207038-1">(</samp><samp·class="ss">revision</samp><samp·class="w">·</samp><samp·class="mi">2</samp><samp·class="p"·data-group-id="7331207038-1">)</samp><samp·class="p">.</samp><samp·class="w">32 <p>This·is·a·complete·implementation·of·the·following·IETF·standards:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">1350</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">The</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Protocol</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6024514844-1">(</samp><samp·class="ss">revision</samp><samp·class="w">·</samp><samp·class="mi">2</samp><samp·class="p"·data-group-id="6024514844-1">)</samp><samp·class="p">.</samp><samp·class="w">
33 </samp><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">2347</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Option</samp><samp·class="w">·</samp><samp·class="n">Extension</samp><samp·class="p">.</samp><samp·class="w">33 </samp><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">2347</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Option</samp><samp·class="w">·</samp><samp·class="n">Extension</samp><samp·class="p">.</samp><samp·class="w">
34 </samp><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">2348</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Blocksize</samp><samp·class="w">·</samp><samp·class="n">Option</samp><samp·class="p">.</samp><samp·class="w">34 </samp><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">2348</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Blocksize</samp><samp·class="w">·</samp><samp·class="n">Option</samp><samp·class="p">.</samp><samp·class="w">
35 </samp><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">2349</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Timeout</samp><samp·class="w">·</samp><samp·class="n">Interval</samp><samp·class="w">·</samp><samp·class="ow">and</samp><samp·class="w">·</samp><samp·class="n">Transfer</samp><samp·class="w">·</samp><samp·class="n">Size</samp><samp·class="w">·</samp><samp·class="n">Options</samp><samp·class="p">.</samp></code></pre><p>The·only·feature·that·not·is·implemented·in·this·release·is35 </samp><samp·class="n">RFC</samp><samp·class="w">·</samp><samp·class="mi">2349</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">TFTP</samp><samp·class="w">·</samp><samp·class="n">Timeout</samp><samp·class="w">·</samp><samp·class="n">Interval</samp><samp·class="w">·</samp><samp·class="ow">and</samp><samp·class="w">·</samp><samp·class="n">Transfer</samp><samp·class="w">·</samp><samp·class="n">Size</samp><samp·class="w">·</samp><samp·class="n">Options</samp><samp·class="p">.</samp></code></pre><p>The·only·feature·that·not·is·implemented·in·this·release·is
36 the·&quot;netascii&quot;·transfer·mode.</p><p>The·<a·href="#start/1">start</a>·function·starts·a·daemon·process·which,·listens36 the·&quot;netascii&quot;·transfer·mode.</p><p>The·<a·href="#start/1">start</a>·function·starts·a·daemon·process·which,·listens
37 for·UDP·packets·on·a·port.·When·it·receives·a·request·for·read·or37 for·UDP·packets·on·a·port.·When·it·receives·a·request·for·read·or
38 write·it·spawns·a·temporary·server·process·which·handles·the·actual38 write·it·spawns·a·temporary·server·process·which·handles·the·actual
39 transfer·of·the·file.·On·the·client·side·the39 transfer·of·the·file.·On·the·client·side·the
5.97 KB
OEBPS/getting_started.xhtml
Max HTML report size reached
1.22 KB
OEBPS/content.opf
1.19 KB
OEBPS/content.opf
Max HTML report size reached
3.18 KB
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/tftp.html
    
Offset 130, 15 lines modifiedOffset 130, 15 lines modified
130 ····<section·id="moduledoc">130 ····<section·id="moduledoc">
131 <p>Trivial·FTP.</p><p>Interface·module·for·the·<code·class="inline">tftp</code>·application.</p><h2·id="module-overwiew"·class="section-heading">131 <p>Trivial·FTP.</p><p>Interface·module·for·the·<code·class="inline">tftp</code>·application.</p><h2·id="module-overwiew"·class="section-heading">
132 ··<a·href="#module-overwiew"·class="hover-link">132 ··<a·href="#module-overwiew"·class="hover-link">
133 ····<i·class="ri-link-m"·aria-hidden="true"></i>133 ····<i·class="ri-link-m"·aria-hidden="true"></i>
134 ··</a>134 ··</a>
135 ··<span·class="text">Overwiew</span>135 ··<span·class="text">Overwiew</span>
136 </h2>136 </h2>
137 <p>This·is·a·complete·implementation·of·the·following·IETF·standards:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">1350</span><span·class="p">,</span><span·class="w">·</span><span·class="n">The</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Protocol</span><span·class="w">·</span><span·class="p"·data-group-id="4302901722-1">(</span><span·class="ss">revision</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4302901722-1">)</span><span·class="p">.</span><span·class="w">137 <p>This·is·a·complete·implementation·of·the·following·IETF·standards:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">1350</span><span·class="p">,</span><span·class="w">·</span><span·class="n">The</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Protocol</span><span·class="w">·</span><span·class="p"·data-group-id="0016827221-1">(</span><span·class="ss">revision</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="0016827221-1">)</span><span·class="p">.</span><span·class="w">
138 </span><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">2347</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Option</span><span·class="w">·</span><span·class="n">Extension</span><span·class="p">.</span><span·class="w">138 </span><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">2347</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Option</span><span·class="w">·</span><span·class="n">Extension</span><span·class="p">.</span><span·class="w">
139 </span><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">2348</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Blocksize</span><span·class="w">·</span><span·class="n">Option</span><span·class="p">.</span><span·class="w">139 </span><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">2348</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Blocksize</span><span·class="w">·</span><span·class="n">Option</span><span·class="p">.</span><span·class="w">
140 </span><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">2349</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="w">·</span><span·class="n">Interval</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">Transfer</span><span·class="w">·</span><span·class="n">Size</span><span·class="w">·</span><span·class="n">Options</span><span·class="p">.</span></code></pre><p>The·only·feature·that·not·is·implemented·in·this·release·is140 </span><span·class="n">RFC</span><span·class="w">·</span><span·class="mi">2349</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TFTP</span><span·class="w">·</span><span·class="n">Timeout</span><span·class="w">·</span><span·class="n">Interval</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">·</span><span·class="n">Transfer</span><span·class="w">·</span><span·class="n">Size</span><span·class="w">·</span><span·class="n">Options</span><span·class="p">.</span></code></pre><p>The·only·feature·that·not·is·implemented·in·this·release·is
141 the·&quot;netascii&quot;·transfer·mode.</p><p>The·<a·href="#start/1">start</a>·function·starts·a·daemon·process·which,·listens141 the·&quot;netascii&quot;·transfer·mode.</p><p>The·<a·href="#start/1">start</a>·function·starts·a·daemon·process·which,·listens
142 for·UDP·packets·on·a·port.·When·it·receives·a·request·for·read·or142 for·UDP·packets·on·a·port.·When·it·receives·a·request·for·read·or
143 write·it·spawns·a·temporary·server·process·which·handles·the·actual143 write·it·spawns·a·temporary·server·process·which·handles·the·actual
144 transfer·of·the·file.·On·the·client·side·the144 transfer·of·the·file.·On·the·client·side·the
7.56 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/cover.html
    
Offset 1507, 15 lines modifiedOffset 1507, 15 lines modified
1507 ······</div>1507 ······</div>
  
1508 <p>Analyzes·one·or·more·modules·as·specified·by·<code·class="inline">Arg</code>.</p><p>If·<code·class="inline">Arg</code>·is·one·of·the·values·in·<a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,·this1508 <p>Analyzes·one·or·more·modules·as·specified·by·<code·class="inline">Arg</code>.</p><p>If·<code·class="inline">Arg</code>·is·one·of·the·values·in·<a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,·this
1509 call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse('_',·Arg,·function)</code></a>.</p><p>If·<code·class="inline">Arg</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·this1509 call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse('_',·Arg,·function)</code></a>.</p><p>If·<code·class="inline">Arg</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·this
1510 call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse('_',·coverage,·Arg)</code></a>.</p><p>Otherwise·<code·class="inline">Arg</code>·is·assumed·to·be·a·module·name,·and·this·call·is·equivalent1510 call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse('_',·coverage,·Arg)</code></a>.</p><p>Otherwise·<code·class="inline">Arg</code>·is·assumed·to·be·a·module·name,·and·this·call·is·equivalent
1511 to·<a·href="#analyse/3"><code·class="inline">analyse(Arg,·coverage,·function)</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>To·analyze·a·module·whose·name·overlaps·with·one·the·values·in1511 to·<a·href="#analyse/3"><code·class="inline">analyse(Arg,·coverage,·function)</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>To·analyze·a·module·whose·name·overlaps·with·one·the·values·in
1512 <a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>·or·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·the·module1512 <a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>·or·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·the·module
1513 name·has·to·be·in·a·list.·For·example,·to·analyze·a·module·named·<code·class="inline">calls</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="5100721798-1">(</span><span·class="p"·data-group-id="5100721798-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="5100721798-2">]</span><span·class="p"·data-group-id="5100721798-1">)</span><span·class="p">.</span></code></pre></section>1513 name·has·to·be·in·a·list.·For·example,·to·analyze·a·module·named·<code·class="inline">calls</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="2750716684-1">(</span><span·class="p"·data-group-id="2750716684-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="2750716684-2">]</span><span·class="p"·data-group-id="2750716684-1">)</span><span·class="p">.</span></code></pre></section>
1514 ··</section>1514 ··</section>
1515 </section>1515 </section>
1516 <section·class="detail"·id="analyse/2">1516 <section·class="detail"·id="analyse/2">
  
1517 ··<div·class="detail-header">1517 ··<div·class="detail-header">
1518 ····<a·href="#analyse/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1518 ····<a·href="#analyse/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1519 ······<i·class="ri-link-m"·aria-hidden="true"></i>1519 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1547, 15 lines modifiedOffset 1547, 15 lines modified
1547 <p>Analyzes·one·or·more·modules·as·specified·by·<code·class="inline">Arg1</code>·and·<code·class="inline">Arg2</code>.</p><p>If·<code·class="inline">Arg1</code>·is·one·of·the·values·in·<a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>·and1547 <p>Analyzes·one·or·more·modules·as·specified·by·<code·class="inline">Arg1</code>·and·<code·class="inline">Arg2</code>.</p><p>If·<code·class="inline">Arg1</code>·is·one·of·the·values·in·<a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>·and
1548 <code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·this1548 <code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·this
1549 call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse('_',·Arg1,·Arg2)</code></a>.</p><p>If·<code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,1549 call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse('_',·Arg1,·Arg2)</code></a>.</p><p>If·<code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,
1550 <code·class="inline">Arg1</code>·is·assumed·to·be·a·module·and·this·call·is·equivalent·to1550 <code·class="inline">Arg1</code>·is·assumed·to·be·a·module·and·this·call·is·equivalent·to
1551 <a·href="#analyse/3"><code·class="inline">analyse(Arg1,·Arg2,·function)</code></a>.</p><p>If·<code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·<code·class="inline">Arg1</code>·is1551 <a·href="#analyse/3"><code·class="inline">analyse(Arg1,·Arg2,·function)</code></a>.</p><p>If·<code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·<code·class="inline">Arg1</code>·is
1552 assumed·to·be·a·module·and·this·call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse(Arg1,·coverage,·Arg2)</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>To·analyze·a·module·whose·name·overlaps·with·one·of·the·values·in1552 assumed·to·be·a·module·and·this·call·is·equivalent·to·<a·href="#analyse/3"><code·class="inline">analyse(Arg1,·coverage,·Arg2)</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>To·analyze·a·module·whose·name·overlaps·with·one·of·the·values·in
1553 <a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,·the·module·name·needs·to·be·in·a1553 <a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,·the·module·name·needs·to·be·in·a
1554 list.·For·example,·to·analyze·a·module·named·<code·class="inline">calls</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="2261542743-1">(</span><span·class="p"·data-group-id="2261542743-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="2261542743-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">function</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·72b3fa4a8e3677c6514ccd4f1d58eabe471a8d11cb43bcc6f3a8d1d6fabddfd5·...·]-1">)</span><span·class="p">.</span></code></pre></section>1554 list.·For·example,·to·analyze·a·module·named·<code·class="inline">calls</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="7790225875-1">(</span><span·class="p"·data-group-id="7790225875-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="7790225875-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">function</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·29a82a57989f3ccfeb73a0385843383e2fb145adfd4b1ebbf807a166bab03f94·...·]-1">)</span><span·class="p">.</span></code></pre></section>
1555 ··</section>1555 ··</section>
1556 </section>1556 </section>
1557 <section·class="detail"·id="analyse/3">1557 <section·class="detail"·id="analyse/3">
  
1558 ··<div·class="detail-header">1558 ··<div·class="detail-header">
1559 ····<a·href="#analyse/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1559 ····<a·href="#analyse/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1560 ······<i·class="ri-link-m"·aria-hidden="true"></i>1560 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1650, 15 lines modifiedOffset 1650, 15 lines modified
  
1650 ······</div>1650 ······</div>
  
1651 <p>If·<code·class="inline">Arg</code>·is·a·list·of·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>1651 <p>If·<code·class="inline">Arg</code>·is·a·list·of·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>
1652 options,·this·call·is·equivalent·to·<a·href="#analyse_to_file/2"><code·class="inline">analyse_to_file('_',·Arg)</code></a>.</p><p>Otherwise·<code·class="inline">Arg</code>·is·assumed·to·be·a·module,·and·this·call·is·equivalent·to1652 options,·this·call·is·equivalent·to·<a·href="#analyse_to_file/2"><code·class="inline">analyse_to_file('_',·Arg)</code></a>.</p><p>Otherwise·<code·class="inline">Arg</code>·is·assumed·to·be·a·module,·and·this·call·is·equivalent·to
1653 <a·href="#analyse_to_file/2"><code·class="inline">analyse_to_file(Arg,·[])</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>To·analyze·a·module·of·the·name·<code·class="inline">html</code>·(which·overlaps·with·an·option1653 <a·href="#analyse_to_file/2"><code·class="inline">analyse_to_file(Arg,·[])</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>To·analyze·a·module·of·the·name·<code·class="inline">html</code>·(which·overlaps·with·an·option
1654 in·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>),·it·is·necessary·to1654 in·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>),·it·is·necessary·to
1655 use·<a·href="#analyse_to_file/2"><code·class="inline">cover:analyse_to_file/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse_to_file</span><span·class="p"·data-group-id="9159037090-1">(</span><span·class="p"·data-group-id="9159037090-2">[</span><span·class="ss">html</span><span·class="p"·data-group-id="9159037090-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9159037090-3">[</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·e229bf6c348515cc520a380c32b52080436719021bcc9faf36b8a26530344156·...·]-1">)</span><span·class="p">.</span></code></pre></section>1655 use·<a·href="#analyse_to_file/2"><code·class="inline">cover:analyse_to_file/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse_to_file</span><span·class="p"·data-group-id="4792066947-1">(</span><span·class="p"·data-group-id="4792066947-2">[</span><span·class="ss">html</span><span·class="p"·data-group-id="4792066947-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4792066947-3">[</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·27bc65037ba15fd00bd124a892d3a4aaa1181fc35e50bc7207489b79e4a970bd·...·]-1">)</span><span·class="p">.</span></code></pre></section>
1656 ··</section>1656 ··</section>
1657 </section>1657 </section>
1658 <section·class="detail"·id="analyse_to_file/2">1658 <section·class="detail"·id="analyse_to_file/2">
  
1659 ··<div·class="detail-header">1659 ··<div·class="detail-header">
1660 ····<a·href="#analyse_to_file/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1660 ····<a·href="#analyse_to_file/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1661 ······<i·class="ri-link-m"·aria-hidden="true"></i>1661 ······<i·class="ri-link-m"·aria-hidden="true"></i>
173 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/cover_chapter.html
    
Offset 142, 89 lines modifiedOffset 142, 89 lines modified
142 </h2>142 </h2>
143 <h3·id="example"·class="section-heading">143 <h3·id="example"·class="section-heading">
144 ··<a·href="#example"·class="hover-link">144 ··<a·href="#example"·class="hover-link">
145 ····<i·class="ri-link-m"·aria-hidden="true"></i>145 ····<i·class="ri-link-m"·aria-hidden="true"></i>
146 ··</a>146 ··</a>
147 ··<span·class="text">Example</span>147 ··<span·class="text">Example</span>
148 </h3>148 </h3>
149 <p>Assume·that·a·test·case·for·the·following·program·should·be·verified:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8936011356-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="8936011356-1">)</span><span·class="p">.</span><span·class="w">149 <p>Assume·that·a·test·case·for·the·following·program·should·be·verified:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8585136635-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="8585136635-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="8936011356-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="8936011356-2">)</span><span·class="p">.</span><span·class="w">150 </span><span·class="p">-</span><span·class="na">behaviour</span><span·class="p"·data-group-id="8585136635-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="8585136635-2">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="w">151 </span><span·class="w">
152 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8936011356-3">(</span><span·class="p"·data-group-id="8936011356-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·65faab168fcd2ffcacd0a7af1d8a4cf1a0ac37825b3a02d03be82c3269091a68·...·]-3">)</span><span·class="p">.</span><span·class="w">152 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8585136635-3">(</span><span·class="p"·data-group-id="8585136635-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·8b540999dbb8cce0cb360177f6267187d6d51bba14aa3bb4833a287259aaedba·...·]-3">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8936011356-5">(</span><span·class="p"·data-group-id="8936011356-6">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">/</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·c5250422bce21f578f487a2352e4f98d034621328df7339ee3008f4820946a45·...·]-5">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·client·interface</span><span·class="w">153 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8585136635-5">(</span><span·class="p"·data-group-id="8585136635-6">[</span><span·class="ss">alloc</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">/</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·c93f4783f990e12ab1276fa0a2cd80994675509d756d7a89ed7354a0bbde68dc·...·]-5">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·client·interface</span><span·class="w">
154 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8936011356-7">(</span><span·class="p"·data-group-id="8936011356-8">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·1f29f391125d57d6aa607fcc47b911e6b650c97b57135d3e3e4b892d50f2fb67·...·]-7">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·callback·functions</span><span·class="w">154 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8585136635-7">(</span><span·class="p"·data-group-id="8585136635-8">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·0a9312cfa76dbb4a8817c1a6f7af8913bea028c3d8a9fdf7a0fc38be0d442deb·...·]-7">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·callback·functions</span><span·class="w">
  
155 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="8936011356-9">(</span><span·class="p"·data-group-id="8936011356-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">155 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="8585136635-9">(</span><span·class="p"·data-group-id="8585136635-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
156 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="8936011356-10">(</span><span·class="p"·data-group-id="8936011356-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="8936011356-11">}</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·390,·SHA:·cd3b449cee2987726727e1f5ff91c06ed6e92090b07f4190226bc76fdd9a58f8·...·]-10">)</span><span·class="p">.</span><span·class="w">156 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="8585136635-10">(</span><span·class="p"·data-group-id="8585136635-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="8585136635-11">}</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·390,·SHA:·07fceccd9a357a27565baaa4439c8824644f44f1153d921ec518fc24afb5181f·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">stop</span><span·class="p"·data-group-id="8936011356-14">(</span><span·class="p"·data-group-id="8936011356-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">stop</span><span·class="p"·data-group-id="8585136635-14">(</span><span·class="p"·data-group-id="8585136635-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8936011356-15">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="8936011356-15">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8585136635-15">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">stop</span><span·class="p"·data-group-id="8585136635-15">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="c1">%%%-Client·interface·functions-------------------------------------------</span><span·class="w">159 </span><span·class="c1">%%%-Client·interface·functions-------------------------------------------</span><span·class="w">
  
160 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8936011356-16">(</span><span·class="p"·data-group-id="8936011356-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">160 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8585136635-16">(</span><span·class="p"·data-group-id="8585136635-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
161 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8936011356-17">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="8936011356-17">)</span><span·class="p">.</span><span·class="w">161 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8585136635-17">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">alloc</span><span·class="p"·data-group-id="8585136635-17">)</span><span·class="p">.</span><span·class="w">
  
162 </span><span·class="nf">free</span><span·class="p"·data-group-id="8936011356-18">(</span><span·class="n">Channel</span><span·class="p"·data-group-id="8936011356-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 </span><span·class="nf">free</span><span·class="p"·data-group-id="8585136635-18">(</span><span·class="n">Channel</span><span·class="p"·data-group-id="8585136635-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8936011356-19">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8936011356-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·76,·SHA:·771633fb8460881b31f9cfd9c55b32b27c9819b4b42c1edfc85c85dddf207867·...·]-19">)</span><span·class="p">.</span><span·class="w">163 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="8585136635-19">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8585136635-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·76,·SHA:·6e9dd7e12efebccc2ed415be56470361a5bd5b28b95936f1fd12dd36aa9ab7ab·...·]-19">)</span><span·class="p">.</span><span·class="w">
  
164 </span><span·class="c1">%%%-gen_server·callback·functions----------------------------------------</span><span·class="w">164 </span><span·class="c1">%%%-gen_server·callback·functions----------------------------------------</span><span·class="w">
  
165 </span><span·class="nf">init</span><span·class="p"·data-group-id="8936011356-21">(</span><span·class="p">_</span><span·class="n">Arg</span><span·class="p"·data-group-id="8936011356-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">165 </span><span·class="nf">init</span><span·class="p"·data-group-id="8585136635-21">(</span><span·class="p">_</span><span·class="n">Arg</span><span·class="p"·data-group-id="8585136635-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</span><span·class="p"·data-group-id="8936011356-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="nf">channels</span><span·class="p"·data-group-id="8936011356-23">(</span><span·class="p"·data-group-id="8936011356-23">)</span><span·class="p"·data-group-id="8936011356-22">}</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="p"·data-group-id="8585136635-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="nf">channels</span><span·class="p"·data-group-id="8585136635-23">(</span><span·class="p"·data-group-id="8585136635-23">)</span><span·class="p"·data-group-id="8585136635-22">}</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8936011356-24">(</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Client</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·0fe841329b3509a0196b9e3fe7a7cda0937f608feadcff496c1411198b6b6410·...·]-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8585136635-24">(</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Client</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·7fcec0c29f359e6167e76ae2357588d8c7cddf7951e791c3a742b85b013f0418·...·]-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ····</span><span·class="p"·data-group-id="8936011356-25">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="ss">normal</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="8936011356-25">}</span><span·class="p">;</span><span·class="w">168 ····</span><span·class="p"·data-group-id="8585136635-25">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="ss">normal</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="8585136635-25">}</span><span·class="p">;</span><span·class="w">
  
169 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8936011356-26">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Client</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·3c65a4f335d9649ca27208bed455857b87b8ed4285f037e9161822a8ecab14e0·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">169 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8585136635-26">(</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Client</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·b2a3cbdd0792c05cae329513952196b72f0220b457c92eb4bec04e424510267d·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ····</span><span·class="p"·data-group-id="8936011356-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="8936011356-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">alloc</spa[·...·truncated·by·diffoscope;·len:·128,·SHA:·02f2175f90ee64035cde59b2b4eb3f75aa7a44fff7a300c8afc78dafe97a7ed6·...·]-28">)</span><span·class="p">,</span><span·class="w">170 ····</span><span·class="p"·data-group-id="8585136635-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="8585136635-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">alloc</spa[·...·truncated·by·diffoscope;·len:·128,·SHA:·5a39d44b7c457e583ac490c0241b900ee01fd29a0817db9b5268eb8bfa80b5e4·...·]-28">)</span><span·class="p">,</span><span·class="w">
171 ····</span><span·class="p"·data-group-id="8936011356-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="p"·data-group-id="8936011356-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch</span><span·class="p"·data-group-id="8936011356-30">}</spa[·...·truncated·by·diffoscope;·len:·99,·SHA:·cb8009651e23c93fd0cab344a2fd0eaa44f986c5ddc818a5fbbc31fa5334498a·...·]-29">}</span><span·class="p">;</span><span·class="w">171 ····</span><span·class="p"·data-group-id="8585136635-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="p"·data-group-id="8585136635-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch</span><span·class="p"·data-group-id="8585136635-30">}</spa[·...·truncated·by·diffoscope;·len:·99,·SHA:·16c6accd98c787b957e6b080ff43364e2b23469c186a69c9dfefcd55afd0c2a8·...·]-29">}</span><span·class="p">;</span><span·class="w">
  
172 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8936011356-31">(</span><span·class="p"·data-group-id="8936011356-32">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·data-group-id="8936011356-32">}</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·177,·SHA:·a61fb1377b9aff4313db41adbe5fd2b760dc070942e70797a2da4da8b8368a66·...·]-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8585136635-31">(</span><span·class="p"·data-group-id="8585136635-32">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·data-group-id="8585136635-32">}</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·177,·SHA:·bd3c8191f04e76799ac1d504ed96e5c6ef8a452c642cd954c10241e5fec5c79d·...·]-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
173 ····</span><span·class="n">Channels2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="8936011356-33">(</span><span·class="n">Channel</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-group-id="8936011356-33">)</span><span·class="p">,</span><span·class="w">173 ····</span><span·class="n">Channels2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">free</span><span·class="p"·data-group-id="8585136635-33">(</span><span·class="n">Channel</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-group-id="8585136635-33">)</span><span·class="p">,</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="8936011356-34">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="8936011356-34">}</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="8585136635-34">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="8585136635-34">}</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="8936011356-35">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Channels</span><span·class="p"·data-group-id="8936011356-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="8585136635-35">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Channels</span><span·class="p"·data-group-id="8585136635-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">176 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="c1">%%%-Internal·functions---------------------------------------------------</span><span·class="w">177 </span><span·class="c1">%%%-Internal·functions---------------------------------------------------</span><span·class="w">
  
178 </span><span·class="nf">channels</span><span·class="p"·data-group-id="8936011356-36">(</span><span·class="p"·data-group-id="8936011356-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 </span><span·class="nf">channels</span><span·class="p"·data-group-id="8585136635-36">(</span><span·class="p"·data-group-id="8585136635-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="p"·data-group-id="8936011356-37">[</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="ss">ch3</span><span·class="p"·data-group-id="8936011356-37">]</span><span·class="p">.</span><span·class="w">179 ····</span><span·class="p"·data-group-id="8585136635-37">[</span><span·class="ss">ch1</span><span·class="p">,</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="ss">ch3</span><span·class="p"·data-group-id="8585136635-37">]</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8936011356-38">(</span><span·class="p"·data-group-id="8936011356-39">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="8936011356-39">]</span><span·class="p"·data-group-id="8936011356-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8585136635-38">(</span><span·class="p"·data-group-id="8585136635-39">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="8585136635-39">]</span><span·class="p"·data-group-id="8585136635-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="p"·data-group-id="8936011356-40">{</span><span·class="n">Channel</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="8936011356-40">}</span><span·class="p">;</span><span·class="w">181 ····</span><span·class="p"·data-group-id="8585136635-40">{</span><span·class="n">Channel</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="8585136635-40">}</span><span·class="p">;</span><span·class="w">
182 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8936011356-41">(</span><span·class="p"·data-group-id="8936011356-42">[</span><span·class="p"·data-group-id="8936011356-42">]</span><span·class="p"·data-group-id="8936011356-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8585136635-41">(</span><span·class="p"·data-group-id="8585136635-42">[</span><span·class="p"·data-group-id="8585136635-42">]</span><span·class="p"·data-group-id="8585136635-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
183 ····</span><span·class="ss">false</span><span·class="p">.</span><span·class="w">183 ····</span><span·class="ss">false</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">free</span><span·class="p"·data-group-id="8936011356-43">(</span><span·class="n">Channel</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-group-id="8936011356-43">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 </span><span·class="nf">free</span><span·class="p"·data-group-id="8585136635-43">(</span><span·class="n">Channel</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Channels</span><span·class="p"·data-group-id="8585136635-43">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="p"·data-group-id="8936011356-44">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="8936011356-44">]</span><span·class="p">.</span></code></pre><p>The·test·case·is·implemented·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7677157140-1">(</span><span·class="ss">test</span><span·class="p"·data-group-id="7677157140-1">)</span><span·class="p">.</span><span·class="w"> 
186 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7677157140-2">(</span><span·class="p"·data-group-id="7677157140-3">[</span><span·class="ss">s</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"[·...·truncated·by·diffoscope;·len:·81,·SHA:·d4e5a8fa2036249fcbee997702d189a64b5e3de9de02347b49f3966417535c80·...·]">)</span><span·class="p">.</span><span·class="w">185 ····</span><span·class="p"·data-group-id="8585136635-44">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="8585136635-44">]</span><span·class="p">.</span></code></pre><p>The·test·cas[·...·truncated·by·diffoscope;·len:·258,·SHA:·d7322190cdb490c8d37004a76a1624fbee459d00ec4abbee7c9c43dd2aeb5b31·...·]">)</span><span·class="p">.</span><span·class="w">
 186 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1272043487-2">(</span><span·class="p"·data-group-id="1272043487-3">[</span><span·class="ss">s</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1272043487-3">]</span><span·class="p"·data-group-id="1272043487-2">)</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">s</span><span·class="p"·data-group-id="7677157140-4">(</span><span·class="p"·data-group-id="7677157140-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">187 </span><span·class="nf">s</span><span·class="p"·data-group-id="1272043487-4">(</span><span·class="p"·data-group-id="1272043487-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
188 ····</span><span·class="p"·data-group-id="7677157140-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p"·data-group-id="7677157140-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·45f9fe52f5cfe9e777c67ac7c373ba6b47d64be4d01efffdce51d6c969df34b2·...·]-6">)</span><span·class="p">,</span><span·class="w">188 ····</span><span·class="p"·data-group-id="1272043487-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p"·data-group-id="1272043487-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·49cf392cb50ca1db286f43ce6e4a3646ff1c8798cdcd279de043a4810eee5b9e·...·]-6">)</span><span·class="p">,</span><span·class="w">
189 ····</span><span·class="p"·data-group-id="7677157140-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch1</span><span·class="p"·data-group-id="7677157140-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·145,·SHA:·8309146798480778d0682800108194019fe088084413223e56e83d538c6dad8e·...·]-8">)</span><span·class="p">,</span><span·class="w">189 ····</span><span·class="p"·data-group-id="1272043487-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch1</span><span·class="p"·data-group-id="1272043487-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·145,·SHA:·79816765fe9f69a5fa6fb18b69970c88b840403d9b1761a5c69181ad6cd1414c·...·]-8">)</span><span·class="p">,</span><span·class="w">
190 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><span·class="p">:</span><span·class="nf">free</span><span·class="p"·data-group-id="7677157140-9">(</span><span·class="n">Ch1</span><span·class="p"·data-group-id="7677157140-9">)</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><span·class="p">:</span><span·class="nf">free</span><span·class="p"·data-group-id="1272043487-9">(</span><span·class="n">Ch1</span><span·class="p"·data-group-id="1272043487-9">)</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="7677157140-10">(</span><span·class="p"·data-group-id="7677157140-10">)</span><span·class="p">.</span></code></pre><h3·id="preparation"·class="section-heading">191 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="1272043487-10">(</span><span·class="p"·data-group-id="1272043487-10">)</span><span·class="p">.</span></code></pre><h3·id="preparation"·class="section-heading">
192 ··<a·href="#preparation"·class="hover-link">192 ··<a·href="#preparation"·class="hover-link">
193 ····<i·class="ri-link-m"·aria-hidden="true"></i>193 ····<i·class="ri-link-m"·aria-hidden="true"></i>
194 ··</a>194 ··</a>
195 ··<span·class="text">Preparation</span>195 ··<span·class="text">Preparation</span>
196 </h3>196 </h3>
197 <p>First·of·all,·Cover·must·be·started.·This·spawns·a·process·which·owns·the·Cover197 <p>First·of·all,·Cover·must·be·started.·This·spawns·a·process·which·owns·the·Cover
198 database·where·all·coverage·data·will·be·stored.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5603521008-1">(</span><span·class="p"·data-group-id="5603521008-1">)</span><span·class="p">.</span><span·class="w">198 database·where·all·coverage·data·will·be·stored.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4056580115-1">(</span><span·class="p"·data-group-id="4056580115-1">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="p"·data-group-id="5603521008-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5603521008-2">}</span></code></pre><p>To·include·other·nodes·in·the·coverage·analysis,·use199 </span><span·class="p"·data-group-id="4056580115-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.90</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4056580115-2">}</span></code></pre><p>To·include·other·nodes·in·the·coverage·analysis,·use
200 <a·href="cover.html#start/1"><code·class="inline">cover:start/1</code></a>.·All·cover-compiled·modules·will·then·be·loaded·on·all200 <a·href="cover.html#start/1"><code·class="inline">cover:start/1</code></a>.·All·cover-compiled·modules·will·then·be·loaded·on·all
201 nodes,·and·data·from·all·nodes·will·be·summed·up·when·analysing.·For201 nodes,·and·data·from·all·nodes·will·be·summed·up·when·analysing.·For
202 simplicity·this·example·only·involves·the·current·node.</p><p>Before·any·analysis·can·take·place,·the·involved·modules·must·be202 simplicity·this·example·only·involves·the·current·node.</p><p>Before·any·analysis·can·take·place,·the·involved·modules·must·be
203 <em>cover-compiled</em>.·This·means·that·some·extra·information·is·added·to203 <em>cover-compiled</em>.·This·means·that·some·extra·information·is·added·to
204 the·module·before·beging·compiled·into·a·binary·and204 the·module·before·beging·compiled·into·a·binary·and
205 <a·href="cover_chapter.html#loading">loaded</a>.··The·source·file·of·the·module·is205 <a·href="cover_chapter.html#loading">loaded</a>.··The·source·file·of·the·module·is
206 not·affected·and·no·<code·class="inline">.beam</code>·file·is·created.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">compile_module</span><span·class="p"·data-group-id="2132885019-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="2132885019-1">)</span><span·class="p">.</span><span·class="w">206 not·affected·and·no·<code·class="inline">.beam</code>·file·is·created.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">compile_module</span><span·class="p"·data-group-id="4303569061-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="4303569061-1">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="2132885019-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="2132885019-2">}</span></code></pre><p>Each·time·a·function·in·the·cover-compiled·module·<code·class="inline">channel</code>·is·called,207 </span><span·class="p"·data-group-id="4303569061-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="4303569061-2">}</span></code></pre><p>Each·time·a·function·in·the·cover-compiled·module·<code·class="inline">channel</code>·is·called,
208 information·about·the·call·will·be·added·to·the·Cover·database.·Run·the·test208 information·about·the·call·will·be·added·to·the·Cover·database.·Run·the·test
209 case:</p><pre><code·class="text">3&gt;·test:s().209 case:</p><pre><code·class="text">3&gt;·test:s().
210 ok</code></pre><p>Cover·analysis·is·performed·by·examining·the·contents·of·the·Cover·database.·The210 ok</code></pre><p>Cover·analysis·is·performed·by·examining·the·contents·of·the·Cover·database.·The
211 output·is·determined·by·two·parameters,·<code·class="inline">Level</code>·and·<code·class="inline">Analysis</code>.·<code·class="inline">Analysis</code>·is211 output·is·determined·by·two·parameters,·<code·class="inline">Level</code>·and·<code·class="inline">Analysis</code>.·<code·class="inline">Analysis</code>·is
212 either·<code·class="inline">coverage</code>·or·<code·class="inline">calls</code>·and·determines·the·type·of·the·analysis.·<code·class="inline">Level</code>·is212 either·<code·class="inline">coverage</code>·or·<code·class="inline">calls</code>·and·determines·the·type·of·the·analysis.·<code·class="inline">Level</code>·is
213 either·<code·class="inline">module</code>,·<code·class="inline">function</code>,·<code·class="inline">clause</code>,·or·<code·class="inline">line</code>·and·determines·the·level·of·the213 either·<code·class="inline">module</code>,·<code·class="inline">function</code>,·<code·class="inline">clause</code>,·or·<code·class="inline">line</code>·and·determines·the·level·of·the
214 analysis.</p><h3·id="coverage-analysis"·class="section-heading">214 analysis.</p><h3·id="coverage-analysis"·class="section-heading">
Offset 234, 200 lines modifiedOffset 234, 200 lines modified
234 ··<span·class="text">Coverage·Analysis</span>234 ··<span·class="text">Coverage·Analysis</span>
235 </h3>235 </h3>
236 <p>Analysis·of·type·<code·class="inline">coverage</code>·is·used·to·find·out·how·much·of·the·code·has·been236 <p>Analysis·of·type·<code·class="inline">coverage</code>·is·used·to·find·out·how·much·of·the·code·has·been
237 executed·and·how·much·has·not·been·executed.·Coverage·is·represented·by·a·tuple237 executed·and·how·much·has·not·been·executed.·Coverage·is·represented·by·a·tuple
238 <code·class="inline">{Cov,NotCov}</code>,·where·<code·class="inline">Cov</code>·is·the·number·of·executable·lines·that·have·been238 <code·class="inline">{Cov,NotCov}</code>,·where·<code·class="inline">Cov</code>·is·the·number·of·executable·lines·that·have·been
239 executed·at·least·once·and·<code·class="inline">NotCov</code>·is·the·number·of·executable·lines·that·have239 executed·at·least·once·and·<code·class="inline">NotCov</code>·is·the·number·of·executable·lines·that·have
240 not·been·executed.</p><p>If·the·analysis·is·made·on·module·level,·the·result·is·given·for·the·entire240 not·been·executed.</p><p>If·the·analysis·is·made·on·module·level,·the·result·is·given·for·the·entire
241 module·as·a·tuple·<code·class="inline">{Module,{Cov,NotCov}}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="4253798923-1">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">module</span><span·class="p"·data-group-id="4253798923-1">)</span><span·class="p">.</span><span·class="w">241 module·as·a·tuple·<code·class="inline">{Module,{Cov,NotCov}}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="2284064604-1">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">module</span><span·class="p"·data-group-id="2284064604-1">)</span><span·class="p">.</span><span·class="w">
242 </span><span·class="p"·data-group-id="4253798923-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4253798923-3">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="p"·data-group-id="4253798923-4">{</span><span·class="mi">14</sp[·...·truncated·by·diffoscope;·len:·199,·SHA:·3e1432c5814a6406c839c32d424489c5017c5c00e3143b620fac0f4f6d16207e·...·]-2">}</span></code></pre><p>For·<code·class="inline">channel</code>,·the·result·shows·that·14·lines·in·the·module·are·covered·but·one242 </span><span·class="p"·data-group-id="2284064604-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2284064604-3">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="p"·data-group-id="2284064604-4">{</span><span·class="mi">14</sp[·...·truncated·by·diffoscope;·len:·199,·SHA:·c8181b7c1a3f85159546bdfe34b5610ca84f0a479315b0fa0095630000e18e8c·...·]-2">}</span></code></pre><p>For·<code·class="inline">channel</code>,·the·result·shows·that·14·lines·in·the·module·are·covered·but·one
243 line·is·not·covered.</p><p>If·the·analysis·is·made·on·function·level,·the·result·is·given·as·a·list·of243 line·is·not·covered.</p><p>If·the·analysis·is·made·on·function·level,·the·result·is·given·as·a·list·of
244 tuples·<code·class="inline">{Function,{Cov,NotCov}}</code>,·one·for·each·function·in·the·module.·A244 tuples·<code·class="inline">{Function,{Cov,NotCov}}</code>,·one·for·each·function·in·the·module.·A
245 function·is·specified·by·its·module·name,·function·name·and·arity:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="2715885123-1">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">function</span><span·class="p"·data-group-id="2715885123-1">)</span><span·class="p">.</span><span·class="w">245 function·is·specified·by·its·module·name,·function·name·and·arity:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="3549033508-1">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">function</span><span·class="p"·data-group-id="3549033508-1">)</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="2715885123-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2715885123-3">[</span><span·class="p"·data-group-id="2715885123-4">{</span><span·class="p"·data-group-id="2715885123-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·411,·SHA:·40fecbfeee8a7adbcf0eb59f77072f9afdd136d11d65d1217b80363737ccfc4b·...·]-4">}</span><span·class="p">,</span><span·class="w">246 </span><span·class="p"·data-group-id="3549033508-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3549033508-3">[</span><span·class="p"·data-group-id="3549033508-4">{</span><span·class="p"·data-group-id="3549033508-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·411,·SHA:·219fa4787c21c0e69b852b9bfd9381afb7cc759846701823629a30b4074a372e·...·]-4">}</span><span·class="p">,</span><span·class="w">
247 ·····</span><span·class="p"·data-group-id="2715885123-7">{</span><span·class="p"·data-group-id="2715885123-8">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">stop</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2715885123-8">}</s[·...·truncated·by·diffoscope;·len:·249,·SHA:·b072a05312a03dc47a13554750d2b605877bcbb97a3bfedbea57730025f2a4bf·...·]-7">}</span><span·class="p">,</span><span·class="w">247 ·····</span><span·class="p"·data-group-id="3549033508-7">{</span><span·class="p"·data-group-id="3549033508-8">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">stop</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3549033508-8">}</s[·...·truncated·by·diffoscope;·len:·249,·SHA:·c3e06e29e8143d0f73f3820ff0bd7739994715124124b43fb31971484d402f67·...·]-7">}</span><span·class="p">,</span><span·class="w">
248 ·····</span><span·class="p"·data-group-id="2715885123-10">{</span><span·class="p"·data-group-id="2715885123-11">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2715885123-11">[·...·truncated·by·diffoscope;·len:·255,·SHA:·d60a7c9dd36a7d4e9c62360ad6cebacaa3428e16ce57aa9c3f2ec8e8147fa1bc·...·]-10">}</span><span·class="p">,</span><span·class="w">248 ·····</span><span·class="p"·data-group-id="3549033508-10">{</span><span·class="p"·data-group-id="3549033508-11">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3549033508-11">[·...·truncated·by·diffoscope;·len:·255,·SHA:·05f35e77c4c8c1a567adbbd8e4ee415f7e4a57f16d408eb0ca9f784ae14f8b23·...·]-10">}</span><span·class="p">,</span><span·class="w">
249 ·····</span><span·class="p"·data-group-id="2715885123-13">{</span><span·class="p"·data-group-id="2715885123-14">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2715885123-14">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·6905b1b2b3993e189dc2e93fb1718c442de76cbc2cf3d115bb00f5a0d7d7b374·...·]-13">}</span><span·class="p">,</span><span·class="w">249 ·····</span><span·class="p"·data-group-id="3549033508-13">{</span><span·class="p"·data-group-id="3549033508-14">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3549033508-14">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·bbc58af76710b4d1cab4d13f19a451050ffaf611a141bf97b1c58170d2c42127·...·]-13">}</span><span·class="p">,</span><span·class="w">
250 ·····</span><span·class="p"·data-group-id="2715885123-16">{</span><span·class="p"·data-group-id="2715885123-17">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">init</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2715885123-17">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·c1c7dd503268fde9886470b250ba5fe9c7d874be842288c6007d6c27a1116e73·...·]-16">}</span><span·class="p">,</span><span·class="w">250 ·····</span><span·class="p"·data-group-id="3549033508-16">{</span><span·class="p"·data-group-id="3549033508-17">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">init</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3549033508-17">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·660a5c01051839b16cd0fbead9b9202418ed0d02c8b8b1fbd8d4bc959f801fed·...·]-16">}</span><span·class="p">,</span><span·class="w">
251 ·····</span><span·class="p"·data-group-id="2715885123-19">{</span><span·class="p"·data-group-id="2715885123-20">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="271588512[·...·truncated·by·diffoscope;·len:·261,·SHA:·2540b6cb4ccc568df7cabbd33b83252f025d499d6f4701c5c992ecb9de876a77·...·]-19">}</span><span·class="p">,</span><span·class="w">251 ·····</span><span·class="p"·data-group-id="3549033508-19">{</span><span·class="p"·data-group-id="3549033508-20">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="354903350[·...·truncated·by·diffoscope;·len:·261,·SHA:·6a2d0cbddc03340b4427be0ae0648fb2c3032ffa64f40176c8e58d648f90ad54·...·]-19">}</span><span·class="p">,</span><span·class="w">
252 ·····</span><span·class="p"·data-group-id="2715885123-22">{</span><span·class="p"·data-group-id="2715885123-23">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">terminate</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2715885123-[·...·truncated·by·diffoscope;·len:·259,·SHA:·9ca012358ab8fe724dd46330272297f4bbdc241ff677bff6d425eb157718f718·...·]-22">}</span><span·class="p">,</span><span·class="w">252 ·····</span><span·class="p"·data-group-id="3549033508-22">{</span><span·class="p"·data-group-id="3549033508-23">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">terminate</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3549033508-[·...·truncated·by·diffoscope;·len:·259,·SHA:·56cc224ffdd0aad7c05e42821a02fd9b15ef635f2bd8b9612993c6249b7c0354·...·]-22">}</span><span·class="p">,</span><span·class="w">
253 ·····</span><span·class="p"·data-group-id="2715885123-25">{</span><span·class="p"·data-group-id="2715885123-26">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">channels</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2715885123-2[·...·truncated·by·diffoscope;·len:·258,·SHA:·43adcf15e4bb13cd5a5397b7ad62018cb7e7639531bd5502a87805c601f679db·...·]-25">}</span><span·class="p">,</span><span·class="w">253 ·····</span><span·class="p"·data-group-id="3549033508-25">{</span><span·class="p"·data-group-id="3549033508-26">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">channels</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3549033508-2[·...·truncated·by·diffoscope;·len:·258,·SHA:·967ff0d53f68b59498f9dc204a82940d41f1c323e39c10d1a24077f5773f44ae·...·]-25">}</span><span·class="p">,</span><span·class="w">
254 ·····</span><span·class="p"·data-group-id="2715885123-28">{</span><span·class="p"·data-group-id="2715885123-29">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2715885123-29">[·...·truncated·by·diffoscope;·len:·255,·SHA:·3c190fd440b3068420ddf4385c26e3720233190b1f79bec70ad71d47df544b6e·...·]-28">}</span><span·class="p">,</span><span·class="w">254 ·····</span><span·class="p"·data-group-id="3549033508-28">{</span><span·class="p"·data-group-id="3549033508-29">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3549033508-29">[·...·truncated·by·diffoscope;·len:·255,·SHA:·2713b422a0a0dadd451091ea71fab985e9f5a1c07d1191f1c89820a16d48ac14·...·]-28">}</span><span·class="p">,</span><span·class="w">
255 ·····</span><span·class="p"·data-group-id="2715885123-31">{</span><span·class="p"·data-group-id="2715885123-32">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2715885123-32">}[·...·truncated·by·diffoscope;·len:·361,·SHA:·8e493ff8cb8e24966f3db7f1a6fefd8328a70162765d99f9f2d79701273a469f·...·]-2">}</span></code></pre><p>For·<code·class="inline">channel</code>,·the·result·shows·that·the·uncovered·line·is·in·the·function255 ·····</span><span·class="p"·data-group-id="3549033508-31">{</span><span·class="p"·data-group-id="3549033508-32">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3549033508-32">}[·...·truncated·by·diffoscope;·len:·361,·SHA:·bf521d41533e0c21765f224688d2f1695621b260897b85963d7ff705b456cb74·...·]-2">}</span></code></pre><p>For·<code·class="inline">channel</code>,·the·result·shows·that·the·uncovered·line·is·in·the·function
256 <code·class="inline">channel:alloc/1</code>.</p><p>If·the·analysis·is·made·on·clause·level,·the·result·is·given·as·a·list·of·tuples256 <code·class="inline">channel:alloc/1</code>.</p><p>If·the·analysis·is·made·on·clause·level,·the·result·is·given·as·a·list·of·tuples
257 <code·class="inline">{Clause,{Cov,NotCov}}</code>,·one·for·each·function·clause·in·the·module.·A·clause·is257 <code·class="inline">{Clause,{Cov,NotCov}}</code>,·one·for·each·function·clause·in·the·module.·A·clause·is
258 specified·by·its·module·name,·function·name,·arity·and·position·within·the258 specified·by·its·module·name,·function·name,·arity·and·position·within·the
259 function·definition:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="8339260188-1">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">clause</span><span·class="p"·data-group-id="8339260188-1">)</span><span·class="p">.</span><span·class="w">259 function·definition:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="9121105892-1">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">clause</span><span·class="p"·data-group-id="9121105892-1">)</span><span·class="p">.</span><span·class="w">
260 </span><span·class="p"·data-group-id="8339260188-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8339260188-3">[</span><span·class="p"·data-group-id="8339260188-4">{</span><span·class="p"·data-group-id="8339260188-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·460,·SHA:·144d7529233a6d8c58ba09c7a24f6b2d17ff8869892cad3332066195f90f1e81·...·]-4">}</span><span·class="p">,</span><span·class="w">260 </span><span·class="p"·data-group-id="9121105892-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9121105892-3">[</span><span·class="p"·data-group-id="9121105892-4">{</span><span·class="p"·data-group-id="9121105892-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·460,·SHA:·fdee3b186f9393785bcebbee4418cbbfce209ec0df02aecd0f96cc2785dee825·...·]-4">}</span><span·class="p">,</span><span·class="w">
261 ·····</span><span·class="p"·data-group-id="8339260188-7">{</span><span·class="p"·data-group-id="8339260188-8">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">stop</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·fe84fa3d25066a0e14196f5e4185d520d3c961fe52f2b7382ed4c91abd44f89e·...·]-7">}</span><span·class="p">,</span><span·class="w">261 ·····</span><span·class="p"·data-group-id="9121105892-7">{</span><span·class="p"·data-group-id="9121105892-8">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">stop</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span>[·...·truncated·by·diffoscope;·len:·298,·SHA:·bf13c28f6fe499c09839bf804284e6951ca44c44516af67277b34ca15b38790d·...·]-7">}</span><span·class="p">,</span><span·class="w">
262 ·····</span><span·class="p"·data-group-id="8339260188-10">{</span><span·class="p"·data-group-id="8339260188-11">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</sp[·...·truncated·by·diffoscope;·len:·304,·SHA:·94b008491de2833e11af8638129d5018371102463a3cabee9fea6fa7dd75f058·...·]-10">}</span><span·class="p">,</span><span·class="w">262 ·····</span><span·class="p"·data-group-id="9121105892-10">{</span><span·class="p"·data-group-id="9121105892-11">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">alloc</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</sp[·...·truncated·by·diffoscope;·len:·304,·SHA:·75368fde4012c21cd08f45ba820482b8099887ed222c5490f91e451485839379·...·]-10">}</span><span·class="p">,</span><span·class="w">
263 ·····</span><span·class="p"·data-group-id="8339260188-13">{</span><span·class="p"·data-group-id="8339260188-14">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</spa[·...·truncated·by·diffoscope;·len:·303,·SHA:·5a64d6c2a8d22b784ee56cc68a81de1929397d44b31239f56b6d9fedd57dd051·...·]-13">}</span><span·class="p">,</span><span·class="w">263 ·····</span><span·class="p"·data-group-id="9121105892-13">{</span><span·class="p"·data-group-id="9121105892-14">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">free</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</spa[·...·truncated·by·diffoscope;·len:·303,·SHA:·bf07de1db1006355a8453f6a40f5be7eb5eaaee22cecd7fc31f0a660fe22ff7d·...·]-13">}</span><span·class="p">,</span><span·class="w">
264 ·····</span><span·class="p"·data-group-id="8339260188-16">{</span><span·class="p"·data-group-id="8339260188-17">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">init</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</spa[·...·truncated·by·diffoscope;·len:·303,·SHA:·ce5219ee98900f22f5ea82cda9be7edcf7428f64c61e23107a6e435f71fdd2ec·...·]-16">}</span><span·class="p">,</span><span·class="w">264 ·····</span><span·class="p"·data-group-id="9121105892-16">{</span><span·class="p"·data-group-id="9121105892-17">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">init</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</spa[·...·truncated·by·diffoscope;·len:·303,·SHA:·1562c3e72cfe374024572c31ebc15e05529504b833f2a03a729362e4a78b6d7e·...·]-16">}</span><span·class="p">,</span><span·class="w">
265 ·····</span><span·class="p"·data-group-id="8339260188-19">{</span><span·class="p"·data-group-id="8339260188-20">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·310,·SHA:·1183c6fcb85f4805824fc654f8b941ef193ddcbcf1b19f6d6eb8e09e3e088f68·...·]-19">}</span><span·class="p">,</span><span·class="w">265 ·····</span><span·class="p"·data-group-id="9121105892-19">{</span><span·class="p"·data-group-id="9121105892-20">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·310,·SHA:·bb591537069025f200c8432955aa435baa9230fa0446c87ddeda355340a1df8f·...·]-19">}</span><span·class="p">,</span><span·class="w">
266 ·····</span><span·class="p"·data-group-id="8339260188-22">{</span><span·class="p"·data-group-id="8339260188-23">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·310,·SHA:·5173be1a4922e578471c62788c67f6ad91796713bda134d51bcc5f6939228ec6·...·]-22">}</span><span·class="p">,</span><span·class="w">266 ·····</span><span·class="p"·data-group-id="9121105892-22">{</span><span·class="p"·data-group-id="9121105892-23">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·310,·SHA:·496bc02b306db5d302cd9b5d06180925712ffc4c6408a66c9fcbd5c6121c5280·...·]-22">}</span><span·class="p">,</span><span·class="w">
267 ·····</span><span·class="p"·data-group-id="8339260188-25">{</span><span·class="p"·data-group-id="8339260188-26">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·310,·SHA:·5b2fae587ad5d8223e70db2e854c650dda7bc724e8cf6d2ce8b95bb3bc574396·...·]-25">}</span><span·class="p">,</span><span·class="w">267 ·····</span><span·class="p"·data-group-id="9121105892-25">{</span><span·class="p"·data-group-id="9121105892-26">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">handle_call</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·310,·SHA:·700462ca2c0080374e756f42af0a4ab263b67a74c51e1bfd0f4ccd466721f794·...·]-25">}</span><span·class="p">,</span><span·class="w">
268 ·····</span><span·class="p"·data-group-id="8339260188-28">{</span><span·class="p"·data-group-id="8339260188-29">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">terminate</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1[·...·truncated·by·diffoscope;·len:·308,·SHA:·3ce974288c7dbb30b52206cd2121f432c2f133dd495264f667f2eb255fcd608e·...·]-28">}</span><span·class="p">,</span><span·class="w">268 ·····</span><span·class="p"·data-group-id="9121105892-28">{</span><span·class="p"·data-group-id="9121105892-29">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">terminate</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">1[·...·truncated·by·diffoscope;·len:·308,·SHA:·cfd0506a96048048cdd724d791c35259387924b4b3d8ca36e8cfe3c7dbe648b5·...·]-28">}</span><span·class="p">,</span><span·class="w">
269 ·····</span><span·class="p"·data-group-id="8339260188-31">{</span><span·class="p"·data-group-id="8339260188-32">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">channels</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1<[·...·truncated·by·diffoscope;·len:·307,·SHA:·f08157843319034eb0c8d06701d9477f82da2177e038a65fcf958f42918a3e85·...·]-31">}</span><span·class="p">,</span><span·class="w">269 ·····</span><span·class="p"·data-group-id="9121105892-31">{</span><span·class="p"·data-group-id="9121105892-32">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="ss">channels</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1<[·...·truncated·by·diffoscope;·len:·307,·SHA:·772c0b5ca2afd3ffd71fa8c80781fb3bf6abf665acdc9e087722beb5908509dd·...·]-31">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 106042/176801 bytes (59.98%) of diff not shown.
3.58 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/cprof.html
    
Offset 574, 15 lines modifiedOffset 574, 15 lines modified
574 ······<div·class="specs">574 ······<div·class="specs">
  
575 ··········<pre·translate="no"><span·class="attribute">-spec</span>·analyse(Mod,·Limit)·->·ModAnalysis·::·<a·href="#t:mod_analysis/0">mod_analysis</a>()575 ··········<pre·translate="no"><span·class="attribute">-spec</span>·analyse(Mod,·Limit)·->·ModAnalysis·::·<a·href="#t:mod_analysis/0">mod_analysis</a>()
576 ·················when·Mod·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>576 ·················when·Mod·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>
  
577 ······</div>577 ······</div>
  
578 <p>Collects·and·analyses·all·call·counters·for·module·<code·class="inline">Module</code>.</p><p>This·function·returns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1014443590-1">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ModuleCount</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FuncAnalysisList</span><span·class="p"·data-group-id="10144[·...·truncated·by·diffoscope;·len:·651,·SHA:·f2e403fa91a7498431c7550afc6487a5c6c1cc66febd2c4752e64f9aac23337e·...·]-1">}</span></code></pre><p>If·call·counters·are·still·running·while·<code·class="inline">analyse/0,1,2</code>·is·executing,·the·result578 <p>Collects·and·analyses·all·call·counters·for·module·<code·class="inline">Module</code>.</p><p>This·function·returns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6840393237-1">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ModuleCount</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FuncAnalysisList</span><span·class="p"·data-group-id="68403[·...·truncated·by·diffoscope;·len:·651,·SHA:·a7abb6fc663a93ce348055032df7d0ac236387c294043d50e4fd7af9559e7d28·...·]-1">}</span></code></pre><p>If·call·counters·are·still·running·while·<code·class="inline">analyse/0,1,2</code>·is·executing,·the·result
579 could·be·inconsistent.·This·happens·if·the·process·executing·<code·class="inline">analyse/0,1,2</code>579 could·be·inconsistent.·This·happens·if·the·process·executing·<code·class="inline">analyse/0,1,2</code>
580 is·scheduled·out·so·some·other·process·can·increment·the·counters·that·are580 is·scheduled·out·so·some·other·process·can·increment·the·counters·that·are
581 being·analysed.·Calling·<a·href="#pause/0"><code·class="inline">pause()</code></a>·before·analysing·takes·care·of581 being·analysed.·Calling·<a·href="#pause/0"><code·class="inline">pause()</code></a>·before·analysing·takes·care·of
582 that·problem.</p><p>All·functions·with·a·<code·class="inline">FuncCallCount</code>·lower·than·<code·class="inline">Limit</code>·are·excluded·from582 that·problem.</p><p>All·functions·with·a·<code·class="inline">FuncCallCount</code>·lower·than·<code·class="inline">Limit</code>·are·excluded·from
583 <code·class="inline">FuncAnalysisList</code>.·They·are·still·included·in·<code·class="inline">ModCallCount</code>,·though.</p>583 <code·class="inline">FuncAnalysisList</code>.·They·are·still·included·in·<code·class="inline">ModCallCount</code>,·though.</p>
584 ··</section>584 ··</section>
585 </section>585 </section>
83.1 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/cprof_chapter.html
    
Offset 152, 130 lines modifiedOffset 152, 130 lines modified
152 no·trace·message·has·to·be·generated.·Some·measurements·indicates·performance152 no·trace·message·has·to·be·generated.·Some·measurements·indicates·performance
153 degradations·in·the·vicinity·of·10·percent.</p><p>The·following·sections·show·some·examples·of·profiling·with·<a·href="cprof.html"><code·class="inline">cprof</code></a>.</p><h2·id="example-background-work"·class="section-heading">153 degradations·in·the·vicinity·of·10·percent.</p><p>The·following·sections·show·some·examples·of·profiling·with·<a·href="cprof.html"><code·class="inline">cprof</code></a>.</p><h2·id="example-background-work"·class="section-heading">
154 ··<a·href="#example-background-work"·class="hover-link">154 ··<a·href="#example-background-work"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">Example:·Background·work</span>157 ··<span·class="text">Example:·Background·work</span>
158 </h2>158 </h2>
159 <p>From·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="8765830677-1">(</span><span·class="p"·data-group-id="8765830677-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">pause</span><span·class="p"·data-group-id="8765830677-2">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·207bfeb1982a147c5e840c5fc18ed55f3cb1ede59640ac4d566784acad30d209·...·]-2">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Stop·counters·just·after·start</span><span·class="w">159 <p>From·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5228133461-1">(</span><span·class="p"·data-group-id="5228133461-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">pause</span><span·class="p"·data-group-id="5228133461-2">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·0693bfa01549716a4a0641c094b5a452bbd7dd7c8bc51e738ba49dc43a127b5e·...·]-2">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Stop·counters·just·after·start</span><span·class="w">
160 </span><span·class="mi">8492</span><span·class="gp·unselectable">160 </span><span·class="mi">8492</span><span·class="gp·unselectable">
161 2&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="8765830677-3">(</span><span·class="p"·data-group-id="8765830677-3">)</span><span·class="p">.</span><span·class="w">161 2&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="5228133461-3">(</span><span·class="p"·data-group-id="5228133461-3">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="8765830677-4">{</span><span·class="mi">539</span><span·class="p">,</span><span·class="w">162 </span><span·class="p"·data-group-id="5228133461-4">{</span><span·class="mi">539</span><span·class="p">,</span><span·class="w">
163 ·</span><span·class="p"·data-group-id="8765830677-5">[</span><span·class="p"·data-group-id="8765830677-6">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="mi">155</span><span·class="p">,</span><span·class="w">163 ·</span><span·class="p"·data-group-id="5228133461-5">[</span><span·class="p"·data-group-id="5228133461-6">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="mi">155</span><span·class="p">,</span><span·class="w">
164 ·········</span><span·class="p"·data-group-id="8765830677-7">[</span><span·class="p"·data-group-id="8765830677-8">{</span><span·class="p"·data-group-id="8765830677-9">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">prep_check</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·152,·SHA:·eee073eb76490bc8a1be8f64c598a5635b9429516f258713cb3c9d8c09a08a13·...·]-8">}</span><span·class="p">,</span><span·class="w">164 ·········</span><span·class="p"·data-group-id="5228133461-7">[</span><span·class="p"·data-group-id="5228133461-8">{</span><span·class="p"·data-group-id="5228133461-9">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">prep_check</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·152,·SHA:·64b2b69e74858dc34be91eb8c0ebd3a851f568a7b691ddfa6f35ca0a96a55888·...·]-8">}</span><span·class="p">,</span><span·class="w">
165 ··········</span><span·class="p"·data-group-id="8765830677-10">{</span><span·class="p"·data-group-id="8765830677-11">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">used_records</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="8765830677[·...·truncated·by·diffoscope;·len:·104,·SHA:·1ca7dfbca31144ac20bca4f80ffc4c9fa51682ca55e9183c0a7da096f045e0aa·...·]-10">}</span><span·class="p">,</span><span·class="w">165 ··········</span><span·class="p"·data-group-id="5228133461-10">{</span><span·class="p"·data-group-id="5228133461-11">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">used_records</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="5228133461[·...·truncated·by·diffoscope;·len:·104,·SHA:·34e915fa9297a913b0a4fa43b6ff1b601620053be26d9fcc921062a9c32c6d58·...·]-10">}</span><span·class="p">,</span><span·class="w">
166 ··········</span><span·class="p"·data-group-id="8765830677-12">{</span><span·class="p"·data-group-id="8765830677-13">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">used_records</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8765830677[·...·truncated·by·diffoscope;·len:·104,·SHA:·2debe9cb503e88f034699bbcfad2ee0662911d93ba0d582c2062a4885f39cabd·...·]-12">}</span><span·class="p">,</span><span·class="w">166 ··········</span><span·class="p"·data-group-id="5228133461-12">{</span><span·class="p"·data-group-id="5228133461-13">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">used_records</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5228133461[·...·truncated·by·diffoscope;·len:·104,·SHA:·f54a3a3291bfce5659b7274f2f87e394167a04775af12af82b26ca226e534281·...·]-12">}</span><span·class="p">,</span><span·class="w">
167 ··········</span><span·class="p"·data-group-id="8765830677-14">{</span><span·class="p"·data-group-id="8765830677-15">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">used_record_defs</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="876583[·...·truncated·by·diffoscope;·len:·107,·SHA:·76b56e7777381c0faaef11598ab35f354ce5f80ebc18067d4124da3cbf3af967·...·]-14">}</span><span·class="p">,</span><span·class="w">167 ··········</span><span·class="p"·data-group-id="5228133461-14">{</span><span·class="p"·data-group-id="5228133461-15">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">used_record_defs</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="522813[·...·truncated·by·diffoscope;·len:·107,·SHA:·8d28c81f277423d2b52fb0d6e6c0ce90de7122d09db539c367de1c6949c34981·...·]-14">}</span><span·class="p">,</span><span·class="w">
168 ··········</span><span·class="p"·data-group-id="8765830677-16">{</span><span·class="p"·data-group-id="8765830677-17">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">record_defs</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8765830677-[·...·truncated·by·diffoscope;·len:·102,·SHA:·fddb91c4f941a26c50a20e059e54c2afb52a20d2d7bba1026bb859a1ff5a9b5c·...·]-16">}</span><span·class="p">,</span><span·class="w">168 ··········</span><span·class="p"·data-group-id="5228133461-16">{</span><span·class="p"·data-group-id="5228133461-17">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">record_defs</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5228133461-[·...·truncated·by·diffoscope;·len:·102,·SHA:·1f4fcba5c890a3f169eb1fafdc432653f336141a1d0a04dc91c95bb1bf071a95·...·]-16">}</span><span·class="p">,</span><span·class="w">
169 ··········</span><span·class="p"·data-group-id="8765830677-18">{</span><span·class="p"·data-group-id="8765830677-19">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">record_bindings</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8765830[·...·truncated·by·diffoscope;·len:·106,·SHA:·97e3973713f65e5ef0bec40479adba059b008eb9370bc679da62c2eded41f5e4·...·]-18">}</span><span·class="p">,</span><span·class="w">169 ··········</span><span·class="p"·data-group-id="5228133461-18">{</span><span·class="p"·data-group-id="5228133461-19">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">record_bindings</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5228133[·...·truncated·by·diffoscope;·len:·106,·SHA:·20eb6b01e510e22a1a65cc18bbd1875bb8f869a7777f4772321aec062b77c6f3·...·]-18">}</span><span·class="p">,</span><span·class="w">
170 ··········</span><span·class="p"·data-group-id="8765830677-20">{</span><span·class="p"·data-group-id="8765830677-21">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="8765830677-21">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·440d31a3c54ca9fb34771d115bb6f51acd71074fd016140cd9d4fd7e25837ed3·...·]-20">}</span><span·class="p">,</span><span·class="w">170 ··········</span><span·class="p"·data-group-id="5228133461-20">{</span><span·class="p"·data-group-id="5228133461-21">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">exprs</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="5228133461-21">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·81c0bbf5eeebb24e288069673fd5c61acbd5c8bdffab649fa0caa8b3c166d964·...·]-20">}</span><span·class="p">,</span><span·class="w">
171 ··········</span><span·class="p"·data-group-id="8765830677-22">{</span><span·class="p"·data-group-id="8765830677-23">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">expr</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="8765830677-23">}</[·...·truncated·by·diffoscope;·len:·95,·SHA:·ddeecee6b32222f575a4cd8c1719f9015ada2d384691a797886b536eb8490d6f·...·]-22">}</span><span·class="p">,</span><span·class="w">171 ··········</span><span·class="p"·data-group-id="5228133461-22">{</span><span·class="p"·data-group-id="5228133461-23">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">expr</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="5228133461-23">}</[·...·truncated·by·diffoscope;·len:·95,·SHA:·5113bb60951504deb30f00186ea0efd2a89f1fcf23cac613d3581dc57bd90721·...·]-22">}</span><span·class="p">,</span><span·class="w">
172 ··········</span><span·class="p"·data-group-id="8765830677-24">{</span><span·class="p"·data-group-id="8765830677-25">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">expand_records</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="87658306[·...·truncated·by·diffoscope;·len:·105,·SHA:·f367c9a877ce75033f3547240fe333c41f3cf6668ade9824cbbf08b1c92fbad7·...·]-24">}</span><span·class="p">,</span><span·class="w">172 ··········</span><span·class="p"·data-group-id="5228133461-24">{</span><span·class="p"·data-group-id="5228133461-25">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">expand_records</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="52281334[·...·truncated·by·diffoscope;·len:·105,·SHA:·4272844bcfcbee248563bf93ab235c028300ef4e769415aa3b7231cfe7736a9a·...·]-24">}</span><span·class="p">,</span><span·class="w">
173 ··········</span><span·class="p"·data-group-id="8765830677-26">{</span><span·class="p"·data-group-id="8765830677-27">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">check_command</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="876583067[·...·truncated·by·diffoscope;·len:·104,·SHA:·05ee7208a90e7289306eacef2fc7eac4c80e493914cfe4c5825ea1f6abb57951·...·]-26">}</span><span·class="p">,</span><span·class="w">173 ··········</span><span·class="p"·data-group-id="5228133461-26">{</span><span·class="p"·data-group-id="5228133461-27">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">check_command</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="522813346[·...·truncated·by·diffoscope;·len:·104,·SHA:·20fa8dd83144c156d269149d543a3a35d18668ab6627e7c5c11bca9f4e2ddba2·...·]-26">}</span><span·class="p">,</span><span·class="w">
174 ··········</span><span·class="p"·data-group-id="8765830677-28">{</span><span·class="p"·data-group-id="8765830677-29">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">apply_fun</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="8765830677-29[·...·truncated·by·diffoscope;·len:·100,·SHA:·f7d9d139a08f1471d28def4b6125b5fef367cf889976c0ca13321bd5b1e6c4ea·...·]-28">}</span><span·class="p">,</span><span·class="w">174 ··········</span><span·class="p"·data-group-id="5228133461-28">{</span><span·class="p"·data-group-id="5228133461-29">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">apply_fun</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="5228133461-29[·...·truncated·by·diffoscope;·len:·100,·SHA:·b70cb761ef2ba8ce275d62107d9405ccfae71a29764f16855b1929a51e756f5b·...·]-28">}</span><span·class="p">,</span><span·class="w">
175 ··········</span><span·class="p"·data-group-id="8765830677-30">{</span><span·class="p"·data-group-id="8765830677-31">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">&#39;-exprs/7-lc$^0/1-0-&#39;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·120,·SHA:·1afcbfaf63c07e31c4a64919242d778e912c4479ad31090887d83308ec968034·...·]-30">}</span><span·class="p">,</span><span·class="w">175 ··········</span><span·class="p"·data-group-id="5228133461-30">{</span><span·class="p"·data-group-id="5228133461-31">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">&#39;-exprs/7-lc$^0/1-0-&#39;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·120,·SHA:·aa5b04c0cd2aa4ae5727130b167e8ba2c16ccc1efcf08299ab79e8b27ccbcc6f·...·]-30">}</span><span·class="p">,</span><span·class="w">
176 ··········</span><span·class="p"·data-group-id="8765830677-32">{</span><span·class="p"·data-group-id="8765830677-33">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">&#39;-eval_loop/3-fun-0-&#39;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·227,·SHA:·4cd914ea84719fdd775d72a4f4d76f70f86be818a53653688ea76bda153c17e3·...·]-6">}</span><span·class="p">,</span><span·class="w">176 ··········</span><span·class="p"·data-group-id="5228133461-32">{</span><span·class="p"·data-group-id="5228133461-33">{</span><span·class="ss">shell</span><span·class="p">,</span><span·class="ss">&#39;-eval_loop/3-fun-0-&#39;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·227,·SHA:·01e3af2ff8e81ea3d941f752ba22ccd677e7015ca57783a5f764a3e20e4bb081·...·]-6">}</span><span·class="p">,</span><span·class="w">
177 ··</span><span·class="c1">%%·Information·about·many·modules·omitted.</span><span·class="w">177 ··</span><span·class="c1">%%·Information·about·many·modules·omitted.</span><span·class="w">
178 ·····················</span><span·class="p">.</span><span·class="w">178 ·····················</span><span·class="p">.</span><span·class="w">
179 ·····················</span><span·class="p">.</span><span·class="w">179 ·····················</span><span·class="p">.</span><span·class="w">
180 ·····················</span><span·class="p">.</span><span·class="w">180 ·····················</span><span·class="p">.</span><span·class="w">
181 ··</span><span·class="c1">%%·Here·is·the·last·part.</span><span·class="w">181 ··</span><span·class="c1">%%·Here·is·the·last·part.</span><span·class="w">
182 ··</span><span·class="p"·data-group-id="8765830677-34">{</span><span·class="ss">erts_internal</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="p"·data-group-id="8765830677-35">[</span><span·class="p"·data-group-id="8765830677-36">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·438,·SHA:·4b17d865d30079bac51d9df8e1781255422af8fd561229df5e138476e45fe027·...·]-34">}</span><span·class="p">,</span><span·class="w">182 ··</span><span·class="p"·data-group-id="5228133461-34">{</span><span·class="ss">erts_internal</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="p"·data-group-id="5228133461-35">[</span><span·class="p"·data-group-id="5228133461-36">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·438,·SHA:·5cc2ee2164d28a9c9d4a8c3fd6b26fb808c9e105c223a08a660854272948b513·...·]-34">}</span><span·class="p">,</span><span·class="w">
183 ··</span><span·class="p"·data-group-id="8765830677-38">{</span><span·class="ss">otp_internal</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group-id="8765830677-39">[</span><span·class="p"·data-group-id="8765830677-40">{</span><span·class="p"·data-group-id="8765830677-41">{</span><span·class="ss">otp_internal</span><span·class="p">,</span><span·class="ss">obsolete</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="8765830677-41">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8765830677-40">}</span><span·class="p"·data-group-id="8765830677-39">]</span><span·class="p"·data-group-id="8765830677-38">}</span><span·class="p">,</span><span·class="w"> 
184 ··</span><span·class="p"·data-group-id="8765830677-42">{</span><span·class="ss">maps</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group-id="8765830677-43">[</span><span·class="p"·data-group-id="8765830677-44">{</span><span·class="p"·data-group-id="8765830677-45">{</span><span·class="ss">maps</span><span·class="p">,</span><span·class="ss">from_list</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8765830677-45">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8765830677-44">}</span><span·class="p"·data-group-id="8765830677-43">]</span><span·class="p"·data-group-id="8765830677-42">}</span><span·class="p">,</span><span·class="w"> 
185 ··</span><span·class="p"·data-group-id="8765830677-46">{</span><span·class="ss">erl_internal</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group-id="8765830677-47">[</span><span·class="p"·data-group-id="8765830677-48">{</span><span·class="p"·data-group-id="8765830677-49">{</span><span·class="ss">erl_internal</span><span·class="p">,</span><span·class="ss">bif</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="8765830677-49">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8765830677-48">}</span><span·class="p"·data-group-id="8765830677-47">]</span><span·class="p"·data-group-id="8765830677-46">}</span><span·class="p"·data-group-id="8765830677-5">]</span><span·class="p"·data-group-id="8765830677-4">}</span><span·class="gp·unselectable"> 
186 3&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="8765830677-50">(</span><span·class="ss">cprof</span><span·class="p"·data-group-id="8765830677-50">)</span><span·class="p">.</span><span·class="w"> 
187 </span><span·class="p"·data-group-id="8765830677-51">{</span><span·class="ss">cprof</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-group-id="8765830677-52">[</span><span·class="p"·data-group-id="87658306[·...·truncated·by·diffoscope;·len:·910,·SHA:·45f52283672fcd71bb403dafe735f5c4d7955ee8590d464e92f3d7b65f474d3a·...·]">183 ··</span><span·class="p"·data-group-id="5228133461-38">{</span><span·class="ss">otp_internal</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group-id="5228133461-39">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·522,·SHA:·9bb50c95b38c276908ecef2c9cf192e2f833eaebbf6e357e9bda806e4ab1e9e8·...·]">
 184 ··</span><span·class="p"·data-group-id="5228133461-42">{</span><span·class="ss">maps</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group-id="5228133461-43">[</span><span·class="p"·data-group-id="5228133461-44">{</span><span·class="p"·data-group-id="5228133461-45">{</span><span·class="ss">maps</span><span·class="p">,</span><span·class="ss">from_list</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5228133461-45">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5228133461-44">}</span><span·class="p"·data-group-id="5228133461-43">]</span><span·class="p"·data-group-id="5228133461-42">}</span><span·class="p">,</span><span·class="w">
 185 ··</span><span·class="p"·data-group-id="5228133461-46">{</span><span·class="ss">erl_internal</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group-id="5228133461-47">[</span><span·class="p"·data-group-id="5228133461-48">{</span><span·class="p"·data-group-id="5228133461-49">{</span><span·class="ss">erl_internal</span><span·class="p">,</span><span·class="ss">bif</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="5228133461-49">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5228133461-48">}</span><span·class="p"·data-group-id="5228133461-47">]</span><span·class="p"·data-group-id="5228133461-46">}</span><span·class="p"·data-group-id="5228133461-5">]</span><span·class="p"·data-group-id="5228133461-4">}</span><span·class="gp·unselectable">
 186 3&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="5228133461-50">(</span><span·class="ss">cprof</span><span·class="p"·data-group-id="5228133461-50">)</span><span·class="p">.</span><span·class="w">
 187 </span><span·class="p"·data-group-id="5228133461-51">{</span><span·class="ss">cprof</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="p"·data-group-id="5228133461-52">[</span><span·class="p"·data-group-id="5228133461-53">{</span><span·class="p"·data-group-id="5228133461-54">{</span><span·class="ss">cprof</span><span·class="p">,</span><span·class="ss">tr</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5228133461-54">}</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5228133461-53">}</span><span·class="p">,</span><span·class="p"·data-group-id="5228133461-55">{</span><span·class="p"·data-group-id="5228133461-56">{</span><span·class="ss">cprof</span><span·class="p">,</span><span·class="ss">pause</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5228133461-56">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5228133461-55">}</span><span·class="p"·data-group-id="5228133461-52">]</span><span·class="p"·data-group-id="5228133461-51">}</span><span·class="gp·unselectable">
188 4&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="8765830677-57">(</span><span·class="p"·data-group-id="8765830677-57">)</span><span·class="p">.</span><span·class="w">188 4&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="5228133461-57">(</span><span·class="p"·data-group-id="5228133461-57">)</span><span·class="p">.</span><span·class="w">
189 </span><span·class="mi">8586</span></code></pre><p>The·example·showed·some·of·the·background·work·that·the·shell·performs·just·to189 </span><span·class="mi">8586</span></code></pre><p>The·example·showed·some·of·the·background·work·that·the·shell·performs·just·to
190 interpret·the·first·command·line.</p><p>What·is·captured·in·this·example·is·the·part·of·the·work·the·shell·does·while190 interpret·the·first·command·line.</p><p>What·is·captured·in·this·example·is·the·part·of·the·work·the·shell·does·while
191 interpreting·the·command·line·that·occurs·between·the·actual·calls·to191 interpreting·the·command·line·that·occurs·between·the·actual·calls·to
192 <a·href="cprof.html#start/0"><code·class="inline">cprof:start()</code></a>·and·<a·href="cprof.html#analyse/1"><code·class="inline">cprof:analyse()</code></a>.</p><h2·id="example-one-module"·class="section-heading">192 <a·href="cprof.html#start/0"><code·class="inline">cprof:start()</code></a>·and·<a·href="cprof.html#analyse/1"><code·class="inline">cprof:analyse()</code></a>.</p><h2·id="example-one-module"·class="section-heading">
193 ··<a·href="#example-one-module"·class="hover-link">193 ··<a·href="#example-one-module"·class="hover-link">
194 ····<i·class="ri-link-m"·aria-hidden="true"></i>194 ····<i·class="ri-link-m"·aria-hidden="true"></i>
195 ··</a>195 ··</a>
196 ··<span·class="text">Example:·One·module</span>196 ··<span·class="text">Example:·One·module</span>
197 </h2>197 </h2>
198 <p>From·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3619457960-1">(</span><span·class="p"·data-group-id="3619457960-1">)</span><span·class="p">,</span><span·class="n">R</span><span·class="o">=</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">day_of_the_week</span><span·class="p[·...·truncated·by·diffoscope;·len:·419,·SHA:·20634c9c4ae8228770bea30d93c91561c01e720c1c07a2bac4e4e72ae6447819·...·]-3">)</span><span·class="p">,</span><span·class="n">R</span><span·class="p">.</span><span·class="w">198 <p>From·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9063084855-1">(</span><span·class="p"·data-group-id="9063084855-1">)</span><span·class="p">,</span><span·class="n">R</span><span·class="o">=</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">day_of_the_week</span><span·class="p[·...·truncated·by·diffoscope;·len:·419,·SHA:·a124b58b74a7d6bebb4866d09ecb03c54db6481d03fb5c33e05cee77deff4fce·...·]-3">)</span><span·class="p">,</span><span·class="n">R</span><span·class="p">.</span><span·class="w">
199 </span><span·class="mi">1</span><span·class="gp·unselectable">199 </span><span·class="mi">1</span><span·class="gp·unselectable">
200 2&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="3619457960-4">(</span><span·class="ss">calendar</span><span·class="p"·data-group-id="3619457960-4">)</span><span·class="p">.</span><span·class="w">200 2&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="9063084855-4">(</span><span·class="ss">calendar</span><span·class="p"·data-group-id="9063084855-4">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="3619457960-5">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">201 </span><span·class="p"·data-group-id="9063084855-5">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">
202 ··········</span><span·class="p"·data-group-id="3619457960-6">[</span><span·class="p"·data-group-id="3619457960-7">{</span><span·class="p"·data-group-id="3619457960-8">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">last_day_of_the_month1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·166,·SHA:·c1171121fa9af8a7475fcae63b5c30803756765c7f6372de772f77397e295a5e·...·]-7">}</span><span·class="p">,</span><span·class="w">202 ··········</span><span·class="p"·data-group-id="9063084855-6">[</span><span·class="p"·data-group-id="9063084855-7">{</span><span·class="p"·data-group-id="9063084855-8">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">last_day_of_the_month1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·166,·SHA:·3903acb461adf6fba8bc93dd2e3757c892d5792bf0442d34604b62ede832e9d6·...·]-7">}</span><span·class="p">,</span><span·class="w">
203 ···········</span><span·class="p"·data-group-id="3619457960-9">{</span><span·class="p"·data-group-id="3619457960-10">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">last_day_of_the_month</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·114,·SHA:·2ade8f2dce241e7a7da742fb3bd8f9d9d7757da598d948380f5a3cabdb230c2a·...·]-9">}</span><span·class="p">,</span><span·class="w">203 ···········</span><span·class="p"·data-group-id="9063084855-9">{</span><span·class="p"·data-group-id="9063084855-10">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">last_day_of_the_month</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·114,·SHA:·028139d06b250e0dde9e8255165b3ed82d7ddb5a3a85b181e879f2d7ed64e3cf·...·]-9">}</span><span·class="p">,</span><span·class="w">
204 ···········</span><span·class="p"·data-group-id="3619457960-11">{</span><span·class="p"·data-group-id="3619457960-12">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">is_leap_year1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="361945[·...·truncated·by·diffoscope;·len:·107,·SHA:·c7fd8f610349b270958cba6fed18736140986a60846d041f837277af0d813a8c·...·]-11">}</span><span·class="p">,</span><span·class="w">204 ···········</span><span·class="p"·data-group-id="9063084855-11">{</span><span·class="p"·data-group-id="9063084855-12">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">is_leap_year1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="906308[·...·truncated·by·diffoscope;·len:·107,·SHA:·612884ee81ac2fec434ee5943a6f76c156815e66c70434b84b3316a6aa314fae·...·]-11">}</span><span·class="p">,</span><span·class="w">
205 ···········</span><span·class="p"·data-group-id="3619457960-13">{</span><span·class="p"·data-group-id="3619457960-14">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">is_leap_year</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3619457[·...·truncated·by·diffoscope;·len:·106,·SHA:·ba30ab299241e5e8f39ae4da07f7442d890f947e391b0934aa0f05da964b7ce2·...·]-13">}</span><span·class="p">,</span><span·class="w">205 ···········</span><span·class="p"·data-group-id="9063084855-13">{</span><span·class="p"·data-group-id="9063084855-14">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">is_leap_year</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9063084[·...·truncated·by·diffoscope;·len:·106,·SHA:·a3ada402e5e5c68df4f5d926f1c66b5c477daa04917fb2de89f3a164d6912f90·...·]-13">}</span><span·class="p">,</span><span·class="w">
206 ···········</span><span·class="p"·data-group-id="3619457960-15">{</span><span·class="p"·data-group-id="3619457960-16">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">dy</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3619457960-16">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·273885412492f746669d7692d0c59318be738bb4ed715ca8175eb1768e58f572·...·]-15">}</span><span·class="p">,</span><span·class="w">206 ···········</span><span·class="p"·data-group-id="9063084855-15">{</span><span·class="p"·data-group-id="9063084855-16">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">dy</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9063084855-16">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·20244b91a02bfb1b37b1b55b1c621ba3ca51aa0895348fb3f1ea30b23942381f·...·]-15">}</span><span·class="p">,</span><span·class="w">
207 ···········</span><span·class="p"·data-group-id="3619457960-17">{</span><span·class="p"·data-group-id="3619457960-18">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">dm</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3619457960-18">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·273885412492f746669d7692d0c59318be738bb4ed715ca8175eb1768e58f572·...·]-17">}</span><span·class="p">,</span><span·class="w">207 ···········</span><span·class="p"·data-group-id="9063084855-17">{</span><span·class="p"·data-group-id="9063084855-18">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">dm</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9063084855-18">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·20244b91a02bfb1b37b1b55b1c621ba3ca51aa0895348fb3f1ea30b23942381f·...·]-17">}</span><span·class="p">,</span><span·class="w">
208 ···········</span><span·class="p"·data-group-id="3619457960-19">{</span><span·class="p"·data-group-id="3619457960-20">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">df</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3619457960-20">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·273885412492f746669d7692d0c59318be738bb4ed715ca8175eb1768e58f572·...·]-19">}</span><span·class="p">,</span><span·class="w">208 ···········</span><span·class="p"·data-group-id="9063084855-19">{</span><span·class="p"·data-group-id="9063084855-20">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">df</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9063084855-20">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·20244b91a02bfb1b37b1b55b1c621ba3ca51aa0895348fb3f1ea30b23942381f·...·]-19">}</span><span·class="p">,</span><span·class="w">
209 ···········</span><span·class="p"·data-group-id="3619457960-21">{</span><span·class="p"·data-group-id="3619457960-22">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">day_of_the_week</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3619[·...·truncated·by·diffoscope;·len:·109,·SHA:·97149729053da09c5d2fef62fc8f1719e5534ef1a477aeda338e43d2251cbd9c·...·]-21">}</span><span·class="p">,</span><span·class="w">209 ···········</span><span·class="p"·data-group-id="9063084855-21">{</span><span·class="p"·data-group-id="9063084855-22">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">day_of_the_week</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9063[·...·truncated·by·diffoscope;·len:·109,·SHA:·a2c5570ed357f30c56a8e65d44a2fd417d434df07d7f394cd1050f5f288cf8d4·...·]-21">}</span><span·class="p">,</span><span·class="w">
210 ···········</span><span·class="p"·data-group-id="3619457960-23">{</span><span·class="p"·data-group-id="3619457960-24">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">date_to_gregorian_days</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·223,·SHA:·49ba95a610795727ce6a75047659720b96149f27328de45649370467c0e0c9dd·...·]-5">}</span><span·class="gp·unselectable">210 ···········</span><span·class="p"·data-group-id="9063084855-23">{</span><span·class="p"·data-group-id="9063084855-24">{</span><span·class="ss">calendar</span><span·class="p">,</span><span·class="ss">date_to_gregorian_days</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·223,·SHA:·31880f4ba010b12db2451f216c692ef9615104a1a2957cf24308416446ca6b09·...·]-5">}</span><span·class="gp·unselectable">
211 3&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="3619457960-25">(</span><span·class="p"·data-group-id="3619457960-25">)</span><span·class="p">.</span><span·class="w">211 3&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="9063084855-25">(</span><span·class="p"·data-group-id="9063084855-25">)</span><span·class="p">.</span><span·class="w">
212 </span><span·class="mi">8648</span></code></pre><p>The·example·tells·us·that·&quot;Aktiebolaget·LM·Ericsson·&amp;·Co&quot;·was·registered·on·a212 </span><span·class="mi">8648</span></code></pre><p>The·example·tells·us·that·&quot;Aktiebolaget·LM·Ericsson·&amp;·Co&quot;·was·registered·on·a
213 Monday·(since·the·return·value·of·the·first·command·is·1),·and·that·the213 Monday·(since·the·return·value·of·the·first·command·is·1),·and·that·the
214 <code·class="inline">calendar</code>·module·needed·9·function·calls·to·calculate·that.</p><p>Using·<code·class="inline">cprof:analyse()</code>·in·this·example·also·shows·approximately·the·same214 <code·class="inline">calendar</code>·module·needed·9·function·calls·to·calculate·that.</p><p>Using·<code·class="inline">cprof:analyse()</code>·in·this·example·also·shows·approximately·the·same
215 background·work·as·in·the·first·example.</p><h2·id="example-in-the-code"·class="section-heading">215 background·work·as·in·the·first·example.</p><h2·id="example-in-the-code"·class="section-heading">
216 ··<a·href="#example-in-the-code"·class="hover-link">216 ··<a·href="#example-in-the-code"·class="hover-link">
217 ····<i·class="ri-link-m"·aria-hidden="true"></i>217 ····<i·class="ri-link-m"·aria-hidden="true"></i>
218 ··</a>218 ··</a>
219 ··<span·class="text">Example:·In·the·code</span>219 ··<span·class="text">Example:·In·the·code</span>
220 </h2>220 </h2>
221 <p>Write·a·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7438618454-1">(</span><span·class="ss">sort</span><span·class="p"·data-group-id="7438618454-1">)</span><span·class="p">.</span><span·class="w"> 
222 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7438618454-2">(</span><span·class="p"·data-group-id="7438618454-3">[</span><span·class="ss">do</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"[·...·truncated·by·diffoscope;·len:·81,·SHA:·440ffb242f7183167cef464278bc64e0bc340a5c42bdb56e7b4ac1049748e7a4·...·]">)</span><span·class="p">.</span><span·class="w">221 <p>Write·a·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7814706931-1">(</span><span·class="ss">sort</span><span·class="p"·data-group-id="7814706931-1">)</span><span·class="p">.</span><span·class="w">
 222 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7814706931-2">(</span><span·class="p"·data-group-id="7814706931-3">[</span><span·class="ss">do</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7814706931-3">]</span><span·class="p"·data-group-id="7814706931-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">do</span><span·class="p"·data-group-id="7438618454-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="7438618454-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 </span><span·class="nf">do</span><span·class="p"·data-group-id="7814706931-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="7814706931-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="7438618454-5">(</span><span·class="p"·data-group-id="7438618454-5">)</span><span·class="p">,</span><span·class="w">224 ····</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="7814706931-5">(</span><span·class="p"·data-group-id="7814706931-5">)</span><span·class="p">,</span><span·class="w">
225 ····</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7438618454-6">(</span><span·class="p"·data-group-id="7438618454-6">)</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7814706931-6">(</span><span·class="p"·data-group-id="7814706931-6">)</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="7438618454-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7438618454-8">[</span><span·class="p"·data-group-id="7438618454-8">]</span><span·class="p"·data-group-id="7438618454-7">)</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="7814706931-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7814706931-8">[</span><span·class="p"·data-group-id="7814706931-8">]</span><span·class="p"·data-group-id="7814706931-7">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">do</span><span·class="p"·data-group-id="7438618454-9">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="7438618454-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 </span><span·class="nf">do</span><span·class="p"·data-group-id="7814706931-9">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="7814706931-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="7438618454-10">(</span><span·class="n">L</span><span·class="p"·data-group-id="7438618454-10">)</span><span·class="p">,</span><span·class="w">228 ····</span><span·class="n">R</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="7814706931-10">(</span><span·class="n">L</span><span·class="p"·data-group-id="7814706931-10">)</span><span·class="p">,</span><span·class="w">
229 ····</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">pause</span><span·class="p"·data-group-id="7438618454-11">(</span><span·class="p"·data-group-id="7438618454-11">)</span><span·class="p">,</span><span·class="w">229 ····</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">pause</span><span·class="p"·data-group-id="7814706931-11">(</span><span·class="p"·data-group-id="7814706931-11">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="n">R</span><span·class="p">;</span><span·class="w">230 ····</span><span·class="n">R</span><span·class="p">;</span><span·class="w">
231 </span><span·class="nf">do</span><span·class="p"·data-group-id="7438618454-12">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="7438618454-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 </span><span·class="nf">do</span><span·class="p"·data-group-id="7814706931-12">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">L</span><span·class="p"·data-group-id="7814706931-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="7438618454-13">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7438618454-14">[</span><span·class="nc">rand</span><span·class="p">:</span><span·c[·...·truncated·by·diffoscope;·len:·716,·SHA:·b19e9435c6f78e7aa64b305f1c22a78cec403d544b6cb7882981d3b3a9e0c57f·...·]-1">)</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="7814706931-13">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7814706931-14">[</span><span·class="nc">rand</span><span·class="p">:</span><span·c[·...·truncated·by·diffoscope;·len:·716,·SHA:·91fb15a7cccc0d93bbcf8f96e3e4fd1c6e0001884ae51ff2aa99a6f429985aff·...·]-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="7276579693-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p"·data-group-id="7276579693-2">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="9440690106-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p"·data-group-id="9440690106-2">}</span><span·class="gp·unselectable">
234 2&gt;·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">seed</span><span·class="p"·data-group-id="7276579693-3">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="7276579693-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">234 2&gt;·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">seed</span><span·class="p"·data-group-id="9440690106-3">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p"·data-group-id="9440690106-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
235 </span><span·class="ss">ok</span><span·class="p">.</span><span·class="gp·unselectable">235 </span><span·class="ss">ok</span><span·class="p">.</span><span·class="gp·unselectable">
236 3&gt;·</span><span·class="nc">sort</span><span·class="p">:</span><span·class="nf">do</span><span·class="p"·data-group-id="7276579693-4">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="7276579693-4">)</span><span·class="p">.</span><span·class="w">236 3&gt;·</span><span·class="nc">sort</span><span·class="p">:</span><span·class="nf">do</span><span·class="p"·data-group-id="9440690106-4">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9440690106-4">)</span><span·class="p">.</span><span·class="w">
237 </span><span·class="p"·data-group-id="7276579693-5">[</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="[·...·truncated·by·diffoscope;·len:·1300,·SHA:·6c48a456dd216f8fb87570f6df145bcd46d50abed95a96661d8dd2effade4439·...·]-5">]</span><span·class="gp·unselectable">237 </span><span·class="p"·data-group-id="9440690106-5">[</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="[·...·truncated·by·diffoscope;·len:·1300,·SHA:·d096f6eeaf89902b4b7a239e5a68304276f7b7653001468391f06140084f7feb·...·]-5">]</span><span·class="gp·unselectable">
238 4&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="7276579693-6">(</span><span·class="p"·data-group-id="7276579693-6">)</span><span·class="p">.</span><span·class="w">238 4&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="9440690106-6">(</span><span·class="p"·data-group-id="9440690106-6">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="7276579693-7">{</span><span·class="mi">13180</span><span·class="p">,</span><span·class="w">239 </span><span·class="p"·data-group-id="9440690106-7">{</span><span·class="mi">13180</span><span·class="p">,</span><span·class="w">
240 ·</span><span·class="p"·data-group-id="7276579693-8">[</span><span·class="p"·data-group-id="7276579693-9">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="mi">6173</span><span·class="p">,</span><span·class="w">240 ·</span><span·class="p"·data-group-id="9440690106-8">[</span><span·class="p"·data-group-id="9440690106-9">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="mi">6173</span><span·class="p">,</span><span·class="w">
241 ·········</span><span·class="p"·data-group-id="7276579693-10">[</span><span·class="p"·data-group-id="7276579693-11">{</span><span·class="p"·data-group-id="7276579693-12">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_1</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·157,·SHA:·353e7e2834642bf33dd19f72172e49de55d08bb1a41728908b8b6f7e027fb212·...·]-11">}</span><span·class="p">,</span><span·class="w">241 ·········</span><span·class="p"·data-group-id="9440690106-10">[</span><span·class="p"·data-group-id="9440690106-11">{</span><span·class="p"·data-group-id="9440690106-12">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_1</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·157,·SHA:·c1f29c25b44377163bc7ed1dc8da5b10f795192d91cc50d41fd3b96247df8fc3·...·]-11">}</span><span·class="p">,</span><span·class="w">
242 ··········</span><span·class="p"·data-group-id="7276579693-13">{</span><span·class="p"·data-group-id="7276579693-14">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_2</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693-14[·...·truncated·by·diffoscope;·len:·102,·SHA:·d900a04ffa26798ff4bf8ffc8ad842c8f5066b6962d9a09093700424affb8e9e·...·]-13">}</span><span·class="p">,</span><span·class="w">242 ··········</span><span·class="p"·data-group-id="9440690106-13">{</span><span·class="p"·data-group-id="9440690106-14">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_2</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106-14[·...·truncated·by·diffoscope;·len:·102,·SHA:·b8bc38db989e51ec10d5191f334d50b91794ce4869f5a652e43078047ef710a2·...·]-13">}</span><span·class="p">,</span><span·class="w">
243 ··········</span><span·class="p"·data-group-id="7276579693-15">{</span><span·class="p"·data-group-id="7276579693-16">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">split_1</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="7276579693-16">[·...·truncated·by·diffoscope;·len:·100,·SHA:·0fa566ac49ed56365f148974b01d24bfc62136beb635edfa09d2101ebdcc6df1·...·]-15">}</span><span·class="p">,</span><span·class="w">243 ··········</span><span·class="p"·data-group-id="9440690106-15">{</span><span·class="p"·data-group-id="9440690106-16">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">split_1</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="9440690106-16">[·...·truncated·by·diffoscope;·len:·100,·SHA:·367167e30c7b92da441535c8484eadd0fe237ef5820497b73db135fa74e39c8f·...·]-15">}</span><span·class="p">,</span><span·class="w">
244 ··········</span><span·class="p"·data-group-id="7276579693-17">{</span><span·class="p"·data-group-id="7276579693-18">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_1</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693-18"[·...·truncated·by·diffoscope;·len:·101,·SHA:·91ce443eda1cde0ae79bcec3a748bc3f7e83ebb692fb059d53c69501422f0a80·...·]-17">}</span><span·class="p">,</span><span·class="w">244 ··········</span><span·class="p"·data-group-id="9440690106-17">{</span><span·class="p"·data-group-id="9440690106-18">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_1</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106-18"[·...·truncated·by·diffoscope;·len:·101,·SHA:·96a996a6d4437fa036569fcaff809dbe29f2a4d72316a1791845108c8ce593bd·...·]-17">}</span><span·class="p">,</span><span·class="w">
245 ··········</span><span·class="p"·data-group-id="7276579693-19">{</span><span·class="p"·data-group-id="7276579693-20">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_2</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693-20"[·...·truncated·by·diffoscope;·len:·101,·SHA:·76414c809638e319730c8824d20d78eb9cde6839b04d3306c483013c4193a52c·...·]-19">}</span><span·class="p">,</span><span·class="w">245 ··········</span><span·class="p"·data-group-id="9440690106-19">{</span><span·class="p"·data-group-id="9440690106-20">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_2</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106-20"[·...·truncated·by·diffoscope;·len:·101,·SHA:·8085f1c13699d846915daac3f573a5e4696a183855760cd1cafb65ba423f1f0c·...·]-19">}</span><span·class="p">,</span><span·class="w">
246 ··········</span><span·class="p"·data-group-id="7276579693-21">{</span><span·class="p"·data-group-id="7276579693-22">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_12_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693[·...·truncated·by·diffoscope;·len:·105,·SHA:·9cf4616672dd362cb05e3cf95f62b40bf454ca50adb62fdbe15228e95f8a2786·...·]-21">}</span><span·class="p">,</span><span·class="w">246 ··········</span><span·class="p"·data-group-id="9440690106-21">{</span><span·class="p"·data-group-id="9440690106-22">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_12_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106[·...·truncated·by·diffoscope;·len:·105,·SHA:·82d211c68ffcf199ef95e6925be146876133b1942107ef073db2554fcd81fed9·...·]-21">}</span><span·class="p">,</span><span·class="w">
247 ··········</span><span·class="p"·data-group-id="7276579693-23">{</span><span·class="p"·data-group-id="7276579693-24">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">split_1_1</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693-24[·...·truncated·by·diffoscope;·len:·102,·SHA:·f73f6ab5bc6575139d00dd6b242189603eb84309334720dff8186e7a91f64ae7·...·]-23">}</span><span·class="p">,</span><span·class="w">247 ··········</span><span·class="p"·data-group-id="9440690106-23">{</span><span·class="p"·data-group-id="9440690106-24">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">split_1_1</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106-24[·...·truncated·by·diffoscope;·len:·102,·SHA:·0e7d39799bf56c1ace7d8ccf2e63c9050bc8c4a53a4bd8446563cb1a0d92c452·...·]-23">}</span><span·class="p">,</span><span·class="w">
248 ··········</span><span·class="p"·data-group-id="7276579693-25">{</span><span·class="p"·data-group-id="7276579693-26">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_12_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693-[·...·truncated·by·diffoscope;·len:·104,·SHA:·2832f846acab9b1755668be989b15ba04fb254329bef054d23d1e36ba444ef37·...·]-25">}</span><span·class="p">,</span><span·class="w">248 ··········</span><span·class="p"·data-group-id="9440690106-25">{</span><span·class="p"·data-group-id="9440690106-26">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_12_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106-[·...·truncated·by·diffoscope;·len:·104,·SHA:·ca6a8a319678fb58a82bcbc3e7ceff322b61ee4674ce91f51de1b5d92cdb4cd7·...·]-25">}</span><span·class="p">,</span><span·class="w">
249 ··········</span><span·class="p"·data-group-id="7276579693-27">{</span><span·class="p"·data-group-id="7276579693-28">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_21_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693[·...·truncated·by·diffoscope;·len:·105,·SHA:·f23673894ffef1f336eadac8a16fed8b2c86009a910b51e18484d4d102a12f42·...·]-27">}</span><span·class="p">,</span><span·class="w">249 ··········</span><span·class="p"·data-group-id="9440690106-27">{</span><span·class="p"·data-group-id="9440690106-28">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge3_21_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106[·...·truncated·by·diffoscope;·len:·105,·SHA:·9da9808d005972b05a7d43268cf3f918021b0adf50c5a0ca61d819ed2431747c·...·]-27">}</span><span·class="p">,</span><span·class="w">
250 ··········</span><span·class="p"·data-group-id="7276579693-29">{</span><span·class="p"·data-group-id="7276579693-30">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_21_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7276579693-[·...·truncated·by·diffoscope;·len:·104,·SHA:·2c062e13198b2c47dafdcc198172f67e4a557f1ea03351872170127912f3ff0d·...·]-29">}</span><span·class="p">,</span><span·class="w">250 ··········</span><span·class="p"·data-group-id="9440690106-29">{</span><span·class="p"·data-group-id="9440690106-30">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge3_21_3</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9440690106-[·...·truncated·by·diffoscope;·len:·104,·SHA:·01be86f5ee35f89aeb9644f62755848993afd8a554ddbd8c54a51bffb3e3a907·...·]-29">}</span><span·class="p">,</span><span·class="w">
251 ··········</span><span·class="p"·data-group-id="7276579693-31">{</span><span·class="p"·data-group-id="7276579693-32">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge2_1</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="7276579693-32"[·...·truncated·by·diffoscope;·len:·101,·SHA:·070118a5666fa0d87c77e01b36fa42e4e3795157e7c146584f402f89de58cd85·...·]-31">}</span><span·class="p">,</span><span·class="w">251 ··········</span><span·class="p"·data-group-id="9440690106-31">{</span><span·class="p"·data-group-id="9440690106-32">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge2_1</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="9440690106-32"[·...·truncated·by·diffoscope;·len:·101,·SHA:·69e2f511b67e82cd148a5615e2717d12c0be105daab9c387d6a6e5357af7d740·...·]-31">}</span><span·class="p">,</span><span·class="w">
252 ··········</span><span·class="p"·data-group-id="7276579693-33">{</span><span·class="p"·data-group-id="7276579693-34">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge2_2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="7276579693-34"[·...·truncated·by·diffoscope;·len:·101,·SHA:·04fa4c373e19170163f07eb55717100b5bcbfd310b193d253f3bfe8041d15c38·...·]-33">}</span><span·class="p">,</span><span·class="w">252 ··········</span><span·class="p"·data-group-id="9440690106-33">{</span><span·class="p"·data-group-id="9440690106-34">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">merge2_2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="9440690106-34"[·...·truncated·by·diffoscope;·len:·101,·SHA:·196f3dba642c8d1321a3c5ad97b679f6305719cbbec66d21efe231772fdb0c37·...·]-33">}</span><span·class="p">,</span><span·class="w">
253 ··········</span><span·class="p"·data-group-id="7276579693-35">{</span><span·class="p"·data-group-id="7276579693-36">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">reverse</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7276579693-36">[·...·truncated·by·diffoscope;·len:·100,·SHA:·5a447838d663823e135b97eb8ec476e707000ad2a8faa185f0af32b3ed5b855e·...·]-35">}</span><span·class="p">,</span><span·class="w">253 ··········</span><span·class="p"·data-group-id="9440690106-35">{</span><span·class="p"·data-group-id="9440690106-36">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">reverse</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9440690106-36">[·...·truncated·by·diffoscope;·len:·100,·SHA:·0485b901f8c6f17249f90689368c9e43c9c1ed7136f40aa817e4703d35d57b49·...·]-35">}</span><span·class="p">,</span><span·class="w">
254 ··········</span><span·class="p"·data-group-id="7276579693-37">{</span><span·class="p"·data-group-id="7276579693-38">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge2_2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="7276579693-38[·...·truncated·by·diffoscope;·len:·101,·SHA:·9287d25bf77d90353cde68e6a659e4858ee5b0477982e56040d4aaa16d19bbbe·...·]-37">}</span><span·class="p">,</span><span·class="w">254 ··········</span><span·class="p"·data-group-id="9440690106-37">{</span><span·class="p"·data-group-id="9440690106-38">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge2_2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="9440690106-38[·...·truncated·by·diffoscope;·len:·101,·SHA:·41272f8fa6796e6b35158fdde3740dfe8d14d5d79bf1aad175ad9f6632815ff3·...·]-37">}</span><span·class="p">,</span><span·class="w">
255 ··········</span><span·class="p"·data-group-id="7276579693-39">{</span><span·class="p"·data-group-id="7276579693-40">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmergel</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7276579693-40">[·...·truncated·by·diffoscope;·len:·99,·SHA:·bd07effa59419f4464f72dd75ceb75c341bf91a7cafe1e58d3106d7d6ca10205·...·]-39">}</span><span·class="p">,</span><span·class="w">255 ··········</span><span·class="p"·data-group-id="9440690106-39">{</span><span·class="p"·data-group-id="9440690106-40">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmergel</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9440690106-40">[·...·truncated·by·diffoscope;·len:·99,·SHA:·15db022a1060f22eb175aafe5608f7b23f3301b179b040a86e22c1ccb1c896f1·...·]-39">}</span><span·class="p">,</span><span·class="w">
256 ··········</span><span·class="p"·data-group-id="7276579693-41">{</span><span·class="p"·data-group-id="7276579693-42">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge2_1</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="7276579693-42[·...·truncated·by·diffoscope;·len:·101,·SHA:·510857c39af62e67ea67d444c14271739104bf3d8f7380bd84f6dbd32c573260·...·]-41">}</span><span·class="p">,</span><span·class="w">256 ··········</span><span·class="p"·data-group-id="9440690106-41">{</span><span·class="p"·data-group-id="9440690106-42">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">rmerge2_1</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="9440690106-42[·...·truncated·by·diffoscope;·len:·101,·SHA:·742f77e646ada2bc0c4b5153eed080ded8d482e853dc42fcb3cb4d6ec39e8a94·...·]-41">}</span><span·class="p">,</span><span·class="w">
257 ··········</span><span·class="p"·data-group-id="7276579693-43">{</span><span·class="p"·data-group-id="7276579693-44">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">mergel</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7276579693-44">}[·...·truncated·by·diffoscope;·len:·98,·SHA:·f7361d3dbdc9c2d79d7c4e564316822051232af0289bb49fc2426d6d5daed9d1·...·]-43">}</span><span·class="p">,</span><span·class="w">257 ··········</span><span·class="p"·data-group-id="9440690106-43">{</span><span·class="p"·data-group-id="9440690106-44">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">mergel</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9440690106-44">}[·...·truncated·by·diffoscope;·len:·98,·SHA:·8d2c40aeb17e639f2273612714f1794da706ce22b5bee91c07885f87471054aa·...·]-43">}</span><span·class="p">,</span><span·class="w">
258 ··········</span><span·class="p"·data-group-id="7276579693-45">{</span><span·class="p"·data-group-id="7276579693-46">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">keyfind</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7276579693-46">[·...·truncated·by·diffoscope;·len:·98,·SHA:·d5b5845aedded1dffe66ab749007996ddcfc81bbd0d5a8bf0e978405d89ec644·...·]-45">}</span><span·class="p">,</span><span·class="w">258 ··········</span><span·class="p"·data-group-id="9440690106-45">{</span><span·class="p"·data-group-id="9440690106-46">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">keyfind</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9440690106-46">[·...·truncated·by·diffoscope;·len:·98,·SHA:·3883bfc257e2b10146199b22b4356b3b53ccae59435738e6a96805033f50939e·...·]-45">}</span><span·class="p">,</span><span·class="w">
259 ··········</span><span·class="p"·data-group-id="7276579693-47">{</span><span·class="p"·data-group-id="7276579693-48">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7276579693-48">}</[·...·truncated·by·diffoscope;·len:·203,·SHA:·46a3f94fc03f42c60b52916d10fbf2b1e537ab7a392db6c6f454a5efca9e58ff·...·]-9">}</span><span·class="p">,</span><span·class="w">259 ··········</span><span·class="p"·data-group-id="9440690106-47">{</span><span·class="p"·data-group-id="9440690106-48">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9440690106-48">}</[·...·truncated·by·diffoscope;·len:·203,·SHA:·dfc9b91396578dddbe4a8d3eca0d6e2d0821c2f44fd97e05b5dbbf3e74bc0167·...·]-9">}</span><span·class="p">,</span><span·class="w">
260 ··</span><span·class="p"·data-group-id="7276579693-49">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="mi">5000</span><span·class="p">,</span><span·class="w">260 ··</span><span·class="p"·data-group-id="9440690106-49">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="mi">5000</span><span·class="p">,</span><span·class="w">
261 ········</span><span·class="p"·data-group-id="7276579693-50">[</span><span·class="p"·data-group-id="7276579693-51">{</span><span·class="p"·data-group-id="7276579693-52">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">uniform_s</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·156,·SHA:·e9dedbfc0127bd70f8975479d30d81b905b12896c26f4113623832ae9db66f09·...·]-51">}</span><span·class="p">,</span><span·class="w">261 ········</span><span·class="p"·data-group-id="9440690106-50">[</span><span·class="p"·data-group-id="9440690106-51">{</span><span·class="p"·data-group-id="9440690106-52">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">uniform_s</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·156,·SHA:·2b3c598909c1e90566a01804915f95de8b0de3f1a3f44a74f4657a027f71a161·...·]-51">}</span><span·class="p">,</span><span·class="w">
262 ·········</span><span·class="p"·data-group-id="7276579693-53">{</span><span·class="p"·data-group-id="7276579693-54">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">uniform</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7276579693-54">}[·...·truncated·by·diffoscope;·len:·100,·SHA:·4d836ec3373bd99bd6e4dc65229cdf1e712e4e6df2bee05b0dc2bce47a666c04·...·]-53">}</span><span·class="p">,</span><span·class="w">262 ·········</span><span·class="p"·data-group-id="9440690106-53">{</span><span·class="p"·data-group-id="9440690106-54">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">uniform</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9440690106-54">}[·...·truncated·by·diffoscope;·len:·100,·SHA:·89529ef02af70435c829e1c655a27d05a91f8ae0354f8b4d80cdf058566f47bc·...·]-53">}</span><span·class="p">,</span><span·class="w">
263 ·········</span><span·class="p"·data-group-id="7276579693-55">{</span><span·class="p"·data-group-id="7276579693-56">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">seed_put</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7276579693-56">[·...·truncated·by·diffoscope;·len:·101,·SHA:·c44a0014f14b804467048bd083b4ef03b6570d0682d0951c91084364bc3bdc75·...·]-55">}</span><span·class="p">,</span><span·class="w">263 ·········</span><span·class="p"·data-group-id="9440690106-55">{</span><span·class="p"·data-group-id="9440690106-56">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">seed_put</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9440690106-56">[·...·truncated·by·diffoscope;·len:·101,·SHA:·410072d7d623850247a954e515d17ffd988e00ba17b1f1dae067b2623fae5da0·...·]-55">}</span><span·class="p">,</span><span·class="w">
264 ·········</span><span·class="p"·data-group-id="7276579693-57">{</span><span·class="p"·data-group-id="7276579693-58">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">seed_get</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7276579693-58">[·...·truncated·by·diffoscope;·len:·101,·SHA:·c44a0014f14b804467048bd083b4ef03b6570d0682d0951c91084364bc3bdc75·...·]-57">}</span><span·class="p">,</span><span·class="w">264 ·········</span><span·class="p"·data-group-id="9440690106-57">{</span><span·class="p"·data-group-id="9440690106-58">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">seed_get</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="9440690106-58">[·...·truncated·by·diffoscope;·len:·101,·SHA:·410072d7d623850247a954e515d17ffd988e00ba17b1f1dae067b2623fae5da0·...·]-57">}</span><span·class="p">,</span><span·class="w">
265 ·········</span><span·class="p"·data-group-id="7276579693-59">{</span><span·class="p"·data-group-id="7276579693-60">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">exsss_uniform</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7276579693[·...·truncated·by·diffoscope;·len:·214,·SHA:·60e2fd653df0027b614e7d909540210ebeba89e261621a3d11e583be4e253f24·...·]-49">}</span><span·class="p">,</span><span·class="w">265 ·········</span><span·class="p"·data-group-id="9440690106-59">{</span><span·class="p"·data-group-id="9440690106-60">{</span><span·class="ss">rand</span><span·class="p">,</span><span·class="ss">exsss_uniform</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9440690106[·...·truncated·by·diffoscope;·len:·214,·SHA:·52c32c3da8e47ccfdd1e65452a65338016d26ddda47b6edf16c463de90df099b·...·]-49">}</span><span·class="p">,</span><span·class="w">
266 ··</span><span·class="p"·data-group-id="7276579693-61">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="mi">1004</span><span·class="p">,</span><span·class="w">266 ··</span><span·class="p"·data-group-id="9440690106-61">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="mi">1004</span><span·class="p">,</span><span·class="w">
267 ··········</span><span·class="p"·data-group-id="7276579693-62">[</span><span·class="p"·data-group-id="7276579693-63">{</span><span·class="p"·data-group-id="7276579693-64">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">put</span><span·class="p">,</span><span·class="mi">2</[·...·truncated·by·diffoscope;·len:·152,·SHA:·003e1f87c50c4ebc64cfa58fab1a04aa248f4169a51c68e70270e0a6eee25446·...·]-63">}</span><span·class="p">,</span><span·class="w">267 ··········</span><span·class="p"·data-group-id="9440690106-62">[</span><span·class="p"·data-group-id="9440690106-63">{</span><span·class="p"·data-group-id="9440690106-64">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">put</span><span·class="p">,</span><span·class="mi">2</[·...·truncated·by·diffoscope;·len:·152,·SHA:·7e100c9cfb850674536bcb8daba0e939fa36fd79afd173bfffc5894421714155·...·]-63">}</span><span·class="p">,</span><span·class="w">
268 ···········</span><span·class="p"·data-group-id="7276579693-65">{</span><span·class="p"·data-group-id="7276579693-66">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="72765796[·...·truncated·by·diffoscope;·len:·105,·SHA:·9acf8ffaacbcdfc96b8da2c9ed18ea66446ea09eebb4557874d40076c8c1179d·...·]-65">}</span><span·class="p">,</span><span·class="w">268 ···········</span><span·class="p"·data-group-id="9440690106-65">{</span><span·class="p"·data-group-id="9440690106-66">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="94406901[·...·truncated·by·diffoscope;·len:·105,·SHA:·d80a00be92523e48730a9ab706fb53215c5d101fef3a1a9ca752ab38867f18c5·...·]-65">}</span><span·class="p">,</span><span·class="w">
269 ···········</span><span·class="p"·data-group-id="7276579693-67">{</span><span·class="p"·data-group-id="7276579693-68">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="ss">ensure_tracer_module_loaded</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7276579693-68">}</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7276579693-67">}</span><span·class="p"·data-group-id="7276579693-62">]</span><span·class="p"·data-group-id="7276579693-61">}</span><span·class="p">,</span><span·class="w"> 
270 ··</span><span·class="p"·data-group-id="7276579693-69">{</span><span·class="ss">sort</span><span·class="p">,</span><span·class="mi">1001</span><span·class="p">,</span><span·class="p"·data-group-id="7276579693-70">[</span><span·class="p"·data-group-id="7276579693-71">{</span><span·class="p"·data-group-id="7276579693-72">{</span><span·class="ss">sort</span><span·class="p">,</span><span·class="ss">do</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7276579693-72">}</span><span·class="p">,</span><span·class="mi">1001</span><span·class="p"·data-group-id="7276579693-71">}</span><span·class="p"·data-group-id="7276579693-70">]</span><span·class="p"·data-group-id="7276579693-69">}</span><span·class="p">,</span><span·class="w"> 
271 ··</span><span·class="p"·data-group-id="7276579693-73">{</span><span·class="ss">erts_internal</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="p"·data-group-id="7276579693-74">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·623,·SHA:·39d2a975fc4fb96a2393898dea354896baaa0fe62de67d363e17d2ee31393856·...·]">269 ···········</span><span·class="p"·data-group-id="9440690106-67">{</span><span·class="p"·data-group-id="9440690106-68">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="ss">ensure_tracer_module_loaded</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·325,·SHA:·312a6f9319e7971b542e2a17751402f6e47152d8b0308a35759c93532924c9d9·...·]">
Max diff block lines reached; 414/84909 bytes (0.49%) of diff not shown.
14.7 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/erlang-el.html
    
Offset 207, 31 lines modifiedOffset 207, 31 lines modified
207 ····<i·class="ri-link-m"·aria-hidden="true"></i>207 ····<i·class="ri-link-m"·aria-hidden="true"></i>
208 ··</a>208 ··</a>
209 ··<span·class="text">Edit·-·Alignment</span>209 ··<span·class="text">Edit·-·Alignment</span>
210 </h2>210 </h2>
211 <ul><li>··<em><code·class="inline">C-c·C-a</code></em>·(<code·class="inline">align-current</code>)·-·aligns·comments,·arrows,·assignments,211 <ul><li>··<em><code·class="inline">C-c·C-a</code></em>·(<code·class="inline">align-current</code>)·-·aligns·comments,·arrows,·assignments,
212 and·type·annotations·around·the·cursor.</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Example</span><span·class="p">:</span><span·class="w">212 and·type·annotations·around·the·cursor.</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Example</span><span·class="p">:</span><span·class="w">
  
213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="6043505895-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-2">(</span><[·...·truncated·by·diffoscope;·len:·137,·SHA:·92e77902d8ebf808dbc1e25c9c2531e874b7788172be45080f7669af04bdef8a·...·]-2">)</span><span·class="p">.</span><span·class="w">213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="9865029104-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-2">(</span><[·...·truncated·by·diffoscope;·len:·137,·SHA:·cb6dbb36cd4e609afa3aa06abc6140bfe77c6b702b83c81f2b32428486317970·...·]-2">)</span><span·class="p">.</span><span·class="w">
214 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-3">(</span><span·class="p"·data-group-id="6043505895-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6043505895-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·967ed668251551761cbc962d18c5978e088aca97f2b1364cfed8db9db3e14ce9·...·]-5">)</span><span·class="p">;</span><span·class="w">··</span><span·class="c1">%·recurse</span><span·class="w">214 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-3">(</span><span·class="p"·data-group-id="9865029104-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9865029104-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·7cf5ec4c02adb973b841dd06b8c2abf620d18490419822d9f407315de3358256·...·]-5">)</span><span·class="p">;</span><span·class="w">··</span><span·class="c1">%·recurse</span><span·class="w">
215 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-6">(</span><span·class="p"·data-group-id="6043505895-7">[</span><span·class="p"·data-group-id="6043505895-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="6043505895-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·base·case</span><span·class="w">215 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-6">(</span><span·class="p"·data-group-id="9865029104-7">[</span><span·class="p"·data-group-id="9865029104-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="9865029104-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·base·case</span><span·class="w">
216 </span><span·class="w">216 </span><span·class="w">
217 </span><span·class="p">-</span><span·class="na">record</span><span·class="w">·</span><span·class="p"·data-group-id="6043505895-8">{</span><span·class="w">·</span><span·class="ss">two</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="6043505895-9">(</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·de85f9ae75113242048a5e526bce4f70dff2d01ff655bfa8a375a6efe57a05f4·...·]-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·hello</span><span·class="w">217 </span><span·class="p">-</span><span·class="na">record</span><span·class="w">·</span><span·class="p"·data-group-id="9865029104-8">{</span><span·class="w">·</span><span·class="ss">two</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="9865029104-9">(</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·b6d11a3f0807b715cc10de460c8af3cd990d816a2fa757c6f9d27d3f596fb025·...·]-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·hello</span><span·class="w">
218 ··········</span><span·class="ss">three</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="6043505895-10">(</span><span·class="p"·data-group-id="6043505895-10">)</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%·there</span><span·class="w">218 ··········</span><span·class="ss">three</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="9865029104-10">(</span><span·class="p"·data-group-id="9865029104-10">)</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%·there</span><span·class="w">
219 ··········</span><span·class="ss">four</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="6043505895-11">(</span><span·class="p"·data-group-id="6043505895-11">)</span><span·class="w">·</span><span·class="p"·data-group-id="6043505895-8">}</span><span·class="p">.</span><span·class="w">219 ··········</span><span·class="ss">four</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="9865029104-11">(</span><span·class="p"·data-group-id="9865029104-11">)</span><span·class="w">·</span><span·class="p"·data-group-id="9865029104-8">}</span><span·class="p">.</span><span·class="w">
  
220 </span><span·class="nc">becomes</span><span·class="p">:</span><span·class="w">220 </span><span·class="nc">becomes</span><span·class="p">:</span><span·class="w">
  
221 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-12">(</span><span·class="n">L</span><span·class="p"·data-group-id="6043505895-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-13">(</spa[·...·truncated·by·diffoscope;·len:·140,·SHA:·57bbc4f543050513002ea15ca12b74ea051c9c50e9871b16b51b82aa01bdd073·...·]-13">)</span><span·class="p">.</span><span·class="w">221 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-12">(</span><span·class="n">L</span><span·class="p"·data-group-id="9865029104-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-13">(</spa[·...·truncated·by·diffoscope;·len:·140,·SHA:·5bb0e6a171d742ffc67629eec29b70cb045caa7b4c89e8133f9168c68feb7319·...·]-13">)</span><span·class="p">.</span><span·class="w">
222 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-14">(</span><span·class="p"·data-group-id="6043505895-15">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6043505895-15">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·467,·SHA:·7a3ed087413b683b001a7c15852cb230ae80e5ca8ff5d02d906a5bf7c290ea4e·...·]-16">)</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·recurse</span><span·class="w">222 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-14">(</span><span·class="p"·data-group-id="9865029104-15">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9865029104-15">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·467,·SHA:·15ed01b3d2958415853eefc152f436fffa50610028445ce539a4911f3200e4bd·...·]-16">)</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·recurse</span><span·class="w">
223 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6043505895-17">(</span><span·class="p"·data-group-id="6043505895-18">[</span><span·class="p"·data-group-id="6043505895-18">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="6043505895-17">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p">.</span><span·class="w">·············</span><span·class="c1">%·base·case</span><span·class="w">223 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9865029104-17">(</span><span·class="p"·data-group-id="9865029104-18">[</span><span·class="p"·data-group-id="9865029104-18">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="9865029104-17">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p">.</span><span·class="w">·············</span><span·class="c1">%·base·case</span><span·class="w">
224 </span><span·class="w">224 </span><span·class="w">
225 </span><span·class="p">-</span><span·class="na">record</span><span·class="w">·</span><span·class="p"·data-group-id="6043505895-19">{</span><span·class="w">·</span><span·class="ss">two</span><span·class="w">···········</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="6043505895-20">(</[·...·truncated·by·diffoscope;·len:·46,·SHA:·5767b137d52b623aee0b19051ee0384d6328ba6654c0bd1f366f3835d5e23518·...·]-20">)</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%·hello</span><span·class="w">225 </span><span·class="p">-</span><span·class="na">record</span><span·class="w">·</span><span·class="p"·data-group-id="9865029104-19">{</span><span·class="w">·</span><span·class="ss">two</span><span·class="w">···········</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="9865029104-20">(</[·...·truncated·by·diffoscope;·len:·46,·SHA:·2e438fc62d37b1f4468224c5aea95a8312a6fa4ce061c4d90175ea49d387e9cf·...·]-20">)</span><span·class="p">,</span><span·class="w">····</span><span·class="c1">%·hello</span><span·class="w">
226 ··········</span><span·class="ss">three</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="6043505895-21">(</span><span·class="p"·data-group-id="6043505895-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·there</span><span·class="w">226 ··········</span><span·class="ss">three</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">hello</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">string</span><span·class="p"·data-group-id="9865029104-21">(</span><span·class="p"·data-group-id="9865029104-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·there</span><span·class="w">
227 ··········</span><span·class="ss">four</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">····</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="6043505895-22">(</span><span·class="p"·data-group-id="6043505895-22">)</span><span·class="w">·</span><span·class="p"·data-group-id="6043505895-19">}</span><span·class="p">.</span></code></pre><h2·id="syntax-highlighting"·class="section-heading">227 ··········</span><span·class="ss">four</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">42</span><span·class="w">····</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">int</span><span·class="p"·data-group-id="9865029104-22">(</span><span·class="p"·data-group-id="9865029104-22">)</span><span·class="w">·</span><span·class="p"·data-group-id="9865029104-19">}</span><span·class="p">.</span></code></pre><h2·id="syntax-highlighting"·class="section-heading">
228 ··<a·href="#syntax-highlighting"·class="hover-link">228 ··<a·href="#syntax-highlighting"·class="hover-link">
229 ····<i·class="ri-link-m"·aria-hidden="true"></i>229 ····<i·class="ri-link-m"·aria-hidden="true"></i>
230 ··</a>230 ··</a>
231 ··<span·class="text">Syntax·highlighting</span>231 ··<span·class="text">Syntax·highlighting</span>
232 </h2>232 </h2>
233 <p>The·syntax·highlighting·can·be·activated·from·the·Erlang·menu.·There·are·four233 <p>The·syntax·highlighting·can·be·activated·from·the·Erlang·menu.·There·are·four
234 different·alternatives:</p><ul><li>··Off:·Normal·black·and·white·display.</li><li>··Level·1:·Function·headers,·reserved·words,·comments,·strings,·quoted·atoms,234 different·alternatives:</p><ul><li>··Off:·Normal·black·and·white·display.</li><li>··Level·1:·Function·headers,·reserved·words,·comments,·strings,·quoted·atoms,
136 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/fprof.html
    
Offset 171, 69 lines modifiedOffset 171, 69 lines modified
171 </h2>171 </h2>
172 <p>This·section·describes·the·output·format·of·the·<a·href="#analyse/1"><code·class="inline">analyse/1</code></a>·function.</p><p>The·format·is·parsable·with·the·standard·Erlang·parsing·tools172 <p>This·section·describes·the·output·format·of·the·<a·href="#analyse/1"><code·class="inline">analyse/1</code></a>·function.</p><p>The·format·is·parsable·with·the·standard·Erlang·parsing·tools
173 <a·href="../../../../lib/stdlib-6.2/doc/html/erl_scan.html"><code·class="inline">erl_scan</code></a>·and·<a·href="../../../../lib/stdlib-6.2/doc/html/erl_parse.html"><code·class="inline">erl_parse</code></a>,·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>,·or·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#read/2"><code·class="inline">io:read/2</code></a>.·The173 <a·href="../../../../lib/stdlib-6.2/doc/html/erl_scan.html"><code·class="inline">erl_scan</code></a>·and·<a·href="../../../../lib/stdlib-6.2/doc/html/erl_parse.html"><code·class="inline">erl_parse</code></a>,·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>,·or·<a·href="../../../../lib/stdlib-6.2/doc/html/io.html#read/2"><code·class="inline">io:read/2</code></a>.·The
174 parse·format·is·not·described·here··it·should·be·easy·enough·for·the174 parse·format·is·not·described·here··it·should·be·easy·enough·for·the
175 interested·reader·to·try·it·out.·Note·that·some·flags·to175 interested·reader·to·try·it·out.·Note·that·some·flags·to
176 <a·href="#analyse/1"><code·class="inline">analyse/1</code></a>·will·affect·the·format.</p><p>The·following·example·was·run·on·Erlang/OTP·R8·on·Solaris·8;·all·OTP176 <a·href="#analyse/1"><code·class="inline">analyse/1</code></a>·will·affect·the·format.</p><p>The·following·example·was·run·on·Erlang/OTP·R8·on·Solaris·8;·all·OTP
177 internals·in·this·example·are·version·dependent.</p><p>As·an·example,·we·will·use·the·following·function,·which·is·a177 internals·in·this·example·are·version·dependent.</p><p>As·an·example,·we·will·use·the·following·function,·which·is·a
178 slightly·modified·benchmark·function·from·module·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0564332749-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="0564332749-1">)</span><span·class="p">.</span><span·class="w">178 slightly·modified·benchmark·function·from·module·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html"><code·class="inline">file</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4380088831-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="4380088831-1">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0564332749-2">(</span><span·class="p"·data-group-id="0564332749-3">[</span><span·class="ss">create_file_slow</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="0564332749-3">]</span><span·class="p"·data-group-id="05643327[·...·truncated·by·diffoscope;·len:·2,·SHA:·0e17daca5f3e175f448bacace3bc0da47d0655a74c8dd0dc497a3afbdad95f1f·...·]-2">)</span><span·class="p">.</span><span·class="w">179 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4380088831-2">(</span><span·class="p"·data-group-id="4380088831-3">[</span><span·class="ss">create_file_slow</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="4380088831-3">]</span><span·class="p"·data-group-id="43800888[·...·truncated·by·diffoscope;·len:·2,·SHA:·eb1e33e8a81b697b75855af6bfcdbcbf7cbbde9f94962ceaec1ed8af21f5a50f·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="0564332749-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="0564332749-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·145,·SHA:·aef6209741da93a8da9c47021194f6b875ca16cb01362581987b206c26acbcb1·...·]-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4380088831-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="4380088831-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·145,·SHA:·fe617d0e27416ec3ba2f5935808163aa8a433e7ad6b29179e688a9e086f98938·...·]-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="p"·data-group-id="0564332749-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FD</span><span·class="p"·data-group-id="0564332749-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">181 ····</span><span·class="p"·data-group-id="4380088831-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FD</span><span·class="p"·data-group-id="4380088831-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
182 ········</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="0564332749-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0564332749-8">[</span><span·class="ss">raw</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><s[·...·truncated·by·diffoscope;·len:·255,·SHA:·9ea4da65fa1db4b0c13a883734a276d047d109c69f698dedc92f5b5da5b580ab·...·]-7">)</span><span·class="p">,</span><span·class="w">182 ········</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">open</span><span·class="p"·data-group-id="4380088831-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4380088831-8">[</span><span·class="ss">raw</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><s[·...·truncated·by·diffoscope;·len:·255,·SHA:·63189209be0f6f8b1a15c7fd04abd17b8cc7c42258978666c7f6ec9eed319a51·...·]-7">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="k">if</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">256</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">183 ····</span><span·class="k">if</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">256</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="0564332749-9">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">184 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4380088831-9">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">
185 ····························</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="0564332749-10">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0564332749-11">(</span><span·class="n">X</span><span·class="p"·data-group-id="0564332749-11">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·258,·SHA:·6b5163cd8289fd6ea3e5a75d23eacd540200b55be469aa6856be641d77a1d440·...·]-12">&gt;&gt;</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">185 ····························</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="4380088831-10">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4380088831-11">(</span><span·class="n">X</span><span·class="p"·data-group-id="4380088831-11">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·258,·SHA:·193be76d3acd2a687c065994baa45368794fd79b9415dac71a67884931ca0d8b·...·]-12">&gt;&gt;</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
186 ····························</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="0564332749-13">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">255</span><span·class="p"·data-group-id="0564332749-13">)</span><span·class="p"·data-group-id="0564332749-10">)</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·9c7fe5eddd287c4361e58472b5384394043f2e107e0be73ceb6df89cd666073f·...·]-9">)</span><span·class="p">,</span><span·class="w">186 ····························</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">seq</span><span·class="p"·data-group-id="4380088831-13">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">255</span><span·class="p"·data-group-id="4380088831-13">)</span><span·class="p"·data-group-id="4380088831-10">)</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·041bc9a2f8e03f3bc045b635b3b05fa6d9eb3f4f8327121a857316b5f330ff2a·...·]-9">)</span><span·class="p">,</span><span·class="w">
187 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="0564332749-14">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">256</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="0564332749-14">)</span><span·class="p">;</span><span·class="w">187 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4380088831-14">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">256</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="4380088831-14">)</span><span·class="p">;</span><span·class="w">
188 ·······</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 ·······</span><span·class="ss">true</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
189 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="0564332749-15">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="0564332749-15">)</span><span·class="w">189 ············</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4380088831-15">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="4380088831-15">)</span><span·class="w">
190 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="0564332749-16">(</span><span·class="n">FD</span><span·class="p"·data-group-id="0564332749-16">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">close</span><span·class="p"·data-group-id="4380088831-16">(</span><span·class="n">FD</span><span·class="p"·data-group-id="4380088831-16">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="0564332749-17">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="0564332749-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4380088831-17">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p"·data-group-id="4380088831-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">193 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
194 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="0564332749-18">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="0564332749-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4380088831-18">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="4380088831-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
195 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="0564332749-19">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0564332749-20">&lt;&lt;</span><span·class="n">M</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><[·...·truncated·by·diffoscope;·len:·133,·SHA:·1298eccb7458e35a63dd5c45a41b7591411725ac1909c833ca29a103f70307ab·...·]-19">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4380088831-19">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4380088831-20">&lt;&lt;</span><span·class="n">M</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><[·...·truncated·by·diffoscope;·len:·133,·SHA:·2f03e80f93d14bb93c9fbdb476568651e5bbfb8501e863a440ac258e3c17faed·...·]-19">)</span><span·class="p">,</span><span·class="w">
196 ····</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="0564332749-21">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="0564332749-21">)</span><span·class="p">.</span></code></pre><p>Let·us·have·a·look·at·the·printout·after·running:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">apply</span><span·class="p"·data-group-id="2543124402-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2543124402-2">[</span><span·class="ss">junk</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1024</span><span·class="p"·data-group-id="2543124402-2">]</span><span·class="p"·data-group-id="2543124402-1">)</span><span·class="p">.</span><span·class="gp·unselectable"> 
197 2&gt;·</span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="2543124402-3">(</span><span·class="p"·data-group-id="2543124402-3">)</span><span·class="p">.</span><span·class="gp·unselectable">196 ····</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4380088831-21">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="n">M</span><span·class="o">+</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·856,·SHA:·a0a794bd1b3d6b3dfa1bcbb91b3279d851542a41f9f866e6bf9ab50d56e04b51·...·]">)</span><span·class="p">.</span><span·class="gp·unselectable">
 197 2&gt;·</span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="3741781399-3">(</span><span·class="p"·data-group-id="3741781399-3">)</span><span·class="p">.</span><span·class="gp·unselectable">
198 3&gt;·</span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="2543124402-4">(</span><span·class="p"·data-group-id="2543124402-4">)</span><span·class="p">.</span></code></pre><p>The·printout·starts·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Analysis·results:</span><span·class="w">198 3&gt;·</span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="3741781399-4">(</span><span·class="p"·data-group-id="3741781399-4">)</span><span·class="p">.</span></code></pre><p>The·printout·starts·with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·Analysis·results:</span><span·class="w">
199 </span><span·class="p"·data-group-id="2149936025-1">{</span><span·class="w">··</span><span·class="ss">analysis_options</span><span·class="p">,</span><span·class="w">199 </span><span·class="p"·data-group-id="6539780551-1">{</span><span·class="w">··</span><span·class="ss">analysis_options</span><span·class="p">,</span><span·class="w">
200 ·</span><span·class="p"·data-group-id="2149936025-2">[</span><span·class="p"·data-group-id="2149936025-3">{</span><span·class="ss">callers</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2149936025-3">}</span><span·class="p">,</span><span·class="w">200 ·</span><span·class="p"·data-group-id="6539780551-2">[</span><span·class="p"·data-group-id="6539780551-3">{</span><span·class="ss">callers</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="6539780551-3">}</span><span·class="p">,</span><span·class="w">
201 ··</span><span·class="p"·data-group-id="2149936025-4">{</span><span·class="ss">sort</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">acc</span><span·class="p"·data-group-id="2149936025-4">}</span><span·class="p">,</span><span·class="w">201 ··</span><span·class="p"·data-group-id="6539780551-4">{</span><span·class="ss">sort</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">acc</span><span·class="p"·data-group-id="6539780551-4">}</span><span·class="p">,</span><span·class="w">
202 ··</span><span·class="p"·data-group-id="2149936025-5">{</span><span·class="ss">totals</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="2149936025-5">}</span><span·class="p">,</span><span·class="w">202 ··</span><span·class="p"·data-group-id="6539780551-5">{</span><span·class="ss">totals</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="6539780551-5">}</span><span·class="p">,</span><span·class="w">
203 ··</span><span·class="p"·data-group-id="2149936025-6">{</span><span·class="ss">details</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2149936025-6">}</span><span·class="p"·data-group-id="2149936025-2">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·80c0a723d0334cd6700dfb252b2e11ca7ea10136c5c56e7a162aff17937f8c38·...·]-1">}</span><span·class="p">.</span><span·class="w">203 ··</span><span·class="p"·data-group-id="6539780551-6">{</span><span·class="ss">details</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="6539780551-6">}</span><span·class="p"·data-group-id="6539780551-2">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·f3a7a6e556f4d5c41cf405dd0ab3bcafa36a1979378be1cbd40d8f120598a06b·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
204 </span><span·class="c1">%·······································CNT·······ACC·······OWN</span><span·class="w">204 </span><span·class="c1">%·······································CNT·······ACC·······OWN</span><span·class="w">
205 </span><span·class="p"·data-group-id="2149936025-7">[</span><span·class="p"·data-group-id="2149936025-8">{</span><span·class="w">·</span><span·class="ss">totals</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">9627</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·231,·SHA:·5b609e81b25fea91e1e39a7404d552d06204c0c1e2822503f03c2d1b6ae598c0·...·]-7">]</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%%%</span></code></pre><p>The·<code·class="inline">CNT</code>·column·shows·the·total·number·of·function·calls·that·was·found·in·the205 </span><span·class="p"·data-group-id="6539780551-7">[</span><span·class="p"·data-group-id="6539780551-8">{</span><span·class="w">·</span><span·class="ss">totals</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">9627</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·231,·SHA:·95fe1ca4ed57c46a0b8f26ed1805bf6822f55f5a6540cbf5a392a7a5bbee2a04·...·]-7">]</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%%%</span></code></pre><p>The·<code·class="inline">CNT</code>·column·shows·the·total·number·of·function·calls·that·was·found·in·the
206 trace.·In·the·<code·class="inline">ACC</code>·column·is·the·total·time·of·the·trace·from·first·timestamp·to206 trace.·In·the·<code·class="inline">ACC</code>·column·is·the·total·time·of·the·trace·from·first·timestamp·to
207 last.·And·in·the·<code·class="inline">OWN</code>·column·is·the·sum·of·the·execution·time·in·functions·found207 last.·And·in·the·<code·class="inline">OWN</code>·column·is·the·sum·of·the·execution·time·in·functions·found
208 in·the·trace,·not·including·called·functions.·In·this·case·it·is·very·close·to208 in·the·trace,·not·including·called·functions.·In·this·case·it·is·very·close·to
209 the·<code·class="inline">ACC</code>·time·since·the·emulator·had·practically·nothing·to·do·except209 the·<code·class="inline">ACC</code>·time·since·the·emulator·had·practically·nothing·to·do·except
210 executing·our·test·program.</p><p>All·time·values·in·the·printout·are·in·milliseconds.</p><p>The·printout·continues:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·······································CNT·······ACC·······OWN</span><span·class="w">210 executing·our·test·program.</p><p>All·time·values·in·the·printout·are·in·milliseconds.</p><p>The·printout·continues:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·······································CNT·······ACC·······OWN</span><span·class="w">
211 </span><span·class="p"·data-group-id="1726852758-1">[</span><span·class="p"·data-group-id="1726852758-2">{</span><span·class="w">·</span><span·class="s">&quot;&lt;0.28.0&gt;&quot;</span><span·class="p">,</span><span·class="w">·························</span><span·class="mi">9627</span><span·cl[·...·truncated·by·diffoscope;·len:·223,·SHA:·cda76d6a3dbd6f34f3d6235ce4ee0ad04e278a899bab3badd21e369e9cc7407f·...·]-1">]</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%%</span></code></pre><p>This·is·the·printout·header·of·one·process.·The·printout·contains·only·this·one211 </span><span·class="p"·data-group-id="9002710907-1">[</span><span·class="p"·data-group-id="9002710907-2">{</span><span·class="w">·</span><span·class="s">&quot;&lt;0.28.0&gt;&quot;</span><span·class="p">,</span><span·class="w">·························</span><span·class="mi">9627</span><span·cl[·...·truncated·by·diffoscope;·len:·223,·SHA:·133615b6cdadd3f67e04f38aaea4b3f80f3a55eac9e476f7adaa404b0dcb2d22·...·]-1">]</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%%</span></code></pre><p>This·is·the·printout·header·of·one·process.·The·printout·contains·only·this·one
212 process·since·we·called·<a·href="#apply/3"><code·class="inline">fprof:apply/3</code></a>·that·traces·only·the·current·process.212 process·since·we·called·<a·href="#apply/3"><code·class="inline">fprof:apply/3</code></a>·that·traces·only·the·current·process.
213 Therefore·the·<code·class="inline">CNT</code>·and·<code·class="inline">OWN</code>·columns·perfectly·matches·the·totals·above.·The·<code·class="inline">ACC</code>213 Therefore·the·<code·class="inline">CNT</code>·and·<code·class="inline">OWN</code>·columns·perfectly·matches·the·totals·above.·The·<code·class="inline">ACC</code>
214 column·is·undefined·since·summing·the·<code·class="inline">ACC</code>·times·of·all·calls·in·the·process214 column·is·undefined·since·summing·the·<code·class="inline">ACC</code>·times·of·all·calls·in·the·process
215 makes·no·sense··one·would·get·something·like·the·<code·class="inline">ACC</code>·value·from·totals·above215 makes·no·sense··one·would·get·something·like·the·<code·class="inline">ACC</code>·value·from·totals·above
216 multiplied·by·the·average·depth·of·the·call·stack.</p><p>All·paragraphs·up·to·the·next·process·header·only·concerns·function·calls·within216 multiplied·by·the·average·depth·of·the·call·stack.</p><p>All·paragraphs·up·to·the·next·process·header·only·concerns·function·calls·within
217 this·process.</p><p>Now·we·come·to·something·more·interesting:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3410012105-1">{</span><span·class="p"·data-group-id="3410012105-2">[</span><span·class="p"·data-group-id="3410012105-3">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·260,·SHA:·0dd660507238db4324a398a6e7a56016478faa3e2ec2e60a91c520169eb64889·...·]-2">]</span><span·class="p">,</span><span·class="w">217 this·process.</p><p>Now·we·come·to·something·more·interesting:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4081460258-1">{</span><span·class="p"·data-group-id="4081460258-2">[</span><span·class="p"·data-group-id="4081460258-3">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·260,·SHA:·205ec5ee5d6eb727eec72f6327d8b44d6c88d35425ceebaf27a42f5d26d8d1ac·...·]-2">]</span><span·class="p">,</span><span·class="w">
218 ·</span><span·class="p"·data-group-id="3410012105-4">{</span><span·class="w">·</span><span·class="p"·data-group-id="3410012105-5">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">apply_start_stop</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"[·...·truncated·by·diffoscope;·len:·323,·SHA:·a5bc99b9153c4d31161aa0f41d42290d9fd1a4d8e69cc028d27b5557f2c51259·...·]-4">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">218 ·</span><span·class="p"·data-group-id="4081460258-4">{</span><span·class="w">·</span><span·class="p"·data-group-id="4081460258-5">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">apply_start_stop</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"[·...·truncated·by·diffoscope;·len:·323,·SHA:·83112ac88e47351fc4f9e2ffe6a6a336cd855add173e64d4e79233e8700bc54a·...·]-4">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">
219 ·</span><span·class="p"·data-group-id="3410012105-6">[</span><span·class="p"·data-group-id="3410012105-7">{</span><span·class="p"·data-group-id="3410012105-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·352,·SHA:·b05e2e19f0e543836a52b3363b417ad2b0ea9519b2ed9a924bb06e5cefb2bf48·...·]-7">}</span><span·class="p">,</span><span·class="w">219 ·</span><span·class="p"·data-group-id="4081460258-6">[</span><span·class="p"·data-group-id="4081460258-7">{</span><span·class="p"·data-group-id="4081460258-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·352,·SHA:·17a8ff970e9d9a2f64eb3f126e46f27595954112571be4a77e01b199956d57d5·...·]-7">}</span><span·class="p">,</span><span·class="w">
220 ··</span><span·class="p"·data-group-id="3410012105-9">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·······························</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">0.000</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·207,·SHA:·9ac710026ab822ce43d938cdbce0c311a0e99a679155609b2a187811cacae9d8·...·]-1">}</span><span·class="p">.</span><span·class="w">220 ··</span><span·class="p"·data-group-id="4081460258-9">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·······························</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">0.000</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·207,·SHA:·03e120eaf498ae7f940a338e671261a5e7c123342fcaa58b67bfbef9a1c680c3·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
221 </span><span·class="p"·data-group-id="3410012105-10">{</span><span·class="p"·data-group-id="3410012105-11">[</span><span·class="p"·data-group-id="3410012105-12">{</span><span·class="p"·data-group-id="3410012105-13">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">a[·...·truncated·by·diffoscope;·len:·464,·SHA:·324de7a104d2693660586b2193915abc659603dd48768df4126dd79b5d657a8f·...·]-11">]</span><span·class="p">,</span><span·class="w">221 </span><span·class="p"·data-group-id="4081460258-10">{</span><span·class="p"·data-group-id="4081460258-11">[</span><span·class="p"·data-group-id="4081460258-12">{</span><span·class="p"·data-group-id="4081460258-13">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">a[·...·truncated·by·diffoscope;·len:·464,·SHA:·d3fd79185564084e01bdcbde1d7e64fbef01fadce79abb58775601e8e8af2ab7·...·]-11">]</span><span·class="p">,</span><span·class="w">
222 ·</span><span·class="p"·data-group-id="3410012105-14">{</span><span·class="w">·</span><span·class="p"·data-group-id="3410012105-15">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"[·...·truncated·by·diffoscope;·len:·326,·SHA:·35f51c8613288fcfc6f5938cad5ef460d47f05941bc3747aca8558e30a5bbd8b·...·]-14">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">222 ·</span><span·class="p"·data-group-id="4081460258-14">{</span><span·class="w">·</span><span·class="p"·data-group-id="4081460258-15">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"[·...·truncated·by·diffoscope;·len:·326,·SHA:·f53ce0486c06cd382f06e0ff86a11c231665a4a90799ccac36ce6725c7fcc771·...·]-14">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">
223 ·</span><span·class="p"·data-group-id="3410012105-16">[</span><span·class="p"·data-group-id="3410012105-17">{</span><span·class="p"·data-group-id="3410012105-18">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">close</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·356,·SHA:·1ec9e69cf3cb7bf098d122436bbf31bd1f982d838391081414b41c868919f344·...·]-17">}</span><span·class="p">,</span><span·class="w">223 ·</span><span·class="p"·data-group-id="4081460258-16">[</span><span·class="p"·data-group-id="4081460258-17">{</span><span·class="p"·data-group-id="4081460258-18">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">close</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·356,·SHA:·694c0c39a2ad92d83f8ddb282f50b3f44a22cc3d6af5683f9e374d4ddb752801·...·]-17">}</span><span·class="p">,</span><span·class="w">
224 ··</span><span·class="p"·data-group-id="3410012105-19">{</span><span·class="p"·data-group-id="3410012105-20">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="34100121[·...·truncated·by·diffoscope;·len:·302,·SHA:·7d5805d587e728cdb421b06b9bdcd2b22a1e90e869a0efb4c391d7e81fcafcda·...·]-19">}</span><span·class="p">,</span><span·class="w">224 ··</span><span·class="p"·data-group-id="4081460258-19">{</span><span·class="p"·data-group-id="4081460258-20">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="40814602[·...·truncated·by·diffoscope;·len:·302,·SHA:·cd424695298b1c089ebbbb1c0b64b9034198d73cadc2f7af220967675e4afc10·...·]-19">}</span><span·class="p">,</span><span·class="w">
225 ··</span><span·class="p"·data-group-id="3410012105-21">{</span><span·class="p"·data-group-id="3410012105-22">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">open</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3410012105-22">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·80ab7eea3fa3d6777fb478402eb9681ff802251aec90582ad3aee2225c57f1bc·...·]-21">}</span><span·class="p">,</span><span·class="w">225 ··</span><span·class="p"·data-group-id="4081460258-21">{</span><span·class="p"·data-group-id="4081460258-22">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">open</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4081460258-22">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·83586f1ee20c99cb97cb81fbc3b6ce970e5fd3e19303baba015bdacf806599bf·...·]-21">}</span><span·class="p">,</span><span·class="w">
226 ··</span><span·class="p"·data-group-id="3410012105-23">{</span><span·class="p"·data-group-id="3410012105-24">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">map</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3410012105-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·10084e40e0208ae0a417be2e470f99fc32072cb36c1991d796bd65309c60868c·...·]-23">}</span><span·class="p">,</span><span·class="w">226 ··</span><span·class="p"·data-group-id="4081460258-23">{</span><span·class="p"·data-group-id="4081460258-24">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">map</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4081460258-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·9b7d99d11a42cb4c0685d57c7a78289844f5b314a75f39cbbf5f4de6ac079859·...·]-23">}</span><span·class="p">,</span><span·class="w">
227 ··</span><span·class="p"·data-group-id="3410012105-25">{</span><span·class="p"·data-group-id="3410012105-26">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3410012105-26">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·817e762e290993f21327d5eb62e38ffa180a5487228a864e6569c095525dcbdf·...·]-25">}</span><span·class="p">,</span><span·class="w">227 ··</span><span·class="p"·data-group-id="4081460258-25">{</span><span·class="p"·data-group-id="4081460258-26">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4081460258-26">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·40bb06e9e856e98cd304d308ccae2c36e17510cb8ed1cddaccc2eb7184e8dc9e·...·]-25">}</span><span·class="p">,</span><span·class="w">
228 ··</span><span·class="p"·data-group-id="3410012105-27">{</span><span·class="p"·data-group-id="3410012105-28">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3410012105-28">}</[·...·truncated·by·diffoscope;·len:·410,·SHA:·8bad4fcda0b66a2d97a08cddbaa5db210f5682f028467abbb11dc5e4c880853b·...·]-10">}</span><span·class="p">.</span></code></pre><p>The·printout·consists·of·one·paragraph·per·called·function.·The·function228 ··</span><span·class="p"·data-group-id="4081460258-27">{</span><span·class="p"·data-group-id="4081460258-28">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4081460258-28">}</[·...·truncated·by·diffoscope;·len:·410,·SHA:·5decddec37b2f898e21e11494a5a46dbd9ea59878d0a1156b6f1b82c66a8b12a·...·]-10">}</span><span·class="p">.</span></code></pre><p>The·printout·consists·of·one·paragraph·per·called·function.·The·function
229 <em>marked</em>·with·<code·class="inline">%</code>·is·the·one·the·paragraph·concerns··<code·class="inline">foo:create_file_slow/2</code>.229 <em>marked</em>·with·<code·class="inline">%</code>·is·the·one·the·paragraph·concerns··<code·class="inline">foo:create_file_slow/2</code>.
230 Above·the·marked·function·are·the·<em>calling</em>·functions··those·that·has·called230 Above·the·marked·function·are·the·<em>calling</em>·functions··those·that·has·called
231 the·marked,·and·below·are·those·<em>called</em>·by·the·marked·function.</p><p>The·paragraphs·are·per·default·sorted·in·descending·order·of·the·<code·class="inline">ACC</code>·column·for231 the·marked,·and·below·are·those·<em>called</em>·by·the·marked·function.</p><p>The·paragraphs·are·per·default·sorted·in·descending·order·of·the·<code·class="inline">ACC</code>·column·for
232 the·marked·function.·The·calling·list·and·called·list·within·one·paragraph·are232 the·marked·function.·The·calling·list·and·called·list·within·one·paragraph·are
233 also·per·default·sorted·in·descending·order·of·their·<code·class="inline">ACC</code>·column.</p><p>The·columns·are:</p><ul><li><code·class="inline">CNT</code>·-·the·number·of·times·the·function·has·been·called</li><li><code·class="inline">ACC</code>·-·the·time·spent·in·the·function·including·called·functions</li><li><code·class="inline">OWN</code>·-·the·time·spent·in·the·function·not·including·called·functions</li></ul><p>The·rows·for·the·<em>calling</em>·functions·contain·statistics·for·the·<em>marked</em>233 also·per·default·sorted·in·descending·order·of·their·<code·class="inline">ACC</code>·column.</p><p>The·columns·are:</p><ul><li><code·class="inline">CNT</code>·-·the·number·of·times·the·function·has·been·called</li><li><code·class="inline">ACC</code>·-·the·time·spent·in·the·function·including·called·functions</li><li><code·class="inline">OWN</code>·-·the·time·spent·in·the·function·not·including·called·functions</li></ul><p>The·rows·for·the·<em>calling</em>·functions·contain·statistics·for·the·<em>marked</em>
234 function·with·the·constraint·that·only·the·occasions·when·a·call·was·made·from234 function·with·the·constraint·that·only·the·occasions·when·a·call·was·made·from
235 the·<em>row's</em>·function·to·the·<em>marked</em>·function·are·accounted·for.</p><p>The·row·for·the·<em>marked</em>·function·simply·contains·the·sum·of·all·<em>calling</em>·rows.</p><p>The·rows·for·the·<em>called</em>·functions·contains·statistics·for·the·<em>row's</em>·function235 the·<em>row's</em>·function·to·the·<em>marked</em>·function·are·accounted·for.</p><p>The·row·for·the·<em>marked</em>·function·simply·contains·the·sum·of·all·<em>calling</em>·rows.</p><p>The·rows·for·the·<em>called</em>·functions·contains·statistics·for·the·<em>row's</em>·function
Offset 242, 109 lines modifiedOffset 242, 109 lines modified
242 execution.·It·spent·most·of·its·time·in·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#close/1"><code·class="inline">file:close/1</code></a>.·The·function242 execution.·It·spent·most·of·its·time·in·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#close/1"><code·class="inline">file:close/1</code></a>.·The·function
243 <code·class="inline">foo:create_file_slow/3</code>·that·writes·3/4·of·the·file·contents·is·the·second243 <code·class="inline">foo:create_file_slow/3</code>·that·writes·3/4·of·the·file·contents·is·the·second
244 biggest·time·thief.</p><p>We·also·see·that·the·call·to·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>·that·writes·1/4·of·the·file·contents244 biggest·time·thief.</p><p>We·also·see·that·the·call·to·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>·that·writes·1/4·of·the·file·contents
245 takes·very·little·time·in·itself.·What·takes·time·is·to·build·the·data245 takes·very·little·time·in·itself.·What·takes·time·is·to·build·the·data
246 (<a·href="../../../../lib/stdlib-6.2/doc/html/lists.html#seq/2"><code·class="inline">lists:seq/2</code></a>·and·<a·href="../../../../lib/stdlib-6.2/doc/html/lists.html#map/2"><code·class="inline">lists:map/2</code></a>).</p><p>The·function·<code·class="inline">undefined</code>·that·has·called·<code·class="inline">fprof:apply_start_stop/4</code>·is·an246 (<a·href="../../../../lib/stdlib-6.2/doc/html/lists.html#seq/2"><code·class="inline">lists:seq/2</code></a>·and·<a·href="../../../../lib/stdlib-6.2/doc/html/lists.html#map/2"><code·class="inline">lists:map/2</code></a>).</p><p>The·function·<code·class="inline">undefined</code>·that·has·called·<code·class="inline">fprof:apply_start_stop/4</code>·is·an
247 unknown·function·because·that·call·was·not·recorded·in·the·trace.·It·was·only247 unknown·function·because·that·call·was·not·recorded·in·the·trace.·It·was·only
248 recorded·that·the·execution·returned·from·<code·class="inline">fprof:apply_start_stop/4</code>·to·some248 recorded·that·the·execution·returned·from·<code·class="inline">fprof:apply_start_stop/4</code>·to·some
249 other·function·above·in·the·call·stack,·or·that·the·process·exited·from·there.</p><p>Let·us·continue·down·the·printout·to·find:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7197719553-1">{</span><span·class="p"·data-group-id="7197719553-2">[</span><span·class="p"·data-group-id="7197719553-3">{</span><span·class="p"·data-group-id="7197719553-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·404,·SHA:·2beac49bb1e52885b2d107a01040f362c8edd5429a0280bbdd25fa519a0941aa·...·]3-3">}</span><span·class="p">,</span><span·class="w">249 other·function·above·in·the·call·stack,·or·that·the·process·exited·from·there.</p><p>Let·us·continue·down·the·printout·to·find:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6366999723-1">{</span><span·class="p"·data-group-id="6366999723-2">[</span><span·class="p"·data-group-id="6366999723-3">{</span><span·class="p"·data-group-id="6366999723-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·404,·SHA:·9bc3914996a3adfe1378b7022bc66b8823468dbbc7e92aa0ed6d61875407aeeb·...·]3-3">}</span><span·class="p">,</span><span·class="w">
250 ··</span><span·class="p"·data-group-id="7197719553-5">{</span><span·class="p"·data-group-id="7197719553-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7197719553[·...·truncated·by·diffoscope;·len:·351,·SHA:·3d414d6ef7c429eb9616ed8e9fba570067192136480295ec4dcaee506afddc8c·...·]3-2">]</span><span·class="p">,</span><span·class="w">250 ··</span><span·class="p"·data-group-id="6366999723-5">{</span><span·class="p"·data-group-id="6366999723-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6366999723[·...·truncated·by·diffoscope;·len:·351,·SHA:·25f0447eef73497c50e4d5989edfb761cb1f0ccaa374eaa5a71e58180c38a968·...·]3-2">]</span><span·class="p">,</span><span·class="w">
251 ·</span><span·class="p"·data-group-id="7197719553-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="7197719553-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·322,·SHA:·4bac169f086ee2ba6aeb4c600a12c8b536e7e855c3213acfb15273cc24b81bbd·...·]3-7">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">251 ·</span><span·class="p"·data-group-id="6366999723-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="6366999723-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·322,·SHA:·675ea7b4c739703fcd5d7b83dbfba426e79810a2a2ba28d15d84f07996582d17·...·]3-7">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">
252 ·</span><span·class="p"·data-group-id="7197719553-9">[</span><span·class="p"·data-group-id="7197719553-10">{</span><span·class="p"·data-group-id="7197719553-11">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</s[·...·truncated·by·diffoscope;·len:·354,·SHA:·8a0fde9dee61ac24b8b7777834ed5c145d67027803d1ea47a44970eae6df3beb·...·]3-10">}</span><span·class="p">,</span><span·class="w">252 ·</span><span·class="p"·data-group-id="6366999723-9">[</span><span·class="p"·data-group-id="6366999723-10">{</span><span·class="p"·data-group-id="6366999723-11">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</s[·...·truncated·by·diffoscope;·len:·354,·SHA:·6d86a7763ac0fe7efc834f9687567fb0b69ccf2a41f22c0f46a6cbc0ea3ef065·...·]3-10">}</span><span·class="p">,</span><span·class="w">
253 ··</span><span·class="p"·data-group-id="7197719553-12">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">······························</span><span·class="mi">57</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">6.041</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·101,·SHA:·e1601d92385933b40192cdddb989b59bfc52606bd471fe32f24e5e993b4e49f8·...·]3-12">}</span><span·class="p">,</span><span·class="w">253 ··</span><span·class="p"·data-group-id="6366999723-12">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">······························</span><span·class="mi">57</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">6.041</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·101,·SHA:·795d3c0e3f09ef698b7a3e32f13c0754bebb72bf6030127ef3f0380c8bdad9cd·...·]3-12">}</span><span·class="p">,</span><span·class="w">
254 ··</span><span·class="p"·data-group-id="7197719553-13">{</span><span·class="p"·data-group-id="7197719553-14">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="71977195[·...·truncated·by·diffoscope;·len:·408,·SHA:·c552c03705656a5f6365315e4586287e19b39faf1b11e570bb32cbc09cade53d·...·]3-1">}</span><span·class="p">.</span></code></pre><p>If·you·compare·with·the·code·you·will·see·there·also·that254 ··</span><span·class="p"·data-group-id="6366999723-13">{</span><span·class="p"·data-group-id="6366999723-14">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="63669997[·...·truncated·by·diffoscope;·len:·408,·SHA:·5fbce41b9a5224bb3aa244b7747fd8269793e101c2ce6796f6b68da9f4701cf2·...·]3-1">}</span><span·class="p">.</span></code></pre><p>If·you·compare·with·the·code·you·will·see·there·also·that
255 <code·class="inline">foo:create_file_slow/3</code>·was·called·only·from·<code·class="inline">foo:create_file_slow/2</code>·and255 <code·class="inline">foo:create_file_slow/3</code>·was·called·only·from·<code·class="inline">foo:create_file_slow/2</code>·and
256 itself,·and·called·only·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>,·note·the·number·of·calls·to256 itself,·and·called·only·<a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>,·note·the·number·of·calls·to
257 <a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>.·But·here·we·see·that·<code·class="inline">suspend</code>·was·called·a·few·times.·This·is·a257 <a·href="../../../../lib/kernel-10.2.2/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>.·But·here·we·see·that·<code·class="inline">suspend</code>·was·called·a·few·times.·This·is·a
258 pseudo·function·that·indicates·that·the·process·was·suspended·while·executing·in258 pseudo·function·that·indicates·that·the·process·was·suspended·while·executing·in
259 <code·class="inline">foo:create_file_slow/3</code>,·and·since·there·is·no·<code·class="inline">receive</code>·or·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#yield/0"><code·class="inline">erlang:yield/0</code></a>·in259 <code·class="inline">foo:create_file_slow/3</code>,·and·since·there·is·no·<code·class="inline">receive</code>·or·<a·href="../../../../erts-15.2.2/doc/html/erlang.html#yield/0"><code·class="inline">erlang:yield/0</code></a>·in
260 the·code,·it·must·be·Erlang·scheduling·suspensions,·or·the·trace·file·driver260 the·code,·it·must·be·Erlang·scheduling·suspensions,·or·the·trace·file·driver
261 compensating·for·large·file·write·operations·(these·are·regarded·as·a·schedule261 compensating·for·large·file·write·operations·(these·are·regarded·as·a·schedule
262 out·followed·by·a·schedule·in·to·the·same·process).</p><p>Let·us·find·the·<code·class="inline">suspend</code>·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0036371855-1">{</span><span·class="p"·data-group-id="0036371855-2">[</span><span·class="p"·data-group-id="0036371855-3">{</span><span·class="p"·data-group-id="0036371855-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write<[·...·truncated·by·diffoscope;·len:·405,·SHA:·de9bbabaab16ecafb0764de4565c053fd369ec8614beab91a6e79edfb33043b3·...·]-3">}</span><span·class="p">,</span><span·class="w">262 out·followed·by·a·schedule·in·to·the·same·process).</p><p>Let·us·find·the·<code·class="inline">suspend</code>·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8026451664-1">{</span><span·class="p"·data-group-id="8026451664-2">[</span><span·class="p"·data-group-id="8026451664-3">{</span><span·class="p"·data-group-id="8026451664-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write<[·...·truncated·by·diffoscope;·len:·405,·SHA:·661f7c6f71f81bd20d6ec7ec7e7f8f9ad5c3cf16039a435cb6af21bb0bed6b5d·...·]-3">}</span><span·class="p">,</span><span·class="w">
263 ··</span><span·class="p"·data-group-id="0036371855-5">{</span><span·class="p"·data-group-id="0036371855-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="0036371855[·...·truncated·by·diffoscope;·len:·299,·SHA:·5b3056805c9a9a0685fb3af453fd5b8a8781a665ed2bba9ad4222fd662474d76·...·]-5">}</span><span·class="p">,</span><span·class="w">263 ··</span><span·class="p"·data-group-id="8026451664-5">{</span><span·class="p"·data-group-id="8026451664-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="8026451664[·...·truncated·by·diffoscope;·len:·299,·SHA:·43a5fa24f3370393b45ebd5c6dcaefd523f976e3b113094ef374ea0405675168·...·]-5">}</span><span·class="p">,</span><span·class="w">
264 ··</span><span·class="p"·data-group-id="0036371855-7">{</span><span·class="p"·data-group-id="0036371855-8">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv_command</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="003637185[·...·truncated·by·diffoscope;·len:·299,·SHA:·fe8bbb77dbbe0b81504fbbfb9edcc152366717b527c6e319fa4f10ca68ad2f04·...·]-7">}</span><span·class="p">,</span><span·class="w">264 ··</span><span·class="p"·data-group-id="8026451664-7">{</span><span·class="p"·data-group-id="8026451664-8">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv_command</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="802645166[·...·truncated·by·diffoscope;·len:·299,·SHA:·34ed1a3e83ff7527c00e616a66d6c839070a5fe7c6df7d3f12a7e9e1ee62fcf1·...·]-7">}</span><span·class="p">,</span><span·class="w">
265 ··</span><span·class="p"·data-group-id="0036371855-9">{</span><span·class="p"·data-group-id="0036371855-10">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv_get_response</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="003[·...·truncated·by·diffoscope;·len:·301,·SHA:·5d81183acd65accd7ec40a74a9b181c31e48cf6292b06c4e587b4577c121dcfd·...·]-9">}</span><span·class="p">,</span><span·class="w">265 ··</span><span·class="p"·data-group-id="8026451664-9">{</span><span·class="p"·data-group-id="8026451664-10">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv_get_response</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="802[·...·truncated·by·diffoscope;·len:·301,·SHA:·9862943268447a5c80bde00a397d7746f4ebab02d1f9f95ce16a0f2cb62dcc36·...·]-9">}</span><span·class="p">,</span><span·class="w">
266 ··</span><span·class="p"·data-group-id="0036371855-11">{</span><span·class="p"·data-group-id="0036371855-12">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">map</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0036371855-12">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·64b241a75f81e87ef6a1aaa6d2ca73cc44ff9c805c706723984090c70a724c91·...·]-11">}</span><span·class="p">,</span><span·class="w">266 ··</span><span·class="p"·data-group-id="8026451664-11">{</span><span·class="p"·data-group-id="8026451664-12">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">map</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8026451664-12">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·b40a7fc3dc06e39b8504f019fa2a0ae8d1c5aefdbd3e865b92fbd6c3dc3aff7b·...·]-11">}</span><span·class="p">,</span><span·class="w">
267 ··</span><span·class="p"·data-group-id="0036371855-13">{</span><span·class="p"·data-group-id="0036371855-14">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0036371855-14[·...·truncated·by·diffoscope;·len:·302,·SHA:·3d9b13933e5bc70c1d1af2c1b0442f71c3f8854c7625ffc72218cece761c1e1d·...·]-13">}</span><span·class="p">,</span><span·class="w">267 ··</span><span·class="p"·data-group-id="8026451664-13">{</span><span·class="p"·data-group-id="8026451664-14">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8026451664-14[·...·truncated·by·diffoscope;·len:·302,·SHA:·afe4da3733b0e5d2d1c30616fab1364cfe5d71eb7b80b6d70832186b8ad98f49·...·]-13">}</span><span·class="p">,</span><span·class="w">
268 ··</span><span·class="p"·data-group-id="0036371855-15">{</span><span·class="p"·data-group-id="0036371855-16">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">port_command</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="003637185[·...·truncated·by·diffoscope;·len:·302,·SHA:·9393afb9c7639a50b1d9f6f4338c3005f00af35576fc0c47109424d77ac1b50c·...·]-15">}</span><span·class="p">,</span><span·class="w">268 ··</span><span·class="p"·data-group-id="8026451664-15">{</span><span·class="p"·data-group-id="8026451664-16">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">port_command</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="802645166[·...·truncated·by·diffoscope;·len:·302,·SHA:·dd5a18ff195b09cddff1f3d569f9d1bc48fb0c08921bb1c2014aa0c0fae2da0c·...·]-15">}</span><span·class="p">,</span><span·class="w">
269 ··</span><span·class="p"·data-group-id="0036371855-17">{</span><span·class="p"·data-group-id="0036371855-18">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv_command</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0036371[·...·truncated·by·diffoscope;·len:·302,·SHA:·bdc068206b705ce80274ac119e1309c43b79c257a38b342f269ddf1820b1e636·...·]-17">}</span><span·class="p">,</span><span·class="w">269 ··</span><span·class="p"·data-group-id="8026451664-17">{</span><span·class="p"·data-group-id="8026451664-18">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv_command</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8026451[·...·truncated·by·diffoscope;·len:·302,·SHA:·29130c94ba8a7c91b1b1a0c4d1c5fad6b5f8ee16bd88dc05f2af21c475a4693d·...·]-17">}</span><span·class="p">,</span><span·class="w">
270 ··</span><span·class="p"·data-group-id="0036371855-19">{</span><span·class="p"·data-group-id="0036371855-20">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">translate_response</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·302,·SHA:·85f0e2bb993c28bcba9cb4cafa8cd8802fe9c0a8cdf9adbb2346907bf382f051·...·]-19">}</span><span·class="p">,</span><span·class="w">270 ··</span><span·class="p"·data-group-id="8026451664-19">{</span><span·class="p"·data-group-id="8026451664-20">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">translate_response</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·302,·SHA:·98ac38c3c4adc80ca54db124e0863237d67ddf6c5ba984e9e9398cbcee7ab718·...·]-19">}</span><span·class="p">,</span><span·class="w">
271 ··</span><span·class="p"·data-group-id="0036371855-21">{</span><span·class="p"·data-group-id="0036371855-22">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">&#39;-drv_command/2-fun-0-&#39;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·312,·SHA:·29275c50a562fb00bb68045d2c3c4b06be7c7ef53acff8f42c745aac42e47f6f·...·]-21">}</span><span·class="p">,</span><span·class="w">271 ··</span><span·class="p"·data-group-id="8026451664-21">{</span><span·class="p"·data-group-id="8026451664-22">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">&#39;-drv_command/2-fun-0-&#39;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·312,·SHA:·dbfca8320a684f1831d38dde16f7c38f8b594c344fe45b11d366da1a78aedf8f·...·]-21">}</span><span·class="p">,</span><span·class="w">
272 ··</span><span·class="p"·data-group-id="0036371855-23">{</span><span·class="p"·data-group-id="0036371855-24">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="0036371855-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·e2652b4f2b423f6b9eefb480d7a371c2f1de138c635338de939d00a629fc2b77·...·]-23">}</span><span·class="p">,</span><span·class="w">272 ··</span><span·class="p"·data-group-id="8026451664-23">{</span><span·class="p"·data-group-id="8026451664-24">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="8026451664-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·afd6b8727b2dbe2e64d5ec544eb98bb32e620f96049ce6a8de890f909e98e1bf·...·]-23">}</span><span·class="p">,</span><span·class="w">
273 ··</span><span·class="p"·data-group-id="0036371855-25">{</span><span·class="p"·data-group-id="0036371855-26">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">&#39;-create_file_slow/2-fun-0-&#39;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·311,·SHA:·db4864c401a6ee2e7e64e7cc36b2d6fab747823c134be407c71aa138578a984d·...·]-25">}</span><span·class="p">,</span><span·class="w">273 ··</span><span·class="p"·data-group-id="8026451664-25">{</span><span·class="p"·data-group-id="8026451664-26">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">&#39;-create_file_slow/2-fun-0-&#39;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·311,·SHA:·b160de092a5a4b8ee90b4e3f449785d1e8cef6bf0133abe7c4a35eef0543eb94·...·]-25">}</span><span·class="p">,</span><span·class="w">
274 ··</span><span·class="p"·data-group-id="0036371855-27">{</span><span·class="p"·data-group-id="0036371855-28">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">bump_reductions</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="003637[·...·truncated·by·diffoscope;·len:·302,·SHA:·a32451de7495783673f7d0e8971f7828936777e0b1605bd30c097bafcae7e0ba·...·]-27">}</span><span·class="p">,</span><span·class="w">274 ··</span><span·class="p"·data-group-id="8026451664-27">{</span><span·class="p"·data-group-id="8026451664-28">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">bump_reductions</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="802645[·...·truncated·by·diffoscope;·len:·302,·SHA:·7e6df450333bda774d501bc4ab990015bade2a8dc949567e01e1ff6879e03aa1·...·]-27">}</span><span·class="p">,</span><span·class="w">
275 ··</span><span·class="p"·data-group-id="0036371855-29">{</span><span·class="p"·data-group-id="0036371855-30">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">open_int_setopts</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="00[·...·truncated·by·diffoscope;·len:·302,·SHA:·1b48fcc561fd91d2b650235a4dae81ae33545ea14f6bd1654700e71e6269faad·...·]-29">}</span><span·class="p">,</span><span·class="w">275 ··</span><span·class="p"·data-group-id="8026451664-29">{</span><span·class="p"·data-group-id="8026451664-30">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">open_int_setopts</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="80[·...·truncated·by·diffoscope;·len:·302,·SHA:·197a25f33eb7624a1620403fc2f3ca4b9b1e9e9e369e2fb9f6fea0654a000128·...·]-29">}</span><span·class="p">,</span><span·class="w">
276 ··</span><span·class="p"·data-group-id="0036371855-31">{</span><span·class="p"·data-group-id="0036371855-32">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">i32</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="0036371855-32">[·...·truncated·by·diffoscope;·len:·302,·SHA:·6eccaf8400a8baa5587b48f7b33759379e6d207e114943b3f8d83c51994cd463·...·]-31">}</span><span·class="p">,</span><span·class="w">276 ··</span><span·class="p"·data-group-id="8026451664-31">{</span><span·class="p"·data-group-id="8026451664-32">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">i32</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="8026451664-32">[·...·truncated·by·diffoscope;·len:·302,·SHA:·c9fa066edbbc2a585ff6afd2116b1cd0dbb0ed351804bd40d920e4f612a82652·...·]-31">}</span><span·class="p">,</span><span·class="w">
277 ··</span><span·class="p"·data-group-id="0036371855-33">{</span><span·class="p"·data-group-id="0036371855-34">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">apply_start_stop</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="003637[·...·truncated·by·diffoscope;·len:·356,·SHA:·22624c52beea3a885fcf49de6fe9c769fc5387809f30834a8fe5085054735bf4·...·]-2">]</span><span·class="p">,</span><span·class="w">277 ··</span><span·class="p"·data-group-id="8026451664-33">{</span><span·class="p"·data-group-id="8026451664-34">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">apply_start_stop</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="802645[·...·truncated·by·diffoscope;·len:·356,·SHA:·e972cb20236dd844704fa843a8792513d09744f9af69e90be5803a44f9d64030·...·]-2">]</span><span·class="p">,</span><span·class="w">
278 ·</span><span·class="p"·data-group-id="0036371855-35">{</span><span·class="w">·</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">299</span><span·class="p">,</span><span·class="w">···</span><span·class="mf">32.002</[·...·truncated·by·diffoscope;·len:·126,·SHA:·8ba74b90aa26c8e0abd351507947820edb7ed7869aa1a1d0f3ffe113c4b9d259·...·]-35">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">278 ·</span><span·class="p"·data-group-id="8026451664-35">{</span><span·class="w">·</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">299</span><span·class="p">,</span><span·class="w">···</span><span·class="mf">32.002</[·...·truncated·by·diffoscope;·len:·126,·SHA:·94343a5d133b39c300d8ee61182d9092b6e6f1dc7425c67c069a5dbbbd1190ad·...·]-35">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">
279 ·</span><span·class="p"·data-group-id="0036371855-36">[</span><span·class="w">·</span><span·class="p"·data-group-id="0036371855-36">]</span><span·class="p"·data-group-id="0036371855-1">}</span><span·class="p">.</span></code></pre><p>We·find·no·particularly·long·suspend·times,·so·no·function·seems·to·have·waited279 ·</span><span·class="p"·data-group-id="8026451664-36">[</span><span·class="w">·</span><span·class="p"·data-group-id="8026451664-36">]</span><span·class="p"·data-group-id="8026451664-1">}</span><span·class="p">.</span></code></pre><p>We·find·no·particularly·long·suspend·times,·so·no·function·seems·to·have·waited
280 in·a·receive·statement.·Actually,·<code·class="inline">prim_file:drv_command/4</code>·contains·a·receive280 in·a·receive·statement.·Actually,·<code·class="inline">prim_file:drv_command/4</code>·contains·a·receive
281 statement,·but·in·this·test·program,·the·message·lies·in·the·process·receive281 statement,·but·in·this·test·program,·the·message·lies·in·the·process·receive
282 buffer·when·the·receive·statement·is·entered.·We·also·see·that·the·total·suspend282 buffer·when·the·receive·statement·is·entered.·We·also·see·that·the·total·suspend
283 time·for·the·test·run·is·small.</p><p>The·<code·class="inline">suspend</code>·pseudo·function·has·an·<code·class="inline">OWN</code>·time·of·zero.·This·is·to·prevent283 time·for·the·test·run·is·small.</p><p>The·<code·class="inline">suspend</code>·pseudo·function·has·an·<code·class="inline">OWN</code>·time·of·zero.·This·is·to·prevent
284 the·process·total·<code·class="inline">OWN</code>·time·from·including·time·in·suspension.·Whether·suspend284 the·process·total·<code·class="inline">OWN</code>·time·from·including·time·in·suspension.·Whether·suspend
285 time·is·really·<code·class="inline">ACC</code>·or·<code·class="inline">OWN</code>·time·is·more·of·a·philosophical·question.</p><p>Now·we·look·at·another·interesting·pseudo·function,·<code·class="inline">garbage_collect</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5212500124-1">{</span><span·class="p"·data-group-id="5212500124-2">[</span><span·class="p"·data-group-id="5212500124-3">{</span><span·class="p"·data-group-id="5212500124-4">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">d[·...·truncated·by·diffoscope;·len:·404,·SHA:·e62079eb657be82a9fee32f1d40fba2abfd2a303f5f39149cebb4df4afd0df7b·...·]4-3">}</span><span·class="p">,</span><span·class="w">285 time·is·really·<code·class="inline">ACC</code>·or·<code·class="inline">OWN</code>·time·is·more·of·a·philosophical·question.</p><p>Now·we·look·at·another·interesting·pseudo·function,·<code·class="inline">garbage_collect</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3920884484-1">{</span><span·class="p"·data-group-id="3920884484-2">[</span><span·class="p"·data-group-id="3920884484-3">{</span><span·class="p"·data-group-id="3920884484-4">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">d[·...·truncated·by·diffoscope;·len:·404,·SHA:·4c4f1879690e6138f2182c18cc546d6f50067c76fff06e836fa9bfb0620768dd·...·]4-3">}</span><span·class="p">,</span><span·class="w">
286 ··</span><span·class="p"·data-group-id="5212500124-5">{</span><span·class="p"·data-group-id="5212500124-6">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5212500124-6">}[·...·truncated·by·diffoscope;·len:·298,·SHA:·bbf03891203b955c62640748f66317faa9861fafa70d8ebdcc8c66531f40421b·...·]4-5">}</span><span·class="p">,</span><span·class="w">286 ··</span><span·class="p"·data-group-id="3920884484-5">{</span><span·class="p"·data-group-id="3920884484-6">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3920884484-6">}[·...·truncated·by·diffoscope;·len:·298,·SHA:·9e179dd59b0f7536e67b9b919449debc1bc48dde964d9b75446098a6cbb8f279·...·]4-5">}</span><span·class="p">,</span><span·class="w">
287 ··</span><span·class="p"·data-group-id="5212500124-7">{</span><span·class="p"·data-group-id="5212500124-8">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">map</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5212500124-8">}</span[·...·truncated·by·diffoscope;·len:·351,·SHA:·7616fd5f11cdd710624f098a278b50f112f156a1dde852bf50a925e669b7780d·...·]4-2">]</span><span·class="p">,</span><span·class="w">287 ··</span><span·class="p"·data-group-id="3920884484-7">{</span><span·class="p"·data-group-id="3920884484-8">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">map</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3920884484-8">}</span[·...·truncated·by·diffoscope;·len:·351,·SHA:·f8b401b0e287fbce07f241eaa697d363528dd39e2f53336ff690bbe4c1c59555·...·]4-2">]</span><span·class="p">,</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="5212500124-9">{</span><span·class="w">·</span><span·class="nb">garbage_collect</span><span·class="p">,</span><span·class="w">······················</span><span·class="mi">43</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">1.760</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·f2e013d8db338a893416834e0cfc5452cc9bf6717684ddcb543f75b00fe13ebc·...·]4-9">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">288 ·</span><span·class="p"·data-group-id="3920884484-9">{</span><span·class="w">·</span><span·class="nb">garbage_collect</span><span·class="p">,</span><span·class="w">······················</span><span·class="mi">43</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">1.760</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·775ad9b1410d03cea6a9d32c1838763f8d7186ad56a1cdf0d5265583deb5c1b1·...·]4-9">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">
289 ·</span><span·class="p"·data-group-id="5212500124-10">[</span><span·class="w">·</span><span·class="p"·data-group-id="5212500124-10">]</span><span·class="p"·data-group-id="5212500124-1">}</span><span·class="p">.</span></code></pre><p>Here·we·see·that·no·function·stands·out,·which·is·very·normal.</p><p>The·<code·class="inline">garbage_collect</code>·pseudo·function·has·not·an·<code·class="inline">OWN</code>·time·of·zero·like289 ·</span><span·class="p"·data-group-id="3920884484-10">[</span><span·class="w">·</span><span·class="p"·data-group-id="3920884484-10">]</span><span·class="p"·data-group-id="3920884484-1">}</span><span·class="p">.</span></code></pre><p>Here·we·see·that·no·function·stands·out,·which·is·very·normal.</p><p>The·<code·class="inline">garbage_collect</code>·pseudo·function·has·not·an·<code·class="inline">OWN</code>·time·of·zero·like
290 <code·class="inline">suspend</code>,·instead·it·is·equal·to·the·<code·class="inline">ACC</code>·time.</p><p>Garbage·collection·often·occurs·while·a·process·is·suspended,·but·<code·class="inline">fprof</code>·hides290 <code·class="inline">suspend</code>,·instead·it·is·equal·to·the·<code·class="inline">ACC</code>·time.</p><p>Garbage·collection·often·occurs·while·a·process·is·suspended,·but·<code·class="inline">fprof</code>·hides
291 this·fact·by·pretending·that·the·suspended·function·was·first·unsuspended·and291 this·fact·by·pretending·that·the·suspended·function·was·first·unsuspended·and
292 then·garbage·collected.·Otherwise·the·printout·would·show·<code·class="inline">garbage_collect</code>292 then·garbage·collected.·Otherwise·the·printout·would·show·<code·class="inline">garbage_collect</code>
293 being·called·from·<code·class="inline">suspend</code>,·but·not·which·function·that·might·have·caused·the293 being·called·from·<code·class="inline">suspend</code>,·but·not·which·function·that·might·have·caused·the
294 garbage·collection.</p><p>Let·us·now·get·back·to·the·test·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4135175583-1">{</span><span·class="p"·data-group-id="4135175583-2">[</span><span·class="p"·data-group-id="4135175583-3">{</span><span·class="p"·data-group-id="4135175583-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·2176e3d7d970df8ffcec79564f722506e370c55fef5f4e26ca16f44047159319·...·]-3">}</span><span·class="p">,</span><span·class="w">294 garbage·collection.</p><p>Let·us·now·get·back·to·the·test·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1324875954-1">{</span><span·class="p"·data-group-id="1324875954-2">[</span><span·class="p"·data-group-id="1324875954-3">{</span><span·class="p"·data-group-id="1324875954-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·78b1ec239a44ddc949ff672acb753a928fa6ed958ea644e59f6f70355c60d6b4·...·]-3">}</span><span·class="p">,</span><span·class="w">
295 ··</span><span·class="p"·data-group-id="4135175583-5">{</span><span·class="p"·data-group-id="4135175583-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4135175583[·...·truncated·by·diffoscope;·len:·352,·SHA:·83a1dd10f9b0d010bc685bce1b2a5c880bf6031a4cfe940680e4a865dfccd24b·...·]-2">]</span><span·class="p">,</span><span·class="w">295 ··</span><span·class="p"·data-group-id="1324875954-5">{</span><span·class="p"·data-group-id="1324875954-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1324875954[·...·truncated·by·diffoscope;·len:·352,·SHA:·06779eabcbd01a437242f7195b740777ce38ebd5fd9b98e70beaef0a277b9153·...·]-2">]</span><span·class="p">,</span><span·class="w">
296 ·</span><span·class="p"·data-group-id="4135175583-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="4135175583-8">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·323,·SHA:·5260eebe6412a2782a1fe8b46b7f3f8c63329758e14aea4eb51ac3cde9c733f8·...·]-7">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">296 ·</span><span·class="p"·data-group-id="1324875954-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="1324875954-8">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·323,·SHA:·31b4f927ad01831dacc75e3b289123e529f96c5dc28be48c6c0a6c8189bd34bb·...·]-7">}</span><span·class="p">,</span><span·class="w">·····</span><span·class="c1">%</span><span·class="w">
297 ·</span><span·class="p"·data-group-id="4135175583-9">[</span><span·class="p"·data-group-id="4135175583-10">{</span><span·class="p"·data-group-id="4135175583-11">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·355,·SHA:·5f2fa5bb9dc861463908828f67c7b55f6c00e898f475843be7df51dd6b67ab05·...·]-10">}</span><span·class="p">,</span><span·class="w">297 ·</span><span·class="p"·data-group-id="1324875954-9">[</span><span·class="p"·data-group-id="1324875954-10">{</span><span·class="p"·data-group-id="1324875954-11">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">write</span><span·class="p">,</span><span·class="mi"[·...·truncated·by·diffoscope;·len:·355,·SHA:·58f0692aeabb480ac8a3c3af004f50880393d9a8f0e64f2f982210d851ee90e8·...·]-10">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 45366/138716 bytes (32.70%) of diff not shown.
3.97 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/fprof_chapter.html
    
Offset 172, 18 lines modifiedOffset 172, 18 lines modified
172 ··<a·href="#immediate-profiling"·class="hover-link">172 ··<a·href="#immediate-profiling"·class="hover-link">
173 ····<i·class="ri-link-m"·aria-hidden="true"></i>173 ····<i·class="ri-link-m"·aria-hidden="true"></i>
174 ··</a>174 ··</a>
175 ··<span·class="text">Immediate·profiling</span>175 ··<span·class="text">Immediate·profiling</span>
176 </h2>176 </h2>
177 <p>It·is·also·possible·to·trace·immediately·into·the·profiling·process·that·creates177 <p>It·is·also·possible·to·trace·immediately·into·the·profiling·process·that·creates
178 the·raw·profile·data,·that·is·to·short·circuit·the·tracing·and·profiling·steps178 the·raw·profile·data,·that·is·to·short·circuit·the·tracing·and·profiling·steps
179 so·that·the·filesystem·is·not·used·for·tracing.</p><p>Do·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7906939143-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p"·data-group-id="7906939143-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·de2b93ed40f0e5879eac1c677d5e2fc8789d7db2616ccd6ae01db2228c4a49bf·...·]-2">)</span><span·class="p">,</span><span·class="w">179 so·that·the·filesystem·is·not·used·for·tracing.</p><p>Do·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4816104846-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p"·data-group-id="4816104846-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·ef47c7873ba92a69392333a6cda5ca79463c2e662889171ff25b13261aff6b80·...·]-2">)</span><span·class="p">,</span><span·class="w">
180 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="7906939143-3">(</span><span·class="p"·data-group-id="7906939143-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7906939143-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·393f3c8a9beaa854d04515a09950cc1db84a3983962af62c41906c6bfd5e9de2·...·]-3">)</span><span·class="p">,</span><span·class="w">180 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="4816104846-3">(</span><span·class="p"·data-group-id="4816104846-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4816104846-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·7b76d313d527c4bc29a7ddb8ab72a6aad59897c86bc24f5c86ac2551f2f446ef·...·]-3">)</span><span·class="p">,</span><span·class="w">
181 </span><span·class="c1">%%·Run·code·to·profile</span><span·class="w">181 </span><span·class="c1">%%·Run·code·to·profile</span><span·class="w">
182 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="7906939143-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="7906939143-6">)</span><span·class="p">;</span></code></pre><p>This·puts·less·load·on·the·filesystem,·but·much·more·load·on·the·Erlang·runtime182 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="4816104846-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="4816104846-6">)</span><span·class="p">;</span></code></pre><p>This·puts·less·load·on·the·filesystem,·but·much·more·load·on·the·Erlang·runtime
183 system.</p>183 system.</p>
184 </div>184 </div>
  
185 <div·class="bottom-actions"·id="bottom-actions">185 <div·class="bottom-actions"·id="bottom-actions">
186 ··<div·class="bottom-actions-item">186 ··<div·class="bottom-actions-item">
  
187 ······<a·href="erlang_mode_chapter.html"·class="bottom-actions-button"·rel="prev">187 ······<a·href="erlang_mode_chapter.html"·class="bottom-actions-button"·rel="prev">
57.3 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/lcnt_chapter.html
    
Offset 229, 28 lines modifiedOffset 229, 28 lines modified
229 ··&lt;nonode@nohost.104.0&gt;····5140··········0.7782········108229 ··&lt;nonode@nohost.104.0&gt;····5140··········0.7782········108
230 ok</code></pre><h2·id="example-with-mnesia-transaction-benchmark"·class="section-heading">230 ok</code></pre><h2·id="example-with-mnesia-transaction-benchmark"·class="section-heading">
231 ··<a·href="#example-with-mnesia-transaction-benchmark"·class="hover-link">231 ··<a·href="#example-with-mnesia-transaction-benchmark"·class="hover-link">
232 ····<i·class="ri-link-m"·aria-hidden="true"></i>232 ····<i·class="ri-link-m"·aria-hidden="true"></i>
233 ··</a>233 ··</a>
234 ··<span·class="text">Example·with·Mnesia·Transaction·Benchmark</span>234 ··<span·class="text">Example·with·Mnesia·Transaction·Benchmark</span>
235 </h2>235 </h2>
236 <p>From·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">27</span><span·class="w">·</span><span·class="p"·data-group-id="0773947805-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="0773947805-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="0773947805-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1287,·SHA:·8d16178738abf641ee7e6c38ccc82d33b322a875ef657c7d87063856e31d1641·...·]-7">]</span><span·class="w">236 <p>From·the·Erlang·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">27</span><span·class="w">·</span><span·class="p"·data-group-id="9041257217-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="9041257217-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="9041257217-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1287,·SHA:·6b835eda1b9727cc3300dd6fe8db7ce67abd26c8a7ec2cec5681d60f4a39ce69·...·]-7">]</span><span·class="w">
  
237 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="0773947805-8">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·49c0304c00bbc4bff8eea9344db8e1de021cb3513f73a92953094423c901a0c7·...·]-8">)</span><span·class="gp·unselectable">237 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mi">0</span><span·class="w">·</span><span·class="p"·data-group-id="9041257217-8">(</span><span·class="ss">press</span><span·class="w">·</span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">G</span><span·class="w">·</span><span·class="ss">to</span><span·class="w">·</span><span·class="ss">abort</span><sp[·...·truncated·by·diffoscope;·len:·399,·SHA:·0bd86a147bcfc0f9f40ff5a605e12ae7103182bdedf28dfacbb86ca30875b9c2·...·]-8">)</span><span·class="gp·unselectable">
238 1&gt;·</span><span·class="n">Conf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0773947805-10">[</span><span·class="p"·data-group-id="0773947805-11">{</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0773947805-12">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1155,·SHA:·3c5469a27df2cb980292d84a312ab462356bebc17cf1305db27248149149c087·...·]-17">}</span><span·class="p">,</span><span·class="w">238 1&gt;·</span><span·class="n">Conf</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9041257217-10">[</span><span·class="p"·data-group-id="9041257217-11">{</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9041257217-12">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1155,·SHA:·3fd2aa25a46d23a49c0a64b5050ca5bbc49ad56593bbb38d999d93d6fe1474ff·...·]-17">}</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="p"·data-group-id="0773947805-20">{</span><span·class="ss">n_drivers_per_node</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p"·data-group-id="0773947805-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·465,·SHA:·5545557b3497e98402fc6ba1fb57d712b5d19fa0a084b456bedc9e90dd8ffc39·...·]-22">}</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="p"·data-group-id="9041257217-20">{</span><span·class="ss">n_drivers_per_node</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p"·data-group-id="9041257217-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·465,·SHA:·62fdaaf51b4cd7c87d2042eae441dd67aadc3949b72a81d1d9d784732331264b·...·]-22">}</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="0773947805-23">{</span><span·class="ss">replica_type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="0773947805-23">}</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·519,·SHA:·a5947cdd55e526ebc995c0e11f80f6925959cf1e8d45aeff7863d76bdcd64b3a·...·]-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">240 ····</span><span·class="p"·data-group-id="9041257217-23">{</span><span·class="ss">replica_type</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="9041257217-23">}</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·519,·SHA:·5b42c09dce73e378d8e5654f333707351cd1cbc91821675b24302fa7b23362ab·...·]-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
241 </span><span·class="ss">ok</span><span·class="gp·unselectable">241 </span><span·class="ss">ok</span><span·class="gp·unselectable">
242 2&gt;·</span><span·class="nc">mnesia_tpcb</span><span·class="p">:</span><span·class="nf">init</span><span·class="p"·data-group-id="0773947805-26">(</span><span·class="p"·data-group-id="0773947805-27">[</span><span·class="p"·data-group-id="0773947805-28">{</span><span·class="ss">use_running_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·6ac44ccb69d659cde9ed55ecf4ba5f47f521009f8dea1434a54254c8ba9a1b23·...·]-26">)</span><span·class="p">.</span><span·class="w">242 2&gt;·</span><span·class="nc">mnesia_tpcb</span><span·class="p">:</span><span·class="nf">init</span><span·class="p"·data-group-id="9041257217-26">(</span><span·class="p"·data-group-id="9041257217-27">[</span><span·class="p"·data-group-id="9041257217-28">{</span><span·class="ss">use_running_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·2276c3ce1f26417513eb459e4dce40bc46ba1f304bc3873e6a73a4e9e81e44aa·...·]-26">)</span><span·class="p">.</span><span·class="w">
243 ····</span><span·class="p">.</span><span·class="w">243 ····</span><span·class="p">.</span><span·class="w">
244 ····</span><span·class="p">.</span><span·class="w">244 ····</span><span·class="p">.</span><span·class="w">
245 ····</span><span·class="p">.</span><span·class="w">245 ····</span><span·class="p">.</span><span·class="w">
246 </span><span·class="ss">ignore</span></code></pre><p>Initial·configuring·of·the·benchmark·is·done.·It·is·time·to·profile·the·actual246 </span><span·class="ss">ignore</span></code></pre><p>Initial·configuring·of·the·benchmark·is·done.·It·is·time·to·profile·the·actual
247 Mnesia·benchmark:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">lcnt</span><span·class="p">:</span><span·class="nf">apply</span><span·class="p"·data-group-id="8977278243-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8977278243-2">(</span><span·class="p"·data-group-id="8977278243-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·836,·SHA:·750106d42edf704d3cdd44ca5a5e5d49ce4d614740611066ba3da2d57cdf7123·...·]-7">{</span><span·class="ss">use_running_mnesia</span><span·class="p">,</span><span·class="w">247 Mnesia·benchmark:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">lcnt</span><span·class="p">:</span><span·class="nf">apply</span><span·class="p"·data-group-id="3965751742-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3965751742-2">(</span><span·class="p"·data-group-id="3965751742-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·836,·SHA:·9067cee4f266422f4379b3ee6e0d9d6bf972288dcfa751e4b2a752bf912147f1·...·]-7">{</span><span·class="ss">use_running_mnesia</span><span·class="p">,</span><span·class="w">
248 ····</span><span·class="ss">true</span><span·class="p"·data-group-id="8977278243-7">}</span><span·class="p">|</span><span·class="n">Conf</span><span·class="p"·data-group-id="8977278243-6">]</span><span·class="p"·data-group-id="8977278243-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tps</span><sp[·...·truncated·by·diffoscope;·len:·138,·SHA:·b5f37b0b1b7ff8608600b0d8e623f3c0fa603e502ecf0ae8d5da07965185a3a8·...·]-1">)</span><span·class="p">.</span><span·class="w">248 ····</span><span·class="ss">true</span><span·class="p"·data-group-id="3965751742-7">}</span><span·class="p">|</span><span·class="n">Conf</span><span·class="p"·data-group-id="3965751742-6">]</span><span·class="p"·data-group-id="3965751742-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tps</span><sp[·...·truncated·by·diffoscope;·len:·138,·SHA:·7c34bba5217785e8eb0e959307db4886a4c647a776c453e6351eba686ee83bf6·...·]-1">)</span><span·class="p">.</span><span·class="w">
249 ······</span><span·class="p">.</span><span·class="w">249 ······</span><span·class="p">.</span><span·class="w">
250 ······</span><span·class="p">.</span><span·class="w">250 ······</span><span·class="p">.</span><span·class="w">
251 ······</span><span·class="p">.</span><span·class="w">251 ······</span><span·class="p">.</span><span·class="w">
252 </span><span·class="mf">50204.666666666664</span></code></pre><p>The·benchmark·runs·for·60·seconds·(followed·by·verification·and252 </span><span·class="mf">50204.666666666664</span></code></pre><p>The·benchmark·runs·for·60·seconds·(followed·by·verification·and
253 analysis),·and·then·returns·the·number·of·transactions·per·seconds.</p><pre><code·class="text">4&gt;·lcnt:swap_pid_keys().253 analysis),·and·then·returns·the·number·of·transactions·per·seconds.</p><pre><code·class="text">4&gt;·lcnt:swap_pid_keys().
254 ok254 ok
255 5&gt;·lcnt:conflicts().255 5&gt;·lcnt:conflicts().
Offset 346, 71 lines modifiedOffset 346, 71 lines modified
346 problematic·if·they·begin·to·have·conflicts·even·if·it·is·not·shown·in·a346 problematic·if·they·begin·to·have·conflicts·even·if·it·is·not·shown·in·a
347 particular·test.</p><h2·id="the-big-bang-benchmark"·class="section-heading">347 particular·test.</p><h2·id="the-big-bang-benchmark"·class="section-heading">
348 ··<a·href="#the-big-bang-benchmark"·class="hover-link">348 ··<a·href="#the-big-bang-benchmark"·class="hover-link">
349 ····<i·class="ri-link-m"·aria-hidden="true"></i>349 ····<i·class="ri-link-m"·aria-hidden="true"></i>
350 ··</a>350 ··</a>
351 ··<span·class="text">The·Big·Bang·Benchmark</span>351 ··<span·class="text">The·Big·Bang·Benchmark</span>
352 </h2>352 </h2>
353 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3149868003-1">(</span><span·class="ss">big</span><span·class="p"·data-group-id="3149868003-1">)</span><span·class="p">.</span><span·class="w">353 <pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9780130541-1">(</span><span·class="ss">big</span><span·class="p"·data-group-id="9780130541-1">)</span><span·class="p">.</span><span·class="w">
354 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3149868003-2">(</span><span·class="p"·data-group-id="3149868003-3">[</span><span·class="ss">bang</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3149868003-3">]</span><span·class="p"·data-group-id="3149868003-2">)</span><span·class="p">.</span><span·class="w">354 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9780130541-2">(</span><span·class="p"·data-group-id="9780130541-3">[</span><span·class="ss">bang</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9780130541-3">]</span><span·class="p"·data-group-id="9780130541-2">)</span><span·class="p">.</span><span·class="w">
  
355 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-4">(</span><span·class="p"·data-group-id="3149868003-5">[</span><span·class="p"·data-group-id="3149868003-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·143,·SHA:·802b0e69fd9174c7dee6e1f5a9a699194cbd2efc0f4fce99584068e39aac5515·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">355 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-4">(</span><span·class="p"·data-group-id="9780130541-5">[</span><span·class="p"·data-group-id="9780130541-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·143,·SHA:·f7ab24b3e70939be585f38ecf9d7624c20f03b0ebbf08f0cb73e0b7246b07cd6·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
356 ····</span><span·class="k">receive</span><span·class="w">356 ····</span><span·class="k">receive</span><span·class="w">
357 »       </span><span·class="p"·data-group-id="3149868003-7">{</span><span·class="ss">procs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReportTo</span><span·class="p"·data-group-id="3149868003-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">357 »       </span><span·class="p"·data-group-id="9780130541-7">{</span><span·class="ss">procs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReportTo</span><span·class="p"·data-group-id="9780130541-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
358 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-8">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-9">[</span><span·class="p"·data-group-id="3149868003-9">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·68,·SHA:·96f6b3acbd1f5af639f9b9510757b313ffda5baa854766e846f9d87b2702c407·...·]-8">)</span><span·class="w">358 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-8">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-9">[</span><span·class="p"·data-group-id="9780130541-9">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·68,·SHA:·3de84cd071aa8188e5c7ff146f76e0d5b0e004103119ba828b655b84f86121b1·...·]-8">)</span><span·class="w">
359 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">359 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
360 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-10">(</span><span·class="p"·data-group-id="3149868003-11">[</span><span·class="p"·data-group-id="3149868003-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-12">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·149,·SHA:·9a73a8e47d848665a35f7c09014a7b91066d0eb3cfaec18d3142fcc810bce858·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">360 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-10">(</span><span·class="p"·data-group-id="9780130541-11">[</span><span·class="p"·data-group-id="9780130541-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-12">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·149,·SHA:·98bdcaee4ee0db732bf3cb3f5452403699b1071057eb9a740a9440e8d822951b·...·]-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
361 ····</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-13">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="3149868003-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·5543f32c15e600306d3da56cbebad8966cf432bd5a87bf8282263f2007d3f786·...·]-14">}</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">361 ····</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-13">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="9780130541-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·b9c6fa9043ea631a7177a4bc6610fa3f7ec282f29143f060c8245d4b1faa9677·...·]-14">}</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
362 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-16">(</span><span·class="p"·data-group-id="3149868003-17">[</span><span·class="p"·data-group-id="3149868003-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="3149868003-18">[</span><span·class="p"·data-group-id="3149868003-18">]</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="3149868003-16">)</span><span·class="p">;</span><span·class="w"> 
363 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-19">(</span><span·class="p"·data-group-id="3149868003-20">[</span><span·class="p"·data-group-id="3149868003-20">]</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·276,·SHA:·c5f1ae005c237effbcc214fbc3f3d8b049df1df32ceeec31b71ef6b7ec2c8700·...·];</span><span·class="w">362 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-16">(</span><span·class="p"·data-group-id="9780130541-17">[</span><span·class="p"·data-group-id="9780130541-17">]</span><span·class="p">,</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·202,·SHA:·acfe916f6d925530fb3b509bc0f3c4bb12c1a921e6a22e607e5c7516c1255fdf·...·];</span><span·class="w">
 363 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-19">(</span><span·class="p"·data-group-id="9780130541-20">[</span><span·class="p"·data-group-id="9780130541-20">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-21">[</span><span·class="p"·data-group-id="9780130541-21">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReportTo</span><span·class="p"·data-group-id="9780130541-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
364 ····</span><span·class="n">ReportTo</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-22">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="3149868003-23">(</span><span·class="p"·data-group-id="3149868003-23">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·aab6093b12578b7c6f52cb01656619758d53fd0902048fc8ae98513a05c55853·...·]-22">}</span><span·class="p">,</span><span·class="w">364 ····</span><span·class="n">ReportTo</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-22">{</span><span·class="ss">done</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9780130541-23">(</span><span·class="p"·data-group-id="9780130541-23">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·8f3545d8fba895afe0d9158c7e3f9d08d07e3e1460cfd2422101a6e4c5333fef·...·]-22">}</span><span·class="p">,</span><span·class="w">
365 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-24">(</span><span·class="p"·data-group-id="3149868003-25">[</span><span·class="p"·data-group-id="3149868003-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="3149868003-26">[</span><span·class="p"·data-group-id="3149868003-26">][·...·truncated·by·diffoscope;·len:·101,·SHA:·d5be928901f6aaa96971ddb9d2e5479caf2022d129f55a0d07fda82f38dcc75c·...·]-24">)</span><span·class="p">;</span><span·class="w">365 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-24">(</span><span·class="p"·data-group-id="9780130541-25">[</span><span·class="p"·data-group-id="9780130541-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="9780130541-26">[</span><span·class="p"·data-group-id="9780130541-26">][·...·truncated·by·diffoscope;·len:·101,·SHA:·161d033c4928de3a3e6457cdffa8af6c7e0d6955e4624dff7796de769aa67fd9·...·]-24">)</span><span·class="p">;</span><span·class="w">
366 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-27">(</span><span·class="p"·data-group-id="3149868003-28">[</span><span·class="p"·data-group-id="3149868003-28">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-29">[</span><span·class="n">Po</spa[·...·truncated·by·diffoscope;·len:·328,·SHA:·8cbf6c63542e81ba3f39569c315d598e50ef5fba4df4588d26d489c5c578b802·...·]-27">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">366 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-27">(</span><span·class="p"·data-group-id="9780130541-28">[</span><span·class="p"·data-group-id="9780130541-28">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-29">[</span><span·class="n">Po</spa[·...·truncated·by·diffoscope;·len:·328,·SHA:·f910081a16a0c692b1f8aeea950d82f1fa6f793fac5cd1f5b1142f9dc12cb319·...·]-27">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
367 ····</span><span·class="k">receive</span><span·class="w">367 ····</span><span·class="k">receive</span><span·class="w">
368 »       </span><span·class="p"·data-group-id="3149868003-30">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="3149868003-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">368 »       </span><span·class="p"·data-group-id="9780130541-30">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="9780130541-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
369 »       ····</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-31">{</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="3149868003-32">(</span><span·class="p"·data-group-id="3149868003-32">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·aab6093b12578b7c6f52cb01656619758d53fd0902048fc8ae98513a05c55853·...·]-31">}</span><span·class="p">,</span><span·class="w">369 »       ····</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-31">{</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9780130541-32">(</span><span·class="p"·data-group-id="9780130541-32">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·8f3545d8fba895afe0d9158c7e3f9d08d07e3e1460cfd2422101a6e4c5333fef·...·]-31">}</span><span·class="p">,</span><span·class="w">
370 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-33">(</span><span·class="p"·data-group-id="3149868003-34">[</span><span·class="p"·data-group-id="3149868003-34">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pongers</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·73,·SHA:·389194b6df4de06d132968f70bbf953a43cdc9d55dfd05d800d9731b771436b4·...·]-33">)</span><span·class="p">;</span><span·class="w">370 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-33">(</span><span·class="p"·data-group-id="9780130541-34">[</span><span·class="p"·data-group-id="9780130541-34">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pongers</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·73,·SHA:·95d9ce7b30b7571bceefc02db8e0226fcf6770f6b4134a7634726dda68025cea·...·]-33">)</span><span·class="p">;</span><span·class="w">
371 »       </span><span·class="p"·data-group-id="3149868003-35">{</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Po</span><span·class="p"·data-group-id="3149868003-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
372 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-36">(</span><span·class="p"·data-group-id="3149868003-37">[</span><span·class="p"·data-group-id="3149868003-37">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·147,·SHA:·13e8a4e7c52e3aeca685eddabb497ef8db792f1ffa718af5b3ce30393841f3fa·...·]</span><span·class="w">371 »       </span><span·class="p"·data-group-id="9780130541-35">{</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Po</span><span·class="p"·data-group-id="9780130541-35">}</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·5,·SHA:·31a8f0979e9ebe62f09113d719a31fed81f0619f574b0beaaf9c1578477711d7·...·]</span><span·class="w">
 372 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-36">(</span><span·class="p"·data-group-id="9780130541-37">[</span><span·class="p"·data-group-id="9780130541-37">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pos</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReportTo</span><span·class="p"·data-group-id="9780130541-36">)</span><span·class="w">
373 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">373 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
374 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-38">(</span><span·class="p"·data-group-id="3149868003-39">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pis</span><span·class="p"·data-group-id="3149868003-39">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pongers</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReportTo</span><span·class="p"·data-group-id="3149868003-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
375 ····</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-40">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="314[·...·truncated·by·diffoscope;·len:·508,·SHA:·a5d7c9290882c03922b76a34f7cff574f923715330c4fb9a9292b8e94f68ab0c·...·]</span><span·class="w">374 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-38">(</span><span·class="p"·data-group-id="9780130541-39">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pis</span><span·class="p"·data-group-id="97801[·...·truncated·by·diffoscope;·len:·274,·SHA:·aaa3b8df21739325058491cfc576e1e74c015b49b3c285a1d8342113677b2b39·...·]</span><span·class="w">
 375 ····</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-40">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="n">From</span><span·class="p"·data-group-id="9780130541-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">From</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-41">{</span><span·class="ss">pong</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9780130541-42">(</span><span·class="p"·data-group-id="9780130541-42">)</span><span·class="p"·data-group-id="9780130541-41">}</span><span·class="w">
376 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">376 ····</span><span·class="k">after</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
377 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">377 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
378 ····</span><span·class="n">Pi</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-43">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="3149868003-44">(</span><span·class="p"·data-group-id="3149868003-44">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·aab6093b12578b7c6f52cb01656619758d53fd0902048fc8ae98513a05c55853·...·]-43">}</span><span·class="p">,</span><span·class="w">378 ····</span><span·class="n">Pi</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-43">{</span><span·class="ss">ping</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="9780130541-44">(</span><span·class="p"·data-group-id="9780130541-44">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·8f3545d8fba895afe0d9158c7e3f9d08d07e3e1460cfd2422101a6e4c5333fef·...·]-43">}</span><span·class="p">,</span><span·class="w">
379 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="3149868003-45">(</span><span·class="n">Pis</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-46">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pongers</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·148,·SHA:·fd7e9cead2721e178fd6ac155005c42dc0755437b6b420c0b5af5423dd07e06f·...·]-45">)</span><span·class="p">.</span><span·class="w">379 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9780130541-45">(</span><span·class="n">Pis</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-46">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pongers</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·148,·SHA:·16f35a15293ee322aca8db9f2923a8063a03437b6fe44fc8fe3cfb59b122af83·...·]-45">)</span><span·class="p">.</span><span·class="w">
  
380 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="3149868003-47">(</span><span·class="n">N</span><span·class="p"·data-group-id="3149868003-47">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">380 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="9780130541-47">(</span><span·class="n">N</span><span·class="p"·data-group-id="9780130541-47">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">=&lt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
381 ····</span><span·class="p"·data-group-id="3149868003-48">[</span><span·class="p"·data-group-id="3149868003-48">]</span><span·class="p">;</span><span·class="w">381 ····</span><span·class="p"·data-group-id="9780130541-48">[</span><span·class="p"·data-group-id="9780130541-48">]</span><span·class="p">;</span><span·class="w">
382 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="3149868003-49">(</span><span·class="n">N</span><span·class="p"·data-group-id="3149868003-49">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">382 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="9780130541-49">(</span><span·class="n">N</span><span·class="p"·data-group-id="9780130541-49">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
383 ····</span><span·class="p"·data-group-id="3149868003-50">[</span><span·class="nf">spawn_link</span><span·class="p"·data-group-id="3149868003-51">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-52">(</span><span·class="p"·data-group-id="314986800[·...·truncated·by·diffoscope;·len:·953,·SHA:·c77a672c5b1ca9fd5ba1ed12bf20a81892c15a485fe985e9b9c34eacf2bed0e7·...·]-50">]</span><span·class="p">.</span><span·class="w">383 ····</span><span·class="p"·data-group-id="9780130541-50">[</span><span·class="nf">spawn_link</span><span·class="p"·data-group-id="9780130541-51">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-52">(</span><span·class="p"·data-group-id="978013054[·...·truncated·by·diffoscope;·len:·953,·SHA:·f4614a957bae3e2ee1d12251b461f352f673108b4aa112b46cbfe59a8b944984·...·]-50">]</span><span·class="p">.</span><span·class="w">
  
384 </span><span·class="nf">send_procs</span><span·class="p"·data-group-id="3149868003-57">(</span><span·class="p"·data-group-id="3149868003-58">[</span><span·class="p"·data-group-id="3149868003-58">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="3149868003-57">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">384 </span><span·class="nf">send_procs</span><span·class="p"·data-group-id="9780130541-57">(</span><span·class="p"·data-group-id="9780130541-58">[</span><span·class="p"·data-group-id="9780130541-58">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="9780130541-57">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
385 ····</span><span·class="n">Msg</span><span·class="p">;</span><span·class="w">385 ····</span><span·class="n">Msg</span><span·class="p">;</span><span·class="w">
386 </span><span·class="nf">send_procs</span><span·class="p"·data-group-id="3149868003-59">(</span><span·class="p"·data-group-id="3149868003-60">[</span><span·class="n">P</span><span·class="p">|</span><span·class="n">Ps</span><span·class="p"·data-group-id="3149868003-60">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·63,·SHA:·c70309ef4d73b627c3e3ae57c33a2c71bced9bd36daa76251308de2876b41803·...·]-59">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">386 </span><span·class="nf">send_procs</span><span·class="p"·data-group-id="9780130541-59">(</span><span·class="p"·data-group-id="9780130541-60">[</span><span·class="n">P</span><span·class="p">|</span><span·class="n">Ps</span><span·class="p"·data-group-id="9780130541-60">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·63,·SHA:·d6efd0465e6d587cb22fa9bc67bbfabfc8230592587c60805c3ba0065bbdc33e·...·]-59">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
387 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">387 ····</span><span·class="n">P</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">
388 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="3149868003-61">(</span><span·class="n">Ps</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="3149868003-61">)</span><span·class="p">.</span><span·class="w">388 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="9780130541-61">(</span><span·class="n">Ps</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="9780130541-61">)</span><span·class="p">.</span><span·class="w">
  
389 </span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="3149868003-62">(</span><span·class="p"·data-group-id="3149868003-63">[</span><span·class="p"·data-group-id="3149868003-63">]</span><span·class="p"·data-group-id="3149868003-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">389 </span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="9780130541-62">(</span><span·class="p"·data-group-id="9780130541-63">[</span><span·class="p"·data-group-id="9780130541-63">]</span><span·class="p"·data-group-id="9780130541-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
390 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">390 ····</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
391 </span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="3149868003-64">(</span><span·class="p"·data-group-id="3149868003-65">[</span><span·class="n">M</span><span·class="p">|</span><span·class="n">Ms</span><span·class="p"·data-group-id="3149868003-65">]</span><span·class="p"·data-group-id="3149868003-64">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">391 </span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="9780130541-64">(</span><span·class="p"·data-group-id="9780130541-65">[</span><span·class="n">M</span><span·class="p">|</span><span·class="n">Ms</span><span·class="p"·data-group-id="9780130541-65">]</span><span·class="p"·data-group-id="9780130541-64">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
392 ····</span><span·class="k">receive</span><span·class="w">392 ····</span><span·class="k">receive</span><span·class="w">
393 »       </span><span·class="n">M</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">393 »       </span><span·class="n">M</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
394 »       ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="3149868003-66">(</span><span·class="n">Ms</span><span·class="p"·data-group-id="3149868003-66">)</span><span·class="w">394 »       ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="9780130541-66">(</span><span·class="n">Ms</span><span·class="p"·data-group-id="9780130541-66">)</span><span·class="w">
395 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">395 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
  
396 </span><span·class="nf">bang</span><span·class="p"·data-group-id="3149868003-67">(</span><span·class="n">N</span><span·class="p"·data-group-id="3149868003-67">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="3149868003-68">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·03091d46edea8bc2a2710eaba82eed27daa721e239a80d61e303b43f14b2efb7·...·]-68">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">396 </span><span·class="nf">bang</span><span·class="p"·data-group-id="9780130541-67">(</span><span·class="n">N</span><span·class="p"·data-group-id="9780130541-67">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">integer</span><span·class="p"·data-group-id="9780130541-68">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·d2cd601fc752a7b335afcc442ccc8ac0873829ad78a6aacdd074838026399382·...·]-68">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
397 ····</span><span·class="n">Procs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="3149868003-69">(</span><span·class="n">N</span><span·class="p"·data-group-id="3149868003-69">)</span><span·class="p">,</span><span·class="w">397 ····</span><span·class="n">Procs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="9780130541-69">(</span><span·class="n">N</span><span·class="p"·data-group-id="9780130541-69">)</span><span·class="p">,</span><span·class="w">
398 ····</span><span·class="n">RMsgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="3149868003-70">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-71">(</span><span·class="n">P</span><span·class="p"·data-group-id="3149868003-71">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·401,·SHA:·00f44ef13acb9b8780d4fdff1038f1895df03db21322f53b458abea90ba9e6c8·...·]-70">)</span><span·class="p">,</span><span·class="w">398 ····</span><span·class="n">RMsgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">map</span><span·class="p"·data-group-id="9780130541-70">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-71">(</span><span·class="n">P</span><span·class="p"·data-group-id="9780130541-71">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·401,·SHA:·13f2d71af84567e00f75bd5cabb4167bf7f8a3f177a5bd3c1cc838f6772b2ade·...·]-70">)</span><span·class="p">,</span><span·class="w">
399 ····</span><span·class="n">Start</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">now</span><span·class="p"·data-group-id="3149868003-73">(</span><span·class="p"·data-group-id="3149868003-73">)</span><span·class="p">,</span><span·class="w">399 ····</span><span·class="n">Start</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">now</span><span·class="p"·data-group-id="9780130541-73">(</span><span·class="p"·data-group-id="9780130541-73">)</span><span·class="p">,</span><span·class="w">
400 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="3149868003-74">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-75">{</span><span·class="ss">procs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Procs</spa[·...·truncated·by·diffoscope;·len:·281,·SHA:·7d8f50c93116ae81896993e776e9e9eaf5f9f0491970f81800bc3ac157ac64b5·...·]-74">)</span><span·class="p">,</span><span·class="w">400 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="9780130541-74">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-75">{</span><span·class="ss">procs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Procs</spa[·...·truncated·by·diffoscope;·len:·281,·SHA:·7fbd22a40e2ce65bf3e611ae0d89cff40912703c424816ad78e4a282d5a488f5·...·]-74">)</span><span·class="p">,</span><span·class="w">
401 ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="3149868003-77">(</span><span·class="n">RMsgs</span><span·class="p"·data-group-id="3149868003-77">)</span><span·class="p">,</span><span·class="w">401 ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="9780130541-77">(</span><span·class="n">RMsgs</span><span·class="p"·data-group-id="9780130541-77">)</span><span·class="p">,</span><span·class="w">
402 ····</span><span·class="n">Stop</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">now</span><span·class="p"·data-group-id="3149868003-78">(</span><span·class="p"·data-group-id="3149868003-78">)</span><span·class="p">,</span><span·class="w">402 ····</span><span·class="n">Stop</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">now</span><span·class="p"·data-group-id="9780130541-78">(</span><span·class="p"·data-group-id="9780130541-78">)</span><span·class="p">,</span><span·class="w">
403 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foreach</span><span·class="p"·data-group-id="3149868003-79">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3149868003-80">(</span><span·class="n">P</span><span·class="p"·data-group-id="3149868003-80">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·431,·SHA:·29ebe86e6f04e9bcc2dc69e526aa0e93191b4772229667db925a9f2074541303·...·]-79">)</span><span·class="p">,</span><span·class="w">403 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foreach</span><span·class="p"·data-group-id="9780130541-79">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9780130541-80">(</span><span·class="n">P</span><span·class="p"·data-group-id="9780130541-80">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·431,·SHA:·63645fa14d10a92f218a3481c4c2bfe6dbb5d39c6ab1814163249dcf78a694a3·...·]-79">)</span><span·class="p">,</span><span·class="w">
404 ····</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">now_diff</span><span·class="p"·data-group-id="3149868003-82">(</span><span·class="n">Stop</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Start</span><span·class="p"·data-group-id="3149868003-82">)</span><span·class="p">.</span></code></pre><h2·id="see-also"·class="section-heading">404 ····</span><span·class="nc">timer</span><span·class="p">:</span><span·class="nf">now_diff</span><span·class="p"·data-group-id="9780130541-82">(</span><span·class="n">Stop</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Start</span><span·class="p"·data-group-id="9780130541-82">)</span><span·class="p">.</span></code></pre><h2·id="see-also"·class="section-heading">
405 ··<a·href="#see-also"·class="hover-link">405 ··<a·href="#see-also"·class="hover-link">
406 ····<i·class="ri-link-m"·aria-hidden="true"></i>406 ····<i·class="ri-link-m"·aria-hidden="true"></i>
407 ··</a>407 ··</a>
408 ··<span·class="text">See·Also</span>408 ··<span·class="text">See·Also</span>
409 </h2>409 </h2>
410 <p><a·href="lcnt.html">LCNT·Reference·Manual</a></p>410 <p><a·href="lcnt.html">LCNT·Reference·Manual</a></p>
411 </div>411 </div>
3.99 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/make.html
    
Offset 138, 16 lines modifiedOffset 138, 16 lines modified
138 <p><a·href="#all/1"><code·class="inline">make:all/0,1</code></a>·and·<a·href="#files/2"><code·class="inline">make:files/1,2</code></a>·first·looks·for138 <p><a·href="#all/1"><code·class="inline">make:all/0,1</code></a>·and·<a·href="#files/2"><code·class="inline">make:files/1,2</code></a>·first·looks·for
139 <code·class="inline">{emake,·Emake}</code>·in·options,·then·in·the·current·working·directory·for·a·file139 <code·class="inline">{emake,·Emake}</code>·in·options,·then·in·the·current·working·directory·for·a·file
140 named·<code·class="inline">Emakefile</code>.·If·present·<code·class="inline">Emake</code>·should·contain·elements·like·this:</p><pre><code·class="text">Modules.140 named·<code·class="inline">Emakefile</code>.·If·present·<code·class="inline">Emake</code>·should·contain·elements·like·this:</p><pre><code·class="text">Modules.
141 {Modules,Options}.</code></pre><p><code·class="inline">Modules</code>·is·an·atom·or·a·list·of·atoms.·It·can·be</p><ul><li>a·module·name,·for·exmaple,··<code·class="inline">file1</code></li><li>a·module·name·in·another·directory,·for·exmaple,·<code·class="inline">'../foo/file3'</code></li><li>a·set·of·modules·specified·with·a·wildcards,·for·exmaple,·<code·class="inline">'file*'</code></li><li>a·wildcard·indicating·all·modules·in·current·directory,·that·is:·<code·class="inline">'*'</code></li><li>a·list·of·any·of·the·above,·for·exmaple,·<code·class="inline">['file*','../foo/file3','File4']</code></li></ul><p><code·class="inline">Options</code>·is·a·list·of·compiler·options.</p><p><code·class="inline">Emakefile</code>·is·read·from·top·to·bottom.·If·a·module·matches·more·than·one·entry,141 {Modules,Options}.</code></pre><p><code·class="inline">Modules</code>·is·an·atom·or·a·list·of·atoms.·It·can·be</p><ul><li>a·module·name,·for·exmaple,··<code·class="inline">file1</code></li><li>a·module·name·in·another·directory,·for·exmaple,·<code·class="inline">'../foo/file3'</code></li><li>a·set·of·modules·specified·with·a·wildcards,·for·exmaple,·<code·class="inline">'file*'</code></li><li>a·wildcard·indicating·all·modules·in·current·directory,·that·is:·<code·class="inline">'*'</code></li><li>a·list·of·any·of·the·above,·for·exmaple,·<code·class="inline">['file*','../foo/file3','File4']</code></li></ul><p><code·class="inline">Options</code>·is·a·list·of·compiler·options.</p><p><code·class="inline">Emakefile</code>·is·read·from·top·to·bottom.·If·a·module·matches·more·than·one·entry,
142 the·first·match·is·used.·For·example,·the·following·<code·class="inline">Emakefile</code>·means·that142 the·first·match·is·used.·For·example,·the·following·<code·class="inline">Emakefile</code>·means·that
143 <code·class="inline">file1</code>·should·be·compiled·with·the·options·<code·class="inline">[debug_info,{i,&quot;../foo&quot;}]</code>,·while143 <code·class="inline">file1</code>·should·be·compiled·with·the·options·<code·class="inline">[debug_info,{i,&quot;../foo&quot;}]</code>,·while
144 all·other·files·in·the·current·directory·should·be·compiled·with·only·the144 all·other·files·in·the·current·directory·should·be·compiled·with·only·the
145 <code·class="inline">debug_info</code>·flag.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9555372341-1">{</span><span·class="ss">&#39;file1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9555372341-2">[</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="p"·data-group-id="9555372341-3">{</span><span·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·556b1dc80dec35da822ad5ad8c6eba64bb35c5df6e8c3a362f1f99e4330dbcae·...·]-1">}</span><span·class="p">.</span><span·class="w">145 <code·class="inline">debug_info</code>·flag.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5969270665-1">{</span><span·class="ss">&#39;file1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5969270665-2">[</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="p"·data-group-id="5969270665-3">{</span><span·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·99358064b07a5b975733749fb296049fc24bf9c2f6c6991d0bd6dec96c43a429·...·]-1">}</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="9555372341-4">{</span><span·class="ss">&#39;*&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9555372341-5">[</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="9555372341-5">]</span><span·class="p"·data-group-id="9555[·...·truncated·by·diffoscope;·len:·6,·SHA:·b84b3266eb5449cc31ce260928aee498dc9486d56dab39e3cbda4648c1c86660·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="module-see-also"·class="section-heading">146 </span><span·class="p"·data-group-id="5969270665-4">{</span><span·class="ss">&#39;*&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5969270665-5">[</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="5969270665-5">]</span><span·class="p"·data-group-id="5969[·...·truncated·by·diffoscope;·len:·6,·SHA:·952c1de8be92d438cc7ec06c137b81d13c93878af637720919e951ea02c44cf8·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="module-see-also"·class="section-heading">
147 ··<a·href="#module-see-also"·class="hover-link">147 ··<a·href="#module-see-also"·class="hover-link">
148 ····<i·class="ri-link-m"·aria-hidden="true"></i>148 ····<i·class="ri-link-m"·aria-hidden="true"></i>
149 ··</a>149 ··</a>
150 ··<span·class="text">See·Also</span>150 ··<span·class="text">See·Also</span>
151 </h2>151 </h2>
152 <p><a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html">The·Compiler·Application</a></p>152 <p><a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html">The·Compiler·Application</a></p>
153 ····</section>153 ····</section>
28.8 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/notes.html
    
Offset 163, 51 lines modifiedOffset 163, 51 lines modified
163 </h2>163 </h2>
164 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">164 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">
165 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">165 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>168 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
169 </h3>169 </h3>
170 <ul><li><p>Dialyzer·warnings·due·to·type·specs·added·in·<a·href="../../../../lib/runtime_tools-2.1.1/doc/html/dbg.html"><code·class="inline">dbg</code></a>·have·been·eliminated.</p><p>Own·Id:·OTP-18860</p></li><li><p>In·Erlang/OTP·26,·doing·a·<a·href="cover.html"><code·class="inline">cover</code></a>·analysis·on·the·<code·class="inline">line</code>·level·would·return·multiple·entries·for·lines·on·which·multiple·functions·were·defined.</p><p>For·example,·consider·this·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="3945438028-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="3945438028-1">)</span><span·class="p">.</span><span·class="w">170 <ul><li><p>Dialyzer·warnings·due·to·type·specs·added·in·<a·href="../../../../lib/runtime_tools-2.1.1/doc/html/dbg.html"><code·class="inline">dbg</code></a>·have·been·eliminated.</p><p>Own·Id:·OTP-18860</p></li><li><p>In·Erlang/OTP·26,·doing·a·<a·href="cover.html"><code·class="inline">cover</code></a>·analysis·on·the·<code·class="inline">line</code>·level·would·return·multiple·entries·for·lines·on·which·multiple·functions·were·defined.</p><p>For·example,·consider·this·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9780751901-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="9780751901-1">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3945438028-2">(</span><span·class="p"·data-group-id="3945438028-3">[</span><span·class="ss">bar</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">baz</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·c956808cea5f90b2d52a79a56e8e89085950062d138af136a7d1bd1331b014b3·...·]-2">)</span><span·class="p">.</span><span·class="w">171 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9780751901-2">(</span><span·class="p"·data-group-id="9780751901-3">[</span><span·class="ss">bar</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">baz</span><span·class="p">/</span><span·[·...·truncated·by·diffoscope;·len:·113,·SHA:·01268f96ddc6300cc23abd1b50a9da0537b8d689dd633e728c8da27d79b2b724·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
172 </span><span·class="nf">bar</span><span·class="p"·data-group-id="3945438028-4">(</span><span·class="p"·data-group-id="3945438028-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">·</span><span·class="nf">baz</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·a87ca2aafc06e08e4a664f58e5b44e4d4c20718285027cbbf411c26f7c87cb70·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">not_ok</span><span·class="p">.</span></code></pre><p>In·Erlang/OTP·26,·analysing·on·the·<code·class="inline">line</code>·level·would·return·two·entries172 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9780751901-4">(</span><span·class="p"·data-group-id="9780751901-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">·</span><span·class="nf">baz</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·9f5ebaf2bef12b48a6e8b29d2e5f54c99fca805064e6f608bb127f7c372b0e39·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">not_ok</span><span·class="p">.</span></code></pre><p>In·Erlang/OTP·26,·analysing·on·the·<code·class="inline">line</code>·level·would·return·two·entries
173 for·line·4:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">compile_module</span><span·class="p"·data-group-id="7857063008-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="7857063008-1">)</span><span·class="p">.</span><span·class="w">173 for·line·4:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">compile_module</span><span·class="p"·data-group-id="3283476830-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="3283476830-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="7857063008-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="7857063008-2">}</span><span·class="gp·unselectable">174 </span><span·class="p"·data-group-id="3283476830-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="3283476830-2">}</span><span·class="gp·unselectable">
175 2&gt;·</span><span·class="nc">foo</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="7857063008-3">(</span><span·class="p"·data-group-id="7857063008-3">)</span><span·class="p">.</span><span·class="w">175 2&gt;·</span><span·class="nc">foo</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="3283476830-3">(</span><span·class="p"·data-group-id="3283476830-3">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="ss">ok</span><span·class="gp·unselectable">176 </span><span·class="ss">ok</span><span·class="gp·unselectable">
177 3&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="7857063008-4">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="7857063008-4">)</span><span·class="p">.</span><span·class="w">177 3&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="3283476830-4">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="3283476830-4">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="7857063008-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7857063008-6">[</span><span·class="p"·data-group-id="7857063008-7">{</span><span·class="p"·data-group-id="7857063008-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·977,·SHA:·488768dd6a845209008363698abf1065f1cc5dc55cdca87b12a8258de5331f41·...·]-5">}</span><span·class="gp·unselectable">178 </span><span·class="p"·data-group-id="3283476830-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3283476830-6">[</span><span·class="p"·data-group-id="3283476830-7">{</span><span·class="p"·data-group-id="3283476830-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·977,·SHA:·9d3979ab8f6cf1a323a29c9fd1dac80bcb562338af56e8d5a1c0b64dd7588593·...·]-5">}</span><span·class="gp·unselectable">
179 4&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="7857063008-13">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">calls</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="7857063008-13">)</span><span·class="p">.</span><span·class="w">179 4&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="3283476830-13">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">calls</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="3283476830-13">)</span><span·class="p">.</span><span·class="w">
180 </span><span·class="p"·data-group-id="7857063008-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7857063008-15">[</span><span·class="p"·data-group-id="7857063008-16">{</span><span·class="p"·data-group-id="7857063008-17">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·1071,·SHA:·aa4efe3b41820ddc6d624ae87e422b19672ce2a83e3151cbac7595ece8b2f254·...·]-1">)</span><span·class="p">.</span><span·class="w">180 </span><span·class="p"·data-group-id="3283476830-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3283476830-15">[</span><span·class="p"·data-group-id="3283476830-16">{</span><span·class="p"·data-group-id="3283476830-17">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·1071,·SHA:·d253c8d5f9afe1f91605f0b72f2673590fc793690574dd3666b18a9f408498e3·...·]-1">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="9734839786-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="9734839786-2">}</span><span·class="gp·unselectable">181 </span><span·class="p"·data-group-id="9836744439-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="9836744439-2">}</span><span·class="gp·unselectable">
182 2&gt;·</span><span·class="nc">foo</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="9734839786-3">(</span><span·class="p"·data-group-id="9734839786-3">)</span><span·class="p">.</span><span·class="w">182 2&gt;·</span><span·class="nc">foo</span><span·class="p">:</span><span·class="nf">bar</span><span·class="p"·data-group-id="9836744439-3">(</span><span·class="p"·data-group-id="9836744439-3">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="ss">ok</span><span·class="gp·unselectable">183 </span><span·class="ss">ok</span><span·class="gp·unselectable">
184 3&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="9734839786-4">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="9734839786-4">)</span><span·class="p">.</span><span·class="w">184 3&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="9836744439-4">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">coverage</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="9836744439-4">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="9734839786-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9734839786-6">[</span><span·class="p"·data-group-id="9734839786-7">{</span><span·class="p"·data-group-id="9734839786-8">{</span><span·class="ss">foo</span[·...·truncated·by·diffoscope;·len:·454,·SHA:·2adc2ef04d710e23a7f989e4203709d1739733fc28880d6cd6f7c1f45a29a36c·...·]-5">}</span><span·class="gp·unselectable">185 </span><span·class="p"·data-group-id="9836744439-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9836744439-6">[</span><span·class="p"·data-group-id="9836744439-7">{</span><span·class="p"·data-group-id="9836744439-8">{</span><span·class="ss">foo</span[·...·truncated·by·diffoscope;·len:·454,·SHA:·a45159bd7228aff0977fdc9a8febe02c404cb639570f2a865b0f26039ce563a3·...·]-5">}</span><span·class="gp·unselectable">
186 4&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="9734839786-10">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">calls</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="9734839786-10">)</span><span·class="p">.</span><span·class="w">186 4&gt;·</span><span·class="nc">cover</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="9836744439-10">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">calls</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">line</span><span·class="p"·data-group-id="9836744439-10">)</span><span·class="p">.</span><span·class="w">
187 </span><span·class="p"·data-group-id="9734839786-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9734839786-12">[</span><span·class="p"·data-group-id="9734839786-13">{</span><span·class="p"·data-group-id="9734839786-14">{</span><span·class="ss">foo</[·...·truncated·by·diffoscope;·len:·306,·SHA:·fbe773df877291e576e31c01ff69c5fe880c2c4fe8ab2277ac0f7b920c505d9b·...·]-11">}</span></code></pre><p>Own·Id:·OTP-18998·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8159"·title="">GH-8159</a>,·<a·href="https://github.com/erlang/otp/pull/8182"·title="">PR-8182</a></p></li><li><p>Fixed·align·command·in·emacs·mode.</p><p>Own·Id:·OTP-19026·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8155"·title="">PR-8155</a></p></li></ul><h3·id="improvements-and-new-features-1"·class="section-heading">187 </span><span·class="p"·data-group-id="9836744439-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9836744439-12">[</span><span·class="p"·data-group-id="9836744439-13">{</span><span·class="p"·data-group-id="9836744439-14">{</span><span·class="ss">foo</[·...·truncated·by·diffoscope;·len:·306,·SHA:·97de46a398bf7b4bff7d4f82acf6471e4a59ffdc77f9f18456223654bac5110f·...·]-11">}</span></code></pre><p>Own·Id:·OTP-18998·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8159"·title="">GH-8159</a>,·<a·href="https://github.com/erlang/otp/pull/8182"·title="">PR-8182</a></p></li><li><p>Fixed·align·command·in·emacs·mode.</p><p>Own·Id:·OTP-19026·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8155"·title="">PR-8155</a></p></li></ul><h3·id="improvements-and-new-features-1"·class="section-heading">
188 ··<a·href="#improvements-and-new-features-1"·class="hover-link">188 ··<a·href="#improvements-and-new-features-1"·class="hover-link">
189 ····<i·class="ri-link-m"·aria-hidden="true"></i>189 ····<i·class="ri-link-m"·aria-hidden="true"></i>
190 ··</a>190 ··</a>
191 ··<span·class="text">Improvements·and·New·Features</span>191 ··<span·class="text">Improvements·and·New·Features</span>
192 </h3>192 </h3>
193 <ul><li><p>Triple-Quoted·Strings·has·been·implemented·as·per·<a·href="https://www.erlang.org/eeps/eep-0064">EEP·64</a>.·See·<a·href="../../../../doc/system/data_types.html#string">String</a>·in·the·Reference·Manual.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;193 <ul><li><p>Triple-Quoted·Strings·has·been·implemented·as·per·<a·href="https://www.erlang.org/eeps/eep-0064">EEP·64</a>.·See·<a·href="../../../../doc/system/data_types.html#string">String</a>·in·the·Reference·Manual.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">&quot;&quot;</span><span·class="s">&quot;
194 ···a194 ···a
195 ···b195 ···b
196 ···c196 ···c
197 ···&quot;</span><span·class="s">&quot;&quot;</span><span·class="p">.</span><span·class="w">197 ···&quot;</span><span·class="s">&quot;&quot;</span><span·class="p">.</span><span·class="w">
198 </span><span·class="s">&quot;a\nb\nc&quot;</span></code></pre><p>Adjacent·string·literals·without·intervening·white·space·is·now·a·syntax·error,·to·avoid·possible·confusion·with·triple-quoted·strings.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">&quot;abc&quot;</span><span·class="s">&quot;xyz&quot;</span><span·class="p">.</span><span·class="w">198 </span><span·class="s">&quot;a\nb\nc&quot;</span></code></pre><p>Adjacent·string·literals·without·intervening·white·space·is·now·a·syntax·error,·to·avoid·possible·confusion·with·triple-quoted·strings.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="s">&quot;abc&quot;</span><span·class="s">&quot;xyz&quot;</span><span·class="p">.</span><span·class="w">
199 </span><span·class="s">&quot;xyz&quot;</span><span·class="p">.</span><span·class="w">199 </span><span·class="s">&quot;xyz&quot;</span><span·class="p">.</span><span·class="w">
200 </span><span·class="gt">*·1:6:·adjacent·string·literals·without·intervening·white·space</span></code></pre><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18750·Aux·Id:·OTP-18746,·<a·href="https://github.com/erlang/otp/pull/7313"·title="">PR-7313</a>,·<a·href="https://github.com/erlang/otp/pull/7451"·title="">PR-7451</a></p></li><li><p>There·is·a·new·tool·<a·href="tprof.html"><code·class="inline">tprof</code></a>,·which·combines·the·functionality·of·<a·href="eprof.html"><code·class="inline">eprof</code></a>·and·<a·href="cprof.html"><code·class="inline">cprof</code></a>·under·one·interface·and·adds·heap·profiling.·It·also·has·functionality·to·help·with·profiling·process·hierarchies.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="8838990784-1">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">seq</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8838990784-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·52b23a21fceea3efdd131d84eb3b2f9674c11c4717740ee0216c3674bbdf20a7·...·]-1">)</span><span·class="p">.</span><span·class="w">200 </span><span·class="gt">*·1:6:·adjacent·string·literals·without·intervening·white·space</span></code></pre><p><strong><em>·POTENTIAL·INCOMPATIBILITY·</em></strong></p><p>Own·Id:·OTP-18750·Aux·Id:·OTP-18746,·<a·href="https://github.com/erlang/otp/pull/7313"·title="">PR-7313</a>,·<a·href="https://github.com/erlang/otp/pull/7451"·title="">PR-7451</a></p></li><li><p>There·is·a·new·tool·<a·href="tprof.html"><code·class="inline">tprof</code></a>,·which·combines·the·functionality·of·<a·href="eprof.html"><code·class="inline">eprof</code></a>·and·<a·href="cprof.html"><code·class="inline">cprof</code></a>·under·one·interface·and·adds·heap·profiling.·It·also·has·functionality·to·help·with·profiling·process·hierarchies.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="2267113317-1">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">seq</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2267113317-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·f9b5ea88afa6a58247fe908aae7d8fe6854f8e49f4fcf618a9c475b932326c86·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
201 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">201 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">
202 </span><span·class="n">FUNCTION</span><span·class="w">··········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="8838990784-4">[</span><span·class="w">·····</span><span·class="c1">%]</span><span·class="w">202 </span><span·class="n">FUNCTION</span><span·class="w">··········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="2267113317-4">[</span><span·class="w">·····</span><span·class="c1">%]</span><span·class="w">
203 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="8838990784-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="8838990784-5">]</span><span·class="w">203 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="2267113317-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="2267113317-5">]</span><span·class="w">
204 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="8838990784-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8838990784-6">]</span><span·class="w">204 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="2267113317-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="2267113317-6">]</span><span·class="w">
205 </span><span·class="ss">ok</span></code></pre><p>Own·Id:·OTP-18756·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/6639"·title="">PR-6639</a></p></li><li><p>Native·coverage·support·has·been·implemented·in·the·JIT.·It·will··automatically·be·used·by·the·<a·href="cover.html"><code·class="inline">cover</code></a>·tool·to·reduce·the·execution·overhead·when·running·cover-compiled·code.</p><p>There·are·also·new·APIs·to·support·native·coverage·without·using·the·<code·class="inline">cover</code>·tool.</p><p>To·instrument·code·for·native·coverage·it·must·be·compiled·with·the·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html#line_coverage"><code·class="inline">line_coverage</code></a>·option.</p><p>To·enable·native·coverage·in·the·runtime·system,·start·it·like·so:</p><pre><code·class="text">$·erl·+JPcover·true</code></pre><p>There·are·also·the·following·new·functions·for·supporting·native·coverage:</p><ul><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/0"><code·class="inline">code:get_coverage_mode/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/1"><code·class="inline">code:get_coverage_mode/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#set_coverage_mode/1"><code·class="inline">code:set_coverage_mode/1</code></a></li></ul><p>Own·Id:·OTP-18856·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7856"·title="">PR-7856</a></p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>Improved·the·align·command·in·emacs·mode.</p><p>Own·Id:·OTP-19080·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8288"·title="">PR-8288</a></p></li></ul><h2·id="tools-3-6"·class="section-heading">205 </span><span·class="ss">ok</span></code></pre><p>Own·Id:·OTP-18756·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/6639"·title="">PR-6639</a></p></li><li><p>Native·coverage·support·has·been·implemented·in·the·JIT.·It·will··automatically·be·used·by·the·<a·href="cover.html"><code·class="inline">cover</code></a>·tool·to·reduce·the·execution·overhead·when·running·cover-compiled·code.</p><p>There·are·also·new·APIs·to·support·native·coverage·without·using·the·<code·class="inline">cover</code>·tool.</p><p>To·instrument·code·for·native·coverage·it·must·be·compiled·with·the·<a·href="../../../../lib/compiler-8.5.5/doc/html/compile.html#line_coverage"><code·class="inline">line_coverage</code></a>·option.</p><p>To·enable·native·coverage·in·the·runtime·system,·start·it·like·so:</p><pre><code·class="text">$·erl·+JPcover·true</code></pre><p>There·are·also·the·following·new·functions·for·supporting·native·coverage:</p><ul><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/0"><code·class="inline">code:get_coverage_mode/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#get_coverage_mode/1"><code·class="inline">code:get_coverage_mode/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#set_coverage_mode/1"><code·class="inline">code:set_coverage_mode/1</code></a></li></ul><p>Own·Id:·OTP-18856·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7856"·title="">PR-7856</a></p></li><li><p>The·documentation·has·been·migrated·to·use·Markdown·and·ExDoc.</p><p>Own·Id:·OTP-18955·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8026"·title="">PR-8026</a></p></li><li><p>Improved·the·align·command·in·emacs·mode.</p><p>Own·Id:·OTP-19080·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8288"·title="">PR-8288</a></p></li></ul><h2·id="tools-3-6"·class="section-heading">
206 ··<a·href="#tools-3-6"·class="hover-link">206 ··<a·href="#tools-3-6"·class="hover-link">
207 ····<i·class="ri-link-m"·aria-hidden="true"></i>207 ····<i·class="ri-link-m"·aria-hidden="true"></i>
208 ··</a>208 ··</a>
209 ··<span·class="text">Tools·3.6</span>209 ··<span·class="text">Tools·3.6</span>
210 </h2>210 </h2>
211 <h3·id="improvements-and-new-features-2"·class="section-heading">211 <h3·id="improvements-and-new-features-2"·class="section-heading">
877 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/tools.epub
4.44 KB
zipinfo {}
    
Offset 1, 30 lines modifiedOffset 1, 30 lines modified
1 Zip·file·size:·239545·bytes,·number·of·entries:·281 Zip·file·size:·239549·bytes,·number·of·entries:·28
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·10:47·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Feb-13·09:04·mimetype
3 ?rw-r--r--··6.1·unx····33569·bx·defN·25-Feb-13·10:47·OEBPS/xref_chapter.xhtml3 ?rw-r--r--··6.1·unx····33569·bx·defN·25-Feb-13·09:04·OEBPS/xref_chapter.xhtml
4 ?rw-r--r--··6.1·unx···178309·bx·defN·25-Feb-13·10:47·OEBPS/xref.xhtml4 ?rw-r--r--··6.1·unx···178309·bx·defN·25-Feb-13·09:04·OEBPS/xref.xhtml
5 ?rw-r--r--··6.1·unx···167553·bx·defN·25-Feb-13·10:47·OEBPS/tprof.xhtml5 ?rw-r--r--··6.1·unx···167553·bx·defN·25-Feb-13·09:04·OEBPS/tprof.xhtml
6 ?rw-r--r--··6.1·unx······714·bx·defN·25-Feb-13·10:47·OEBPS/title.xhtml6 ?rw-r--r--··6.1·unx······714·bx·defN·25-Feb-13·09:04·OEBPS/title.xhtml
7 ?rw-r--r--··6.1·unx····22571·bx·defN·25-Feb-13·10:47·OEBPS/tags.xhtml7 ?rw-r--r--··6.1·unx····22571·bx·defN·25-Feb-13·09:04·OEBPS/tags.xhtml
8 ?rw-r--r--··6.1·unx···100772·bx·defN·25-Feb-13·10:47·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx···100772·bx·defN·25-Feb-13·09:04·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····2010·bx·defN·25-Feb-13·10:47·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····2010·bx·defN·25-Feb-13·09:04·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····12605·bx·defN·25-Feb-13·10:47·OEBPS/make.xhtml10 ?rw-r--r--··6.1·unx····12605·bx·defN·25-Feb-13·09:04·OEBPS/make.xhtml
11 ?rw-r--r--··6.1·unx····47357·bx·defN·25-Feb-13·10:47·OEBPS/lcnt_chapter.xhtml11 ?rw-r--r--··6.1·unx····47357·bx·defN·25-Feb-13·09:04·OEBPS/lcnt_chapter.xhtml
12 ?rw-r--r--··6.1·unx····61087·bx·defN·25-Feb-13·10:47·OEBPS/lcnt.xhtml12 ?rw-r--r--··6.1·unx····61087·bx·defN·25-Feb-13·09:04·OEBPS/lcnt.xhtml
13 ?rw-r--r--··6.1·unx·····6942·bx·defN·25-Feb-13·10:47·OEBPS/fprof_chapter.xhtml13 ?rw-r--r--··6.1·unx·····6942·bx·defN·25-Feb-13·09:04·OEBPS/fprof_chapter.xhtml
14 ?rw-r--r--··6.1·unx···125787·bx·defN·25-Feb-13·10:47·OEBPS/fprof.xhtml14 ?rw-r--r--··6.1·unx···125787·bx·defN·25-Feb-13·09:04·OEBPS/fprof.xhtml
15 ?rw-r--r--··6.1·unx····12906·bx·defN·25-Feb-13·10:47·OEBPS/erlang_mode_chapter.xhtml15 ?rw-r--r--··6.1·unx····12906·bx·defN·25-Feb-13·09:04·OEBPS/erlang_mode_chapter.xhtml
16 ?rw-r--r--··6.1·unx····22625·bx·defN·25-Feb-13·10:47·OEBPS/erlang-el.xhtml16 ?rw-r--r--··6.1·unx····22625·bx·defN·25-Feb-13·09:04·OEBPS/erlang-el.xhtml
17 ?rw-r--r--··6.1·unx····36760·bx·defN·25-Feb-13·10:47·OEBPS/eprof.xhtml17 ?rw-r--r--··6.1·unx····36760·bx·defN·25-Feb-13·09:04·OEBPS/eprof.xhtml
18 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·10:47·OEBPS/dist/epub-erlang-ESPT6BQV.css18 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Feb-13·09:04·OEBPS/dist/epub-erlang-ESPT6BQV.css
19 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·10:47·OEBPS/dist/epub-LSJCIYTM.js19 ?rw-r--r--··6.1·unx······499·bx·defN·25-Feb-13·09:04·OEBPS/dist/epub-LSJCIYTM.js
20 ?rw-r--r--··6.1·unx····47208·bx·defN·25-Feb-13·10:47·OEBPS/cprof_chapter.xhtml20 ?rw-r--r--··6.1·unx····47208·bx·defN·25-Feb-13·09:04·OEBPS/cprof_chapter.xhtml
21 ?rw-r--r--··6.1·unx····39982·bx·defN·25-Feb-13·10:47·OEBPS/cprof.xhtml21 ?rw-r--r--··6.1·unx····39982·bx·defN·25-Feb-13·09:04·OEBPS/cprof.xhtml
22 ?rw-r--r--··6.1·unx····97748·bx·defN·25-Feb-13·10:47·OEBPS/cover_chapter.xhtml22 ?rw-r--r--··6.1·unx····97748·bx·defN·25-Feb-13·09:04·OEBPS/cover_chapter.xhtml
23 ?rw-r--r--··6.1·unx···101036·bx·defN·25-Feb-13·10:47·OEBPS/cover.xhtml23 ?rw-r--r--··6.1·unx···101036·bx·defN·25-Feb-13·09:04·OEBPS/cover.xhtml
24 ?rw-r--r--··6.1·unx·····3642·bx·defN·25-Feb-13·10:47·OEBPS/content.opf24 ?rw-r--r--··6.1·unx·····3642·bx·defN·25-Feb-13·09:04·OEBPS/content.opf
25 ?rw-r--r--··6.1·unx····12283·bx·stor·25-Feb-13·10:47·OEBPS/assets/venn2.gif25 ?rw-r--r--··6.1·unx····12283·bx·stor·25-Feb-13·09:04·OEBPS/assets/venn2.gif
26 ?rw-r--r--··6.1·unx·····9095·bx·stor·25-Feb-13·10:47·OEBPS/assets/venn1.gif26 ?rw-r--r--··6.1·unx·····9095·bx·stor·25-Feb-13·09:04·OEBPS/assets/venn1.gif
27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·10:47·OEBPS/assets/logo.png27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Feb-13·09:04·OEBPS/assets/logo.png
28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·10:47·META-INF/container.xml28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Feb-13·09:04·META-INF/container.xml
29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·10:47·META-INF/com.apple.ibooks.display-options.xml29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Feb-13·09:04·META-INF/com.apple.ibooks.display-options.xml
30 28·files,·1163893·bytes·uncompressed,·234755·bytes·compressed:··79.8%30 28·files,·1163893·bytes·uncompressed,·234759·bytes·compressed:··79.8%
162 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:47:14,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:04:44,·uncompressed·size·20,·method=store
40.8 KB
OEBPS/xref_chapter.xhtml
Max HTML report size reached
156 KB
OEBPS/tprof.xhtml
Max HTML report size reached
28.7 KB
OEBPS/notes.xhtml
Max HTML report size reached
3.89 KB
OEBPS/make.xhtml
    
Offset 33, 16 lines modifiedOffset 33, 16 lines modified
33 <p><a·href="#all/1"><code·class="inline">make:all/0,1</code></a>·and·<a·href="#files/2"><code·class="inline">make:files/1,2</code></a>·first·looks·for33 <p><a·href="#all/1"><code·class="inline">make:all/0,1</code></a>·and·<a·href="#files/2"><code·class="inline">make:files/1,2</code></a>·first·looks·for
34 <code·class="inline">{emake,·Emake}</code>·in·options,·then·in·the·current·working·directory·for·a·file34 <code·class="inline">{emake,·Emake}</code>·in·options,·then·in·the·current·working·directory·for·a·file
35 named·<code·class="inline">Emakefile</code>.·If·present·<code·class="inline">Emake</code>·should·contain·elements·like·this:</p><pre><code·class="text">Modules.35 named·<code·class="inline">Emakefile</code>.·If·present·<code·class="inline">Emake</code>·should·contain·elements·like·this:</p><pre><code·class="text">Modules.
36 {Modules,Options}.</code></pre><p><code·class="inline">Modules</code>·is·an·atom·or·a·list·of·atoms.·It·can·be</p><ul><li>a·module·name,·for·exmaple,··<code·class="inline">file1</code></li><li>a·module·name·in·another·directory,·for·exmaple,·<code·class="inline">'../foo/file3'</code></li><li>a·set·of·modules·specified·with·a·wildcards,·for·exmaple,·<code·class="inline">'file*'</code></li><li>a·wildcard·indicating·all·modules·in·current·directory,·that·is:·<code·class="inline">'*'</code></li><li>a·list·of·any·of·the·above,·for·exmaple,·<code·class="inline">['file*','../foo/file3','File4']</code></li></ul><p><code·class="inline">Options</code>·is·a·list·of·compiler·options.</p><p><code·class="inline">Emakefile</code>·is·read·from·top·to·bottom.·If·a·module·matches·more·than·one·entry,36 {Modules,Options}.</code></pre><p><code·class="inline">Modules</code>·is·an·atom·or·a·list·of·atoms.·It·can·be</p><ul><li>a·module·name,·for·exmaple,··<code·class="inline">file1</code></li><li>a·module·name·in·another·directory,·for·exmaple,·<code·class="inline">'../foo/file3'</code></li><li>a·set·of·modules·specified·with·a·wildcards,·for·exmaple,·<code·class="inline">'file*'</code></li><li>a·wildcard·indicating·all·modules·in·current·directory,·that·is:·<code·class="inline">'*'</code></li><li>a·list·of·any·of·the·above,·for·exmaple,·<code·class="inline">['file*','../foo/file3','File4']</code></li></ul><p><code·class="inline">Options</code>·is·a·list·of·compiler·options.</p><p><code·class="inline">Emakefile</code>·is·read·from·top·to·bottom.·If·a·module·matches·more·than·one·entry,
37 the·first·match·is·used.·For·example,·the·following·<code·class="inline">Emakefile</code>·means·that37 the·first·match·is·used.·For·example,·the·following·<code·class="inline">Emakefile</code>·means·that
38 <code·class="inline">file1</code>·should·be·compiled·with·the·options·<code·class="inline">[debug_info,{i,&quot;../foo&quot;}]</code>,·while38 <code·class="inline">file1</code>·should·be·compiled·with·the·options·<code·class="inline">[debug_info,{i,&quot;../foo&quot;}]</code>,·while
39 all·other·files·in·the·current·directory·should·be·compiled·with·only·the39 all·other·files·in·the·current·directory·should·be·compiled·with·only·the
40 <code·class="inline">debug_info</code>·flag.</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="3830710196-1">{</samp><samp·class="ss">&#39;file1&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="3830710196-2">[</samp><samp·class="ss">debug_info</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="3830710196-3">{</samp><samp·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·35ea1abb85d0bd58c1240df9112d87ad6298a9595c9e15fc3bbe4f24ac92084a·...·]-1">}</samp><samp·class="p">.</samp><samp·class="w">40 <code·class="inline">debug_info</code>·flag.</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="4089769405-1">{</samp><samp·class="ss">&#39;file1&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="4089769405-2">[</samp><samp·class="ss">debug_info</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="4089769405-3">{</samp><samp·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·82692b1e79a87e94a45efbb3e03d2b0eded6c43d21be5160ad23227ae128c134·...·]-1">}</samp><samp·class="p">.</samp><samp·class="w">
41 </samp><samp·class="p"·data-group-id="3830710196-4">{</samp><samp·class="ss">&#39;*&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="3830710196-5">[</samp><samp·class="ss">debug_info</samp><samp·class="p"·data-group-id="3830710196-5">]</samp><samp·class="p"·data-group-id="3830[·...·truncated·by·diffoscope;·len:·6,·SHA:·0f0c1dff751e83fd4ee3547e8848b23dd8de472efa6c7625764f1bd0410aab71·...·]-4">}</samp><samp·class="p">.</samp></code></pre><h2·id="module-see-also"·class="section-heading">41 </samp><samp·class="p"·data-group-id="4089769405-4">{</samp><samp·class="ss">&#39;*&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="4089769405-5">[</samp><samp·class="ss">debug_info</samp><samp·class="p"·data-group-id="4089769405-5">]</samp><samp·class="p"·data-group-id="4089[·...·truncated·by·diffoscope;·len:·6,·SHA:·03d80e23ce462e02005c5ab50d6e02bd263f052f1c800e01eff78805de1c6022·...·]-4">}</samp><samp·class="p">.</samp></code></pre><h2·id="module-see-also"·class="section-heading">
42 ··<a·href="#module-see-also"·class="hover-link">42 ··<a·href="#module-see-also"·class="hover-link">
43 ····<i·class="ri-link-m"·aria-hidden="true"></i>43 ····<i·class="ri-link-m"·aria-hidden="true"></i>
44 ··</a>44 ··</a>
45 ··<span·class="text">See·Also</span>45 ··<span·class="text">See·Also</span>
46 </h2>46 </h2>
47 <p><a·href="../../../../lib/compiler/doc/html/compile.html">The·Compiler·Application</a></p>47 <p><a·href="../../../../lib/compiler/doc/html/compile.html">The·Compiler·Application</a></p>
48 ······</section>48 ······</section>
57.2 KB
OEBPS/lcnt_chapter.xhtml
Max HTML report size reached
3.72 KB
OEBPS/fprof_chapter.xhtml
    
Offset 67, 15 lines modifiedOffset 67, 15 lines modified
67 ··<a·href="#immediate-profiling"·class="hover-link">67 ··<a·href="#immediate-profiling"·class="hover-link">
68 ····<i·class="ri-link-m"·aria-hidden="true"></i>68 ····<i·class="ri-link-m"·aria-hidden="true"></i>
69 ··</a>69 ··</a>
70 ··<span·class="text">Immediate·profiling</span>70 ··<span·class="text">Immediate·profiling</span>
71 </h2>71 </h2>
72 <p>It·is·also·possible·to·trace·immediately·into·the·profiling·process·that·creates72 <p>It·is·also·possible·to·trace·immediately·into·the·profiling·process·that·creates
73 the·raw·profile·data,·that·is·to·short·circuit·the·tracing·and·profiling·steps73 the·raw·profile·data,·that·is·to·short·circuit·the·tracing·and·profiling·steps
74 so·that·the·filesystem·is·not·used·for·tracing.</p><p>Do·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8652619587-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p"·data-group-id="8652619587-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·7f685b26530b7a89d6c8159f2199ea1ca6b1c10049977de8ad5fef37f78a15d7·...·]-2">)</span><span·class="p">,</span><span·class="w">74 so·that·the·filesystem·is·not·used·for·tracing.</p><p>Do·something·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6268911960-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tracer</span><span·class="p"·data-group-id="6268911960-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·209bb8040f57ecbce31b03419ec66c5da210d9632b249294feead1c38ea600de·...·]-2">)</span><span·class="p">,</span><span·class="w">
75 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="8652619587-3">(</span><span·class="p"·data-group-id="8652619587-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8652619587-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·7515ca684019809320be030cc0ea7908e21345e77beb2ae7e7de2766675933fc·...·]-3">)</span><span·class="p">,</span><span·class="w">75 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="6268911960-3">(</span><span·class="p"·data-group-id="6268911960-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6268911960-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·e9bbd506fc459655dc87e5a7ad5a0b77112ca8973e1ab4a9dd8f45fb8e0ce5a9·...·]-3">)</span><span·class="p">,</span><span·class="w">
76 </span><span·class="c1">%%·Run·code·to·profile</span><span·class="w">76 </span><span·class="c1">%%·Run·code·to·profile</span><span·class="w">
77 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="8652619587-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="8652619587-6">)</span><span·class="p">;</span></code></pre><p>This·puts·less·load·on·the·filesystem,·but·much·more·load·on·the·Erlang·runtime77 </span><span·class="nc">fprof</span><span·class="p">:</span><span·class="nf">trace</span><span·class="p"·data-group-id="6268911960-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="6268911960-6">)</span><span·class="p">;</span></code></pre><p>This·puts·less·load·on·the·filesystem,·but·much·more·load·on·the·Erlang·runtime
78 system.</p>78 system.</p>
  
79 ··</body>79 ··</body>
80 </html>80 </html>
135 KB
OEBPS/fprof.xhtml
Max HTML report size reached
14.6 KB
OEBPS/erlang-el.xhtml
Max HTML report size reached
82.9 KB
OEBPS/cprof_chapter.xhtml
Max HTML report size reached
3.48 KB
OEBPS/cprof.xhtml
    
Offset 453, 15 lines modifiedOffset 453, 15 lines modified
453 ······<div·class="specs">453 ······<div·class="specs">
  
454 ··········<pre·translate="no"><span·class="attribute">-spec</span>·analyse(Mod,·Limit)·->·ModAnalysis·::·<a·href="#t:mod_analysis/0">mod_analysis</a>()454 ··········<pre·translate="no"><span·class="attribute">-spec</span>·analyse(Mod,·Limit)·->·ModAnalysis·::·<a·href="#t:mod_analysis/0">mod_analysis</a>()
455 ·················when·Mod·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>455 ·················when·Mod·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>
  
456 ······</div>456 ······</div>
  
457 <p>Collects·and·analyses·all·call·counters·for·module·<code·class="inline">Module</code>.</p><p>This·function·returns:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="5949802210-1">{</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ModuleCount</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">FuncAnalysisList</samp><samp·class="p"·data-group-id="59498[·...·truncated·by·diffoscope;·len:·650,·SHA:·e9389aee0dc81033ef16ddfe06160b1c5650591ed037c242bf707ea786ec07ae·...·]2-1">}</samp></code></pre><p>If·call·counters·are·still·running·while·<code·class="inline">analyse/0,1,2</code>·is·executing,·the·result457 <p>Collects·and·analyses·all·call·counters·for·module·<code·class="inline">Module</code>.</p><p>This·function·returns:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="2215170973-1">{</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">ModuleCount</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">FuncAnalysisList</samp><samp·class="p"·data-group-id="22151[·...·truncated·by·diffoscope;·len:·650,·SHA:·edb2db7da6904a0c6de675bf6017b92fc50e2192e24f54ff94c67cd7fd090de0·...·]2-1">}</samp></code></pre><p>If·call·counters·are·still·running·while·<code·class="inline">analyse/0,1,2</code>·is·executing,·the·result
458 could·be·inconsistent.·This·happens·if·the·process·executing·<code·class="inline">analyse/0,1,2</code>458 could·be·inconsistent.·This·happens·if·the·process·executing·<code·class="inline">analyse/0,1,2</code>
459 is·scheduled·out·so·some·other·process·can·increment·the·counters·that·are459 is·scheduled·out·so·some·other·process·can·increment·the·counters·that·are
460 being·analysed.·Calling·<a·href="#pause/0"><code·class="inline">pause()</code></a>·before·analysing·takes·care·of460 being·analysed.·Calling·<a·href="#pause/0"><code·class="inline">pause()</code></a>·before·analysing·takes·care·of
461 that·problem.</p><p>All·functions·with·a·<code·class="inline">FuncCallCount</code>·lower·than·<code·class="inline">Limit</code>·are·excluded·from461 that·problem.</p><p>All·functions·with·a·<code·class="inline">FuncCallCount</code>·lower·than·<code·class="inline">Limit</code>·are·excluded·from
462 <code·class="inline">FuncAnalysisList</code>.·They·are·still·included·in·<code·class="inline">ModCallCount</code>,·though.</p>462 <code·class="inline">FuncAnalysisList</code>.·They·are·still·included·in·<code·class="inline">ModCallCount</code>,·though.</p>
463 ··</section>463 ··</section>
464 </section>464 </section>
173 KB
OEBPS/cover_chapter.xhtml
Max HTML report size reached
7.46 KB
OEBPS/cover.xhtml
Max HTML report size reached
2.35 KB
OEBPS/content.opf
2.32 KB
OEBPS/content.opf
Max HTML report size reached
156 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/tprof.html
    
Offset 156, 199 lines modifiedOffset 156, 199 lines modified
156 The·<code·class="inline">tprof</code>·results·will·probably·be·incorrect·when·the·profiled·code·was156 The·<code·class="inline">tprof</code>·results·will·probably·be·incorrect·when·the·profiled·code·was
157 reloading·during·a·profiling·session.</p></section><h2·id="module-ad-hoc-profiling"·class="section-heading">157 reloading·during·a·profiling·session.</p></section><h2·id="module-ad-hoc-profiling"·class="section-heading">
158 ··<a·href="#module-ad-hoc-profiling"·class="hover-link">158 ··<a·href="#module-ad-hoc-profiling"·class="hover-link">
159 ····<i·class="ri-link-m"·aria-hidden="true"></i>159 ····<i·class="ri-link-m"·aria-hidden="true"></i>
160 ··</a>160 ··</a>
161 ··<span·class="text">Ad-hoc·profiling</span>161 ··<span·class="text">Ad-hoc·profiling</span>
162 </h2>162 </h2>
163 <p>Ad-hoc·profiling·is·convenient·for·profiling·a·single·function·call.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="4208874387-1">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">seq</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4208874387-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·3e7b13ae84d2ff74b7cca489420b1174b7a1e627934b6719624f90dda4be17d2·...·]-1">)</span><span·class="p">.</span><span·class="w">163 <p>Ad-hoc·profiling·is·convenient·for·profiling·a·single·function·call.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="8631838023-1">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">seq</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8631838023-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·4fcb147589b201bad7cbd69206fae8a6ffd3503657c6147b143537eb0b418593·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
164 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">164 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.92</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">
165 </span><span·class="n">FUNCTION</span><span·class="w">··········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="4208874387-4">[</span><span·class="w">·····</span><span·class="c1">%]</span><span·class="w">165 </span><span·class="n">FUNCTION</span><span·class="w">··········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="8631838023-4">[</span><span·class="w">·····</span><span·class="c1">%]</span><span·class="w">
166 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="4208874387-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="4208874387-5">]</span><span·class="w">166 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="8631838023-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="8631838023-5">]</span><span·class="w">
167 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="4208874387-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="4208874387-6">]</span><span·class="w">167 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="8631838023-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8631838023-6">]</span><span·class="w">
168 </span><span·class="ss">ok</span></code></pre><p>By·default·tracing·is·enabled·for·all·functions·in·all·modules.·When·funs168 </span><span·class="ss">ok</span></code></pre><p>By·default·tracing·is·enabled·for·all·functions·in·all·modules.·When·funs
169 are·created·in·the·interactive·shell,·parts·of·shell·code·are·also·traced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="0977565641-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0977565641-2">(</span><span·class="p"·data-group-id="0977565641-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·2df01e24a61bf2c1381eb2142549b058763cb84c247312aa13292fb8ba8085d8·...·]-1">)</span><span·class="p">.</span><span·class="w">169 are·created·in·the·interactive·shell,·parts·of·shell·code·are·also·traced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="7323717382-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7323717382-2">(</span><span·class="p"·data-group-id="7323717382-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·b5aed12aa323b51cccfc60806dd0ecf3f5d059bbf314c553ea11e1002be55755·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.95</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">170 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.95</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">
171 </span><span·class="n">FUNCTION</span><span·class="w">···················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-5">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">171 </span><span·class="n">FUNCTION</span><span·class="w">···················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-5">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
172 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">do_apply</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">············</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">······</span><span·class="mf">3.00</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-6">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="0977565641-6">]</span><span·class="w">172 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">do_apply</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">············</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">······</span><span·class="mf">3.00</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-6">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="7323717382-6">]</span><span·class="w">
173 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">match_list</span><span·class="p">/</span><span·class="mi">6</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">······</span><span·class="mf">3.00</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-7">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="0977565641-7">]</span><span·class="w">173 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">match_list</span><span·class="p">/</span><span·class="mi">6</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">······</span><span·class="mf">3.00</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-7">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="7323717382-7">]</span><span·class="w">
174 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">reverse</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">······</span><span·class="mf">4.00</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-8">[</span><span·class="w">·</span><span·class="mf">4.82</span><span·class="p"·data-group-id="0977565641-8">]</span><span·class="w">174 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">reverse</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">······</span><span·class="mf">4.00</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-8">[</span><span·class="w">·</span><span·class="mf">4.82</span><span·class="p"·data-group-id="7323717382-8">]</span><span·class="w">
175 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">expr_list</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">···········</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">······</span><span·class="mf">2.33</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-9">[</span><span·class="w">·</span><span·class="mf">8.43</span><span·class="p"·data-group-id="0977565641-9">]</span><span·class="w">175 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">expr_list</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">···········</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">······</span><span·class="mf">2.33</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-9">[</span><span·class="w">·</span><span·class="mf">8.43</span><span·class="p"·data-group-id="7323717382-9">]</span><span·class="w">
176 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">ret_expr</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">············</span><span·class="mi">4</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">······</span><span·class="mf">4.00</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-10">[</span><span·class="mf">19.28</span><span·class="p"·data-group-id="0977565641-10">]</span><span·class="w">176 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">ret_expr</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">············</span><span·class="mi">4</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">······</span><span·class="mf">4.00</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-10">[</span><span·class="mf">19.28</span><span·class="p"·data-group-id="7323717382-10">]</span><span·class="w">
177 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">merge_bindings</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·····</span><span·class="mi">18</span><span·class="w">······</span><span·class="mf">6.00</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-11">[</span><span·class="mf">21.69</span><span·class="p"·data-group-id="0977565641-11">]</span><span·class="w">177 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">merge_bindings</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·····</span><span·class="mi">18</span><span·class="w">······</span><span·class="mf">6.00</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-11">[</span><span·class="mf">21.69</span><span·class="p"·data-group-id="7323717382-11">]</span><span·class="w">
178 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">···············</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="0977565641-12">[</span><span·class="mf">38.55</span><span·class="p"·data-group-id="0977565641-12">]</span><span·class="w">178 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">···············</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="7323717382-12">[</span><span·class="mf">38.55</span><span·class="p"·data-group-id="7323717382-12">]</span><span·class="w">
179 ·····································</span><span·class="mi">83</span><span·class="w">············</span><span·class="p"·data-group-id="0977565641-13">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="0977565641-13">]</span><span·class="w">179 ·····································</span><span·class="mi">83</span><span·class="w">············</span><span·class="p"·data-group-id="7323717382-13">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7323717382-13">]</span><span·class="w">
180 </span><span·class="ss">ok</span></code></pre><p>However,·it·is·possible·to·limit·the·trace·to·specific·functions·or·modules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="7436390137-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7436390137-2">(</span><span·class="p"·data-group-id="7436390137-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</s[·...·truncated·by·diffoscope;·len:·248,·SHA:·9dd7ab7998aef5b5b351cbedeafd7b944c060d1d90707bc3949b3e8091683e07·...·]-3">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">180 </span><span·class="ss">ok</span></code></pre><p>However,·it·is·possible·to·limit·the·trace·to·specific·functions·or·modules:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="9045890183-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9045890183-2">(</span><span·class="p"·data-group-id="9045890183-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</s[·...·truncated·by·diffoscope;·len:·248,·SHA:·2617fd63f18dda6b62523df5c1fb5aad2469c53a39cd4ea576be53080566130b·...·]-3">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
181 ·················</span><span·class="p"·data-group-id="7436390137-4">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pattern</span><span·class="w"[·...·truncated·by·diffoscope;·len:·559,·SHA:·28b9c6d8eb094a7148f01656f9d418b2af366d28280e8bb61a9693f35a765ba5·...·]-1">)</span><span·class="p">.</span><span·class="w">181 ·················</span><span·class="p"·data-group-id="9045890183-4">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pattern</span><span·class="w"[·...·truncated·by·diffoscope;·len:·559,·SHA:·55f9fc69f2dfb600464337914baafbae5098bc02618a08b066391df762dbe481·...·]-1">)</span><span·class="p">.</span><span·class="w">
182 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.98</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">182 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.98</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">··</span><span·class="o">--</span><span·class="w">··</span><span·class="mf">100.00</span><span·class="c1">%·of·total·***·</span><span·class="w">
183 </span><span·class="n">FUNCTION</span><span·class="w">··········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="7436390137-7">[</span><span·class="w">·····</span><span·class="c1">%]</span><span·class="w">183 </span><span·class="n">FUNCTION</span><span·class="w">··········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="9045890183-7">[</span><span·class="w">·····</span><span·class="c1">%]</span><span·class="w">
184 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="7436390137-8">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="7436390137-8">]</span><span·class="w">184 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·····</span><span·class="mi">32</span><span·class="w">······</span><span·class="mf">6.40</span><span·class="w">··</span><span·class="p"·data-group-id="9045890183-8">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="9045890183-8">]</span><span·class="w">
185 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="7436390137-9">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7436390137-9">]</span><span·class="w">185 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="9045890183-9">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="9045890183-9">]</span><span·class="w">
  
186 </span><span·class="ss">ok</span></code></pre><p>Ad-hoc·profiling·results·can·be·printed·in·a·few·different·ways.·The·following186 </span><span·class="ss">ok</span></code></pre><p>Ad-hoc·profiling·results·can·be·printed·in·a·few·different·ways.·The·following
187 examples·use·the·<code·class="inline">test</code>·module·defined·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4942328093-1">(</span><span·class="ss">test</span><span·class="p"·data-group-id="4942328093-1">)</span><span·class="p">.</span><span·class="w">187 examples·use·the·<code·class="inline">test</code>·module·defined·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9051497684-1">(</span><span·class="ss">test</span><span·class="p"·data-group-id="9051497684-1">)</span><span·class="p">.</span><span·class="w">
188 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4942328093-2">(</span><span·class="p"·data-group-id="4942328093-3">[</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4942328093-3">]</span><span·class="p"·data-group-id="4942328093-2">)</span><span·class="p">.</span><span·class="w">188 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9051497684-2">(</span><span·class="p"·data-group-id="9051497684-3">[</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9051497684-3">]</span><span·class="p"·data-group-id="9051497684-2">)</span><span·class="p">.</span><span·class="w">
189 </span><span·class="nf">test_spawn</span><span·class="p"·data-group-id="4942328093-4">(</span><span·class="p"·data-group-id="4942328093-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 </span><span·class="nf">test_spawn</span><span·class="p"·data-group-id="9051497684-4">(</span><span·class="p"·data-group-id="9051497684-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="p"·data-group-id="4942328093-5">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p"·data-group-id="4942328093-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·691,·SHA:·403664a97b6e67b3bf7c4aa1cbd5ffb94fa8e4b4a8ad4f984647bad77646bbc9·...·]-6">)</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="p"·data-group-id="9051497684-5">{</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p"·data-group-id="9051497684-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·691,·SHA:·42393031548362d275b43428e38df999b1067696884fb92c5c68c9acfd38a5ff·...·]-6">)</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="k">receive</span><span·class="w">191 ····</span><span·class="k">receive</span><span·class="w">
192 ········</span><span·class="p"·data-group-id="4942328093-9">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·151,·SHA:·5f9cda982c401e49455ac9ecd3a893e322543d73eb0cd4d64f3463e98010adf5·...·]-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 ········</span><span·class="p"·data-group-id="9051497684-9">{</span><span·class="ss">&#39;DOWN&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">process</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·151,·SHA:·16e0ac1d16efcea687723813548bd0be568c59bb97e4a455dcc4fc7ff8144851·...·]-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ············</span><span·class="ss">done</span><span·class="w">193 ············</span><span·class="ss">done</span><span·class="w">
194 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>By·default·per-process·statistics·is·shown:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="0087749519-1">(</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">test_spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0087749519-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·364,·SHA:·65d94567dde40550a285b7eb6afef05a631e1c9a20fa6516b1eb5c8de04250a8·...·]9-1">)</span><span·class="p">.</span><span·class="w">194 ····</span><span·class="k">end</span><span·class="p">.</span></code></pre><p>By·default·per-process·statistics·is·shown:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="2924959089-1">(</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">test_spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2924959089-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·364,·SHA:·c4bd753d4dc207a039e0b86a6217dabe337be0d08f82da5150af11ef3cbe7fc8·...·]9-1">)</span><span·class="p">.</span><span·class="w">
  
195 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.176</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">23.66</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">195 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.176</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">23.66</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">
196 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="0087749519-4">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">196 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="2924959089-4">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
197 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="0087749519-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="0087749519-5">]</span><span·class="w">197 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="2924959089-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="2924959089-5">]</span><span·class="w">
198 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="0087749519-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="0087749519-6">]</span><span·class="w">198 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="2924959089-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="2924959089-6">]</span><span·class="w">
199 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="0087749519-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="0087749519-7">]</span><span·class="w">199 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="2924959089-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="2924959089-7">]</span><span·class="w">
200 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="0087749519-8">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="0087749519-8">]</span><span·class="w">200 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="2924959089-8">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="2924959089-8">]</span><span·class="w">
  
201 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.177</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">76.34</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">201 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.177</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">76.34</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">
202 </span><span·class="n">FUNCTION</span><span·class="w">···········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="0087749519-9">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">202 </span><span·class="n">FUNCTION</span><span·class="w">···········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="2924959089-9">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
203 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">apply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="0087749519-10">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="0087749519-10">]</span><span·class="w">203 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">apply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="2924959089-10">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="2924959089-10">]</span><span·class="w">
204 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">·······</span><span·class="mi">9</span><span·class="w">·····</span><span·class="mi">64</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="0087749519-11">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="0087749519-11">]</span><span·class="w">204 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">·······</span><span·class="mi">9</span><span·class="w">·····</span><span·class="mi">64</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="2924959089-11">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="2924959089-11">]</span><span·class="w">
205 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="0087749519-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="0087749519-12">]</span></code></pre><p>The·following·example·prints·the·combined·memory·allocation·of·all205 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="2924959089-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="2924959089-12">]</span></code></pre><p>The·following·example·prints·the·combined·memory·allocation·of·all
206 processes,·sorted·by·the·total·number·of·allocated·words·in·descending206 processes,·sorted·by·the·total·number·of·allocated·words·in·descending
207 order:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="7161703456-1">(</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">test_spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7161703456-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·77b0f2ad09ec9b09b90a75cd07bf8c938a8adc42dba880ec8371ca44d6b65b6d·...·]-2">]</span><span·class="p">,</span><span·class="w">207 order:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="1770465369-1">(</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">test_spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1770465369-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·febb6a0e8e013a116a519540462f89000913c354dce08126105cefe0113c83bd·...·]-2">]</span><span·class="p">,</span><span·class="w">
208 ·················</span><span·class="p"·data-group-id="7161703456-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">report</span><span·class="w">[·...·truncated·by·diffoscope;·len:·560,·SHA:·fc547b19704291d65637983ef303a09339fe70e59a27c692233209be11049e04·...·]-1">)</span><span·class="p">.</span><span·class="w">208 ·················</span><span·class="p"·data-group-id="1770465369-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">report</span><span·class="w">[·...·truncated·by·diffoscope;·len:·560,·SHA:·b08e14d5dfc276a6619335230e02df5a8a4e5a090d31dd896d50d5d2572b0e86·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="7161703456-6">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">209 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="1770465369-6">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
210 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">············</span><span·class="mi">9</span><span·class="w">·····</span><span·class="mi">64</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="7161703456-7">[</span><span·class="mf">68.82</span><span·class="p"·data-group-id="7161703456-7">]</span><span·class="w">210 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">············</span><span·class="mi">9</span><span·class="w">·····</span><span·class="mi">64</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="1770465369-7">[</span><span·class="mf">68.82</span><span·class="p"·data-group-id="1770465369-7">]</span><span·class="w">
211 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="7161703456-8">[</span><span·class="mf">15.05</span><span·class="p"·data-group-id="7161703456-8">]</span><span·class="w">211 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="1770465369-8">[</span><span·class="mf">15.05</span><span·class="p"·data-group-id="1770465369-8">]</span><span·class="w">
212 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">apply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">··············</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="7161703456-9">[</span><span·class="w">·</span><span·class="mf">7.53</span><span·class="p"·data-group-id="7161703456-9">]</span><span·class="w">212 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">apply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">··············</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="1770465369-9">[</span><span·class="w">·</span><span·class="mf">7.53</span><span·class="p"·data-group-id="1770465369-9">]</span><span·class="w">
213 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="7161703456-10">[</span><span·class="w">·</span><span·class="mf">6.45</span><span·class="p"·data-group-id="7161703456-10">]</span><span·class="w">213 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="1770465369-10">[</span><span·class="w">·</span><span·class="mf">6.45</span><span·class="p"·data-group-id="1770465369-10">]</span><span·class="w">
214 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="7161703456-11">[</span><span·class="w">·</span><span·class="mf">2.15</span><span·class="p"·data-group-id="7161703456-11">]</span><span·class="w">214 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="1770465369-11">[</span><span·class="w">·</span><span·class="mf">2.15</span><span·class="p"·data-group-id="1770465369-11">]</span><span·class="w">
215 ··································</span><span·class="mi">93</span><span·class="w">············</span><span·class="p"·data-group-id="7161703456-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7161703456-12">]</span></code></pre><p>The·profiling·data·can·also·be·collected·for·further·inspection:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·un[·...·truncated·by·diffoscope;·len:·438,·SHA:·469f4a8b2a4df5714b454aa406a105fe5fd662e9dd717f25967a34eb45b57ab3·...·]-2">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">215 ··································</span><span·class="mi">93</span><span·class="w">············</span><span·class="p"·data-group-id="1770465369-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1770465369-12">]</span></code></pre><p>The·profiling·data·can·also·be·collected·for·further·inspection:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·un[·...·truncated·by·diffoscope;·len:·438,·SHA:·a8c24a9600df69c73a49a2379eaa36e24ed5a6921135a005859ef1234e5d6f4e·...·]-2">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">
216 ·······································</span><span·class="p"·data-group-id="3801922285-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">report</span><span·class="w">[·...·truncated·by·diffoscope;·len:·184,·SHA:·d600a3fdcf2a2cd40fca07dc631bbf6cb64b7fb5286171daf12d2beb2728e025·...·]-2">)</span><span·class="p">.</span><span·class="w">216 ·······································</span><span·class="p"·data-group-id="1744173784-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">report</span><span·class="w">[·...·truncated·by·diffoscope;·len:·184,·SHA:·d3609de15ea65d99ca6cf138d09dc014683b93dc5752b8634fd4d8ecdde60d18·...·]-2">)</span><span·class="p">.</span><span·class="w">
217 </span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="o">&gt;</span><span·class="gp·unselectable">217 </span><span·class="o">&lt;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="o">&gt;</span><span·class="gp·unselectable">
218 4&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3801922285-4">(</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="3801922285-5">(</span><span·class="n">ProfileData</span><span·class="p">,</span><span·class="w">·</span><span·class="ss[·...·truncated·by·diffoscope;·len:·377,·SHA:·a4601962b74abfb9041230bff5c0b8d3743eedb0ea04606ee8480d9638b555a9·...·]-4">)</span><span·class="p">.</span><span·class="w">218 4&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1744173784-4">(</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="1744173784-5">(</span><span·class="n">ProfileData</span><span·class="p">,</span><span·class="w">·</span><span·class="ss[·...·truncated·by·diffoscope;·len:·377,·SHA:·5aa786abf7b68de16886f7ce840e9a57596d44dbb17d308b4189be6dfd5ca682·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.223</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">23.66</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">219 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.223</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">23.66</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">
220 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="3801922285-7">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">220 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="1744173784-7">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
221 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="3801922285-8">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="3801922285-8">]</span><span·class="w">221 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="1744173784-8">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="1744173784-8">]</span><span·class="w">
222 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="3801922285-9">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="3801922285-9">]</span><span·class="w">222 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="1744173784-9">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="1744173784-9">]</span><span·class="w">
223 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="3801922285-10">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="3801922285-10">]</span><span·class="w">223 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="1744173784-10">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="1744173784-10">]</span><span·class="w">
224 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="3801922285-11">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="3801922285-11">]</span><span·class="w">224 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="1744173784-11">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1744173784-11">]</span><span·class="w">
  
225 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.224</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">76.34</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">225 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.224</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">76.34</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">
226 </span><span·class="n">FUNCTION</span><span·class="w">···········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="3801922285-12">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">226 </span><span·class="n">FUNCTION</span><span·class="w">···········</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="1744173784-12">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
227 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">·······</span><span·class="mi">9</span><span·class="w">·····</span><span·class="mi">64</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="3801922285-13">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="3801922285-13">]</span><span·class="w">227 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">seq_loop</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">·······</span><span·class="mi">9</span><span·class="w">·····</span><span·class="mi">64</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="1744173784-13">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="1744173784-13">]</span><span·class="w">
228 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">apply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="3801922285-14">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="3801922285-14">]</span><span·class="w">228 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">apply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">7</span><span·class="w">·········</span><span·class="mi">7</span><span·class="w">··</span><span·class="p"·data-group-id="1744173784-14">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="1744173784-14">]</span><span·class="w">
229 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="3801922285-15">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="3801922285-15">]</span></code></pre><p>Which·processes·that·are·profiled·depends·on·the·profiling·type.</p><ul><li><p><code·class="inline">call_count</code>·(default)·counts·calls·in·all·processes.</p></li><li><p><code·class="inline">call_time</code>·and·<code·class="inline">call_memory</code>·limits·the·profiling·to·the·processes229 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="1744173784-15">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1744173784-15">]</span></code></pre><p>Which·processes·that·are·profiled·depends·on·the·profiling·type.</p><ul><li><p><code·class="inline">call_count</code>·(default)·counts·calls·in·all·processes.</p></li><li><p><code·class="inline">call_time</code>·and·<code·class="inline">call_memory</code>·limits·the·profiling·to·the·processes
230 spawned·from·the·user-provided·function·(using·the·<code·class="inline">set_on_spawn</code>230 spawned·from·the·user-provided·function·(using·the·<code·class="inline">set_on_spawn</code>
231 option·for·<a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>).</p></li></ul><p><code·class="inline">call_time</code>·and·<code·class="inline">call_memory</code>·can·be·restricted·to·profile·a·single·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="1293384323-1">(</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">test_spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1293384323-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·af63a31e3c538d2df514c5d1268f8574fdf0d1efb89962e01b34c44ea64b68b3·...·]-2">]</span><span·class="p">,</span><span·class="w">231 option·for·<a·href="../../../../lib/kernel-10.2.2/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>).</p></li></ul><p><code·class="inline">call_time</code>·and·<code·class="inline">call_memory</code>·can·be·restricted·to·profile·a·single·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="4493070145-1">(</span><span·class="ss">test</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">test_spawn</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4493070145-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·28e42ac66f4710152fb7bb260b56cc411b75882d9791ad4c58edce80e9d4bd95·...·]-2">]</span><span·class="p">,</span><span·class="w">
232 ·················</span><span·class="p"·data-group-id="1293384323-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">set_on_spawn</span><span·clas[·...·truncated·by·diffoscope;·len:·189,·SHA:·bc989815b10a628d5d770d0e8b4f44183c15ffe6bf47773bb1c1c09dc662a1c9·...·]-1">)</span><span·class="p">.</span><span·class="w">232 ·················</span><span·class="p"·data-group-id="4493070145-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">set_on_spawn</span><span·clas[·...·truncated·by·diffoscope;·len:·189,·SHA:·9a8e87d22d8cf05c3efc3018d3534712dd13d99d265ca9eed894b1da004a8c16·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
233 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.183</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">100.00</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">233 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.183</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">100.00</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">
234 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="1293384323-4">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">234 </span><span·class="n">FUNCTION</span><span·class="w">················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="4493070145-4">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
235 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="1293384323-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="1293384323-5">]</span><span·class="w">235 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_monitor</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="4493070145-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="4493070145-5">]</span><span·class="w">
236 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="1293384323-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="1293384323-6">]</span><span·class="w">236 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">spawn_opt</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="4493070145-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="4493070145-6">]</span><span·class="w">
237 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="1293384323-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="1293384323-7">]</span></code></pre><p><a·href=""·id="pg_example"></a></p><p>Erlang·programs·can·perform·expensive·operations·in·other·processes237 </span><span·class="nc">test</span><span·class="p">:</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="w">···········</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">14</span><span·class="w">········</span><span·class="mi">14</span><span·class="w">··</span><span·class="p"·data-group-id="4493070145-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="4493070145-7">]</span></code></pre><p><a·href=""·id="pg_example"></a></p><p>Erlang·programs·can·perform·expensive·operations·in·other·processes
238 than·the·original·one.·You·can·include·multiple,·new,·or·even·all238 than·the·original·one.·You·can·include·multiple,·new,·or·even·all
239 processes·in·the·trace·when·measuring·time·or·memory:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nc">pg</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="6233461327-1">(</span><span·class="p"·data-group-id="6233461327-1">)</span><span·class="p">.</span><span·class="w">239 processes·in·the·trace·when·measuring·time·or·memory:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">7&gt;·</span><span·class="nc">pg</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="7629598341-1">(</span><span·class="p"·data-group-id="7629598341-1">)</span><span·class="p">.</span><span·class="w">
240 </span><span·class="p"·data-group-id="6233461327-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.252</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6233461327-2">}</span><span·class="gp·unselectable">240 </span><span·class="p"·data-group-id="7629598341-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.252</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7629598341-2">}</span><span·class="gp·unselectable">
241 8&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="6233461327-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6233461327-4">(</span><span·class="p"·data-group-id="6233461327-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">pg</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="6233461327-5">(</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="6233461327-6">(</span><span·class="p"·data-group-id="6233461327-6">)</span><span·class="p"·data-group-id="6233461327-5">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w"> 
242 ·················</span><span·class="p"·data-group-id="6233461327-7">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·371,·SHA:·ca344afd191ee1edc8b8cb5655846710a2e6999c83f36654d0f81966b82be9bc·...·]</span><span·class="w">241 8&gt;·</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">profile</span><span·class="p"·data-group-id="7629598341-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7629598341-4">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·565,·SHA:·6e5344445cf1ba9a3c1c3285aa6bb1c53c6509057a26227fff83a5a80f80a744·...·]</span><span·class="w">
 242 ·················</span><span·class="p"·data-group-id="7629598341-7">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">rootset</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7629598341-8">[</span><span·class="ss">pg</span><span·class="p"·data-group-id="7629598341-8">]</span><span·class="p"·data-group-id="7629598341-7">}</span><span·class="p"·data-group-id="7629598341-3">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.252</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">52.86</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">243 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.252</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">52.86</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">
244 </span><span·class="n">FUNCTION</span><span·class="w">······················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-9">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">244 </span><span·class="n">FUNCTION</span><span·class="w">······················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-9">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
245 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">leave_local_update_ets</span><span·class="p">/</span><span·class="mi">5</span><span·class="w">·······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-10">[</span><span·class="w">·</span><span·class="mf">1.80</span><span·class="p"·data-group-id="6233461327-10">]</span><span·class="w">245 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">leave_local_update_ets</span><span·class="p">/</span><span·class="mi">5</span><span·class="w">·······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">2</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-10">[</span><span·class="w">·</span><span·class="mf">1.80</span><span·class="p"·data-group-id="7629598341-10">]</span><span·class="w">
246 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">reply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·······················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-11">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="6233461327-11">]</span><span·class="w">246 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">reply</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·······················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-11">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7629598341-11">]</span><span·class="w">
247 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">monitor</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-12">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="6233461327-12">]</span><span·class="w">247 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">monitor</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-12">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7629598341-12">]</span><span·class="w">
248 </span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="ss">try_handle_call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-13">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="6233461327-13">]</span><span·class="w">248 </span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="ss">try_handle_call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">······</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-13">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7629598341-13">]</span><span·class="w">
249 </span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="ss">try_dispatch</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-14">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="6233461327-14">]</span><span·class="w">249 </span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="ss">try_dispatch</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-14">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7629598341-14">]</span><span·class="w">
250 </span><span·class="nc">maps</span><span·class="p">:</span><span·class="ss">iterator</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">···················</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-15">[</span><span·class="w">·</span><span·class="mf">3.60</span><span·class="p"·data-group-id="6233461327-15">]</span><span·class="w">250 </span><span·class="nc">maps</span><span·class="p">:</span><span·class="ss">iterator</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">···················</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-15">[</span><span·class="w">·</span><span·class="mf">3.60</span><span·class="p"·data-group-id="7629598341-15">]</span><span·class="w">
251 </span><span·class="nc">maps</span><span·class="p">:</span><span·class="ss">take</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·······················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-16">[</span><span·class="w">·</span><span·class="mf">5.41</span><span·class="p"·data-group-id="6233461327-16">]</span><span·class="w">251 </span><span·class="nc">maps</span><span·class="p">:</span><span·class="ss">take</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">·······················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">6</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-16">[</span><span·class="w">·</span><span·class="mf">5.41</span><span·class="p"·data-group-id="7629598341-16">]</span><span·class="w">
252 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">join_local_update_ets</span><span·class="p">/</span><span·class="mi">5</span><span·class="w">········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">8</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-17">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="6233461327-17">]</span><span·class="w">252 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">join_local_update_ets</span><span·class="p">/</span><span·class="mi">5</span><span·class="w">········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">8</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-17">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="7629598341-17">]</span><span·class="w">
253 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">handle_info</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">8</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-18">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="6233461327-18">]</span><span·class="w">253 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">handle_info</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">8</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-18">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="7629598341-18">]</span><span·class="w">
254 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">9</span><span·class="w">·········</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-19">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="6233461327-19">]</span><span·class="w">254 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">9</span><span·class="w">·········</span><span·class="mi">9</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-19">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="7629598341-19">]</span><span·class="w">
255 </span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">·················</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">9</span><span·class="w">·········</span><span·class="mi">4</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-20">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="6233461327-20">]</span><span·class="w">255 </span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">·················</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">9</span><span·class="w">·········</span><span·class="mi">4</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-20">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="7629598341-20">]</span><span·class="w">
256 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="ss">lookup</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">······················</span><span·class="mi">2</span><span·class="w">·····</span><span·class="mi">10</span><span·class="w">·········</span><span·class="mi">5</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-21">[</span><span·class="w">·</span><span·class="mf">9.01</span><span·class="p"·data-group-id="6233461327-21">]</span><span·class="w">256 </span><span·class="nc">ets</span><span·class="p">:</span><span·class="ss">lookup</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">······················</span><span·class="mi">2</span><span·class="w">·····</span><span·class="mi">10</span><span·class="w">·········</span><span·class="mi">5</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-21">[</span><span·class="w">·</span><span·class="mf">9.01</span><span·class="p"·data-group-id="7629598341-21">]</span><span·class="w">
257 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">join_local</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">···················</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">11</span><span·class="w">········</span><span·class="mi">11</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-22">[</span><span·class="w">·</span><span·class="mf">9.91</span><span·class="p"·data-group-id="6233461327-22">]</span><span·class="w">257 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">join_local</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">···················</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">11</span><span·class="w">········</span><span·class="mi">11</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-22">[</span><span·class="w">·</span><span·class="mf">9.91</span><span·class="p"·data-group-id="7629598341-22">]</span><span·class="w">
258 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">notify_group</span><span·class="p">/</span><span·class="mi">5</span><span·class="w">·················</span><span·class="mi">2</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-23">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="6233461327-23">]</span><span·class="w">258 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">notify_group</span><span·class="p">/</span><span·class="mi">5</span><span·class="w">·················</span><span·class="mi">2</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-23">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="7629598341-23">]</span><span·class="w">
259 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">setelement</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">···············</span><span·class="mi">2</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-24">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="6233461327-24">]</span><span·class="w">259 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">setelement</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">···············</span><span·class="mi">2</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-24">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="7629598341-24">]</span><span·class="w">
260 ·······································</span><span·class="mi">111</span><span·class="w">············</span><span·class="p"·data-group-id="6233461327-25">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="6233461327-25">]</span><span·class="w">260 ·······································</span><span·class="mi">111</span><span·class="w">············</span><span·class="p"·data-group-id="7629598341-25">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7629598341-25">]</span><span·class="w">
  
261 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.255</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">47.14</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">261 </span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="o">*</span><span·class="w">·</span><span·class="n">Process</span><span·class="w">·</span><span·class="o">&lt;</span><span·class="mf">0.255</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="w">····</span><span·class="o">--</span><span·class="w">·</span><span·class="mf">47.14</span><span·class="w">·</span><span·class="c1">%·of·total·allocations·***</span><span·class="w">
262 </span><span·class="n">FUNCTION</span><span·class="w">···················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-26">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">262 </span><span·class="n">FUNCTION</span><span·class="w">···················</span><span·class="n">CALLS</span><span·class="w">··</span><span·class="n">WORDS</span><span·class="w">··</span><span·class="n">PER</span><span·class="w">·</span><span·class="n">CALL</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-26">[</span><span·class="w">····</span><span·class="c1">%]</span><span·class="w">
263 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">match_list</span><span·class="p">/</span><span·class="mi">6</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-27">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="6233461327-27">]</span><span·class="w">263 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">match_list</span><span·class="p">/</span><span·class="mi">6</span><span·class="w">··········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-27">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="7629598341-27">]</span><span·class="w">
264 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">monitor</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">···············</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-28">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="6233461327-28">]</span><span·class="w">264 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">monitor</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">···············</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">3</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-28">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="7629598341-28">]</span><span·class="w">
265 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">reverse</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">················</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-29">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="6233461327-29">]</span><span·class="w">265 </span><span·class="nc">lists</span><span·class="p">:</span><span·class="ss">reverse</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">················</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-29">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="7629598341-29">]</span><span·class="w">
266 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">join</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">4</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-30">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="6233461327-30">]</span><span·class="w">266 </span><span·class="nc">pg</span><span·class="p">:</span><span·class="ss">join</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">······················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">4</span><span·class="w">·········</span><span·class="mi">4</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-30">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="7629598341-30">]</span><span·class="w">
267 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">add_bindings</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·········</span><span·class="mi">5</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-31">[</span><span·class="w">·</span><span·class="mf">5.05</span><span·class="p"·data-group-id="6233461327-31">]</span><span·class="w">267 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">add_bindings</span><span·class="p">/</span><span·class="mi">2</span><span·class="w">········</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">5</span><span·class="w">·········</span><span·class="mi">5</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-31">[</span><span·class="w">·</span><span·class="mf">5.05</span><span·class="p"·data-group-id="7629598341-31">]</span><span·class="w">
268 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">do_apply</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">············</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-32">[</span><span·class="w">·</span><span·class="mf">6.06</span><span·class="p"·data-group-id="6233461327-32">]</span><span·class="w">268 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">do_apply</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">············</span><span·class="mi">2</span><span·class="w">······</span><span·class="mi">6</span><span·class="w">·········</span><span·class="mi">3</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-32">[</span><span·class="w">·</span><span·class="mf">6.06</span><span·class="p"·data-group-id="7629598341-32">]</span><span·class="w">
269 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">·····················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">8</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-33">[</span><span·class="w">·</span><span·class="mf">8.08</span><span·class="p"·data-group-id="6233461327-33">]</span><span·class="w">269 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">·····················</span><span·class="mi">1</span><span·class="w">······</span><span·class="mi">8</span><span·class="w">·········</span><span·class="mi">8</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-33">[</span><span·class="w">·</span><span·class="mf">8.08</span><span·class="p"·data-group-id="7629598341-33">]</span><span·class="w">
270 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">expr_list</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">···········</span><span·class="mi">4</span><span·class="w">·····</span><span·class="mi">10</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-34">[</span><span·class="mf">10.10</span><span·class="p"·data-group-id="6233461327-34">]</span><span·class="w">270 </span><span·class="nc">erl_eval</span><span·class="p">:</span><span·class="ss">expr_list</span><span·class="p">/</span><span·class="mi">7</span><span·class="w">···········</span><span·class="mi">4</span><span·class="w">·····</span><span·class="mi">10</span><span·class="w">·········</span><span·class="mi">2</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-34">[</span><span·class="mf">10.10</span><span·class="p"·data-group-id="7629598341-34">]</span><span·class="w">
271 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">do_call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">········</span><span·class="mi">16</span><span·class="w">··</span><span·class="p"·data-group-id="6233461327-35">[</span><span·class="mf">16.16</span><span·class="p"·data-group-id="6233461327-35">]</span><span·class="w">271 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">do_call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">········</span><span·class="mi">16</span><span·class="w">··</span><span·class="p"·data-group-id="7629598341-35">[</span><span·class="mf">16.16</span><span·class="p"·data-group-id="7629598341-35">]</span><span·class="w">
Max diff block lines reached; 54241/159940 bytes (33.91%) of diff not shown.
40.9 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/xref_chapter.html
    
Offset 136, 69 lines modifiedOffset 136, 69 lines modified
136 reading;·not·all·of·the·concepts·used·are·explained,·and·it·is·assumed·that·the136 reading;·not·all·of·the·concepts·used·are·explained,·and·it·is·assumed·that·the
137 <a·href="xref.html">reference·manual</a>·has·been·at·least·skimmed.</p><h2·id="module-check"·class="section-heading">137 <a·href="xref.html">reference·manual</a>·has·been·at·least·skimmed.</p><h2·id="module-check"·class="section-heading">
138 ··<a·href="#module-check"·class="hover-link">138 ··<a·href="#module-check"·class="hover-link">
139 ····<i·class="ri-link-m"·aria-hidden="true"></i>139 ····<i·class="ri-link-m"·aria-hidden="true"></i>
140 ··</a>140 ··</a>
141 ··<span·class="text">Module·Check</span>141 ··<span·class="text">Module·Check</span>
142 </h2>142 </h2>
143 <p>Assume·we·want·to·check·the·following·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7422564566-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="7422564566-1">)</span><span·class="p">.</span><span·class="w">143 <p>Assume·we·want·to·check·the·following·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0043367432-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="0043367432-1">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="w">144 </span><span·class="w">
145 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7422564566-2">(</span><span·class="p"·data-group-id="7422564566-3">[</span><span·class="ss">t</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7422564566-3">]</span><span·class="p"·data-group-id="7422564566-2">)</span><span·class="p">.</span><span·class="w">145 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0043367432-2">(</span><span·class="p"·data-group-id="0043367432-3">[</span><span·class="ss">t</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0043367432-3">]</span><span·class="p"·data-group-id="0043367432-2">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">t</span><span·class="p"·data-group-id="7422564566-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="7422564566-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">146 </span><span·class="nf">t</span><span·class="p"·data-group-id="0043367432-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="0043367432-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
147 ··</span><span·class="nc">my_module</span><span·class="p">:</span><span·class="nf">t2</span><span·class="p"·data-group-id="7422564566-5">(</span><span·class="n">A</span><span·class="p"·data-group-id="7422564566-5">)</span><span·class="p">.</span><span·class="w">147 ··</span><span·class="nc">my_module</span><span·class="p">:</span><span·class="nf">t2</span><span·class="p"·data-group-id="0043367432-5">(</span><span·class="n">A</span><span·class="p"·data-group-id="0043367432-5">)</span><span·class="p">.</span><span·class="w">
  
148 </span><span·class="nf">t2</span><span·class="p"·data-group-id="7422564566-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="7422564566-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 </span><span·class="nf">t2</span><span·class="p"·data-group-id="0043367432-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="0043367432-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ··</span><span·class="ss">true</span><span·class="p">.</span></code></pre><p>Cross·reference·data·are·read·from·BEAM·files,·so·the·first·step·when·checking149 ··</span><span·class="ss">true</span><span·class="p">.</span></code></pre><p>Cross·reference·data·are·read·from·BEAM·files,·so·the·first·step·when·checking
150 an·edited·module·is·to·compile·it:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="8493092616-1">(</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="8493092616-1">)</span><span·class="p">.</span><span·class="w">150 an·edited·module·is·to·compile·it:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="1227913254-1">(</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="1227913254-1">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="p">.</span><span·class="o">/</span><span·class="ss">my_module</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">10</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="ss">t2</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unused</span><span·class="w">151 </span><span·class="p">.</span><span·class="o">/</span><span·class="ss">my_module</span><span·class="p">.</span><span·class="nc">erl</span><span·class="p">:</span><span·class="mi">10</span><span·class="p">:</span><span·class="w">·</span><span·class="n">Warning</span><span·class="p">:</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="ss">t2</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">·</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unused</span><span·class="w">
152 </span><span·class="p"·data-group-id="8493092616-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_module</span><span·class="p"·data-group-id="8493092616-2">}</span></code></pre><p>The·<code·class="inline">debug_info</code>·option·ensures·that·the·BEAM·file·contains·debug·information,152 </span><span·class="p"·data-group-id="1227913254-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_module</span><span·class="p"·data-group-id="1227913254-2">}</span></code></pre><p>The·<code·class="inline">debug_info</code>·option·ensures·that·the·BEAM·file·contains·debug·information,
153 which·makes·it·possible·to·find·unused·local·functions.</p><p>The·module·can·now·be·checked·for·calls·to153 which·makes·it·possible·to·find·unused·local·functions.</p><p>The·module·can·now·be·checked·for·calls·to
154 <a·href="xref.html#deprecated_function">deprecated·functions</a>,·calls·to154 <a·href="xref.html#deprecated_function">deprecated·functions</a>,·calls·to
155 <a·href="xref.html#undefined_function">undefined·functions</a>,·and·for·unused·local155 <a·href="xref.html#undefined_function">undefined·functions</a>,·and·for·unused·local
156 functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">m</span><span·class="p"·data-group-id="4419660220-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="4419660220-1">)</span><span·class="w">156 functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">m</span><span·class="p"·data-group-id="9261064366-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="9261064366-1">)</span><span·class="w">
157 </span><span·class="p"·data-group-id="4419660220-2">[</span><span·class="p"·data-group-id="4419660220-3">{</span><span·class="ss">deprecated</span><span·class="p">,</span><span·class="p"·data-group-id="4419660220-4">[</span><span·class="p"·data-group-id="4419660220-4">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·a68dcb08219e3a26f98cafe4a9d80e4e6cad654dad5f134f88430236763c7cc0·...·]-3">}</span><span·class="p">,</span><span·class="w">157 </span><span·class="p"·data-group-id="9261064366-2">[</span><span·class="p"·data-group-id="9261064366-3">{</span><span·class="ss">deprecated</span><span·class="p">,</span><span·class="p"·data-group-id="9261064366-4">[</span><span·class="p"·data-group-id="9261064366-4">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·6b70fc15fff30b03ab53c9b86a21750eb46a2ee8ba25036cb1d34e075ccb702f·...·]-3">}</span><span·class="p">,</span><span·class="w">
158 ·</span><span·class="p"·data-group-id="4419660220-5">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="4419660220-6">[</span><span·class="p"·data-group-id="4419660220-7">{</span><span·class="p"·data-group-id="4419660220-8">{</span><span·class="ss">m[·...·truncated·by·diffoscope;·len:·575,·SHA:·9b00828516e2584eea23fb7a4053e272e070030717c597461c737859678c8102·...·]-5">}</span><span·class="p">,</span><span·class="w">158 ·</span><span·class="p"·data-group-id="9261064366-5">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="9261064366-6">[</span><span·class="p"·data-group-id="9261064366-7">{</span><span·class="p"·data-group-id="9261064366-8">{</span><span·class="ss">m[·...·truncated·by·diffoscope;·len:·575,·SHA:·e2af3b70c8d4f9f11783e12bd2e248807df9dfb14f367109f92f6cf8a03fcb8d·...·]-5">}</span><span·class="p">,</span><span·class="w">
159 ·</span><span·class="p"·data-group-id="4419660220-10">{</span><span·class="ss">unused</span><span·class="p">,</span><span·class="p"·data-group-id="4419660220-11">[</span><span·class="p"·data-group-id="4419660220-12">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·264,·SHA:·bebabeb9ff8167f6c93f32cdd04e01704049efa1bee5d3536db6c9f6ec494f84·...·]-2">]</span></code></pre><p><code·class="inline">m/1</code>·is·also·suitable·for·checking·that·the·BEAM·file·of·a·module·that·is·about159 ·</span><span·class="p"·data-group-id="9261064366-10">{</span><span·class="ss">unused</span><span·class="p">,</span><span·class="p"·data-group-id="9261064366-11">[</span><span·class="p"·data-group-id="9261064366-12">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·264,·SHA:·d7b4373d7ecb2b8ba6af24997dfde2413ee082edaa95814ac96c7e301b86b5ef·...·]-2">]</span></code></pre><p><code·class="inline">m/1</code>·is·also·suitable·for·checking·that·the·BEAM·file·of·a·module·that·is·about
160 to·be·loaded·into·a·running·a·system·does·not·call·any·undefined·functions.·In160 to·be·loaded·into·a·running·a·system·does·not·call·any·undefined·functions.·In
161 either·case,·the·code·path·of·the·code·server·(see·the·module·<code·class="inline">code</code>)·is·used161 either·case,·the·code·path·of·the·code·server·(see·the·module·<code·class="inline">code</code>)·is·used
162 for·finding·modules·that·export·externally·called·functions·not·exported·by·the162 for·finding·modules·that·export·externally·called·functions·not·exported·by·the
163 checked·module·itself,·so·called·<a·href="xref.html#library_module">library·modules</a>.</p><h2·id="predefined-analysis"·class="section-heading">163 checked·module·itself,·so·called·<a·href="xref.html#library_module">library·modules</a>.</p><h2·id="predefined-analysis"·class="section-heading">
164 ··<a·href="#predefined-analysis"·class="hover-link">164 ··<a·href="#predefined-analysis"·class="hover-link">
165 ····<i·class="ri-link-m"·aria-hidden="true"></i>165 ····<i·class="ri-link-m"·aria-hidden="true"></i>
166 ··</a>166 ··</a>
167 ··<span·class="text">Predefined·Analysis</span>167 ··<span·class="text">Predefined·Analysis</span>
168 </h2>168 </h2>
169 <p>In·the·last·example·the·module·to·analyze·was·given·as·an·argument·to·<code·class="inline">m/1</code>,·and169 <p>In·the·last·example·the·module·to·analyze·was·given·as·an·argument·to·<code·class="inline">m/1</code>,·and
170 the·code·path·was·(implicitly)·used·as·<a·href="xref.html#library_path">library·path</a>.·In170 the·code·path·was·(implicitly)·used·as·<a·href="xref.html#library_path">library·path</a>.·In
171 this·example·an·<a·href="xref.html#xref_server">xref·server</a>·will·be·used,·which·makes·it171 this·example·an·<a·href="xref.html#xref_server">xref·server</a>·will·be·used,·which·makes·it
172 possible·to·analyze·applications·and·releases,·and·also·to·select·the·library172 possible·to·analyze·applications·and·releases,·and·also·to·select·the·library
173 path·explicitly.</p><p>Each·Xref·server·is·referred·to·by·a·unique·name.·The·name·is·given·when173 path·explicitly.</p><p>Each·Xref·server·is·referred·to·by·a·unique·name.·The·name·is·given·when
174 creating·the·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9065276859-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="9065276859-1">)</span><span·class="p">.</span><span·class="w">174 creating·the·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3417084288-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="3417084288-1">)</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p"·data-group-id="9065276859-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.27</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9065276859-2">}</span></code></pre><p>Next·the·system·to·be·analyzed·is·added·to·the·Xref·server.·Here·the·system·will175 </span><span·class="p"·data-group-id="3417084288-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.27</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</span><span·class="p"·data-group-id="3417084288-2">}</span></code></pre><p>Next·the·system·to·be·analyzed·is·added·to·the·Xref·server.·Here·the·system·will
176 be·OTP,·so·no·library·path·will·be·needed.·Otherwise,·when·analyzing·a·system176 be·OTP,·so·no·library·path·will·be·needed.·Otherwise,·when·analyzing·a·system
177 that·uses·OTP,·the·OTP·modules·are·typically·made·library·modules·by·setting·the177 that·uses·OTP,·the·OTP·modules·are·typically·made·library·modules·by·setting·the
178 library·path·to·the·default·OTP·code·path·(or·to·<code·class="inline">code_path</code>,·see·the178 library·path·to·the·default·OTP·code·path·(or·to·<code·class="inline">code_path</code>,·see·the
179 <a·href="xref.html#code_path">reference·manual</a>).·By·default,·the·names·of·read·BEAM179 <a·href="xref.html#code_path">reference·manual</a>).·By·default,·the·names·of·read·BEAM
180 files·and·warnings·are·output·when·adding·analyzed·modules,·but·these·messages180 files·and·warnings·are·output·when·adding·analyzed·modules,·but·these·messages
181 can·be·avoided·by·setting·default·values·of·some·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">set_default</span><span·class="p"·data-group-id="7301465962-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7301465962-2">[</span><span·class="p"·data-group-id="7301465962-3">{</span><span·class="ss">verbose</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·415,·SHA:·f3798fac1343d2fb7af837cdd3db9a85a66e94e9724989754652d5eb94a76912·...·]-1">)</span><span·class="p">.</span><span·class="w">181 can·be·avoided·by·setting·default·values·of·some·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">set_default</span><span·class="p"·data-group-id="4814828737-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4814828737-2">[</span><span·class="p"·data-group-id="4814828737-3">{</span><span·class="ss">verbose</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·415,·SHA:·a539b79f371c730892f785dfa41832fd16c5944cd50712144df62cd1b87126c2·...·]-1">)</span><span·class="p">.</span><span·class="w">
182 </span><span·class="ss">ok</span><span·class="gp·unselectable">182 </span><span·class="ss">ok</span><span·class="gp·unselectable">
183 3&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">add_release</span><span·class="p"·data-group-id="7301465962-5">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="7301465962-6">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·326,·SHA:·c3c11dfddfbea5fe902fadf3561735c2d57c21c9408fdd1b9a6a221fb2e24bf0·...·]-5">)</span><span·class="p">.</span><span·class="w">183 3&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">add_release</span><span·class="p"·data-group-id="4814828737-5">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="4814828737-6">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·326,·SHA:·ec18e691070d7ba95eda5473efcb797ade6387ec18ad7327065d226a400a9311·...·]-5">)</span><span·class="p">.</span><span·class="w">
184 </span><span·class="p"·data-group-id="7301465962-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">otp</span><span·class="p"·data-group-id="7301465962-8">}</span></code></pre><p><code·class="inline">add_release/3</code>·assumes·that·all·subdirectories·of·the·library·directory184 </span><span·class="p"·data-group-id="4814828737-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">otp</span><span·class="p"·data-group-id="4814828737-8">}</span></code></pre><p><code·class="inline">add_release/3</code>·assumes·that·all·subdirectories·of·the·library·directory
185 returned·by·<a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#lib_dir/0"><code·class="inline">code:lib_dir()</code></a>·contain·applications;185 returned·by·<a·href="../../../../lib/kernel-10.2.2/doc/html/code.html#lib_dir/0"><code·class="inline">code:lib_dir()</code></a>·contain·applications;
186 the·effect·is·that·of·reading·all·BEAM·files·for·the·application.</p><p>It·is·now·easy·to·check·the·release·for·calls·to·undefined·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">analyze</span><span·class="p"·data-group-id="3614506703-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined_function_calls</span><span·class="p"·data-group-id="3614506703-1">)</span><span·class="p">.</span><span·class="w">186 the·effect·is·that·of·reading·all·BEAM·files·for·the·application.</p><p>It·is·now·easy·to·check·the·release·for·calls·to·undefined·functions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">analyze</span><span·class="p"·data-group-id="5414715601-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined_function_calls</span><span·class="p"·data-group-id="5414715601-1">)</span><span·class="p">.</span><span·class="w">
187 </span><span·class="p"·data-group-id="3614506703-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3614506703-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3614[·...·truncated·by·diffoscope;·len:·457,·SHA:·c47bd7c333256aa072d6ac582be701ed235641f5d217af788538dcd14441ccac·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·check·for·calls·to·undefined·functions·is·an·example·of·a·predefined187 </span><span·class="p"·data-group-id="5414715601-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5414715601-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5414[·...·truncated·by·diffoscope;·len:·457,·SHA:·e5b719462d90d8392d34f195bccb78fe8d4bd16bb730156a7aac9d65cd8f0f19·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·check·for·calls·to·undefined·functions·is·an·example·of·a·predefined
188 analysis,·probably·the·most·useful·one.·Other·examples·are·the·analyses·that188 analysis,·probably·the·most·useful·one.·Other·examples·are·the·analyses·that
189 find·unused·local·functions,·or·functions·that·call·some·given·functions.·See189 find·unused·local·functions,·or·functions·that·call·some·given·functions.·See
190 the·<a·href="xref.html#analyze">analyze/2,3</a>·functions·for·a·complete·list·of·predefined190 the·<a·href="xref.html#analyze">analyze/2,3</a>·functions·for·a·complete·list·of·predefined
191 analyses.</p><p>Each·predefined·analysis·is·a·shorthand·for·a·<a·href="xref.html#query">query</a>,·a191 analyses.</p><p>Each·predefined·analysis·is·a·shorthand·for·a·<a·href="xref.html#query">query</a>,·a
192 sentence·of·a·tiny·language·providing·cross·reference·data·as·values·of192 sentence·of·a·tiny·language·providing·cross·reference·data·as·values·of
193 <a·href="xref.html#predefined_variable">predefined·variables</a>.·The·check·for·calls·to193 <a·href="xref.html#predefined_variable">predefined·variables</a>.·The·check·for·calls·to
194 undefined·functions·can·thus·be·stated·as·a·query:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="7880082898-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;(XC·-·UC)·||·(XU·-·X·-·B)&quot;</span><span·class="p"·data-group-id="7880082898-1">)</span><span·class="p">.</span><span·class="w">194 undefined·functions·can·thus·be·stated·as·a·query:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="2581137484-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;(XC·-·UC)·||·(XU·-·X·-·B)&quot;</span><span·class="p"·data-group-id="2581137484-1">)</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p"·data-group-id="7880082898-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7880082898-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7880082898-3">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·e488756237547c820387606d6154bb751fbd5e9e9c709146eb0f1720a84dfea9·...·]-2">}</span></code></pre><p>The·query·asks·for·the·restriction·of·external·calls·except·the·unresolved·calls195 </span><span·class="p"·data-group-id="2581137484-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2581137484-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2581137484-3">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·ba3eb924dda856fc3bdae8fd49fca8c522502522156a5f0a2d3ebac5d8a8729e·...·]-2">}</span></code></pre><p>The·query·asks·for·the·restriction·of·external·calls·except·the·unresolved·calls
196 to·calls·to·functions·that·are·externally·used·but·neither·exported·nor·built-in196 to·calls·to·functions·that·are·externally·used·but·neither·exported·nor·built-in
197 functions·(the·<code·class="inline">||</code>·operator·restricts·the·used·functions·while·the·<code·class="inline">|</code>·operator197 functions·(the·<code·class="inline">||</code>·operator·restricts·the·used·functions·while·the·<code·class="inline">|</code>·operator
198 restricts·the·calling·functions).·The·<code·class="inline">-</code>·operator·returns·the·difference·of·two198 restricts·the·calling·functions).·The·<code·class="inline">-</code>·operator·returns·the·difference·of·two
199 sets,·and·the·<code·class="inline">+</code>·operator·to·be·used·below·returns·the·union·of·two·sets.</p><p>The·relationships·between·the·predefined·variables·<code·class="inline">XU</code>,·<code·class="inline">X</code>,·<code·class="inline">B</code>·and·a·few199 sets,·and·the·<code·class="inline">+</code>·operator·to·be·used·below·returns·the·union·of·two·sets.</p><p>The·relationships·between·the·predefined·variables·<code·class="inline">XU</code>,·<code·class="inline">X</code>,·<code·class="inline">B</code>·and·a·few
200 others·are·worth·elaborating·upon.·The·reference·manual·mentions·two·ways·of200 others·are·worth·elaborating·upon.·The·reference·manual·mentions·two·ways·of
201 expressing·the·set·of·all·functions,·one·that·focuses·on·how·they·are·defined:201 expressing·the·set·of·all·functions,·one·that·focuses·on·how·they·are·defined:
202 <code·class="inline">X + L + B + U</code>,·and·one·that·focuses·on·how·they·are·used:·<code·class="inline">UU + LU + XU</code>.·The202 <code·class="inline">X + L + B + U</code>,·and·one·that·focuses·on·how·they·are·used:·<code·class="inline">UU + LU + XU</code>.·The
Offset 220, 16 lines modifiedOffset 220, 16 lines modified
220 </h2>220 </h2>
221 <p>The·module·check·and·the·predefined·analyses·are·useful,·but·limited.·Sometimes221 <p>The·module·check·and·the·predefined·analyses·are·useful,·but·limited.·Sometimes
222 more·flexibility·is·needed,·for·instance·one·might·not·need·to·apply·a·graph222 more·flexibility·is·needed,·for·instance·one·might·not·need·to·apply·a·graph
223 analysis·on·all·calls,·but·some·subset·will·do·equally·well.·That·flexibility·is223 analysis·on·all·calls,·but·some·subset·will·do·equally·well.·That·flexibility·is
224 provided·with·a·simple·language.·Below·are·some·expressions·of·the·language·with224 provided·with·a·simple·language.·Below·are·some·expressions·of·the·language·with
225 comments,·focusing·on·elements·of·the·language·rather·than·providing·useful225 comments,·focusing·on·elements·of·the·language·rather·than·providing·useful
226 examples.·The·analyzed·system·is·assumed·to·be·OTP,·so·in·order·to·run·the226 examples.·The·analyzed·system·is·assumed·to·be·OTP,·so·in·order·to·run·the
227 queries,·first·evaluate·these·calls:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5312625223-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="5312625223-1">)</span><span·class="p">.</span><span·class="w">227 queries,·first·evaluate·these·calls:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9726156386-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="9726156386-1">)</span><span·class="p">.</span><span·class="w">
228 </span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">add_release</span><span·class="p"·data-group-id="5312625223-2">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">root_dir</span><span·class="p"·data-group-id="5312625223-3">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·3b9fcaf3dddb5be2f196db3e979e7a55f9e1d9c08a27129a85fa4160a93fb599·...·]-2">)</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">xref:q(s,·&quot;(Fun)·xref·:·Mod&quot;).</code></strong>·-·All·functions·of·the·<code·class="inline">xref</code>·module.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;xref·:·Mod·*·X&quot;).</code></strong>·-·All·exported·functions·of·the·<code·class="inline">xref</code>228 </span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">add_release</span><span·class="p"·data-group-id="9726156386-2">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">root_dir</span><span·class="p"·data-group-id="9726156386-3">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·229a0e30b703933352995c082460e87a4616fe1e2f40cb6d9b5cfc72ed7f7cfd·...·]-2">)</span><span·class="p">.</span></code></pre><ul><li><p><strong><code·class="inline">xref:q(s,·&quot;(Fun)·xref·:·Mod&quot;).</code></strong>·-·All·functions·of·the·<code·class="inline">xref</code>·module.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;xref·:·Mod·*·X&quot;).</code></strong>·-·All·exported·functions·of·the·<code·class="inline">xref</code>
229 module.·The·first·operand·of·the·intersection·operator·<code·class="inline">*</code>·is·implicitly229 module.·The·first·operand·of·the·intersection·operator·<code·class="inline">*</code>·is·implicitly
230 converted·to·the·more·special·type·of·the·second·operand.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;(Mod)·tools&quot;).</code></strong>·-·All·modules·of·the·Tools·application.</p></li><li><p><strong><code·class="inline">xref:q(s,·'&quot;xref_.*&quot;·:·Mod').</code></strong>·-·All·modules·with·a·name·beginning·with230 converted·to·the·more·special·type·of·the·second·operand.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;(Mod)·tools&quot;).</code></strong>·-·All·modules·of·the·Tools·application.</p></li><li><p><strong><code·class="inline">xref:q(s,·'&quot;xref_.*&quot;·:·Mod').</code></strong>·-·All·modules·with·a·name·beginning·with
231 <code·class="inline">xref_</code>.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;#·E | X &quot;).</code></strong>·-·Number·of·calls·from·exported·functions.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;XC || L &quot;).</code></strong>·-·All·external·calls·to·local·functions.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;XC * LC&quot;).</code></strong>·-·All·calls·that·have·both·an·external·and·a·local231 <code·class="inline">xref_</code>.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;#·E | X &quot;).</code></strong>·-·Number·of·calls·from·exported·functions.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;XC || L &quot;).</code></strong>·-·All·external·calls·to·local·functions.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;XC * LC&quot;).</code></strong>·-·All·calls·that·have·both·an·external·and·a·local
232 version.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;(LLin)·(LC·*·XC)&quot;).</code></strong>·-·The·lines·where·the·local·calls·of·the232 version.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;(LLin)·(LC·*·XC)&quot;).</code></strong>·-·The·lines·where·the·local·calls·of·the
233 last·example·are·made.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;(XLin)·(LC·*·XC)&quot;).</code></strong>·-·The·lines·where·the·external·calls·of233 last·example·are·made.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;(XLin)·(LC·*·XC)&quot;).</code></strong>·-·The·lines·where·the·external·calls·of
234 the·example·before·last·are·made.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;XC·*·(ME·-·strict·ME)&quot;).</code></strong>·-·External·calls·within·some·module.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;E ||| kernel&quot;).</code></strong>·-·All·calls·within·the·Kernel·application.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;closure E | kernel || kernel&quot;).</code></strong>·-·All·direct·and·indirect234 the·example·before·last·are·made.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;XC·*·(ME·-·strict·ME)&quot;).</code></strong>·-·External·calls·within·some·module.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;E ||| kernel&quot;).</code></strong>·-·All·calls·within·the·Kernel·application.</p></li><li><p><strong><code·class="inline">xref:q(s,·&quot;closure E | kernel || kernel&quot;).</code></strong>·-·All·direct·and·indirect
235 calls·within·the·Kernel·application.·Both·the·calling·and·the·used·functions235 calls·within·the·Kernel·application.·Both·the·calling·and·the·used·functions
Offset 264, 26 lines modifiedOffset 264, 26 lines modified
264 <code·class="inline">digraph</code>·representation·of·graphs)·has·to·be·explicitly·applied.</p><p>As·an·example·of·analyzing·indirect·calls,·the·following·Erlang·function·tries264 <code·class="inline">digraph</code>·representation·of·graphs)·has·to·be·explicitly·applied.</p><p>As·an·example·of·analyzing·indirect·calls,·the·following·Erlang·function·tries
265 to·answer·the·question:·if·we·want·to·know·which·modules·are·used·indirectly·by265 to·answer·the·question:·if·we·want·to·know·which·modules·are·used·indirectly·by
266 some·module(s),·is·it·worth·while·using·the266 some·module(s),·is·it·worth·while·using·the
267 <a·href="xref.html#call_graph">function·graph</a>·rather·than·the·module·graph?·Recall·that267 <a·href="xref.html#call_graph">function·graph</a>·rather·than·the·module·graph?·Recall·that
268 a·module·M1·is·said·to·call·a·module·M2·if·there·is·some·function·in·M1·that268 a·module·M1·is·said·to·call·a·module·M2·if·there·is·some·function·in·M1·that
269 calls·some·function·in·M2.·It·would·be·nice·if·we·could·use·the·much·smaller269 calls·some·function·in·M2.·It·would·be·nice·if·we·could·use·the·much·smaller
270 module·graph,·since·it·is·available·also·in·the·light·weight270 module·graph,·since·it·is·available·also·in·the·light·weight
271 <code·class="inline">modules</code><a·href="xref.html#mode">mode</a>·of·Xref·servers.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t</span><span·class="p"·data-group-id="0442994513-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="0442994513-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">271 <code·class="inline">modules</code><a·href="xref.html#mode">mode</a>·of·Xref·servers.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">t</span><span·class="p"·data-group-id="3248614202-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="3248614202-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
272 ··</span><span·class="p"·data-group-id="0442994513-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="0442994513-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·285,·SHA:·3103da05a2b288dbe0c57329964e1014bf09a0c9a2b1b148592180c9490579c1·...·]-3">)</span><span·class="p">,</span><span·class="w">272 ··</span><span·class="p"·data-group-id="3248614202-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="3248614202-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·285,·SHA:·76131f253924f3738070af3b7b042968156b32a1be097558fb9dcf9b00fdc098·...·]-3">)</span><span·class="p">,</span><span·class="w">
273 ··</span><span·class="p"·data-group-id="0442994513-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ms</span><span·class="p"·data-group-id="0442994513-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·270,·SHA:·fb8716065ff313ffaf8558101b100cb91ff13d5d4e7d1f13d0150677ba5ab140·...·]-5">)</span><span·class="p">,</span><span·class="w">273 ··</span><span·class="p"·data-group-id="3248614202-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ms</span><span·class="p"·data-group-id="3248614202-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·270,·SHA:·ecf2a0e45c128ca5d1c8d69aeba16b0739d928dcbb82c0eb1271b175227086d4·...·]-5">)</span><span·class="p">,</span><span·class="w">
274 ··</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0442994513-6">(</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="0442994513-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">274 ··</span><span·class="n">Fun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3248614202-6">(</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p"·data-group-id="3248614202-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
275 ······</span><span·class="n">Q</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0442994513-7">(</span><span·class="s">&quot;#·(Mod)·(Eplus·|·</span><span·class="si">~p</span><span·class="s">·:·Mod)&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0442994513-8">[</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·7c3004826988f4b9a34bd6c758ce753797b9d7d2e02438bfc0d7ce33158712df·...·]-7">)</span><span·class="p">,</span><span·class="w">275 ······</span><span·class="n">Q</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3248614202-7">(</span><span·class="s">&quot;#·(Mod)·(Eplus·|·</span><span·class="si">~p</span><span·class="s">·:·Mod)&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3248614202-8">[</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·a0fd2b41025cbb8783f98c283e8a3c80aea4a638aa8f2b759ac813f93d1f6390·...·]-7">)</span><span·class="p">,</span><span·class="w">
276 ······</span><span·class="p"·data-group-id="0442994513-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N0</span><span·class="p"·data-group-id="0442994513-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·450,·SHA:·894c1da1474ea164eb32d75a64c952b07202d3e9be8821082fc3d22c04ab157d·...·]-10">)</span><span·class="p">,</span><span·class="w">276 ······</span><span·class="p"·data-group-id="3248614202-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N0</span><span·class="p"·data-group-id="3248614202-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·450,·SHA:·a9a2a0608880aee1beabd0d5aa55ec3d36b77a7b1a6536a8ba55a94de39e7545·...·]-10">)</span><span·class="p">,</span><span·class="w">
277 ······</span><span·class="n">N</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">N0</span><span·class="w">277 ······</span><span·class="n">N</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="n">N0</span><span·class="w">
278 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">278 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
279 ··</span><span·class="n">Sum</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="0442994513-12">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ms</span><span·class="p"·data-group-id="0442994513-12">)</span><span·class="p">,</span><span·class="w">279 ··</span><span·class="n">Sum</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="3248614202-12">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ms</span><span·class="p"·data-group-id="3248614202-12">)</span><span·class="p">,</span><span·class="w">
280 ··</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">forget</span><span·class="p"·data-group-id="0442994513-13">(</span><span·class="n">S</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Eplus&#39;</span><span·class="p"·data-group-id="0442994513-13">)</span><span·class="p">,</span><span·class="w">280 ··</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xref</span><span·class="p">:</span><span·class="nf">forget</span><span·class="p"·data-group-id="3248614202-13">(</span><span·class="n">S</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;Eplus&#39;</span><span·class="p"·data-group-id="3248614202-13">)</span><span·class="p">,</span><span·class="w">
281 ··</span><span·class="p"·data-group-id="0442994513-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tot</span><span·class="p"·data-group-id="0442994513-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·291,·SHA:·8eb187ac2e9c043eb87d8f6181380c44e4e7cb79b5bd4011a794537f9786c7ef·...·]-15">)</span><span·class="p">,</span><span·class="w">281 ··</span><span·class="p"·data-group-id="3248614202-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tot</span><span·class="p"·data-group-id="3248614202-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·291,·SHA:·1d422b2d4ccc24dca0d1aa94eca0a1b71717225c83c57b9eaae91d130cbe0bfa·...·]-15">)</span><span·class="p">,</span><span·class="w">
282 ··</span><span·class="mi">100</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="p"·data-group-id="0442994513-16">(</span><span·class="p"·data-group-id="0442994513-17">(</span><span·class="n">Tot</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="0442994513-17">)</span><[·...·truncated·by·diffoscope;·len:·138,·SHA:·74f453707e8029182135c7c1dd737c0e834eea34f114a62b1c405751c4770f95·...·]-16">)</span><span·class="p">.</span></code></pre><p>Comments·on·the·code:</p><ul><li>We·want·to·find·the·reduction·of·the·closure·of·the·function·graph·to·modules.282 ··</span><span·class="mi">100</span><span·class="w">·</span><span·class="o">*</span><span·class="w">·</span><span·class="p"·data-group-id="3248614202-16">(</span><span·class="p"·data-group-id="3248614202-17">(</span><span·class="n">Tot</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="3248614202-17">)</span><[·...·truncated·by·diffoscope;·len:·138,·SHA:·2f1d19c2e2e314222c57093fd9ed54e37ae634d009cd3aad503d5f65401ceb5a·...·]-16">)</span><span·class="p">.</span></code></pre><p>Comments·on·the·code:</p><ul><li>We·want·to·find·the·reduction·of·the·closure·of·the·function·graph·to·modules.
283 The·direct·expression·for·doing·that·would·be·<code·class="inline">(Mod) (closure E | AM)</code>,·but283 The·direct·expression·for·doing·that·would·be·<code·class="inline">(Mod) (closure E | AM)</code>,·but
284 then·we·would·have·to·represent·all·of·the·transitive·closure·of·E·in·memory.284 then·we·would·have·to·represent·all·of·the·transitive·closure·of·E·in·memory.
285 Instead·the·number·of·indirectly·used·modules·is·found·for·each·analyzed285 Instead·the·number·of·indirectly·used·modules·is·found·for·each·analyzed
286 module,·and·the·sum·over·all·modules·is·calculated.</li><li>A·user·variable·is·employed·for·holding·the·<code·class="inline">digraph</code>·representation·of·the286 module,·and·the·sum·over·all·modules·is·calculated.</li><li>A·user·variable·is·employed·for·holding·the·<code·class="inline">digraph</code>·representation·of·the
287 function·graph·for·use·in·many·queries.·The·reason·is·efficiency.·As·opposed287 function·graph·for·use·in·many·queries.·The·reason·is·efficiency.·As·opposed
288 to·the·<code·class="inline">=</code>·operator,·the·<code·class="inline">:=</code>·operator·saves·a·value·for·subsequent·analyses.288 to·the·<code·class="inline">=</code>·operator,·the·<code·class="inline">:=</code>·operator·saves·a·value·for·subsequent·analyses.
289 Here·might·be·the·place·to·note·that·equal·subexpressions·within·a·query·are289 Here·might·be·the·place·to·note·that·equal·subexpressions·within·a·query·are
12.8 KB
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/chapter.html
    
Offset 157, 21 lines modifiedOffset 157, 21 lines modified
157 that·object.·Type·checking·is·done·so·that·a·module·only·operates·on·it's157 that·object.·Type·checking·is·done·so·that·a·module·only·operates·on·it's
158 objects·or·inherited·classes.</p><p>An·object·is·created·with·<em>new</em>·and·destroyed·with·<em>destroy</em>.·Most·functions·in158 objects·or·inherited·classes.</p><p>An·object·is·created·with·<em>new</em>·and·destroyed·with·<em>destroy</em>.·Most·functions·in
159 the·classes·are·named·the·same·as·their·C++·counterpart,·except·that·for159 the·classes·are·named·the·same·as·their·C++·counterpart,·except·that·for
160 convenience,·in·erlang·they·start·with·a·lowercase·letter·and·the·first·argument160 convenience,·in·erlang·they·start·with·a·lowercase·letter·and·the·first·argument
161 is·the·object·reference.·Optional·arguments·are·last·and·expressed·as·tagged161 is·the·object·reference.·Optional·arguments·are·last·and·expressed·as·tagged
162 tuples·in·any·order.</p><p>For·example·the·<em>wxWindow</em>·C++·class·is·implemented·in·the·<em>wxWindow</em>·erlang162 tuples·in·any·order.</p><p>For·example·the·<em>wxWindow</em>·C++·class·is·implemented·in·the·<em>wxWindow</em>·erlang
163 module·and·the·member·<em>wxWindow::CenterOnParent</em>·is·thus163 module·and·the·member·<em>wxWindow::CenterOnParent</em>·is·thus
164 <em>wxWindow:centerOnParent</em>.·The·following·C++·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="ss">wxWindow</span><span·class="w">·</span><span·class="n">MyWin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">new</span><span·class="w">·</span><span·class="nf">wxWindow</span><span·class="p"·data-group-id="8705229551-1">(</span><span·class="p"·data-group-id="8705229551-1">)</span><span·class="p">;</span><span·class="w">164 <em>wxWindow:centerOnParent</em>.·The·following·C++·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="ss">wxWindow</span><span·class="w">·</span><span·class="n">MyWin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">new</span><span·class="w">·</span><span·class="nf">wxWindow</span><span·class="p"·data-group-id="5133834159-1">(</span><span·class="p"·data-group-id="5133834159-1">)</span><span·class="p">;</span><span·class="w">
165 ··</span><span·class="n">MyWin</span><span·class="p">.</span><span·class="n">CenterOnParent</span><span·class="p"·data-group-id="8705229551-2">(</span><span·class="ss">wxVERTICAL</span><span·class="p"·data-group-id="8705229551-2">)</span><span·class="p">;</span><span·class="w">165 ··</span><span·class="n">MyWin</span><span·class="p">.</span><span·class="n">CenterOnParent</span><span·class="p"·data-group-id="5133834159-2">(</span><span·class="ss">wxVERTICAL</span><span·class="p"·data-group-id="5133834159-2">)</span><span·class="p">;</span><span·class="w">
166 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">166 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
167 ··</span><span·class="ss">delete</span><span·class="w">·</span><span·class="n">MyWin</span><span·class="p">;</span></code></pre><p>would·in·erlang·look·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="n">MyWin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wxWindow</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0707402276-1">(</span><span·class="p"·data-group-id="0707402276-1">)</span><span·class="p">,</span><span·class="w">167 ··</span><span·class="ss">delete</span><span·class="w">·</span><span·class="n">MyWin</span><span·class="p">;</span></code></pre><p>would·in·erlang·look·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="n">MyWin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wxWindow</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="8186735006-1">(</span><span·class="p"·data-group-id="8186735006-1">)</span><span·class="p">,</span><span·class="w">
168 ··</span><span·class="nc">wxWindow</span><span·class="p">:</span><span·class="nf">centerOnParent</span><span·class="p"·data-group-id="0707402276-2">(</span><span·class="n">MyWin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0707402276-3">[</span><span·class="p"·data-group-id="0707402276-4">{</span><span·class="ss">dir</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·203,·SHA:·bb06af3ad8a268619e0665bc720de4852c29b0dd3dae1b864c51cee85c893cf0·...·]6-2">)</span><span·class="p">,</span><span·class="w">168 ··</span><span·class="nc">wxWindow</span><span·class="p">:</span><span·class="nf">centerOnParent</span><span·class="p"·data-group-id="8186735006-2">(</span><span·class="n">MyWin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8186735006-3">[</span><span·class="p"·data-group-id="8186735006-4">{</span><span·class="ss">dir</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·203,·SHA:·c39897f713c3496c19a967a62656fc30aa46660f9727f8ece1c2db699fb976bb·...·]6-2">)</span><span·class="p">,</span><span·class="w">
169 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">169 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
170 ··</span><span·class="nc">wxWindow</span><span·class="p">:</span><span·class="nf">destroy</span><span·class="p"·data-group-id="0707402276-5">(</span><span·class="n">MyWin</span><span·class="p"·data-group-id="0707402276-5">)</span><span·class="p">,</span></code></pre><p>When·you·are·reading·wxWidgets·documentation·or·the·examples,·you·will·notice170 ··</span><span·class="nc">wxWindow</span><span·class="p">:</span><span·class="nf">destroy</span><span·class="p"·data-group-id="8186735006-5">(</span><span·class="n">MyWin</span><span·class="p"·data-group-id="8186735006-5">)</span><span·class="p">,</span></code></pre><p>When·you·are·reading·wxWidgets·documentation·or·the·examples,·you·will·notice
171 that·some·of·the·most·basic·classes·are·missing·in·<em>wx</em>,·they·are·directly171 that·some·of·the·most·basic·classes·are·missing·in·<em>wx</em>,·they·are·directly
172 mapped·to·corresponding·erlang·terms:</p><ul><li><p><strong><em>wxPoint</em>·is·represented·by·{Xcoord,Ycoord}</strong></p></li><li><p><strong><em>wxSize</em>·is·represented·by·{Width,Height}</strong></p></li><li><p><strong><em>wxRect</em>·is·represented·by·{Xcoord,Ycoord,Width,Height}</strong></p></li><li><p><strong><em>wxColour</em>·is·represented·by·{Red,Green,Blue[,Alpha]}</strong></p></li><li><p><strong><em>wxString</em>·is·represented·by172 mapped·to·corresponding·erlang·terms:</p><ul><li><p><strong><em>wxPoint</em>·is·represented·by·{Xcoord,Ycoord}</strong></p></li><li><p><strong><em>wxSize</em>·is·represented·by·{Width,Height}</strong></p></li><li><p><strong><em>wxRect</em>·is·represented·by·{Xcoord,Ycoord,Width,Height}</strong></p></li><li><p><strong><em>wxColour</em>·is·represented·by·{Red,Green,Blue[,Alpha]}</strong></p></li><li><p><strong><em>wxString</em>·is·represented·by
173 <a·href="../../../../lib/stdlib-6.2/doc/html/unicode.html#t:charlist/0">unicode:charlist()</a></strong></p></li><li><p><strong><em>wxGBPosition</em>·is·represented·by·{Row,Column}</strong></p></li><li><p><strong><em>wxGBSpan</em>·is·represented·by·{RowSpan,ColumnSPan}</strong></p></li><li><p><strong><em>wxGridCellCoords</em>·is·represented·by·{Row,Column}</strong></p></li></ul><p>In·the·places·where·the·erlang·API·differs·from·the·original·one·it·should·be173 <a·href="../../../../lib/stdlib-6.2/doc/html/unicode.html#t:charlist/0">unicode:charlist()</a></strong></p></li><li><p><strong><em>wxGBPosition</em>·is·represented·by·{Row,Column}</strong></p></li><li><p><strong><em>wxGBSpan</em>·is·represented·by·{RowSpan,ColumnSPan}</strong></p></li><li><p><strong><em>wxGridCellCoords</em>·is·represented·by·{Row,Column}</strong></p></li></ul><p>In·the·places·where·the·erlang·API·differs·from·the·original·one·it·should·be
174 obvious·from·the·erlang·documentation·which·representation·has·been·used.·E.g.174 obvious·from·the·erlang·documentation·which·representation·has·been·used.·E.g.
175 the·C++·arrays·and/or·lists·are·sometimes·represented·as·erlang·lists·and175 the·C++·arrays·and/or·lists·are·sometimes·represented·as·erlang·lists·and
176 sometimes·as·tuples.</p><p>Colours·are·represented·with·{Red,Green,Blue[,Alpha]},·the·Alpha·value·is176 sometimes·as·tuples.</p><p>Colours·are·represented·with·{Red,Green,Blue[,Alpha]},·the·Alpha·value·is
177 optional·when·used·as·an·argument·to·functions,·but·it·will·always·be·returned177 optional·when·used·as·an·argument·to·functions,·but·it·will·always·be·returned
Offset 191, 22 lines modifiedOffset 191, 22 lines modified
191 ··<span·class="text">Multiple·processes·and·memory·handling</span>191 ··<span·class="text">Multiple·processes·and·memory·handling</span>
192 </h2>192 </h2>
193 <p>The·intention·is·that·each·erlang·application·calls·wx:new()·once·to·setup·it's193 <p>The·intention·is·that·each·erlang·application·calls·wx:new()·once·to·setup·it's
194 GUI·which·creates·an·environment·and·a·memory·mapping.·To·be·able·to·use·<em>wx</em>194 GUI·which·creates·an·environment·and·a·memory·mapping.·To·be·able·to·use·<em>wx</em>
195 from·several·processes·in·your·application,·you·must·share·the·environment.·You195 from·several·processes·in·your·application,·you·must·share·the·environment.·You
196 can·get·the·active·environment·with·<a·href="wx.html#get_env/0"><code·class="inline">wx:get_env/0</code></a>·and·set·it·in·the·new196 can·get·the·active·environment·with·<a·href="wx.html#get_env/0"><code·class="inline">wx:get_env/0</code></a>·and·set·it·in·the·new
197 processes·with·<a·href="wx.html#set_env/1"><code·class="inline">wx:set_env/1</code></a>.·Two·processes·or·applications·which·have·both197 processes·with·<a·href="wx.html#set_env/1"><code·class="inline">wx:set_env/1</code></a>.·Two·processes·or·applications·which·have·both
198 called·wx:new()·will·not·be·able·use·each·others·objects.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0174752280-1">(</span><span·class="p"·data-group-id="0174752280-1">)</span><span·class="p">,</span><span·class="w">198 called·wx:new()·will·not·be·able·use·each·others·objects.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="6661011469-1">(</span><span·class="p"·data-group-id="6661011469-1">)</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="n">MyWin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wxFrame</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0174752280-2">(</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">null</span><span·class="p"·data-group-id="0174752280-3">(</span><span·class="p"·data-group-id="0174752280-3">)</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·309,·SHA:·c8669858e31574089308888902ed4d01d9e7a115ee667251eaa25895797a1709·...·]-2">)</span><span·class="p">,</span><span·class="w">199 ··</span><span·class="n">MyWin</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wxFrame</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="6661011469-2">(</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">null</span><span·class="p"·data-group-id="6661011469-3">(</span><span·class="p"·data-group-id="6661011469-3">)</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·309,·SHA:·625d039be02243b4d625ff7cfa942297bb9d8988ae95b8b3e1da487e63b9332d·...·]-2">)</span><span·class="p">,</span><span·class="w">
200 ··</span><span·class="n">Env</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">get_env</span><span·class="p"·data-group-id="0174752280-5">(</span><span·class="p"·data-group-id="0174752280-5">)</span><span·class="p">,</span><span·class="w">200 ··</span><span·class="n">Env</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">get_env</span><span·class="p"·data-group-id="6661011469-5">(</span><span·class="p"·data-group-id="6661011469-5">)</span><span·class="p">,</span><span·class="w">
201 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0174752280-6">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0174752280-7">(</span><span·class="p"·data-group-id="0174752280-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">201 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6661011469-6">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6661011469-7">(</span><span·class="p"·data-group-id="6661011469-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ···········</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">set_env</span><span·class="p"·data-group-id="0174752280-8">(</span><span·class="n">Env</span><span·class="p"·data-group-id="0174752280-8">)</span><span·class="p">,</span><span·class="w">202 ···········</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">set_env</span><span·class="p"·data-group-id="6661011469-8">(</span><span·class="n">Env</span><span·class="p"·data-group-id="6661011469-8">)</span><span·class="p">,</span><span·class="w">
203 ···········</span><span·class="c1">%%·Here·you·can·do·wx·calls·from·your·helper·process.</span><span·class="w">203 ···········</span><span·class="c1">%%·Here·you·can·do·wx·calls·from·your·helper·process.</span><span·class="w">
204 ···········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">204 ···········</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
205 ········</span><span·class="k">end</span><span·class="p"·data-group-id="0174752280-6">)</span><span·class="p">,</span><span·class="w">205 ········</span><span·class="k">end</span><span·class="p"·data-group-id="6661011469-6">)</span><span·class="p">,</span><span·class="w">
206 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>When·<a·href="wx.html#destroy/0"><code·class="inline">wx:destroy/0</code></a>·is·invoked·or·when·all·processes·in·the·application·have206 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><p>When·<a·href="wx.html#destroy/0"><code·class="inline">wx:destroy/0</code></a>·is·invoked·or·when·all·processes·in·the·application·have
207 died,·the·memory·is·deleted·and·all·windows·created·by·that·application·are207 died,·the·memory·is·deleted·and·all·windows·created·by·that·application·are
208 closed.</p><p>The·<em>wx</em>·application·never·cleans·or·garbage·collects·memory·as·long·as·the·user208 closed.</p><p>The·<em>wx</em>·application·never·cleans·or·garbage·collects·memory·as·long·as·the·user
209 application·is·alive.·Most·of·the·objects·are·deleted·when·a·window·is·closed,209 application·is·alive.·Most·of·the·objects·are·deleted·when·a·window·is·closed,
210 or·at·least·all·the·objects·which·have·a·parent·argument·that·is·non·null.·By210 or·at·least·all·the·objects·which·have·a·parent·argument·that·is·non·null.·By
211 using·<code·class="inline">wxCLASS:destroy/1</code>·when·possible·you·can·avoid·an·increasing·memory211 using·<code·class="inline">wxCLASS:destroy/1</code>·when·possible·you·can·avoid·an·increasing·memory
212 usage.·This·is·especially·important·when·<em>wxWidgets</em>·assumes·or·recommends·that212 usage.·This·is·especially·important·when·<em>wxWidgets</em>·assumes·or·recommends·that
852 KB
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/wx.epub
39.2 KB
zipinfo {}
Max HTML report size reached
779 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·10:51:34,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Feb·13·2025·09:24:44,·uncompressed·size·20,·method=store
19.5 KB
OEBPS/wx_object.xhtml
Max HTML report size reached
1.18 KB
OEBPS/content.opf
1.14 KB
OEBPS/content.opf
Max HTML report size reached
12.7 KB
OEBPS/chapter.xhtml
Max HTML report size reached
19.6 KB
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/wx_object.html
    
Offset 132, 44 lines modifiedOffset 132, 44 lines modified
132 works·like·a·regular·gen_server·module·and·creates·a·server·per·object.</p><p>NOTE:·Currently·no·form·of·inheritance·is·implemented.</p><p>The·user·module·should·export:</p><p>init(Args)·should·return<br/>{wxWindow,·State}·|·{wxWindow,·State,·Timeout}·|·ignore·|·{stop,·Reason}</p><p>Asynchronous·window·event·handling:<br/>handle_event(#wx{},·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>The·user·module·can·export·the·following·callback·functions:</p><p>handle_call(Msg,·{From,·Tag},·State)·should·return<br/>{reply,·Reply,·State}·|·{reply,·Reply,·State,·Timeout}·|·{noreply,·State}132 works·like·a·regular·gen_server·module·and·creates·a·server·per·object.</p><p>NOTE:·Currently·no·form·of·inheritance·is·implemented.</p><p>The·user·module·should·export:</p><p>init(Args)·should·return<br/>{wxWindow,·State}·|·{wxWindow,·State,·Timeout}·|·ignore·|·{stop,·Reason}</p><p>Asynchronous·window·event·handling:<br/>handle_event(#wx{},·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>The·user·module·can·export·the·following·callback·functions:</p><p>handle_call(Msg,·{From,·Tag},·State)·should·return<br/>{reply,·Reply,·State}·|·{reply,·Reply,·State,·Timeout}·|·{noreply,·State}
133 |·{noreply,·State,·Timeout}·|·{stop,·Reason,·Reply,·State}</p><p>handle_cast(Msg,·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·the·above·are·not·exported·but·called,·the·wx_object·process·will·crash.·The133 |·{noreply,·State,·Timeout}·|·{stop,·Reason,·Reply,·State}</p><p>handle_cast(Msg,·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·the·above·are·not·exported·but·called,·the·wx_object·process·will·crash.·The
134 user·module·can·also·export:</p><p>Info·is·message·e.g.·{'EXIT',·P,·R},·{nodedown,·N},·...<br/>handle_info(Info,·State)·should·return·,·...<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·a·message·is·sent·to·the·wx_object·process·when·handle_info·is·not·exported,134 user·module·can·also·export:</p><p>Info·is·message·e.g.·{'EXIT',·P,·R},·{nodedown,·N},·...<br/>handle_info(Info,·State)·should·return·,·...<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·a·message·is·sent·to·the·wx_object·process·when·handle_info·is·not·exported,
135 the·message·will·be·dropped·and·ignored.</p><p>When·stop·is·returned·in·one·of·the·functions·above·with·Reason·=·normal·|135 the·message·will·be·dropped·and·ignored.</p><p>When·stop·is·returned·in·one·of·the·functions·above·with·Reason·=·normal·|
136 shutdown·|·Term,·terminate(State)·is·called.·It·lets·the·user·module·clean·up,136 shutdown·|·Term,·terminate(State)·is·called.·It·lets·the·user·module·clean·up,
137 it·is·always·called·when·server·terminates·or·when·wx_object()·in·the·driver·is137 it·is·always·called·when·server·terminates·or·when·wx_object()·in·the·driver·is
138 deleted.·If·the·Parent·process·terminates·the·Module:terminate/2·function·is138 deleted.·If·the·Parent·process·terminates·the·Module:terminate/2·function·is
139 called.<br/>terminate(Reason,·State)</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7974252863-1">(</span><span·class="ss">myDialog</span><span·class="p"·data-group-id="7974252863-1">)</span><span·class="p">.</span><span·class="w">139 called.<br/>terminate(Reason,·State)</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0064642766-1">(</span><span·class="ss">myDialog</span><span·class="p"·data-group-id="0064642766-1">)</span><span·class="p">.</span><span·class="w">
140 </span><span·class="w">··</span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7974252863-2">(</span><span·class="p"·data-group-id="7974252863-3">[</span><span·class="ss">new</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">show</span><span·class="p">/</span><span[·...·truncated·by·diffoscope;·len:·242,·SHA:·12d6d174ddace8af116c782928ed3b29cdd448f54eea71c5b6c7079103fdf245·...·]-2">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%%·API</span><span·class="w">140 </span><span·class="w">··</span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0064642766-2">(</span><span·class="p"·data-group-id="0064642766-3">[</span><span·class="ss">new</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">show</span><span·class="p">/</span><span[·...·truncated·by·diffoscope;·len:·242,·SHA:·26fb4faf46d49456276b5ffbaaf852637050b1ddbd2253c23e6705766d6036fd·...·]-2">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%%·API</span><span·class="w">
141 </span><span·class="w">··</span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7974252863-4">(</span><span·class="p"·data-group-id="7974252863-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">141 </span><span·class="w">··</span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0064642766-4">(</span><span·class="p"·data-group-id="0064642766-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
142 ···········</span><span·class="ss">handle_info</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="7974252863-5">]</span><span·class="p"·data-group-id="7974252863-4">)</span><span·class="p">.</span><span·class="w">142 ···········</span><span·class="ss">handle_info</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="0064642766-5">]</span><span·class="p"·data-group-id="0064642766-4">)</span><span·class="p">.</span><span·class="w">
143 ···········</span><span·class="ss">new</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">showModal</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">destroy</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">]</span><span·class="p">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%%·Callbacks</span><span·class="w">143 ···········</span><span·class="ss">new</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">showModal</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">destroy</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">]</span><span·class="p">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%%·Callbacks</span><span·class="w">
  
144 ··</span><span·class="c1">%%·Client·API</span><span·class="w">144 ··</span><span·class="c1">%%·Client·API</span><span·class="w">
145 ··</span><span·class="nf">new</span><span·class="p"·data-group-id="7974252863-6">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="7974252863-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">145 ··</span><span·class="nf">new</span><span·class="p"·data-group-id="0064642766-6">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="0064642766-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
146 ·····</span><span·class="nc">wx_object</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7974252863-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7974252863-8">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="n">Id</span><s[·...·truncated·by·diffoscope;·len:·246,·SHA:·aef370fe854d77c673a8dc9ba0a36315367fa46fe9b32461ea617f09b9be5748·...·]-7">)</span><span·class="p">.</span><span·class="w">146 ·····</span><span·class="nc">wx_object</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="0064642766-7">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0064642766-8">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="n">Id</span><s[·...·truncated·by·diffoscope;·len:·246,·SHA:·0b146842c1890d581b4d69f6650b018c96a7af5fd4b8c5c8bfa81affaa0827da·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
147 ··</span><span·class="nf">show</span><span·class="p"·data-group-id="7974252863-10">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="7974252863-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">147 ··</span><span·class="nf">show</span><span·class="p"·data-group-id="0064642766-10">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="0064642766-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
148 ·····</span><span·class="nc">wx_object</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="7974252863-11">(</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">show_modal</span><span·class="p"·data-group-id="7974252863-11">)</span><span·class="p">.</span><span·class="w">148 ·····</span><span·class="nc">wx_object</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="0064642766-11">(</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">show_modal</span><span·class="p"·data-group-id="0064642766-11">)</span><span·class="p">.</span><span·class="w">
  
149 ··</span><span·class="nf">destroy</span><span·class="p"·data-group-id="7974252863-12">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="7974252863-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ··</span><span·class="nf">destroy</span><span·class="p"·data-group-id="0064642766-12">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="0064642766-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 ·····</span><span·class="nc">wx_object</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="7974252863-13">(</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">destroy</span><span·class="p"·data-group-id="7974252863-13">)</span><span·class="p">.</span><span·class="w">150 ·····</span><span·class="nc">wx_object</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="0064642766-13">(</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">destroy</span><span·class="p"·data-group-id="0064642766-13">)</span><span·class="p">.</span><span·class="w">
  
151 ··</span><span·class="c1">%%·Server·Implementation·ala·gen_server</span><span·class="w">151 ··</span><span·class="c1">%%·Server·Implementation·ala·gen_server</span><span·class="w">
152 ··</span><span·class="nf">init</span><span·class="p"·data-group-id="7974252863-14">(</span><span·class="p"·data-group-id="7974252863-15">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Str</span><span·class="p"·data-group-id="7974252863-15">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·103b45571e5df9713ea2e68a064ce6b51b86913714253487d4dae7f607ee6256·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 ··</span><span·class="nf">init</span><span·class="p"·data-group-id="0064642766-14">(</span><span·class="p"·data-group-id="0064642766-15">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Str</span><span·class="p"·data-group-id="0064642766-15">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·42a29ee7e5e867be7f524c34c82366ae5d0db04128a6caf60a7fecbcb8159034·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ·····</span><span·class="n">Dialog</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wxDialog</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="7974252863-16">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Testing&quot;</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·157,·SHA:·320e7f934e1b6bf20f50bfd7127b4907a04779d626a6d2027fa10a94c3cecf2b·...·]-16">)</span><span·class="p">,</span><span·class="w">153 ·····</span><span·class="n">Dialog</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">wxDialog</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0064642766-16">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;Testing&quot;</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·157,·SHA:·5fe79187ac56c716a091e8e97deb813022c31738df765177079853db47d29a20·...·]-16">)</span><span·class="p">,</span><span·class="w">
154 ·····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">154 ·····</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
155 ·····</span><span·class="nc">wxDialog</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="7974252863-18">(</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">command_button_clicked</span><span·class="p"·data-group-id="7974252863-18">)</span><span·class="p">,</span><span·class="w">155 ·····</span><span·class="nc">wxDialog</span><span·class="p">:</span><span·class="nf">connect</span><span·class="p"·data-group-id="0064642766-18">(</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">command_button_clicked</span><span·class="p"·data-group-id="0064642766-18">)</span><span·class="p">,</span><span·class="w">
156 ·····</span><span·class="p"·data-group-id="7974252863-19">{</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyState</span><span·class="p"·data-group-id="7974252863-19">}</span><span·class="p">.</span><span·class="w">156 ·····</span><span·class="p"·data-group-id="0064642766-19">{</span><span·class="n">Dialog</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MyState</span><span·class="p"·data-group-id="0064642766-19">}</span><span·class="p">.</span><span·class="w">
  
157 ··</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="7974252863-20">(</span><span·class="ss">show</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·3e16ccd5bb3a234dcf74cd6f927c2133410fa4bbd05b16d5d6ce0f0a17f266ee·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 ··</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="0064642766-20">(</span><span·class="ss">show</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">From</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·464a91cd843723875e04fc0e1ddf5c90610b3eec0ac98141e14f9f276ca717df·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ·····</span><span·class="nc">wxDialog</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="7974252863-21">(</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">win</span><span·class="p"·data-group-id="7974252863-21">)</span><span·class="p">,</span><span·class="w">158 ·····</span><span·class="nc">wxDialog</span><span·class="p">:</span><span·class="nf">show</span><span·class="p"·data-group-id="0064642766-21">(</span><span·class="n">State</span><span·class="o">#</span><span·class="ss">state</span><span·class="p">.</span><span·class="ss">win</span><span·class="p"·data-group-id="0064642766-21">)</span><span·class="p">,</span><span·class="w">
159 ·····</span><span·class="p"·data-group-id="7974252863-22">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="7974252863-22">}</span><span·class="p">;</span><span·class="w">159 ·····</span><span·class="p"·data-group-id="0064642766-22">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="0064642766-22">}</span><span·class="p">;</span><span·class="w">
160 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">160 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
161 ··</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="7974252863-23">(</span><span·class="o">#</span><span·class="ss">wx</span><span·class="p"·data-group-id="7974252863-24">{</span><span·class="p"·data-group-id="7974252863-24">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·e3408b30b04f719f23a886ae56420a5df24e91838239fdd277bac47742cba2b3·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 ··</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="0064642766-23">(</span><span·class="o">#</span><span·class="ss">wx</span><span·class="p"·data-group-id="0064642766-24">{</span><span·class="p"·data-group-id="0064642766-24">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·52489ab3003759d22b49ba9b5f045437a1b67d5b08b39be770b0dd7f12ce2dea·...·]-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ·····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7974252863-25">(</span><span·class="s">&quot;Users·clicked·button</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7974252863-26">[</span><span·class="p"·data-group-id="7974252863-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·76daf306c58c021685ec9a06f5caad36e8476728aa4c4f423f604fb457d57548·...·]-25">)</span><span·class="p">,</span><span·class="w">162 ·····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0064642766-25">(</span><span·class="s">&quot;Users·clicked·button</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0064642766-26">[</span><span·class="p"·data-group-id="0064642766-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·2290f1dfe40a2528e19dd9b9666483be439009c4d04d036d5242648ad521afc6·...·]-25">)</span><span·class="p">,</span><span·class="w">
163 ·····</span><span·class="p"·data-group-id="7974252863-27">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="7974252863-27">}</span><span·class="p">;</span><span·class="w">163 ·····</span><span·class="p"·data-group-id="0064642766-27">{</span><span·class="ss">noreply</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="0064642766-27">}</span><span·class="p">;</span><span·class="w">
164 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="module-data-types"·class="section-heading">164 ··</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span></code></pre><h2·id="module-data-types"·class="section-heading">
165 ··<a·href="#module-data-types"·class="hover-link">165 ··<a·href="#module-data-types"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">DATA·TYPES</span>168 ··<span·class="text">DATA·TYPES</span>
169 </h2>169 </h2>
170 <ul><li><p><strong><a·href=""·id="type-request_id"></a>·request_id()·=·term()</strong></p></li><li><p><strong><a·href=""·id="type-server_ref"></a>·server_ref()·=170 <ul><li><p><strong><a·href=""·id="type-request_id"></a>·request_id()·=·term()</strong></p></li><li><p><strong><a·href=""·id="type-server_ref"></a>·server_ref()·=
59.7 KB
./usr/share/doc/erlang-doc/html/lib/xmerl-2.1/doc/html/xmerl_examples.html
    
Offset 142, 100 lines modifiedOffset 142, 100 lines modified
142 forms·are·<code·class="inline">{Tag, Fun}</code>,·or·<code·class="inline">{Tag, Fun, LocalState}</code>.·The·second·form·can·be·used142 forms·are·<code·class="inline">{Tag, Fun}</code>,·or·<code·class="inline">{Tag, Fun, LocalState}</code>.·The·second·form·can·be·used
143 to·initialize·the·state·variable·in·question.</p><h4>1.1·User·State</h4><p>All·customization·functions·are·free·to·access·a·&quot;User·state&quot;·variable.·Care143 to·initialize·the·state·variable·in·question.</p><h4>1.1·User·State</h4><p>All·customization·functions·are·free·to·access·a·&quot;User·state&quot;·variable.·Care
144 must·of·course·be·taken·to·coordinate·the·use·of·this·state.·It·is·recommended144 must·of·course·be·taken·to·coordinate·the·use·of·this·state.·It·is·recommended
145 that·functions,·which·do·not·really·have·anything·to·contribute·to·the·&quot;global&quot;145 that·functions,·which·do·not·really·have·anything·to·contribute·to·the·&quot;global&quot;
146 user·state,·use·their·own·state·variable·instead.·Another·option·(used·in·e.g.146 user·state,·use·their·own·state·variable·instead.·Another·option·(used·in·e.g.
147 <code·class="inline">xmerl_eventp.erl</code>)·is·for·customization·functions·to·share·one·of·the·local147 <code·class="inline">xmerl_eventp.erl</code>)·is·for·customization·functions·to·share·one·of·the·local
148 states·(in·<code·class="inline">xmerl_eventp.erl</code>,·the·continuation·function·and·the·fetch·function148 states·(in·<code·class="inline">xmerl_eventp.erl</code>,·the·continuation·function·and·the·fetch·function
149 both·access·the·cont_state.)</p><p>Functions·to·access·user·state:</p><ul><li>··<code·class="inline">xmerl_scan:user_state(GlobalState)</code></li><li>··<code·class="inline">xmerl_scan:user_state(UserState,·GlobalState)</code></li></ul><h4>1.2·Event·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0957465973-1">{</span><span·class="ss">event_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="0957465973-2">(</span><span·class="p"·data-group-id="0957465973-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·2723410b6a9d0cb0155b792a6a907bfc88f54756372a8e2c557f9b1299cdf05c·...·]-3">}</span></code></pre><p>The·event·function·is·called·at·the·beginning·and·at·the·end·of·a·parsed·entity.149 both·access·the·cont_state.)</p><p>Functions·to·access·user·state:</p><ul><li>··<code·class="inline">xmerl_scan:user_state(GlobalState)</code></li><li>··<code·class="inline">xmerl_scan:user_state(UserState,·GlobalState)</code></li></ul><h4>1.2·Event·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7210584165-1">{</span><span·class="ss">event_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7210584165-2">(</span><span·class="p"·data-group-id="7210584165-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·2c57cd896d91fd62bbde2595ad894ed7806824fa3381fa1eb0977f955e7bce6a·...·]-3">}</span></code></pre><p>The·event·function·is·called·at·the·beginning·and·at·the·end·of·a·parsed·entity.
150 It·has·the·following·format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="8098694544-1">(</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="8098694544-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">150 It·has·the·following·format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="2749559732-1">(</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="2749559732-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ···</span><span·class="n">EventState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">event_state</span><span·class="p"·data-group-id="8098694544-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="8098694544-2">)</span><span·class="p">,</span><span·class="w">151 ···</span><span·class="n">EventState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">event_state</span><span·class="p"·data-group-id="2749559732-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="2749559732-2">)</span><span·class="p">,</span><span·class="w">
152 ···</span><span·class="n">EventState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="8098694544-3">(</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventState</span><span·class="p"·data-group-id="8098694544-3">)</span><span·class="p">,</span><span·class="w">152 ···</span><span·class="n">EventState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="2749559732-3">(</span><span·class="n">Event</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EventState</span><span·class="p"·data-group-id="2749559732-3">)</span><span·class="p">,</span><span·class="w">
153 ···</span><span·class="n">GlobalState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">event_state</span><span·class="p"·data-group-id="8098694544-4">(</span><span·class="n">EventState2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="8098694544-4">)</span><span·class="w">153 ···</span><span·class="n">GlobalState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">event_state</span><span·class="p"·data-group-id="2749559732-4">(</span><span·class="n">EventState2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="2749559732-4">)</span><span·class="w">
154 </span><span·class="k">end</span><span·class="p">.</span></code></pre><h4>1.3·Hook·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5361837833-1">{</span><span·class="ss">hook_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5361837833-2">(</span><span·class="p"·data-group-id="5361837833-2">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·491,·SHA:·39922eb417dc8fc7e3857a3837493a4f12aab20cdcdf7982b841e24adc3f68ce·...·]-3">}</span></code></pre><p>The·hook·function·is·called·when·the·processor·has·parsed·a·complete·entity.154 </span><span·class="k">end</span><span·class="p">.</span></code></pre><h4>1.3·Hook·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1891227889-1">{</span><span·class="ss">hook_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1891227889-2">(</span><span·class="p"·data-group-id="1891227889-2">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·491,·SHA:·83b3fc97123d767bb4d320baa3a724a9e4f6be4b7175537a5286ea51acc714f7·...·]-3">}</span></code></pre><p>The·hook·function·is·called·when·the·processor·has·parsed·a·complete·entity.
155 Format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="9003142565-1">(</span><span·class="n">Entity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9003142565-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">155 Format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="5203415538-1">(</span><span·class="n">Entity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5203415538-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
156 ···</span><span·class="n">HookState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">hook_state</span><span·class="p"·data-group-id="9003142565-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9003142565-2">)</span><span·class="p">,</span><span·class="w">156 ···</span><span·class="n">HookState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">hook_state</span><span·class="p"·data-group-id="5203415538-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5203415538-2">)</span><span·class="p">,</span><span·class="w">
157 ···</span><span·class="p"·data-group-id="9003142565-3">{</span><span·class="n">TransformedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HookState2</span><span·class="p"·data-group-id="9003142565-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class=[·...·truncated·by·diffoscope;·len:·242,·SHA:·ebb934ceaad536b4937b15d840622ac4fb0a5e6450cdc91fb1d016c7e6eeb486·...·]-4">)</span><span·class="p">,</span><span·class="w">157 ···</span><span·class="p"·data-group-id="5203415538-3">{</span><span·class="n">TransformedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HookState2</span><span·class="p"·data-group-id="5203415538-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class=[·...·truncated·by·diffoscope;·len:·242,·SHA:·5d463393e570d405eaa1d5bcf9a0caa6f0aad8a6f9941d7210ae2fb81cf1ee2b·...·]-4">)</span><span·class="p">,</span><span·class="w">
158 ···</span><span·class="n">GlobalState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">hook_state</span><span·class="p"·data-group-id="9003142565-5">(</span><span·class="n">HookState2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9003142565-5">)</span><span·class="p">,</span><span·class="w">158 ···</span><span·class="n">GlobalState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">hook_state</span><span·class="p"·data-group-id="5203415538-5">(</span><span·class="n">HookState2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5203415538-5">)</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="9003142565-6">{</span><span·class="n">TransformedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="9003142565-6">}</span><span·class="w">159 ···</span><span·class="p"·data-group-id="5203415538-6">{</span><span·class="n">TransformedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="5203415538-6">}</span><span·class="w">
160 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·relationship·between·the·event·function,·the·hook·function·and·the160 </span><span·class="k">end</span><span·class="p">.</span></code></pre><p>The·relationship·between·the·event·function,·the·hook·function·and·the
161 accumulator·function·is·as·follows:</p><ol><li>·The·event·function·is·first·called·with·an·'ended'·event·for·the·parsed161 accumulator·function·is·as·follows:</p><ol><li>·The·event·function·is·first·called·with·an·'ended'·event·for·the·parsed
162 entity.</li><li>·The·hook·function·is·called,·possibly·re-formatting·the·entity.</li><li>·The·acc·function·is·called·in·order·to·(optionally)·add·the·re-formatted162 entity.</li><li>·The·hook·function·is·called,·possibly·re-formatting·the·entity.</li><li>·The·acc·function·is·called·in·order·to·(optionally)·add·the·re-formatted
163 entity·to·the·contents·of·its·parent·element.</li></ol><h4>1.4·Fetch·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5712720721-1">{</span><span·class="ss">fetch_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="5712720721-2">(</span><span·class="p"·data-group-id="5712720721-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·64d3f47b62d06cb11519b5d91f66d0133c6b61da0cd045b12d2d64ad2febbc20·...·]-3">}</span></code></pre><p>The·fetch·function·is·called·in·order·to·fetch·an·external·resource·(e.g.·a163 entity·to·the·contents·of·its·parent·element.</li></ol><h4>1.4·Fetch·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4609786773-1">{</span><span·class="ss">fetch_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="4609786773-2">(</span><span·class="p"·data-group-id="4609786773-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·8a120b0cf54bf273d604a5ade4d9b477ab48dfb134594139f95155badfbcffb1·...·]-3">}</span></code></pre><p>The·fetch·function·is·called·in·order·to·fetch·an·external·resource·(e.g.·a
164 DTD).</p><p>The·fetch·function·can·respond·with·three·different·return·values:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">164 DTD).</p><p>The·fetch·function·can·respond·with·three·different·return·values:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">
165 ···</span><span·class="p"·data-group-id="4262743875-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4262743875-2">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filename</span>[·...·truncated·by·diffoscope;·len:·179,·SHA:·ec05d58d4e3084d35d46c0cad361f181b51f3fa993c4fed6ba097f8df0425e74·...·]-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">165 ···</span><span·class="p"·data-group-id="6674877882-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6674877882-2">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filename</span>[·...·truncated·by·diffoscope;·len:·179,·SHA:·0b462afc6ff75056e5cfe2d509505674e4e0aae7c0996e762aced60d88c3553c·...·]-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
166 ···</span><span·class="p"·data-group-id="4262743875-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4262743875-4">{</span><span·class="ss">string</span><span·class="p">,</span><span·class="w">·</span><span·class="n">String</span>[·...·truncated·by·diffoscope;·len:·179,·SHA:·bfa837fe66daebcd4940c12b86459ce2a4a8532851e2f3191ffd34116d6e9347·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">166 ···</span><span·class="p"·data-group-id="6674877882-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6674877882-4">{</span><span·class="ss">string</span><span·class="p">,</span><span·class="w">·</span><span·class="n">String</span>[·...·truncated·by·diffoscope;·len:·179,·SHA:·ee9c98b851afc24e4d0a798dc78ecd91c7ab8b9c82d5a340b5be1f06b22cad62·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
167 ···</span><span·class="p"·data-group-id="4262743875-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">not_fetched</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewGlobalState</span><span·class="p"·data-group-id="426274387[·...·truncated·by·diffoscope;·len:·331,·SHA:·31f3e229ca39033982f251acfc0695600900b0aa46f0879575d48be9405ca4e5·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 ···</span><span·class="p"·data-group-id="6674877882-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">not_fetched</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewGlobalState</span><span·class="p"·data-group-id="667487788[·...·truncated·by·diffoscope;·len:·331,·SHA:·0a962ddcb5206c073479160f8ab7db2d146145cf91aabd130bfd194168d84185·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ···</span><span·class="n">FetchState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">fetch_state</span><span·class="p"·data-group-id="1776036482-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="1776036482-2">)</span><span·class="p">,</span><span·class="w">168 ···</span><span·class="n">FetchState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">fetch_state</span><span·class="p"·data-group-id="7368138343-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="7368138343-2">)</span><span·class="p">,</span><span·class="w">
169 ···</span><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="1776036482-3">(</span><span·class="n">URI</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FetchState</span><span·class="p"·data-group-id="1776036482-3">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Result·being·one·of·the·above</span><span·class="w">169 ···</span><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="7368138343-3">(</span><span·class="n">URI</span><span·class="p">,</span><span·class="w">·</span><span·class="n">FetchState</span><span·class="p"·data-group-id="7368138343-3">)</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Result·being·one·of·the·above</span><span·class="w">
170 </span><span·class="k">end</span><span·class="p">.</span></code></pre><h4>1.5·Continuation·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3729154659-1">{</span><span·class="ss">continuation_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3729154659-2">(</span><span·class="p"·data-group-id="3729154659-2">)</span><span·class="[·...·truncated·by·diffoscope;·len:·514,·SHA:·a624a28e7f50195ca4345c3347cc98041431dbb4bb7c488ba50bff700aab9a3c·...·]9-3">}</span></code></pre><p>The·continuation·function·is·called·when·the·parser·encounters·the·end·of·the170 </span><span·class="k">end</span><span·class="p">.</span></code></pre><h4>1.5·Continuation·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9473522199-1">{</span><span·class="ss">continuation_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9473522199-2">(</span><span·class="p"·data-group-id="9473522199-2">)</span><span·class="[·...·truncated·by·diffoscope;·len:·514,·SHA:·72314ca6af87c0d67a786adc6d47c08cb0f73bc6c2c66521c40351ccaf9a909c·...·]9-3">}</span></code></pre><p>The·continuation·function·is·called·when·the·parser·encounters·the·end·of·the
171 byte·stream.·Format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="9201120630-1">(</span><span·class="n">Continue</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Exception</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9201120630-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 byte·stream.·Format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="5991105426-1">(</span><span·class="n">Continue</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Exception</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5991105426-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ···</span><span·class="n">ContState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">cont_state</span><span·class="p"·data-group-id="9201120630-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9201120630-2">)</span><span·class="p">,</span><span·class="w">172 ···</span><span·class="n">ContState</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">cont_state</span><span·class="p"·data-group-id="5991105426-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5991105426-2">)</span><span·class="p">,</span><span·class="w">
173 ···</span><span·class="p"·data-group-id="9201120630-3">{</span><span·class="n">Result</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContState2</span><span·class="p"·data-group-id="9201120630-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·165,·SHA:·eb94fd45e2c11f246a561808c11a575eed3e07094247ba7fbec73796e8471f57·...·]-4">)</span><span·class="p">,</span><span·class="w">173 ···</span><span·class="p"·data-group-id="5991105426-3">{</span><span·class="n">Result</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContState2</span><span·class="p"·data-group-id="5991105426-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·165,·SHA:·19feece8dc52fea7d39287bb172359f53cc3d5e149194a3284767063ff5321cb·...·]-4">)</span><span·class="p">,</span><span·class="w">
174 ···</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Result</span><span·class="w">·</span><span·class="k">of</span><span·class="w">174 ···</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Result</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
175 ······</span><span·class="p"·data-group-id="9201120630-5">[</span><span·class="p"·data-group-id="9201120630-5">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ······</span><span·class="p"·data-group-id="5991105426-5">[</span><span·class="p"·data-group-id="5991105426-5">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ·········</span><span·class="n">GlobalState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">cont_state</span><span·class="p"·data-group-id="9201120630-6">(</span><span·class="n">ContState2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9201120630-6">)</span><span·class="p">,</span><span·class="w">176 ·········</span><span·class="n">GlobalState2</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">cont_state</span><span·class="p"·data-group-id="5991105426-6">(</span><span·class="n">ContState2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5991105426-6">)</span><span·class="p">,</span><span·class="w">
177 ·········</span><span·class="n">Exception</span><span·class="p"·data-group-id="9201120630-7">(</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="9201120630-7">)</span><span·class="p">;</span><span·class="w">177 ·········</span><span·class="n">Exception</span><span·class="p"·data-group-id="5991105426-7">(</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="5991105426-7">)</span><span·class="p">;</span><span·class="w">
178 ······</span><span·class="n">MoreBytes</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 ······</span><span·class="n">MoreBytes</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ·········</span><span·class="p"·data-group-id="9201120630-8">{</span><span·class="n">MoreBytes2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rest</span><span·class="p"·data-group-id="9201120630-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·171,·SHA:·b8e1f8d72c804e3471de36f41c8ed68d69a20381c4f9acb46804bab470510be1·...·]-9">)</span><span·class="p">,</span><span·class="w">179 ·········</span><span·class="p"·data-group-id="5991105426-8">{</span><span·class="n">MoreBytes2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rest</span><span·class="p"·data-group-id="5991105426-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·171,·SHA:·bc059809cd43a089c43fbf9b2c242dfb389d161324d4e44b29029fce4c4cce33·...·]-9">)</span><span·class="p">,</span><span·class="w">
180 ·········</span><span·class="n">ContState3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">update_cont_state</span><span·class="p"·data-group-id="9201120630-10">(</span><span·class="n">Rest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContState2</span><span·class="p"·data-group-id="9201120630-10">)</span><span·class="p">,</span><span·class="w">180 ·········</span><span·class="n">ContState3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">update_cont_state</span><span·class="p"·data-group-id="5991105426-10">(</span><span·class="n">Rest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContState2</span><span·class="p"·data-group-id="5991105426-10">)</span><span·class="p">,</span><span·class="w">
181 ·········</span><span·class="n">GlobalState3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">cont_state</span><span·class="p"·data-group-id="9201120630-11">(</span><span·class="n">ContState3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9201120630-11">)</span><span·class="p">,</span><span·class="w">181 ·········</span><span·class="n">GlobalState3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">cont_state</span><span·class="p"·data-group-id="5991105426-11">(</span><span·class="n">ContState3</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5991105426-11">)</span><span·class="p">,</span><span·class="w">
182 ·········</span><span·class="n">Continue</span><span·class="p"·data-group-id="9201120630-12">(</span><span·class="n">MoreBytes2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState3</span><span·class="p"·data-group-id="9201120630-12">)</span><span·class="w">182 ·········</span><span·class="n">Continue</span><span·class="p"·data-group-id="5991105426-12">(</span><span·class="n">MoreBytes2</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState3</span><span·class="p"·data-group-id="5991105426-12">)</span><span·class="w">
183 ···</span><span·class="k">end</span><span·class="w">183 ···</span><span·class="k">end</span><span·class="w">
184 </span><span·class="k">end</span><span·class="p">.</span></code></pre><h4>1.6·Rules·Functions</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9161712202-1">{</span><span·class="ss">rules</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReadFun</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9161712202-2">(</span><span·class="p"·data-group-id="9161712202-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">WriteFun</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9161712202-3">(</span><span·class="p"·data-group-id="9161712202-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RulesState</span><span·class="p"·data-group-id="9161712202-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
185 </span><span·class="p"·data-group-id="9161712202-4">{</span><span·class="ss">rules</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Table</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">ets</span><span·class=[·...·truncated·by·diffoscope;·len:·234,·SHA:·208f16d235ab4590e3b1e3b0003fc813a8eb90fa417aeebca32ef461970fa64d·...·]184 </span><span·class="k">end</span><span·class="p">.</span></code></pre><h4>1.6·Rules·Functions</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4828006900-1">{</span><span·class="ss">rules</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·717,·SHA:·182c434f7b7c46db44c3125f291d46502820bde228c4c63b7a85b4d032b495a2·...·]
 185 </span><span·class="p"·data-group-id="4828006900-4">{</span><span·class="ss">rules</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Table</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">ets</span><span·class="p"·data-group-id="4828006900-5">(</span><span·class="p"·data-group-id="4828006900-5">)</span><span·class="p"·data-group-id="4828006900-4">}</span></code></pre><p>The·rules·functions·take·care·of·storing·scanner·information·in·a·rules
186 database.·User-provided·rules·functions·may·opt·to·store·the·information·in186 database.·User-provided·rules·functions·may·opt·to·store·the·information·in
187 mnesia,·or·perhaps·in·the·user_state(RulesState).</p><p>The·following·modes·exist:</p><ul><li>··If·the·user·doesn't·specify·an·option,·the·scanner·creates·an·ets·table,·and187 mnesia,·or·perhaps·in·the·user_state(RulesState).</p><p>The·following·modes·exist:</p><ul><li>··If·the·user·doesn't·specify·an·option,·the·scanner·creates·an·ets·table,·and
188 uses·built-in·functions·to·read·and·write·data·to·it.·When·the·scanner·is188 uses·built-in·functions·to·read·and·write·data·to·it.·When·the·scanner·is
189 done,·the·ets·table·is·deleted.</li><li>··If·the·user·specifies·an·ets·table·via·the·<code·class="inline">{rules, Table}</code>·option,·the189 done,·the·ets·table·is·deleted.</li><li>··If·the·user·specifies·an·ets·table·via·the·<code·class="inline">{rules, Table}</code>·option,·the
190 scanner·uses·this·table.·When·the·scanner·is·done,·it·does·<em>not</em>·delete·the190 scanner·uses·this·table.·When·the·scanner·is·done,·it·does·<em>not</em>·delete·the
191 table.</li><li>··If·the·user·specifies·read·and·write·functions,·the·scanner·will·use·them191 table.</li><li>··If·the·user·specifies·read·and·write·functions,·the·scanner·will·use·them
192 instead.</li></ul><p>The·format·for·the·read·and·write·functions·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="n">WriteFun</span><span·class="p"·data-group-id="9713784103-1">(</span><span·class="n">Context</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Definition</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·76,·SHA:·ca0079101af523e3e7263566278e116977ba5e0d91aee37189f9e8d3b42069a6·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">NewScannerState</span><span·class="p">.</span><span·class="w">192 instead.</li></ul><p>The·format·for·the·read·and·write·functions·are·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="n">WriteFun</span><span·class="p"·data-group-id="4304155056-1">(</span><span·class="n">Context</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Definition</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·76,·SHA:·2aff2da7061c37626328f12be4ffbeea292427c933342c7e543ff3df2e7a201c·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">NewScannerState</span><span·class="p">.</span><span·class="w">
193 ·</span><span·class="n">ReadFun</span><span·class="p"·data-group-id="9713784103-2">(</span><span·class="n">Context</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ScannerState</span><span·class="p"·data-group-id="9713784103-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Definition</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">.</span></code></pre><p>Here·is·a·summary·of·the·data·objects·currently·being·written·by·the·scanner:</p><table><thead><tr><th·style="text-align:·left;">Context</th><th·style="text-align:·left;">Key·Value</th><th·style="text-align:·left;">Definition</th></tr></thead><tbody><tr><td·style="text-align:·left;">notation</td><td·style="text-align:·left;">NotationName</td><td·style="text-align:·left;"><code·class="inline">{system, SL}·|·{public, PIDL, SL}</code></td></tr><tr><td·style="text-align:·left;">elem_def</td><td·style="text-align:·left;">ElementName</td><td·style="text-align:·left;"><code·class="inline">#xmlElement{content·=·ContentSpec}</code></td></tr><tr><td·style="text-align:·left;">parameter_entity</td><td·style="text-align:·left;">PEName</td><td·style="text-align:·left;"><code·class="inline">PEDef</code></td></tr><tr><td·style="text-align:·left;">entity</td><td·style="text-align:·left;">EntityName</td><td·style="text-align:·left;"><code·class="inline">EntityDef</code></td></tr></tbody></table><p><strong>·Table·1:</strong>·Scanner·data·objects</p><p>where</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ContentSpec</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">empty</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">any</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">ElemContent</span><span·class="w">193 ·</span><span·class="n">ReadFun</span><span·class="p"·data-group-id="4304155056-2">(</span><span·class="n">Context</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ScannerState</span><span·class="p"·data-group-id="4304155056-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Definition</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">.</span></code></pre><p>Here·is·a·summary·of·the·data·objects·currently·being·written·by·the·scanner:</p><table><thead><tr><th·style="text-align:·left;">Context</th><th·style="text-align:·left;">Key·Value</th><th·style="text-align:·left;">Definition</th></tr></thead><tbody><tr><td·style="text-align:·left;">notation</td><td·style="text-align:·left;">NotationName</td><td·style="text-align:·left;"><code·class="inline">{system, SL}·|·{public, PIDL, SL}</code></td></tr><tr><td·style="text-align:·left;">elem_def</td><td·style="text-align:·left;">ElementName</td><td·style="text-align:·left;"><code·class="inline">#xmlElement{content·=·ContentSpec}</code></td></tr><tr><td·style="text-align:·left;">parameter_entity</td><td·style="text-align:·left;">PEName</td><td·style="text-align:·left;"><code·class="inline">PEDef</code></td></tr><tr><td·style="text-align:·left;">entity</td><td·style="text-align:·left;">EntityName</td><td·style="text-align:·left;"><code·class="inline">EntityDef</code></td></tr></tbody></table><p><strong>·Table·1:</strong>·Scanner·data·objects</p><p>where</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ContentSpec</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">empty</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">any</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">ElemContent</span><span·class="w">
194 </span><span·class="n">ElemContent</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="p"·data-group-id="0808739663-1">{</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Elems</span><span·class="p"·data-group-id="0808739663-1">}</span><span·class="w">194 </span><span·class="n">ElemContent</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="p"·data-group-id="8979625017-1">{</span><span·class="n">Mode</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Elems</span><span·class="p"·data-group-id="8979625017-1">}</span><span·class="w">
195 </span><span·class="n">Mode</span><span·class="w">········</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">seq</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">choice</span><span·class="w">195 </span><span·class="n">Mode</span><span·class="w">········</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">seq</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">choice</span><span·class="w">
196 </span><span·class="n">Elems</span><span·class="w">·······</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="p"·data-group-id="0808739663-2">[</span><span·class="n">Elem</span><span·class="p"·data-group-id="0808739663-2">]</span><span·class="w">196 </span><span·class="n">Elems</span><span·class="w">·······</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="p"·data-group-id="8979625017-2">[</span><span·class="n">Elem</span><span·class="p"·data-group-id="8979625017-2">]</span><span·class="w">
197 </span><span·class="n">Elem</span><span·class="w">········</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">&#39;#PCDATA&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">ElemContent</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="0808739663-3">{</span><span·class="n">Occurrence</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Elems</span><span·class="p"·data-group-id="0808739663-3">}</span><span·class="w">197 </span><span·class="n">Elem</span><span·class="w">········</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">&#39;#PCDATA&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Name</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">ElemContent</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8979625017-3">{</span><span·class="n">Occurrence</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Elems</span><span·class="p"·data-group-id="8979625017-3">}</span><span·class="w">
198 </span><span·class="n">Occurrence</span><span·class="w">··</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">&#39;*&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;?&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;+&#39;</span></code></pre><p>NOTE:·<em>When·&lt;Elem&gt;·is·not·wrapped·with·&lt;Occurrence&gt;,·(Occurrence·=·once)·is198 </span><span·class="n">Occurrence</span><span·class="w">··</span><span·class="p">:</span><span·class="p">:=</span><span·class="w">·</span><span·class="ss">&#39;*&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;?&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="ss">&#39;+&#39;</span></code></pre><p>NOTE:·<em>When·&lt;Elem&gt;·is·not·wrapped·with·&lt;Occurrence&gt;,·(Occurrence·=·once)·is
199 implied.</em></p><h4>1.7·Accumulator·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2158787824-1">{</span><span·class="ss">acc_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="2158787824-2">(</span><span·class="p"·data-group-id="2158787824-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·c6ca3052e1c97057e3cfc39a923ab127a88df22c59fa7b19660ea4fe5ccdabbe·...·]-1">}</span></code></pre><p>The·accumulator·function·is·called·to·accumulate·the·contents·of·an·entity.When199 implied.</em></p><h4>1.7·Accumulator·Function</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3870242157-1">{</span><span·class="ss">acc_fun</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3870242157-2">(</span><span·class="p"·data-group-id="3870242157-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·36e135199be53ee63d9a7737fb9346d0c2919692ecf7b0e74e1852bdc8393cce·...·]-1">}</span></code></pre><p>The·accumulator·function·is·called·to·accumulate·the·contents·of·an·entity.When
200 parsing·very·large·files,·it·may·not·be·desirable·to·do·so.In·this·case,·an·acc200 parsing·very·large·files,·it·may·not·be·desirable·to·do·so.In·this·case,·an·acc
201 function·can·be·provided·that·simply·doesn't·accumulate.</p><p>Note·that·it·is·possible·to·even·modify·the·parsed·entity·before·accumulating201 function·can·be·provided·that·simply·doesn't·accumulate.</p><p>Note·that·it·is·possible·to·even·modify·the·parsed·entity·before·accumulating
202 it,·but·this·must·be·done·with·care.·xmerl_scan·performs·post-processing·of·the202 it,·but·this·must·be·done·with·care.·xmerl_scan·performs·post-processing·of·the
203 element·for·namespace·management.·Thus,·the·element·must·keep·its·original203 element·for·namespace·management.·Thus,·the·element·must·keep·its·original
204 structure·for·this·to·work.</p><p>The·acc·function·has·the·following·format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·default·accumulating·acc·fun</span><span·class="w">204 structure·for·this·to·work.</p><p>The·acc·function·has·the·following·format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·default·accumulating·acc·fun</span><span·class="w">
205 </span><span·class="nf">fun</span><span·class="p"·data-group-id="0598909676-1">(</span><span·class="n">ParsedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="0598909676-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 </span><span·class="nf">fun</span><span·class="p"·data-group-id="7535739805-1">(</span><span·class="n">ParsedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="7535739805-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ···</span><span·class="p"·data-group-id="0598909676-2">{</span><span·class="p"·data-group-id="0598909676-3">[</span><span·class="n">ParsedEntity</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="0598909676-3">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·80,·SHA:·1378d5e91dc1c39feecbefdffe387fa1c45c5701d321526f291cd544d9b3e5a7·...·]-2">}</span><span·class="p">.</span><span·class="w">206 ···</span><span·class="p"·data-group-id="7535739805-2">{</span><span·class="p"·data-group-id="7535739805-3">[</span><span·class="n">ParsedEntity</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="7535739805-3">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·80,·SHA:·ade9974ac2590db2116292c0c0a2852237a86d63cbf7511ce62687c4ae303808·...·]-2">}</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="c1">%%·non-accumulating·acc·fun</span><span·class="w">207 </span><span·class="c1">%%·non-accumulating·acc·fun</span><span·class="w">
208 </span><span·class="nf">fun</span><span·class="p"·data-group-id="0598909676-4">(</span><span·class="n">ParsedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="0598909676-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 </span><span·class="nf">fun</span><span·class="p"·data-group-id="7535739805-4">(</span><span·class="n">ParsedEntity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="7535739805-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ···</span><span·class="p"·data-group-id="0598909676-5">{</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="0598909676-5">}</span><span·class="p">.</span></code></pre><h4>1.8·Close·Function</h4><p>The·close·function·is·called·when·a·document·(either·the·main·document·or·an209 ···</span><span·class="p"·data-group-id="7535739805-5">{</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="7535739805-5">}</span><span·class="p">.</span></code></pre><h4>1.8·Close·Function</h4><p>The·close·function·is·called·when·a·document·(either·the·main·document·or·an
210 external·DTD)·has·been·completely·parsed.·When·xmerl_scan·was·started·using210 external·DTD)·has·been·completely·parsed.·When·xmerl_scan·was·started·using
211 <code·class="inline">xmerl_scan:file/[1,2]</code>,·the·file·will·be·read·in·full,·and·closed·immediately,211 <code·class="inline">xmerl_scan:file/[1,2]</code>,·the·file·will·be·read·in·full,·and·closed·immediately,
212 before·the·parsing·starts,·so·when·the·close·function·is·called,·it·will·not212 before·the·parsing·starts,·so·when·the·close·function·is·called,·it·will·not
213 need·to·actually·close·the·file.·In·this·case,·the·close·function·will·be·a·good213 need·to·actually·close·the·file.·In·this·case,·the·close·function·will·be·a·good
214 place·to·modify·the·state·variables.</p><p>Format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="5359984285-1">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5359984285-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 place·to·modify·the·state·variables.</p><p>Format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="4589906563-1">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="4589906563-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ···</span><span·class="n">GlobalState1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·state·variables·may·be·altered</span></code></pre><h3·id="2-examples"·class="section-heading">215 ···</span><span·class="n">GlobalState1</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·state·variables·may·be·altered</span></code></pre><h3·id="2-examples"·class="section-heading">
216 ··<a·href="#2-examples"·class="hover-link">216 ··<a·href="#2-examples"·class="hover-link">
217 ····<i·class="ri-link-m"·aria-hidden="true"></i>217 ····<i·class="ri-link-m"·aria-hidden="true"></i>
218 ··</a>218 ··</a>
219 ··<span·class="text">2·Examples</span>219 ··<span·class="text">2·Examples</span>
220 </h3>220 </h3>
221 <p>See·<code·class="inline">xmerl_test.erl</code>·for·more·examples.</p><h4>2.1·Handling·spaces</h4><p>The·following·sample·program·illustrates·three·ways·of·scanning·a·document:</p><ol><li>·the·default·scan,·which·leaves·whitespace·untouched</li><li>·normalizing·spaces</li><li>·normalizing·spaces,·then·removing·text·elements·that·only·contain·one·space.</li></ol><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8888891736-1">(</span><span·class="ss">tmp</span><span·class="p"·data-group-id="8888891736-1">)</span><span·class="p">.</span><span·class="w">221 <p>See·<code·class="inline">xmerl_test.erl</code>·for·more·examples.</p><h4>2.1·Handling·spaces</h4><p>The·following·sample·program·illustrates·three·ways·of·scanning·a·document:</p><ol><li>·the·default·scan,·which·leaves·whitespace·untouched</li><li>·normalizing·spaces</li><li>·normalizing·spaces,·then·removing·text·elements·that·only·contain·one·space.</li></ol><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8159700120-1">(</span><span·class="ss">tmp</span><span·class="p"·data-group-id="8159700120-1">)</span><span·class="p">.</span><span·class="w">
222 </span><span·class="w">222 </span><span·class="w">
223 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="8888891736-2">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="8888891736-2">)</span><span·class="p">.</span><span·class="w">223 </span><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="8159700120-2">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="8159700120-2">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="w">224 </span><span·class="w">
225 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8888891736-3">(</span><span·class="p"·data-group-id="8888891736-4">[</span><span·class="ss">file1</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file2</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·242,·SHA:·d2cc130ec8a88db8176a4edf242779c70c410ceb2ff9f7f4181bc374ea319e99·...·]-3">)</span><span·class="p">.</span><span·class="w">225 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8159700120-3">(</span><span·class="p"·data-group-id="8159700120-4">[</span><span·class="ss">file1</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file2</span><span·class="p">/</span><sp[·...·truncated·by·diffoscope;·len:·242,·SHA:·e33744aabf11f1fd88745139f827d896519634e8c4ec76ad150d8e56c691575f·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
226 </span><span·class="nf">file1</span><span·class="p"·data-group-id="8888891736-5">(</span><span·class="n">F</span><span·class="p"·data-group-id="8888891736-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">file</s[·...·truncated·by·diffoscope;·len:·122,·SHA:·19c2223e3967f61abe178d44123c895250af1aefcb115b07f50a1811916c8cf1·...·]-6">)</span><span·class="p">.</span><span·class="w">226 </span><span·class="nf">file1</span><span·class="p"·data-group-id="8159700120-5">(</span><span·class="n">F</span><span·class="p"·data-group-id="8159700120-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">file</s[·...·truncated·by·diffoscope;·len:·122,·SHA:·5b7895bf877a8cacc397a0452c608b0fdd49c278b4fdbaf27e5005e08392ef74·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">file2</span><span·class="p"·data-group-id="8888891736-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="8888891736-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">file</s[·...·truncated·by·diffoscope;·len:·470,·SHA:·0938606f768690572bf8a00c7c6dbcc3c6327488eccf6ef005bfdd794ad8bd60·...·]-8">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="nf">file2</span><span·class="p"·data-group-id="8159700120-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="8159700120-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">file</s[·...·truncated·by·diffoscope;·len:·470,·SHA:·cc313ae2971006302e654a91126d5c19f3fb00210afce9d70896d61e3e3caab2·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
228 </span><span·class="nf">file3</span><span·class="p"·data-group-id="8888891736-11">(</span><span·class="n">F</span><span·class="p"·data-group-id="8888891736-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·887,·SHA:·3c6586927bca71f0fccdedd6dc95ba88b7034f8ec5f2a791e2d1bbddf51eec85·...·]-14">{</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><span·class="p">,</span><span·class="w">228 </span><span·class="nf">file3</span><span·class="p"·data-group-id="8159700120-11">(</span><span·class="n">F</span><span·class="p"·data-group-id="8159700120-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·887,·SHA:·14ebc41947e3c68e19447d22855503b6dd707ff24042855c1eec164ee2999bd7·...·]-14">{</span><span·class="n">Acc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><span·class="p">,</span><span·class="w">
229 </span><span·class="n">S</span><span·class="p"·data-group-id="8888891736-14">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·new·return·format·(X,·Acc,·S)·-&gt;·{[X|Acc],·S}·end,·xmerl_scan:file(F,</span><span·class="w">229 </span><span·class="n">S</span><span·class="p"·data-group-id="8159700120-14">}</span><span·class="p">;</span><span·class="w">·</span><span·class="c1">%·new·return·format·(X,·Acc,·S)·-&gt;·{[X|Acc],·S}·end,·xmerl_scan:file(F,</span><span·class="w">
230 </span><span·class="p"·data-group-id="8888891736-15">[</span><span·class="p"·data-group-id="8888891736-16">{</span><span·class="ss">space</span><span·class="p">,</span><span·class="ss">normalize</span><span·class="p"·data-group-id="8888891736-16">}</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·262,·SHA:·c62880f1b14b43c639cdb0f8b3c82170b924417cf0d9aaab632a1dc2795a3ec5·...·]-15">]</span><span·class="p">)</span><span·class="p">.</span></code></pre>230 </span><span·class="p"·data-group-id="8159700120-15">[</span><span·class="p"·data-group-id="8159700120-16">{</span><span·class="ss">space</span><span·class="p">,</span><span·class="ss">normalize</span><span·class="p"·data-group-id="8159700120-16">}</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·262,·SHA:·208004b8151c3155d4c624b2f6cbbfb670702eaa1d2c62058c238efe2f343712·...·]-15">]</span><span·class="p">)</span><span·class="p">.</span></code></pre>
231 </div>231 </div>
  
232 <div·class="bottom-actions"·id="bottom-actions">232 <div·class="bottom-actions"·id="bottom-actions">
233 ··<div·class="bottom-actions-item">233 ··<div·class="bottom-actions-item">
  
234 ······<a·href="xmerl_ug.html"·class="bottom-actions-button"·rel="prev">234 ······<a·href="xmerl_ug.html"·class="bottom-actions-button"·rel="prev">
235 ········<span·class="subheader">235 ········<span·class="subheader">
159 KB
./usr/share/doc/erlang-doc/html/lib/xmerl-2.1/doc/html/xmerl_ug.html
    
Offset 189, 24 lines modifiedOffset 189, 24 lines modified
189 first·element·in·each·tuple·is·the·name·of·the·parent·element.·The·list·is·in189 first·element·in·each·tuple·is·the·name·of·the·parent·element.·The·list·is·in
190 reverse·order.</p><p>The·record·<code·class="inline">#xmlAttribute{}</code>·holds·the·name·and·value·of·an·attribute190 reverse·order.</p><p>The·record·<code·class="inline">#xmlAttribute{}</code>·holds·the·name·and·value·of·an·attribute
191 in·the·fields·<code·class="inline">name</code>·and·<code·class="inline">value</code>.·All·attributes·of·an·element·is·a·list·of191 in·the·fields·<code·class="inline">name</code>·and·<code·class="inline">value</code>.·All·attributes·of·an·element·is·a·list·of
192 <code·class="inline">#xmlAttribute{}</code>·in·the·field·<code·class="inline">attributes</code>·of·the·<code·class="inline">#xmlElement{}</code>·record.</p><p>The·<code·class="inline">content</code>·field·of·the·top·element·is·a·list·of·records·that·shows·the192 <code·class="inline">#xmlAttribute{}</code>·in·the·field·<code·class="inline">attributes</code>·of·the·<code·class="inline">#xmlElement{}</code>·record.</p><p>The·<code·class="inline">content</code>·field·of·the·top·element·is·a·list·of·records·that·shows·the
193 structure·and·data·of·the·document.·If·it·is·a·simple·document·like:</p><pre><code·class="text">&lt;?xml·version=&quot;1.0&quot;?&gt;193 structure·and·data·of·the·document.·If·it·is·a·simple·document·like:</p><pre><code·class="text">&lt;?xml·version=&quot;1.0&quot;?&gt;
194 &lt;dog&gt;194 &lt;dog&gt;
195 Grand·Danois195 Grand·Danois
196 &lt;/dog&gt;</code></pre><p>The·parse·result·will·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="5033079812-1">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">dog</span><span·class="p">,</span><span·class="w">196 &lt;/dog&gt;</code></pre><p>The·parse·result·will·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="4305002612-1">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">dog</span><span·class="p">,</span><span·class="w">
197 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">197 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
198 ············</span><span·class="ss">parents</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5033079812-2">[</span><span·class="p"·data-group-id="5033079812-2">]</span><span·class="p">,</span><span·class="w">198 ············</span><span·class="ss">parents</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4305002612-2">[</span><span·class="p"·data-group-id="4305002612-2">]</span><span·class="p">,</span><span·class="w">
199 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">199 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
200 ············</span><span·class="ss">attributes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5033079812-3">[</span><span·class="p"·data-group-id="5033079812-3">]</span><span·class="p">,</span><span·class="w">200 ············</span><span·class="ss">attributes</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4305002612-3">[</span><span·class="p"·data-group-id="4305002612-3">]</span><span·class="p">,</span><span·class="w">
201 ············</span><span·class="ss">content</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5033079812-4">[</span><span·class="p"·data-group-id="5033079812-5">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="5033079812-6">[</span><span·class="p"·data-group-id="5033079812-7">{</span><span·class="ss">dog[·...·truncated·by·diffoscope;·len:·327,·SHA:·477566d41a0ca861316414446976a62de359dc3374ce49b667af4d70241a83dc·...·]12-8">]</span><span·class="p">,</span><span·class="s">&quot;\201 ············</span><span·class="ss">content</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4305002612-4">[</span><span·class="p"·data-group-id="4305002612-5">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="4305002612-6">[</span><span·class="p"·data-group-id="4305002612-7">{</span><span·class="ss">dog[·...·truncated·by·diffoscope;·len:·327,·SHA:·17ba5743b469d904b2d36feea1e9c1c9848eadf689d3cad380e109d983b2a1fe·...·]12-8">]</span><span·class="p">,</span><span·class="s">&quot;\
202 Grand·Danois\202 Grand·Danois\
203 &quot;</span><span·class="p">,</span><span·class="ss">text</span><span·class="p"·data-group-id="5033079812-5">}</span><span·class="p"·data-group-id="5033079812-4">]</span><span·class="p">,</span><span·class="w">203 &quot;</span><span·class="p">,</span><span·class="ss">text</span><span·class="p"·data-group-id="4305002612-5">}</span><span·class="p"·data-group-id="4305002612-4">]</span><span·class="p">,</span><span·class="w">
204 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">204 ············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
205 ············</span><span·class="p"·data-group-id="5033079812-1">}</span></code></pre><p>Where·the·content·of·the·top·element·is:205 ············</span><span·class="p"·data-group-id="4305002612-1">}</span></code></pre><p>Where·the·content·of·the·top·element·is:
206 <code·class="inline">[{xmlText,[{dog,1}],1,[],&quot;\·Grand·Danois\·&quot;,text}]</code>.·Text·will·be·returned·in206 <code·class="inline">[{xmlText,[{dog,1}],1,[],&quot;\·Grand·Danois\·&quot;,text}]</code>.·Text·will·be·returned·in
207 <code·class="inline">xmlText</code>·records.·Though,·usually·documents·are·more·complex,·and·the·content207 <code·class="inline">xmlText</code>·records.·Though,·usually·documents·are·more·complex,·and·the·content
208 of·the·top·element·will·in·that·case·be·a·nested·structure·with·<code·class="inline">#xmlElement{}</code>208 of·the·top·element·will·in·that·case·be·a·nested·structure·with·<code·class="inline">#xmlElement{}</code>
209 records·that·in·turn·may·have·complex·content.·All·of·this·reflects·the209 records·that·in·turn·may·have·complex·content.·All·of·this·reflects·the
210 structure·of·the·XML·document.</p><p>Space·characters·between·mark-up·as·<code·class="inline">space</code>,·<code·class="inline">tab</code>·and·<code·class="inline">line·feed</code>·are210 structure·of·the·XML·document.</p><p>Space·characters·between·mark-up·as·<code·class="inline">space</code>,·<code·class="inline">tab</code>·and·<code·class="inline">line·feed</code>·are
211 normalized·and·returned·as·xmlText·records.</p><h3·id="errors"·class="section-heading">211 normalized·and·returned·as·xmlText·records.</p><h3·id="errors"·class="section-heading">
212 ··<a·href="#errors"·class="hover-link">212 ··<a·href="#errors"·class="hover-link">
Offset 267, 49 lines modifiedOffset 267, 49 lines modified
  
267 &lt;!--·Date·of·the·format·yyyy.mm.dd·--&gt;267 &lt;!--·Date·of·the·format·yyyy.mm.dd·--&gt;
268 &lt;!ELEMENT·date··············(#PCDATA)&gt;268 &lt;!ELEMENT·date··············(#PCDATA)&gt;
269 &lt;!ATTLIST··bike·year·NMTOKEN·#REQUIRED269 &lt;!ATTLIST··bike·year·NMTOKEN·#REQUIRED
270 ················color·NMTOKENS·#REQUIRED270 ················color·NMTOKENS·#REQUIRED
271 ················condition·(useless·|·bad·|·serviceable·|·moderate·|·good·|271 ················condition·(useless·|·bad·|·serviceable·|·moderate·|·good·|
272 ···························excellent·|·new·|·outstanding)·&quot;excellent&quot;·&gt;</code></pre><p>If·you·want·to·parse·the·XML·file·motorcycles.xml·you·run·it·in·the·Erlang·shell272 ···························excellent·|·new·|·outstanding)·&quot;excellent&quot;·&gt;</code></pre><p>If·you·want·to·parse·the·XML·file·motorcycles.xml·you·run·it·in·the·Erlang·shell
273 like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="p"·data-group-id="8634917195-1">{</span><span·class="n">ParseResult</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="8634917195-1">}</span><span·class="o">=</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="n[·...·truncated·by·diffoscope;·len:·158,·SHA:·5d83775e0c2d9fd94084c4c6d677e32ad511da927e1c0926d4a2516072609d8d·...·]-2">)</span><span·class="p">.</span><span·class="w">273 like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="p"·data-group-id="4054181558-1">{</span><span·class="n">ParseResult</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="4054181558-1">}</span><span·class="o">=</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="n[·...·truncated·by·diffoscope;·len:·158,·SHA:·14ab45bab7336bb1ec3423143ce00c0e170a57a86876e5ed7e841d68e5294e5b·...·]-2">)</span><span·class="p">.</span><span·class="w">
274 </span><span·class="p"·data-group-id="8634917195-3">{</span><span·class="p"·data-group-id="8634917195-4">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="w">274 </span><span·class="p"·data-group-id="4054181558-3">{</span><span·class="p"·data-group-id="4054181558-4">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="w">
275 ·············</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="w">275 ·············</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="w">
276 ·············</span><span·class="p"·data-group-id="8634917195-5">[</span><span·class="p"·data-group-id="8634917195-5">]</span><span·class="p">,</span><span·class="w">276 ·············</span><span·class="p"·data-group-id="4054181558-5">[</span><span·class="p"·data-group-id="4054181558-5">]</span><span·class="p">,</span><span·class="w">
277 ·············</span><span·class="p"·data-group-id="8634917195-6">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-7">[</span><span·class="p"·data-group-id="8634917195-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-8"[·...·truncated·by·diffoscope;·len:·103,·SHA:·d2ddd829cd03c1437f2f43e45ce48e6797da0dde4f454c5e69ea47cb96e5853a·...·]-6">}</span><span·class="p">,</span><span·class="w">277 ·············</span><span·class="p"·data-group-id="4054181558-6">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-7">[</span><span·class="p"·data-group-id="4054181558-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-8"[·...·truncated·by·diffoscope;·len:·103,·SHA:·d5992d262cb23b7ad838aaf1514954479c5b449ac82914973cebf64f9c3b8324·...·]-6">}</span><span·class="p">,</span><span·class="w">
278 ·············</span><span·class="p"·data-group-id="8634917195-9">[</span><span·class="p"·data-group-id="8634917195-9">]</span><span·class="p">,</span><span·class="w">278 ·············</span><span·class="p"·data-group-id="4054181558-9">[</span><span·class="p"·data-group-id="4054181558-9">]</span><span·class="p">,</span><span·class="w">
279 ·············</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">279 ·············</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
280 ·············</span><span·class="p"·data-group-id="8634917195-10">[</span><span·class="p"·data-group-id="8634917195-10">]</span><span·class="p">,</span><span·class="w">280 ·············</span><span·class="p"·data-group-id="4054181558-10">[</span><span·class="p"·data-group-id="4054181558-10">]</span><span·class="p">,</span><span·class="w">
281 ·············</span><span·class="p"·data-group-id="8634917195-11">[</span><span·class="p"·data-group-id="8634917195-12">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-13">[</span><span·class="p"·data-group-id="8634917195-14">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·344,·SHA:·44ff331ec9a96baa5d35dc1b3deed1914e574bdeb58b6d2c1c5ae23ff9cb1716·...·]-15">]</span><span·class="p">,</span><span·class="s">&quot;\281 ·············</span><span·class="p"·data-group-id="4054181558-11">[</span><span·class="p"·data-group-id="4054181558-12">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-13">[</span><span·class="p"·data-group-id="4054181558-14">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·344,·SHA:·8cb5276ac1a8e7d27947f609bb10d71d4dcb6ede158f71df6659b889417295b6·...·]-15">]</span><span·class="p">,</span><span·class="s">&quot;\
282 ··&quot;</span><span·class="p">,</span><span·class="ss">text</span><span·class="p"·data-group-id="8634917195-12">}</span><span·class="p">,</span><span·class="w">282 ··&quot;</span><span·class="p">,</span><span·class="ss">text</span><span·class="p"·data-group-id="4054181558-12">}</span><span·class="p">,</span><span·class="w">
283 ··············</span><span·class="p"·data-group-id="8634917195-16">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">283 ··············</span><span·class="p"·data-group-id="4054181558-16">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">
284 ··························</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">284 ··························</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">
285 ··························</span><span·class="p"·data-group-id="8634917195-17">[</span><span·class="p"·data-group-id="8634917195-17">]</span><span·class="p">,</span><span·class="w">285 ··························</span><span·class="p"·data-group-id="4054181558-17">[</span><span·class="p"·data-group-id="4054181558-17">]</span><span·class="p">,</span><span·class="w">
286 ··························</span><span·class="p"·data-group-id="8634917195-18">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-19">[</span><span·class="p"·data-group-id="8634917195-19">]</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195[·...·truncated·by·diffoscope;·len:·108,·SHA:·4f2f11b339b345c949017513b108ac5217280cbd44dd3ad84bf3f68ff4a8d9bd·...·]-18">}</span><span·class="p">,</span><span·class="w">286 ··························</span><span·class="p"·data-group-id="4054181558-18">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-19">[</span><span·class="p"·data-group-id="4054181558-19">]</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558[·...·truncated·by·diffoscope;·len:·108,·SHA:·561c9ff96b731ea04717ca96831d30f616175aec7c63e3f588fb98cebff0f392·...·]-18">}</span><span·class="p">,</span><span·class="w">
287 ··························</span><span·class="p"·data-group-id="8634917195-21">[</span><span·class="p"·data-group-id="8634917195-22">{</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8634917195-22">}</span><span·class="p"·data-group-id="8634917195-21">]</span><span·class="p">,</span><span·class="w">287 ··························</span><span·class="p"·data-group-id="4054181558-21">[</span><span·class="p"·data-group-id="4054181558-22">{</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4054181558-22">}</span><span·class="p"·data-group-id="4054181558-21">]</span><span·class="p">,</span><span·class="w">
288 ··························</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">288 ··························</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">
289 ··························</span><span·class="p"·data-group-id="8634917195-23">[</span><span·class="p"·data-group-id="8634917195-24">{</span><span·class="ss">xmlAttribute</span><span·class="p">,</span><span·class="ss">year</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-25">[</span><span·class="[·...·truncated·by·diffoscope;·len:·574,·SHA:·9474eb49bb5f1a57d7db7a9188f44ced6718738526adc6e1decfdcfe8a560d5e·...·]-24">}</span><span·class="p">,</span><span·class="w">289 ··························</span><span·class="p"·data-group-id="4054181558-23">[</span><span·class="p"·data-group-id="4054181558-24">{</span><span·class="ss">xmlAttribute</span><span·class="p">,</span><span·class="ss">year</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-25">[</span><span·class="[·...·truncated·by·diffoscope;·len:·574,·SHA:·68d9305f9992a7eb2a9bd8e4ecffec929ab40ad696911634f609fe137b64a91b·...·]-24">}</span><span·class="p">,</span><span·class="w">
290 ···························</span><span·class="p"·data-group-id="8634917195-29">{</span><span·class="ss">xmlAttribute</span><span·class="p">,</span><span·class="ss">color</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-30">[</span><span·class="p"·data-group-id="8634917195-30">]</span><span·class=[·...·truncated·by·diffoscope;·len:·443,·SHA:·145926b714923e8d5a06caaf9ac963050f3e6aa1ac76da7a77e5fce69bed1640·...·]-23">]</span><span·class="p">,</span><span·class="w">290 ···························</span><span·class="p"·data-group-id="4054181558-29">{</span><span·class="ss">xmlAttribute</span><span·class="p">,</span><span·class="ss">color</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-30">[</span><span·class="p"·data-group-id="4054181558-30">]</span><span·class=[·...·truncated·by·diffoscope;·len:·443,·SHA:·427442a081e1e7249eaff446b854a27eb9792ea8477d8c56c1214bb8e86067d0·...·]-23">]</span><span·class="p">,</span><span·class="w">
291 ··························</span><span·class="p"·data-group-id="8634917195-33">[</span><span·class="p"·data-group-id="8634917195-34">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-35">[</span><span·class="p"·data-group-id="8634917195-36">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·419,·SHA:·29fcf0c42524ebd7c437568d70bf614dd7125c9d103c34b980a0e5178f77b864·...·]-35">]</span><span·class="p">,</span><span·class="w">291 ··························</span><span·class="p"·data-group-id="4054181558-33">[</span><span·class="p"·data-group-id="4054181558-34">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-35">[</span><span·class="p"·data-group-id="4054181558-36">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·419,·SHA:·fbb82bb31467e029915868f790e300ff2758ddb7f87e636a671150b26c01a38b·...·]-35">]</span><span·class="p">,</span><span·class="w">
292 ····································</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">292 ····································</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">
293 ····································</span><span·class="p"·data-group-id="8634917195-38">[</span><span·class="p"·data-group-id="8634917195-38">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8634917195-34">}</span><span·class="p">,</span><span·class="w">293 ····································</span><span·class="p"·data-group-id="4054181558-38">[</span><span·class="p"·data-group-id="4054181558-38">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4054181558-34">}</span><span·class="p">,</span><span·class="w">
294 ···························</span><span·class="p"·data-group-id="8634917195-39">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-40">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·174,·SHA:·4b99e64eec97363fa1ff2b8fcda5f58767a954d896fbfbd50557c871fb0d116f·...·]-39">}</span><span·class="p">,</span><span·class="w">294 ···························</span><span·class="p"·data-group-id="4054181558-39">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-40">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·174,·SHA:·a3f1c501bb9c52d2b56f38d6a7da398f4bfaca723fb7ada56cc9dcfc1882bf45·...·]-39">}</span><span·class="p">,</span><span·class="w">
295 ···························</span><span·class="p"·data-group-id="8634917195-41">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="8634917195-42">[</span><span·class="p"·data-group-id="8634917195-43">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·64a738ad70eb66b61f9b04daca16d5e58e28f9a89d27834bb274eeaca39e22d2·...·]-41">}</span><span·class="p">,</span><span·class="w">295 ···························</span><span·class="p"·data-group-id="4054181558-41">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="4054181558-42">[</span><span·class="p"·data-group-id="4054181558-43">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·0cd378125677e7743dcf8f96b8bbffb23b5b4f3db6675ac609dca51c3b5a8915·...·]-41">}</span><span·class="p">,</span><span·class="w">
296 ···························</span><span·class="p"·data-group-id="8634917195-44">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">engine</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8634917195-44">}</span><span·class="p">,</span><span·class="w">296 ···························</span><span·class="p"·data-group-id="4054181558-44">{</span><span·class="ss">xmlElement</span><span·class="p">,</span><span·class="ss">engine</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4054181558-44">}</span><span·class="p">,</span><span·class="w">
297 ···························</span><span·class="p"·data-group-id="8634917195-45">{</span><span·class="ss">xmlText</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8634917195-45">}</span><span·class="p">,</span><span·class="w">297 ···························</span><span·class="p"·data-group-id="4054181558-45">{</span><span·class="ss">xmlText</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4054181558-45">}</span><span·class="p">,</span><span·class="w">
298 ···························</span><span·class="p"·data-group-id="8634917195-46">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8634917195-46">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·34c3ec1f8710bb9e2a8a6e74df79fd566cd239d547494cb4211db6fb6e55f3d2·...·]-33">]</span><span·class="p">,</span><span·class="w">298 ···························</span><span·class="p"·data-group-id="4054181558-46">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4054181558-46">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·31f304d4977ff06b4eaf1870816d3c38564c4f80766072e2d4717e4e2baf3927·...·]-33">]</span><span·class="p">,</span><span·class="w">
299 ··························</span><span·class="p"·data-group-id="8634917195-47">[</span><span·class="p"·data-group-id="8634917195-47">]</span><span·class="p">,</span><span·class="w">299 ··························</span><span·class="p"·data-group-id="4054181558-47">[</span><span·class="p"·data-group-id="4054181558-47">]</span><span·class="p">,</span><span·class="w">
300 ··························</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">300 ··························</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">
301 ··························</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="8634917195-16">}</span><span·class="p">,</span><span·class="w">301 ··························</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="4054181558-16">}</span><span·class="p">,</span><span·class="w">
302 ··············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">302 ··············</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
303 ··············</span><span·class="p"·data-group-id="8634917195-11">]</span><span·class="p">,</span><span·class="w">303 ··············</span><span·class="p"·data-group-id="4054181558-11">]</span><span·class="p">,</span><span·class="w">
304 ·············</span><span·class="p"·data-group-id="8634917195-48">[</span><span·class="p"·data-group-id="8634917195-48">]</span><span·class="p">,</span><span·class="w">304 ·············</span><span·class="p"·data-group-id="4054181558-48">[</span><span·class="p"·data-group-id="4054181558-48">]</span><span·class="p">,</span><span·class="w">
305 ·············</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">305 ·············</span><span·class="s">&quot;.&quot;</span><span·class="p">,</span><span·class="w">
306 ·············</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="8634917195-4">}</span><span·class="p">,</span><span·class="w">306 ·············</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="4054181558-4">}</span><span·class="p">,</span><span·class="w">
307 ·</span><span·class="p"·data-group-id="8634917195-49">[</span><span·class="p"·data-group-id="8634917195-49">]</span><span·class="p"·data-group-id="8634917195-3">}</span><span·class="w">307 ·</span><span·class="p"·data-group-id="4054181558-49">[</span><span·class="p"·data-group-id="4054181558-49">]</span><span·class="p"·data-group-id="4054181558-3">}</span><span·class="w">
308 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><p>If·you·instead·receives·the·XML·doc·as·a·string·you·can·parse·it·by308 </span><span·class="mi">4</span><span·class="o">&gt;</span></code></pre><p>If·you·instead·receives·the·XML·doc·as·a·string·you·can·parse·it·by
309 <a·href="xmerl_scan.html#string/1"><code·class="inline">xmerl_scan:string/1</code></a>.·Both·file/2·and·string/2·exists·where·the·second·argument309 <a·href="xmerl_scan.html#string/1"><code·class="inline">xmerl_scan:string/1</code></a>.·Both·file/2·and·string/2·exists·where·the·second·argument
310 is·a·list·of·options·to·the·parser,·see·the·<a·href="xmerl_scan.html">reference·manual</a>.</p><h2·id="example-extracting-data-from-xml-content"·class="section-heading">310 is·a·list·of·options·to·the·parser,·see·the·<a·href="xmerl_scan.html">reference·manual</a>.</p><h2·id="example-extracting-data-from-xml-content"·class="section-heading">
311 ··<a·href="#example-extracting-data-from-xml-content"·class="hover-link">311 ··<a·href="#example-extracting-data-from-xml-content"·class="hover-link">
312 ····<i·class="ri-link-m"·aria-hidden="true"></i>312 ····<i·class="ri-link-m"·aria-hidden="true"></i>
313 ··</a>313 ··</a>
314 ··<span·class="text">Example:·Extracting·Data·From·XML·Content</span>314 ··<span·class="text">Example:·Extracting·Data·From·XML·Content</span>
Offset 338, 30 lines modifiedOffset 338, 30 lines modified
338 fields·of·the·appropriate·element.</p><p>There·is·support·for·this·in·Xmerl·by·the·&quot;simple-form&quot;·format.·You·can·put·your338 fields·of·the·appropriate·element.</p><p>There·is·support·for·this·in·Xmerl·by·the·&quot;simple-form&quot;·format.·You·can·put·your
339 data·in·a·simple-form·data·structure·and·feed·it·into339 data·in·a·simple-form·data·structure·and·feed·it·into
340 <code·class="inline">xmerl:export_simple(Content,Callback,RootAttributes)</code>.·Content·may·be·a·mixture340 <code·class="inline">xmerl:export_simple(Content,Callback,RootAttributes)</code>.·Content·may·be·a·mixture
341 of·simple-form·and·Xmerl·records·as·<code·class="inline">#xmlElement{}</code>·and·<code·class="inline">#xmlText{}</code>.</p><p>The·Types·are:</p><ul><li>Content·=·[Element]</li><li>Callback·=·atom()</li><li>RootAttributes·=·[Attributes]</li></ul><p>Element·is·any·of:</p><ul><li>{Tag,·Attributes,·Content}</li><li>{Tag,·Content}</li><li>Tag</li><li>IOString</li><li>#xmlText{}</li><li>#xmlElement{}</li><li>#xmlPI{}</li><li>#xmlComment{}</li><li>#xmlDecl{}</li></ul><p>The·simple-form·structure·is·any·of·<code·class="inline">{Tag,·Attributes,·Content}</code>,341 of·simple-form·and·Xmerl·records·as·<code·class="inline">#xmlElement{}</code>·and·<code·class="inline">#xmlText{}</code>.</p><p>The·Types·are:</p><ul><li>Content·=·[Element]</li><li>Callback·=·atom()</li><li>RootAttributes·=·[Attributes]</li></ul><p>Element·is·any·of:</p><ul><li>{Tag,·Attributes,·Content}</li><li>{Tag,·Content}</li><li>Tag</li><li>IOString</li><li>#xmlText{}</li><li>#xmlElement{}</li><li>#xmlPI{}</li><li>#xmlComment{}</li><li>#xmlDecl{}</li></ul><p>The·simple-form·structure·is·any·of·<code·class="inline">{Tag,·Attributes,·Content}</code>,
342 <code·class="inline">{Tag,·Content}</code>·or·<code·class="inline">Tag</code>·where:</p><ul><li>Tag·=·atom()</li><li>Attributes·=·[{Name,·Value}|·#xmlAttribute{}]</li><li>Name·=·atom()</li><li><p>Value·=·IOString·|·atom()·|·integer()</p></li></ul><p>See·also·reference·manual·for·<a·href="xmerl.html#export_simple/3">xmerl</a></p><p>If·you·want·to·add·the·information·about·a·black·Harley·Davidsson·1200·cc342 <code·class="inline">{Tag,·Content}</code>·or·<code·class="inline">Tag</code>·where:</p><ul><li>Tag·=·atom()</li><li>Attributes·=·[{Name,·Value}|·#xmlAttribute{}]</li><li>Name·=·atom()</li><li><p>Value·=·IOString·|·atom()·|·integer()</p></li></ul><p>See·also·reference·manual·for·<a·href="xmerl.html#export_simple/3">xmerl</a></p><p>If·you·want·to·add·the·information·about·a·black·Harley·Davidsson·1200·cc
343 Sportster·motorcycle·from·2003·that·is·in·shape·as·new·in·the·motorcycles.xml343 Sportster·motorcycle·from·2003·that·is·in·shape·as·new·in·the·motorcycles.xml
344 document·you·can·put·the·data·in·a·simple-form·data·structure·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">344 document·you·can·put·the·data·in·a·simple-form·data·structure·like:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
345 ··</span><span·class="p"·data-group-id="0296980095-1">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">345 ··</span><span·class="p"·data-group-id="7694251550-1">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">
346 ·····</span><span·class="p"·data-group-id="0296980095-2">[</span><span·class="p"·data-group-id="0296980095-3">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;2003&quot;</span><span·class="p"·data-group-id="0296980095-3">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·452,·SHA:·3133458cb0dc9859057e70a6a94e9042de1ea5af17459420a960694c44b4f848·...·]-2">]</span><span·class="p">,</span><span·class="w">346 ·····</span><span·class="p"·data-group-id="7694251550-2">[</span><span·class="p"·data-group-id="7694251550-3">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;2003&quot;</span><span·class="p"·data-group-id="7694251550-3">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·452,·SHA:·72cd08ccc72b34e3af5636de5f6507b6f5ebfc27f1cee97719e8972177b1a558·...·]-2">]</span><span·class="p">,</span><span·class="w">
347 ·····</span><span·class="p"·data-group-id="0296980095-6">[</span><span·class="p"·data-group-id="0296980095-7">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">347 ·····</span><span·class="p"·data-group-id="7694251550-6">[</span><span·class="p"·data-group-id="7694251550-7">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">
348 ·········</span><span·class="p"·data-group-id="0296980095-8">[</span><span·class="p"·data-group-id="0296980095-9">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="0296980095-10">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·79,·SHA:·805f90c7ab1f8f054de639ad7aea4d28f648d528bdb79ec66fe65b85885dd7d1·...·]-9">}</span><span·class="p">,</span><span·class="w">348 ·········</span><span·class="p"·data-group-id="7694251550-8">[</span><span·class="p"·data-group-id="7694251550-9">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="7694251550-10">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·79,·SHA:·78390c7c0ebb6626db39dc4708a33e53e0766374308cb357ff2df64432d7dea3·...·]-9">}</span><span·class="p">,</span><span·class="w">
349 ··········</span><span·class="p"·data-group-id="0296980095-11">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="0296980095-12">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="0296980095-12">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·a3e1988f22cf097b9e7c26209e68aa6aa81de7a4709d103682839827df626226·...·]-11">}</span><span·class="p">,</span><span·class="w">349 ··········</span><span·class="p"·data-group-id="7694251550-11">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="7694251550-12">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="7694251550-12">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·7140c62a9e62958af2bc9faa0e1cca65977ee9a845bd991d680622b72db6ae7a·...·]-11">}</span><span·class="p">,</span><span·class="w">
350 ··········</span><span·class="p"·data-group-id="0296980095-13">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="0296980095-14">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="0296980095-14">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·3293db00e9a8a443de70b3ae4027e541dd7bd1f82da390d620866898f6f0fe48·...·]-7">}</span><span·class="p">,</span><span·class="w">350 ··········</span><span·class="p"·data-group-id="7694251550-13">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="7694251550-14">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="7694251550-14">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·b0e539d388a5b2dee478ca418f5a33002ae249f33ddbe4b821300fefa4c0bed4·...·]-7">}</span><span·class="p">,</span><span·class="w">
351 ······</span><span·class="p"·data-group-id="0296980095-15">{</span><span·class="ss">engine</span><span·class="p">,</span><span·class="w">351 ······</span><span·class="p"·data-group-id="7694251550-15">{</span><span·class="ss">engine</span><span·class="p">,</span><span·class="w">
352 ·········</span><span·class="p"·data-group-id="0296980095-16">[</span><span·class="s">&quot;V-engine,·2-cylinders,·1200·cc&quot;</span><span·class="p"·data-group-id="0296980095-16">]</span><span·class="p"·data-group-id="0296980095-15">}</span><span·class="p">,</span><span·class="w">352 ·········</span><span·class="p"·data-group-id="7694251550-16">[</span><span·class="s">&quot;V-engine,·2-cylinders,·1200·cc&quot;</span><span·class="p"·data-group-id="7694251550-16">]</span><span·class="p"·data-group-id="7694251550-15">}</span><span·class="p">,</span><span·class="w">
353 ······</span><span·class="p"·data-group-id="0296980095-17">{</span><span·class="ss">kind</span><span·class="p">,</span><span·class="p"·data-group-id="0296980095-18">[</span><span·class="s">&quot;custom&quot;</span><span·class="p"·data-group-id="0296980095-18">]</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·9,·SHA:·c02b97cc854aec9d430881bf0ab535be2b58e9efc37e9a3db9898955c3ab2100·...·]-17">}</span><span·class="p">,</span><span·class="w">353 ······</span><span·class="p"·data-group-id="7694251550-17">{</span><span·class="ss">kind</span><span·class="p">,</span><span·class="p"·data-group-id="7694251550-18">[</span><span·class="s">&quot;custom&quot;</span><span·class="p"·data-group-id="7694251550-18">]</span><span·class="p"·data-group-id="7[·...·truncated·by·diffoscope;·len:·9,·SHA:·0f43b1cf1fde639b5bfe4da1c0a90632cfe82e0eb8c0b92288ef7e6caaa9a02d·...·]-17">}</span><span·class="p">,</span><span·class="w">
354 ······</span><span·class="p"·data-group-id="0296980095-19">{</span><span·class="ss">drive</span><span·class="p">,</span><span·class="p"·data-group-id="0296980095-20">[</span><span·class="s">&quot;belt&quot;</span><span·class="p"·data-group-id="0296980095-20">]</span><span·class="p"·data-group-id="02[·...·truncated·by·diffoscope;·len:·115,·SHA:·7bdac0109fc569faa0aa22501204a8fa58807ed901ae807f5acc8d604e60486b·...·]-1">}</span></code></pre><p>In·order·to·append·this·data·to·the·end·of·the·motorcycles.xml·document·you·have354 ······</span><span·class="p"·data-group-id="7694251550-19">{</span><span·class="ss">drive</span><span·class="p">,</span><span·class="p"·data-group-id="7694251550-20">[</span><span·class="s">&quot;belt&quot;</span><span·class="p"·data-group-id="7694251550-20">]</span><span·class="p"·data-group-id="76[·...·truncated·by·diffoscope;·len:·115,·SHA:·8190ea0cb1cec57476f7cdb4898eaff0e08d2011b65adf06098565b3c986b1a4·...·]-1">}</span></code></pre><p>In·order·to·append·this·data·to·the·end·of·the·motorcycles.xml·document·you·have
355 to·parse·the·file·and·add·Data·to·the·end·of·the·root·element·content.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p"·data-group-id="2846563221-1">{</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="2846563221-1">}</span><span·class="o">=</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">fi[·...·truncated·by·diffoscope;·len:·152,·SHA:·213322b9ac836bdde4633ee6d302f8ce8ef621c4464c9a48bd9960c1540a9d56·...·]-2">)</span><span·class="p">,</span><span·class="w">355 to·parse·the·file·and·add·Data·to·the·end·of·the·root·element·content.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="p"·data-group-id="9086639906-1">{</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="9086639906-1">}</span><span·class="o">=</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">fi[·...·truncated·by·diffoscope;·len:·152,·SHA:·a8139c5d45e4abbc87f91080a129d4e2312b8036d85bb43ffcb6b665692843a5·...·]-2">)</span><span·class="p">,</span><span·class="w">
356 ····</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2846563221-3">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">Content</span><span·class="p"·data-group-id="2846563221-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="w">356 ····</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="9086639906-3">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">Content</span><span·class="p"·data-group-id="9086639906-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="w">
357 ····</span><span·class="n">NewContent</span><span·class="o">=</span><span·class="n">Content</span><span·class="o">++</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="2846563221-4">(</span><span·class="p"·data-group-id="2846563221-5">[</span><span·class="n">Data</span><span·class="p"·data-group-id="2846563221-5">]</span><span·class="p"·data-group-id="2846563221-4">)</span><span·class="p">,</span><span·class="w">357 ····</span><span·class="n">NewContent</span><span·class="o">=</span><span·class="n">Content</span><span·class="o">++</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">flatten</span><span·class="p"·data-group-id="9086639906-4">(</span><span·class="p"·data-group-id="9086639906-5">[</span><span·class="n">Data</span><span·class="p"·data-group-id="9086639906-5">]</span><span·class="p"·data-group-id="9086639906-4">)</span><span·class="p">,</span><span·class="w">
358 ····</span><span·class="n">NewRootEl</span><span·class="o">=</span><span·class="n">RootEl</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2846563221-6">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">NewContent</span><span·class="p"·data-group-id="2846563221-6">}</span><span·class="p">,</span></code></pre><p>Then·you·can·run·it·through·the·export_simple/2·funct[·...·truncated·by·diffoscope;·len:·674,·SHA:·cdd8e3fdb881394a1e96abe30ec5c009043540f157a2e96787cec8f7cc9a1d40·...·]9-2">)</span><span·class="p">,</span><span·class="w">358 ····</span><span·class="n">NewRootEl</span><span·class="o">=</span><span·class="n">RootEl</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="9086639906-6">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">NewContent</span><span·class="p"·data-group-id="9086639906-6">}</span><span·class="p">,</span></code></pre><p>Then·you·can·run·it·through·the·export_simple/2·funct[·...·truncated·by·diffoscope;·len:·674,·SHA:·3708e6fdac7cd2ac097a89a104ce1b93c3db9a84be0a720210b041567f9232c4·...·]9-2">)</span><span·class="p">,</span><span·class="w">
359 ····</span><span·class="n">Export</span><span·class="o">=</span><span·class="nc">xmerl</span><span·class="p">:</span><span·class="nf">export_simple</span><span·class="p"·data-group-id="2917535989-4">(</span><span·class="p"·data-group-id="2917535989-5">[</span><span·class="n">NewRootEl</span><span·class="p"·data-group-id="2917535989-5">]</span><span·class="p">,</span><span·class="ss">xmerl_xml</span><span·class="p"·data-group-id="29175359[·...·truncated·by·diffoscope;·len:·1,·SHA:·2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3·...·]9-4">)</span><span·class="p">,</span><span·class="w">359 ····</span><span·class="n">Export</span><span·class="o">=</span><span·class="nc">xmerl</span><span·class="p">:</span><span·class="nf">export_simple</span><span·class="p"·data-group-id="8462224429-4">(</span><span·class="p"·data-group-id="8462224429-5">[</span><span·class="n">NewRootEl</span><span·class="p"·data-group-id="8462224429-5">]</span><span·class="p">,</span><span·class="ss">xmerl_xml</span><span·class="p"·data-group-id="84622244[·...·truncated·by·diffoscope;·len:·1,·SHA:·d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35·...·]9-4">)</span><span·class="p">,</span><span·class="w">
360 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="2917535989-6">(</span><span·class="n">IOF</span><span·class="p">,</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2917535989-7">[</sp[·...·truncated·by·diffoscope;·len:·315,·SHA:·4ac11b58e99a0dc0eb999d7af85e1c8ea6fd8054ee0e511afff808a8b4f4f531·...·]9-6">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="new_motorcyclesxml"></a></p><p>The·result·would·be:</p><pre><code·class="text">360 ····</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8462224429-6">(</span><span·class="n">IOF</span><span·class="p">,</span><span·class="s">&quot;</span><span·class="si">~s</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8462224429-7">[</sp[·...·truncated·by·diffoscope;·len:·315,·SHA:·33863cc1c0c7605686ee2ae08ec1278b2960b1e0663ec144bba6f2006107ba99·...·]9-6">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="new_motorcyclesxml"></a></p><p>The·result·would·be:</p><pre><code·class="text">
361 &lt;?xml·version=&quot;1.0&quot;?&gt;&lt;motorcycles&gt;361 &lt;?xml·version=&quot;1.0&quot;?&gt;&lt;motorcycles&gt;
362 ··&lt;bike·year=&quot;2000&quot;·color=&quot;black&quot;&gt;362 ··&lt;bike·year=&quot;2000&quot;·color=&quot;black&quot;&gt;
363 ····&lt;name&gt;363 ····&lt;name&gt;
364 ······&lt;manufacturer&gt;Suzuki&lt;/manufacturer&gt;364 ······&lt;manufacturer&gt;Suzuki&lt;/manufacturer&gt;
365 ······&lt;brandName&gt;Suzuki·VL·1500&lt;/brandName&gt;365 ······&lt;brandName&gt;Suzuki·VL·1500&lt;/brandName&gt;
366 ······&lt;additionalName&gt;Intruder&lt;/additionalName&gt;366 ······&lt;additionalName&gt;Intruder&lt;/additionalName&gt;
367 ····&lt;/name&gt;367 ····&lt;/name&gt;
Offset 383, 48 lines modifiedOffset 383, 48 lines modified
383 ··&lt;/bike&gt;383 ··&lt;/bike&gt;
384 &lt;bike·year=&quot;2003&quot;·color=&quot;black&quot;·condition=&quot;new&quot;&gt;&lt;name&gt;&lt;manufacturer&gt;Harley·Davidsson&lt;/manufacturer&gt;&lt;brandName&gt;XL1200C&lt;/brandName&gt;&lt;additionalName&gt;Sportster&lt;/additionalName&gt;&lt;/name&gt;&lt;engine&gt;V-engine,·2-cylinders,·1200·cc&lt;/engine&gt;&lt;kind&gt;custom&lt;/kind&gt;&lt;drive&gt;belt&lt;/drive&gt;&lt;/bike&gt;&lt;/motorcycles&gt;</code></pre><p>If·it·is·important·to·get·similar·indentation·and·newlines·as·in·the·original384 &lt;bike·year=&quot;2003&quot;·color=&quot;black&quot;·condition=&quot;new&quot;&gt;&lt;name&gt;&lt;manufacturer&gt;Harley·Davidsson&lt;/manufacturer&gt;&lt;brandName&gt;XL1200C&lt;/brandName&gt;&lt;additionalName&gt;Sportster&lt;/additionalName&gt;&lt;/name&gt;&lt;engine&gt;V-engine,·2-cylinders,·1200·cc&lt;/engine&gt;&lt;kind&gt;custom&lt;/kind&gt;&lt;drive&gt;belt&lt;/drive&gt;&lt;/bike&gt;&lt;/motorcycles&gt;</code></pre><p>If·it·is·important·to·get·similar·indentation·and·newlines·as·in·the·original
385 document·you·have·to·add·<code·class="inline">#xmlText{}</code>·records·with·space·and·newline·values·in385 document·you·have·to·add·<code·class="inline">#xmlText{}</code>·records·with·space·and·newline·values·in
386 appropriate·places.·It·may·also·be·necessary·to·keep·the·original·prolog·where386 appropriate·places.·It·may·also·be·necessary·to·keep·the·original·prolog·where
387 the·DTD·is·referenced.·If·so,·it·is·possible·to·pass·a·RootAttribute387 the·DTD·is·referenced.·If·so,·it·is·possible·to·pass·a·RootAttribute
388 <code·class="inline">{prolog,Value}</code>·to·<code·class="inline">export_simple/3</code>.·The·following·example·code·fixes·those388 <code·class="inline">{prolog,Value}</code>·to·<code·class="inline">export_simple/3</code>.·The·following·example·code·fixes·those
389 changes·in·the·previous·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">389 changes·in·the·previous·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="n">Data</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
390 ······</span><span·class="p"·data-group-id="1567530812-1">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1567530812-2">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;··&quot;</span><span·class="p"·data-group-id="156753[·...·truncated·by·diffoscope;·len:·4,·SHA:·6e65b61d030e5ac6492802c6f619a63006e5b0e2cafc0170ab92a68083162528·...·]-2">}</span><span·class="p">,</span><span·class="w">390 ······</span><span·class="p"·data-group-id="1348907950-1">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1348907950-2">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;··&quot;</span><span·class="p"·data-group-id="134890[·...·truncated·by·diffoscope;·len:·4,·SHA:·54d639e084afe6381ba6ca5cedaa65b7719c96ba05681dbfe0888e87db261d3c·...·]-2">}</span><span·class="p">,</span><span·class="w">
391 ·······</span><span·class="p"·data-group-id="1567530812-3">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="p"·data-group-id="1567530812-4">[</span><span·class="p"·data-group-id="1567530812-5">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;200[·...·truncated·by·diffoscope;·len:·556,·SHA:·f4b29b95e790bd4a50a8d957f8e71e558fdef4fd61653ab588168f1851b0b12e·...·]-4">]</span><span·class="p">,</span><span·class="w">391 ·······</span><span·class="p"·data-group-id="1348907950-3">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="p"·data-group-id="1348907950-4">[</span><span·class="p"·data-group-id="1348907950-5">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;200[·...·truncated·by·diffoscope;·len:·556,·SHA:·466a24d620d29e5204c9bdb69cf04c662e5172b4832cf12bed8eb76a128c0405·...·]-4">]</span><span·class="p">,</span><span·class="w">
392 ·············</span><span·class="p"·data-group-id="1567530812-8">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1567530812-9">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\392 ·············</span><span·class="p"·data-group-id="1348907950-8">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1348907950-9">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
393 ····&quot;</span><span·class="p"·data-group-id="1567530812-9">}</span><span·class="p">,</span><span·class="w">393 ····&quot;</span><span·class="p"·data-group-id="1348907950-9">}</span><span·class="p">,</span><span·class="w">
394 ··············</span><span·class="p"·data-group-id="1567530812-10">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="1567530812-11">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1567530812-12">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\394 ··············</span><span·class="p"·data-group-id="1348907950-10">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="1348907950-11">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1348907950-12">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
395 ······&quot;</span><span·class="p"·data-group-id="1567530812-12">}</span><span·class="p">,</span><span·class="w">395 ······&quot;</span><span·class="p"·data-group-id="1348907950-12">}</span><span·class="p">,</span><span·class="w">
396 ·····················</span><span·class="p"·data-group-id="1567530812-13">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="1567530812-14">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·data-group-id="1567530812-14">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·17325386da5e360164c7652add02f3f17dbc72e6bcc5be13ac08891b6965e68d·...·]-13">}</span><span·class="p">,</span><span·class="w">396 ·····················</span><span·class="p"·data-group-id="1348907950-13">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="1348907950-14">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·data-group-id="1348907950-14">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f6fdc06f72d2dd31b8bded3969c4191833268cf6559639e29f9e710b5c206832·...·]-13">}</span><span·class="p">,</span><span·class="w">
397 ·····················</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1567530812-15">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\397 ·····················</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1348907950-15">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
398 ······&quot;</span><span·class="p"·data-group-id="1567530812-15">}</span><span·class="p">,</span><span·class="w">398 ······&quot;</span><span·class="p"·data-group-id="1348907950-15">}</span><span·class="p">,</span><span·class="w">
399 ·····················</span><span·class="p"·data-group-id="1567530812-16">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="1567530812-17">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="1567530812-17">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·aaac3ba13845d36cf910483ab6aa3594f98a8cb5535a803b51cc5dbbf2a301ca·...·]-16">}</span><span·class="p">,</span><span·class="w">399 ·····················</span><span·class="p"·data-group-id="1348907950-16">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="1348907950-17">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="1348907950-17">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·d09dfe113186e0f6ee051f080447d71adcef48df47fc75edf2e2e67236936acd·...·]-16">}</span><span·class="p">,</span><span·class="w">
400 ·····················</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1567530812-18">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\400 ·····················</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1348907950-18">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
401 ······&quot;</span><span·class="p"·data-group-id="1567530812-18">}</span><span·class="p">,</span><span·class="w">401 ······&quot;</span><span·class="p"·data-group-id="1348907950-18">}</span><span·class="p">,</span><span·class="w">
402 ·····················</span><span·class="p"·data-group-id="1567530812-19">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="1567530812-20">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="1567530812-20">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·59957a5172d66bf35455f46a01391a31b408b5fe4444e7eb5fb3399f4bc31f38·...·]-19">}</span><span·class="p">,</span><span·class="w">402 ·····················</span><span·class="p"·data-group-id="1348907950-19">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="1348907950-20">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="1348907950-20">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f6c9bcbbbaefeb32128879c05ff00534e6a797ae5b4a057b2525b923f9a78163·...·]-19">}</span><span·class="p">,</span><span·class="w">
403 ·····················</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1567530812-21">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\403 ·····················</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1348907950-21">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
Max diff block lines reached; 101933/162913 bytes (62.57%) of diff not shown.
59.1 KB
./usr/share/doc/erlang-doc/html/lib/xmerl-2.1/doc/html/xmerl_xs_examples.html
    
Offset 131, 21 lines modifiedOffset 131, 21 lines modified
131 ··</a>131 ··</a>
132 ··<span·class="text">Examples</span>132 ··<span·class="text">Examples</span>
133 </h3>133 </h3>
134 <hr·class="thin"/><h4>Example·1·Using·xslapply</h4><p>original·XSLT:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;doc/title&quot;</span><span·class="o">&gt;</span><span·class="w">134 <hr·class="thin"/><h4>Example·1·Using·xslapply</h4><p>original·XSLT:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;doc/title&quot;</span><span·class="o">&gt;</span><span·class="w">
135 ····</span><span·class="o">&lt;</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="w">135 ····</span><span·class="o">&lt;</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="w">
136 ······</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="nb">apply</span><span·class="o">-</span><span·class="ss">templates</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">136 ······</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="nb">apply</span><span·class="o">-</span><span·class="ss">templates</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">
137 ····</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="w">137 ····</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="w">
138 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span></code></pre><p>becomes·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="7485548489-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="7485548489-2">{</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·630,·SHA:·ecb7382b046df3627bcda45d3c1562b9e38aa4375963fb20240196ad280120a0·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span></code></pre><p>becomes·in·Erlang:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="5126885101-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="5126885101-2">{</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·630,·SHA:·d020fc77f0a0165833f604a260dcd81fd31ebfea7d9bb22b054f980a7d4d4a19·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="7485548489-5">[</span><span·class="s">&quot;&lt;h1&gt;&quot;</span><span·class="p">,</span><span·class="w">139 ····</span><span·class="p"·data-group-id="5126885101-5">[</span><span·class="s">&quot;&lt;h1&gt;&quot;</span><span·class="p">,</span><span·class="w">
140 ·········</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="7485548489-6">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·a108daccb06ee62d6735e3f131dd8f6cb6b13f4d0cab674521dd17a157f42519·...·]-6">)</span><span·class="p">,</span><span·class="w">140 ·········</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="5126885101-6">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·a089e8a1418dd7025354e271589e8f2255627524004d48d55b95d84cbc09398f·...·]-6">)</span><span·class="p">,</span><span·class="w">
141 ·····</span><span·class="s">&quot;&lt;/h1&gt;&quot;</span><span·class="p"·data-group-id="7485548489-5">]</span><span·class="p">;</span></code></pre><hr·class="thin"/><hr·class="thin"/><h4>Example·2·Using·value_of·and·select</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;title&quot;</span><span·class="o">&gt;</span><span·class="w">141 ·····</span><span·class="s">&quot;&lt;/h1&gt;&quot;</span><span·class="p"·data-group-id="5126885101-5">]</span><span·class="p">;</span></code></pre><hr·class="thin"/><hr·class="thin"/><h4>Example·2·Using·value_of·and·select</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;title&quot;</span><span·class="o">&gt;</span><span·class="w">
142 ··</span><span·class="o">&lt;</span><span·class="ow">div</span><span·class="w">·</span><span·class="ss">align</span><span·class="o">=</span><span·class="s">&quot;center&quot;</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">value</span><span·class="o">-</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">select</span><span·class="o">=</span><span·class="s">&quot;.&quot;</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ow">div</span><span·class="o">&gt;</span><span·class="w">142 ··</span><span·class="o">&lt;</span><span·class="ow">div</span><span·class="w">·</span><span·class="ss">align</span><span·class="o">=</span><span·class="s">&quot;center&quot;</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">value</span><span·class="o">-</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">select</span><span·class="o">=</span><span·class="s">&quot;.&quot;</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">h1</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ow">div</span><span·class="o">&gt;</span><span·class="w">
143 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span></code></pre><p>becomes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="2574095910-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2574095910-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·158,·SHA:·6caae86762f22bc5b5a9993b4ebe023eaf142fc6ed9ac5c284e1a2deb531be4a·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">143 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span></code></pre><p>becomes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="8898704008-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="8898704008-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·158,·SHA:·970ce74fd80c393e1f9f3bebc17ae6614976c1699e2c0478364bff8f223c6f11·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ····</span><span·class="p"·data-group-id="2574095910-3">[</span><span·class="s">&quot;&lt;div·align=\&quot;center\&quot;&gt;&lt;h1&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="2574095910-4">(</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·426,·SHA:·7bcc7d3c9e58850582d82213a069e906416948ac197db21e44441e42fd13d4dd·...·]-3">]</span><span·class="p">;</span></code></pre><hr·class="thin"/><hr·class="thin"/><h4>Example·3·Simple·xsl·stylesheet</h4><p>A·complete·example·with·the·XSLT·sheet·in·the·xmerl·distribution.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">stylesheet</span><span·class="w">·</span><span·class="ss">version</span><span·class="o">=</span><span·class="s">&quot;1.0&quot;</span><span·class="w">144 ····</span><span·class="p"·data-group-id="8898704008-3">[</span><span·class="s">&quot;&lt;div·align=\&quot;center\&quot;&gt;&lt;h1&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="8898704008-4">(</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·426,·SHA:·fb89ff9d5d2d60ea8d5b6cd88e58b1a1b99d0588afb0c467a3bd96b8220adb88·...·]-3">]</span><span·class="p">;</span></code></pre><hr·class="thin"/><hr·class="thin"/><h4>Example·3·Simple·xsl·stylesheet</h4><p>A·complete·example·with·the·XSLT·sheet·in·the·xmerl·distribution.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">stylesheet</span><span·class="w">·</span><span·class="ss">version</span><span·class="o">=</span><span·class="s">&quot;1.0&quot;</span><span·class="w">
145 ········</span><span·class="nc">xmlns</span><span·class="p">:</span><span·class="ss">xsl</span><span·class="o">=</span><span·class="s">&quot;http://www.w3.org/1999/XSL/Transform&quot;</span><span·class="w">145 ········</span><span·class="nc">xmlns</span><span·class="p">:</span><span·class="ss">xsl</span><span·class="o">=</span><span·class="s">&quot;http://www.w3.org/1999/XSL/Transform&quot;</span><span·class="w">
146 ········</span><span·class="ss">xmlns</span><span·class="o">=</span><span·class="s">&quot;http://www.w3.org/TR/xhtml1/strict&quot;</span><span·class="o">&gt;</span><span·class="w">146 ········</span><span·class="ss">xmlns</span><span·class="o">=</span><span·class="s">&quot;http://www.w3.org/TR/xhtml1/strict&quot;</span><span·class="o">&gt;</span><span·class="w">
  
147 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">strip</span><span·class="o">-</span><span·class="ss">space</span><span·class="w">·</span><span·class="ss">elements</span><span·class="o">=</span><span·class="s">&quot;doc·chapter·section&quot;</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">147 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">strip</span><span·class="o">-</span><span·class="ss">space</span><span·class="w">·</span><span·class="ss">elements</span><span·class="o">=</span><span·class="s">&quot;doc·chapter·section&quot;</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">
148 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">output</span><span·class="w">148 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">output</span><span·class="w">
149 ····</span><span·class="ss">method</span><span·class="o">=</span><span·class="s">&quot;xml&quot;</span><span·class="w">149 ····</span><span·class="ss">method</span><span·class="o">=</span><span·class="s">&quot;xml&quot;</span><span·class="w">
150 ····</span><span·class="ss">indent</span><span·class="o">=</span><span·class="s">&quot;yes&quot;</span><span·class="w">150 ····</span><span·class="ss">indent</span><span·class="o">=</span><span·class="s">&quot;yes&quot;</span><span·class="w">
Offset 198, 68 lines modifiedOffset 198, 68 lines modified
  
198 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;emph&quot;</span><span·class="o">&gt;</span><span·class="w">198 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;emph&quot;</span><span·class="o">&gt;</span><span·class="w">
199 ····</span><span·class="o">&lt;</span><span·class="ss">em</span><span·class="o">&gt;</span><span·class="w">199 ····</span><span·class="o">&lt;</span><span·class="ss">em</span><span·class="o">&gt;</span><span·class="w">
200 ······</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="nb">apply</span><span·class="o">-</span><span·class="ss">templates</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">200 ······</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="nb">apply</span><span·class="o">-</span><span·class="ss">templates</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">
201 ····</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">em</span><span·class="o">&gt;</span><span·class="w">201 ····</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">em</span><span·class="o">&gt;</span><span·class="w">
202 ··</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span><span·class="w">202 ··</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span><span·class="w">
  
203 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">stylesheet</span><span·class="o">&gt;</span></code></pre><hr·class="thin"/><hr·class="thin"/><h4>Example·4·Erlang·version</h4><p>Erlang·transformation·of·previous·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="6848224798-1">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="6848224798-1">)</span><span·class="p">.</span><span·class="w">203 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">stylesheet</span><span·class="o">&gt;</span></code></pre><hr·class="thin"/><hr·class="thin"/><h4>Example·4·Erlang·version</h4><p>Erlang·transformation·of·previous·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="2827803557-1">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="2827803557-1">)</span><span·class="p">.</span><span·class="w">
204 </span><span·class="w">204 </span><span·class="w">
205 </span><span·class="p">-</span><span·class="na">import</span><span·class="p"·data-group-id="6848224798-2">(</span><span·class="ss">xmerl_xs</span><span·class="p">,</span><span·class="w">205 </span><span·class="p">-</span><span·class="na">import</span><span·class="p"·data-group-id="2827803557-2">(</span><span·class="ss">xmerl_xs</span><span·class="p">,</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="6848224798-3">[</span><span·class="w">·</span><span·class="ss">xslapply</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">value_of</span><span·class="p">/</span><span·class="mi">1</span>[·...·truncated·by·diffoscope;·len:·380,·SHA:·e0393423ed653d519a4f65721eb4e18e70fe05ad43e11a44c8c6c8edb883ee3a·...·]-2">)</span><span·class="p">.</span><span·class="w">206 ····</span><span·class="p"·data-group-id="2827803557-3">[</span><span·class="w">·</span><span·class="ss">xslapply</span><span·class="p">/</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">value_of</span><span·class="p">/</span><span·class="mi">1</span>[·...·truncated·by·diffoscope;·len:·380,·SHA:·8b32bf7097520d7c02a7913d2926a9936d50394df2a56e89398732d5ffe84327·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="nf">doctype</span><span·class="p"·data-group-id="6848224798-4">(</span><span·class="p"·data-group-id="6848224798-4">)</span><span·class="p">-&gt;</span><span·class="w">207 </span><span·class="nf">doctype</span><span·class="p"·data-group-id="2827803557-4">(</span><span·class="p"·data-group-id="2827803557-4">)</span><span·class="p">-&gt;</span><span·class="w">
208 ····</span><span·class="s">&quot;&lt;!DOCTYPE·html·PUBLIC·\&quot;-//W3C//DTD·XHTML·1.0·Transitional//EN\&quot;\208 ····</span><span·class="s">&quot;&lt;!DOCTYPE·html·PUBLIC·\&quot;-//W3C//DTD·XHTML·1.0·Transitional//EN\&quot;\
209 ·\&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd·\&quot;&gt;&quot;</span><span·class="p">.</span><span·class="w">209 ·\&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd·\&quot;&gt;&quot;</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">process_xml</span><span·class="p"·data-group-id="6848224798-5">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="6848224798-5">)</span><span·class="p">-&gt;</span><span·class="w">210 </span><span·class="nf">process_xml</span><span·class="p"·data-group-id="2827803557-5">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="2827803557-5">)</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-6">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="6848224798-6">)</span><span·class="p">.</span><span·class="w">211 ····</span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-6">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="2827803557-6">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-7">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="6848224798-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·156,·SHA:·7d4f2ab0c8ac35887b61e4f4b33a25837b5b8860f42e55cbae8e9e5639c335ab·...·]-7">)</span><span·class="p">-&gt;</span><span·class="w">212 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-7">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2827803557-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·156,·SHA:·66f838fb73fa1d5dd8754a9e6de8c9d41c70f71bbe561013fb122ea350b3464d·...·]-7">)</span><span·class="p">-&gt;</span><span·class="w">
213 ····</span><span·class="p"·data-group-id="6848224798-9">[</span><span·class="w">·</span><span·class="s">&quot;&lt;\?xml·version=\&quot;1.0\&quot;·encoding=\&quot;iso-8859-1\&quot;\?&gt;&quot;</span><span·class="p">,</span><span·class="w">213 ····</span><span·class="p"·data-group-id="2827803557-9">[</span><span·class="w">·</span><span·class="s">&quot;&lt;\?xml·version=\&quot;1.0\&quot;·encoding=\&quot;iso-8859-1\&quot;\?&gt;&quot;</span><span·class="p">,</span><span·class="w">
214 ······</span><span·class="nf">doctype</span><span·class="p"·data-group-id="6848224798-10">(</span><span·class="p"·data-group-id="6848224798-10">)</span><span·class="p">,</span><span·class="w">214 ······</span><span·class="nf">doctype</span><span·class="p"·data-group-id="2827803557-10">(</span><span·class="p"·data-group-id="2827803557-10">)</span><span·class="p">,</span><span·class="w">
215 ······</span><span·class="s">&quot;&lt;html·xmlns=\&quot;http://www.w3.org/1999/xhtml\&quot;·&gt;&quot;</span><span·class="w">215 ······</span><span·class="s">&quot;&lt;html·xmlns=\&quot;http://www.w3.org/1999/xhtml\&quot;·&gt;&quot;</span><span·class="w">
216 ······</span><span·class="s">&quot;&lt;head&gt;&quot;</span><span·class="w">216 ······</span><span·class="s">&quot;&lt;head&gt;&quot;</span><span·class="w">
217 ······</span><span·class="s">&quot;&lt;title&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="6848224798-11">(</span><span·class="nf">select</span><span·class="p"·data-group-id="6848224798-12">(</span><span·class="s">&quot;title&quot;</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="6848224798-12">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·ed7a41279675b18c05f389d51016470c90038bca624b500a635397d65f4b6626·...·]-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&lt;/title&gt;&quot;</span><span·class="w">217 ······</span><span·class="s">&quot;&lt;title&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="2827803557-11">(</span><span·class="nf">select</span><span·class="p"·data-group-id="2827803557-12">(</span><span·class="s">&quot;title&quot;</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="2827803557-12">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·ca33218ebb8e7c362512bc7e664a290195b41d07edc0ddd2c39eb0889c79c936·...·]-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&lt;/title&gt;&quot;</span><span·class="w">
218 ······</span><span·class="s">&quot;&lt;/head&gt;&quot;</span><span·class="w">218 ······</span><span·class="s">&quot;&lt;/head&gt;&quot;</span><span·class="w">
219 ······</span><span·class="s">&quot;&lt;body&gt;&quot;</span><span·class="p">,</span><span·class="w">219 ······</span><span·class="s">&quot;&lt;body&gt;&quot;</span><span·class="p">,</span><span·class="w">
220 ······</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6848224798-13">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·668ae3b1348672a5692f78d95b7a7e07aee3727e87cfba3997d27821223fa00b·...·]-13">)</span><span·class="p">,</span><span·class="w">220 ······</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="2827803557-13">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·c4a1e42eef2c56427a23caa993cba57c4bb3d023de1756f7ceef6c23a2e1fbdc·...·]-13">)</span><span·class="p">,</span><span·class="w">
221 ······</span><span·class="s">&quot;&lt;/body&gt;&quot;</span><span·class="w">221 ······</span><span·class="s">&quot;&lt;/body&gt;&quot;</span><span·class="w">
222 ······</span><span·class="s">&quot;&lt;/html&gt;&quot;</span><span·class="w">·</span><span·class="p"·data-group-id="6848224798-9">]</span><span·class="p">;</span><span·class="w">222 ······</span><span·class="s">&quot;&lt;/html&gt;&quot;</span><span·class="w">·</span><span·class="p"·data-group-id="2827803557-9">]</span><span·class="p">;</span><span·class="w">
  
  
223 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-14">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="6848224798-15">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·637,·SHA:·44b5467e3360c58dec1bba34aab6b238915e681fb186023050fd0f98a24ee6eb·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-14">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2827803557-15">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·637,·SHA:·7b797ea86b549d9a5b9dcbebe3cbec72eaefb17ab255c9032487bf19db6d5ebb·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="6848224798-18">[</span><span·class="s">&quot;&lt;h1&gt;&quot;</span><span·class="p">,</span><span·class="w">224 ····</span><span·class="p"·data-group-id="2827803557-18">[</span><span·class="s">&quot;&lt;h1&gt;&quot;</span><span·class="p">,</span><span·class="w">
225 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6848224798-19">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·668ae3b1348672a5692f78d95b7a7e07aee3727e87cfba3997d27821223fa00b·...·]-19">)</span><span·class="p">,</span><span·class="w">225 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="2827803557-19">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·c4a1e42eef2c56427a23caa993cba57c4bb3d023de1756f7ceef6c23a2e1fbdc·...·]-19">)</span><span·class="p">,</span><span·class="w">
226 ·····</span><span·class="s">&quot;&lt;/h1&gt;&quot;</span><span·class="p"·data-group-id="6848224798-18">]</span><span·class="p">;</span><span·class="w">226 ·····</span><span·class="s">&quot;&lt;/h1&gt;&quot;</span><span·class="p"·data-group-id="2827803557-18">]</span><span·class="p">;</span><span·class="w">
  
227 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-20">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="6848224798-21">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·34858c47ff863e1ec4e90f4f0063077001cb43610ce371c1af6719b482d39a3e·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-20">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2827803557-21">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·894204694b76c512ceb65d9fb2938d9c4e7bbf1b679913b3d495427dd803e940·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ····</span><span·class="p"·data-group-id="6848224798-24">[</span><span·class="s">&quot;&lt;h2&gt;&quot;</span><span·class="p">,</span><span·class="w">228 ····</span><span·class="p"·data-group-id="2827803557-24">[</span><span·class="s">&quot;&lt;h2&gt;&quot;</span><span·class="p">,</span><span·class="w">
229 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6848224798-25">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·668ae3b1348672a5692f78d95b7a7e07aee3727e87cfba3997d27821223fa00b·...·]-25">)</span><span·class="p">,</span><span·class="w">229 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="2827803557-25">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·c4a1e42eef2c56427a23caa993cba57c4bb3d023de1756f7ceef6c23a2e1fbdc·...·]-25">)</span><span·class="p">,</span><span·class="w">
230 ·····</span><span·class="s">&quot;&lt;/h2&gt;&quot;</span><span·class="p"·data-group-id="6848224798-24">]</span><span·class="p">;</span><span·class="w">230 ·····</span><span·class="s">&quot;&lt;/h2&gt;&quot;</span><span·class="p"·data-group-id="2827803557-24">]</span><span·class="p">;</span><span·class="w">
  
231 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-26">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="6848224798-27">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·66ae5d93b18ac722a1ddb1888ce17abe21693c8ac9f0759341b461335f5a9a17·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-26">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2827803557-27">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·08e5049ce2f9a602edff2fe1c035527bceb530e94c81dc2f4a0574cd163fda40·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="6848224798-30">[</span><span·class="s">&quot;&lt;h3&gt;&quot;</span><span·class="p">,</span><span·class="w">232 ····</span><span·class="p"·data-group-id="2827803557-30">[</span><span·class="s">&quot;&lt;h3&gt;&quot;</span><span·class="p">,</span><span·class="w">
233 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6848224798-31">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·668ae3b1348672a5692f78d95b7a7e07aee3727e87cfba3997d27821223fa00b·...·]-31">)</span><span·class="p">,</span><span·class="w">233 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="2827803557-31">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·c4a1e42eef2c56427a23caa993cba57c4bb3d023de1756f7ceef6c23a2e1fbdc·...·]-31">)</span><span·class="p">,</span><span·class="w">
234 ·····</span><span·class="s">&quot;&lt;/h3&gt;&quot;</span><span·class="p"·data-group-id="6848224798-30">]</span><span·class="p">;</span><span·class="w">234 ·····</span><span·class="s">&quot;&lt;/h3&gt;&quot;</span><span·class="p"·data-group-id="2827803557-30">]</span><span·class="p">;</span><span·class="w">
  
235 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-32">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="6848224798-33">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·8a6d7e3d63e852e37df2014094467020d99e32ab2afe39c836b4fa5e5accbde1·...·]-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">235 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-32">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2827803557-33">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·eb7d39ab5c72fef38727a2c9a579c0ff0778c5541bcdae7b501613bcc283caa2·...·]-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="6848224798-34">[</span><span·class="s">&quot;&lt;p&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6848224798-35">(</span><span·class="w">·</span><span·class="k">fun</span><span[·...·truncated·by·diffoscope;·len:·360,·SHA:·861ba35de7777f4bbf6402ba92335aa11afd971209fe1d3148617e63099d8ab5·...·]-34">]</span><span·class="p">;</span><span·class="w">236 ····</span><span·class="p"·data-group-id="2827803557-34">[</span><span·class="s">&quot;&lt;p&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="2827803557-35">(</span><span·class="w">·</span><span·class="k">fun</span><span[·...·truncated·by·diffoscope;·len:·360,·SHA:·fc854607e1a54432e0b9ff794e4cdf6c139a643a87133dbc2a77b83a365d43d8·...·]-34">]</span><span·class="p">;</span><span·class="w">
  
237 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-36">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="6848224798-37">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·ef1a5a50c958e268a2163f425d3afcf9438a976d2fa5a249d9367baffadc173f·...·]-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">237 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-36">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2827803557-37">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·076fe210ed1d0e8dfeda3c7e29616b2b35f43ea4b109d2b2c61e27afe25d9d51·...·]-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="6848224798-38">[</span><span·class="s">&quot;&lt;p·class=\&quot;note\&quot;&gt;&quot;</span><span·class="w">238 ····</span><span·class="p"·data-group-id="2827803557-38">[</span><span·class="s">&quot;&lt;p·class=\&quot;note\&quot;&gt;&quot;</span><span·class="w">
239 ·····</span><span·class="s">&quot;&lt;b&gt;NOTE:·&lt;/b&gt;&quot;</span><span·class="p">,</span><span·class="w">239 ·····</span><span·class="s">&quot;&lt;b&gt;NOTE:·&lt;/b&gt;&quot;</span><span·class="p">,</span><span·class="w">
240 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6848224798-39">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·668ae3b1348672a5692f78d95b7a7e07aee3727e87cfba3997d27821223fa00b·...·]-39">)</span><span·class="p">,</span><span·class="w">240 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="2827803557-39">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·c4a1e42eef2c56427a23caa993cba57c4bb3d023de1756f7ceef6c23a2e1fbdc·...·]-39">)</span><span·class="p">,</span><span·class="w">
241 ·····</span><span·class="s">&quot;&lt;/p&gt;&quot;</span><span·class="p"·data-group-id="6848224798-38">]</span><span·class="p">;</span><span·class="w">241 ·····</span><span·class="s">&quot;&lt;/p&gt;&quot;</span><span·class="p"·data-group-id="2827803557-38">]</span><span·class="p">;</span><span·class="w">
  
242 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-40">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="6848224798-41">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·1eddd9fb6d5f3049a90d91025e8572c640357fb9cda7b9984b2e14c7706ef2cc·...·]-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">242 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-40">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="2827803557-41">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·f35edca2dc14c2df6e0ce232c5ab16fc379eff2f2fe39cd8ec8e6dc40830da1f·...·]-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
243 ····</span><span·class="p"·data-group-id="6848224798-42">[</span><span·class="s">&quot;&lt;em&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6848224798-43">(</span><span·class="w">·</span><span·class="k">fun</span><spa[·...·truncated·by·diffoscope;·len:·362,·SHA:·a325113b43a7865606eec5b8203f4d0247d814519b1193dc80fbfff6d392f479·...·]-42">]</span><span·class="p">;</span><span·class="w">243 ····</span><span·class="p"·data-group-id="2827803557-42">[</span><span·class="s">&quot;&lt;em&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="2827803557-43">(</span><span·class="w">·</span><span·class="k">fun</span><spa[·...·truncated·by·diffoscope;·len:·362,·SHA:·c87256ee84aab6290f93ab8ec7939871a00afff82542eff1b72bb6ef56d8fc8d·...·]-42">]</span><span·class="p">;</span><span·class="w">
  
244 </span><span·class="nf">template</span><span·class="p"·data-group-id="6848224798-44">(</span><span·class="n">E</span><span·class="p"·data-group-id="6848224798-44">)</span><span·class="p">-&gt;</span><span·class="w">244 </span><span·class="nf">template</span><span·class="p"·data-group-id="2827803557-44">(</span><span·class="n">E</span><span·class="p"·data-group-id="2827803557-44">)</span><span·class="p">-&gt;</span><span·class="w">
245 ····</span><span·class="nf">built_in_rules</span><span·class="p"·data-group-id="6848224798-45">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·668ae3b1348672a5692f78d95b7a7e07aee3727e87cfba3997d27821223fa00b·...·]-45">)</span><span·class="p">.</span></code></pre><p>It·is·important·to·end·with·a·call·to·<a·href="xmerl_xs.html#built_in_rules/2"><code·class="inline">xmerl_xs:built_in_rules/2</code></a>·if·you·want·any245 ····</span><span·class="nf">built_in_rules</span><span·class="p"·data-group-id="2827803557-45">(</span><span·class="w">·</span><span·class="k">fun</span><span·class="w">·</span><span·class="ss">template</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">E</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·c4a1e42eef2c56427a23caa993cba57c4bb3d023de1756f7ceef6c23a2e1fbdc·...·]-45">)</span><span·class="p">.</span></code></pre><p>It·is·important·to·end·with·a·call·to·<a·href="xmerl_xs.html#built_in_rules/2"><code·class="inline">xmerl_xs:built_in_rules/2</code></a>·if·you·want·any
246 text·to·be·written·in·&quot;push&quot;·transforms.·That·are·the·ones·using·a·lot·<code·class="inline">xslapply(·fun·template/1,·E·)</code>·instead·of·<code·class="inline">value_of(select(&quot;xpath&quot;,E))</code>,·which·is·pull...</p><hr·class="thin"/><p>The·largest·example·is·the·stylesheet·to·transform·this·document·from·the246 text·to·be·written·in·&quot;push&quot;·transforms.·That·are·the·ones·using·a·lot·<code·class="inline">xslapply(·fun·template/1,·E·)</code>·instead·of·<code·class="inline">value_of(select(&quot;xpath&quot;,E))</code>,·which·is·pull...</p><hr·class="thin"/><p>The·largest·example·is·the·stylesheet·to·transform·this·document·from·the
247 Simplified·Docbook·XML·format·to·xhtml.·The·source·file·is·sdocbook2xhtml.erl.</p><h3·id="tips-and-tricks"·class="section-heading">247 Simplified·Docbook·XML·format·to·xhtml.·The·source·file·is·sdocbook2xhtml.erl.</p><h3·id="tips-and-tricks"·class="section-heading">
248 ··<a·href="#tips-and-tricks"·class="hover-link">248 ··<a·href="#tips-and-tricks"·class="hover-link">
249 ····<i·class="ri-link-m"·aria-hidden="true"></i>249 ····<i·class="ri-link-m"·aria-hidden="true"></i>
250 ··</a>250 ··</a>
251 ··<span·class="text">Tips·and·tricks</span>251 ··<span·class="text">Tips·and·tricks</span>
252 </h3>252 </h3>
Offset 270, 29 lines modifiedOffset 270, 29 lines modified
270 position·in·Erlang.</p><hr·class="thin"/><h4>Example·5·Counting·positions</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;stanza&quot;</span><span·class="o">&gt;</span><span·class="w">270 position·in·Erlang.</p><hr·class="thin"/><h4>Example·5·Counting·positions</h4><pre><code·class="makeup·erlang"·translate="no"><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;stanza&quot;</span><span·class="o">&gt;</span><span·class="w">
271 ··</span><span·class="o">&lt;</span><span·class="ss">p</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="nb">apply</span><span·class="o">-</span><span·class="ss">templates</span><span·class="w">·</span><span·class="ss">select</span><span·class="o">=</span><span·class="s">&quot;line&quot;</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">p</span><span·class="o">&gt;</span><span·class="w">271 ··</span><span·class="o">&lt;</span><span·class="ss">p</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="nb">apply</span><span·class="o">-</span><span·class="ss">templates</span><span·class="w">·</span><span·class="ss">select</span><span·class="o">=</span><span·class="s">&quot;line&quot;</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="ss">p</span><span·class="o">&gt;</span><span·class="w">
272 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span><span·class="w">272 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span><span·class="w">
  
273 </span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;line&quot;</span><span·class="o">&gt;</span><span·class="w">273 </span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="w">·</span><span·class="ss">match</span><span·class="o">=</span><span·class="s">&quot;line&quot;</span><span·class="o">&gt;</span><span·class="w">
274 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="k">if</span><span·class="w">·</span><span·class="ss">test</span><span·class="o">=</span><span·class="s">&quot;position()·mod·2·=·0&quot;</span><span·class="o">&gt;</span><span·class="err">&amp;</span><span·class="p">#</span><span·class="mi">160</span><span·class="p">;</span><span·class="err">&amp;</span><span·class="p">#</span><span·class="mi">160</span><span·class="p">;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="k">if</span><span·class="o">&gt;</span><span·class="w">274 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="k">if</span><span·class="w">·</span><span·class="ss">test</span><span·class="o">=</span><span·class="s">&quot;position()·mod·2·=·0&quot;</span><span·class="o">&gt;</span><span·class="err">&amp;</span><span·class="p">#</span><span·class="mi">160</span><span·class="p">;</span><span·class="err">&amp;</span><span·class="p">#</span><span·class="mi">160</span><span·class="p">;</span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="k">if</span><span·class="o">&gt;</span><span·class="w">
275 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">value</span><span·class="o">-</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">select</span><span·class="o">=</span><span·class="s">&quot;.&quot;</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="ss">br</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">275 ··</span><span·class="o">&lt;</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">value</span><span·class="o">-</span><span·class="k">of</span><span·class="w">·</span><span·class="ss">select</span><span·class="o">=</span><span·class="s">&quot;.&quot;</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="o">&lt;</span><span·class="ss">br</span><span·class="w">·</span><span·class="o">/</span><span·class="o">&gt;</span><span·class="w">
276 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span></code></pre><p>Can·be·written·as</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="3589440862-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="3589440862-2">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·158,·SHA:·02bb9c480de72df0f24a4d631bf3c83085fed9e73cb2216159a7f8f1b7922b83·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">276 </span><span·class="o">&lt;</span><span·class="o">/</span><span·class="nc">xsl</span><span·class="p">:</span><span·class="ss">template</span><span·class="o">&gt;</span></code></pre><p>Can·be·written·as</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="3940386593-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="3940386593-2">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·158,·SHA:·b13440e768021a134d688b4ef329ba6c96b6a6cce12cc5704da7802c6442dde8·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
277 ····</span><span·class="p"·data-group-id="3589440862-3">{</span><span·class="n">Lines</span><span·class="p">,</span><span·class="n">LineNo</span><span·class="p"·data-group-id="3589440862-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span>[·...·truncated·by·diffoscope;·len:·653,·SHA:·4d9060abeb4fe576c379a7a4f4ab97b38532d9a63c1ae6a7a70d3aaa5b6467c2·...·]-4">)</span><span·class="p">,</span><span·class="w">277 ····</span><span·class="p"·data-group-id="3940386593-3">{</span><span·class="n">Lines</span><span·class="p">,</span><span·class="n">LineNo</span><span·class="p"·data-group-id="3940386593-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">lists</span>[·...·truncated·by·diffoscope;·len:·653,·SHA:·18c7063a87bd8768a31d964842afde51c1716ae1eaeabb6e9828303e8d11d270·...·]-4">)</span><span·class="p">,</span><span·class="w">
278 ····</span><span·class="p"·data-group-id="3589440862-6">[</span><span·class="s">&quot;&lt;p&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Lines</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&lt;/p&gt;&quot;</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·f66baf4fb218ca475162437ded79ed9e0966f156508cfa6a7aea5a68f21f3877·...·]-6">]</span><span·class="p">.</span><span·class="w">278 ····</span><span·class="p"·data-group-id="3940386593-6">[</span><span·class="s">&quot;&lt;p&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Lines</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&lt;/p&gt;&quot;</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·996a7fce92e16473dca54f9a6036c3fa0d7a49e85bf09e6d8c30866a4379b5b9·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
279 </span><span·class="nf">template_pos</span><span·class="p"·data-group-id="3589440862-7">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="3589440862-8">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·228,·SHA:·53b0d7dce2b88ec35efb881dbe34d49862a64b867e6b1bf56da931aa4d0c1306·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">279 </span><span·class="nf">template_pos</span><span·class="p"·data-group-id="3940386593-7">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="3940386593-8">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·228,·SHA:·efb59d267b47c38a3526b412ea4d39ac792ff35ad2f70c8140a09cb8aa1501de·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
280 ····</span><span·class="p"·data-group-id="3589440862-9">{</span><span·class="p"·data-group-id="3589440862-10">[</span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3589440862-11">(</span><span·class="n">P</span><span·class="w">·</span><span·class="ow">rem</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·794,·SHA:·c6d93dbbbc774126710d95349454a4985a49b497d2f32e2e7d2f3c24c513bf2b·...·]-9">}</span><span·class="p">.</span><span·class="w">280 ····</span><span·class="p"·data-group-id="3940386593-9">{</span><span·class="p"·data-group-id="3940386593-10">[</span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3940386593-11">(</span><span·class="n">P</span><span·class="w">·</span><span·class="ow">rem</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·794,·SHA:·595c24134f4370b8fa819febc83d5cb22f541422f58d6300a14d9e500e73b03e·...·]-9">}</span><span·class="p">.</span><span·class="w">
  
281 </span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3589440862-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="3589440862-13">)</span><span·class="p">-&gt;</span><span·class="s">&quot;&amp;#160;&amp;#160;&quot;</span><span·class="p">;</span><span·class="w">281 </span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3940386593-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="3940386593-13">)</span><span·class="p">-&gt;</span><span·class="s">&quot;&amp;#160;&amp;#160;&quot;</span><span·class="p">;</span><span·class="w">
282 </span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3589440862-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="3589440862-14">)</span><span·class="p">-&gt;</span><span·class="s">&quot;&quot;</span><span·class="p">.</span></code></pre><hr·class="thin"/><h4>Global·tree·awareness</h4><p>In·XSLT·you·have·&quot;root&quot;·access·to·the·top·of·the·tree·with·XPath,·even·though282 </span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3940386593-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="3940386593-14">)</span><span·class="p">-&gt;</span><span·class="s">&quot;&quot;</span><span·class="p">.</span></code></pre><hr·class="thin"/><h4>Global·tree·awareness</h4><p>In·XSLT·you·have·&quot;root&quot;·access·to·the·top·of·the·tree·with·XPath,·even·though
283 you·are·somewhere·deep·in·your·tree.</p><p>The·xslapply/2·function·only·carries·back·the·child·part·of·the·tree·to·the283 you·are·somewhere·deep·in·your·tree.</p><p>The·xslapply/2·function·only·carries·back·the·child·part·of·the·tree·to·the
284 template·fun.·But·it·is·quite·easy·to·write·template·funs·that·handles·both·the284 template·fun.·But·it·is·quite·easy·to·write·template·funs·that·handles·both·the
285 child·and·top·tree.</p><hr·class="thin"/><h4>Example·6·Passing·the·root·tree</h4><p>The·following·example·piece·will·prepend·the·article·title·to·any·section·title</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="1132113080-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="1132113080-2">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·256,·SHA:·e8cce4c81887297ba513a3ed24661c8f9019c907af3c874b6f9b6a956eb693c0·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">285 child·and·top·tree.</p><hr·class="thin"/><h4>Example·6·Passing·the·root·tree</h4><p>The·following·example·piece·will·prepend·the·article·title·to·any·section·title</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">template</span><span·class="p"·data-group-id="1784311599-1">(</span><span·class="n">E</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">xmlElement</span><span·class="p"·data-group-id="1784311599-2">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·256,·SHA:·af76ee81514b3601ac18417e799701a5fc3581da4ff412edae1acace8a57de6f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
286 ····</span><span·class="p"·data-group-id="1132113080-3">[</span><span·class="s">&quot;&lt;h3&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="1132113080-4">(</span><span·class="nf">select</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·235,·SHA:·163259393a83deae50d7d5a9162bb40caa132c28ee1479714b519f623b17f520·...·]-4">)</span><span·class="p">,</span><span·class="s">&quot;·-·&quot;</span><span·class="p">,</span><span·class="w">286 ····</span><span·class="p"·data-group-id="1784311599-3">[</span><span·class="s">&quot;&lt;h3&gt;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">value_of</span><span·class="p"·data-group-id="1784311599-4">(</span><span·class="nf">select</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·235,·SHA:·f087e58366b8178f4d274c84633672b75654d8dedb3521dcb64917a502cf70dc·...·]-4">)</span><span·class="p">,</span><span·class="s">&quot;·-·&quot;</span><span·class="p">,</span><span·class="w">
287 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="1132113080-6">(</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1132113080-7">(</span><span·class="n">A</span><span·class="p"·data-group-id="1132113080-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·422,·SHA:·2a5e4024bae4843c4fd9ad07ff8d095958a67135c5a5a334d336cc5cbccd2ce7·...·]-6">)</span><span·class="p">,</span><span·class="w">287 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="1784311599-6">(</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="1784311599-7">(</span><span·class="n">A</span><span·class="p"·data-group-id="1784311599-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·422,·SHA:·c55913594ff01f8b66eb07834607d422682086ce88bf1df4ff651c7379208ff7·...·]-6">)</span><span·class="p">,</span><span·class="w">
288 ·····</span><span·class="s">&quot;&lt;/h3&gt;&quot;</span><span·class="p"·data-group-id="1132113080-3">]</span><span·class="p">;</span></code></pre><hr·class="thin"/>288 ·····</span><span·class="s">&quot;&lt;/h3&gt;&quot;</span><span·class="p"·data-group-id="1784311599-3">]</span><span·class="p">;</span></code></pre><hr·class="thin"/>
289 </div>289 </div>
  
290 <div·class="bottom-actions"·id="bottom-actions">290 <div·class="bottom-actions"·id="bottom-actions">
291 ··<div·class="bottom-actions-item">291 ··<div·class="bottom-actions-item">
  
292 ······<a·href="xmerl_examples.html"·class="bottom-actions-button"·rel="prev">292 ······<a·href="xmerl_examples.html"·class="bottom-actions-button"·rel="prev">
293 ········<span·class="subheader">293 ········<span·class="subheader">
4.87 KB
./usr/share/doc/erlang-doc/html/lib/xmerl-2.1/doc/html/xmerl_xsd.html
    
Offset 772, 17 lines modifiedOffset 772, 17 lines modified
772 parsed·XML·<a·href="xmerl.html#t:xmlElement/0"><code·class="inline">Element :: #xmlElement{}</code></a>772 parsed·XML·<a·href="xmerl.html#t:xmlElement/0"><code·class="inline">Element :: #xmlElement{}</code></a>
773 and·a·State,·<a·href="#t:global_state/0"><code·class="inline">global_state/0</code></a>,·which·holds·necessary·information773 and·a·State,·<a·href="#t:global_state/0"><code·class="inline">global_state/0</code></a>,·which·holds·necessary·information
774 from·an·already·processed·schema.··Thus·validate·enables·reuse774 from·an·already·processed·schema.··Thus·validate·enables·reuse
775 of·the·schema·information·and·therefore·if·one·shall·validate775 of·the·schema·information·and·therefore·if·one·shall·validate
776 several·times·towards·the·same·schema·it·reduces·time·consumption.</p><p>The·result,·<code·class="inline">ValidElement</code>,·is·the·valid·element·that·conforms·to·the776 several·times·towards·the·same·schema·it·reduces·time·consumption.</p><p>The·result,·<code·class="inline">ValidElement</code>,·is·the·valid·element·that·conforms·to·the
777 post-schema-validation·infoset.·When·the·validator·finds·an·error·it·tries·to777 post-schema-validation·infoset.·When·the·validator·finds·an·error·it·tries·to
778 continue·and·reports·a·list·of·all·errors·found.·In·those·cases·an·unexpected778 continue·and·reports·a·list·of·all·errors·found.·In·those·cases·an·unexpected
779 error·is·found·it·may·cause·a·single·error·reason.</p><p>Usage·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6289196912-1">{</span><span·class="n">E</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="6289196912-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><sp[·...·truncated·by·diffoscope;·len:·196,·SHA:·3d6de06020566f0104baf68ce473b7d3782110e8576d50686c986e6c5d0a77d2·...·]2-2">)</span><span·class="p">.</span><span·class="w">779 error·is·found·it·may·cause·a·single·error·reason.</p><p>Usage·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">1</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4807734682-1">{</span><span·class="n">E</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="4807734682-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_scan</span><sp[·...·truncated·by·diffoscope;·len:·196,·SHA:·9330f0fcd477afccd797672d3b9d9f60d2fe8fcfae4e194d126eeb40937c9014·...·]2-2">)</span><span·class="p">.</span><span·class="w">
780 </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6289196912-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="6289196912-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_xsd</span><s[·...·truncated·by·diffoscope;·len:·205,·SHA:·927ac81daeca9b5b35a26e6601039df9b9494595034365baae89c4618ce2bb50·...·]2-4">)</span><span·class="p">.</span><span·class="w">780 </span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4807734682-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="4807734682-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_xsd</span><s[·...·truncated·by·diffoscope;·len:·205,·SHA:·5c40424cb5cc165280582ba38fd19da8750ce62ef004bb723396ea5029810167·...·]2-4">)</span><span·class="p">.</span><span·class="w">
781 </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="p"·data-group-id="6289196912-5">{</span><span·class="n">E2</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="6289196912-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_xsd</span><sp[·...·truncated·by·diffoscope;·len:·218,·SHA:·e8ce3050d1b103e2f5dd333a4da169799f2272cbe8a1ef2fdf3cee9cf06e83cf·...·]2-6">)</span><span·class="p">.</span></code></pre><p>Observe·that·E2·may·differ·from·E·if·for·instance·there·are·default·values781 </span><span·class="mi">3</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4807734682-5">{</span><span·class="n">E2</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="4807734682-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">xmerl_xsd</span><sp[·...·truncated·by·diffoscope;·len:·218,·SHA:·76dcba0596b17c76c7e5f12a400c26ce8f890c6810ec59505f2389e3cdb32a7e·...·]2-6">)</span><span·class="p">.</span></code></pre><p>Observe·that·E2·may·differ·from·E·if·for·instance·there·are·default·values
782 defined·in·<code·class="inline">my_XML_Schema.xsd</code>.</p>782 defined·in·<code·class="inline">my_XML_Schema.xsd</code>.</p>
783 ··</section>783 ··</section>
784 </section>784 </section>
  
785 ····</div>785 ····</div>
786 ··</section>786 ··</section>
  
19.1 KB
./usr/share/doc/erlang-doc/html/doc/dist/search_data-1CD15961.js vs.
./usr/share/doc/erlang-doc/html/doc/dist/search_data-858E7357.js
Files 92% similar despite different names
19.0 KB
js-beautify {}
Max HTML report size reached
657 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/dist/search_data-2059C099.js vs.
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.6/doc/html/dist/search_data-F658300A.js
Files 98% similar despite different names
657 KB
js-beautify {}
Max HTML report size reached
571 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/dist/search_data-6001A501.js vs.
./usr/share/doc/erlang-doc/html/lib/compiler-8.5.5/doc/html/dist/search_data-4B26B7BB.js
Files 98% similar despite different names
571 KB
js-beautify {}
Max HTML report size reached
262 KB
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/dist/search_data-A37F9CDE.js vs.
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.2/doc/html/dist/search_data-F9C7D1C8.js
Files 99% similar despite different names
262 KB
js-beautify {}
Max HTML report size reached
141 KB
./usr/share/doc/erlang-doc/html/lib/eunit-2.9.1/doc/html/dist/search_data-8A6DA255.js vs.
./usr/share/doc/erlang-doc/html/lib/eunit-2.9.1/doc/html/dist/search_data-9EC16955.js
Files 99% similar despite different names
141 KB
js-beautify {}
Max HTML report size reached
120 KB
erlang-jinterface_27.2.2+dfsg-1_all.deb
367 B
file list
    
Offset 1, 3 lines modifiedOffset 1, 3 lines modified
1 -rw-r--r--···0········0········0········4·2025-02-10·08:38:21.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-02-10·08:38:21.000000·debian-binary
2 -rw-r--r--···0········0········0······836·2025-02-10·08:38:21.000000·control.tar.xz2 -rw-r--r--···0········0········0······836·2025-02-10·08:38:21.000000·control.tar.xz
3 -rw-r--r--···0········0········0···112448·2025-02-10·08:38:21.000000·data.tar.xz3 -rw-r--r--···0········0········0···112512·2025-02-10·08:38:21.000000·data.tar.xz
98.0 B
control.tar.xz
70.0 B
control.tar
48.0 B
./md5sums
30.0 B
./md5sums
Files differ
120 KB
data.tar.xz
120 KB
data.tar
120 KB
./usr/lib/erlang/lib/jinterface-1.14.1/priv/OtpErlang.jar
13.4 KB
zipinfo {}
Max HTML report size reached
106 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached